|
@@ -95,6 +95,24 @@ const findNodePath = (
|
|
|
return null
|
|
return null
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const findNodeById = (
|
|
|
|
|
+ nodes: TreeNode[],
|
|
|
|
|
+ targetId: number | string
|
|
|
|
|
+): TreeNode | null => {
|
|
|
|
|
+ for (const node of nodes) {
|
|
|
|
|
+ if (node.id === targetId) {
|
|
|
|
|
+ return node
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (node.children?.length) {
|
|
|
|
|
+ const result = findNodeById(node.children, targetId)
|
|
|
|
|
+ if (result) return result
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return null
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const locateNode = (targetId: number | string) => {
|
|
const locateNode = (targetId: number | string) => {
|
|
|
if (!targetId || !treeList.value.length) return
|
|
if (!targetId || !treeList.value.length) return
|
|
|
|
|
|
|
@@ -182,12 +200,17 @@ const handleMenuClick = async (action: 'add' | 'edit' | 'delete') => {
|
|
|
break
|
|
break
|
|
|
case 'delete':
|
|
case 'delete':
|
|
|
if (!selectedNode.value?.id) return
|
|
if (!selectedNode.value?.id) return
|
|
|
|
|
+ const parentId = selectedNode.value.parentId
|
|
|
await message.delConfirm()
|
|
await message.delConfirm()
|
|
|
await IotTreeApi.deleteIotTree(selectedNode.value.id)
|
|
await IotTreeApi.deleteIotTree(selectedNode.value.id)
|
|
|
message.success(t('common.delSuccess'))
|
|
message.success(t('common.delSuccess'))
|
|
|
await getTreeInfo()
|
|
await getTreeInfo()
|
|
|
- if (selectedNode.value.parentId) {
|
|
|
|
|
- locateNode(selectedNode.value.parentId)
|
|
|
|
|
|
|
+ if (parentId) {
|
|
|
|
|
+ locateNode(parentId)
|
|
|
|
|
+ const parentNode = findNodeById(treeList.value, parentId)
|
|
|
|
|
+ if (parentNode) {
|
|
|
|
|
+ emits('node-click', parentNode)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
break
|
|
break
|
|
|
}
|
|
}
|