Explorar el Código

Merge branch '技术认证' into dev

ccf hace 4 años
padre
commit
593193dc6c

+ 0 - 1
components/Echart/line.vue

@@ -86,7 +86,6 @@ export default {
             }
 
             this.myChart.resize({
-                width: this.width,
                 height: this.height
             });
 

+ 439 - 0
components/drawer/freework_level.vue

@@ -0,0 +1,439 @@
+<template>
+    <el-drawer
+      title="技术认证审核"
+      size="80%"
+      v-loading="loading"
+      :visible.sync="drawer"
+      @close="close"
+      :direction="direction">
+      <div :style="`height: 100vh;opacity: `+opacity+`;margin-left:20px;margin-right:20px`">
+        <el-row style="border-bottom: 1px solid red">
+          <el-col :span="12">
+            <div class="title">申请信息</div>
+            <div>
+              <span class="sub-title">认证费用:</span>
+              <span class="i-content">
+            <span>{{form.pay_money}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">付款日期:</span>
+              <span class="i-content">
+            <span>{{form.addtime}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">认证领域:</span>
+              <span class="i-content">
+            <span>{{form.occupation_name}}  / {{form.direction_name}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">认证等级:</span>
+              <span class="i-content">
+            <span>{{form.item_id}}
+            <el-select  size="small" style="width:120px" v-model="form.confirm_item_id" placeholder="请选择用户最终的面试等级">
+                <el-option
+                  v-for="item in freeworklevel"
+                  :key="item.item_id"
+                  :label="item.name"
+                  :value="item.item_id">
+                </el-option>
+              </el-select>
+              <el-button  v-if="form.order_status==2 || form.order_status==3 || form.order_status==4 || form.order_status==5" @click="confirm_item_id"  size="small" type="success">确定</el-button>
+            </span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试时间:</span>
+              <span class="i-content">
+            <span><a :href="form.apply_info.url" target="_blank">{{form.memo}}</a></span>
+          </span>
+            </div>
+
+            <div>
+              <span class="sub-title">认证文件:</span>
+              <span class="i-content">
+            <span><a :href="form.apply_info.url" target="_blank">{{form.memo}}</a></span>
+          </span>
+            </div>
+
+            <div>
+              <span class="sub-title">审核日期:</span>
+              <span class="i-content">
+            <span><a :href="form.apply_info.url" target="_blank">{{form.checktime}}</a></span>
+          </span>
+            </div>
+
+            <div>
+              <span class="sub-title">审核人:</span>
+              <span class="i-content">
+            <span><a :href="form.apply_info.url" target="_blank">{{form.check_name}}</a></span>
+          </span>
+            </div>
+
+          </el-col>
+
+          <el-col :span="12">
+            <div class="title">用户基本信息</div>
+            <el-image style="width: 60px;height: 60px;border-radius: 50%;margin-left: 32px;" :src="form.apply_info.icon_url"></el-image>
+            <div>
+              <span class="sub-title">申请人昵称:</span>
+              <span class="i-content">
+            <span>{{form.apply_info.nickname}}({{form.uid}})</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">申请人真名:</span>
+              <span class="i-content">
+            <span>{{form.apply_info.realname}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">申请人手机:</span>
+              <span class="i-content">
+            <span>{{form.apply_info.login_mobile}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">申请人微信:</span>
+              <span class="i-content">
+            <span>{{form.apply_info.weixin}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">申请人主页:</span>
+              <span class="i-content">
+            <span><a :href="form.apply_info.url" target="_blank">{{form.apply_info.url}}</a></span>
+          </span>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row v-if="form.order_status==2 || form.order_status==3 || form.order_status==4 || form.order_status==5" style="border-bottom: 1px solid red;padding: 20px">
+          <el-col :span="24">
+            <el-input size="small" style="width: 220px"  v-model="form.interview_uid" placeholder="UID"></el-input>
+            <el-button size="small" @click="appoint"  type="success">对接面试官</el-button>
+            <el-button size="small" @click="refuse"  type="danger">拒绝申请</el-button>
+            <el-button size="small" @click="end" type="success">完成审核</el-button>
+          </el-col>
+        </el-row>
+
+        <el-row v-for="item in form.interview_list" style="border-bottom: 1px solid red;">
+          <el-col :span="8">
+            <div style="margin-top: 20px">
+              <span class="sub-title">面试官工资:</span>
+              <span class="i-content">
+            <span>
+              <el-input  size="small" v-model="item.pay_money" style="width:100px"  placeholder="面试官工资"></el-input>
+              <el-button size="small"  @click="set_item(item)" v-if="form.order_status==2 || form.order_status==3 || form.order_status==4 || form.order_status==5" type="success">设置工资</el-button>
+              <el-button size="small"  @click="pay(item)" v-if="form.order_status==7 && form.interview_status==1" type="success">结算工资</el-button>
+               <el-button size="small" @click="del_invite(item)" v-if="form.order_status==2 || form.order_status==3 || form.order_status==4 || form.order_status==5" type="success">删除</el-button>
+            </span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试官昵称:</span>
+              <span class="i-content">
+            <span>{{item.userInfo.nickname}}({{item.userInfo.uid}})</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试官真名:</span>
+              <span class="i-content">
+            <span>{{form.apply_info.realname}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试官电话:</span>
+              <span class="i-content">
+            <span>{{item.userInfo.login_mobile}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试官主页:</span>
+              <span class="i-content">
+            <span><a :href="item.userInfo.url" target="_blank">{{item.userInfo.url}}</a></span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试时间:</span>
+              <span class="i-content">
+                  <el-date-picker
+                    v-model="item.interview_time"
+                    size="small"
+                    style="width:190px"
+                    align="right"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                  type="datetime"
+                  placeholder="选择日期"
+                  :picker-options="pickerOptions">
+                  </el-date-picker>
+                <el-button size="small"  @click="set_item(item)" v-if="form.order_status==2 || form.order_status==3 || form.order_status==4 || form.order_status==5" type="success">设置</el-button>
+                <el-button size="small"  @click="end_invite(item)" v-if="item.interview_status!=2" type="success">完成面试</el-button>
+              </span>
+            </div>
+            <div>
+              <span class="sub-title">面试录屏:</span>
+              <span class="i-content">
+              <span>
+                 <upload_file style="padding: 20px"  @click="save_file" :id="item.id"  :fileList="item.fileList"></upload_file>
+                 <a v-if="item.inter_video" target="_blank" :href="item.inter_video">浏览上传文件</a>
+              </span>
+          </span>
+            </div>
+          </el-col>
+          <el-col :span="8" style="padding-right: 20px">
+            <div class="title">面试官评价<span><a :href="item.invite_comment_url" target="_blank">(点击查看评价链接)</a></span></div>
+            <div>
+              <span class="sub-title">技术栈评分:</span>
+              <span class="i-content">
+              <span>{{item.dev_study?item.dev_study:"暂无"}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">项目能力评分:</span>
+              <span class="i-content">
+              <span>{{item.dev_skill_base?item.dev_skill_base:"暂无"}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">非技术能力评分:</span>
+              <span class="i-content">
+                <span>{{item.dev_experience?item.dev_experience:"暂无"}}</span>
+             </span>
+            </div>
+            <div>
+              <span class="sub-title">面试评价:</span>
+              <span class="i-content"><span>{{item.inter_memo?item.inter_memo:"暂无"}}</span></span>
+            </div>
+          </el-col>
+          <el-col :span="8">
+            <div class="title">开发者评价<span><a :href="item.dev_comment_url" target="_blank">(点击查看评价链接)</a></span></div>
+            <div>
+              <span class="sub-title">面试水平:</span>
+              <span class="i-content"><span>{{item.invite_experience?item.invite_experience:"暂无"}}</span></span>
+            </div>
+            <div>
+              <span class="sub-title">技术专业度:</span>
+              <span class="i-content">
+            <span>{{item.invite_skill?item.invite_skill:"暂无"}}</span>
+          </span>
+            </div>
+            <div>
+              <span class="sub-title">面试评价:</span>
+              <span class="i-content">
+             <span>{{item.dev_memo?item.dev_memo:"暂无"}}</span>
+          </span>
+            </div>
+          </el-col>
+        </el-row>
+
+
+        <el-row style="border-bottom: 1px solid red;padding-bottom: 20px">
+          <el-col :span="8">
+            <div v-for="(item,index) in form.skill" style="margin-top: 20px">
+              <span class="sub-title">{{item.skill_name}}:</span>
+              <span class="i-content">
+               <span>
+                 {{item.skill_level}}分
+              </span>
+          </span>
+            </div>
+
+          </el-col>
+        </el-row>
+      </div>
+    </el-drawer>
+</template>
+
+
+<script>
+  import upload_file from "@/components/public/upload_file"
+  export default {
+    components: {
+      upload_file
+    },
+    data() {
+      return {
+        loading:false,
+        opacity:"0",
+        id:0,
+        drawer: false,
+        direction: 'rtl',
+        freeworklevel:[],
+        form:{
+          apply_info:{},
+          interview_info:{},
+          skill:[],
+        }
+      }
+    },
+    props: {
+      'id': {
+        type: Number,
+      },
+      'drawer': {
+        type: Boolean,
+      }
+    },
+    computed: {
+
+    },
+    watch: {
+      'drawer': {
+        handler: function () {
+          this.$nextTick(() => {
+            if(this.drawer)
+            {
+              this.get_freeworklevel();
+              this.getDetail()
+            }
+          })
+        }
+      }
+    },
+    methods: {
+      close() {
+        this.$parent.getList();
+        this.$parent.setDrawer(false);
+      },
+      async get_freeworklevel(){
+        let res = await this.$post("/uapi/pub/freeworklevel");
+        if (res && res.status === 1) {
+          this.freeworklevel=res.data.list;
+        }
+      },
+      async del_invite(item){
+        var invite_id=item.id;
+        let res = await this.$post("/uapi/cert/del_invite",{invite_id:invite_id,id:this.form.id});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '删除成功!'
+          });
+          this.getDetail(this.form.id);
+        }
+      },
+      async end_invite(item){
+        var invite_id=item.id;
+        let res = await this.$post("/uapi/cert/end_invite",{invite_id:invite_id,id:this.form.id});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          });
+          this.getDetail(this.form.id);
+        }
+      },
+      async appoint(){
+        let res = await this.$post("/uapi/cert/agree",{id:this.form.id,interview_uid:this.form.interview_uid});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '面试官对接成功!'
+          });
+          this.getDetail(this.form.id);
+        }
+      },
+      async confirm_item_id(){
+        let res = await this.$post("/uapi/cert/confirm_item_id",{id:this.form.id,confirm_item_id:this.form.confirm_item_id});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '定级成功!'
+          });
+        }
+      },
+      async end(){
+        let res = await this.$post("/uapi/cert/end",{id:this.form.id});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '已完成审核'
+          });
+          this.getDetail(this.form.id);
+        }
+      },
+      async refuse(){
+        let res = await this.$post("/uapi/cert/refuse",{id:this.form.id});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '拒绝成功,购买资金已经退回到申请人余额账户!'
+          });
+          this.getDetail(this.form.id);
+        }
+      },
+      async pay(item){
+        var invite_id=item.id;
+        let res = await this.$post("/uapi/cert/pay",{invite_id:invite_id,id:this.form.id});
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '结算成功!'
+          });
+          this.getDetail(this.form.id);
+        }
+      },
+      async save_file(interview_id,file){//保存文件
+        let item={};
+        item.inter_video=file;
+        item.id=interview_id;
+        this.set_item(item);
+        this.getDetail(this.form.id)
+      },
+      async set_item(item){
+        let value=JSON.stringify(item);
+        let data={item:value,order_id:this.form.id,interview_id:item.id}
+        let res = await this.$post("/uapi/cert/cert.freework.level.interview.update",data);
+        if (res && res.status === 1) this.$message({type: 'success', message: '设置成功!'});
+      },
+      async getDetail(){
+        this.opacity="0";
+        this.loading=true;
+        let id=this.id;
+        if(!id) return false;
+        let res = await this.$post("/uapi/cert/info_admin",{id:id});
+        this.opacity="1";
+        if (res && res.status === 1) {
+          this.form=res.data;
+        }
+        this.loading=false;
+      },
+    }
+  };
+</script>
+
+<style scoped>
+.container{
+  height: 100%;
+}
+
+.title {
+  font-size: 18px;
+  font-weight: 700;
+  line-height: 64px;
+}
+
+.sub-title {
+  font-size: 14px;
+  font-weight: 700;
+  line-height: 35px;
+  padding-left: 32px;
+}
+.i-content{
+  line-height: 25px;
+}
+
+.content {
+  padding-left: 32px;
+  font-size: 12px;
+}
+.i-head-content div{
+  height: 22px;
+}
+.i-content{
+  font-size: 12px;
+}
+</style>
+

