无人机管理后台前端(已迁走)
张含笑
2025-11-13 f1393f0ceedea20d671e381f32bdfa29e8dc09a7
src/views/layerManagement/components/leftList.vue
@@ -57,6 +57,7 @@
        node-key="id"
        default-expand-all
        :expand-on-click-node="false"
         :check-on-click-node="false"
        :filter-node-method="filterNode"
        @check="handleCheck"
        :props="{
@@ -150,8 +151,9 @@
  );
};
const handleCheck = (checkedNodesData, checkedKeysData) => {
layerParams.value.isSingleLocating = false
  const filteredNodes = checkedKeysData.checkedNodes.filter(node => node.level === 3);
  checkedNodes.value = checkedNodesData.checkedNodes;
  checkedNodes.value = filteredNodes
  checkedKeys.value = filteredNodes.map(node => node.id);
  coverData.value = filteredNodes;
  emit('update:coverData', coverData.value);
@@ -163,6 +165,7 @@
  );
};
const selectAll = () => {
layerParams.value.isSingleLocating = false
  if (treeRef.value) {
    const allFenceKeys = getAllFenceKeys();
    const allFenceNodes = treeData.value.flatMap(folder => folder.children);
@@ -185,27 +188,38 @@
};
// 定位按钮事件
const handleLocation = node => {
  checkedKeys.value = [];
  checkedNodes.value = [];
  coverData.value = [];
 if (node.data.level === 2) {
    layerParams.value.isSingleLocating = false;
  } else if (node.data.level === 3) {
    layerParams.value.isSingleLocating = true;
  }
  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);
    // treeRef.value.setCheckedKeys(childrenIds);
    // checkedKeys.value = childrenIds;
    // checkedNodes.value = folderChildren;
    coverData.value = folderChildren;
    emit('update:coverData', coverData.value);
  } else {
    // const currentNodeId = node.data.id;
    // treeRef.value.setCheckedKeys([currentNodeId]);
    // checkedKeys.value = [currentNodeId];
    // checkedNodes.value = [node.data];
    coverData.value = [node.data];
    emit('update:coverData', coverData.value);
    const childrenIds = folderChildren.map(child => child.id);
    // 合并已选中的节点和当前文件夹的子节点
    const newCheckedKeys = [...new Set([...currentCheckedKeys, ...childrenIds])];
    const newCheckedNodes = [...currentCheckedNodes, ...folderChildren];
    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
    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);
};
// 编辑按钮事件
const handleEdit = node => {
  if (node.data.level == 2) {
@@ -246,7 +260,6 @@
        deleteFolderApi(id).then(res => {
          ElMessage.success('删除成功');
          gettreeDataApi();
          // 通知父组件删除该文件夹下所有围栏的地图实体
          EventBus.emit('deleteMapEntitiesByFolderId', id);
        });
      } else if (node.data.level === 3) {
@@ -254,7 +267,6 @@
        deleteFenceApi(id).then(res => {
          ElMessage.success('删除成功');
          gettreeDataApi();
          // 通知父组件删除对应的地图实体
          EventBus.emit('deleteMapEntityById', id);
        });
      }
@@ -284,7 +296,6 @@
    layerParams.value.fileType = 2;
  }
};
function uploadFlightFile(file, t) {
  const fileSuffix = file.name.substring(file.name.lastIndexOf('.') + 1);
  if (!['zip'].includes(fileSuffix)) {