From c8604a7dab3c43127905c647c90eb10a63491354 Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: Fri, 05 Jun 2026 14:34:10 +0800
Subject: [PATCH] 学历上传
---
src/views/safetyReview/expertManage/fillForm/index.vue | 131 ++++++++++++++++++++++++++++---------------
1 files changed, 85 insertions(+), 46 deletions(-)
diff --git a/src/views/safetyReview/expertManage/fillForm/index.vue b/src/views/safetyReview/expertManage/fillForm/index.vue
index fbcb06c..08e2539 100644
--- a/src/views/safetyReview/expertManage/fillForm/index.vue
+++ b/src/views/safetyReview/expertManage/fillForm/index.vue
@@ -85,19 +85,39 @@
<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" :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-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="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'证明')">
<el-icon><Plus /></el-icon>
<template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+ <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传8张</div>
</template>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
+ <el-col :span="20">
+ <el-form-item label="学历证明" prop="academicCertificate">
+ <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='5'
+ v-model:file-list="state.academicCertificateList" list-type="picture-card" :before-upload="picSize"
+ :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'学历')"
+ :before-remove="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'学历')">
+ <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-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="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'证件照')">
<el-icon><Plus /></el-icon>
<template #tip>
<div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
@@ -239,10 +259,10 @@
<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" :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-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="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'简历')">
<el-button type="primary">点击上传</el-button>
<template #tip>
- <div class="el-upload__tip">上传pdf格式文件尺寸小于5M,最多可上传5份</div>
+ <div class="el-upload__tip">上传pdf格式文件尺寸小于5M,最多可上传8份</div>
</template>
</el-upload>
</el-form-item>
@@ -251,10 +271,10 @@
<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.inventionList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'著作')" :before-remove="beforeRemove">
+ <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.inventionList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'著作')" :before-remove="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'著作')">
<el-icon><Plus /></el-icon>
<template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+ <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传8张</div>
</template>
</el-upload>
</el-form-item>
@@ -263,10 +283,10 @@
<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.rewardList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'奖励')" :before-remove="beforeRemove">
+ <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.rewardList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'奖励')" :before-remove="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'奖励')">
<el-icon><Plus /></el-icon>
<template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+ <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传8张</div>
</template>
</el-upload>
</el-form-item>
@@ -275,10 +295,10 @@
<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.achievementList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'研究')" :before-remove="beforeRemove">
+ <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.achievementList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'研究')" :before-remove="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'研究')">
<el-icon><Plus /></el-icon>
<template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+ <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传8张</div>
</template>
</el-upload>
</el-form-item>
@@ -287,10 +307,10 @@
<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-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="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'本人')">
<el-icon><Plus /></el-icon>
<template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+ <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传8张</div>
</template>
</el-upload>
</el-form-item>
@@ -299,10 +319,10 @@
<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-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="(uploadFile, uploadFiles)=>beforeRemove(uploadFile, uploadFiles,'单位')">
<el-icon><Plus /></el-icon>
<template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
+ <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传8张</div>
</template>
</el-upload>
</el-form-item>
@@ -349,6 +369,14 @@
let validateEvidence = (rule, value, callback) => {
if (state.evidenceList.length == 0) {
callback(new Error('请上传证明材料'));
+ } else {
+ callback();
+ }
+}
+
+let validateAcademicCertificate = (rule, value, callback) => {
+ if (state.academicCertificateList.length == 0) {
+ callback(new Error('请上传学历证明'));
} else {
callback();
}
@@ -423,6 +451,7 @@
supportDirectionPrevention: [],
supportDirectionEmergency: [],
evidence: '',
+ academicCertificate: '',
resumeKey: '',
paperSituationKey: '',
rewardKey: '',
@@ -463,6 +492,7 @@
},
fileList: [],
evidenceList: [],
+ academicCertificateList: [],
resumeList: [],
inventionList: [],
rewardList: [],
@@ -479,6 +509,7 @@
phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
title: [{ required: true, message: '请填写职称', trigger: 'blur' }],
evidence: [{ required: true,validator: validateEvidence, trigger: 'blur' }],
+ academicCertificate: [{required: true, validator: validateAcademicCertificate, trigger: 'blur'}],
resumeKey: [{ required: true,validator: validatePass, trigger: 'blur' }],
recommendUnitOpinionKey: [{ required: true,validator: validateOneOfTwo, trigger: 'blur' }],
idCard: [{ required: true, validator: verifyId, trigger: 'blur' }],
@@ -581,39 +612,44 @@
})
}
}
-
- const handleRemove = (file, uploadFiles,type) => {
- 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: '文件已删除'
- })
- } else {
- ElMessage({
- type: 'warning',
- message: res.msg
- })
- }
- })
+const beforeRemove = (uploadFile, uploadFiles, type) => {
+ return ElMessageBox.confirm(
+ '该操作将永久删除此文件内容,是否继续?',
+ '提示',
+ {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
}
+ ).then(
+ () => true,
+ () => false
+ )
+}
+
+const handleRemove = async(file, uploadFiles, type) => {
+ if (file && file.status == 'success') {
+ 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
@@ -627,6 +663,7 @@
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.academicCertificate = state.academicCertificateList.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(',')
@@ -666,6 +703,7 @@
supportDirectionPrevention: [],
supportDirectionEmergency: [],
evidence: '',
+ academicCertificate: '',
resumeKey: '',
paperSituationKey: '',
rewardKey: '',
@@ -677,6 +715,7 @@
}
state.fileList = []
state.evidenceList = []
+ state.academicCertificateList = []
state.resumeList = []
state.inventionList = []
state.rewardList = []
--
Gitblit v1.9.2