From 0c92fd00fae033a2aa04bb65b2d32bd2c8f9fd4a Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 04 Feb 2026 15:48:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue | 62 +++++++++++++++++++++---------
1 files changed, 43 insertions(+), 19 deletions(-)
diff --git a/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue b/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
index 5664834..36a6d36 100644
--- a/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
+++ b/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
@@ -9,11 +9,24 @@
>
<div class="dialog-container">
<div class="left-container">
- <div class="leftMap command-cesium" id="leftMapContainer"></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">{{ dialogTitle }}</div>
- <div class="dialog-container">
+ <div class="header">
+ <span>{{ dialogTitle }}</span>
+
+ <el-icon class="close-btn" @click.stop="visible = false"><Close /></el-icon>
+ </div>
+
+ <div class="content">
<div class="detail-title">轨迹信息</div>
<el-row>
<el-col :span="24">
@@ -51,7 +64,7 @@
</div>
</div>
<div class="footer">
- <el-button color="#2B2B4C" @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
+ <el-button v-if="dialogMode != 'view'" color="#2B2B4C" @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
</div>
</div>
</div>
@@ -59,13 +72,15 @@
</template>
<script setup>
+import { Close } from '@element-plus/icons-vue'
+
import { computed, nextTick, ref } from 'vue'
+import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
import { fwDroneFlightRecordDetailApi } from '@/views/recordManage/historyTracks/fwDroneFlightRecord'
import { fwDroneFlightRecordDetailPageApi } from '@/views/recordManage/historyTracks/flyTrajectory'
-import { PublicCesium } from '@/utils/cesium/publicCesium'
import * as Cesium from 'cesium'
-import { flyVisual } from '@/utils/cesium/mapUtil'
import { ArrowLineMaterialProperty } from '@/utils/cesium/Material'
+import droneIcon from '@/assets/images/dataCockpit/map/drone.png'
const initForm = () => ({
droneName: '',
@@ -75,11 +90,11 @@
stayDuration: '',
})
let list = ref([])
-const emit = defineEmits(['success'])
const formData = ref(initForm()) // 表单数据
const visible = ref(false) // 弹框显隐
const dialogMode = ref('add') // 弹框模式
const dialogReadonly = computed(() => dialogMode.value === 'view')
+const mapRef = ref(null)
const dialogTitle = computed(() => {
if (dialogMode.value === 'edit') {
return '编辑'
@@ -120,6 +135,7 @@
// 渲染航线
function drawFlightPath() {
const positions = list.value.map(p => degreesToC3(p))
+ if (!positions.length) return
droneLineEntity && geometricSource.entities.remove(droneLineEntity)
droneLineEntity = geometricSource.entities.add({
polyline: {
@@ -127,6 +143,16 @@
positions: positions,
material: arrowLineMaterialProperty,
clampToGround: false,
+ },
+ })
+ startDroneEntity && geometricSource.entities.remove(startDroneEntity)
+ startDroneEntity = geometricSource.entities.add({
+ position: positions[0],
+ billboard: {
+ image: droneIcon,
+ width: 40,
+ height: 40,
+ verticalOrigin: Cesium.VerticalOrigin.CENTER,
},
})
viewer.flyTo(droneLineEntity, { duration: 0 })
@@ -139,6 +165,7 @@
viewer = null
geometricSource = null
droneLineEntity = null
+ startDroneEntity = null
}
function getRowClassName({ row }) {
@@ -147,17 +174,12 @@
return row?.isAlarm === 1 ? 'alarm-row' : ''
}
-let viewer, geometricSource, droneLineEntity
+let viewer, geometricSource, droneLineEntity, startDroneEntity
function initMap() {
if (viewer) return
- const publicCesiumInstance = new PublicCesium({
- dom: 'leftMapContainer',
- flatMode: false,
- terrain: true,
- layerMode: 4,
- boundary: false,
- })
- viewer = publicCesiumInstance.getViewer()
+ const map = mapRef.value?.getMap?.()
+ if (!map?.viewer) return
+ viewer = map.viewer
geometricSource = new Cesium.CustomDataSource('geometricSource')
viewer.dataSources.add(geometricSource)
}
@@ -180,9 +202,11 @@
</script>
<style scoped lang="scss">
-:deep(.alarm-row td) {
- .cell {
- color: #d93025;
+:deep(.alarm-row) {
+ background: #2B2B4C !important;
+
+ td {
+ background-color: transparent !important;
}
}
</style>
--
Gitblit v1.9.3