无人机管理后台前端(已迁走)
张含笑
2025-11-14 b0827f4c098e9507ce1d5dc490111421ebdea29a
src/views/layerManagement/components/leftList.vue
@@ -188,37 +188,44 @@
};
// 定位按钮事件
const handleLocation = node => {
 if (node.data.level === 2) {
    layerParams.value.isSingleLocating = false;
  if (node.data.level === 2) {
    layerParams.value.isSingleLocating = false;
    // 新增:标记当前定位的文件夹ID
    layerParams.value.currentLocationFolderId = node.data.id;
  } else if (node.data.level === 3) {
    layerParams.value.isSingleLocating = true;
    layerParams.value.isSingleLocating = true;
    // 清空文件夹定位标识
    layerParams.value.currentLocationFolderId = null;
  }
  const currentCheckedKeys = [...checkedKeys.value];
  const currentCheckedNodes = [...checkedNodes.value];
  EventBus.emit('focusOnNode', node.data);
  if (node.data.level === 2) {
    const folderChildren = node.data.children || [];
    const childrenIds = folderChildren.map(child => child.id);
    // 合并已选中的节点和当前文件夹的子节点
    const newCheckedKeys = [...new Set([...currentCheckedKeys, ...childrenIds])];
    const newCheckedNodes = [...currentCheckedNodes, ...folderChildren];
    const newChildrenIds = childrenIds.filter(id => !currentCheckedKeys.includes(id));
    const newChildrenNodes = folderChildren.filter(child => newChildrenIds.includes(child.id));
    const newCheckedKeys = [...new Set([...currentCheckedKeys, ...newChildrenIds])];
    const newCheckedNodes = [...currentCheckedNodes, ...newChildrenNodes];
    treeRef.value.setCheckedKeys(newCheckedKeys);
    checkedKeys.value = newCheckedKeys;
    checkedNodes.value = newCheckedNodes;
    coverData.value = newCheckedNodes;
  }
  // 如果是单个节点(level 3),仅添加到选中列表(如果未选中)
  else if (!currentCheckedKeys.includes(node.data.id)) {
  layerParams.value.isSingleLocating = true
    emit('update:coverData', coverData.value);
  } else if (!currentCheckedKeys.includes(node.data.id)) {
    layerParams.value.isSingleLocating = true;
    currentCheckedKeys.push(node.data.id);
    currentCheckedNodes.push(node.data);
    treeRef.value.setCheckedKeys(currentCheckedKeys);
    checkedKeys.value = currentCheckedKeys;
    checkedNodes.value = currentCheckedNodes;
    coverData.value = currentCheckedNodes;
    emit('update:coverData', coverData.value);
  }
  emit('update:coverData', coverData.value);
};
// 编辑按钮事件
const handleEdit = node => {