| | |
| | | gettreeDataApi(); |
| | | }); |
| | | } |
| | | // 递归查找匹配搜索关键词的节点ID |
| | | const findMatchedNodeKeys = (nodes, keyword) => { |
| | | let matchedKeys = []; |
| | | if (!nodes || !keyword) return matchedKeys; |
| | | |
| | | nodes.forEach(node => { |
| | | // 匹配当前节点名称(只勾选level=3的围栏节点) |
| | | if (node.level === 3 && node.name.includes(keyword)) { |
| | | matchedKeys.push(node.id); |
| | | } |
| | | // 递归查找子节点 |
| | | if (node.children && node.children.length > 0) { |
| | | matchedKeys = [...matchedKeys, ...findMatchedNodeKeys(node.children, keyword)]; |
| | | } |
| | | }); |
| | | return matchedKeys; |
| | | }; |
| | | |
| | | // 递归查找匹配搜索关键词的节点数据 |
| | | const findMatchedNodes = (nodes, keyword) => { |
| | | let matchedNodes = []; |
| | | if (!nodes || !keyword) return matchedNodes; |
| | | |
| | | nodes.forEach(node => { |
| | | // 匹配当前节点名称(只勾选level=3的围栏节点) |
| | | if (node.level === 3 && node.name.includes(keyword)) { |
| | | matchedNodes.push(node); |
| | | } |
| | | // 递归查找子节点 |
| | | if (node.children && node.children.length > 0) { |
| | | matchedNodes = [...matchedNodes, ...findMatchedNodes(node.children, keyword)]; |
| | | } |
| | | }); |
| | | return matchedNodes; |
| | | }; |
| | | function search() { |
| | | treeRef.value?.filter(formData.value.dkbh); |
| | | checkedKeys.value = []; |
| | | checkedNodes.value = []; |
| | | coverData.value = []; |
| | | treeRef.value?.setCheckedKeys([]); |
| | | console.log('checkedKeys.value',checkedKeys.value); |
| | | |
| | | if (formData.value.dkbh.trim()) { |
| | | nextTick(() => { |
| | | // 查找匹配的节点ID和数据 |
| | | const matchedKeys = findMatchedNodeKeys(treeData.value, formData.value.dkbh.trim()); |
| | | const matchedNodes = findMatchedNodes(treeData.value, formData.value.dkbh.trim()); |
| | | |
| | | // 更新勾选状态 |
| | | checkedKeys.value = matchedKeys; |
| | | checkedNodes.value = matchedNodes; |
| | | coverData.value = matchedNodes; |
| | | |
| | | // 设置树的勾选状态 |
| | | if (treeRef.value) { |
| | | treeRef.value.setCheckedKeys(matchedKeys); |
| | | } |
| | | |
| | | // 触发父组件更新 |
| | | emit('update:coverData', coverData.value); |
| | | }); |
| | | } |
| | | } |
| | | function reset() { |
| | | formData.value.dkbh = ''; |
| | | // 清空勾选状态 |
| | | checkedKeys.value = []; |
| | | checkedNodes.value = []; |
| | | coverData.value = []; |
| | | treeRef.value?.setCheckedKeys([]); |
| | | treeRef.value?.filter(''); |
| | | } |
| | | function filterNode(value, data) { |