From 0d5f2c20521598c01bc2a2d6376ab564b5effc2a Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期二, 10 十二月 2024 08:54:59 +0800 Subject: [PATCH] 修改bug --- src/views/safetyReview/expertManage/fillForm/index.vue | 169 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 108 insertions(+), 61 deletions(-) diff --git a/src/views/safetyReview/expertManage/fillForm/index.vue b/src/views/safetyReview/expertManage/fillForm/index.vue index 543b20b..d133eb8 100644 --- a/src/views/safetyReview/expertManage/fillForm/index.vue +++ b/src/views/safetyReview/expertManage/fillForm/index.vue @@ -5,28 +5,29 @@ <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 style="width: 100%" - v-model="state.form.profession" + clearable + 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"> @@ -50,7 +51,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="选择日期"> </el-date-picker> @@ -81,7 +82,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" :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" 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> @@ -105,6 +118,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"></el-input> </el-form-item> </el-col> </el-row> @@ -166,13 +186,6 @@ </el-row> <el-row> <el-col :span="20"> - <el-form-item label="最高学历" prop="degree"> - <el-input v-model="state.form.degree"></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"></el-input> </el-form-item> @@ -187,7 +200,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>--> @@ -199,7 +212,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>--> @@ -223,11 +236,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" :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" :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> @@ -271,8 +284,8 @@ </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" :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-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> @@ -283,8 +296,8 @@ </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" :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-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> @@ -318,16 +331,43 @@ import {delPic} from "@/api/login" import { getToken } from "@/utils/auth" import {Base64} from "js-base64" +import {listDept, listOutDept} from "@/api/system/dept"; +const { proxy } = getCurrentInstance(); const imgDialog = ref(false) const ruleFormRef = ref() -var validatePass = (rule, value, callback) => { - if (state.fileList.length == 0) { - callback(new Error('请上传证件照')); +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('请输入手机号')) @@ -355,9 +395,8 @@ form:{ name:'', sex:'', - profession: [], - bigClassify:null, - smallClassify: null, + domain: '', + deptId: null, birthday: '', phone:'', title: '', @@ -378,6 +417,7 @@ supportDirectionSafety: [], supportDirectionPrevention: [], supportDirectionEmergency: [], + evidence: '', resumeKey: '', paperSituationKey: '', rewardKey: '', @@ -388,6 +428,7 @@ source: 1 }, expertsType: [], + deptList: [], directionList: [ { value: 1, @@ -410,11 +451,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: [], @@ -425,12 +467,16 @@ 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' }] @@ -439,6 +485,7 @@ onMounted(()=>{ getExpertsType() + getDepList() }) const getExpertsType = async ()=>{ @@ -451,6 +498,12 @@ message: res.message }); } + } + + function getDepList() { + listOutDept({}).then(response => { + state.deptList = proxy.handleTree(response.data, "deptId",'parentId','children'); + }); } const professionChange=(value)=> { @@ -485,9 +538,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({ @@ -523,7 +576,7 @@ } else { ElMessage({ type: 'warning', - message: res.message + message: res.msg }) } }) @@ -534,33 +587,25 @@ 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 delete data.id const res= await addExpertInfo(data) if(res.code == 200){ - ElMessage.success(res.message) + ElMessage.success(res.msg) state.form = { name:'', sex:'', - profession: [], - bigClassify:null, - smallClassify: null, + domain: '', birthday: '', phone:'', title: '', @@ -581,6 +626,7 @@ supportDirectionSafety: [], supportDirectionPrevention: [], supportDirectionEmergency: [], + evidence: '', resumeKey: '', paperSituationKey: '', rewardKey: '', @@ -591,6 +637,7 @@ source: 1 } state.fileList = [] + state.evidenceList = [] state.resumeList = [] state.inventionList = [] state.rewardList = [] @@ -598,7 +645,7 @@ state.proAdviceList = [] state.adviceList = [] }else{ - ElMessage.warning(res.message) + ElMessage.warning(res.msg) } } else { ElMessage.warning('请完善必填信息') -- Gitblit v1.9.2