diff --git a/src/views/govern/setting/statisticalType/binding.vue b/src/views/govern/setting/statisticalType/binding.vue index 867063e..50a7635 100644 --- a/src/views/govern/setting/statisticalType/binding.vue +++ b/src/views/govern/setting/statisticalType/binding.vue @@ -243,17 +243,25 @@ const filterTree1 = () => { const filterNodes = (node: any, query: any) => { if (searchKey.value) { - const result: any = [] - node.forEach((node: any) => { - let newNode = { ...node } - if (node.children) { - newNode.children = filterNodes(node.children, query) + const keyword = query.trim().toLowerCase() // 获取搜索关键字并转换为小写 + const nodes = node + // 使用递归函数过滤树形数据 + const filteredNodes = [] + for (const node of nodes) { + if (node.label.toLowerCase().includes(keyword)) { + // 如果节点的标签包含关键字,将其添加到结果中 + filteredNodes.push(node) + } else if (node.children && node.children.length > 0) { + // 如果节点有子节点,则递归过滤子节点 + const filteredChildren: any = filterNodes(node.children, keyword) + if (filteredChildren.length > 0) { + // 如果子节点中有匹配的结果,则添加父节点 + const clonedNode = { ...node, children: filteredChildren } + filteredNodes.push(clonedNode) + } } - if (newNode.label.includes(query) || (newNode.children && newNode.children.length)) { - result.push(newNode) - } - }) - return (fromData.value = result) + } + return (fromData.value = filteredNodes) } else { init(1) }