| | |
| | | <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.event_type" |
| | | placeholder="请选择" |
| | |
| | | </el-select> |
| | | <el-select |
| | | v-model="formData.algorithm_name" |
| | | popper-class="ztzf-select-popper" |
| | | class="ztzf-layer-search" |
| | | placeholder="请选择" |
| | | clearable |
| | |
| | | </div> |
| | | </div> |
| | | <div class="detailInfo" v-if="layerParams.editFolder"> |
| | | <div class="infpItem"> |
| | | <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> |
| | |
| | | </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'; |
| | | import { getTicketInfo } from '@/api/tickets/ticket'; |
| | | import { computed } from 'vue'; |
| | | const layerParams = inject('layerParams'); |
| | | const types = ref([]); //工单类型 |
| | | const allAlgorithms = ref([]); |
| | |
| | | }); |
| | | 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; |
| | |
| | | })); |
| | | }; |
| | | 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) { |
| | | // 无匹配的算法时清空 |
| | |
| | | }; |
| | | const cancelHandel = () => { |
| | | clearAllData(); |
| | | emit('callParentMethod'); |
| | | }; |
| | | const submitHandle = () => { |
| | | |
| | | if(!formData.value.name){ |
| | | ElMessage({ |
| | | message: '请输入文件夹名称', |
| | | type: 'error', |
| | | }); |
| | | return |
| | | 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.event_type){ |
| | | ElMessage({ |
| | | message: '请选择类型', |
| | | type: 'error', |
| | | }); |
| | | return |
| | | if (!formData.value.algorithm_name && layerParams.value.fileType === 1) { |
| | | ElMessage.warning('请选择算法'); |
| | | return; |
| | | } |
| | | if(!formData.value.algorithm_name){ |
| | | ElMessage({ |
| | | message: '请选择算法', |
| | | type: 'error', |
| | | }); |
| | | return |
| | | } |
| | | } |
| | | const params = { |
| | | category_id: layerParams.value.fileType === 1 ? 1 : 2, |
| | | name: formData.value.name, |
| | |
| | | if (layerParams.value.addAnEditingFolder === 1) { |
| | | // 文件夹新增 |
| | | addFolderApi(params).then(res => { |
| | | ElMessage.success('新增成功'); |
| | | ElMessage.success('新增成功'); |
| | | EventBus.emit('gettreeDataApi'); |
| | | emit('refreshMethod'); |
| | | clearAllData(); |
| | | emit('callParentMethod'); |
| | | }); |
| | | } else { |
| | | //文件夹编辑 |
| | | deitFolderApi(params).then(res => { |
| | | ElMessage.success('编辑成功'); |
| | | ElMessage.success('编辑成功'); |
| | | EventBus.emit('gettreeDataApi'); |
| | | clearAllData(); |
| | | emit('callParentMethod'); |
| | | }); |
| | | } |
| | | clearAllData(); |
| | | }; |
| | | onMounted(async () => { |
| | | |
| | | await getTicketInfoData(); |
| | | const addOrEditStatus = layerParams.value.addAnEditingFolder || 1; |
| | | // 判断是否有编辑数据,有则回显 |
| | |
| | | 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日') : '', |
| | |
| | | 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; |
| | | |
| | |
| | | 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%; |
| | | |
| | | } |
| | | } |
| | | } |