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