| New file |
| | |
| | | <template> |
| | | <div class="notice"> |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="state.title" |
| | | width="50%" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" > |
| | | <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.username" disabled placeholder="请输入用户名" ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.name" disabled placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="性别:" prop="sex" v-if="state.title !== '修改密码'"> |
| | | <el-radio-group v-model="state.form.sex" disabled> |
| | | <el-radio :label="0">男</el-radio> |
| | | <el-radio :label="1">女</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="年龄:" prop="age" v-if="state.title !== '修改密码'">--> |
| | | <!-- <el-input v-model.number.trim="state.form.age" type="number" :disabled="disabled" placeholder="请输入年龄"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="学历:" prop="qualification" v-if="state.title !== '修改密码'"> |
| | | <el-select |
| | | v-model="state.form.qualification" |
| | | :disabled="disabled" |
| | | placeholder="请选择学历" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in state.quaList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="身份证号:" prop="idCard" v-if="state.title !== '修改密码'"> |
| | | <el-input v-model.trim="state.form.idCard" :maxlength="18" :disabled="disabled" placeholder="请输入身份证号"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'" > |
| | | <el-input v-model.trim="state.form.phone" :maxlength="11" disabled placeholder="请输入手机号"></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="用户类型:" v-if="state.title !== '修改密码'" prop="userType">--> |
| | | <!-- <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType">--> |
| | | <!-- <el-radio :label="0">系统管理员</el-radio>--> |
| | | <!-- <el-radio :label="6">企业管理员</el-radio>--> |
| | | <!-- <el-radio :label="1">企业用户</el-radio>--> |
| | | <!-- </el-radio-group>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && state.form.userType !== 0">--> |
| | | <!-- <el-select--> |
| | | <!-- clearable--> |
| | | <!-- v-if="state.isAdmin"--> |
| | | <!-- v-model="state.form.companyName"--> |
| | | <!-- filterable--> |
| | | <!-- :disabled="disabled || (state.title =='编辑' && state.form.userType !== 0)"--> |
| | | <!-- remote--> |
| | | <!-- @change="selectValue"--> |
| | | <!-- reserve-keyword--> |
| | | <!-- placeholder="请输入单位名称"--> |
| | | <!-- remote-show-suffix--> |
| | | <!-- :remote-method="getCompanyList"--> |
| | | <!-- :loading="loading"--> |
| | | <!-- style="width: 240px"--> |
| | | <!-- >--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in state.companyList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :label="item.name"--> |
| | | <!-- :value="item.name"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="部门:" prop="deptId" v-if="state.title !== '修改密码' && state.form.userType !== 0">--> |
| | | <!-- <el-select--> |
| | | <!-- clearable--> |
| | | <!-- v-model="state.form.deptId"--> |
| | | <!-- filterable--> |
| | | <!-- :disabled="disabled"--> |
| | | <!-- placeholder="请选择部门"--> |
| | | <!-- style="width: 100%"--> |
| | | <!-- @change="getParentId"--> |
| | | <!-- >--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in state.deptList"--> |
| | | <!-- :key="item.deptId"--> |
| | | <!-- :label="item.deptName"--> |
| | | <!-- :value="item.deptId"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="专业:" prop="post" v-if="state.title !== '修改密码' && state.form.userType !== 0">--> |
| | | <!-- <el-input v-model.trim="state.form.post" :disabled="disabled" placeholder="请输入专业"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="职称:" prop="positional" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-radio-group v-model="state.form.positional" :disabled="disabled"> |
| | | <el-radio label="1">初级</el-radio> |
| | | <el-radio label="2">中级</el-radio> |
| | | <el-radio label="3">高级</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="岗位类别:" prop="personType" v-if="state.title !== '修改密码' && state.form.userType !== 0">--> |
| | | <!-- <el-radio-group v-model="state.form.personType" :disabled="disabled">--> |
| | | <!-- <el-radio :label="1">技术</el-radio>--> |
| | | <!-- <el-radio :label="2">管理</el-radio>--> |
| | | <!-- <el-radio :label="3">行政</el-radio>--> |
| | | <!-- <el-radio :label="4">特殊作业</el-radio>--> |
| | | <!-- </el-radio-group>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="岗位名称:" prop="duty" v-if="state.title !== '修改密码' && state.form.userType !== 0">--> |
| | | <!-- <el-input v-model.trim="state.form.duty" :disabled="disabled" placeholder="请输入岗位名称"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="岗位职责:" prop="duties" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-input v-model.trim="state.form.duties" :disabled="disabled" placeholder="请输入岗位职责"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="专业岗位工作年限:" prop="seniority" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-input v-model.number.trim="state.form.seniority" type="number" :disabled="disabled" placeholder="请输入专业岗位工作年限"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="资格资质要求:" prop="qualificationRequirements" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-input v-model.trim="state.form.qualificationRequirements" :disabled="disabled" placeholder="请输入资格资质要求"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="证书情况:" prop="certificate" v-if="state.title !== '修改密码' && state.form.userType !== 0"> |
| | | <el-upload accept=".pdf,image/*" :action="state.uploadUrl" :disabled="disabled" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" > |
| | | <el-button type="primary">点击上传</el-button> |
| | | <template #tip> |
| | | <div class="el-upload__tip">支持上传pdf、图片格式,尺寸小于5M,最多可上传15份</div> |
| | | </template> |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item label="入职时间:" prop="entryTime" v-if="state.title !== '修改密码' && state.form.userType !== 0" > |
| | | <el-date-picker |
| | | v-model="state.form.entryTime" |
| | | type="date" |
| | | :disabled="disabled" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择入职时间" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="离职时间:" prop="resignTime" v-if="state.title !== '修改密码' && state.form.userType !== 0" > |
| | | <el-date-picker |
| | | v-model="state.form.resignTime" |
| | | type="date" |
| | | :disabled="disabled" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择离职时间" |
| | | /> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'">--> |
| | | <!-- <el-input v-model.trim="state.form.password" type="password" show-password placeholder="请输入密码"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="重复密码:" prop="confirmPassword" v-if="state.title == '新增' || state.title == '修改密码'">--> |
| | | <!-- <el-input v-model.trim="state.form.confirmPassword" type="password" show-password placeholder="请输入确认密码"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="角色:" prop="roles" v-if="state.title !== '修改密码'">--> |
| | | <!-- <el-select--> |
| | | <!-- clearable--> |
| | | <!-- v-model="state.form.roles"--> |
| | | <!-- filterable--> |
| | | <!-- :disabled="disabled"--> |
| | | <!-- placeholder="请选择角色"--> |
| | | <!-- multiple--> |
| | | <!-- style="width: 100%"--> |
| | | <!-- >--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in state.roleList"--> |
| | | <!-- :key="item.roleId"--> |
| | | <!-- :label="item.roleName"--> |
| | | <!-- :value="item.roleId"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | </el-form> |
| | | <template #footer v-if="state.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, defineEmits, nextTick, onMounted} from 'vue' |
| | | import { View } from "@element-plus/icons-vue"; |
| | | import scorllSelect from '@/components/scrollSelect/index.vue' |
| | | import {ElMessage} from "element-plus"; |
| | | import {verifyPhone, verifyPwd, verifyUsername,verifyIdCard} from "@/utils/validate"; |
| | | import { checkUserName, checkPhone } from "@/api/login" |
| | | import {addUser, editUser, getUserById, resetPwd, updateEmployeeRecord} from "@/api/onlineEducation/user" |
| | | import {Base64} from "js-base64" |
| | | import {resetUserPwd} from "@/api/sysUsers"; |
| | | import {getInstitutionDetail} from "@/api/backManage/insitution"; |
| | | import {getCompany} from "@/api/onlineEducation/company"; |
| | | import {get} from "@vueuse/core"; |
| | | import {getUser} from "@/api/onlineEducation/user"; |
| | | import {debounce} from "@/utils"; |
| | | import Cookies from "js-cookie"; |
| | | import {getDepart} from "@/api/orgStructure/depart"; |
| | | import {getToken, removeToken} from "@/utils/auth"; |
| | | import {delPic} from "@/api/onlineEducation/banner"; |
| | | const emit = defineEmits(["getList"]); |
| | | const dialogVisible = ref(false) |
| | | const superRef = ref() |
| | | const scrollRef = ref(null) |
| | | |
| | | |
| | | const equalToPassword = (rule, value, callback) => { |
| | | if (state.form.password !== value) { |
| | | callback(new Error("两次输入的密码不一致")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }; |
| | | |
| | | const validateUserPhone = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入手机号')) |
| | | }else{ |
| | | if(!verifyPhone(value)){ |
| | | callback(new Error('手机号格式有误')) |
| | | }else{ |
| | | callback() |
| | | } |
| | | } |
| | | } |
| | | |
| | | const verifyId = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback() |
| | | }else{ |
| | | if(!verifyIdCard(value)){ |
| | | callback(new Error('身份证号格式有误')) |
| | | }else{ |
| | | callback() |
| | | } |
| | | } |
| | | } |
| | | |
| | | let validatePwd = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入密码')) |
| | | }else{ |
| | | if(!verifyPwd(value)){ |
| | | callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间')) |
| | | }else{ |
| | | callback() |
| | | } |
| | | } |
| | | } |
| | | const validateUsername = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入用户名')) |
| | | }else if(state.title == '编辑' && value == startUsername.value){ |
| | | callback() |
| | | }else{ |
| | | if(!verifyUsername(value)){ |
| | | callback(new Error('用户名须使用字母或数字,长度在5-16之间')) |
| | | }else{ |
| | | let param = {} |
| | | if(state.title=='新增/注册') { |
| | | param = { |
| | | username:value |
| | | } |
| | | }else if(state.title=='编辑'){ |
| | | param = { |
| | | username:value, |
| | | id: state.registerForm.id |
| | | } |
| | | } |
| | | callback() |
| | | // checkUserName(param).then((res)=>{ |
| | | // if(res.data == false){ |
| | | // callback(new Error('用户名已被占用,请更换其他用户名')) |
| | | // }else{ |
| | | // callback() |
| | | // } |
| | | // }) |
| | | } |
| | | } |
| | | } |
| | | const checkFileList = (rule, value, callback) => { |
| | | if (state.fileList.length == 0) { |
| | | callback(new Error('请上传证书文件')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const state = reactive({ |
| | | title: '', |
| | | form: { |
| | | id: null, |
| | | employeeId: null, |
| | | name: '', |
| | | phone: '', |
| | | password: '', |
| | | confirmPassword: '', |
| | | username: '', |
| | | userType: null, |
| | | sex: 0, |
| | | companyId: null, |
| | | companyName: '', |
| | | parentId: null, |
| | | entryTime: '', |
| | | resignTime: '', |
| | | idCard: '', |
| | | deptId: null, |
| | | duty: '', |
| | | duties: '', |
| | | seniority: null, |
| | | qualificationRequirements: '', |
| | | certificate: [], |
| | | post: '', |
| | | age: null, |
| | | personType: null, |
| | | qualification: null, |
| | | positional: '', |
| | | roles: [] |
| | | }, |
| | | formRules:{ |
| | | name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
| | | companyName: [{ required: true, message: '请选择所在企业', trigger: 'blur' }], |
| | | // deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | username: [{ required: true, message: '请选择用户名', trigger: 'blur' }], |
| | | password: [{ required: true, validator: validatePwd, trigger: 'blur' }], |
| | | confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }], |
| | | phone: [{ validator: validateUserPhone,required: true, trigger: 'blur' }], |
| | | userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }], |
| | | // idCard: [{ validator: verifyId, trigger: 'blur' }], |
| | | entryTime: [{ required: true, message: '请选择入职时间', trigger: 'blur' }], |
| | | age: [{ required: true, message: '请输入年龄', trigger: 'blur' }], |
| | | personType: [{ required: true, message: '请选择岗位类别', trigger: 'blur' }], |
| | | post: [{ required: true, message: '请输入专业', trigger: 'blur' }], |
| | | qualification: [{ required: true, message: '请选择学历', trigger: 'blur' }], |
| | | positional: [{ required: true, message: '请输入职称', trigger: 'blur' }], |
| | | roles: [{ required: true, message: '请选择角色', trigger: 'blur' }], |
| | | // duties: [{ required: true, message: '请输入岗位职责', trigger: 'blur' }], |
| | | // seniority: [{ required: true, message: '请输入专业岗位工作年限', trigger: 'blur' }], |
| | | // qualificationRequirements: [{ required: true, message: '请输入资格资质要求', trigger: 'blur' }], |
| | | // certificate: [{ required: true, validator: checkFileList, trigger: 'blur' }] |
| | | }, |
| | | companyList: [], |
| | | userList: [], |
| | | roleList: [], |
| | | quaList: [ |
| | | {id: 1, name: '高中及以下'}, |
| | | {id: 2, name: '专科'}, |
| | | {id: 3, name: '本科'}, |
| | | {id: 4, name: '硕士'}, |
| | | {id: 5, name: '博士及以上'} |
| | | ], |
| | | keyword:'', |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | cloading:false, |
| | | totlePage: 0, |
| | | userParam: {}, |
| | | isAdmin: false, |
| | | currentUserType: null, |
| | | uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile', |
| | | header: { |
| | | Authorization: getToken() |
| | | }, |
| | | fileLimit: 15, |
| | | fileList: [] |
| | | |
| | | }) |
| | | const UisMounted = ref(false); |
| | | onMounted(() => { |
| | | UisMounted.value = true; |
| | | |
| | | }); |
| | | const disabled = ref(false); |
| | | const userInfo = ref() |
| | | const openDialog = async (type, value, companyId, isAdmin, companyList, roleList) => { |
| | | state.isAdmin = isAdmin |
| | | state.roleList = roleList |
| | | if(isAdmin){ |
| | | state.companyList = companyList |
| | | } |
| | | state.form.companyId = companyId |
| | | await getdeptList(state.form.companyId) |
| | | console.log(value,'val') |
| | | if(type !== 'view' && type !== 'pwd'){ |
| | | // if(state.isAdmin){ |
| | | // await getCompanyList("") |
| | | // } |
| | | } |
| | | state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ; |
| | | if(type === 'edit' || type === 'view' || type === 'pwd') { |
| | | if( type === 'view'){ |
| | | disabled.value = true |
| | | }else{ |
| | | disabled.value = false |
| | | } |
| | | const res = await getUserById(value.userId); |
| | | if(res.code === 200){ |
| | | Object.keys(state.form).forEach(key => { |
| | | if (key in res.data) { |
| | | state.form[key] = res.data[key] |
| | | } |
| | | }) |
| | | } |
| | | state.form.employeeId = value.employeeId |
| | | state.form.qualification = value.qualification |
| | | state.form.positional = value.positional |
| | | state.form.idCard = value.idCard |
| | | state.form.duty = value.duty |
| | | state.form.duties = value.duties |
| | | state.form.seniority = value.seniority |
| | | state.form.qualificationRequirements = value.qualificationRequirements |
| | | state.form.entryTime = value.entryTime |
| | | state.form.resignTime = value.resignTime |
| | | if(!value.certificate || value.certificate == ''){ |
| | | state.form.certificate = [] |
| | | }else{ |
| | | const certificatePaths = value.certificate.split(',') |
| | | state.form.certificate = certificatePaths |
| | | state.fileList = certificatePaths.map((path, index) => { |
| | | const fileName = path.split('/').pop() || `证书文件${index + 1}` |
| | | return { |
| | | name: fileName, |
| | | url: path, |
| | | response: { |
| | | data: { |
| | | path: path, |
| | | fileName: fileName |
| | | } |
| | | }, |
| | | status: 'success', |
| | | uid: Date.now() + index |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | dialogVisible.value = true |
| | | } |
| | | |
| | | |
| | | const handleAvatarSuccess = (response, uploadFile) => { |
| | | if(response.code === 200){ |
| | | // 设置文件显示名称 |
| | | uploadFile.name = response.data.fileName || `文件${state.fileList.length}` |
| | | uploadFile.url = response.data.url || response.data.path |
| | | ElMessage.success('文件上传成功') |
| | | } else { |
| | | const index = state.fileList.findIndex(file => file.uid === uploadFile.uid) |
| | | if (index > -1) { |
| | | state.fileList.splice(index, 1) |
| | | } |
| | | ElMessage.error(response.message || '文件上传失败') |
| | | } |
| | | } |
| | | |
| | | const showTip =()=>{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '超出文件上传数量' |
| | | }); |
| | | } |
| | | const picSize = async (rawFile) => { |
| | | if(rawFile.size / 1024 / 1024 > 5){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '文件大小不能超过5M' |
| | | }); |
| | | return false |
| | | } |
| | | }; |
| | | const handleRemove = async (file, uploadFiles) => { |
| | | try { |
| | | if (file.response?.data?.path) { |
| | | await delPic({ path: file.response.data.path }) |
| | | ElMessage.success('文件删除成功') |
| | | } |
| | | } catch (error) { |
| | | ElMessage.error('文件删除失败') |
| | | } |
| | | } |
| | | |
| | | |
| | | const finshed = ref(false) |
| | | const loading = ref(false) |
| | | |
| | | const getCompanyList = async ()=>{ |
| | | const queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 999 |
| | | } |
| | | const res = await getCompany(queryParams) |
| | | if (res.code == 200) { |
| | | state.companyList = res.data.list?res.data.list:[] |
| | | // data.queryParams.companyId = data.companyList[0].id |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | |
| | | const getdeptList = async (companyId)=> { |
| | | const params = { |
| | | pageNum: 1, |
| | | pageSize: 999, |
| | | companyId: companyId |
| | | } |
| | | const res = await getDepart(params) |
| | | if(res.code == 200){ |
| | | state.deptList = res.data |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | |
| | | const onSubmit = async () => { |
| | | console.log(state.fileList,state.form.certificate,'99') |
| | | const valid = await superRef.value.validate(); |
| | | if(valid){ |
| | | if((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null)){ |
| | | ElMessage.warning('请选择所属父级账号') |
| | | return; |
| | | } |
| | | if(state.title == '新增'){ |
| | | const {confirmPassword,id,...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.password = Base64.encode(data.password) |
| | | data.roles = data.roles.map((item)=>{ |
| | | return { |
| | | roleId: item, |
| | | roleName: state.roleList.find(i=>i.roleId == item)?.roleName |
| | | } |
| | | }) |
| | | data.certificate = data.certificate.map(i=>i.response.data.path).join(',') |
| | | const res = await updateEmployeeRecord(data) |
| | | if(res.code == 200){ |
| | | ElMessage.success(res.message) |
| | | emit('getList') |
| | | handleClose() |
| | | dialogVisible.value = false; |
| | | }else{ |
| | | |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }else if(state.title == '编辑'){ |
| | | const {confirmPassword,...data} = JSON.parse(JSON.stringify(state.form)) |
| | | data.password = Base64.encode(data.password) |
| | | data.roles = data.roles.map((item)=>{ |
| | | return { |
| | | roleId: item, |
| | | roleName: state.roleList.find(i=>i.roleId == item)?.roleName |
| | | } |
| | | }) |
| | | data.certificate = state.fileList |
| | | .filter(file => file.response?.data?.path) |
| | | .map(file => file.response.data.path) |
| | | .join(',') |
| | | const param = { |
| | | name: data.name, |
| | | sex:data.sex, |
| | | phone: data.phone, |
| | | id:data.id, |
| | | employeeId: data.employeeId, |
| | | companyId: data.companyId, |
| | | deptId: data.deptId, |
| | | userType:data.userType, |
| | | username:data.username, |
| | | password: data.password, |
| | | parentId: data.parentId, |
| | | idCard: data.idCard, |
| | | entryTime: data.entryTime, |
| | | resignTime: data.resignTime, |
| | | duty: data.duty, |
| | | duties: data.duties, |
| | | seniority: data.seniority, |
| | | qualificationRequirements: data.qualificationRequirements, |
| | | certificate: data.certificate, |
| | | post: data.post, |
| | | companyName: data.companyName, |
| | | age: data.age, |
| | | personType: data.personType, |
| | | qualification: data.qualification, |
| | | positional: data.positional, |
| | | roles: data.roles |
| | | } |
| | | |
| | | const res = await updateEmployeeRecord(param) |
| | | if(res.code == 200){ |
| | | ElMessage.success(res.message) |
| | | emit('getList') |
| | | handleClose() |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }else{ |
| | | const {id,password} = state.form |
| | | const data = {id,password} |
| | | data.password = Base64.encode(data.password) |
| | | const res = await resetPwd(data) |
| | | if(res.code == 200){ |
| | | ElMessage.success(res.message) |
| | | removeToken() |
| | | location.href = '/homePage'; |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | const doGetUser = () => { |
| | | const param = { |
| | | userType: state.form.userType-1, |
| | | companyId: state.form.companyId, |
| | | } |
| | | scrollRef.value.getList(param,'change'); |
| | | } |
| | | const changeType = async (val) => { |
| | | if(state.form.userType === 0){ |
| | | state.form.deptId = null |
| | | state.form.parentId = null |
| | | state.form.companyId = null |
| | | state.form.companyName = '' |
| | | state.form.duty = '' |
| | | state.form.post = '' |
| | | state.form.duties= '' |
| | | state.form.seniority = null |
| | | state.form.qualificationRequirements= '' |
| | | state.form.certificate = [] |
| | | state.form.positional = '' |
| | | state.form.entryTime = '' |
| | | state.form.resignTime = '' |
| | | } |
| | | |
| | | //当前是企业级/其他用户选择部门 |
| | | // if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && state.form.userType === 2) || (state.currentUserType === 6 && state.form.userType === 2)){ |
| | | // state.form.parentId = userInfo.value.id; |
| | | // state.form.companyName = userInfo.value.companyName |
| | | // state.form.companyId = userInfo.value.companyId; |
| | | // showChild.value = false; |
| | | // // showCompany.value = true; |
| | | // |
| | | // } else if((state.currentUserType === 1 && state.form.userType === 3) || (state.currentUserType === 4 && state.form.userType === 3)|| (state.currentUserType === 6 && state.form.userType === 3)){ |
| | | // state.form.companyName = userInfo.value.companyName |
| | | // state.form.companyId = userInfo.value.companyId; |
| | | // // showCompany.value = true; |
| | | // showChild.value = true; |
| | | // const param = { |
| | | // userType: 2, |
| | | // companyId: state.form.companyId, |
| | | // } |
| | | // nextTick(() => { |
| | | // scrollRef.value.getList(param,'change'); |
| | | // }) |
| | | // } |
| | | // //当前是部门级选择车间 |
| | | // if((state.currentUserType === 2 && state.form.userType === 3)){ |
| | | // state.form.parentId = userInfo.value.id; |
| | | // state.form.companyName = userInfo.value.companyName |
| | | // state.form.companyId = userInfo.value.companyId; |
| | | // // showCompany.value = true; |
| | | // showChild.value = false; |
| | | // } |
| | | } |
| | | |
| | | const handleClose = () => { |
| | | state.form = { |
| | | id: null, |
| | | employeeId: null, |
| | | name: '', |
| | | phone: '', |
| | | password: '', |
| | | confirmPassword: '', |
| | | username: '', |
| | | userType: null, |
| | | sex: 0, |
| | | companyId: null, |
| | | companyName: '', |
| | | parentId: null, |
| | | entryTime: '', |
| | | resignTime: '', |
| | | idCard: '', |
| | | deptId: null, |
| | | duty: '', |
| | | duties: '', |
| | | seniority: null, |
| | | qualificationRequirements: '', |
| | | certificate: [], |
| | | post: '', |
| | | age: null, |
| | | personType: null, |
| | | qualification: null, |
| | | positional: '', |
| | | roles: [] |
| | | } |
| | | state.userList = []; |
| | | state.companyList = []; |
| | | state.pageNum = 1; |
| | | state.pageSize = 10; |
| | | superRef.value.clearValidate(); |
| | | superRef.value.resetFields() |
| | | dialogVisible.value = false; |
| | | } |
| | | // //触底函数 |
| | | // const loadMore = () => { |
| | | // console.log(' 触底了'); |
| | | // // 防抖处理 |
| | | // setTimeout(() => { |
| | | // if (finshed.value) return //值为true,则代表没有数据了 |
| | | // state.pageNum += 1 |
| | | // getCompanyList('') |
| | | // }, 500) |
| | | // } |
| | | |
| | | const selectValue = (val) => { |
| | | state.form.parentId = null; |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | | } |
| | | }) |
| | | getdeptList(state.form.companyId) |
| | | } |
| | | |
| | | const getParentId = (val)=>{ |
| | | state.form.parentId = null; |
| | | state.deptList.forEach(item => { |
| | | if(item.deptId === val){ |
| | | state.form.deptId = item.deptId |
| | | state.form.parentId = item.parentId |
| | | } |
| | | }) |
| | | } |
| | | const getSelectUser = (val) => { |
| | | state.form.parentId = val; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 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> |