From 1da948c1c8808077f10e3aa32fafd30939ee5c12 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 03 十二月 2024 16:37:39 +0800 Subject: [PATCH] 新增 --- src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue | 542 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 365 insertions(+), 177 deletions(-) diff --git a/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue b/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue index 32790b9..646a7db 100644 --- a/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue +++ b/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue @@ -6,35 +6,33 @@ width="80%" :before-close="handleClose" > - <div class="main-title">专家信息录入</div> - <!-- <el-divider>专家信息录入</el-divider>--> <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-form-item label="专业类别" prop="domain"> <el-cascader :disabled="state.disable" style="width: 100%" - v-model="state.form.profession" + v-model="state.form.domain" :options="state.expertsType" - :props="{ expandTrigger: 'hover',value: 'id',label: 'classifyName' }" + :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="date">--> - <!-- <el-date-picker--> - <!-- style="width: 100%"--> - <!-- v-model="form.date"--> - <!-- type="date"--> - <!-- placeholder="选择日期">--> - <!-- </el-date-picker>--> - <!-- </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"> @@ -58,7 +56,7 @@ <el-date-picker style="width: 100%" v-model="state.form.birthday" - value-format="YYYY-MM-DD 00:00:00" + value-format="YYYY-MM-DD" type="date" placeholder="选择日期" :disabled="state.disable"> </el-date-picker> @@ -89,7 +87,19 @@ </el-row> <el-row> <el-col :span="20"> - <el-form-item label="证件照" prop="electronicPhoto"> + <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> @@ -113,6 +123,13 @@ <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> @@ -174,13 +191,6 @@ </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="所学专业"> <el-input v-model="state.form.speciality" :readonly="state.disable"></el-input> </el-form-item> @@ -195,7 +205,7 @@ </el-row> <el-row> <el-col :span="20"> - <el-form-item label="支撑方向_安全生产" prop="supportDirectionSafety"> + <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>--> @@ -207,7 +217,7 @@ </el-row> <el-row> <el-col :span="20"> - <el-form-item label="支撑方向_防灾减灾救灾" prop="supportDirectionPrevention"> + <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>--> @@ -231,11 +241,11 @@ </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.resumeList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'简历')" :before-remove="beforeRemove"> - <el-icon><Plus /></el-icon> + <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">上传jpg/png图片尺寸小于5M,最多可上传5张</div> + <div class="el-upload__tip">上传pdf格式文件尺寸小于5M,最多可上传5份</div> </template> </el-upload> </el-form-item> @@ -279,7 +289,7 @@ </el-row> <el-row> <el-col :span="20"> - <el-form-item label="专家本人意见"> + <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> @@ -291,7 +301,7 @@ </el-row> <el-row> <el-col :span="20"> - <el-form-item label="推荐单位意见"> + <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> @@ -308,9 +318,68 @@ </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 w-full :src="state.dialogImageUrl" alt=""> + <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> + <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> + </span> + </template> </el-dialog> </div> <template #footer> @@ -319,32 +388,60 @@ <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="assess(3)" v-preReClick>评定驳回</el-button> - <el-button type="primary" @click="assess(2)" size="default" v-preReClick>评定通过</el-button> + <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> <script setup> -import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue' +import {reactive, ref, toRefs, defineEmits, nextTick, onMounted, getCurrentInstance} from 'vue' import {ElMessage, ElMessageBox} from "element-plus" 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 {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() -var validatePass = (rule, value, callback) => { - if (state.fileList.length == 0) { - callback(new Error('请上传证件照')); +const assessFormRef = ref() +const { proxy } = getCurrentInstance() +let validatePass = (rule, value, callback) => { + if (state.resumeList.length == 0) { + callback(new Error('请上传工作简历')); } else { callback(); } } + +let validateEvidence = (rule, value, callback) => { + if (state.evidenceList.length == 0) { + callback(new Error('请上传证明材料')); + } else { + callback(); + } +} + +let validateOneOfTwo = (rule, value, callback) => { + if (state.proAdviceList.length == 0 && state.adviceList.length == 0) { + callback(new Error('专家本人意见和推荐单位意见须至少上传一项')); + } else { + callback(); + } +} + +let validateOneOfThree = (rule, value, callback) => { + 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 === ''){ callback(new Error('请输入手机号')) @@ -369,13 +466,13 @@ } const state = reactive({ + assessDialog: false, form:{ id: null, name:'', sex:'', - profession: [], - bigClassify:null, - smallClassify: null, + domain: '', + deptId: null, birthday: '', phone:'', title: '', @@ -396,6 +493,7 @@ supportDirectionSafety: [], supportDirectionPrevention: [], supportDirectionEmergency: [], + evidence: '', resumeKey: '', paperSituationKey: '', rewardKey: '', @@ -405,9 +503,14 @@ remark: '', source: 2 }, + assessForm: { + employTime: [], + ratingLevel: '' + }, hasDeleteFile: false, disable: false, expertsType: [], + deptList: [], directionList: [ { value: 1, @@ -430,11 +533,12 @@ label: '其他' } ], - uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile', + uploadUrl: import.meta.env.VITE_APP_BASE_API + '/common/upload', header: { Authorization: 'Bearer ' + getToken() }, fileList: [], + evidenceList: [], resumeList: [], inventionList: [], rewardList: [], @@ -445,15 +549,23 @@ rules:{ name:[{ required: true, message: '请填写姓名', trigger: 'blur' }], sex:[{ required: true, message: '请选择性别', trigger: 'blur' }], - profession: [{ 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' }], - electronicPhoto: [{ required: true,validator: validatePass, 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' }] } }) @@ -463,98 +575,132 @@ const openDialog = (type, value) => { state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='view' ?'查看':'评定' getExpertsType() - 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] - } - } - state.form.profession[0] = val.bigClassify - state.form.profession[1] = val.smallClassify - if(val.supportDirectionSafety){ - state.form.supportDirectionSafety = val.supportDirectionSafety.split(',').map(i=>Number(i)) - } - if(val.supportDirectionPrevention){ - state.form.supportDirectionPrevention = val.supportDirectionPrevention.split(',').map(i=>Number(i)) - } - if(val.supportDirectionEmergency){ - state.form.supportDirectionEmergency = val.supportDirectionEmergency.split(',').map(i=>Number(i)) - } - state.fileList.push({ - name: state.form.electronicPhoto, - url: import.meta.env.VITE_APP_BASE_API + '/' + state.form.electronicPhoto, - }) - if(state.form.resumeKey !== ''){ - state.resumeList = state.form.resumeKey.split(',').map(i=>{ - return { - name: i, - url: import.meta.env.VITE_APP_BASE_API + '/' + i, - } - }) - } - if(state.form.paperSituationKey !== ''){ - state.inventionList = state.form.paperSituationKey.split(',').map(i=>{ - return { - name: i, - url: import.meta.env.VITE_APP_BASE_API + '/' + i, - } - }) - } - if(state.form.rewardKey !== ''){ - state.rewardList = state.form.rewardKey.split(',').map(i=>{ - return { - name: i, - url: import.meta.env.VITE_APP_BASE_API + '/' + i, - } - }) - } - if(state.form.achievementKey !== ''){ - state.achievementList = state.form.achievementKey.split(',').map(i=>{ - return { - name: i, - url: import.meta.env.VITE_APP_BASE_API + '/' + i, - } - }) - } - if(state.form.personalOpinionKey !== ''){ - state.proAdviceList = state.form.personalOpinionKey.split(',').map(i=>{ - return { - name: i, - url: import.meta.env.VITE_APP_BASE_API + '/' + i, - } - }) - } - if(state.form.recommendUnitOpinionKey !== ''){ - state.adviceList = state.form.recommendUnitOpinionKey.split(',').map(i=>{ - return { - name: i, - url: import.meta.env.VITE_APP_BASE_API + '/' + i, - } - }) + 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.message) + 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, + } + }) + } } - }) - if(type == 'edit'){ - state.disable = false + 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 = false - dialogVisible.value = true + 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)=>{ @@ -567,18 +713,34 @@ type: 'warning', }) .then(async() => { - const res = await changeApprove({id:state.form.id,state: num}) + 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.message + message: res.msg }); } }) @@ -595,6 +757,12 @@ }); } } + +function getDepList() { + listOutDept({}).then(response => { + state.deptList = proxy.handleTree(response.data, "deptId",'parentId','children'); + }); +} const professionChange=(value)=> { console.log(value,'val') @@ -628,9 +796,9 @@ const handleAvatarSuccess = (res, uploadFile,type) => { if(res.code == 200){ if(type == '证件照'){ - state.form.electronicPhoto = res.data.path + state.form.electronicPhoto = res.url }else{ - uploadFile.name = res.data.path + uploadFile.name = res.url } }else{ ElMessage({ @@ -641,64 +809,62 @@ } const handleRemove = (file, uploadFiles,type) => { - 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.message - }) - } - }) + 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)=> { if (!formEl) return await formEl.validate(async (valid, fields) => { if (valid) { - if(state.form.supportDirectionSafety.length==0&&state.form.supportDirectionSafety.length==0&&state.form.supportDirectionSafety.length==0){ - ElMessage.warning('请至少选择一种支撑方向') - return - } let data = JSON.parse(JSON.stringify(state.form)) - data.supportDirectionSafety = data.supportDirectionSafety.join(',') - data.supportDirectionPrevention = data.supportDirectionPrevention.join(',') - data.supportDirectionEmergency = data.supportDirectionEmergency.join(',') - data.bigClassify = data.profession[0] - data.smallClassify = data.profession[1] + 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){ - ElMessage.success(res.message) + ElMessage.success(res.msg) state.fileList = [] + state.evidenceList = [] state.resumeList = [] state.inventionList = [] state.rewardList = [] @@ -709,13 +875,14 @@ state.hasDeleteFile = false dialogVisible.value = false }else{ - ElMessage.warning(res.message) + ElMessage.warning(res.msg) } }else{ const res= await modExpertInfo(data) if(res.code == 200){ - ElMessage.success(res.message) + ElMessage.success(res.msg) state.fileList = [] + state.evidenceList = [] state.resumeList = [] state.inventionList = [] state.rewardList = [] @@ -726,13 +893,33 @@ state.hasDeleteFile = false dialogVisible.value = false }else{ - ElMessage.warning(res.message) + ElMessage.warning(res.msg) } } } else { ElMessage.warning('请完善必填信息') } }) +} + +const assessSubmit = async (formEl)=> { + if (!formEl) return + await formEl.validate(async (valid, fields) => { + if (valid) { + await assess(2) + }else { + ElMessage.warning('请完善必填信息') + } + }) +} + +const closeAssess = ()=>{ + assessFormRef.value.clearValidate() + state.assessForm = { + employTime: [], + ratingLevel: '' + } + state.assessDialog = false; } const handleClose = () => { @@ -742,9 +929,8 @@ id: null, name:'', sex:'', - profession: [], - bigClassify:null, - smallClassify: null, + domain: '', + deptId: null, birthday: '', phone:'', title: '', @@ -765,6 +951,7 @@ supportDirectionSafety: [], supportDirectionPrevention: [], supportDirectionEmergency: [], + evidence: '', resumeKey: '', paperSituationKey: '', rewardKey: '', @@ -775,6 +962,7 @@ source: 2 } state.fileList = [] + state.evidenceList = [] state.resumeList = [] state.inventionList = [] state.rewardList = [] -- Gitblit v1.9.2