diff --git a/src/utils/tree.ts b/src/utils/tree.ts new file mode 100644 index 0000000..86bc254 --- /dev/null +++ b/src/utils/tree.ts @@ -0,0 +1,14 @@ +export function filterTree(tree: T[], iterate: (item: T, index: number) => boolean): T[] { + function filter(tree: T[]): T[] { + return tree.filter((item, index) => { + if (!iterate(item, index)) { + return false; + } + if (item.children && item.children.length > 0) { + item.children = filter(item.children); + } + return true; + }) + } + return filter(tree); +} diff --git a/src/views/system/menu/MenuDrawer.vue b/src/views/system/menu/MenuDrawer.vue index 4e47529..411e3da 100644 --- a/src/views/system/menu/MenuDrawer.vue +++ b/src/views/system/menu/MenuDrawer.vue @@ -10,6 +10,8 @@ import {BasicDrawer, useDrawerInner} from '/@/components/Drawer'; import {list, saveOrUpdateMenu} from './menu.api'; import { useAdapt } from '/@/hooks/system/useAutoAdapt.ts'; + import { filterTree } from '/@/utils/tree'; + // 声明Emits const emit = defineEmits(['success', 'register']); const {width}= useAdapt(); @@ -36,8 +38,15 @@ isUpdate.value = !!data?.isUpdate; menuType.value = data?.record?.menuType; - //获取下拉树信息 - const treeData = await list(); + // 获取当前 record 的 id + const currentId = data?.record?.id; + + //获取下拉树信息 + let treeData = await list(); + if (currentId) { + treeData = filterTree(treeData, (item: any) => item.id !== currentId); + } + updateSchema([{ field: 'parentId', componentProps: {treeData},