From 54849757852f6ab40eb17afbd03d1d839b60a38d Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 13 Nov 2023 17:09:15 +0800
Subject: [PATCH] 重复定时和连续执行
---
src/pages/page-web/projects/tsa.vue | 77 ++++++++++++++++++++++++++++++++------
1 files changed, 65 insertions(+), 12 deletions(-)
diff --git a/src/pages/page-web/projects/tsa.vue b/src/pages/page-web/projects/tsa.vue
index ab0fc09..8417112 100644
--- a/src/pages/page-web/projects/tsa.vue
+++ b/src/pages/page-web/projects/tsa.vue
@@ -19,12 +19,18 @@
<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">
+ <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>
+ </div>
+ </div>
+ <div class="task_content" v-else>
<div class="task_status">
<ContainerOutlined />
<span>待执行</span>
</div>
- <div class="task_info">{{convertTimestampToDate(dock.latest_wayline_job.begin_time)}}</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>
@@ -268,6 +274,7 @@
</template>
<script lang="ts" setup>
+import * as Cesium from 'cesium'
import { computed, onMounted, reactive, ref, watch, WritableComputedRef } from 'vue'
import { EDeviceTypeName, ELocalStorageKey } from '/@/types'
import rc from '/@/assets/icons/rc.png'
@@ -284,7 +291,7 @@
} from '@ant-design/icons-vue'
import { EHmsLevel } from '/@/types/enums'
import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
-import { convertTimestampToDate } from '/@/utils/time'
+import { convertTimestampToDate, getDateFromTimestamp, isToday, setTodayTime } from '/@/utils/time'
let droneEntity: any
const { appContext } = getCurrentInstance()
@@ -299,11 +306,14 @@
const onlineDevices = reactive({
data: [] as OnlineDevice[]
})
-
+// 机场序列号
+const dock = ref('')
+// 无人机序列号
+const device_dock = ref('')
const onlineDocks = reactive({
data: [] as OnlineDevice[]
})
-
+const previousPositions = ref([])
const deviceInfo = computed(() => store.state.deviceState.deviceInfo)
const dockInfo = computed(() => store.state.deviceState.dockInfo)
const projectName = computed(() => store.state.common.projectName)
@@ -327,11 +337,12 @@
const getResource = (name: string) => {
return new URL(`/src/assets/icons/${name}`, import.meta.url).href
}
+
// 获取ws连接过来的sn设备号
const snCode = ref<string[]>([])
const cesium = cesiumOperation()
// 添加机场标注
-watch(() => store.state.deviceState, data => {
+watch(() => store.state.deviceState, (data, oldData) => {
// cesium.removeAllPoint()
if (data.currentType === EDeviceTypeName.Aircraft && data.deviceInfo[data.currentSn]) {
// cesium.removeById('drone_fly')
@@ -360,10 +371,35 @@
heading: data.deviceInfo[data.currentSn].attitude_head,
}
cesium.addPoint(setting)
+ // 无人机路线轨迹
+ const routeTrajectory = {
+ longitude: 115.85666327144976,
+ latitude: 28.62452712442823,
+ id: 'drone_route',
+ polyline: {
+ width: 5,
+ positions: previousPositions.value,
+ material: Cesium.Color.BLUE
+ },
+ }
+ cesium.addPolyline(routeTrajectory)
}
- // if (osdVisible.value.visible && osdVisible.value.sn !== '') {
- // deviceInfo.value.device = data.deviceInfo[osdVisible.value.sn]
- // }
+ // 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
@@ -394,6 +430,12 @@
Promise.resolve(false)
}
}
+// 判断给定日期是否晚于当前时间
+const isDateLaterThanNow = (dateObj:any) => {
+ const todayTimestamp = setTodayTime(dateObj)
+ return todayTimestamp > Date.now()
+}
+
onMounted(() => {
getOnlineTopo()
setTimeout(() => {
@@ -413,6 +455,7 @@
const element = document.getElementsByClassName('scrollbar').item(0) as HTMLDivElement
const parent = element?.parentNode as HTMLDivElement
scorllHeight.value = parent?.clientHeight - parent?.firstElementChild?.clientHeight
+ previousPositions.value = []
})
function getOnlineTopo () {
@@ -425,6 +468,12 @@
onlineDocks.data = []
res.data.forEach((gateway: any) => {
const child = gateway.children
+ if (gateway.latest_wayline_job) {
+ const isLater = isToday(gateway.latest_wayline_job.begin_time)
+ // false 代表任务开始时间大于今天 true为任务开始时间为今天
+ gateway.latest_wayline_job.is_later = isLater
+ }
+
const device: OnlineDevice = {
model: child?.device_name,
callsign: child?.nickname,
@@ -468,8 +517,9 @@
}
function switchVisible (e: any, device: OnlineDevice, isDock: boolean, isClick: boolean, sn?: any) {
- console.log(device, 'device')
- // 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
@@ -674,9 +724,12 @@
display: flex;
align-items: center;
.task_content {
- background-color: #19be6b;
+ background-color: #41bbfa;
padding: 2px 4px;
}
+ .task_content_way {
+ background-color: #19be6b;
+ }
.task_title {
margin-left: 5px;
font-size: 14px;
--
Gitblit v1.9.3