From 17527437977dc2e2c39c739796e8afd881df35a1 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 10 十二月 2024 14:59:25 +0800
Subject: [PATCH] 修改

---
 src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue | 1613 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 862 insertions(+), 751 deletions(-)

diff --git a/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue b/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue
index 646a7db..e6105cc 100644
--- a/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue
+++ b/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue
@@ -1,399 +1,479 @@
 <template>
-    <div class="notice">
-        <el-dialog
-            v-model="dialogVisible"
-            :title="state.title"
-            width="80%"
-            :before-close="handleClose"
-        >
-          <div class="main_form">
-            <el-form :model="state.form" :rules="state.rules" ref="ruleFormRef" label-width="200px">
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="专业类别" prop="domain">
-                    <el-cascader
-                        :disabled="state.disable"
-                        style="width: 100%"
-                        v-model="state.form.domain"
-                        :options="state.expertsType"
-                        :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName',emitPath: false }"
-                        @change="professionChange"></el-cascader>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="业务处室:" prop="deptId">
-                    <el-cascader
-                        style="width: 100%"
-                        clearable
-                        v-model="state.form.deptId"
-                        :options="state.deptList"
-                        :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',emitPath: false}"></el-cascader>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="姓名" prop="name">
-                    <el-input v-model="state.form.name" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="性别" prop="sex">
-                    <el-radio-group v-model="state.form.sex" :disabled="state.disable">
-                      <el-radio :label="0">男</el-radio>
-                      <el-radio :label="1">女</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="出生日期" prop="birthday">
-                    <el-date-picker
-                        style="width: 100%"
-                        v-model="state.form.birthday"
-                        value-format="YYYY-MM-DD"
-                        type="date"
-                        placeholder="选择日期" :disabled="state.disable">
-                    </el-date-picker>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="联系电话" prop="phone">
-                    <el-input v-model="state.form.phone" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="职称" prop="title">
-                    <!--              <el-select v-model="form.title" placeholder="请选择" style="width: 100%">-->
-                    <!--                <el-option-->
-                    <!--                  v-for="item in professionalList"-->
-                    <!--                  :key="item.value"-->
-                    <!--                  :label="item.label"-->
-                    <!--                  :value="item.value">-->
-                    <!--                </el-option>-->
-                    <!--              </el-select>-->
-                    <el-input v-model="state.form.title" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="职称或资质证明材料" prop="evidence">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'著作')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.evidenceList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'证明')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="2寸免冠证件照">
-                    <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" :disabled="state.disable" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'证件照')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='1' v-model:file-list="state.fileList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'证件照')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="身份证号" prop="idCard">
-                    <el-input v-model="state.form.idCard" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="在岗情况" prop="dutyStatus">
-                    <el-radio-group v-model="state.form.dutyStatus" :disabled="state.disable">
-                      <el-radio :label="0">在岗</el-radio>
-                      <el-radio :label="1">退休</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="最高学历" prop="degree">
-                    <el-input v-model="state.form.degree" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="单位全称" prop="companyName">
-                    <el-input v-model="state.form.companyName" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="单位地址">
-                    <el-input v-model="state.form.companyAddress" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="所在部门">
-                    <el-input v-model="state.form.deptName" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="职务">
-                    <el-input v-model="state.form.job" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="单位电话">
-                    <el-input v-model="state.form.companyTelephone" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="传真号码">
-                    <el-input v-model="state.form.faxNum" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="电子邮箱">
-                    <el-input v-model="state.form.email" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="毕业学校">
-                    <el-input v-model="state.form.graduationSchool" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="所学专业">
-                    <el-input v-model="state.form.speciality" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="现从事的专业及方向">
-                    <el-input v-model="state.form.currentProfession" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="支撑方向_安全生产" prop="supportDirectionEmergency">
-                    <!--              <el-radio-group v-model="form.supportDirectionSafety">-->
-                    <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
-                    <!--              </el-radio-group>-->
-                    <el-checkbox-group v-model="state.form.supportDirectionSafety" :disabled="state.disable">
-                      <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="支撑方向_防灾减灾救灾" prop="supportDirectionEmergency">
-                    <!--              <el-radio-group v-model="form.supportDirectionPrevention">-->
-                    <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
-                    <!--              </el-radio-group>-->
-                    <el-checkbox-group v-model="state.form.supportDirectionPrevention" :disabled="state.disable">
-                      <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="支撑方向_应急救援" prop="supportDirectionEmergency">
-                    <!--              <el-radio-group v-model="form.supportDirectionEmergency">-->
-                    <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
-                    <!--              </el-radio-group>-->
-                    <el-checkbox-group v-model="state.form.supportDirectionEmergency" :disabled="state.disable">
-                      <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="工作简历" prop="resumeKey">
-                    <el-upload accept=".pdf" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'简历')" :on-exceed="showTip" :limit='8' v-model:file-list="state.resumeList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'简历')" :before-remove="beforeRemove">
-                      <el-button type="primary">点击上传</el-button>
-                      <template #tip>
-                        <div class="el-upload__tip">上传pdf格式文件尺寸小于5M,最多可上传5份</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="发明、著作、学术论文情况(何时、何地出版或发表)">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'著作')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.inventionList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'著作')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="受过何种奖励">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'奖励')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.rewardList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'奖励')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="应急管理相关工作主要业绩及研究成果">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'研究')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.achievementList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'研究')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="专家本人意见" prop="recommendUnitOpinionKey">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'本人')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.proAdviceList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'本人')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="推荐单位意见" prop="recommendUnitOpinionKey">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :disabled="state.disable" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'单位')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.adviceList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'单位')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="补充说明">
-                    <el-input v-model="state.form.remark" type="textarea" :autosize="{ minRows: 2}" :readonly="state.disable"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row v-if="state.title == '查看'">
-                <el-col :span="20">
-                  <el-form-item label="专家聘用期限" prop="employTime">
-                    <el-date-picker
-                        :disabled="state.disable"
-                        v-model="state.assessForm.employTime"
-                        type="daterange"
-                        range-separator="至"
-                        start-placeholder="开始日期"
-                        end-placeholder="结束日期"
-                        value-format="YYYY-MM-DD"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row v-if="state.title == '查看'">
-                <el-col :span="20">
-                  <el-form-item label="专家评定等级" prop="ratingLevel">
-                    <el-radio-group v-model="state.assessForm.ratingLevel" :disabled="state.disable">
-                      <el-radio label="1">一级</el-radio>
-                      <el-radio label="2">二级</el-radio>
-                      <el-radio label="3">三级</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-            <el-dialog v-model="imgDialog">
-              <img style="width: 100%" w-full :src="state.dialogImageUrl" alt="">
-            </el-dialog>
+  <div class="notice">
+    <el-dialog
+        v-model="dialogVisible"
+        :title="state.title"
+        width="80%"
+        :before-close="handleClose"
+    >
+      <div class="main_form">
+        <el-form :model="state.form" :rules="state.rules" ref="ruleFormRef" label-width="200px">
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="专业类别" prop="profession">
+<!--                <el-cascader-->
+<!--                    :disabled="state.disable"-->
+<!--                    style="width: 100%"-->
+<!--                    v-model="state.form.domain"-->
+<!--                    :options="state.expertsType"-->
+<!--                    :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName',emitPath: false}"-->
+<!--                    @change="professionChange"></el-cascader>-->
+                <el-cascader
+                    style="width: 100%"
+                    clearable
+                    :disabled="state.disable"
+                    v-model="state.form.profession"
+                    :options="state.expertsType"
+                    :props="{ expandTrigger: 'hover', value: 'id',label: 'classifyName'}"
+                    @change="professionChange"></el-cascader>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="业务处室:" prop="deptId">
+                <el-cascader
+                    style="width: 100%"
+                    clearable
+                    :disabled="state.disable"
+                    v-model="state.form.deptId"
+                    :options="state.deptList"
+                    :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',emitPath: false}"></el-cascader>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="姓名" prop="name">
+                <el-input v-model="state.form.name" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="性别" prop="sex">
+                <el-radio-group v-model="state.form.sex" :disabled="state.disable">
+                  <el-radio :label="0">男</el-radio>
+                  <el-radio :label="1">女</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="出生日期" prop="birthday">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="state.form.birthday"
+                    value-format="YYYY-MM-DD"
+                    type="date"
+                    placeholder="选择日期" :disabled="state.disable">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="联系电话" prop="phone">
+                <el-input v-model="state.form.phone" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="职称" prop="title">
+                <!--              <el-select v-model="form.title" placeholder="请选择" style="width: 100%">-->
+                <!--                <el-option-->
+                <!--                  v-for="item in professionalList"-->
+                <!--                  :key="item.value"-->
+                <!--                  :label="item.label"-->
+                <!--                  :value="item.value">-->
+                <!--                </el-option>-->
+                <!--              </el-select>-->
+                <el-input v-model="state.form.title" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="职称或资质证明材料" prop="evidence">
+                <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'著作')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8'
+                           v-model:file-list="state.evidenceList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'证明')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="2寸免冠证件照">
+                <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" :disabled="state.disable"
+                           method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'证件照')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='1'
+                           v-model:file-list="state.fileList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'证件照')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="身份证号" prop="idCard">
+                <el-input v-model="state.form.idCard" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="在岗情况" prop="dutyStatus">
+                <el-radio-group v-model="state.form.dutyStatus" :disabled="state.disable">
+                  <el-radio :label="0">在岗</el-radio>
+                  <el-radio :label="1">退休</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="最高学历" prop="degree">
+                <el-input v-model="state.form.degree" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="单位全称" prop="companyName">
+                <el-input v-model="state.form.companyName" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="单位地址">
+                <el-input v-model="state.form.companyAddress" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="所在部门">
+                <el-input v-model="state.form.deptName" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="职务">
+                <el-input v-model="state.form.job" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="单位电话">
+                <el-input v-model="state.form.companyTelephone" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="传真号码">
+                <el-input v-model="state.form.faxNum" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="电子邮箱">
+                <el-input v-model="state.form.email" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="毕业学校">
+                <el-input v-model="state.form.graduationSchool" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="所学专业">
+                <el-input v-model="state.form.speciality" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="现从事的专业及方向">
+                <el-input v-model="state.form.currentProfession" :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="支撑方向_安全生产" prop="supportDirectionEmergency">
+                <!--              <el-radio-group v-model="form.supportDirectionSafety">-->
+                <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
+                <!--              </el-radio-group>-->
+                <el-checkbox-group v-model="state.form.supportDirectionSafety" :disabled="state.disable">
+                  <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{
+                      item.label
+                    }}
+                  </el-checkbox>
+                </el-checkbox-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="支撑方向_防灾减灾救灾" prop="supportDirectionEmergency">
+                <!--              <el-radio-group v-model="form.supportDirectionPrevention">-->
+                <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
+                <!--              </el-radio-group>-->
+                <el-checkbox-group v-model="state.form.supportDirectionPrevention" :disabled="state.disable">
+                  <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{
+                      item.label
+                    }}
+                  </el-checkbox>
+                </el-checkbox-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="支撑方向_应急救援" prop="supportDirectionEmergency">
+                <!--              <el-radio-group v-model="form.supportDirectionEmergency">-->
+                <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
+                <!--              </el-radio-group>-->
+                <el-checkbox-group v-model="state.form.supportDirectionEmergency" :disabled="state.disable">
+                  <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{
+                      item.label
+                    }}
+                  </el-checkbox>
+                </el-checkbox-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="工作简历" prop="resumeKey">
+                <el-upload accept=".pdf" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'简历')"
+                           :on-exceed="showTip" :limit='8' v-model:file-list="state.resumeList" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'简历')"
+                           :before-remove="beforeRemove">
+                  <el-button type="primary">点击上传</el-button>
+                  <template #tip>
+                    <div class="el-upload__tip">上传pdf格式文件尺寸小于5M,最多可上传5份</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="发明、著作、学术论文情况(何时、何地出版或发表)">
+                <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'著作')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8'
+                           v-model:file-list="state.inventionList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'著作')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="受过何种奖励">
+                <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'奖励')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8'
+                           v-model:file-list="state.rewardList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'奖励')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="应急管理相关工作主要业绩及研究成果">
+                <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'研究')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8'
+                           v-model:file-list="state.achievementList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'研究')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="专家本人意见" prop="recommendUnitOpinionKey">
+                <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'本人')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8'
+                           v-model:file-list="state.proAdviceList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'本人')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="推荐单位意见" prop="recommendUnitOpinionKey">
+                <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post"
+                           :disabled="state.disable"
+                           :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'单位')"
+                           :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8'
+                           v-model:file-list="state.adviceList" list-type="picture-card" :before-upload="picSize"
+                           :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'单位')"
+                           :before-remove="beforeRemove">
+                  <el-icon>
+                    <Plus/>
+                  </el-icon>
+                  <template #tip>
+                    <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+                  </template>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="补充说明">
+                <el-input v-model="state.form.remark" type="textarea" :autosize="{ minRows: 2}"
+                          :readonly="state.disable"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row v-if="state.title == '查看'">
+            <el-col :span="20">
+              <el-form-item label="专家聘用期限" prop="employTime">
+                <el-date-picker
+                    :disabled="state.disable"
+                    v-model="state.assessForm.employTime"
+                    type="daterange"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    value-format="YYYY-MM-DD"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row v-if="state.title == '查看'">
+            <el-col :span="20">
+              <el-form-item label="专家评定等级" prop="ratingLevel">
+                <el-radio-group v-model="state.assessForm.ratingLevel" :disabled="state.disable">
+                  <el-radio label="1">一级</el-radio>
+                  <el-radio label="2">二级</el-radio>
+                  <el-radio label="3">三级</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <el-dialog v-model="imgDialog">
+          <img style="width: 100%" w-full :src="state.dialogImageUrl" alt="">
+        </el-dialog>
 
