fix: 修复树节点点击选择逻辑,支持多级组织
This commit is contained in:
parent
69faa75310
commit
8a2e2ffc2b
@ -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 --------
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user