+ 3 - 0
pages/main/index.vue

@@ -33,6 +33,9 @@ td.clickable .cell {
   cursor: pointer;
   color: #409eff;
 }
+.el-drawer.ltr, .el-drawer.rtl, .el-drawer__container{
+  height:fit-content !important;
+}
 </style>
 <style scoped>
 #main {

+ 2 - 2
pages/main/index/data.vue

@@ -126,7 +126,7 @@ export default {
                 }
             })
             tableData.unshift(sumRow)
-            
+
             return {
                 tableHeader,
                 tableData
@@ -230,7 +230,7 @@ export default {
             // 去除汇总项
             let t_data = [...this.table.tableData]
             t_data.shift()
-            
+
             colArr = [[...header],...t_data]
 
             let wscols = colArr.map((item) => {

+ 341 - 30
pages/main/index/freework_level.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="mainContainer">
+  <div class="container">
     <div>
       <el-row>
         <el-form :inline="true" class="filter-form" :label-position="labelPosition">
@@ -10,78 +10,229 @@
                 <el-radio-button :label="1">待支付({{form.order_status_val.order_status_1}})</el-radio-button>
                 <el-radio-button :label="2">待完善({{form.order_status_val.order_status_2}})</el-radio-button>
                 <el-radio-button :label="3">审核中({{form.order_status_val.order_status_3}})</el-radio-button>
-                <el-radio-button :label="4">对接中({{form.order_status_val.order_status_4}})</el-radio-button>
+                <el-radio-button :label="4">联系成功({{form.order_status_val.order_status_4}})</el-radio-button>
                 <el-radio-button :label="5">面试中({{form.order_status_val.order_status_5}})</el-radio-button>
                 <el-radio-button :label="6">已拒绝({{form.order_status_val.order_status_6}})</el-radio-button>
-                <el-radio-button :label="8">待款({{form.order_status_val.order_status_8}})</el-radio-button>
+                <el-radio-button :label="8">待款({{form.order_status_val.order_status_8}})</el-radio-button>
                 <el-radio-button :label="7">已完成({{form.order_status_val.order_status_7}})</el-radio-button>
               </el-radio-group>
             </el-form-item>
           </el-row>
 
           <el-row>
-            <el-form-item label="领域" style="margin-bottom: 5px">
+            <el-form-item  label="领域" prop="uid">
+              <el-select
+                size="small"
+                v-model="form.item_type"
+                placeholder="领域类型"
+                @change="getList"
+                clearable
+                :style="{ width: '100px' }"
+              >
+                <el-option
+                  v-for="(item, index) in item_type"
+                  :key="index"
+                  :label="item.label"
+                  :value="item.value"
+                  :disabled="item.disabled"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item  style="margin-bottom: 5px">
               <el-radio-group v-model="form.item_id" size="mini" @change="searchList()">
-                <el-radio-button :label="0">全部({{form.item_id_val.item_id_0}})</el-radio-button>
                 <el-radio-button :label="1101">F1({{form.item_id_val.item_id_1101}})</el-radio-button>
                 <el-radio-button :label="1102">F2({{form.item_id_val.item_id_1102}})</el-radio-button>
                 <el-radio-button :label="1103">F3({{form.item_id_val.item_id_1103}})</el-radio-button>
                 <el-radio-button :label="1104">F4({{form.item_id_val.item_id_1104}})</el-radio-button>
                 <el-radio-button :label="1105">F5({{form.item_id_val.item_id_1105}})</el-radio-button>
                 <el-radio-button :label="1106">F6({{form.item_id_val.item_id_1106}})</el-radio-button>
+                <el-radio-button :label="0">全部({{form.item_id_val.item_id_0}})</el-radio-button>
               </el-radio-group>
             </el-form-item>
           </el-row>
+
+          <el-row>
+            <el-form-item label-width="40px" label="uid" prop="uid">
+              <el-input size="small" v-model="form.uid" placeholder="请输入uid"></el-input>
+            </el-form-item>
+            <el-form-item label-width="60px" label="技术栈" prop="uid">
+              <el-cascader
+                v-model="form.direction_id_obj"
+                :options="direction_data"
+                size="small"
+                placeholder="请选择技术栈"
+                :style="{ width: '170px' }"
+                clearable
+              ></el-cascader>
+            </el-form-item>
+            <el-form-item  label-width="60px" label="来源" prop="uid">
+              <el-select
+                size="small"
+                v-model="form.cert_type"
+                placeholder="请选择先认证后付款"
+                clearable
+                :style="{ width: '170px' }"
+              >
+                <el-option
+                  v-for="(item, index) in cert_typeOptions"
+                  :key="index"
+                  :label="item.label"
+                  :value="item.value"
+                  :disabled="item.disabled"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item  label-width="60px" label="排序" prop="uid">
+              <el-select
+                size="small"
+                v-model="form.orderby"
+                placeholder="请选择排序方式"
+                clearable
+                :style="{ width: '170px' }"
+              >
+                <el-option
+                  v-for="(item, index) in orderby"
+                  :key="index"
+                  :label="item.label"
+                  :value="item.value"
+                  :disabled="item.disabled"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label-width="0">
+              <el-button size="small" type="primary" @click="submitForm">提交</el-button>
+              <el-button :type="show_admin_memo_val" size="small" @click="show_admin_memo">仅显示有备注</el-button>
+            </el-form-item>
+          </el-row>
         </el-form>
       </el-row>
     </div>
 
-    <el-table :data="tableData" border>
-      <el-table-column prop="uid" label="UID" />
-      <el-table-column prop="nickname" label="昵称" />
-      <el-table-column prop="occupation_id_name" label="领域" />
-      <el-table-column prop="item_id" label="技术等级" />
-      <el-table-column prop="order_status_text" label="订单状态" />
-      <el-table-column prop="interview_uid" label="面试官" />
-      <el-table-column prop="addtime" label="申请时间" />
-      <el-table-column prop="ctrontorl" label="操作" width="320px">
+    <div class="clear"></div>
+
+    <el-table :data="tableData" :span-method="objectSpanMethod" border>
+      <el-table-column fixed="left" prop="uid" label="开发者UID" width="100px"/>
+      <el-table-column fixed="left" prop="user_info.realname" label="姓名" width="100px"/>
+      <el-table-column fixed="left" prop="item_id" label="目标等级" width="100px" />
+      <el-table-column prop="user_info.mobile" label="电话" width="130px"/>
+      <el-table-column prop="user_info.direction_name" label="申请技术栈" width="150px"/>
+      <el-table-column prop="interview.realname" label="面试官姓名" width="100px">
+        <template slot-scope="scope">
+          {{scope.row.interview.realname?scope.row.interview.realname:scope.row.interview.uid}}
+        </template>
+      </el-table-column>
+      <el-table-column prop="interview.interview_time" label="面试时间" width="160px"/>
+      <el-table-column prop="confirm_item_id" label="最终定级" width="100px"/>
+      <el-table-column prop="cert_type_text" label="来源" width="100px"/>
+      <el-table-column prop="admin_memo" label="备注" width="200px"/>
+      <el-table-column prop="order_status_text" label="状态" width="100px"/>
+      <el-table-column prop="pay_money" label="支付金额" width="100px"/>
+      <el-table-column prop="interview.pay_money" label="面试工资" width="100px"/>
+      <el-table-column prop="addtime" label="申请时间"  width="160px"/>
+      <el-table-column prop="pay_time" label="支付时间"  width="160px"/>
+      <el-table-column prop="ctrontorl"  fixed="right" label="操作" width="220px">
         <template slot-scope="scope">
-          <el-button type="text" @click="$router.push({path:'/main/freework_level_info', query:{id:scope.row.id}})">查看详情</el-button>
+          <el-button type="text"  @click="drawer(scope.row.id)">查看详情</el-button>
+          <el-button type="text"  @click="set_admin_memo(scope.row)">备注</el-button>
+          <el-button v-if="scope.row.order_status<4 && scope.row.pay_status==2" type="text" @click="change_order_status_4(scope.row)">联系成功</el-button>
         </template>
       </el-table-column>
     </el-table>
-
     <div class="mainPageBox">
       <el-pagination
         @current-change="changePagination"
-        :page-size="20"
+        :page-size="10"
         :total="Number(total)"
         layout="total, prev, pager, next"
         background
       ></el-pagination>
     </div>
 
+    <freework_level :id="id" :drawer="drawer_bool"/>
+
   </div>
 </template>
 
 <script>
-
+  import freework_level from "/components/drawer/freework_level.vue";
   export default {
+    components: {
+      freework_level,
+    },
+    props:[],
     data() {
       return {
         page: 1,
+        drawer_bool:false,
+        id:0,
         form:{
           timeRange:[],
           order_status:3,
           order_status_val:{
           },
           item_id_val:{},
-          item_id:0
+          item_id:0,
+          item_type:1,
+          orderby:1,
+          direction_id_obj:[],
         },
+        show_admin_memo_val:"",
+        orderby: [
+          {
+            label: "全部",
+            value: 0
+          },
+          {
+            label: "申请时间",
+            value: 1
+          },
+          {
+            label: "面试时间",
+            value: 2
+          },
+        ],
+        cert_typeOptions: [
+          {
+            label: "全部",
+            value: 0
+          },
+          {
+            label: "活动认证",
+            value: 1
+          },
+          {
+            label: "先用后付",
+            value: 2
+          },
+          {
+            label: "普通认证",
+            value: 3
+          }
+          ,
+          {
+            label: "人工认证",
+            value: 4
+          }
+        ],
+        item_type: [
+          {
+            label: "全部",
+            value: 0
+          },
+          {
+            label: "申请",
+            value: 1
+          },
+          {
+            label: "认证",
+            value: 2
+          },
+        ],
         returnData:{},
         total: 0,
         labelPosition: 'left',
         tableData: [],
+        direction_data:[],
       }
     },
     computed: {
@@ -89,30 +240,134 @@
     },
     mounted() {
       this.getList();
+      this.get_direction();
+      this.get_order_status();
     },
     methods: {
+      async drawer(id){
+        this.id=id;
+        this.drawer_bool=true;
+      },
+      async setDrawer(a){
+        this.drawer_bool=a;
+      },
       async getList() {
-        this.form.page=this.page;
-        if(this.form.timeRange==null)
+        this.drawer_bool=false;
+        this.get_order_status();
+        this.get_item_id();
+        if(this.form.orderby==1)
+        {
+          this.form.pay_time_desc=true;
+          this.form.interview_time_asc=false;
+        }
+        else if(this.form.orderby==2)
         {
-          this.form.stime="";
-          this.form.etime="";
+          this.form.pay_time_desc=false;
+          this.form.interview_time_asc=true;
+          this.form.order_status=5;
         }
         else
         {
-          this.form.stime=this.form.timeRange[0];
-          this.form.etime=this.form.timeRange[1]+" 23:59:59";
+          this.form.pay_time_desc=false;
+          this.form.interview_time_asc=false;
         }
-        const data = this.form;
-        let res = await this.$post("/uapi/cert/list",data);
+
+        if (this.form.direction_id_obj[1]) {
+          this.form.occupation_id = this.form.direction_id_obj[0];
+          this.form.direction_id = this.form.direction_id_obj[1];
+        }
+        else
+        {
+          this.form.occupation_id = 0;
+          this.form.direction_id = 0;
+        }
+
+        this.form.page=this.page;
+        let data_temp = this.form;
+        let res = await this.$post("/uapi/cert/order",data_temp);
 
         if (res && res.status === 1) {
           this.tableData = res.data.list;
           this.total = res.data.total;
-          this.form.order_status_val=res.data.order_status;
-          this.form.item_id_val=res.data.item_id;
         }
       },
+      submitForm()
+      {
+        this.getList();
+      },
+      show_admin_memo() {
+        if (this.show_admin_memo_val)
+        {
+          this.show_admin_memo_val="";
+          this.form.admin_memo=false;
+        }
+        else
+        {
+          this.show_admin_memo_val="danger";
+          this.form.admin_memo=true;
+        }
+        this.getList();
+      },
+      get_direction() {
+        this.$post("/api/direction/get_all_data")
+          .then(res => {
+            if (res.status == 1) {
+              let aa = directionDataParse(res.data);
+              this.direction_data = [...aa];
+            }
+          })
+          .catch(() => {
+            this.$message({
+              type: "info",
+              message: "操作失败"
+            });
+          });
+      },
+      async get_order_status() {
+        let res = await this.$post("/uapi/cert/order_status");
+        if (res && res.status === 1) {
+          this.form.order_status_val = res.data.order_status;
+        }
+      },
+      async get_item_id() {
+        const data = this.form;
+        let res = await this.$post("/uapi/cert/item_id",data);
+        if (res && res.status === 1) {
+          this.form.item_id_val = res.data.item_id;
+        }
+      },
+      async change_order_status_4(row)
+      {
+        let res = await this.$post("/uapi/cert/change_order_status_4",row);
+        if (res && res.status === 1) {
+          this.$message({
+            type: 'success',
+            message: '操作成功!'
+          });
+          this.getList();
+        }
+      },
+      set_admin_memo(row)
+      {
+        this.$prompt('请输入备注', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消'
+        }).then(({ value }) => {
+          row.val=value;
+          this.set_admin_memo_url(row);
+        }).catch(() => {
+
+        });
+      },
+      async set_admin_memo_url(row)
+      {
+        let res =await this.$post("/uapi/cert/set_admin_memo",row);
+        this.$message({
+          type: 'success',
+          message: '操作成功!'
+        });
+        this.getList();
+      },
       changePagination(val) {
         this.page = val;
         this.getList();
@@ -120,8 +375,64 @@
       searchList(type="") {
         if(type==1) this.returnData={};
         this.getList();
-      }
+      },
+      objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+        let  count=row.interview.count;
+        let  min=rowIndex+1-row.interview.index;
+        let  max=count+min;
+        if ((columnIndex!=6 && columnIndex!=7  && columnIndex!=13) && rowIndex<max-1 && rowIndex>=min-1 && count>1) {
+          if (rowIndex === min-1) {
+            return {
+              rowspan: count,
+              colspan: 1
+            };
+          } else {
 
+            return {
+              rowspan: 0,
+              colspan: 0
+            };
+          }
+        }
+      }
     }
   };
+
+  function directionDataParse(arr) {
+    arr = arr.sort(function(a, b) {
+      return Number(a.display_order) - Number(b.display_order) > 0;
+    });
+    let result = [];
+    let len = arr.length;
+    for (let i = 0; i < len; i++) {
+      let { children, ...other } = arr[i];
+      let label = arr[i].occupation_name || arr[i].direction_name;
+      let value = arr[i].occupation_id || arr[i].direction_id;
+      let item;
+      if (children) {
+        children = directionDataParse(children);
+        item = {
+          ...other,
+          label,
+          value,
+          children
+        };
+      } else {
+        item = {
+          ...other,
+          label,
+          value
+        };
+      }
+      result.push(item);
+    }
+    return result;
+  }
 </script>
+
+<style scoped>
+  .container{
+    display:grid !important;
+  }
+  .clear{clear: both}
+</style>