fix: 修复树节点点击选择逻辑,支持多级组织

This commit is contained in:
12451 2026-07-02 21:38:50 +08:00
parent 69faa75310
commit 8a2e2ffc2b

View File

@ -123,17 +123,37 @@ export default function Devices() {
return; return;
} }
setSelectedKeys(keys); setSelectedKeys(keys);
if (key.startsWith('org-')) {
setSelectedType('organization'); // 找到对应的树节点获取类型和ID
setSelectedId(Number(key.replace('org-', ''))); const findNode = (nodes: TreeInternalNode[], targetKey: string): TreeInternalNode | undefined => {
} else if (key.startsWith('proj-')) { for (const n of nodes) {
setSelectedType('project'); if (n.key === targetKey) return n;
setSelectedId(Number(key.replace('proj-', ''))); if (n.children) {
} else if (key.startsWith('cab-')) { const found = findNode(n.children, targetKey);
setSelectedType('cabinet'); if (found) return found;
setSelectedId(Number(key.replace('cab-', ''))); }
}
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 -------- // -------- 组织/项目 CRUD --------