无人机管理后台前端(已迁走)
张含笑
2025-12-09 5808f76456ca0d40de5074f132b73a5a488e3e13
src/views/layerManagement/components/folderFile.vue
@@ -5,15 +5,15 @@
      <div class="itemRow">
        <div class="label">{{itSLandPlanning ? '文件' : '文件夹'}}名称</div>
        <div>
          <el-input class="ztzf-input inputName" v-model="formData.name" placeholder="请输入" />
          <el-input class="ztzf-layer-input inputName" v-model="formData.name" placeholder="请输入" />
        </div>
      </div>
      <div class="itemRow" v-if="!itSLandPlanning">
     <div class="itemRow" v-if="(layerParams.addAnEditingFolder === 1 && layerParams.fileType !==2) || (layerParams.addAnEditingFolder === 2 && layerParams.fileType !==2) && !itSLandPlanning">
        <div class="label">关联算法</div>
        <div>
          <el-select
            class="ztzf-layer-search filter-item"
            popper-class="ztzf-select-popper"
            @change="handleTypeChange"
            v-model="formData.event_type"
            placeholder="请选择"
@@ -28,7 +28,6 @@
          </el-select>
          <el-select
            v-model="formData.algorithm_name"
            popper-class="ztzf-select-popper"
            class="ztzf-layer-search"
            placeholder="请选择"
            clearable
@@ -47,15 +46,16 @@
    <div class="detailInfo" v-if="layerParams.editFolder">
      <div class="infpItem" v-if="!itSLandPlanning">
        <div class="itemData">
          <div class="title">围栏总数量</div>
          <div class="title">{{ layerParams.fileType === 1 ? '识别区' : '禁飞区' }}总数量</div>
          <div class="num">
            <span>{{ formData.total_count }}</span> 个
            <span class="totalQuantity">{{ formData.total_count }}</span> 个
          </div>
        </div>
        <div class="itemData">
          <div class="title">围栏总面积</div>
          <div class="title">{{ layerParams.fileType === 1 ? '识别区' : '禁飞区' }}总面积</div>
          <div class="num">
            <span>{{ formData.total_area }}</span> m²
            <span class="areaStyle">{{ formData.total_area.toFixed(2) }}</span> m²
          </div>
        </div>
      </div>
@@ -82,6 +82,8 @@
</template>
<script setup>
const emit = defineEmits(['refreshMethod','callParentMethod']);
import EventBus from '@/utils/eventBus';
import { ElMessage } from 'element-plus';
import dayjs from 'dayjs';
import { deleteFolderApi, deitFolderApi, addFolderApi } from '@/api/layer/index';
@@ -115,6 +117,7 @@
  }));
};
const handleTypeChange = typeValue => {
formData.value.algorithm_name = '';
  const matchedCategory = allAlgorithms.value.find(category => category.dict_key === typeValue);
  if (!matchedCategory || !matchedCategory.algorithms || matchedCategory.algorithms.length === 0) {
    // 无匹配的算法时清空
@@ -149,18 +152,21 @@
};
const cancelHandel = () => {
  clearAllData();
   emit('callParentMethod');
};
const submitHandle = () => {
  if (!formData.value.name) {
    ElMessage.error('请输入文件夹名称');
    return;
  }
  if(!itSLandPlanning){
    if (!formData.value.event_type) {
      return ElMessage.warning('请选择类型');
  if(!itSLandPlanning.value){
    if (!formData.value.event_type && layerParams.value.fileType === 1) {
      ElMessage.warning('请选择类型');
      return;
    }
    if (!formData.value.algorithm_name) {
      return ElMessage.warning('请选择算法')
    if (!formData.value.algorithm_name && layerParams.value.fileType === 1) {
      ElMessage.warning('请选择算法');
      return;
    }
  }
  const params = {
@@ -177,13 +183,18 @@
    // 文件夹新增
    addFolderApi(params).then(res => {
      ElMessage.success('新增成功');
        EventBus.emit('gettreeDataApi');
          emit('refreshMethod');
      clearAllData();
       emit('callParentMethod');
    });
  } else {
    //文件夹编辑
    deitFolderApi(params).then(res => {
      ElMessage.success('编辑成功');
        EventBus.emit('gettreeDataApi');
      clearAllData();
       emit('callParentMethod');
    });
  }
};
@@ -221,12 +232,13 @@
  position: absolute;
  top: 0;
  right: 0;
  height: 95%;
height: calc(100% - 32px);
  z-index: 99;
  width: 324px;
  overflow: hidden;
  background: rgba(0, 0, 0, 0.8);
  background: rgba(0,0,0,0.51);
  backdrop-filter: blur(4px);
  border-radius: 8px 8px 8px 8px;
  padding: 16px 12px;
@@ -261,18 +273,31 @@
      font-family: Source Han Sans CN, Source Han Sans CN;
      font-weight: 400;
      font-size: 14px;
      color: #ffffff;
      color: #DFDFDF;
      margin-bottom: 23px;
      .num {
        span {
          font-family: Source Han Sans CN, Source Han Sans CN;
          font-weight: bold;
          font-size: 20px;
          font-size: 14px;
          color: #ffffff;
        }
        .totalQuantity {
        font-family: Source Han Sans CN, Source Han Sans CN;
                    font-weight: bold;
                    font-size: 20px;
        }
         .areaStyle {
                    font-family: Source Han Sans CN, Source Han Sans CN;
                    font-weight: bold;
                    font-size: 20px;
                    color: #FFFFFF;
                }
      }
      .itemData {
        width: 50%;
      }
    }
  }