From ff0ae974a1c561eaf2915988dac63cd066af189f Mon Sep 17 00:00:00 2001 From: yinbangzhong <zhongbangyin@126.com> Date: 星期四, 12 九月 2024 09:23:44 +0800 Subject: [PATCH] bug fix --- src/views/authority/users/index.vue | 202 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 135 insertions(+), 67 deletions(-) diff --git a/src/views/authority/users/index.vue b/src/views/authority/users/index.vue index 13f4565..37aeefe 100644 --- a/src/views/authority/users/index.vue +++ b/src/views/authority/users/index.vue @@ -97,7 +97,7 @@ >缂栬緫</a-button > <a-popconfirm - content="Are you sure you want to delete?" + content="璇风‘璁ゆ槸鍚﹀垹闄わ紵" type="success" @ok="operation(3, record)" > @@ -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" @@ -195,21 +213,31 @@ title: 'deptName', children: 'children', }" - :check-strictly="checkStrictly" > </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 @@ -217,7 +245,9 @@ v-model:visible="resourcevisible" v-if="resourcevisible" title="鐢ㄦ埛鎵�鏈夋潈闄�" - @cancel="handleCancel(3)" + okText="鍏抽棴" + hide-Cancel="true" + @ok="handleCancel(3)" > <div :style="{ 'display': 'flex', 'flex-direction': 'column' }"> <a-card @@ -233,11 +263,7 @@ > <a-space wrap> 鑿滃崟鍔熻兘锛� - <a-tag - v-for="(tag, index) of checkStrictlyMenu" - :key="tag.menuId" - @close="handleMenuRemove(tag)" - > + <a-tag v-for="(tag, index) of checkStrictlyMenu" :key="tag.menuId"> {{ tag.menuName }} </a-tag> </a-space> @@ -247,7 +273,6 @@ <a-tag v-for="(tag, index) of checkStrictlyKnowledge" :key="tag.knowledgeId" - @close="handleKnowledgeRemove(tag)" > {{ tag.knowledgeName }} </a-tag> @@ -258,14 +283,12 @@ <a-tag v-for="(tag, index) of checkStrictlyDialog" :key="tag.dialogId" - @close="handleDialogRemove(tag)" > {{ tag.dialogName }} </a-tag> <a-tag v-for="(tag, index) of checkStrictlyAgent" :key="tag.agentId" - @close="handleDialogRemove(tag)" > {{ tag.agentName }} </a-tag> @@ -286,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([]); @@ -311,6 +336,7 @@ let checkStrictlyKnowledge = ref([]); let checkStrictlyDialog = ref([]); let checkStrictlyAgent = ref([]); + let checkStrictlyDeptRole = ref([]); let formRef = ref(); let menuTips = ref(['鏉冮檺绠$悊', '璐﹀彿']); @@ -336,10 +362,10 @@ phoneNumber: '', status: '', userId: '', - loginName:'', + loginName: '', userName: '', - psw:'', - role:'', + psw: '', + role: [], }); let size = ref<SizeProps>('medium'); @@ -348,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; @@ -361,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; } }); @@ -431,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) => { @@ -455,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); @@ -510,13 +562,20 @@ //缂栬緫 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; - editform.value.role = record.role; + if (record.roles?.length > 0) { + //閬嶅巻record.roles + record.roles.forEach((val) => { + editform.value.role.push(val.roleId); + }) + } } //鍒犻櫎 if (t == 3) { @@ -532,12 +591,13 @@ checkStrictlyMenu.value = []; checkStrictlyKnowledge.value = []; checkStrictlyDialog.value = []; + checkStrictlyAgent.value = []; 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; @@ -578,12 +636,7 @@ }); }); } - let dialogs; - if (record.dialogs) { - dialogs = record.dialogs; - } else { - dialogs = record.roles ? record.roles[0].dialogs : null; - } + let dialogs = record.roles ? record.roles[0].dialogs : null; if (dialogs) { dialogs.forEach((val) => { checkStrictlyDialog.value.push({ @@ -599,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, + }); + } + }); + } + } + ); }); } } @@ -633,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 + ','; } } } @@ -669,10 +738,9 @@ }); }; - fetchData(); OrganizationData(''); - loadRole() + loadRole(); const reset = () => { formModel.value = generateFormModel(); -- Gitblit v1.8.0