From 5808f76456ca0d40de5074f132b73a5a488e3e13 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 09 Dec 2025 09:12:03 +0800
Subject: [PATCH] Merge branch 'refs/heads/feature/v9.0/9.0.1' into test
---
src/views/layerManagement/components/folderFile.vue | 231 +++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 157 insertions(+), 74 deletions(-)
diff --git a/src/views/layerManagement/components/folderFile.vue b/src/views/layerManagement/components/folderFile.vue
index 9342946..eac8fde 100644
--- a/src/views/layerManagement/components/folderFile.vue
+++ b/src/views/layerManagement/components/folderFile.vue
@@ -1,22 +1,21 @@
<template>
<div class="rightContainer">
- <div class="contenttitle">文件夹信息</div>
+ <div class="contenttitle">{{itSLandPlanning ? '文件' : '文件夹'}}信息</div>
<div class="centerBox">
-
<div class="itemRow">
- <div class="label">文件夹名称</div>
+ <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">
+ <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.type"
+ v-model="formData.event_type"
placeholder="请选择"
clearable
>
@@ -28,12 +27,11 @@
/>
</el-select>
<el-select
- v-model="formData.algorithm"
- popper-class="ztzf-select-popper"
+ v-model="formData.algorithm_name"
class="ztzf-layer-search"
placeholder="请选择"
clearable
- :disabled="!formData.type"
+ :disabled="!formData.event_type"
>
<el-option
v-for="item in algorithms"
@@ -45,25 +43,34 @@
</div>
</div>
</div>
- <div class="detailInfo">
- <div class="infpItem">
+ <div class="detailInfo" v-if="layerParams.editFolder">
+ <div class="infpItem" v-if="!itSLandPlanning">
<div class="itemData">
- <div class="title">围栏总数量</div>
- <div class="num"><span>{{totalCount}}</span>个</div>
+ <div class="title">{{ layerParams.fileType === 1 ? '识别区' : '禁飞区' }}总数量</div>
+
+ <div class="num">
+ <span class="totalQuantity">{{ formData.total_count }}</span> 个
+ </div>
</div>
<div class="itemData">
- <div class="title">围栏总面积</div>
- <div class="num"><span>{{totalArea}}</span>m²</div>
+ <div class="title">{{ layerParams.fileType === 1 ? '识别区' : '禁飞区' }}总面积</div>
+ <div class="num">
+ <span class="areaStyle">{{ formData.total_area.toFixed(2) }}</span> m²
+ </div>
</div>
</div>
<div class="infpItem">
<div class="itemData">
<div class="title">创建时间</div>
- <div class="num"><span>{{formData?.create_time}}</span></div>
+ <div class="num">
+ <span>{{ formData?.create_time }}</span>
+ </div>
</div>
<div class="itemData">
<div class="title">创建人</div>
- <div class="num"><span>{{formData?.create_name}}</span></div>
+ <div class="num">
+ <span>{{ formData?.create_name }}</span>
+ </div>
</div>
</div>
</div>
@@ -75,86 +82,148 @@
</template>
<script setup>
-import { deitFenceApi } from '@/api/layer/index';
-import {
- getTicketInfo,
-} from '@/api/tickets/ticket';
+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';
+import { getTicketInfo } from '@/api/tickets/ticket';
+import { computed } from 'vue';
const layerParams = inject('layerParams');
-const types = ref([]) //工单类型
-const allAlgorithms = ref([])
-const algorithms = ref([])
-
+const types = ref([]); //工单类型
+const allAlgorithms = ref([]);
+const algorithms = ref([]);
const formData = ref({
- folder_id: '',
+ category_id: '',
name: '',
- description: '',
- is_enabled: false,
- area: '',
- altitude: '',
- control_start_time: '',
- control_end_time: '',
- geo_data: '',
- algorithm:'',
- type: '',
+ event_type: '',
+ algorithm_name: '',
+ total_count: 0,
+ total_area: 0,
});
-const detailData = ref(null)
-const totalArea = ref(null)
-const totalCount = ref(null)
-detailData.value = layerParams.value.editDetailData
-totalArea.value = layerParams.value.total_area
-totalCount.value = layerParams.value.total_count
-
+const detailData = ref(null);
+detailData.value = layerParams.value.editFolderData;
+const props = defineProps({
+ activeName: String,
+});
+const itSLandPlanning = computed(() => props.activeName === '国土空间规划')
const getTicketInfoData = async () => {
- const response = await getTicketInfo()
- const { dept_data, event_type, ai_type, info } = response.data.data
- allAlgorithms.value = info
+ const response = await getTicketInfo();
+ const { dept_data, event_type, ai_type, info } = response.data.data;
+ allAlgorithms.value = info;
types.value = Object.entries(event_type).map(([key, value]) => ({
label: value,
value: key,
- }))
-
-}
-const handleTypeChange=(typeValue)=>{
-
- const matchedCategory = allAlgorithms.value.find(category => category.dict_key === typeValue)
+ }));
+};
+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) {
// 无匹配的算法时清空
- algorithms.value = []
- return
+ algorithms.value = [];
+ return;
}
algorithms.value = matchedCategory.algorithms.map(algo => ({
label: algo.dict_value,
value: algo.dict_key,
dict_key: algo.dict_key,
dict_value: algo.dict_value,
- }))
- console.log(' algorithms.value ', algorithms.value );
-}
+ }));
+};
const clearAllData = () => {
- detailData.value = {}
- // 清空回显相关数据
+ formData.value = {
+ category_id: '',
+ name: '',
+ event_type: '',
+ algorithm_name: '',
+ total_count: 0,
+ total_area: 0,
+ create_time: '',
+ create_name: '',
+ };
+ algorithms.value = [];
detailData.value = {};
- totalArea.value = null;
- totalCount.value = null;
- // 重置判断状态(可选,根据业务需求是否需要)
layerParams.value.decideWhetherToAddOrEdit = 1;
- // 重置面板状态和缓存数据
layerParams.value.addFolder = false;
layerParams.value.editFolder = false;
layerParams.value.editDetailData = null;
layerParams.value.polygonPosition = null;
};
const cancelHandel = () => {
- clearAllData()
-
+ clearAllData();
+ emit('callParentMethod');
};
const submitHandle = () => {
-
- clearAllData()
-
+ if (!formData.value.name) {
+ ElMessage.error('请输入文件夹名称');
+ return;
+ }
+ if(!itSLandPlanning.value){
+ if (!formData.value.event_type && layerParams.value.fileType === 1) {
+ ElMessage.warning('请选择类型');
+ return;
+ }
+ if (!formData.value.algorithm_name && layerParams.value.fileType === 1) {
+ ElMessage.warning('请选择算法');
+ return;
+ }
+ }
+ const params = {
+ category_id: layerParams.value.fileType === 1 ? 1 : 2,
+ name: formData.value.name,
+ event_type: formData.value.event_type,
+ algorithm_name: formData.value.algorithm_name,
+ };
+ // 如果是编辑模式,才添加 id
+ if (layerParams.value.addAnEditingFolder === 2) {
+ params.id = detailData.value.id;
+ }
+ if (layerParams.value.addAnEditingFolder === 1) {
+ // 文件夹新增
+ 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');
+ });
+ }
};
-onMounted(() => {
- getTicketInfoData()
+onMounted(async () => {
+ await getTicketInfoData();
+ const addOrEditStatus = layerParams.value.addAnEditingFolder || 1;
+ // 判断是否有编辑数据,有则回显
+ if (detailData.value && addOrEditStatus === 2) {
+ const editData = detailData.value;
+ formData.value = {
+ ...formData.value,
+ category_id: editData.category_id,
+ name: editData.name,
+ event_type: editData.event_type, // 回显“关联算法类型”值
+ algorithm_name: editData.algorithm_name, // 回显“算法”值
+
+ total_count: editData.total_count,
+ total_area: editData.total_area,
+ create_time: editData.create_time ? dayjs(editData.create_time).format('YYYY年MM月DD日') : '',
+ create_name: editData.create_name,
+ };
+ if (formData.value.event_type) {
+ handleTypeChange(formData.value.event_type);
+
+ setTimeout(() => {
+ formData.value.algorithm_name = editData.algorithm_name;
+ }, 100);
+ }
+ }
});
</script>
@@ -163,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;
@@ -203,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%;
+
}
}
}
--
Gitblit v1.9.3