From 9eb8bb59b802ceef1f52d334c8e577f2bf02c90e Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Wed, 21 Jan 2026 15:12:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue |   70 +++++++++++++++++++++--------------
 1 files changed, 42 insertions(+), 28 deletions(-)

diff --git a/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue b/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
index c03f4ae..6a2eb39 100644
--- a/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
+++ b/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
@@ -1,7 +1,7 @@
 <template>
 	<el-dialog
 		v-model="visible"
-		class="ztzf-page-map-view-dialog"
+		class="command-page-map-view-dialog"
 		:show-close="false"
 		:close-on-click-modal="false"
 		destroy-on-close
@@ -9,13 +9,25 @@
 	>
 		<div class="dialog-container">
 			<div class="left-container">
-				<div class="leftMap ztzf-cesium" id="detectionRangeMap"></div>
+				<CommonCesiumMap
+					ref="mapRef"
+					class="leftMap command-cesium"
+					:active="visible"
+					:flat-mode="false"
+					:terrain="true"
+					:layer-mode="4"
+					:boundary="false"
+				/>
 			</div>
 
 			<div class="right-container">
-				<div class="header">{{ formTitle }}</div>
+				<div class="header">
+					<span>{{ formTitle }}</span>
+				
+					<el-icon class="close-btn" @click.stop="visible = false"><Close /></el-icon>
+				</div>
 
-				<div class="dialog-container" v-if="dialogReadonly">
+				<div class="content" v-if="dialogReadonly">
 					<el-row>
 						<el-col :span="24">
 							<div class="label">侦测设备</div>
@@ -47,8 +59,8 @@
 				<el-form v-else ref="formRef" class="dialog-form" :model="formData" :rules="rules" label-width="110px">
 					<el-form-item label="侦测设备" prop="deviceId">
 						<el-select
-							class="ztzf-data-cockpit-select"
-							popper-class="ztzf-data-cockpit-select-popper"
+							class="command-select"
+							popper-class="command-select-popper"
 							v-model="formData.deviceId"
 							placeholder="请选择"
 							clearable
@@ -59,9 +71,10 @@
 					</el-form-item>
 					<el-form-item label="设备类型" prop="deviceType">
 						<el-select
-							class="ztzf-data-cockpit-select"
-							popper-class="ztzf-data-cockpit-select-popper"
+							class="command-select"
+							popper-class="command-select-popper"
 							v-model="formData.deviceType"
+							disabled
 							placeholder="请选择"
 							clearable
 						>
@@ -75,7 +88,7 @@
 					</el-form-item>
 					<el-form-item label="设备位置" prop="deployLocation">
 						<el-input
-							class="ztzf-data-cockpit-search-input"
+							class="command-input"
 							v-model="formData.deployLocation"
 							disabled
 							placeholder="请选择位置"
@@ -87,23 +100,25 @@
 					</el-form-item>
 					<el-form-item label="设备编号" prop="deviceSn">
 						<el-input
-							class="ztzf-data-cockpit-search-input"
+							class="command-input"
 							v-model="formData.deviceSn"
+							disabled
 							placeholder="请输入"
 							clearable
 						/>
 					</el-form-item>
 					<el-form-item label="设备型号" prop="deviceModel">
 						<el-input
-							class="ztzf-data-cockpit-search-input"
+							class="command-input"
 							v-model="formData.deviceModel"
+							disabled
 							placeholder="请输入"
 							clearable
 						/>
 					</el-form-item>
 					<el-form-item label="覆盖范围(m)" prop="effectiveRangeKm">
 						<el-input-number
-							class="ztzf-data-cockpit-search-input"
+							class="command-input"
 							v-model="formData.effectiveRangeKm"
 							:min="0"
 							:precision="2"
@@ -131,6 +146,8 @@
 </template>
 
 <script setup>
+import { Close } from '@element-plus/icons-vue'
+
 import { computed, inject, nextTick, ref, watch } from 'vue'
 import { ElMessage } from 'element-plus'
 import {
@@ -138,9 +155,10 @@
 	detectionRangePageApi,
 	detectionRangeSubmitApi,
 } from '@/api/detectionCountermeasure/detectionRange'
-import { PublicCesium } from '@/utils/cesium/publicCesium'
+import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
 import * as Cesium from 'cesium'
-import deviceZcImg from '@/assets/images/dataCockpit/device-zc.svg'
+
+import commandPost from '@/assets/images/dataCockpit/legend/command-post.png'
 
 const initForm = () => ({
 	deviceId: '', // 侦测设备ID
@@ -161,6 +179,7 @@
 const submitting = ref(false) // 提交中
 const deviceOptions = ref([])
 const dialogReadonly = computed(() => dialogMode.value === 'view')
+const mapRef = ref(null)
 let viewer
 let redPointEntity
 let rangeCircleEntity
@@ -267,9 +286,9 @@
 		redPointEntity = viewer.entities.add({
 			position: Cesium.Cartesian3.fromDegrees(longitude, latitude),
 			billboard: {
-				image: deviceZcImg, // 这里替换为你的图片路径或变量 deviceZcImg
-				width: 30, // 可选:设置图片宽度
-				height: 42, // 可选:设置图片高度
+				image: commandPost, // 这里替换为你的图片路径或变量 deviceZcImg
+				width: 40,
+				height: 56,
 				verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 设置图片底部对齐坐标点
 			},
 			label: {
@@ -284,7 +303,7 @@
 				verticalOrigin: Cesium.VerticalOrigin.CENTER,
 				outlineWidth: 1,
 				outlineColor: Cesium.Color.WHITE,
-				pixelOffset: new Cesium.Cartesian2(0, -60),
+				pixelOffset: new Cesium.Cartesian2(0, -72),
 				eyeOffset: new Cesium.Cartesian3(0, 0, -20),
 			},
 		})
@@ -326,7 +345,7 @@
 				material: Cesium.Color.fromCssColorString('#6b9ca8').withAlpha(0.6),
 				outline: true,
 				outlineColor: Cesium.Color.fromCssColorString('#6b9ca8').withAlpha(0.6),
-				heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+				heightReference: Cesium.HeightReference.NONE,
 			},
 		})
 		return
@@ -338,17 +357,12 @@
 
 function initMap() {
 	if (viewer) return
-	const publicCesiumInstance = new PublicCesium({
-		dom: 'detectionRangeMap',
-		flatMode: false,
-		terrain: true,
-		layerMode: 4,
-		boundary: false,
-	})
+	const map = mapRef.value?.getMap()
+	if (!map?.viewer) return
+	viewer = map.viewer
 	if (!dialogReadonly.value) {
-		publicCesiumInstance.addLeftClickEvent(null, handleMapClick)
+		map.publicCesium?.addLeftClickEvent?.(null, handleMapClick)
 	}
-	viewer = publicCesiumInstance.getViewer()
 }
 
 function handleMapClick(click) {

--
Gitblit v1.9.3