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 d52af8e..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); - console.log('selectedMenuIds: ', selectedMenuIds); - handleSelectModule(getMenuById(state.currentMenuId)); - const resourceIds = state.checkedInfo.map((x) => x.resourceId); - console.log('resourceIds: ', resourceIds); - emit('onConfirm', selectedMenuIds, resourceIds); + emit('onConfirm', state.selectedMenuIds); } </script> -- Gitblit v1.9.1