-            <el-dialog
-                v-model="state.assessDialog"
-                title="评定详情"
-                width="50%"
-                :before-close="closeAssess"
-            >
-              <el-form :model="state.assessForm" :rules="state.assessRules" ref="assessFormRef" label-width="200px">
-                <el-form-item label="专家聘用期限" prop="employTime">
-                  <el-date-picker
-                      v-model="state.assessForm.employTime"
-                      type="daterange"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      end-placeholder="结束日期"
-                      value-format="YYYY-MM-DD"
-                  />
-                </el-form-item>
-                <el-form-item label="专家评定等级" prop="ratingLevel">
-                  <el-radio-group v-model="state.assessForm.ratingLevel">
-                    <el-radio label="1">一级</el-radio>
-                    <el-radio label="2">二级</el-radio>
-                    <el-radio label="3">三级</el-radio>
-                  </el-radio-group>
-                </el-form-item>
-              </el-form>
-              <template #footer>
+        <el-dialog
+            v-model="state.assessDialog"
+            title="评定详情"
+            width="50%"
+            :before-close="closeAssess"
+        >
+          <el-form :model="state.assessForm" :rules="state.assessRules" ref="assessFormRef" label-width="200px">
+            <el-form-item label="专家聘用期限" prop="employTime">
+              <el-date-picker
+                  v-model="state.assessForm.employTime"
+                  type="daterange"
+                  range-separator="至"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                  value-format="YYYY-MM-DD"
+              />
+            </el-form-item>
+            <el-form-item label="专家评定等级" prop="ratingLevel">
+              <el-radio-group v-model="state.assessForm.ratingLevel">
+                <el-radio label="1">一级</el-radio>
+                <el-radio label="2">二级</el-radio>
+                <el-radio label="3">三级</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-form>
+          <template #footer>
                 <span class="dialog-footer">
                   <el-button @click="closeAssess" size="default">取 消</el-button>
