From f1c20e32e30268e9244a599c2f61b20b1bda9c9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E7=8A=80=E9=BA=9F?= Date: Thu, 27 Aug 2026 00:10:12 +0800 Subject: [PATCH] =?UTF-8?q?FIX+CHG:=20=E4=BF=AE=E5=A4=8D=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=94=99=E8=AF=AF=20+=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=91=E5=BD=A2=E6=94=B9=E7=94=A8=E5=AE=98=E6=96=B9=20t-enha?= =?UTF-8?q?nced-table?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - access.ts 删除重复 layoutMap 声明(修复 vite Transform PARSE_ERROR 导致页面报错) - menu/index.vue 树形改官方方案:t-enhanced-table + tree(childrenKey/treeNodeColumnIndex/defaultExpandAll/indent) + 异步数据后 ref.expandAll()(tdesign 文档确认 t-table 不支持 tree,必须 enhanced-table;defaultExpandAll 只在首次渲染生效) --- .../src/views/system/menu/index.vue | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/apps/web-tdesign/src/views/system/menu/index.vue b/apps/web-tdesign/src/views/system/menu/index.vue index e540273..91d1f73 100644 --- a/apps/web-tdesign/src/views/system/menu/index.vue +++ b/apps/web-tdesign/src/views/system/menu/index.vue @@ -18,20 +18,13 @@ import { const { hasAccessByCodes } = useAccess(); const loading = ref(false); -// 扁平化后的菜单列表(含 depth 用于缩进展示),避免依赖 t-table 的 tree 渲染 -const flatList = ref<(MenuNode & { depth: number })[]>([]); +// 菜单树(嵌套 children 结构),由 t-enhanced-table 树形模式渲染 +const tree = ref([]); +// t-enhanced-table 实例:异步数据加载完成后手动展开全部节点 +const tableRef = ref(null); const dialogOpen = ref(false); const editing = ref(null); -/** 递归将树扁平化为数组,按层级加 depth 字段用于 UI 缩进 */ -function flatten(nodes: MenuNode[], depth: number, acc: (MenuNode & { depth: number })[] = []): (MenuNode & { depth: number })[] { - for (const n of nodes) { - acc.push({ ...n, depth }); - if (n.children?.length) flatten(n.children, depth + 1, acc); - } - return acc; -} - const form = reactive({ parentId: 0, name: '', @@ -49,8 +42,10 @@ async function load() { loading.value = true; try { const data = await getMenuTree(); - // 扁平化:td-table 的 tree 模式在全量注册 TDesign 后渲染不稳定,改为按 depth 缩进的一维列表 - flatList.value = flatten(data.tree ?? [], 0); + tree.value = data.tree ?? []; + // 异步数据就绪后手动展开全部节点(defaultExpandAll 只在首次渲染时生效) + await nextTick(); + tableRef.value?.expandAll?.(); } finally { loading.value = false; } @@ -138,18 +133,22 @@ onMounted(load); - - +