From 344b3c188b059bc857cc594c75ef5527d8a7aeaf Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期六, 17 八月 2024 20:42:59 +0800
Subject: [PATCH] 添加校验

---
 src/views/authority/role/index.vue         |   48 +++++++++++++++++++++++++++++++++++++++---------
 src/views/authority/users/index.vue        |    5 -----
 src/views/authority/organization/index.vue |    2 +-
 src/views/authority/resource/index.vue     |    3 ++-
 4 files changed, 42 insertions(+), 16 deletions(-)

diff --git a/src/views/authority/organization/index.vue b/src/views/authority/organization/index.vue
index 65ae930..72e93f8 100644
--- a/src/views/authority/organization/index.vue
+++ b/src/views/authority/organization/index.vue
@@ -7,7 +7,7 @@
         <a-card
           :title="$t('menu.organization.title')"
           :bordered="false"
-          style=" 'width': '100%';   height: calc(100vh - 250px);; 'overflow-y': 'auto' "
+          style=" 'width': '100%';   height: calc(100vh - 250px); overflow-y:auto "
         >
           <a-tree
             class="tree-demo"
diff --git a/src/views/authority/resource/index.vue b/src/views/authority/resource/index.vue
index cd23097..7c94293 100644
--- a/src/views/authority/resource/index.vue
+++ b/src/views/authority/resource/index.vue
@@ -6,12 +6,13 @@
         <a-card
           :title="$t('menu.resource.title')"
           :bordered="false"
-          style=" 'width': '100%';   height: calc(100vh - 250px); 'overflow-y': 'auto' "
+          style=" 'width': '100%';   height: calc(100vh - 250px); overflow-y:auto "
         >
           <a-tree
             class="tree-demo"
             draggable
             blockNode
+            :default-expand-all=true
             :data="treeData"
             :show-line="showLine"
             :fieldNames="{
diff --git a/src/views/authority/role/index.vue b/src/views/authority/role/index.vue
index 48ceba2..ab8fd8a 100644
--- a/src/views/authority/role/index.vue
+++ b/src/views/authority/role/index.vue
@@ -148,7 +148,6 @@
                 title: 'menuName',
                 children: 'children',
               }"
-              :check-strictly="checkStrictlyMenu"
             >
             </a-tree>
           </a-tab-pane>
@@ -214,7 +213,7 @@
             'margin': '1px',
           }"
           class="card-demo"
-          title="鐢ㄦ埛鎵�鏈夋潈闄�"
+          title="瑙掕壊鎵�鏈夋潈闄�"
           hoverable
         >
           <a-space wrap>
@@ -336,18 +335,51 @@
   let resourcevisible = ref(false);
   let selectRole = ref({});
 
+
+  const eachChildrenAdd=(node)=>{
+    if (node.children?.length > 0) {
+      node.children.forEach((child) => {
+        checkStrictlyMenu.value.push({ menuId: child.menuId, menuName: child.menuName });
+        eachChildrenAdd(child);
+      });
+    }
+  }
+
+  const findChild = (node, val): boolean => {
+    let isExist = false;
+    if (node.children?.length > 0) {
+      node.children.forEach((child) => {
+        if (val.menuId == child.menuId) {
+          isExist = isExist || true;
+        } else {
+          isExist = isExist || findChild(child, val);
+        }
+      });
+    }
+    return isExist;
+  };
+
   const onCheckMenu = (newCheckedKeys, event) => {
     let o = { menuId: event.node.menuId, menuName: event.node.menuName };
     if (event.checked) {
       checkStrictlyMenu.value.push(o);
+      eachChildrenAdd(event.node);
+      if (event.halfCheckedNodes?.length > 0) {
+        event.halfCheckedNodes.forEach((child) => {
+          let e = { menuId: child.menuId, menuName: child.menuName };
+          if (checkStrictlyMenu.value.find((item) => item.menuId === e.menuId) == undefined) {
+            checkStrictlyMenu.value.push(e);
+          }
+        });
+      }
     } else {
+      let menus=[];
       checkStrictlyMenu.value.forEach((val, idx, array) => {
-        // val: 褰撳墠鍊�
-        if (val.menuId == event.node.menuId) {
-          checkStrictlyMenu.value.splice(idx, 1);
-          return true;
+        if (val.menuId != event.node.menuId && !findChild(event.node, val)) {
+          menus.push({ menuId: val.menuId, menuName: val.menuName });
         }
       });
+      checkStrictlyMenu.value = menus;
     }
   };
   const onCheckKnowledge = (newCheckedKeys, event) => {
@@ -402,9 +434,7 @@
     }
   };
 
-  const handleRemove = (key) => {
-    checkStrictly.value = checkStrictly.value.filter((tag) => tag !== key);
-  };
+
   const handleMenuRemove = (key) => {
     checkStrictlyMenu.value = checkStrictlyMenu.value.filter(
       (tag) => tag !== key
diff --git a/src/views/authority/users/index.vue b/src/views/authority/users/index.vue
index b62cead..d6110cc 100644
--- a/src/views/authority/users/index.vue
+++ b/src/views/authority/users/index.vue
@@ -195,7 +195,6 @@
               title: 'deptName',
               children: 'children',
             }"
-            :check-strictly="checkStrictly"
           >
           </a-tree>
         </a-card>
@@ -238,7 +237,6 @@
             <a-tag
               v-for="(tag, index) of checkStrictlyMenu"
               :key="tag.menuId"
-              @close="handleMenuRemove(tag)"
             >
               {{ tag.menuName }}
             </a-tag>
@@ -249,7 +247,6 @@
             <a-tag
               v-for="(tag, index) of checkStrictlyKnowledge"
               :key="tag.knowledgeId"
-              @close="handleKnowledgeRemove(tag)"
             >
               {{ tag.knowledgeName }}
             </a-tag>
@@ -260,14 +257,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>

--
Gitblit v1.8.0