From 8a2e2ffc2b3fa06a44bd63ddf02e952a3a00cdb5 Mon Sep 17 00:00:00 2001 From: 12451 <12451@example.com> Date: Thu, 2 Jul 2026 21:38:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A0=91=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=82=B9=E5=87=BB=E9=80=89=E6=8B=A9=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=9A=E7=BA=A7=E7=BB=84=E7=BB=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- software/web/src/pages/devices/index.tsx | 40 ++++++++++++++++++------ 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/software/web/src/pages/devices/index.tsx b/software/web/src/pages/devices/index.tsx index 72d9a97..cc27e7f 100644 --- a/software/web/src/pages/devices/index.tsx +++ b/software/web/src/pages/devices/index.tsx @@ -123,17 +123,37 @@ export default function Devices() { return; } setSelectedKeys(keys); - if (key.startsWith('org-')) { - setSelectedType('organization'); - setSelectedId(Number(key.replace('org-', ''))); - } else if (key.startsWith('proj-')) { - setSelectedType('project'); - setSelectedId(Number(key.replace('proj-', ''))); - } else if (key.startsWith('cab-')) { - setSelectedType('cabinet'); - setSelectedId(Number(key.replace('cab-', ''))); + + // 找到对应的树节点,获取类型和ID + const findNode = (nodes: TreeInternalNode[], targetKey: string): TreeInternalNode | undefined => { + for (const n of nodes) { + if (n.key === targetKey) return n; + if (n.children) { + const found = findNode(n.children, targetKey); + if (found) return found; + } + } + return undefined; + }; + + // 从treeData中查找 + const findInTreeData = (nodes: TreeInternalNode[], targetKey: string): TreeInternalNode | undefined => { + for (const n of nodes) { + if (n.key === targetKey) return n; + if (n.children) { + const found = findInTreeData(n.children, targetKey); + if (found) return found; + } + } + return undefined; + }; + + const node = findInTreeData(treeData, key); + if (node) { + setSelectedType(node._type); + setSelectedId(node._id); } - }, []); + }, [treeData]); // -------- 组织/项目 CRUD --------