-                  <el-button type="primary" @click="assessSubmit(assessFormRef)" size="default" v-preReClick>确认</el-button>
+                  <el-button type="primary" @click="assessSubmit(assessFormRef)" size="default"
+                             v-preReClick>确认</el-button>
                 </span>
-              </template>
-            </el-dialog>
-          </div>
-            <template #footer>
+          </template>
+        </el-dialog>
+      </div>
+      <template #footer>
               <span class="dialog-footer" v-if="state.title == '新增' || state.title == '编辑'">
                   <el-button @click="handleClose" size="default">取 消</el-button>
                   <el-button type="primary" @click="onSubmit(ruleFormRef)" size="default" v-preReClick>确认</el-button>
               </span>
-              <span class="dialog-footer" v-if="state.title == '评定'">
-                  <el-button type="danger" size="default" @click="startAssess(3)"  v-preReClick>评定驳回</el-button>
+        <span class="dialog-footer" v-if="state.title == '评定'">
+                  <el-button type="danger" size="default" @click="startAssess(3)" v-preReClick>评定驳回</el-button>
                   <el-button type="primary" @click="startAssess(2)" size="default" v-preReClick>评定通过</el-button>
               </span>
-            </template>
-        </el-dialog>
-    </div>
+      </template>
+    </el-dialog>
+  </div>
 </template>
 <script setup>
 import {reactive, ref, toRefs, defineEmits, nextTick, onMounted, getCurrentInstance} from 'vue'
