From 49aee4d0b0b71c844f50e34479b7acd07f667f83 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期五, 13 六月 2025 13:46:42 +0800 Subject: [PATCH] 修改 --- src/views/build/conpanyFunctionConsult/companyInfo/qualifications/components/qualificationsDialog.vue | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 232 insertions(+), 0 deletions(-) diff --git a/src/views/build/conpanyFunctionConsult/companyInfo/qualifications/components/qualificationsDialog.vue b/src/views/build/conpanyFunctionConsult/companyInfo/qualifications/components/qualificationsDialog.vue new file mode 100644 index 0000000..a519dfd --- /dev/null +++ b/src/views/build/conpanyFunctionConsult/companyInfo/qualifications/components/qualificationsDialog.vue @@ -0,0 +1,232 @@ +<template> + <div class="notice"> + <el-dialog + v-model="dialogVisible" + :title="title" + width="550px" + :before-close="handleClose" + :close-on-press-escape="false" + :close-on-click-modal="false" + > + <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > + <el-form-item label="取得资质证书名称:" prop="certificateName" > + <el-input v-model="state.form.certificateName" :disabled="title === '查看'" placeholder="请输入取得资质证书名称"/> + </el-form-item> + <el-form-item label="证书编号:" prop="certificateNum" > + <el-input v-model="state.form.certificateNum" :disabled="title === '查看'" placeholder="请输入证书编号"/> + </el-form-item> + <el-form-item label="有效期:" prop="effectiveTime" > + <el-date-picker + :disabled="title === '查看'" + v-model="state.form.effectiveTime" + type="date" + placeholder="请选择截止日期" + style="width: 100%" + value-format="YYYY-MM-DD" + /> + </el-form-item> + <el-form-item label="证书附件:" prop="filePath" > + <el-upload + :disabled="title === '查看'" + style="width: 100%;" + accept=".pdf" + :action="state.uploadUrl" + :headers="state.header" + method="post" + :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" + :on-exceed="showTip" + v-model:file-list="state.fileList" + :on-remove="handleRemove" + :limit='1' + :before-upload="picSize" + > + <el-button type="primary">证书上传</el-button> + <template #tip> + <div class="el-upload__tip">上传文件尺寸小于15M,最多可上传1份</div> + </template> + </el-upload> + </el-form-item> + + </el-form> + <template #footer v-if="title !== '查看'"> + <span class="dialog-footer"> + <el-button @click="handleClose" size="default">取 消</el-button> + <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button> + </span> + </template> + </el-dialog> + </div> +</template> +<script setup> +import {reactive, ref, toRefs} from 'vue' +import Editor from "@/components/Editor/index.vue"; +import {ElMessage, ElMessageBox} from "element-plus"; +import {addNotice} from "@/api/backManage/notice"; +import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate"; +import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company"; +import {verifyPhone} from "@/utils/validate"; +import {getToken} from "@/utils/auth"; +import {addQualification, editQualification} from "@/api/companyInfo/qualifications"; +import Cookies from "js-cookie"; + +const dialogVisible = ref(false); +const title = ref(""); +const busRef = ref(); +const length = ref() +const emit = defineEmits(["getList"]); +const state = reactive({ + form: { + id: '', + companyId: '', + certificateName: '', + certificateNum: '', + effectiveTime: '', + filePath: '', + fileName: '' + }, + formRules:{ + certificateName:[{ required: true, message: '请输入取得资质证书名称', trigger: 'blur' }], + certificateNum:[{ required: true, message: '请输入证书编号', trigger: 'blur' }], + effectiveTime:[{ required: true, message: '请选择截止日期', trigger: 'blur' }], + filePath:[{ required: true, message: '请上传证书', trigger: 'blur' }], + }, + uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile', + header: { + Authorization: getToken() + }, + fileList: [], +}) + + +const openDialog = async (type, value) => { + title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ; + if(type === 'edit' || type === 'review') { + state.form = JSON.parse(JSON.stringify(value)); + const obj = { + path: state.form.filePath, + name: state.form.fileName + } + state.fileList.push(obj) + } + dialogVisible.value = true; +} + +const onSubmit = async () => { + const valid = await busRef.value.validate(); + const userInfo = JSON.parse(Cookies.get('userInfo')) + state.form.companyId = userInfo.companyId + if(valid){ + if(title.value === '新增'){ + const {id, ...data} = JSON.parse(JSON.stringify(state.form)) + const res = await addQualification(data) + if(res.code === 200){ + ElMessage({ + type: 'success', + message: '新增成功' + }); + }else{ + ElMessage.warning(res.message) + } + emit("getList") + busRef.value.clearValidate(); + reset(); + dialogVisible.value = false; + }else if(title.value === '编辑'){ + const {...data} = JSON.parse(JSON.stringify(state.form)) + const res = await editQualification(data) + if(res.code === 200){ + ElMessage({ + type: 'success', + message: '编辑成功' + }); + }else{ + ElMessage.warning(res.message) + } + emit("getList") + busRef.value.clearValidate(); + reset(); + dialogVisible.value = false; + } + } +} + +const handleClose = () => { + busRef.value.clearValidate(); + reset(); + dialogVisible.value = false; + emit("getList") + +} +const handleAvatarSuccess = (res,uploadFile) => { + if(res.code === 200){ + state.form.filePath = state.fileList[0].response.data.path + state.form.fileName = state.fileList[0].response.data.originName + }else { + state.fileList = [] + ElMessage({ + type: 'warning', + message: res.message + }) + } +} +// 上传 +const showTip =()=>{ + ElMessage({ + type: 'warning', + message: '超出文件上传数量' + }); +} + +const picSize = async (rawFile) => { + console.log("111",rawFile.name.length) + if(rawFile.name.length >100){ + ElMessage({ + type: 'warning', + message: '文件名不能超过100字' + }); + return false + } + if(rawFile.size / 1024 / 1024 > 15){ + ElMessage({ + type: 'warning', + message: '文件大小不能超过15M' + }); + return false + } +}; +const handleRemove = async (file, uploadFiles) => { + state.form.filePath = '' + state.form.fileName = '' + state.fileList = [] + +} +const reset = () => { + state.form = { + id: '', + companyId: '', + certificateName: '', + certificateNum: '', + effectiveTime: '', + filePath: '', + fileName: '' + } + state.fileList = []; +} +defineExpose({ + openDialog +}); + +</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; + } +} +</style> -- Gitblit v1.9.2