无人机管理后台前端(已迁走)
张含笑
2025-10-31 f299c76bccf93f4b1f5efcd01dd0563e0b6ed893
feat:文件夹删除
2 files modified
54 ■■■■■ changed files
src/views/layerManagement/components/leftList.vue 49 ●●●●● patch | view | raw | blame | history
src/views/layerManagement/index.vue 5 ●●●●● patch | view | raw | blame | history
src/views/layerManagement/components/leftList.vue
@@ -27,6 +27,7 @@
        show-checkbox
        node-key="id"
        default-expand-all
        :expand-on-click-node="false"
        @check="handleCheck"
        :props="{
          label: 'name',
@@ -41,7 +42,6 @@
            <!-- 操作按钮组 -->
            <div class="tree-node-actions">
              <el-button
                icon="el-icon-location"
                type="text"
                @click="handleLocation(node)"
@@ -58,7 +58,7 @@
<script setup>
import { ElMessage } from 'element-plus';
import { treeDataApi, deleteFenceApi } from '@/api/layer/index';
import { treeDataApi, deleteFenceApi,deleteFolderApi } from '@/api/layer/index';
import { inject, onMounted } from 'vue';
const emit = defineEmits(['update:coverData', 'update:deitData', 'newFencesMethods']);
import EventBus from '@/utils/eventBus';
@@ -86,7 +86,6 @@
    const res = await treeDataApi();
    treeAllData.value = res.data.data;
    console.log('接口数据', treeAllData.value);
    setupWatch();
  } catch (error) {
    console.error('获取数据失败:', error);
@@ -99,7 +98,6 @@
    newVal => {
      const matchedCategory = treeAllData.value.find(item => item.name === newVal);
      treeData.value = matchedCategory.children;
      if (treeData.value && treeData.value.length > 0) {
        const folderNode = treeData.value[0];
        // 赋值给 layerParams
@@ -113,6 +111,8 @@
const handleCheck = (checkedNodesData, checkedKeysData) => {
  const filteredNodes = checkedKeysData.checkedNodes.filter(node => node.level === 3);
  checkedNodes.value = checkedNodesData.checkedNodes;
  console.log(' checkedKeysData.checkedNodes', checkedNodes.value);
  checkedKeys.value = filteredNodes.map(node => node.id);
  coverData.value = filteredNodes;
  emit('update:coverData', coverData.value);
@@ -142,10 +142,17 @@
  }
};
// 定位按钮事件
const handleLocation = node => {
  console.log('定位操作,节点:', node);
const handleLocation = (node) => {
  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);
  }
};
// 编辑按钮事件
const handleEdit = node => {
  if (node.data.level == 2) {
@@ -174,15 +181,27 @@
// 删除按钮事件
const handleDelete = node => {
  let id = node.data.id;
  deleteFenceApi(id).then(res => {
   if (res.status === 200) {
        ElMessage({
          message: '删除成功',
          type: 'success',
        });
      }
let id = node.data.id;
if(node.data.level === 2 ){
deleteFolderApi(id).then(res => {
    if (res.status === 200) {
      ElMessage({
        message: '删除成功',
        type: 'success',
      });
    }
  });
}else if(node.data.level === 3){
deleteFenceApi(id).then(res => {
    if (res.status === 200) {
      ElMessage({
        message: '删除成功',
        type: 'success',
      });
    }
  });
}
  gettreeDataApi();
};
// 新增围栏
src/views/layerManagement/index.vue
@@ -15,6 +15,7 @@
            !layerParams.addNest &&
            !layerParams.editNest &&
            !layerParams.addFolder &&
            !layerParams.editFolder &&
            activeType !== '2'
          "
          @update:coverData="handleCoverDataUpdate"
@@ -126,9 +127,9 @@
  viewer.entities.removeAll();
  layerParams.value.editDetailData = val;
  drawPolygonExample.editThePatch(true);
    drawPolygonExample.drawTheArea(true);
  const positions = parseGeoDataToPositions(val.geo_data, val.altitude);
  if (positions.length < 3) return; // 少于3个点无法构成多边形
  drawPolygonExample.drawTheArea(true);
  drawPolygonExample.initPolygon(viewer, positions, true);
};
// 编辑文件夹
@@ -251,8 +252,6 @@
// 初始化绘制工具实例
const drawPolygonExample = new DrawPolygon();
// 地图初始化
// 地图初始化
const initMap = () => {
  publicCesiumInstance = new PublicCesium({