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 |  190 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 130 insertions(+), 60 deletions(-)

diff --git a/src/views/authority/users/index.vue b/src/views/authority/users/index.vue
index 252759b..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
@@ -235,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>
@@ -249,7 +273,6 @@
             <a-tag
               v-for="(tag, index) of checkStrictlyKnowledge"
               :key="tag.knowledgeId"
-              @close="handleKnowledgeRemove(tag)"
             >
               {{ tag.knowledgeName }}
             </a-tag>
@@ -260,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>
@@ -288,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([]);
@@ -313,6 +336,7 @@
   let checkStrictlyKnowledge = ref([]);
   let checkStrictlyDialog = ref([]);
   let checkStrictlyAgent = ref([]);
+  let checkStrictlyDeptRole = ref([]);
   let formRef = ref();
 
   let menuTips = ref(['鏉冮檺绠$悊', '璐﹀彿']);
@@ -338,10 +362,10 @@
     phoneNumber: '',
     status: '',
     userId: '',
-    loginName:'',
+    loginName: '',
     userName: '',
-    psw:'',
-    role:'',
+    psw: '',
+    role: [],
   });
 
   let size = ref<SizeProps>('medium');
@@ -350,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;
@@ -363,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;
         }
       });
@@ -433,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) => {
@@ -457,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);
@@ -512,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) {
@@ -538,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) {
@@ -549,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) {
@@ -564,7 +620,6 @@
             menuId: val.menuId,
             menuName: val.menuName,
           });
-
         });
       }
       let knowledges;
@@ -597,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,
+                    });
+                  }
+                });
+              }
+            }
+          );
         });
       }
     }
@@ -631,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 + ',';
               }
             }
           }
@@ -667,10 +738,9 @@
     });
   };
 
-
   fetchData();
   OrganizationData('');
-  loadRole()
+  loadRole();
 
   const reset = () => {
     formModel.value = generateFormModel();

--
Gitblit v1.8.0