From d64e4b3a63f88ca012a7c76dc622533c29d2f3ce Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 18 八月 2025 09:26:57 +0800
Subject: [PATCH] fix: 去掉密码md5加密

---
 src/views/Permission/components/dialogAuthorizeV2.vue |  127 +++++++++++++++++------------------------
 1 files changed, 53 insertions(+), 74 deletions(-)

diff --git a/src/views/Permission/components/dialogAuthorizeV2.vue b/src/views/Permission/components/dialogAuthorizeV2.vue
index f2ce5e5..9a272f7 100644
--- a/src/views/Permission/components/dialogAuthorizeV2.vue
+++ b/src/views/Permission/components/dialogAuthorizeV2.vue
@@ -24,7 +24,8 @@
             default-expand-all
             show-checkbox
             ref="moduleTree"
-            :default-checked-keys="checkedModules"
+            :default-checked-keys="defaultCheckedKeys"
+            @check="handleModuleCheck"
           >
             <template #default="{ node }">
               <div class="custom-tree-node">
@@ -62,7 +63,8 @@
             default-expand-all
             show-checkbox
             ref="pageButtonTree"
-            :default-checked-keys="checkedPageButton"
+            :default-checked-keys="defaultCheckedKeys"
+            @check="handlePageButtonCheck"
           >
             <template #default="{ node }">
               <div class="custom-tree-node">
@@ -97,7 +99,8 @@
             default-expand-all
             show-checkbox
             ref="dataButtonTree"
-            :default-checked-keys="checkedDataButton"
+            :default-checked-keys="defaultCheckedKeys"
+            @check="handleDataButtonCheck"
           >
             <template #default="{ node }">
               <div class="custom-tree-node">
@@ -132,7 +135,8 @@
             default-expand-all
             show-checkbox
             ref="dataColumnTree"
-            :default-checked-keys="checkedDataColumn"
+            :default-checked-keys="defaultCheckedKeys"
+            @check="handleDataColumnCheck"
           >
             <template #default="{ node }">
               <div class="custom-tree-node">
@@ -155,10 +159,11 @@
 <script setup lang="ts">
 import { Message } from '@bole-core/core';
 import { AuthorizeType, SubModuleType, SubModuleTitle, EnumMenuType } from '@/constants';
-import { getTree } from '@/utils';
+import { getTree, treeEach } from '@/utils';
 import { TreeInstance } from 'element-plus';
 import { ProDialog } from '@bole-core/components';
 import { useMenus, useMenu } from '@/hooks';