@@ -401,15 +481,16 @@
 import {verifyPhone, verifyIdCard} from "../../../../../utils/validate"
 import {addExpertInfo, getExpertTypes, getInfo, modExpertInfo, uploadFile, changeApprove} from "@/api/form"
 import {delPic} from "@/api/login"
-import { getToken } from "@/utils/auth"
+import {getToken} from "@/utils/auth"
 import {Base64} from "js-base64"
 import {listOutDept} from "@/api/system/dept";
+
 const emit = defineEmits(["getList"])
 const dialogVisible = ref(false)
 const imgDialog = ref(false)
 const ruleFormRef = ref()
 const assessFormRef = ref()
-const { proxy } = getCurrentInstance()
+const {proxy} = getCurrentInstance()
 let validatePass = (rule, value, callback) => {
   if (state.resumeList.length == 0) {
     callback(new Error('请上传工作简历'));
@@ -435,31 +516,31 @@
 }
 
 let validateOneOfThree = (rule, value, callback) => {
-  if (state.form.supportDirectionSafety.length==0&&state.form.supportDirectionSafety.length==0&&state.form.supportDirectionSafety.length==0) {
+  if (state.form.supportDirectionSafety.length == 0 && state.form.supportDirectionSafety.length == 0 && state.form.supportDirectionSafety.length == 0) {
     callback(new Error('请至少从三种支撑方向中勾选一种'));
   } else {
     callback();
   }
 }
 
-let validatePhone = (rule, value, callback)=>{
-  if(value === ''){
+let validatePhone = (rule, value, callback) => {
+  if (value === '') {
     callback(new Error('请输入手机号'))
-  }else{
-    if(!verifyPhone(value)){
+  } else {
+    if (!verifyPhone(value)) {
       callback(new Error('手机号格式有误'))
-    }else{
+    } else {
       callback()
     }
   }
 }
-let verifyId = (rule, value, callback)=>{
-  if(value === ''){
+let verifyId = (rule, value, callback) => {
+  if (value === '') {
     callback(new Error('请输入身份证号'))
-  }else{
-    if(!verifyIdCard(value)){
+  } else {
+    if (!verifyIdCard(value)) {
       callback(new Error('身份证号格式有误'))
-    }else{
+    } else {
       callback()
     }
   }
@@ -467,14 +548,17 @@
 
 const state = reactive({
   assessDialog: false,
-  form:{
+  form: {
     id: null,
-    name:'',
-    sex:'',
+    name: '',
+    sex: '',
+    profession: [],
+    bigClassify: null,
+    smallClassify: null,
     domain: '',
     deptId: null,
     birthday: '',
-    phone:'',
+    phone: '',
     title: '',
     electronicPhoto: '',
     idCard: '',
@@ -546,322 +630,345 @@
   proAdviceList: [],
   adviceList: [],
   dialogImageUrl: '',
-  rules:{
-    name:[{ required: true, message: '请填写姓名', trigger: 'blur' }],
-    sex:[{ required: true, message: '请选择性别', trigger: 'blur' }],
-    domain: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
-    deptId: [{ required: true, message: '请选择业务处室', trigger: 'blur' }],
-    birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
-    phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
-    title: [{ required: true, message: '请填写职称', trigger: 'blur' }],
-    evidence: [{ required: true,validator: validateEvidence, trigger: 'blur' }],
-    resumeKey: [{ required: true,validator: validatePass, trigger: 'blur' }],
-    recommendUnitOpinionKey: [{ required: true,validator: validateOneOfTwo, trigger: 'blur' }],
-    idCard: [{ required: true, validator: verifyId, trigger: 'blur' }],
-    supportDirectionEmergency: [{ required: true,validator: validateOneOfThree, trigger: 'blur' }],
-    dutyStatus: [{ required: true, message: '请选择在岗情况', trigger: 'blur' }],
-    companyName: [{ required: true, message: '请填写单位全称', trigger: 'blur' }],
-    degree: [{ required: true, message: '请填写最高学历', trigger: 'blur' }]
+  rules: {
+    name: [{required: true, message: '请填写姓名', trigger: 'blur'}],
+    sex: [{required: true, message: '请选择性别', trigger: 'blur'}],
+    profession: [{required: true, message: '请选择专业类别', trigger: 'blur'}],
+    deptId: [{required: true, message: '请选择业务处室', trigger: 'blur'}],
+    birthday: [{required: true, message: '请选择出生日期', trigger: 'blur'}],
+    phone: [{required: true, validator: validatePhone, trigger: 'blur'}],
+    title: [{required: true, message: '请填写职称', trigger: 'blur'}],
+    evidence: [{required: true, validator: validateEvidence, trigger: 'blur'}],
+    resumeKey: [{required: true, validator: validatePass, trigger: 'blur'}],
+    recommendUnitOpinionKey: [{required: true, validator: validateOneOfTwo, trigger: 'blur'}],
+    idCard: [{required: true, validator: verifyId, trigger: 'blur'}],
+    supportDirectionEmergency: [{required: true, validator: validateOneOfThree, trigger: 'blur'}],
+    dutyStatus: [{required: true, message: '请选择在岗情况', trigger: 'blur'}],
+    companyName: [{required: true, message: '请填写单位全称', trigger: 'blur'}],
+    degree: [{required: true, message: '请填写最高学历', trigger: 'blur'}]
   },
-  assessRules:{
-    employTime: [{ required: true, message: '请选择聘用期限', trigger: 'blur' }],
-    ratingLevel: [{ required: true, message: '请选择评定等级', trigger: 'blur' }]
+  assessRules: {
+    employTime: [{required: true, message: '请选择聘用期限', trigger: 'blur'}],
+    ratingLevel: [{required: true, message: '请选择评定等级', trigger: 'blur'}]
   }
 })
 
-  onMounted(()=>{
-  })
+onMounted(() => {
+})
 
-  const openDialog = (type, value) => {
-    state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='view' ?'查看':'评定'
-    getExpertsType()
-    getDepList()
-    state.fileList = []
-    if(type == 'edit'||type=='view'||type=='assess'){
-      getInfo(value.id).then((res)=>{
-        if(res.code == 200){
-          if(res.data) {
-            const val = res.data
-            for(let i in state.form) {
-              if (validKey(i, val)) {
-                state.form[i] = val[i]
-              }
-            }
-            if(val.supportDirectionSafety && val.supportDirectionSafety!==''){
-              state.form.supportDirectionSafety = val.supportDirectionSafety.split(',').map(i=>Number(i))
-            }else{
-              state.form.supportDirectionSafety = []
-            }
-            if(val.supportDirectionPrevention && val.supportDirectionPrevention!==''){
-              state.form.supportDirectionPrevention = val.supportDirectionPrevention.split(',').map(i=>Number(i))
-            }else{
-              state.form.supportDirectionPrevention = []
-            }
-            if(val.supportDirectionEmergency && val.supportDirectionEmergency!==''){
-              state.form.supportDirectionEmergency = val.supportDirectionEmergency.split(',').map(i=>Number(i))
-            }else{
-              state.form.supportDirectionEmergency = []
-            }
-            if(state.form.electronicPhoto!== ''){
-              state.fileList.push({
-                name: state.form.electronicPhoto,
-                url: state.form.electronicPhoto,
-              })
-            }
-            if(state.form.resumeKey !== ''){
-              state.resumeList = state.form.resumeKey.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
-            }
-            if(state.form.evidence !== ''){
-              state.evidenceList = state.form.evidence.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
-            }
-            if(state.form.paperSituationKey !== ''){
-              state.inventionList = state.form.paperSituationKey.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
-            }
-            if(state.form.rewardKey !== ''){
-              state.rewardList = state.form.rewardKey.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
-            }
-            if(state.form.achievementKey !== ''){
-              state.achievementList = state.form.achievementKey.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
-            }
-            if(state.form.personalOpinionKey !== ''){
-              state.proAdviceList = state.form.personalOpinionKey.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
-            }
-            if(state.form.recommendUnitOpinionKey !== ''){
-              state.adviceList = state.form.recommendUnitOpinionKey.split(',').map(i=>{
-                return {
-                  name: i,
-                  url: i,
-                }
-              })
+const professionChange = (value) => {
+  if (!value) {
+    state.form.profession = []
+    state.form.bigClassify = null
+    state.form.smallClassify = null
+  }
+}
+
+const findNodeById = (data,value)=> {
+  for (const node of data) {
+    if (node.id === value) {
+      return node.classifyName;
+    }
+    if (node.children) {
+      const foundNode = findNodeById(node.children, value);
+      if (foundNode) {
+        return foundNode;
+      }
+    }
+  }
+  return null;
+}
+
+const openDialog = (type, value) => {
+  state.title = type === 'add' ? '新增' : type === 'edit' ? '编辑' : type === 'view' ? '查看' : '评定'
+  getExpertsType()
+  getDepList()
+  state.fileList = []
+  if (type == 'edit' || type == 'view' || type == 'assess') {
+    getInfo(value.id).then((res) => {
+      if (res.code == 200) {
+        if (res.data) {
+          const val = res.data
+          for (let i in state.form) {
+            if (validKey(i, val)) {
+              state.form[i] = val[i]
             }
           }
-          dialogVisible.value = true
-        }else{
-          ElMessage.warning('数据获取失败:'+res.msg)
+          state.form.profession = [val.bigClassify,val.smallClassify]
+          if (val.supportDirectionSafety && val.supportDirectionSafety !== '') {
+            state.form.supportDirectionSafety = val.supportDirectionSafety.split(',').map(i => Number(i))
+          } else {
+            state.form.supportDirectionSafety = []
+          }
+          if (val.supportDirectionPrevention && val.supportDirectionPrevention !== '') {
+            state.form.supportDirectionPrevention = val.supportDirectionPrevention.split(',').map(i => Number(i))
+          } else {
+            state.form.supportDirectionPrevention = []
+          }
+          if (val.supportDirectionEmergency && val.supportDirectionEmergency !== '') {
+            state.form.supportDirectionEmergency = val.supportDirectionEmergency.split(',').map(i => Number(i))
+          } else {
+            state.form.supportDirectionEmergency = []
+          }
+          if (state.form.electronicPhoto !== '') {
+            state.fileList.push({
+              name: state.form.electronicPhoto,
+              url: state.form.electronicPhoto,
+            })
+          }
+          if (state.form.resumeKey !== '') {
+            state.resumeList = state.form.resumeKey.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+          if (state.form.evidence !== '') {
+            state.evidenceList = state.form.evidence.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+          if (state.form.paperSituationKey !== '') {
+            state.inventionList = state.form.paperSituationKey.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+          if (state.form.rewardKey !== '') {
+            state.rewardList = state.form.rewardKey.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+          if (state.form.achievementKey !== '') {
+            state.achievementList = state.form.achievementKey.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+          if (state.form.personalOpinionKey !== '') {
+            state.proAdviceList = state.form.personalOpinionKey.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+          if (state.form.recommendUnitOpinionKey !== '') {
+            state.adviceList = state.form.recommendUnitOpinionKey.split(',').map(i => {
+              return {
+                name: i,
+                url: i,
+              }
+            })
+          }
+        }
+        dialogVisible.value = true
+      } else {
+        ElMessage.warning('数据获取失败:' + res.msg)
+      }
+    })
+    if (type == 'edit') {
+      if (value.state == 2) {
+        state.disable = true
+        dialogVisible.value = false
+        state.assessDialog = true
+      } else {
+        state.disable = false
+      }
+    } else {
+      state.disable = true
+    }
+    if (value.state == 2) {
+      state.assessForm.ratingLevel = value.ratingLevel
+      state.assessForm.employTime = [value.employmentDateStart, value.employmentDateEnd]
+    }
+  } else {
+    state.disable = false
+    dialogVisible.value = true
+  }
+}
+
+const validKey = (key, obj) => {
+  return key in obj
+}
+
+const startAssess = async (num) => {
+  if (num == 2) {
+    state.assessDialog = true
+  } else {
+    await assess(num)
+  }
+}
+
+const assess = (num) => {
+  ElMessageBox.confirm(
+      '确定对该专家进行此审批操作?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then(async () => {
+        let params = {}
+        if (num == 2) {
+          params = {
+            id: state.form.id,
+            state: num,
+            employmentDateStart: state.assessForm.employTime[0],
+            employmentDateEnd: state.assessForm.employTime[1],
+            ratingLevel: state.assessForm.ratingLevel
+          }
+        } else {
+          params = {
+            id: state.form.id,
+            state: num
+          }
+        }
+        const res = await changeApprove(params)
+        if (res.code == 200) {
+          ElMessage({
+            type: 'success',
+            message: '审批成功'
+          });
+          emit('getList')
+          state.assessDialog = false
+          dialogVisible.value = false
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.msg
+          });
         }
       })
-      if(type == 'edit'){
-        if(value.state == 2){
-          state.disable = true
-          dialogVisible.value = false
-          state.assessDialog = true
-        }else{
-          state.disable = false
-        }
-      }else{
-        state.disable = true
-      }
-      if(value.state == 2){
-        state.assessForm.ratingLevel = value.ratingLevel
-        state.assessForm.employTime = [value.employmentDateStart,value.employmentDateEnd]
-      }
-    }else{
-      state.disable = false
-      dialogVisible.value = true
+}
+
+const getExpertsType = async () => {
+  const res = await getExpertTypes()
+  if (res.code == 200) {
+    state.expertsType = res.data
+  } else {
+    ElMessage({
+      type: 'warning',
+      message: res.message
+    });
+  }
+}
+
+function getDepList() {
+  listOutDept({}).then(response => {
+    state.deptList = proxy.handleTree(response.data, "deptId", 'parentId', 'children');
+  });
+}
+
+
+// 图片上传
+const showTip = () => {
+  ElMessage({
+    type: 'warning',
+    message: '超出文件上传数量'
+  });
+}
+
+const picSize = async (rawFile) => {
+  if (rawFile.size / 1024 / 1024 > 5) {
+    ElMessage({
+      type: 'warning',
+      message: '文件大小不能超过5M'
+    });
+    return false
+  }
+};
+
+const handlePictureCardPreview = (uploadFile) => {
+  state.dialogImageUrl = uploadFile.url
+  imgDialog.value = true;
+}
+
+const handleAvatarSuccess = (res, uploadFile, type) => {
+  if (res.code == 200) {
+    if (type == '证件照') {
+      state.form.electronicPhoto = res.url
+    } else {
+      uploadFile.name = res.url
     }
+  } else {
+    ElMessage({
+      type: 'warning',
+      message: '文件上传失败'
+    })
   }
+}
 
-  const validKey=(key,obj)=>{
-    return key in obj
-  }
-
-  const startAssess = async (num)=>{
-    if(num == 2){
-      state.assessDialog = true
-    }else{
-      await assess(num)
-    }
-  }
-
-  const assess = (num)=>{
+const handleRemove = (file, uploadFiles, type) => {
+  console.log(file, uploadFiles)
+  if (file && file.status == 'success') {
     ElMessageBox.confirm(
-        '确定对该专家进行此审批操作?',
+        '该操作将永久删除此文件内容,是否继续?',
         '提示',
         {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'warning',
         })
-        .then(async() => {
-          let params = {}
-          if(num == 2){
-            params = {
-              id: state.form.id,
-              state: num,
-              employmentDateStart: state.assessForm.employTime[0],
-              employmentDateEnd: state.assessForm.employTime[1],
-              ratingLevel: state.assessForm.ratingLevel
-            }
-          }else{
-            params = {
-              id:state.form.id,
-              state: num
-            }
+        .then(async () => {
+          let path = ''
+          if (type == '证件照') {
+            path = state.form.electronicPhoto
+          } else {
+            path = file.name
           }
-          const res = await changeApprove(params)
-          if(res.code == 200){
+          const res = await delPic({path: path})
+          if (res.code == 200) {
             ElMessage({
               type: 'success',
-              message: '审批成功'
-            });
-            emit('getList')
-            state.assessDialog = false
-            dialogVisible.value = false
-          }else{
+              message: '文件已删除'
+            })
+            state.hasDeleteFile = true
+          } else {
             ElMessage({
               type: 'warning',
               message: res.msg
-            });
+            })
           }
         })
   }
-
-  const getExpertsType = async ()=>{
-    const res = await getExpertTypes()
-    if(res.code == 200){
-      state.expertsType = res.data
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: res.message
-      });
-    }
-  }
-
-function getDepList() {
-  listOutDept({}).then(response => {
-    state.deptList = proxy.handleTree(response.data, "deptId",'parentId','children');
-  });
 }
 
-  const professionChange=(value)=> {
-    console.log(value,'val')
-  }
-
-
-
-  // 图片上传
-  const showTip =()=>{
-    ElMessage({
-      type: 'warning',
-      message: '超出文件上传数量'
-    });
-  }
-
-  const picSize = async (rawFile) => {
-    if(rawFile.size / 1024 / 1024 > 5){
-      ElMessage({
-        type: 'warning',
-        message: '文件大小不能超过5M'
-      });
-      return false
-    }
-  };
-
-  const handlePictureCardPreview = (uploadFile) => {
-    state.dialogImageUrl = uploadFile.url
-    imgDialog.value = true;
-  }
-
-  const handleAvatarSuccess = (res, uploadFile,type) => {
-    if(res.code == 200){
-      if(type == '证件照'){
-        state.form.electronicPhoto = res.url
-      }else{
-        uploadFile.name = res.url
-      }
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: '文件上传失败'
-      })
-    }
-  }
-
-  const handleRemove = (file, uploadFiles,type) => {
-    console.log(file, uploadFiles)
-    if(file && file.status == 'success') {
-      ElMessageBox.confirm(
-          '该操作将永久删除此文件内容,是否继续?',
-          '提示',
-          {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning',
-          })
-          .then(async () => {
-            let path = ''
-            if (type == '证件照') {
-              path = state.form.electronicPhoto
-            } else {
-              path = file.name
-            }
-            const res = await delPic({path: path})
-            if (res.code == 200) {
-              ElMessage({
-                type: 'success',
-                message: '文件已删除'
-              })
-              state.hasDeleteFile = true
-            } else {
-              ElMessage({
-                type: 'warning',
-                message: res.msg
-              })
-            }
-          })
-    }
-  }
-
-const onSubmit = async (formEl)=> {
+const onSubmit = async (formEl) => {
   if (!formEl) return
   await formEl.validate(async (valid, fields) => {
     if (valid) {
       let data = JSON.parse(JSON.stringify(state.form))
-      data.supportDirectionSafety = Array.isArray(data.supportDirectionSafety)?data.supportDirectionSafety.join(','):''
-      data.supportDirectionPrevention = Array.isArray(data.supportDirectionPrevention)?data.supportDirectionPrevention.join(','):''
-      data.supportDirectionEmergency = Array.isArray(data.supportDirectionEmergency)?data.supportDirectionEmergency.join(','):''
-      data.evidence = state.evidenceList.map(i=>i.name).join(',')
-      data.resumeKey = state.resumeList.map(i=>i.name).join(',')
-      data.paperSituationKey = state.inventionList.map(i=>i.name).join(',')
-      data.rewardKey = state.rewardList.map(i=>i.name).join(',')
-      data.achievementKey = state.achievementList.map(i=>i.name).join(',')
-      data.personalOpinionKey = state.proAdviceList.map(i=>i.name).join(',')
-      data.recommendUnitOpinionKey = state.adviceList.map(i=>i.name).join(',')
-      if(state.title == '新增'){
+      data.bigClassify = data.profession[0]
+      data.smallClassify = data.profession[1]
+      data.domain = findNodeById(state.expertsType,data.smallClassify)
+      data.supportDirectionSafety = Array.isArray(data.supportDirectionSafety) ? data.supportDirectionSafety.join(',') : ''
+      data.supportDirectionPrevention = Array.isArray(data.supportDirectionPrevention) ? data.supportDirectionPrevention.join(',') : ''
+      data.supportDirectionEmergency = Array.isArray(data.supportDirectionEmergency) ? data.supportDirectionEmergency.join(',') : ''
+      data.evidence = state.evidenceList.map(i => i.name).join(',')
+      data.resumeKey = state.resumeList.map(i => i.name).join(',')
+      data.paperSituationKey = state.inventionList.map(i => i.name).join(',')
+      data.rewardKey = state.rewardList.map(i => i.name).join(',')
+      data.achievementKey = state.achievementList.map(i => i.name).join(',')
+      data.personalOpinionKey = state.proAdviceList.map(i => i.name).join(',')
+      data.recommendUnitOpinionKey = state.adviceList.map(i => i.name).join(',')
+      delete data.profession
+      if (state.title == '新增') {
         delete data.id
-        const res= await addExpertInfo(data)
-        if(res.code == 200){
+        const res = await addExpertInfo(data)
+        if (res.code == 200) {
           ElMessage.success(res.msg)
           state.fileList = []
           state.evidenceList = []
@@ -874,12 +981,12 @@
           emit('getList')
           state.hasDeleteFile = false
           dialogVisible.value = false
-        }else{
+        } else {
           ElMessage.warning(res.msg)
         }
-      }else{
-        const res= await modExpertInfo(data)
-        if(res.code == 200){
+      } else {
+        const res = await modExpertInfo(data)
+        if (res.code == 200) {
           ElMessage.success(res.msg)
           state.fileList = []
           state.evidenceList = []
@@ -892,7 +999,7 @@
           emit('getList')
           state.hasDeleteFile = false
           dialogVisible.value = false
-        }else{
+        } else {
           ElMessage.warning(res.msg)
         }
       }
@@ -902,18 +1009,18 @@
   })
 }
 
-const assessSubmit = async (formEl)=> {
+const assessSubmit = async (formEl) => {
   if (!formEl) return
   await formEl.validate(async (valid, fields) => {
     if (valid) {
       await assess(2)
-    }else {
+    } else {
       ElMessage.warning('请完善必填信息')
     }
-    })
+  })
 }
 
-const closeAssess = ()=>{
+const closeAssess = () => {
   assessFormRef.value.clearValidate()
   state.assessForm = {
     employTime: [],
@@ -923,74 +1030,78 @@
 }
 
 const handleClose = () => {
-    if(state.hasDeleteFile == false){
-      ruleFormRef.value.clearValidate()
-      state.form={
-        id: null,
-        name:'',
-        sex:'',
-        domain: '',
-        deptId: null,
-        birthday: '',
-        phone:'',
-        title: '',
-        electronicPhoto: '',
-        idCard: '',
-        dutyStatus: null,
-        companyName: '',
-        companyAddress: '',
-        deptName: '',
-        job: '',
-        companyTelephone: '',
-        faxNum: '',
-        email: '',
-        graduationSchool: '',
-        degree: '',
-        speciality: '',
-        currentProfession: '',
-        supportDirectionSafety: [],
-        supportDirectionPrevention: [],
-        supportDirectionEmergency: [],
-        evidence: '',
-        resumeKey: '',
-        paperSituationKey: '',
-        rewardKey: '',
-        achievementKey: '',
-        personalOpinionKey: '',
-        recommendUnitOpinionKey: '',
-        remark: '',
-        source: 2
-      }
-      state.fileList = []
-      state.evidenceList = []
-      state.resumeList = []
-      state.inventionList = []
-      state.rewardList = []
-      state.achievementList = []
-      state.proAdviceList = []
-      state.adviceList = []
-      dialogVisible.value = false;
-    }else{
-      onSubmit()
+  if (state.hasDeleteFile == false) {
+    ruleFormRef.value.clearValidate()
+    state.form = {
+      id: null,
+      name: '',
+      sex: '',
+      profession: [],
+      bigClassify: null,
+      smallClassify: null,
+      domain: '',
+      deptId: null,
+      birthday: '',
+      phone: '',
+      title: '',
+      electronicPhoto: '',
+      idCard: '',
+      dutyStatus: null,
+      companyName: '',
+      companyAddress: '',
+      deptName: '',
+      job: '',
+      companyTelephone: '',
+      faxNum: '',
+      email: '',
+      graduationSchool: '',
+      degree: '',
+      speciality: '',
+      currentProfession: '',
+      supportDirectionSafety: [],
+      supportDirectionPrevention: [],
+      supportDirectionEmergency: [],
+      evidence: '',
+      resumeKey: '',
+      paperSituationKey: '',
+      rewardKey: '',
+      achievementKey: '',
+      personalOpinionKey: '',
+      recommendUnitOpinionKey: '',
+      remark: '',
+      source: 2
     }
+    state.fileList = []
+    state.evidenceList = []
+    state.resumeList = []
+    state.inventionList = []
+    state.rewardList = []
+    state.achievementList = []
+    state.proAdviceList = []
+    state.adviceList = []
+    dialogVisible.value = false;
+  } else {
+    onSubmit()
+  }
 }
 
 defineExpose({
-    openDialog,
+  openDialog,
   getExpertsType
 })
 
 </script>
 
 <style scoped lang="scss">
-.notice{
-    :deep(.el-form .el-form-item__label) {
-        font-size: 15px;
-    }
-    .file {
-        display: flex;
-        flex-direction: column;
-        align-items: flex-start;
-    }
+.notice {
+  :deep(.el-form .el-form-item__label) {
+    font-size: 15px;
+  }
+
+  .file {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+  }
 }
 </style>

--
Gitblit v1.9.2