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