From 89380e6260a75d1d3b94de687ebcc2f50d50659d Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 03 Feb 2026 15:44:33 +0800
Subject: [PATCH] feat:环境变量配置调整

---
 applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue |   86 +++++++++++++++++++++++++++++++-----------
 1 files changed, 63 insertions(+), 23 deletions(-)

diff --git a/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
index 7e096b0..1afc927 100644
--- a/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
@@ -107,16 +107,12 @@
 							start-placeholder="开始时间"
 							end-placeholder="结束时间"
 							value-format="YYYY-MM-DD HH:mm:ss"
+							:disabled-date="disablePastDate"
 							clearable
 						/>
 					</el-form-item>
 					<el-form-item label="指挥点位置" prop="longitude">
-						<el-input
-							class="command-input"
-							:model-value="commandPointText"
-							disabled
-							placeholder="请选择指挥点位置"
-						>
+						<el-input class="command-input" :model-value="commandPointText" disabled placeholder="请选择指挥点位置">
 							<template #suffix>
 								<span class="suffix-action">地图选点</span>
 							</template>
@@ -157,9 +153,13 @@
 import { saveOperationLog } from '@ztzf/apis'
 import { useRoute } from 'vue-router'
 import { fwAreaDivideDetailApi, fwAreaDivideListApi } from '../partition/partitionApi'
-import { buildEllipsePositions } from '@/utils/cesium/shapeTools'
+import {
+	addBufferRadiusLabelEntity,
+	buildEllipsePositions,
+} from '@/utils/cesium/shapeTools'
 import { cartesian3Convert } from '@/utils/cesium/mapUtil'
 import { AREA_TYPE_STYLE_MAP, BUFFER_LEVEL_STYLES, DEFAULT_AREA_STYLE } from '@ztzf/constants'
+import { MapTooltip } from '@ztzf/utils'
 
 // 初始化表单数据
 const initForm = () => ({
@@ -174,12 +174,12 @@
 })
 
 const commandPointText = computed(() => {
-  // 你也可以改成 `${lng}, ${lat}`
-  if (!formData.value.longitude) {
-	return ''
-  }
-  return `${formData.value.longitude}, ${formData.value.latitude}`;
-});
+	// 你也可以改成 `${lng}, ${lat}`
+	if (!formData.value.longitude) {
+		return ''
+	}
+	return `${formData.value.longitude}, ${formData.value.latitude}`
+})
 
 const emit = defineEmits(['success'])
 const formRef = ref(null) // 表单实例
@@ -198,6 +198,16 @@
 let redPointEntity
 let areaDisplaySource
 let leftClickBound = false
+let mouseMoveBound = false
+let mapTooltip
+let publicCesium
+const tooltipEventKey = 'scene-manage-point-tip'
+const disablePastDate = date => {
+	if (!date) return false
+	const todayStart = new Date()
+	todayStart.setHours(0, 0, 0, 0)
+	return date.getTime() < todayStart.getTime()
+}
 
 // 表单验证规则
 const rules = {
@@ -391,9 +401,7 @@
 					const resolved = resolveLngLatPoint(point)
 					const normalized = normalizeShapePoint(resolved)
 					if (!normalized) return
-					positions.push(
-						Cesium.Cartesian3.fromDegrees(normalized.lng, normalized.lat, normalized.height)
-					)
+					positions.push(Cesium.Cartesian3.fromDegrees(normalized.lng, normalized.lat, normalized.height))
 				})
 			}
 			if (shape?.drawType === 'buffer' && shape?.meta?.center && Array.isArray(shape?.meta?.bufferRadii)) {
@@ -466,6 +474,10 @@
 							material: style.outline,
 						},
 					})
+					addBufferRadiusLabelEntity(dataSource, centerCartesian, radius, {
+						name: 'scene-manage-area-display',
+						customData: { drawType: 'buffer', label: 'radius' },
+					})
 				})
 				return
 			}
@@ -521,6 +533,8 @@
 	const list = res?.data?.data ?? []
 	areaList.value = await ensureAreaExtList(list)
 	renderSceneAreas()
+	await nextTick()
+	fitViewToSceneAreas()
 }
 
 async function getSceneConfigList() {
@@ -532,7 +546,6 @@
 	const res = await fwDefenseSceneListApi(params)
 	sceneConfigList.value = res?.data?.data ?? []
 }
-
 
 // 获取场景配置名称
 function getSceneConfigName(id) {
@@ -555,13 +568,36 @@
 
 // 初始化地图实例
 function initMap() {
-	if (viewer) return
 	const map = mapRef.value?.getMap()
 	if (!map?.viewer) return
-	viewer = map.viewer
+	viewer ||= map.viewer
+	publicCesium ||= map.publicCesium
 	if (!readonly.value && !leftClickBound) {
 		map.publicCesium?.addLeftClickEvent?.(null, LeftClickEvent)
 		leftClickBound = true
+	}
+	if (!readonly.value) ensurePointTooltip()
+}
+
+function ensurePointTooltip() {
+	if (!viewer || !publicCesium || mouseMoveBound) return
+	mapTooltip ||= new MapTooltip(viewer, { offset: { x: 28, y: 24 } })
+	publicCesium.addMouseHandler?.(
+		null,
+		movement => {
+			if (!visible.value || readonly.value) return
+			mapTooltip?.show('点击地图选择指挥点位置', movement.endPosition)
+		},
+		tooltipEventKey
+	)
+	mouseMoveBound = true
+}
+
+function clearPointTooltip() {
+	mapTooltip?.hide()
+	if (publicCesium && mouseMoveBound) {
+		publicCesium.removeMouseHandler?.(tooltipEventKey)
+		mouseMoveBound = false
 	}
 }
 
@@ -626,6 +662,9 @@
 	redPointEntity = null
 	await nextTick()
 	initMap()
+	if (dialogMode.value === 'view') {
+		clearPointTooltip()
+	}
 	await getSceneConfigList()
 	if (dialogMode.value === 'add') {
 		mapRef.value?.zoomToAdminBoundary?.()
@@ -638,8 +677,7 @@
 	fitViewToSceneAreas()
 }
 
-onMounted(() => {
-})
+onMounted(() => {})
 
 watch(
 	() => formData.value.defenseSceneId,
@@ -652,10 +690,12 @@
 watch(
 	() => visible.value,
 	val => {
-		if (!val) clearAreaDisplay()
+		if (!val) {
+			clearAreaDisplay()
+			clearPointTooltip()
+		}
 	}
 )
-
 
 defineExpose({
 	open,

--
Gitblit v1.9.3