无人机管理后台前端(已迁走)
张含笑
2025-12-06 96515f2decfdf63cf5be486221c9219d9c5e8619
feat:11
1 files modified
66 ■■■■■ changed files
src/views/layerManagement/components/leftList.vue 66 ●●●●● patch | view | raw | blame | history
src/views/layerManagement/components/leftList.vue
@@ -343,12 +343,76 @@
    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) {