Quellcode durchsuchen

fix: 菜单分配回显不正确调整;部门、菜单编辑不可选择自身及自身下级

Tong vor 2 Jahren
Ursprung
Commit
21fbc7b394

+ 21 - 2
src/views/sys/sysMenu/sysMenuTable/FormModal.vue

@@ -53,7 +53,6 @@
       await setFieldsValue({
         ...resData,
         // 设置默认值
-        parentId: resData.parentId === '0' ? null : resData.parentId,
         visible: resData.visible,
         disable: resData.disable,
         keepalive: resData.keepalive ? 0 : 1,
@@ -66,9 +65,29 @@
       });
     }
 
-    const treeData = await sysMenuQueryTree({ excludeNodeIds: [data.record.id] });
+    const treeDatas = await sysMenuQueryTree({ excludeNodeIds: [data.record.id] });
+    treeDatas.forEach(async item => {
+      if (item.id == data.record.id) {
+        await setDisable(item);
+      }
+    });
+    const treeData = [
+      {
+        id: '0',
+        name: '根目录',
+        children: treeDatas,
+      },
+    ];
     await updateSchema({ field: 'parentId', componentProps: { treeData } });
   });
+  async function setDisable(item) {
+    item.disabled = true;
+    if (item.children?.length) {
+      item.children.map(async ele => {
+        await setDisable(ele);
+      });
+    }
+  }
   // 提交按钮事件
   async function handleSubmit() {
     try {

+ 13 - 10
src/views/sys/sysOrg/sysOrgTable/FormModal.vue

@@ -47,23 +47,18 @@
 
       await setFieldsValue({
         ...resData,
-        // parentId: resData.parentId === '0' ? null : resData.parentId,
       });
-      await updateSchema([
-        {
-          field: 'parentId',
-          componentProps: {
-            placeholder: ' ',
-            disabled: true,
-          },
-        },
-      ]);
     } else {
       await setFieldsValue({
         parentId: data.record.parentId,
       });
     }
     const treeDatas = await sysOrgQueryTree({ excludeNodeIds: [data.record.id] });
+    treeDatas.forEach(async item => {
+      if (item.id == data.record.id) {
+        await setDisable(item);
+      }
+    });
     const treeData = [
       {
         id: '0',
@@ -79,6 +74,14 @@
     ]);
   });
 
+  async function setDisable(item) {
+    item.disabled = true;
+    if (item.children?.length) {
+      item.children.map(async ele => {
+        await setDisable(ele);
+      });
+    }
+  }
   // 提交按钮事件
   async function handleSubmit() {
     try {

+ 7 - 5
src/views/sys/sysTenant/package/FormModalAssignMenu.vue

@@ -48,19 +48,21 @@
       if (item.children.length) {
         item.children.map(ele => {
           if (ele.children.length) {
+            ele.children.map(eles => {
+              if (eles.children.length) {
+                parentIds.value.push(eles.id);
+              }
+            });
             parentIds.value.push(ele.id);
           }
         });
+        parentIds.value.push(item.id);
       }
-      parentIds.value.push(item.id);
     });
     // 因为antd树插件勾选父节点会导致所有子节点选中,所以过滤所有父节点
     halfCheckedKeys.value = Array.from(parentIds.value);
     checkedKeys.value = roleMenuList
-      .filter(
-        item =>
-          (!parentIds.value.includes(item.id) && item.parentId != '0') || item.menuType == 'menu',
-      )
+      .filter(item => !parentIds.value.includes(item.id))
       .map(item => item.id);
   });