From dd2bdb18a8394d2f2a13534a98bcadb8020e3668 Mon Sep 17 00:00:00 2001 From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com> Date: 星期三, 23 七月 2025 16:09:33 +0800 Subject: [PATCH] 修改新增 --- src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue | 333 +++++++++++++++++++++++++++---------------------------- 1 files changed, 162 insertions(+), 171 deletions(-) diff --git a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue index fdef075..bb793d3 100644 --- a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue +++ b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue @@ -12,13 +12,26 @@ <el-form-item label="用户名:" prop="username" v-if="state.title !== '修改密码'"> <el-input v-model.trim="state.form.username" :disabled="state.title =='编辑' || state.title =='查看'" 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="disabled" placeholder="请输入公司、部门或者车间岗位名"></el-input> + <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'"> + <el-input v-model.trim="state.form.name" :disabled="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="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="positional" v-if="state.title !== '修改密码'"> + <el-input v-model.trim="state.form.positional" :disabled="disabled" placeholder="请输入职称"></el-input> + </el-form-item> + <el-form-item label="人员类别:" prop="personType" v-if="state.title !== '修改密码'"> + <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-group> </el-form-item> <el-form-item label="身份证号:" prop="idCard" v-if="state.title !== '修改密码'"> @@ -32,6 +45,14 @@ placeholder="请选择入职时间" /> </el-form-item> + <el-form-item label="离职时间:" prop="resignTime" v-if="state.title !== '修改密码'" > + <el-date-picker + v-model="state.form.resignTime" + type="date" + 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> @@ -42,15 +63,16 @@ <el-input v-model.trim="state.form.phone" :maxlength="11" :disabled="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" v-if="state.title == '新增'"> - <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio> - <el-radio :label="1" v-if="state.currentUserType == 0 ">企业级</el-radio> - <el-radio :label="2" v-if="state.currentUserType == 1 ">部门级</el-radio> - <el-radio :label="3" v-if="!state.isAdmin">车间(岗位)级</el-radio> - <el-radio :label="4" v-if="state.currentUserType == 0">其他</el-radio> + <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType" v-if="state.title == '新增' || state.title == '编辑'"> + <el-radio :label="0" v-if="state.currentUserType == 0">系统管理员</el-radio> + <el-radio :label="6" v-if="state.currentUserType == 0 || state.currentUserType == 6 ">企业管理员</el-radio> + <el-radio :label="1" v-if="state.currentUserType == 0 || state.currentUserType == 6 || state.currentUserType ==1">企业用户</el-radio> +<!-- <el-radio :label="2" v-if="state.currentUserType !== 3">部门级</el-radio>--> +<!-- <el-radio :label="3">车间(岗位)级</el-radio>--> +<!-- <el-radio :label="4" v-if="state.currentUserType == 0">其他</el-radio>--> </el-radio-group> - <span v-else-if="state.title == '查看'">{{state.currentUserType === 0 ? '管理员' : state.currentUserType === 1 ? '企业级' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span> - <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '管理员' : state.form.userType === 1 ? '企业级' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span> + <span v-else>{{state.currentUserType === 0 ? '系统管理员' : state.currentUserType === 1 ? '企业用户' : state.currentUserType === 6 ? '企业管理员' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span> +<!-- <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '系统管理员' : state.form.userType === 1 ? '企业用户' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span>--> <!-- <el-radio-group v-model="state.form.userType" :disabled="disabled" @change="changeType" v-else-if="state.title == '编辑'">--> <!-- <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>--> <!-- <el-radio :label="1" >企业级</el-radio>--> @@ -59,13 +81,13 @@ <!-- <el-radio :label="4" >其他</el-radio>--> <!-- </el-radio-group>--> </el-form-item> - <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && showCompany"> + <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 =='编辑'" + :disabled="disabled || (state.title =='编辑' && state.currentUserType !== 0)" remote @change="selectValue" reserve-keyword @@ -103,7 +125,22 @@ </el-form-item> - <el-form-item label="部门:" prop="deptId" v-if="state.title !== '修改密码'"> +<!-- <el-form-item label="所属上级账号:" prop="companyName" v-if="state.form.userType == 3">--> +<!-- <scorllSelect--> +<!-- :disabled="disabled"--> +<!-- ref="scrollRef"--> +<!-- v-model="state.form.parentName"--> +<!-- @getval = "getSelectUser"--> +<!-- placeholder="请选择"--> +<!-- clearable--> +<!-- style="width: 45%;"--> +<!-- filterable--> +<!-- remote--> +<!-- searchKey="username"--> +<!-- :methods="getUser">--> +<!-- </scorllSelect>--> +<!-- </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" @@ -111,6 +148,7 @@ :disabled="disabled" placeholder="请选择部门" style="width: 100%" + @change="getParentId" > <el-option v-for="item in state.deptList" @@ -120,26 +158,11 @@ /> </el-select> </el-form-item> - <el-form-item label="职务:" prop="duty" v-if="state.title !== '修改密码'" > + <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="post" v-if="state.title !== '修改密码'" > + <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="companyName" v-if="showChild"> - <scorllSelect - :disabled="disabled || state.title =='编辑'" - ref="scrollRef" - v-model="state.form.parentName" - @getval = "getSelectUser" - placeholder="请选择" - clearable - style="width: 45%;" - filterable - remote - searchKey="username" - :methods="getUser"> - </scorllSelect> </el-form-item> </el-form> <template #footer v-if="state.title !='查看'"> @@ -156,7 +179,7 @@ import { View } from "@element-plus/icons-vue"; import scorllSelect from '@/components/scrollSelect/index.vue' import {ElMessage} from "element-plus"; -import {verifyPhone, verifyPwd, verifyUsername} from "@/utils/validate"; +import {verifyPhone, verifyPwd, verifyUsername,verifyIdCard} from "@/utils/validate"; import { checkUserName, checkPhone } from "@/api/login" import {addUser, editUser, getUserById, resetPwd} from "@/api/onlineEducation/user" import {Base64} from "js-base64" @@ -170,7 +193,7 @@ import {getDepart} from "@/api/orgStructure/depart"; const emit = defineEmits(["getList"]); const dialogVisible = ref(false) -const superRef = ref(null) +const superRef = ref() const scrollRef = ref(null) @@ -188,6 +211,18 @@ }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() } @@ -253,29 +288,32 @@ companyName: '', parentId: null, entryTime: '', + resignTime: '', idCard: '', deptId: null, duty: '', - post: '' + post: '', + age: null, + personType: null, + positional: '' }, formRules:{ - name: [{ required: true, message: '请输入公司、部门或者车间岗位名称', trigger: 'blur' }], + name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], companyName: [{ required: true, message: '请选择所在企业', trigger: 'blur' }], - deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }], - username: [{ required: true, trigger: "blur", validator: validateUsername }], + // 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: [{ required: true, validator: validateUserPhone, trigger: 'blur' }], + phone: [{ validator: validateUserPhone,required: true, trigger: 'blur' }], userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }], - idCard: [{ required: true, message: '请输入身份证号', trigger: 'blur' }], + // idCard: [{ validator: verifyId, trigger: 'blur' }], entryTime: [{ required: true, message: '请选择入职时间', trigger: 'blur' }], - duty: [{ required: true, message: '请输入职务', trigger: 'blur' }], - post: [{ required: true, message: '请输入专业', trigger: 'blur' }], + age: [{ required: true, message: '请输入年龄', trigger: 'blur' }], + personType: [{ required: true, message: '请选择人员类别', trigger: 'blur' }], + positional: [{ required: true, message: '请输入职称', trigger: 'blur' }] }, companyList: [], - userList: [ - - ], + userList: [], keyword:'', pageNum: 1, pageSize: 10, @@ -291,16 +329,15 @@ UisMounted.value = true; }); -const showCompany = ref(false) -const showChild = ref(false) const disabled = ref(false); const userInfo = ref() const openDialog = async (type, value, companyId) => { userInfo.value = JSON.parse(Cookies.get('userInfo')) + await getCompanyList() state.currentUserType = userInfo.value.userType if(state.currentUserType === 0){ state.isAdmin = true; - state.form.companyId = companyId; + state.form.companyId = null; }else { state.isAdmin = false; state.form.companyId = userInfo.value.companyId; @@ -324,19 +361,6 @@ const res = await getUserById(value.id); if(res.code === 200){ state.form = res.data - if(res.data.userType === 3){ - showCompany.value = true; - showChild.value = true - }else if(res.data.userType === 2 || res.data.userType === 1 || res.data.userType === 4){ - showCompany.value = true; - showChild.value = false; - } - if(res.data.userType === 3){ - if(!res.data.parentId){ - state.form.parentId = '' - state.form.parentName = '无上级账号' - } - } } } if(type == 'pwd'){ @@ -353,60 +377,18 @@ const finshed = ref(false) const loading = ref(false) -const getCompanyList = async (val)=>{ - if(val != ""){ - loading.value = true; - const queryParams = { - name: val - } - const res = await getCompany(queryParams) - if (res.code == 200) { - loading.value = false; - state.companyList = res.data.list - - } else { - ElMessage.warning(res.message) - } - }else { - loading.value = true; - const queryParams = { - pageNum: 1, - pageSize: 10 - } - const res = await getCompany(queryParams) - if (res.code == 200) { - loading.value = false; - state.companyList = res.data.list - - } else { - ElMessage.warning(res.message) - } +const getCompanyList = async ()=>{ + const queryParams = { + pageNum: 1, + pageSize: 999 } - - // if (type === 'open' && state.pageNum !== 1) { - // } else { - // const queryParams = { - // pageNum: state.pageNum, - // pageSize: state.pageSize, - // } - // const res = await getCompany(queryParams) - // if (res.code == 200) { - // if (res.data.pageNum === state.pageNum) { - // finshed.value = false; - // if (state.pageNum == 1) { - // state.companyList = res.data.list - // } else { - // state.companyList = state.companyList.concat(res.data.list) - // } - // } else { - // finshed.value = true; - // } - // - // } else { - // ElMessage.warning(res.message) - // } - // console.log("state.companyList",state.companyList) - // } + 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)=> { @@ -426,7 +408,7 @@ const onSubmit = async () => { const valid = await superRef.value.validate(); if(valid){ - if((state.form.userType ===1 && state.form.companyId ===null) || ((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null))){ + if((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null)){ ElMessage.warning('请选择所属父级账号') return; } @@ -458,8 +440,13 @@ parentId: data.parentId, idCard: data.idCard, entryTime: data.entryTime, + resignTime: data.resignTime, duty: data.duty, - post: data.post + post: data.post, + companyName: data.companyName, + age: data.age, + personType: data.personType, + positional: data.positional } const res = await editUser(param) @@ -493,66 +480,53 @@ scrollRef.value.getList(param,'change'); } const changeType = async (val) => { - state.companyList = []; - if(state.isAdmin && val !=0){ - await getCompanyList("") - } - state.form.parentId = null; - state.form.parentName = ''; - state.form.companyId = null; - state.form.companyName = ''; - //当前是管理员级用户 - if(state.currentUserType === 0){ - if(state.form.userType === 0){ - showCompany.value = false; - showChild.value = false; - }else { - showCompany.value = true; - showChild.value = false; - } - } - //当前是企业级/其他用户选择部门 - if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && 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.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; - } + // state.companyList = []; // if(state.isAdmin){ - // state.form.companyId = null; - // state.form.companyName = ''; + // await getCompanyList("") // } // state.form.parentId = null; // state.form.parentName = ''; - // if(state.form.userType === 2 || state.form.userType === 3 ){ + // state.form.companyId = null; + // state.form.companyName = ''; + //当前是管理员级用户 + + 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 = '' + } + + //当前是企业级/其他用户选择部门 + // 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: state.form.userType-1, + // userType: 2, // companyId: state.form.companyId, // } - // scrollRef.value.getList(param,'change'); + // 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; // } } @@ -567,10 +541,18 @@ userType: null, sex: 0, companyId: null, - parentId: null + companyName: '', + parentId: null, + entryTime: '', + resignTime: '', + idCard: '', + deptId: null, + duty: '', + post: '', + age: null, + personType: null, + positional: '' } - showCompany.value = false; - showChild.value = false; state.userList = []; state.companyList = []; state.pageNum = 1; @@ -592,7 +574,6 @@ const selectValue = (val) => { state.form.parentId = null; - state.form.parentName = null; state.companyList.forEach(item => { if(item.name === val){ state.form.companyId = item.id @@ -600,6 +581,16 @@ }) 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) => { console.log("valllllllll",val) state.form.parentId = val; -- Gitblit v1.9.2