+import data from '@iconify-icons/ep/tickets';
 
 const TypeTip = defineComponent({
   name: 'TypeTip',
@@ -195,7 +200,7 @@
 const form = defineModel<Form>('form');
 
 const emit = defineEmits<{
-  (e: 'onConfirm', selectedMenuIds: string[], resourceIds: string[]): void;
+  (e: 'onConfirm', selectedMenuIds: string[]): void;
   (e: 'onCancel'): void;
 }>();
 
@@ -207,13 +212,17 @@
 
 const state = reactive({
   currentMenuId: '',
-  checkedInfo: [] as CheckedResourceItem[],
+  selectedMenuIds: [] as string[],
 });
+
+const defaultCheckedKeys = computed(() => Array.from(state.selectedMenuIds));
 
 watch(visible, (newVal) => {
   if (newVal) {
     state.currentMenuId = '';
-    state.checkedInfo = [];
+    const menuIds = form.value.detail?.menuIds ?? [];
+    // menuIds.forEach((id) => state.selectedMenuIds.add(id));
+    state.selectedMenuIds = [...menuIds];
   }
 });
 
@@ -225,6 +234,8 @@
 const pageButtonTree = useTemplateRef<TreeInstance>('pageButtonTree');
 const dataButtonTree = useTemplateRef<TreeInstance>('dataButtonTree');
 const dataColumnTree = useTemplateRef<TreeInstance>('dataColumnTree');
+
+type TreeRef = ReturnType<typeof useTemplateRef<TreeInstance>>;
 
 const { menusTree, getMenuById } = useMenus({
   params: computed(() => ({
@@ -243,77 +254,45 @@
   enabled: computed(() => !!state.currentMenuId),
 });
 
-const checkedModules = computed(() => {
-  if (form.value.detail) {
-    return form.value.detail.menuIds;
-  }
-  return [];
-});
-
-const checkedPageButton = computed(() => initChecked(SubModuleType.PageButton));
-const checkedDataButton = computed(() => initChecked(SubModuleType.DataButton));
-const checkedDataColumn = computed(() => initChecked(SubModuleType.Column));
-
-function initChecked(type: SubModuleType) {
-  return state.checkedInfo.filter((x) => x.resourceType === type).map((x) => x.resourceId);
-}
-
 function handleSelectModule(menu: API.GetMenusQueryResultItem) {
-  const modules1 =
-    dataButtonTree &&
-    dataButtonTree.value.getCheckedKeys(true).map((x) => {
-      return {
-        resourceType: SubModuleType.DataButton,
-        resourceId: x,
-        menuId: menu.id,
-      } as CheckedResourceItem;
-    });
-
-  const modules2 =
-    pageButtonTree &&
-    pageButtonTree.value.getCheckedKeys(true).map((x) => {
-      return {
-        resourceType: SubModuleType.PageButton,
-        resourceId: x,
-        menuId: menu.id,
-      } as CheckedResourceItem;
-    });
-
-  const modules3 =
-    dataColumnTree &&
-    dataColumnTree.value.getCheckedKeys(true).map((x) => {
-      return {
-        resourceType: SubModuleType.Column,
-        resourceId: x,
-        menuId: menu.id,
-      } as CheckedResourceItem;
-    });
-
-  const checkExtends = state.checkedInfo.filter(
-    (x) => x.menuId !== menu.id && x.menuId !== undefined
-  );
-
-  if (modules1 && modules1.length) {
-    checkExtends.push(...modules1);
-  }
-  if (modules2 && modules2.length) {
-    checkExtends.push(...modules2);
-  }
-  if (modules3 && modules3.length) {
-    checkExtends.push(...modules3);
-  }
-
-  state.checkedInfo = checkExtends;
   state.currentMenuId = menu.id;
 }
 
+function handleModuleCheck(data, params) {
+  handleCheck(data, params, moduleTree);
+}
+
+function handlePageButtonCheck(data, params) {
+  handleCheck(data, params, pageButtonTree);
+}
+
+function handleDataButtonCheck(data, params) {
+  handleCheck(data, params, dataButtonTree);
+}
+
+function handleDataColumnCheck(data, params) {
+  handleCheck(data, params, dataColumnTree);
+}
+
+function handleCheck(data, params, treeRef: TreeRef) {
+  const dataMap = {};
+  treeEach(
+    [treeRef.value.store.root],
+    (node) => (dataMap[node.key] = node),
+    (node) => node.childNodes
+  );
+
+  const uncachedCheckedKeys = params.checkedKeys.filter(
+    (item) => !['pageButtonAll', 'dataButtonAll', 'dataColumnAll'].includes(item)
+  );
+  const cachedKeys = state.selectedMenuIds.filter(
+    (item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item)
+  );
+  state.selectedMenuIds = cachedKeys.concat(uncachedCheckedKeys);
+}
+
 function handleConfirm() {
-  const selectedMenuIds = moduleTree.value.getCheckedNodes(false, true).map((x) => x.id);
-  if (state.currentMenuId) {
-    handleSelectModule(getMenuById(state.currentMenuId));
-  }
-  const resourceIds = state.checkedInfo.map((x) => x.resourceId);
-  emit('onConfirm', selectedMenuIds, resourceIds);
+  emit('onConfirm', state.selectedMenuIds);
 }
 </script>
 

--
Gitblit v1.9.1