From aec00ecc093be803860c8675cbe1c4c776a7cb4e Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Tue, 19 Mar 2024 17:49:21 +0800
Subject: [PATCH] update: 新建航线、事件编辑、kmz文件问题修改
---
src/pages/page-web/projects/tsa.vue | 79 ++++++++++++++++++++++++++-------------
1 files changed, 53 insertions(+), 26 deletions(-)
diff --git a/src/pages/page-web/projects/tsa.vue b/src/pages/page-web/projects/tsa.vue
index 745208b..346dd25 100644
--- a/src/pages/page-web/projects/tsa.vue
+++ b/src/pages/page-web/projects/tsa.vue
@@ -16,10 +16,10 @@
<a-empty style="color: #fff;" :image="simpleImage" description="暂无数据" :image-style="{ height: '60px' }" />
</div>
<div v-else class="fz12" style="color: white;">
- <div v-for="dock in onlineDocks.data" :key="dock.sn"
- style="background: #3c3c3c; margin-bottom: 10px;">
+ <div v-for="dock in onlineDocks.data" :key="dock.sn" style="background: #3c3c3c; margin-bottom: 10px;">
<div class="task_wrapper" v-if="dock.latest_wayline_job">
- <div class="task_content task_content_way" v-if="deviceInfo[dock.sn] && deviceInfo[dock.sn].mode_code === 5">
+ <div class="task_content task_content_way"
+ v-if="deviceInfo[dock.sn] && deviceInfo[dock.sn].mode_code === 5">
<div class="task_status">
<ContainerOutlined />
<span>执行任务中</span>
@@ -30,9 +30,10 @@
<ContainerOutlined />
<span>待执行</span>
</div>
- <div class="task_info">{{dock.latest_wayline_job.is_later ? '今天': '明天'}}{{convertTimestampToDate(dock.latest_wayline_job.begin_time, 'hh:mm')}}</div>
+ <div class="task_info">{{ dock.latest_wayline_job.is_later ? '今天' :
+ '明天' }}{{ convertTimestampToDate(dock.latest_wayline_job.begin_time, 'hh:mm') }}</div>
</div>
- <div class="task_title">{{dock.latest_wayline_job.name}}</div>
+ <div class="task_title">{{ dock.latest_wayline_job.name }}</div>
</div>
<div style="border-radius: 2px; height: 90px; width: 100%;"
class="flex-row flex-justify-between flex-align-center">
@@ -122,7 +123,7 @@
:style="deviceInfo[dock.sn] && deviceInfo[dock.sn].mode_code !== EModeCode.Disconnected || dockInfo[dock.gateway.sn].basic_osd?.drone_in_dock === 1 ? 'color: #00ee8b' : 'color: red;'">
{{
deviceInfo[dock.sn] ? EModeText[deviceInfo[dock.sn].mode_code] :
- dockInfo[dock.gateway.sn].basic_osd?.drone_in_dock === 1 ? '舱内关机' :
+ dockInfo[dock.gateway.sn]?.basic_osd?.drone_in_dock === 1 ? '舱内关机' :
EModeText[EModeCode.Disconnected]
}}
</div>
@@ -275,7 +276,7 @@
<script lang="ts" setup>
import * as Cesium from 'cesium'
-import { computed, onMounted, reactive, ref, watch, WritableComputedRef } from 'vue'
+import { computed, onMounted, reactive, ref, watch, onUnmounted } from 'vue'
import { EDeviceTypeName, ELocalStorageKey } from '/@/types'
import rc from '/@/assets/icons/rc.png'
import { OnlineDevice, EModeCode, OSDVisible, EDockModeCode, DeviceOsd, EDockModeText, EModeText } from '/@/types/device'
@@ -292,6 +293,7 @@
import { EHmsLevel } from '/@/types/enums'
import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
import { convertTimestampToDate, getDateFromTimestamp, isToday, setTodayTime } from '/@/utils/time'
+import { parseJsonFile } from '/@/utils/geo-utils'
let droneEntity: any
const { appContext } = getCurrentInstance()
@@ -306,7 +308,10 @@
const onlineDevices = reactive({
data: [] as OnlineDevice[]
})
-
+// 机场序列号
+const dock = ref('')
+// 无人机序列号
+const device_dock = ref('')
const onlineDocks = reactive({
data: [] as OnlineDevice[]
})
@@ -340,7 +345,6 @@
const cesium = cesiumOperation()
// 添加机场标注
watch(() => store.state.deviceState, (data, oldData) => {
- console.log(data, 'data')
// cesium.removeAllPoint()
if (data.currentType === EDeviceTypeName.Aircraft && data.deviceInfo[data.currentSn]) {
// cesium.removeById('drone_fly')
@@ -352,18 +356,6 @@
heading: data.deviceInfo[data.currentSn].attitude_head,
}
cesium.updateEntityPosition(data.deviceInfo[data.currentSn].longitude, data.deviceInfo[data.currentSn].latitude, 'drone_fly', orientation)
- // 根据机场状态码判断是否实时更新轨迹航线
- if (data.dockInfo[data.currentSn] && (data.dockInfo[data.currentSn].basic_osd.mode_code === 3 || data.dockInfo[data.currentSn].basic_osd.mode_code === 4 || data.dockInfo[data.currentSn].basic_osd.mode_code === 5)) {
- // 生成新的位置数组
- const newPositions = Cesium.Cartesian3.fromDegreesArray([oldData.deviceInfo[data.currentSn].longitude, oldData.deviceInfo[data.currentSn].latitude, data.deviceInfo[data.currentSn].longitude, data.deviceInfo[data.currentSn].latitude])
- previousPositions.value = previousPositions.value.concat(newPositions)
- // 更新线段的位置
- const drone_route = cesium.getEntityById('drone_route')
- drone_route.polyline.positions = previousPositions.value
- } else {
- previousPositions.value = []
- cesium.removeById('drone_route')
- }
} else {
// 无人机图标
const setting = {
@@ -382,6 +374,10 @@
}
cesium.addPoint(setting)
// 无人机路线轨迹
+ // 判断是否存在done_route
+ if (cesium.getEntityById('drone_route')) {
+ cesium.removeById('drone_route')
+ }
const routeTrajectory = {
longitude: 115.85666327144976,
latitude: 28.62452712442823,
@@ -394,6 +390,22 @@
}
cesium.addPolyline(routeTrajectory)
}
+ // eslint-disable-next-line eqeqeq
+ // 3、4、5的时候代表飞行过程 绘制路线
+ console.log(data.deviceInfo[data.currentSn], 'Aircraft')
+ // eslint-disable-next-line eqeqeq
+ if (data.deviceInfo[data.currentSn].mode_code && (data.deviceInfo[data.currentSn].mode_code == 3 || data.deviceInfo[data.currentSn].mode_code == 4 || data.deviceInfo[data.currentSn].mode_code == 5 || data.deviceInfo[data.currentSn].mode_code == 9)) {
+ const newPositions = Cesium.Cartesian3.fromDegreesArray([data.deviceInfo[data.currentSn].longitude, data.deviceInfo[data.currentSn].latitude])
+ previousPositions.value = previousPositions.value.concat(newPositions)
+ // 更新线段的位置
+ const drone_route = cesium.getEntityById('drone_route')
+ drone_route.polyline.positions = previousPositions.value
+ // eslint-disable-next-line eqeqeq
+ } else if (data.deviceInfo[data.currentSn].mode_code == 0 || data.deviceInfo[data.currentSn].mode_code == 14) {
+ const drone_route = cesium.getEntityById('drone_route')
+ previousPositions.value = []
+ drone_route.polyline.positions = previousPositions.value
+ }
}
if (data.currentType === EDeviceTypeName.Dock && data.dockInfo[data.currentSn]) {
if (snCode.value.includes(data.currentSn)) return
@@ -402,13 +414,14 @@
const setting = {
longitude: data.dockInfo[data.currentSn].basic_osd?.longitude,
latitude: data.dockInfo[data.currentSn].basic_osd?.latitude,
+ id: `drone_dock_${new Date().getTime()}`,
billboard: {
image: getResource('dock.png'),
outlineWidth: 0,
width: 36,
height: 36,
scale: 1.0,
- }
+ },
}
cesium.addPoint(setting)
// cesium.flyTo(setting)
@@ -425,7 +438,7 @@
}
}
// 判断给定日期是否晚于当前时间
-const isDateLaterThanNow = (dateObj:any) => {
+const isDateLaterThanNow = (dateObj: any) => {
const todayTimestamp = setTodayTime(dateObj)
return todayTimestamp > Date.now()
}
@@ -452,6 +465,10 @@
previousPositions.value = []
})
+onUnmounted(() => {
+ cesium.removeAllPoint()
+})
+
function getOnlineTopo () {
getDeviceTopo(workSpaceId.value).then((res) => {
if (res.code !== 0) {
@@ -461,7 +478,7 @@
onlineDevices.data = []
onlineDocks.data = []
res.data.forEach((gateway: any) => {
- const child = gateway.children
+ const child = gateway?.children || []
if (gateway.latest_wayline_job) {
const isLater = isToday(gateway.latest_wayline_job.begin_time)
// false 代表任务开始时间大于今天 true为任务开始时间为今天
@@ -485,7 +502,8 @@
},
payload: []
}
- child?.payloads_list.forEach((payload: any) => {
+ const payloads_list = child?.payloads_list || []
+ payloads_list.forEach((payload: any) => {
device.payload.push({
index: payload.index,
model: payload.model,
@@ -511,13 +529,19 @@
}
function switchVisible (e: any, device: OnlineDevice, isDock: boolean, isClick: boolean, sn?: any) {
- // showDrawer.value = !showDrawer.value
+ dock.value = device.gateway.sn
+ device_dock.value = device.sn
+ // showDrawer.value = !showDr++awer.value
if (!isClick) {
e.target.style.cursor = 'not-allowed'
return
}
+
if (device.sn === osdVisible.value.sn) {
osdVisible.value.visible = !osdVisible.value.visible
+ // 临时--可能会改
+ osdVisible.value.is_dock = true
+ osdVisible.value.gateway_sn = device.gateway.sn
} else {
osdVisible.value.sn = device.sn
osdVisible.value.callsign = device.callsign
@@ -715,13 +739,16 @@
.task_wrapper {
display: flex;
align-items: center;
+
.task_content {
background-color: #41bbfa;
padding: 2px 4px;
}
+
.task_content_way {
background-color: #19be6b;
}
+
.task_title {
margin-left: 5px;
font-size: 14px;
--
Gitblit v1.9.3