From b215fb6dfd4ede3cb1b08985bb04ef5803a52454 Mon Sep 17 00:00:00 2001 From: zhouwenxuan <1175765986@qq.com> Date: 星期三, 17 一月 2024 16:32:12 +0800 Subject: [PATCH] bug修改 --- src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue | 181 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 158 insertions(+), 23 deletions(-) diff --git a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue index dc08874..e0a22b9 100644 --- a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue +++ b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue @@ -3,20 +3,20 @@ <el-dialog v-model="dialogVisible" :title="state.title" - width="830px" + width="900px" :before-close="handleClose" > - <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="110px" > + <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" > <el-row :gutter="22"> <el-col :span="11"> <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.name" ></el-input> + <el-input v-model.trim="state.form.name" placeholder="请输入姓名"></el-input> </el-form-item> </el-col> <el-col :span="11"> <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.phone" :maxlength="11" ></el-input> + <el-input v-model.trim="state.form.phone" :maxlength="11" placeholder="手机号"></el-input> </el-form-item> </el-col> @@ -24,7 +24,7 @@ <el-row :gutter="22"> <el-col :span="11"> <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.username" :disabled="state.title === '编辑'"></el-input> + <el-input v-model.trim="state.form.username" :disabled="state.title === '编辑'" placeholder="请输入用户名"></el-input> </el-form-item> </el-col> <el-col :span="11"> @@ -39,7 +39,7 @@ <el-row :gutter="22"> <el-col :span="11"> <el-form-item label="所属机构:" prop="agencyId" v-if="state.title !== '修改密码'"> - <el-select v-model="state.form.agencyId" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown" @change="selectChange" > + <el-select v-model="state.form.agencyId" style="width: 100%" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown" > <el-option v-for="item in state.agencyList" :key="item.id" @@ -51,20 +51,40 @@ </el-col> <el-col :span="11"> <el-form-item label="职务:" prop="post" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.post" :maxlength="11" ></el-input> +<!-- <el-input v-model.trim="state.form.post" :maxlength="11" ></el-input>--> + <el-select v-model="state.form.post" class="m-2" style="width: 100%" placeholder="请选择职务" popper-class="more_select_dropdown" > + <el-option + v-for="item in state.postList" + :key="item.id" + :label="item.name" + :value="item.name" + /> + </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="22"> <el-col :span="11"> <el-form-item label="职称:" prop="jobTitle" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.jobTitle" :maxlength="11" ></el-input> + <el-input v-model.trim="state.form.jobTitle" :maxlength="11" placeholder="请输入职称"></el-input> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="专业方向:" prop="major" v-if="state.title !== '修改密码'"> - <el-input v-model.trim="state.form.major" :maxlength="11" ></el-input> + <el-form-item label="专业方向:" prop="majorShow" v-if="state.title !== '修改密码'" > + <el-select v-model="state.form.majorShow" value-key="id" class="m-2" style="width: 100%" multiple placeholder="请选择专业方向" popper-class="more_select_dropdown" @change="selectChange"> + <el-option + v-for="item in state.majorList" + :key="item.id" + :label="item.label" + :value="item" + /> + </el-select> </el-form-item> + <div v-for="(item,index) in state.form.majorShow" :key="item.id" style="margin-bottom: 20px" > + <el-form-item :label="item.label+'证书编号:'" > + <el-input v-model="item.certificateNo" :placeholder="'请输入'+item.label+'证书编号'"></el-input> + </el-form-item> + </div> </el-col> </el-row> <el-row :gutter="22"> @@ -79,12 +99,29 @@ </el-form-item> </el-col> </el-row> - <el-form-item label="专家类型:" prop="expertType" v-if="state.title !== '修改密码'"> + <el-row :gutter="22"> + <el-col :span="11"> + <el-form-item label="专家类型:" prop="expertType" v-if="state.title !== '修改密码'"> <el-radio-group v-model="state.form.expertType" class="ml-4"> - <el-radio :label="1" >安全评价</el-radio> - <el-radio :label="2" >检验检测</el-radio> + <el-radio :label="1" >安全评价</el-radio> + <el-radio :label="2" >检验检测</el-radio> </el-radio-group> - </el-form-item> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="评价师等级:" prop="level" v-if="state.title !== '修改密码'"> + <el-select v-model="state.form.level" class="m-2" style="width: 100%" placeholder="请选择评价师等级" popper-class="more_select_dropdown" > + <el-option + v-for="item in state.levelList" + :key="item.id" + :label="item.name" + :value="item.name" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-form-item prop="socialAttach" label="社保:" v-if="state.title !== '修改密码'"> <el-upload @@ -170,6 +207,7 @@ import {resetUserPwd} from "../../../../../api/sysUsers"; import {getToken} from "@/utils/auth"; import {getInsitutionList} from "@/api/backManage/insitution"; +import {getDictList} from "@/api/backManage/evaluate"; const emit = defineEmits(["getList"]); const dialogVisible = ref(false) @@ -267,6 +305,8 @@ salaryAttach: [], post: '', jobTitle: '', + level: '', + majorShow: [], major: '', expertType: 1, password: '', @@ -281,10 +321,11 @@ password: [{ required: true, validator: validatePwd, trigger: 'blur' }], confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }], phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }], - post: [{ required: true, message: '请输入职务', trigger: 'blur' }], + post: [{ required: true, message: '请选择职务', trigger: 'change' }], jobTitle:[{ required: true, message: '请输入职称', trigger: 'blur' }], - major:[{ required: true, message: '请输入专业方向', trigger: 'blur' }], - // agencyId: [{ required: true, message: '请选择所属机构', trigger: 'blur' }], + level: [{ required: true, message: '请选择评价师等级', trigger: 'change' }], + majorShow:[{ required: true, message: '请选择专业方向', trigger: 'change' }], + agencyId: [{ required: true, message: '请选择所属机构', trigger: 'change' }], socialAttach: [{required: true, trigger: "blur", message: "请上传社保图片"}], medicalAttach: [{required: true, trigger: "blur", message: "请上传医保图片"}], salaryAttach: [{required: true, trigger: "blur", message: "请上传工资清单"}], @@ -299,10 +340,52 @@ dialogImg: false, pageNum: 1, pageSize: 10, + postList: [ + { + id: '1', + name: '法人' + }, + { + id: '2', + name: '过程控制负责人' + }, + { + id: '3', + name: '机构负责人' + }, + { + id: '4', + name: '技术负责人' + }, + { + id: '5', + name: '员工' + }, + ], + majorList: [], + levelList: [ + { + id: '1', + name: '一级' + }, + { + id: '2', + name: '二级' + }, + { + id: '3', + name: '三级' + }, + { + id: '4', + name: '其他' + }, + ] }) onMounted(()=>{ getAgency() + getMajor() }) const openDialog = async (type, value) => { @@ -333,6 +416,19 @@ name: url.name } }); + const arr = [] + const certificateList = JSON.parse(res.data.certificateNo) + for( let key in certificateList) { + arr.push( { + id: parseInt(key), + certificateNo: certificateList[key], + }) + arr.forEach((item,index) => { + item.label = res.data.majorNames[index] + }) + } + state.form.majorShow = arr; + console.log(state.form.majorShow,'certificateList') }else{ ElMessage.warning(res.message) } @@ -364,9 +460,22 @@ const onSubmit = async () => { const valid = await superRef.value.validate(); if(valid){ + state.form.majorShow.forEach(item => { + if(item.certificateNo == ''){ + ElMessage.warning('请输入对应的证书编号') + return ; + } + }) if(state.title == '新增'){ const {confirmPassword,id,socialList,salaryList,medicalList,...data} = state.form data.password = Base64.encode(data.password) + let obj = {}; + data.majorShow.forEach(item => { + obj[item.id] = item.certificateNo; + }) + data.major = JSON.stringify(obj); + delete data.majorShow; + console.log('data',data) const res = await addExpert(data); if(res.code == 200){ @@ -384,6 +493,14 @@ }else if(state.title == '编辑'){ const {confirmPassword,socialList,salaryList,medicalList,...data} = state.form data.password = Base64.encode(data.password) + let obj = {}; + data.majorShow.forEach(item => { + obj[item.id] = item.certificateNo; + }) + data.major = JSON.stringify(obj); + delete data.majorShow; + delete data.certificateNo; + delete data.majorNames; console.log('editdata',data) const res = await editExpert(data) if(res.code == 200){ @@ -433,7 +550,9 @@ salaryAttach: [], post: '', jobTitle: '', - major: '', + level:'', + majorShow: [], + major:'', expertType: 1, password: '', confirmPassword: '', @@ -441,6 +560,7 @@ state.salaryList = []; state.medicalList = []; state.socialList = []; + state.form.selectMajorList = []; } const picSize = async (rawFile) => { if(rawFile.size / 1024 / 1024 > 5){ @@ -545,6 +665,19 @@ ElMessage.warning(res.message) } } +const getMajor = async () => { + const queryParams = { + pageNum: 1, + pageSize: 50, + dictType: 'sys_major_orientation' + } + const res = await getDictList(queryParams); + if(res.code === 200){ + state.majorList = res.data.list + }else{ + ElMessage.warning(res.message) + } +} @@ -553,14 +686,16 @@ console.log(' 触底了'); // 防抖处理 setTimeout(() => { - if (finshed.value) return //值为true,则代表没有数据了 - state.pageNum += 1 - getAgency() + if (finshed.value) return //值为true,则代表没有数据了 + state.pageNum += 1 + getAgency() }, 500) } + //选中值发生变化时触发 -const selectChange = () => { - console.log('选中的xxxx') +const selectChange = (val) => { + // state.form.selectMajorList= val; + console.log('选中的xxxx',val) } defineExpose({ -- Gitblit v1.9.2