修改用户管理和花名册列表增加人员岗位显示

dev_xd
haha 2025-02-09 22:32:13 +08:00
parent 049a04bcc7
commit 42f0beb605
2 changed files with 190 additions and 146 deletions

View File

@ -95,11 +95,17 @@
</el-table-column> </el-table-column>
<el-table-column label="三级安全教育" align="center" class-name="small-padding fixed-width" width="100"> <el-table-column label="三级安全教育" align="center" class-name="small-padding fixed-width" width="100">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.subDeptType=='4' || scope.row.subDeptType=='5'"> <div v-if="scope.row.subDeptType == '4' || scope.row.subDeptType == '5'">
<el-button v-if="scope.row.eduStatus=='0'" link type="primary" icon="Link" @click="handleDownloadFile(scope.row)"></el-button> <el-button v-if="scope.row.eduStatus == '0'" link type="primary" icon="Link"
<el-button v-if="scope.row.eduStatus!='0'" link type="warning" disabled>未完成</el-button> @click="handleDownloadFile(scope.row)">查看</el-button>
<el-button v-if="scope.row.eduStatus != '0'" link type="warning" disabled>未完成</el-button>
</div> </div>
<el-button v-if="scope.row.subDeptType!='4' && scope.row.subDeptType!='5'" link disabled> - </el-button> <el-button v-if="scope.row.subDeptType != '4' && scope.row.subDeptType != '5'" link disabled> - </el-button>
</template>
</el-table-column>
<el-table-column label="人员岗位" align="center" prop="craftPost">
<template #default="scope">
{{ getWorkType(scope.row.workType) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态" align="center" prop="useStatus"> <el-table-column label="状态" align="center" prop="useStatus">
@ -115,7 +121,7 @@
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:edit']">修改</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']" v-if="1==2">删除</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']" v-if="1 == 2">删除</el-button>
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-if="scope.row.useStatus == 0" <el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-if="scope.row.useStatus == 0"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">离场</el-button> v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">离场</el-button>
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-else <el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-else
@ -165,7 +171,7 @@
<image-upload v-model="form.faceImage" :limit="1" class="face-image" @change="doImageUpload(3)" /> <image-upload v-model="form.faceImage" :limit="1" class="face-image" @change="doImageUpload(3)" />
</el-col> </el-col>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="姓名" prop="userName"> <el-form-item label="姓名" prop="userName">
<el-input v-model="form.userName" placeholder="请输入姓名" /> <el-input v-model="form.userName" placeholder="请输入姓名" />
@ -182,30 +188,31 @@
</el-col> </el-col>
<div style="width: 100%;"> <div style="width: 100%;">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="联系电话" prop="userPhone"> <el-form-item label="联系电话" prop="userPhone">
<el-input v-model="form.userPhone" disabled v-if="data.mode == 'edit'" placeholder="请输入联系电话" <el-input v-model="form.userPhone" disabled v-if="data.mode == 'edit'" placeholder="请输入联系电话"
minlength="11" maxlength="11" style="width: 150px;" /> minlength="11" maxlength="11" style="width: 150px;" />
<el-input v-model="form.userPhone" v-else placeholder="请输入联系电话" minlength="11" maxlength="11" <el-input v-model="form.userPhone" v-else placeholder="请输入联系电话" minlength="11" maxlength="11"
style="width: 150px;" /> style="width: 150px;" />
<el-button type="primary" v-if="data.mode != 'edit' && false" style="margin-left:10px;" <el-button type="primary" v-if="data.mode != 'edit' && false" style="margin-left:10px;"
@click="queryPhone">查询</el-button> @click="queryPhone">查询</el-button>
<span style="margin-left:10px;color:#999;">此电话号码将用作登录</span> <span style="margin-left:10px;color:#999;">此电话号码将用作登录</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户岗位" prop="workType"> <el-form-item label="用户岗位" prop="workType">
<el-select v-model="form.userWorkType" style="width:40%" @change="doWorkTypeChange"> <el-select v-model="form.userWorkType" style="width:40%" @change="doWorkTypeChange">
<el-option v-for="item in data.prjWorkCategories" :key="item" :label="item" <el-option v-for="item in data.prjWorkCategories" :key="item" :label="item"
:value="item" ></el-option> :value="item"></el-option>
</el-select> </el-select>
<el-select v-model="form.workType" placeholder="请选择用户岗位" style="width:calc(60% - 12px);margin-left:10px;"> <el-select v-model="form.workType" placeholder="请选择用户岗位"
<el-option v-for="item in data.prjWorkTypes" :key="item.value" :label="item.label" style="width:calc(60% - 12px);margin-left:10px;">
:value="item.value" ></el-option> <el-option v-for="item in data.prjWorkTypes" :key="item.value" :label="item.label"
</el-select> :value="item.value"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-row> </el-col>
</el-row>
</div> </div>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="班组名称" prop="subDeptGroup"> <el-form-item label="班组名称" prop="subDeptGroup">
@ -224,8 +231,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="工种" v-if="data.isManager" prop="craftPost"> <el-form-item label="工种" v-if="data.isManager" prop="craftPost">
<el-select v-model="form.craftPost"> <el-select v-model="form.craftPost">
<el-option v-for="dict in data.craftPostList" :key="dict.value" <el-option v-for="dict in data.craftPostList" :key="dict.value" :label="dict.label"
:label="dict.label" :value="dict.value" /> :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="工种" v-else> <el-form-item label="工种" v-else>
@ -240,7 +247,8 @@
</el-form-item></el-col> </el-form-item></el-col>
<el-col :span="12"><el-form-item label="性别"> <el-col :span="12"><el-form-item label="性别">
<el-radio-group v-model="form.sex"> <el-radio-group v-model="form.sex">
<el-radio v-for="(dict, idx) in sys_user_sex" :key="idx" :label="dict.label" :value="dict.value">{{ dict.label }}</el-radio> <el-radio v-for="(dict, idx) in sys_user_sex" :key="idx" :label="dict.label" :value="dict.value">{{
dict.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item></el-col> </el-form-item></el-col>
<el-col :span="12"><el-form-item label="文件程度"> <el-col :span="12"><el-form-item label="文件程度">
@ -274,7 +282,7 @@
<el-input v-model="form.bankOffice" placeholder="请输入开户网点" /> <el-input v-model="form.bankOffice" placeholder="请输入开户网点" />
</el-form-item></el-col> </el-form-item></el-col>
</el-row> </el-row>
</el-form> </el-form>
<template #footer> <template #footer>
@ -296,9 +304,9 @@ import useUserStore from '@/store/modules/user'
import dayjs from 'dayjs' import dayjs from 'dayjs'
const userStore = useUserStore() const userStore = useUserStore()
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { sys_use_status, pro_craft_type, sys_is_del, pro_craft_post, certificate_type, educational_type,sys_user_sex,user_work_type } = const { sys_use_status, pro_craft_type, sys_is_del, pro_craft_post, certificate_type, educational_type, sys_user_sex, user_work_type } =
proxy.useDict('sys_use_status', 'pro_craft_type', 'sys_is_del', 'pro_craft_post', 'certificate_type', proxy.useDict('sys_use_status', 'pro_craft_type', 'sys_is_del', 'pro_craft_post', 'certificate_type',
'educational_type','sys_user_sex','user_work_type'); 'educational_type', 'sys_user_sex', 'user_work_type');
const proProjectInfoSubdeptsUsersList = ref([]); const proProjectInfoSubdeptsUsersList = ref([]);
const open = ref(false); const open = ref(false);
@ -342,8 +350,8 @@ const data = reactive({
illnessStatus: null, illnessStatus: null,
supIllnessStatus: null, supIllnessStatus: null,
isDel: null, isDel: null,
userWorkType:null, userWorkType: null,
workType:null, workType: null,
}, },
rules: { rules: {
subDeptId: [{ required: true, trigger: ['blur', 'change'], message: "请选择所属单位" }], subDeptId: [{ required: true, trigger: ['blur', 'change'], message: "请选择所属单位" }],
@ -369,10 +377,10 @@ const data = reactive({
userInfo: null, userInfo: null,
mode: '', mode: '',
editData: null, editData: null,
craftPostList:[], craftPostList: [],
prjWorkTypeObj:{}, prjWorkTypeObj: {},
prjWorkCategories:[],// prjWorkCategories: [],//
prjWorkTypes:[],// prjWorkTypes: [],//
}); });
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
@ -390,7 +398,7 @@ function handleEnter(row) {
}); });
} }
} }
function doWorkTypeChange(){ function doWorkTypeChange() {
data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType] data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType]
} }
//, //,
@ -409,40 +417,40 @@ function handleBatchEnterState(state) {
} }
// //
function doImageUpload(type) { function doImageUpload(type) {
setTimeout(() => { setTimeout(() => {
let url=''; let url = '';
form.value.identificationCard = form.value.certificatePhoto1 && form.value.certificatePhoto2 && form.value.faceImage ? "yes" : '' form.value.identificationCard = form.value.certificatePhoto1 && form.value.certificatePhoto2 && form.value.faceImage ? "yes" : ''
if(type==1){ if (type == 1) {
url=form.value.certificatePhoto1; url = form.value.certificatePhoto1;
if(url){ if (url) {
url=location.origin+url; url = location.origin + url;
//url="http://62.234.3.186/statics/2025/01/19/4491f170cd1609142f9a6f097cbf681f_20250119000046A004.jpg" //url="http://62.234.3.186/statics/2025/01/19/4491f170cd1609142f9a6f097cbf681f_20250119000046A004.jpg"
proxy.$http.get(`/system/tools/id/front?url=${url}`).then(d=>{ proxy.$http.get(`/system/tools/id/front?url=${url}`).then(d => {
form.value.userName=form.value.userName||d.data.name||''; form.value.userName = form.value.userName || d.data.name || '';
form.value.certificateCode=form.value.certificateCode||d.data.cardId||''; form.value.certificateCode = form.value.certificateCode || d.data.cardId || '';
form.value.address=form.value.address||d.data.address||''; form.value.address = form.value.address || d.data.address || '';
from.value.nativePlace=form.value.native||d.data.native||''; from.value.nativePlace = form.value.native || d.data.native || '';
let nation=d.data.nation||""; let nation = d.data.nation || "";
if(nation){ if (nation) {
let tmps= data.nationOpts.filter(it=>it.indexOf(nation)>=0); let tmps = data.nationOpts.filter(it => it.indexOf(nation) >= 0);
if(tmps.length>0){ if (tmps.length > 0) {
form.value.nation=form.value.nation||tmps[0]||''; form.value.nation = form.value.nation || tmps[0] || '';
} }
}
let sex=d.data.sex||'';
if(sex){
form.value.sex=form.value.sex||(sex=='男'?0:1);
} }
let birthDay=d.data.birthDay; let sex = d.data.sex || '';
if(birthDay && birthDay.length==8){ if (sex) {
birthDay=birthDay.substr(0,4)+"-"+birthDay.substr(4,2)+"-"+birthDay.substr(6); form.value.sex = form.value.sex || (sex == '男' ? 0 : 1);
form.value.birthDay=form.value.birthDay||birthDay;
} }
let birthDay = d.data.birthDay;
if (birthDay && birthDay.length == 8) {
birthDay = birthDay.substr(0, 4) + "-" + birthDay.substr(4, 2) + "-" + birthDay.substr(6);
form.value.birthDay = form.value.birthDay || birthDay;
}
}); });
} }
}else if(type==2){ } else if (type == 2) {
/* /*
url=form.value.certificatePhoto2; url=form.value.certificatePhoto2;
if(url){ if(url){
@ -538,7 +546,9 @@ function reset() {
contactPhone: '',// contactPhone: '',//
bankName: '',// bankName: '',//
bankCardNo: '',// bankCardNo: '',//
bankOffice: '',// bankOffice: '',//
userWorkType: '',//
workType: '',//
}; };
proxy.resetForm("proProjectInfoSubdeptsUsersRef"); proxy.resetForm("proProjectInfoSubdeptsUsersRef");
data.phoneState = ""; data.phoneState = "";
@ -598,18 +608,18 @@ function doDeptGroupChange() {
return; return;
} }
let tmps = data.deptGroups.filter(d => d.id == form.value.subDeptGroup); let tmps = data.deptGroups.filter(d => d.id == form.value.subDeptGroup);
if (tmps.length > 0 ) { if (tmps.length > 0) {
let dg = tmps[0]; let dg = tmps[0];
form.value.groupName = dg.groupName; form.value.groupName = dg.groupName;
form.value.craftTypeName = getCraftType(dg.craftType); form.value.craftTypeName = getCraftType(dg.craftType);
form.value.craftPostName = getCraftPost(dg.craftPost); form.value.craftPostName = getCraftPost(dg.craftPost);
if(dg.craftType==3){ if (dg.craftType == 3) {
let subDepts=data.subdepts.filter(d=>d.id==dg.subDeptId) let subDepts = data.subdepts.filter(d => d.id == dg.subDeptId)
let subDeptType=subDepts.length>0?subDepts[0].subDeptType||'':''; let subDeptType = subDepts.length > 0 ? subDepts[0].subDeptType || '' : '';
subDeptType=`,${subDeptType},` subDeptType = `,${subDeptType},`
data.craftPostList=pro_craft_post.value.filter(d=>d.remark.indexOf(subDeptType)>=0 && d.elTagClass==3) data.craftPostList = pro_craft_post.value.filter(d => d.remark.indexOf(subDeptType) >= 0 && d.elTagClass == 3)
} }
if(data.mode != 'edit'){ if (data.mode != 'edit') {
form.value.craftPost = dg.craftPost form.value.craftPost = dg.craftPost
} }
form.value.craftType = dg.craftType; form.value.craftType = dg.craftType;
@ -715,6 +725,12 @@ function handleUpdate(row) {
form.value.userId = obj.userId; form.value.userId = obj.userId;
form.value.projectId = row.projectId; form.value.projectId = row.projectId;
form.value.projectName = row.projectName; form.value.projectName = row.projectName;
form.value.workType = form.value.workType ? "" + form.value.workType : "";
let tmps = user_work_type.value.filter(d => d.value == form.value.workType);
if (tmps.length > 0) {
form.value.userWorkType = tmps[0].remark;
data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType];
}
//showEditUser(obj.user); //showEditUser(obj.user);
data.phoneState = "edit"; data.phoneState = "edit";
@ -725,7 +741,7 @@ function handleUpdate(row) {
doSubDeptChange(); doSubDeptChange();
setTimeout(() => { setTimeout(() => {
form.value.craftPost = response.data.craftPost; form.value.craftPost = response.data.craftPost;
console.log("++++++>",form.value.craftPost) console.log("++++++>", form.value.craftPost)
}, 400) }, 400)
}, 400); }, 400);
@ -733,6 +749,15 @@ function handleUpdate(row) {
}); });
} }
function getWorkType(wt) {
if (wt) {
let tmps = user_work_type.value.filter(d => d.value == wt);
if (tmps.length > 0) {
return tmps[0].remark + " - " + tmps[0].label;
}
}
return "";
}
function showEditUser(user) { function showEditUser(user) {
user = user || {}; user = user || {};
let info = tryToJson(user?.userInfos || "{}") let info = tryToJson(user?.userInfos || "{}")
@ -804,6 +829,7 @@ function submitForm() {
userInfos: JSON.stringify(info), userInfos: JSON.stringify(info),
craftType: form.value.craftType, craftType: form.value.craftType,
craftPost: form.value.craftPost, craftPost: form.value.craftPost,
workType: form.value.workType,
}; };
if (form.value.id != null) { if (form.value.id != null) {
@ -836,7 +862,7 @@ function handleDelete(row) {
} }
/** 打开三级安全教育承诺书 */ /** 打开三级安全教育承诺书 */
function handleDownloadFile(row){ function handleDownloadFile(row) {
proxy.$download.resource(row.eduFilePath); proxy.$download.resource(row.eduFilePath);
} }
@ -846,21 +872,21 @@ function handleExport() {
...queryParams.value ...queryParams.value
}, `proProjectInfoSubdeptsUsers_${new Date().getTime()}.xlsx`) }, `proProjectInfoSubdeptsUsers_${new Date().getTime()}.xlsx`)
} }
function getUserWorkType(){ function getUserWorkType() {
let obj={}; let obj = {};
user_work_type.value.filter(d=>d.elTagClass=="项目人员").forEach(d=>{ user_work_type.value.filter(d => d.elTagClass == "项目人员").forEach(d => {
let bigType=d.remark; let bigType = d.remark;
d.value=""+d.value; d.value = "" + d.value;
if(!obj[bigType]){ if (!obj[bigType]) {
obj[bigType]=[]; obj[bigType] = [];
data.prjWorkCategories.push(bigType); data.prjWorkCategories.push(bigType);
} }
obj[bigType].push(d); obj[bigType].push(d);
}); });
data.prjWorkTypeObj=obj; data.prjWorkTypeObj = obj;
} }
loadSubDepts(()=>{ loadSubDepts(() => {
getUserWorkType(); getUserWorkType();
}); });
getList(); getList();

View File

@ -80,6 +80,11 @@
</el-table-column> </el-table-column>
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber"
v-if="columns[5].visible" width="120" /> v-if="columns[5].visible" width="120" />
<el-table-column label="人员岗位" align="center" prop="craftPost">
<template #default="scope">
{{ getWorkType(scope.row.workType) }}
</template>
</el-table-column>
<el-table-column label="用户状态" align="center" key="status" v-if="columns[6].visible"> <el-table-column label="用户状态" align="center" key="status" v-if="columns[6].visible">
<template #default="scope"> <template #default="scope">
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" <el-switch v-model="scope.row.status" active-value="0" inactive-value="1"
@ -123,7 +128,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="所属部门" prop="deptId"> <el-form-item label="所属部门" prop="deptId">
<el-tree-select ref="selTreeDept" v-if="data.mode=='add'" v-model="form.deptId" :data="deptOptions" <el-tree-select ref="selTreeDept" v-if="data.mode == 'add'" v-model="form.deptId" :data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }" value-key="id" :props="{ value: 'id', label: 'label', children: 'children' }" value-key="id"
placeholder="请选择所属部门" check-strictly style="width:100%" @change="handleChangeDept" /> placeholder="请选择所属部门" check-strictly style="width:100%" @change="handleChangeDept" />
<el-tag type="primary" v-else>{{ form.dept?.deptName }}</el-tag> <el-tag type="primary" v-else>{{ form.dept?.deptName }}</el-tag>
@ -132,9 +137,8 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户姓名" prop="nickName"> <el-form-item label="用户姓名" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户名称" maxlength="30" <el-input v-model="form.nickName" placeholder="请输入用户名称" maxlength="30" style="width: 150px;" />
style="width: 150px;" /> <!--
<!--
<el-button v-if="data.mode == 'add' && !data.editUser" type="primary" style="margin-left: 10px;" <el-button v-if="data.mode == 'add' && !data.editUser" type="primary" style="margin-left: 10px;"
@click="doQueryUserByName">查询</el-button> @click="doQueryUserByName">查询</el-button>
<el-button v-if="data.editUser" type="success" style="margin-left: 10px;" <el-button v-if="data.editUser" type="success" style="margin-left: 10px;"
@ -163,7 +167,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="登录密码" prop="password"> <el-form-item label="登录密码" prop="password">
<el-input v-model="form.password" placeholder="请输入登录密码" type="password" maxlength="20" <el-input v-model="form.password" placeholder="请输入登录密码" type="password" maxlength="20"
:disabled="form.userId" :show-password="!form.userId" autocomplete="new-password" disableautocomplete /> :disabled="form.userId" :show-password="!form.userId" autocomplete="new-password"
disableautocomplete />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -184,19 +189,22 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户岗位" prop="workType"> <el-form-item label="用户岗位" prop="workType">
<el-select v-model="form.workType" v-if="form.userType=='00'" placeholder="请选择用户岗位" style="width:100%"> <el-select v-model="form.workType" v-if="form.userType == '00'" placeholder="请选择用户岗位"
style="width:100%">
<el-option v-for="item in data.sysWorkTypes" :key="item.value" :label="item.label" <el-option v-for="item in data.sysWorkTypes" :key="item.value" :label="item.label"
:value="item.value" ></el-option> :value="item.value"></el-option>
</el-select> </el-select>
<el-select v-model="form.userWorkType" v-if="form.userType!='00'" style="width:40%" @change="doWorkTypeChange"> <el-select v-model="form.userWorkType" v-if="form.userType != '00'" style="width:40%"
@change="doWorkTypeChange">
<el-option v-for="item in data.prjWorkCategories" :key="item" :label="item" <el-option v-for="item in data.prjWorkCategories" :key="item" :label="item"
:value="item" ></el-option> :value="item"></el-option>
</el-select> </el-select>
<el-select v-model="form.workType" v-if="form.userType!='00'" placeholder="请选择用户岗位" style="width:calc(60% - 12px);margin-left:10px;"> <el-select v-model="form.workType" v-if="form.userType != '00'" placeholder="请选择用户岗位"
style="width:calc(60% - 12px);margin-left:10px;">
<el-option v-for="item in data.prjWorkTypes" :key="item.value" :label="item.label" <el-option v-for="item in data.prjWorkTypes" :key="item.value" :label="item.label"
:value="item.value" ></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -247,7 +255,7 @@
</el-upload> </el-upload>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="submitFileForm" > </el-button> <el-button type="primary" @click="submitFileForm"> </el-button>
<el-button @click="upload.open = false"> </el-button> <el-button @click="upload.open = false"> </el-button>
</div> </div>
</template> </template>
@ -265,7 +273,7 @@ import { onMounted } from "vue";
const router = useRouter(); const router = useRouter();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { sys_user_type, sys_normal_disable, sys_user_sex,user_work_type } = proxy.useDict("sys_user_type", "sys_normal_disable", "sys_user_sex","user_work_type"); const { sys_user_type, sys_normal_disable, sys_user_sex, user_work_type } = proxy.useDict("sys_user_type", "sys_normal_disable", "sys_user_sex", "user_work_type");
const userList = ref([]); const userList = ref([]);
const open = ref(false); const open = ref(false);
@ -313,7 +321,7 @@ const columns = ref([
]); ]);
const data = reactive({ const data = reactive({
loading:false, loading: false,
form: {}, form: {},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -340,10 +348,10 @@ const data = reactive({
}, },
editUser: null, editUser: null,
mode: '', mode: '',
sysWorkTypes:[], // sysWorkTypes: [], //
prjWorkTypeObj:{}, prjWorkTypeObj: {},
prjWorkCategories:[],// prjWorkCategories: [],//
prjWorkTypes:[],// prjWorkTypes: [],//
}); });
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
@ -361,8 +369,8 @@ watch(deptName, val => {
function getDeptTree() { function getDeptTree() {
deptTreeSelect().then(response => { deptTreeSelect().then(response => {
deptOptions.value = response.data; deptOptions.value = response.data;
defaultEK.value.push(response.data[0].id); defaultEK.value.push(response.data[0].id);
getUserWorkType(); getUserWorkType();
}); });
}; };
// //
@ -377,7 +385,7 @@ function doQueryUser() {
} }
}); });
} }
function doWorkTypeChange(){ function doWorkTypeChange() {
data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType] data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType]
} }
function doQueryUserByName() { function doQueryUserByName() {
@ -437,12 +445,12 @@ function doRoleChange() {
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }] phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
} }
} }
form.value.workType=''; form.value.workType = '';
} }
else { else {
if (form.value.userType == 99) { if (form.value.userType == 99) {
data.rules = { data.rules = {
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }], userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }], nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }], userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
@ -454,7 +462,7 @@ function doRoleChange() {
} }
} else { } else {
data.rules = { data.rules = {
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }], userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }], nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }], userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
@ -599,12 +607,12 @@ function reset() {
remark: undefined, remark: undefined,
postIds: [], postIds: [],
roleIds: [], roleIds: [],
userType:'00', userType: '00',
userWorkType:undefined, userWorkType: undefined,
workType: undefined, workType: undefined,
}; };
form.value.userWorkType=data.prjWorkCategories[0]; form.value.userWorkType = data.prjWorkCategories[0];
data.prjWorkTypes=data.prjWorkTypeObj[form.value.userWorkType]; data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType];
proxy.resetForm("userRef"); proxy.resetForm("userRef");
data.mode = '' data.mode = ''
}; };
@ -650,12 +658,12 @@ function handleUpdate(row) {
postOptions.value = response.posts; postOptions.value = response.posts;
form.value.postIds = response.postIds; form.value.postIds = response.postIds;
form.value.roleIds = response.roleIds; form.value.roleIds = response.roleIds;
form.value.workType=form.value.workType?""+form.value.workType:""; form.value.workType = form.value.workType ? "" + form.value.workType : "";
if(form.value.userType=='99'){ if (form.value.userType == '99') {
let tmps=user_work_type.value.filter(d=>d.value==form.value.workType); let tmps = user_work_type.value.filter(d => d.value == form.value.workType);
if(tmps.length>0){ if (tmps.length > 0) {
form.value.userWorkType=tmps[0].remark; form.value.userWorkType = tmps[0].remark;
data.prjWorkTypes=data.prjWorkTypeObj[form.value.userWorkType]; data.prjWorkTypes = data.prjWorkTypeObj[form.value.userWorkType];
} }
} }
open.value = true; open.value = true;
@ -666,6 +674,16 @@ function handleUpdate(row) {
handleChangeDept(row.deptId); handleChangeDept(row.deptId);
}; };
function getWorkType(wt) {
if (wt) {
let tmps = user_work_type.value.filter(d => d.value == wt);
if (tmps.length > 0) {
return tmps[0].remark ? tmps[0].remark + " - " + tmps[0].label : tmps[0].label;
}
}
return "";
}
/** 根据单位选择角色 */ /** 根据单位选择角色 */
function handleChangeDept(value) { function handleChangeDept(value) {
form.value.roleIds = []; form.value.roleIds = [];
@ -695,7 +713,7 @@ const getCompId = () => {
/** 提交按钮 */ /** 提交按钮 */
function submitForm() { function submitForm() {
data.loading=true; data.loading = true;
proxy.$refs["userRef"].validate(valid => { proxy.$refs["userRef"].validate(valid => {
if (valid) { if (valid) {
form.value.userName = form.value.nickName; form.value.userName = form.value.nickName;
@ -705,7 +723,7 @@ function submitForm() {
open.value = false; open.value = false;
getList(); getList();
data.mode = "" data.mode = ""
data.loading=false; data.loading = false;
}); });
} else { } else {
addUser(form.value).then(response => { addUser(form.value).then(response => {
@ -713,28 +731,28 @@ function submitForm() {
open.value = false; open.value = false;
getList(); getList();
data.mode = "" data.mode = ""
data.loading=false; data.loading = false;
}); });
} }
}else{ } else {
data.loading=false; data.loading = false;
} }
}); });
}; };
function getUserWorkType(){ function getUserWorkType() {
data.sysWorkTypes=user_work_type.value.filter(d=>d.elTagClass=="系统人员"); data.sysWorkTypes = user_work_type.value.filter(d => d.elTagClass == "系统人员");
let obj={}; let obj = {};
user_work_type.value.filter(d=>d.elTagClass=="项目人员").forEach(d=>{ user_work_type.value.filter(d => d.elTagClass == "项目人员").forEach(d => {
let bigType=d.remark; let bigType = d.remark;
d.value=""+d.value; d.value = "" + d.value;
if(!obj[bigType]){ if (!obj[bigType]) {
obj[bigType]=[]; obj[bigType] = [];
data.prjWorkCategories.push(bigType); data.prjWorkCategories.push(bigType);
} }
obj[bigType].push(d); obj[bigType].push(d);
}); });
data.prjWorkTypeObj=obj; data.prjWorkTypeObj = obj;
} }
getDeptTree(); getDeptTree();
getList(); getList();
</script> </script>