|
@@ -34,8 +34,15 @@ import useLayoutStore from '@/store/layout'
|
|
|
import usePanelStore from '@/store/panel'
|
|
|
import useUeStore from '@/store/ue'
|
|
|
import { getAssetsFile } from '@/utils/require'
|
|
|
-import { hexToRgb } from '@/utils/tools'
|
|
|
-import { clearAllShapes, startSceneDemo, toggleUav, initSceneDemo, setWeather } from '@/utils/ueActions'
|
|
|
+import { hexToRgb, wait } from '@/utils/tools'
|
|
|
+import {
|
|
|
+ clearAllShapes,
|
|
|
+ startSceneDemo,
|
|
|
+ toggleUav,
|
|
|
+ initSceneDemo,
|
|
|
+ renderShapes,
|
|
|
+ toggleTrackLine,
|
|
|
+} from '@/utils/ueActions'
|
|
|
import { getCurrentInstance, onBeforeMount, onBeforeUnmount, reactive, ref, watch } from 'vue'
|
|
|
import FloatPanelUav from './FloatPanelUav.vue'
|
|
|
|
|
@@ -55,12 +62,16 @@ const listData = ref([
|
|
|
{ label: '电量预警', value: 'Electricity', pic: 'dl', count: 0 },
|
|
|
])
|
|
|
|
|
|
-function handleDemo(item) {
|
|
|
+async function handleDemo(item) {
|
|
|
layoutStore.sceneLoading = true
|
|
|
+ // toggleUav(false)
|
|
|
+ uavInfoShow.value = false
|
|
|
+ Object.keys(alertInfo.value).forEach((k) => {
|
|
|
+ alertInfo.value[k].show = false
|
|
|
+ })
|
|
|
+ await wait(8000)
|
|
|
startSceneDemo(item.value)
|
|
|
panelStore.setWeather('Clear Skies')
|
|
|
- uavInfoShow.value = false
|
|
|
- alertInfo.value = {}
|
|
|
}
|
|
|
|
|
|
const options = reactive({
|
|
@@ -74,15 +85,13 @@ function toggleOption(target) {
|
|
|
if (!routeList.length) return
|
|
|
if (options.airLine) {
|
|
|
routeList.forEach((item) => {
|
|
|
- const data = [
|
|
|
- {
|
|
|
- type: item.type,
|
|
|
- shape: {
|
|
|
- ...JSON.parse(item.shape),
|
|
|
- color: hexToRgb('#ffff00', 0.5),
|
|
|
- },
|
|
|
+ const data = {
|
|
|
+ type: item.type,
|
|
|
+ shape: {
|
|
|
+ ...JSON.parse(item.shape),
|
|
|
+ color: hexToRgb('#ffff00', 0.5),
|
|
|
},
|
|
|
- ]
|
|
|
+ }
|
|
|
renderShapes({
|
|
|
id: item.id,
|
|
|
data: data,
|
|
@@ -118,7 +127,8 @@ watch(
|
|
|
() => ueStore.sceneReady,
|
|
|
(val) => {
|
|
|
if (val) {
|
|
|
- toggleUav(true)
|
|
|
+ // toggleUav(true)
|
|
|
+ toggleUav(false)
|
|
|
}
|
|
|
},
|
|
|
{ immediate: true }
|
|
@@ -145,9 +155,26 @@ const baseInfo = ref({
|
|
|
tel: '18000000000',
|
|
|
})
|
|
|
|
|
|
-const alertInfo = ref({})
|
|
|
+const alertInfo = ref({
|
|
|
+ collision: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ offCourse: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ power: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ area: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ weather: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+})
|
|
|
|
|
|
function handleCloseInfo() {
|
|
|
+ // toggleUav(true)
|
|
|
uavInfoShow.value = false
|
|
|
initSceneDemo()
|
|
|
panelStore.setWeather('Clear Skies')
|
|
@@ -165,57 +192,80 @@ onBeforeMount(() => {
|
|
|
baseInfo.value.battery = msg.Data.electricity
|
|
|
baseInfo.value.height = msg.Data.height.toFixed(2) + 'm'
|
|
|
baseInfo.value.velocity = msg.Data.speed.toFixed(2) + 'm/s'
|
|
|
- if (msg.Data.overall !== 'SAFE') {
|
|
|
- const { electricityWarning, weatherWarning, collision, noFlyZone, clearZone, nearstAircraft, routeDeviate } =
|
|
|
- msg.Data.flightDataStatus
|
|
|
- if (electricityWarning !== 'SAFE' && !('power' in alertInfo.value)) {
|
|
|
- alertInfo.value.power = {}
|
|
|
- }
|
|
|
- if (weatherWarning !== 'SAFE' && !('weather' in alertInfo.value)) {
|
|
|
- alertInfo.value.weather = {}
|
|
|
- }
|
|
|
- if ((nearstAircraft !== 'SAFE' || collision !== 'SAFE') && !('collision' in alertInfo.value)) {
|
|
|
- alertInfo.value.collision = {}
|
|
|
- }
|
|
|
- if ((noFlyZone !== 'SAFE' || clearZone !== 'SAFE') && !('area' in alertInfo.value)) {
|
|
|
- alertInfo.value.area = {}
|
|
|
- }
|
|
|
- if (routeDeviate === true && !('offCourse' in alertInfo.value)) {
|
|
|
- alertInfo.value.offCourse = {}
|
|
|
- }
|
|
|
+
|
|
|
+ const { electricityWarning, weatherWarning, collision, noFlyZone, clearZone, nearstAircraft, routeDeviate } =
|
|
|
+ msg.Data.flightDataStatus
|
|
|
+
|
|
|
+ if (electricityWarning !== 'SAFE' && electricityWarning !== '') {
|
|
|
+ alertInfo.value.power.show = true
|
|
|
+ } else {
|
|
|
+ alertInfo.value.power.show = false
|
|
|
}
|
|
|
+
|
|
|
+ if (weatherWarning !== 'SAFE' && weatherWarning !== '') {
|
|
|
+ alertInfo.value.weather.show = true
|
|
|
+ } else {
|
|
|
+ alertInfo.value.weather.show = false
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((nearstAircraft !== 'SAFE' && nearstAircraft !== '') || (collision !== 'SAFE' && collision !== '')) {
|
|
|
+ alertInfo.value.collision.show = true
|
|
|
+ } else {
|
|
|
+ alertInfo.value.collision.show = false
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((noFlyZone !== 'SAFE' && noFlyZone !== '') || (clearZone !== 'SAFE' && clearZone !== '')) {
|
|
|
+ alertInfo.value.area.show = true
|
|
|
+ } else {
|
|
|
+ alertInfo.value.area.show = false
|
|
|
+ }
|
|
|
+
|
|
|
+ if (routeDeviate === true) {
|
|
|
+ alertInfo.value.offCourse.show = true
|
|
|
+ } else {
|
|
|
+ alertInfo.value.offCourse.show = false
|
|
|
+ }
|
|
|
+
|
|
|
if (!uavInfoShow.value) uavInfoShow.value = true
|
|
|
if (layoutStore.sceneLoading) layoutStore.sceneLoading = false
|
|
|
+
|
|
|
break
|
|
|
}
|
|
|
case 'Weather': {
|
|
|
+ alertInfo.value.weather.show = true
|
|
|
alertInfo.value.weather.type = msg.Data.weather
|
|
|
- panelStore.setWeather('Light Rain')
|
|
|
+ if (panelStore.weather !== 'Light Rain') panelStore.setWeather('Light Rain')
|
|
|
break
|
|
|
}
|
|
|
case 'BuildingDistance': {
|
|
|
+ alertInfo.value.collision.show = true
|
|
|
alertInfo.value.collision.distance = msg.Data.BuildingDistance
|
|
|
+ ? Number(msg.Data.BuildingDistance).toFixed(2)
|
|
|
+ : 0
|
|
|
break
|
|
|
}
|
|
|
case 'Near': {
|
|
|
- alertInfo.value.collision.distance = msg.Data.Data
|
|
|
+ alertInfo.value.collision.show = true
|
|
|
+ alertInfo.value.collision.distance = msg.Data.Data ? Number(msg.Data.Data).toFixed(2) : 0
|
|
|
break
|
|
|
}
|
|
|
case 'YawDistance': {
|
|
|
- alertInfo.value.offCourse.distance = msg.Data.YawDistance.toFixed(2)
|
|
|
+ alertInfo.value.offCourse.show = true
|
|
|
+ alertInfo.value.offCourse.distance = msg.Data.YawDistance ? Number(msg.Data.YawDistance).toFixed(2) : 0
|
|
|
break
|
|
|
}
|
|
|
case 'BreakInto': {
|
|
|
+ alertInfo.value.area.show = true
|
|
|
alertInfo.value.area.name = msg.Data.name
|
|
|
+ alertInfo.value.area.type = msg.Data.name
|
|
|
break
|
|
|
}
|
|
|
case 'Electricity': {
|
|
|
+ alertInfo.value.power.show = true
|
|
|
const { battery, distance, flightDistance } = msg.Data
|
|
|
- alertInfo.value.power = {
|
|
|
- battery: battery,
|
|
|
- estimation: flightDistance.toFixed(2),
|
|
|
- distance: distance.toFixed(2),
|
|
|
- }
|
|
|
+ alertInfo.value.power.battery = battery
|
|
|
+ alertInfo.value.power.estimation = flightDistance ? Number(flightDistance).toFixed(2) : 0
|
|
|
+ alertInfo.value.power.distance = distance ? Number(distance).toFixed(2) : 0
|
|
|
break
|
|
|
}
|
|
|
}
|
|
@@ -223,7 +273,7 @@ onBeforeMount(() => {
|
|
|
})
|
|
|
|
|
|
onBeforeUnmount(() => {
|
|
|
- toggleUav(false)
|
|
|
+ // toggleUav(false)
|
|
|
clearAllShapes()
|
|
|
panelStore.setWeather('Clear Skies')
|
|
|
layoutStore.sceneLoading = false
|