From 04a859aa95b231c032c71d06518497a973c2f4e8 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 15 Jan 2026 17:41:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue | 110 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 65 insertions(+), 45 deletions(-)
diff --git a/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue b/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
index 4e5f403..cc0bd5c 100644
--- a/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
+++ b/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
@@ -1,32 +1,59 @@
-<template>
- <el-dialog v-model="visible" :title="dialogTitle" @closed="handleClosed" destroy-on-close>
- <div class="bodyBox">
- <div class="leftMap ztzf-cesium" id="leftMapContainer"></div>
- <div class="rightInfo">
- <div>
- <div>无人机名称:{{ formData.droneName }}</div>
- <div>序列号: {{ formData.serialNo }}</div>
- <div>告警时间: {{ formData.alarmTime }}</div>
- <div>触发原因: {{ formData.triggerType }}</div>
- <div>停留时长: {{ formData.stayDuration }}</div>
+<template>
+ <el-dialog class="ztzf-page-map-view-dialog" v-model="visible" :show-close="false"
+ :close-on-click-modal="false" @closed="handleClosed" destroy-on-close>
+ <div class="dialog-container">
+ <div class="left-container">
+ <div class="leftMap ztzf-cesium" id="leftMapContainer"></div>
+ </div>
+ <div class="right-container">
+ <div class="header">{{ dialogTitle }}</div>
+ <div class="dialog-container">
+ <div class="detail-title">轨迹信息</div>
+ <el-row>
+ <el-col :span="24">
+ <div class="label">无人机名称</div>
+ <div class="val">{{ formData.droneName }}</div>
+ </el-col>
+ <el-col :span="24">
+ <div class="label">序列号</div>
+ <div class="val">{{ formData.serialNo }}</div>
+ </el-col>
+ <el-col :span="24">
+ <div class="label">告警时间</div>
+ <div class="val">{{ formData.alarmTime }}</div>
+ </el-col>
+ <el-col :span="24">
+ <div class="label">触发原因</div>
+ <div class="val">{{ formData.triggerType }}</div>
+ </el-col>
+ <el-col :span="24">
+ <div class="label">停留时长</div>
+ <div class="val">{{ formData.stayDuration }}</div>
+ </el-col>
+ </el-row>
+ <div class="detail-title">轨迹点</div>
+ <div class="ztzf-table-container">
+ <div class="ztzf-table-content">
+ <el-table class="ztzf-data-cockpit-table" :data="list">
+ <el-table-column type="index" width="60" label="序号" />
+ <el-table-column label="经纬度">
+ <template #default="{ row }">{{ row.longitude }},{{ row.latitude }}</template>
+ </el-table-column>
+ <el-table-column prop="createTime" label="时间" />
+ </el-table>
+ </div>
+ </div>
</div>
- <el-table :data="list">
- <el-table-column type="index" width="60" label="序号" />
- <el-table-column label="经纬度">
- <template #default="{ row }">{{ row.longitude }},{{ row.latitude }}</template>
- </el-table-column>
- <el-table-column prop="createTime" label="时间" />
- </el-table>
+ <div class="footer">
+ <el-button color="#2B2B4C" @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
+ </div>
</div>
</div>
- <template #footer>
- <el-button @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
- </template>
</el-dialog>
</template>
<script setup>
-import { computed, ref } from 'vue'
+import { computed, nextTick, ref } from 'vue'
import { fwDroneFlightRecordDetailApi } from '@/views/recordManage/historyTracks/fwDroneFlightRecord'
import { fwDroneFlightRecordDetailPageApi } from '@/views/recordManage/historyTracks/flyTrajectory'
import { PublicCesium } from '@/utils/cesium/publicCesium'
@@ -57,12 +84,12 @@
})
// 关闭弹框
-function handleCancel() {
+function handleCancel () {
visible.value = false
}
// 加载详情
-async function loadDetail() {
+async function loadDetail () {
if (!formData.value.id) return
const res = await fwDroneFlightRecordDetailApi({ id: formData.value.id })
const res1 = await fwDroneFlightRecordDetailPageApi({ flightRecordId: formData.value.id })
@@ -72,11 +99,11 @@
}
// 角度转c3
-function degreesToC3({ longitude, latitude, height = 0 }) {
+function degreesToC3 ({ longitude, latitude, height = 0 }) {
return Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
}
// 渲染航线
-function drawFlightPath() {
+function drawFlightPath () {
const positions = list.value.map(p => degreesToC3(p))
droneLineEntity && geometricSource.entities.remove(droneLineEntity)
const color = Cesium.Color.fromCssColorString('#00D690')
@@ -92,12 +119,17 @@
}
// 关闭后重置
-function handleClosed() {
+function handleClosed () {
formData.value = initForm()
+ list.value = []
+ viewer = null
+ geometricSource = null
+ droneLineEntity = null
}
let viewer, geometricSource, droneLineEntity
-function initMap() {
+function initMap () {
+ if (viewer) return
const publicCesiumInstance = new PublicCesium({
dom: 'leftMapContainer',
flatMode: false,
@@ -111,12 +143,11 @@
}
// 打开弹框
-async function open({ mode, row } = {}) {
+async function open ({ mode, row } = {}) {
dialogMode.value = mode || 'add'
visible.value = true
- await nextTick(() => {
- initMap()
- })
+ await nextTick()
+ initMap()
if (dialogMode.value === 'add') {
formData.value = initForm()
} else {
@@ -127,16 +158,5 @@
defineExpose({ open })
</script>
-<style scoped lang="scss">
-.bodyBox {
- display: flex;
- .rightInfo {
- width: 50%;
- height: 500px;
- }
- .leftMap {
- width: 50%;
- height: 500px;
- }
-}
-</style>
+
+<style scoped lang="scss"></style>
--
Gitblit v1.9.3