| | |
| | | <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" style="width: 100%" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown" > |
| | | <el-input v-if="isAgency" v-model="state.agencyName" disabled></el-input> |
| | | <el-select v-model="state.form.agencyId" v-else 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-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" |
| | | v-for="item in props.postList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | |
| | | <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" |
| | | v-for="item in props.majorList" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item" |
| | |
| | | <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" |
| | | v-for="item in props.levelList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.name" |
| | |
| | | <div class="el-upload__tip">上传jpg/png图片尺寸小于5M</div> |
| | | </template> |
| | | </el-upload> |
| | | |
| | | </el-form-item> |
| | | <el-form-item prop="idPhoto" label="证件照:" v-if="state.title !== '修改密码'"> |
| | | <el-upload |
| | | accept="image/*" |
| | | :action="state.uploadUrl" |
| | | :headers="state.header" |
| | | method="post" |
| | | :on-change="handleChangePic" |
| | | :on-success="handlePhotoSuccess" |
| | | :on-preview="handlePictureCardPreview" |
| | | v-model:file-list="state.photoList" |
| | | list-type="picture-card" |
| | | :before-upload="picSize" |
| | | :on-remove="handlePhotoRemove" |
| | | :limit="2" |
| | | > |
| | | <el-icon><Plus /></el-icon> |
| | | <template #tip> |
| | | <div class="el-upload__tip">上传jpg/png图片尺寸小于5M</div> |
| | | </template> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer > |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import {reactive, ref, toRefs, defineEmits, onMounted, nextTick} from 'vue' |
| | | import {reactive, ref, toRefs, defineEmits, defineProps, onMounted, nextTick} from 'vue' |
| | | import { View } from "@element-plus/icons-vue"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate"; |
| | |
| | | import {getToken} from "@/utils/auth"; |
| | | import {getInsitutionList} from "@/api/backManage/insitution"; |
| | | import {getDictList} from "@/api/backManage/evaluate"; |
| | | import Cookies from "js-cookie"; |
| | | |
| | | const emit = defineEmits(["getList"]); |
| | | const props = defineProps(['majorList','levelList','postList']) |
| | | const dialogVisible = ref(false) |
| | | const superRef = ref(null) |
| | | |
| | |
| | | socialAttach: [], |
| | | medicalAttach: [], |
| | | salaryAttach: [], |
| | | idPhoto: '', |
| | | post: '', |
| | | jobTitle: '', |
| | | level: '', |
| | |
| | | password: '', |
| | | confirmPassword: '', |
| | | }, |
| | | agencyName:'', |
| | | socialList: [], |
| | | medicalList: [], |
| | | salaryList: [], |
| | | photoList: [], |
| | | formRules:{ |
| | | name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
| | | username: [{ required: true, validator: validateUsername, trigger: 'blur' }], |
| | |
| | | socialAttach: [{required: true, trigger: "blur", message: "请上传社保图片"}], |
| | | medicalAttach: [{required: true, trigger: "blur", message: "请上传医保图片"}], |
| | | salaryAttach: [{required: true, trigger: "blur", message: "请上传工资清单"}], |
| | | idPhoto: [{required: true, trigger: "blur", message: "请上传近期证件照"}], |
| | | }, |
| | | areaList: [], |
| | | agencyList: [], |
| | |
| | | dialogImageUrl: '', |
| | | 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: '其他' |
| | | }, |
| | | ] |
| | | pageSize: 10 |
| | | }) |
| | | |
| | | const isAgency = ref(false); |
| | | onMounted(()=>{ |
| | | getAgency() |
| | | getMajor() |
| | | const userInfo = JSON.parse(Cookies.get('userInfo')) |
| | | state.agencyName = userInfo.agentName; |
| | | state.form.agencyId = userInfo.agentId; |
| | | if(userInfo.identity === 1){ |
| | | isAgency.value = true; |
| | | } |
| | | console.log("userinfo",userInfo) |
| | | }) |
| | | |
| | | 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] |
| | | }) |
| | | const obj = { |
| | | url: import.meta.env.VITE_APP_BASE_API +'/'+ res.data.idPhoto |
| | | } |
| | | state.form.majorShow = arr; |
| | | console.log(state.form.majorShow,'certificateList') |
| | | state.photoList.push(obj); |
| | | if(res.data.certificateNo){ |
| | | 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 () => { |
| | | let isCode = false; |
| | | const valid = await superRef.value.validate(); |
| | | if(valid){ |
| | | state.form.majorShow.forEach(item => { |
| | | if(item.certificateNo == ''){ |
| | | ElMessage.warning('请输入对应的证书编号') |
| | | return ; |
| | | if(item.certificateNo === undefined || item.certificateNo === ''){ |
| | | isCode = true; |
| | | } |
| | | }) |
| | | if(isCode){ |
| | | ElMessage.warning('请输入对应的证书编号') |
| | | return ; |
| | | } |
| | | if(state.title == '新增'){ |
| | | const {confirmPassword,id,socialList,salaryList,medicalList,...data} = state.form |
| | | data.password = Base64.encode(data.password) |
| | |
| | | state.salaryList = []; |
| | | state.medicalList = []; |
| | | state.socialList = []; |
| | | state.photoList = []; |
| | | dialogVisible.value = false; |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | |
| | | socialAttach: [], |
| | | medicalAttach: [], |
| | | salaryAttach: [], |
| | | idPhoto: '', |
| | | post: '', |
| | | jobTitle: '', |
| | | level:'', |
| | |
| | | state.salaryList = []; |
| | | state.medicalList = []; |
| | | state.socialList = []; |
| | | state.photoList = []; |
| | | state.form.selectMajorList = []; |
| | | } |
| | | const picSize = async (rawFile) => { |
| | |
| | | } |
| | | } |
| | | |
| | | const handlePhotoSuccess = (res,file) => { |
| | | if(res.code == 200){ |
| | | state.form.idPhoto = res.data.path; |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '文件上传失败' |
| | | }) |
| | | } |
| | | } |
| | | const handleChangePic = (file,fileList) => { |
| | | if (fileList.length > 1) { |
| | | state.photoList.splice(0, 1); |
| | | } |
| | | } |
| | | |
| | | const handlePhotoRemove = async (file) => { |
| | | console.log("fileD",file) |
| | | let path = "" |
| | | if(file.response && file.response.data){ |
| | | path = file.response.data.path |
| | | }else { |
| | | const base = import.meta.env.VITE_APP_BASE_API |
| | | path = file.url.substring(base.length+1,file.url.length ) |
| | | } |
| | | const res = await delPic({path: path}) |
| | | if(res.code == 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '文件已删除' |
| | | }) |
| | | state.form.idPhoto = '' |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.message |
| | | }) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //触底函数 |