| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <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" |
| | |
| | | </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"> |
| | |
| | | </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 |
| | |
| | | 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) |
| | |
| | | salaryAttach: [], |
| | | post: '', |
| | | jobTitle: '', |
| | | level: '', |
| | | majorShow: [], |
| | | major: '', |
| | | expertType: 1, |
| | | password: '', |
| | |
| | | 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: "请上传工资清单"}], |
| | |
| | | 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) => { |
| | |
| | | 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) |
| | | } |
| | |
| | | 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){ |
| | |
| | | }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){ |
| | |
| | | salaryAttach: [], |
| | | post: '', |
| | | jobTitle: '', |
| | | major: '', |
| | | level:'', |
| | | majorShow: [], |
| | | major:'', |
| | | expertType: 1, |
| | | password: '', |
| | | confirmPassword: '', |
| | |
| | | state.salaryList = []; |
| | | state.medicalList = []; |
| | | state.socialList = []; |
| | | state.form.selectMajorList = []; |
| | | } |
| | | const picSize = async (rawFile) => { |
| | | if(rawFile.size / 1024 / 1024 > 5){ |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | 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({ |