From af08dae54f74aa9a94f82f298410165fa9b7b614 Mon Sep 17 00:00:00 2001 From: yinbangzhong <zhongbangyin@126.com> Date: 星期三, 04 九月 2024 13:56:02 +0800 Subject: [PATCH] 单文档 --- src/views/authority/users/index.vue | 183 ++++++++++++++++++++++++++++++++------------- 1 files changed, 128 insertions(+), 55 deletions(-) diff --git a/src/views/authority/users/index.vue b/src/views/authority/users/index.vue index d6110cc..37aeefe 100644 --- a/src/views/authority/users/index.vue +++ b/src/views/authority/users/index.vue @@ -123,12 +123,18 @@ @ok="editHandleOk" width="48%" > - <a-form ref="formRef" :model="editform"> + <a-form ref="formRef" :model="editform" auto-label-width> <a-row :gutter="20"> <a-col :span="10"> - <a-form-item field="loginName" label="鐢ㄦ埛鍚�" :rules="[{required:true,message:'鐢ㄦ埛鍚嶅繀濉�'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]" - > - <a-input v-model="editform.loginName" /> + <a-form-item + field="loginName" + label="鐢ㄦ埛鍚�" + :rules="[ + { required: true, message: '鐢ㄦ埛鍚嶅繀濉�' }, + { maxLength: 50, message: '闀垮害涓嶈秴杩�50' }, + ]" + > + <a-input v-model="editform.loginName" /> </a-form-item> </a-col> <a-col :span="10"> @@ -144,7 +150,15 @@ </a-form-item> </a-col> <a-col :span="10"> - <a-form-item required field="email" label="閭" :rules="[{required:true,message:'閭蹇呭~'},{maxLength:50,message:'闀垮害涓嶈秴杩�50'}]" > + <a-form-item + required + field="email" + label="閭" + :rules="[ + { required: true, message: '閭蹇呭~' }, + { maxLength: 50, message: '闀垮害涓嶈秴杩�50' }, + ]" + > <a-input v-model="editform.email" /> </a-form-item> </a-col> @@ -156,8 +170,12 @@ </a-form-item> </a-col> <a-col :span="10"> - <a-form-item required field="role" label="瑙掕壊" :rules="[{required:true,message:'瑙掕壊蹇呴��'}]" > + <a-form-item + field="role" + label="瑙掕壊" + > <a-select + multiple v-model="editform.role" :options="roles" :field-names="fieldNames" @@ -198,17 +216,28 @@ > </a-tree> </a-card> - <a-card class="card-demo" title="鐢ㄦ埛鎵�灞炴満鏋�" hoverable> - <a-space wrap> - <a-tag - v-for="(tag, index) of checkStrictly" - :key="tag.deptId" - @close="handleRemove(tag)" - > - {{ tag.deptName }} - </a-tag> - </a-space> - </a-card> + <div :style="{ 'display': 'flex', 'flex-direction': 'column' }"> + <a-card class="card-demo" title="鐢ㄦ埛鎵�灞為儴闂�" :style="{ 'width': '460px', 'height': '500px', 'overflow-y': 'auto' }"> + <a-space wrap> + <a-tag + v-for="(tag, index) of checkStrictly" + :key="tag.deptId" + > + {{ tag.deptName }} + </a-tag> + </a-space> + <a-divider /> + <a-space wrap> + 閮ㄩ棬瑙掕壊: + <a-tag + v-for="(tag, index) of checkStrictlyDeptRole" + :key="tag.roleId" + > + {{ tag.roleName }} + </a-tag> + </a-space> + </a-card> + </div> </div> </a-modal> <a-modal @@ -234,10 +263,7 @@ > <a-space wrap> 鑿滃崟鍔熻兘锛� - <a-tag - v-for="(tag, index) of checkStrictlyMenu" - :key="tag.menuId" - > + <a-tag v-for="(tag, index) of checkStrictlyMenu" :key="tag.menuId"> {{ tag.menuName }} </a-tag> </a-space> @@ -283,19 +309,21 @@ DialogList, KnowledgeList, OrganizationList, - ResourceList, Role, RoleList, + ResourceList, + Role, + RoleList, User, UserAdd, UserChangePwd, UserDelete, UserEdit, UserList, - Userstatus - } from "@/api/authority"; + Userstatus, + } from '@/api/authority'; import { Modal } from '@arco-design/web-vue'; import Authheader from '@/views/authority/components/authheader.vue'; import { create } from 'lodash'; - import { queryCanvasList } from "@/api/Agent"; + import { queryCanvasList } from '@/api/Agent'; const fieldNames = { value: 'roleId', label: 'roleName' }; const roles = ref([]); @@ -308,6 +336,7 @@ let checkStrictlyKnowledge = ref([]); let checkStrictlyDialog = ref([]); let checkStrictlyAgent = ref([]); + let checkStrictlyDeptRole = ref([]); let formRef = ref(); let menuTips = ref(['鏉冮檺绠$悊', '璐﹀彿']); @@ -333,10 +362,10 @@ phoneNumber: '', status: '', userId: '', - loginName:'', + loginName: '', userName: '', - psw:'', - role:'', + psw: '', + role: [], }); let size = ref<SizeProps>('medium'); @@ -345,11 +374,11 @@ let resourcevisible = ref(false); let selectUser = ref({}); - const loadRole=async () => { - await RoleList(null).then((res) => { - roles.value = res.rows; - }); - } + const loadRole = async () => { + await RoleList(null).then((res) => { + roles.value = res.rows; + }); + }; const roleChange = (val) => { editform.value.role = val; @@ -358,12 +387,22 @@ const onCheck = (newCheckedKeys, event) => { let o = { deptId: event.node.deptId, deptName: event.node.deptName }; if (event.checked) { + event.node.roles.forEach( + (val) => { + checkStrictlyDeptRole.value.push(val); + } + ); checkStrictly.value.push(o); } else { checkStrictly.value.forEach((val, idx, array) => { // val: 褰撳墠鍊� if (val.deptId == event.node.deptId) { checkStrictly.value.splice(idx, 1); + checkStrictlyDeptRole.value.forEach((val2, idx2, array2) => { + if (val2.deptId == event.node.deptId) { + checkStrictlyDeptRole.value.splice(idx2, 1); + } + }); return true; } }); @@ -428,7 +467,15 @@ ]); const statusChange = async (value, record) => { - await Userstatus(record.userId, value).then((res) => {}); + if (record?.dept) { + await Userstatus(record.userId, value).then((res) => {}); + } else { + record.status = '0'; + Modal.warning({ + title: '鎻愮ず', + content: '濡傛兂鍚敤鐢ㄦ埛锛岄渶杩涜閮ㄩ棬閰嶇疆.', + }); + } }; const handleCancel = (type) => { @@ -452,26 +499,34 @@ }); }; - const cb = async (err) => { if (err) { visible.value = true; } else { + let uuu; if (editform.value.userId.length > 0) { await UserEdit({ - ...editform.value + ...editform.value, } as unknown as User).then((res) => { fetchData(); + uuu = res.data; }); } else { await UserAdd({ - ...editform.value + ...editform.value, } as unknown as User).then((res) => { fetchData(); + uuu = res.data; }); } + if (uuu.dept?false:true) { + deptvisible.value = true; + checkedKeys.value = []; + expandKdys.value = []; + checkStrictly.value = []; + selectUser.value = uuu; + } } - }; const editHandleOk = () => { formRef.value.validate(cb); @@ -507,14 +562,19 @@ //缂栬緫 if (t == 2) { visible.value = true; + formRef.value?.resetFields(); + editform.value.role=[]; save.value = '缂栬緫'; editform.value.userId = record.userId; editform.value.userName = record.userName; editform.value.loginName = record.loginName; editform.value.email = record.email; editform.value.phoneNumber = record.phoneNumber; - if (record.roles?.length>0) { - editform.value.role = record.roles[0].roleId; + if (record.roles?.length > 0) { + //閬嶅巻record.roles + record.roles.forEach((val) => { + editform.value.role.push(val.roleId); + }) } } //鍒犻櫎 @@ -535,9 +595,9 @@ selectUser.value = record; let agents; - if (record.agents){ - agents=record.agents - }else{ + if (record.agents) { + agents = record.agents; + } else { agents = record.roles ? record.roles[0].agents : null; } if (agents) { @@ -546,13 +606,12 @@ agentId: val.id, agentName: val.title, }); - }); } let resources; - if (record.resources){ - resources=record.resources - }else{ + if (record.resources) { + resources = record.resources; + } else { resources = record.roles ? record.roles[0].resources : null; } if (resources) { @@ -561,7 +620,6 @@ menuId: val.menuId, menuName: val.menuName, }); - }); } let knowledges; @@ -594,16 +652,32 @@ checkedKeys.value = []; expandKdys.value = []; checkStrictly.value = []; + checkStrictlyDeptRole.value=[]; selectUser.value = record; - expandKdys.value.push('0'); - if (record.dept) { + expandKdys.value.push("0"); + if (record?.dept) { record.dept.forEach((val) => { checkStrictly.value.push({ deptId: val.deptId, - deptName: val.deptName, + deptName: val.deptName }); checkedKeys.value.push(val.deptId); expandKdys.value.push(val.deptId); + record.roles.forEach( + (r) => { + if (r.dept) { + r.dept.forEach((d) => { + if (d.deptId == val.deptId) { + checkStrictlyDeptRole.value.push({ + roleId: r.roleId, + roleName: r.roleName, + deptId:d.deptId, + }); + } + }); + } + } + ); }); } } @@ -628,9 +702,9 @@ if (user.roles) { for (const r of user.roles) { if (user.roleName) { - user.roleName += r.roleName + ","; + user.roleName += r.roleName + ','; } else { - user.roleName = r.roleName + ","; + user.roleName = r.roleName + ','; } } } @@ -664,10 +738,9 @@ }); }; - fetchData(); OrganizationData(''); - loadRole() + loadRole(); const reset = () => { formModel.value = generateFormModel(); -- Gitblit v1.8.0