gr 1 ay önce
ebeveyn
işleme
e6156778ff
2 değiştirilmiş dosya ile 26 ekleme ve 14 silme
  1. 9 1
      src/store/ue.js
  2. 17 13
      src/views/home/cpns/FloatPanelTsjs.vue

+ 9 - 1
src/store/ue.js

@@ -1,11 +1,19 @@
 import { defineStore } from 'pinia'
+import { toggleGlobalUav as toggleGlobalUavAction } from '@/utils/ueActions'
 
 const useUeStore = defineStore('ue', {
 	state: () => ({
 		sceneReady: false,
+		globalUav: false,
 	}),
 	getters: {},
-	actions: {},
+	actions: {
+		toggleGlobalUav(status) {
+			if (status === this.globalUav) return
+			this.globalUav = status
+			toggleGlobalUavAction(status)
+		},
+	},
 })
 
 export default useUeStore

+ 17 - 13
src/views/home/cpns/FloatPanelTsjs.vue

@@ -35,14 +35,7 @@ import usePanelStore from '@/store/panel'
 import useUeStore from '@/store/ue'
 import { getAssetsFile } from '@/utils/require'
 import { hexToRgb, wait } from '@/utils/tools'
-import {
-	clearAllShapes,
-	startSceneDemo,
-	toggleGlobalUav,
-	initSceneDemo,
-	renderShapes,
-	toggleTrackLine,
-} from '@/utils/ueActions'
+import { clearAllShapes, startSceneDemo, initSceneDemo, renderShapes, toggleTrackLine } from '@/utils/ueActions'
 import { getCurrentInstance, onBeforeMount, onBeforeUnmount, reactive, ref, watch } from 'vue'
 import FloatPanelUav from './FloatPanelUav.vue'
 
@@ -62,9 +55,12 @@ const listData = ref([
 	{ label: '电量预警', value: 'Electricity', pic: 'dl', count: 0 },
 ])
 
+const currentDemo = ref({})
+
 async function handleDemo(item) {
+	currentDemo.value = item
 	layoutStore.sceneLoading = true
-	toggleGlobalUav(false)
+	ueStore.toggleGlobalUav(false)
 	uavInfoShow.value = false
 	Object.keys(alertInfo.value).forEach((k) => {
 		alertInfo.value[k].show = false
@@ -127,7 +123,7 @@ watch(
 	() => ueStore.sceneReady,
 	(val) => {
 		if (val) {
-			toggleGlobalUav(true)
+			ueStore.toggleGlobalUav(true)
 		}
 	},
 	{ immediate: true }
@@ -173,7 +169,7 @@ const alertInfo = ref({
 })
 
 function handleCloseInfo() {
-	toggleGlobalUav(true)
+	ueStore.toggleGlobalUav(true)
 	uavInfoShow.value = false
 	initSceneDemo()
 	panelStore.setWeather('Clear Skies')
@@ -248,12 +244,19 @@ onBeforeMount(() => {
 				alertInfo.value.power.distance = distance ? Number(distance).toFixed(2) : 0
 				break
 			}
+			case 'FlightOver': {
+				if (currentDemo.value) {
+					handleCloseInfo()
+					currentDemo.value = null
+				}
+				break
+			}
 		}
 	})
 })
 
 onBeforeUnmount(() => {
-	toggleGlobalUav(false)
+	ueStore.toggleGlobalUav(false)
 	clearAllShapes()
 	panelStore.setWeather('Clear Skies')
 	layoutStore.sceneLoading = false
@@ -355,6 +358,7 @@ onBeforeUnmount(() => {
 	transition:
 		opacity 0.3s ease,
 		transform 0.3s ease-out,
-		left 0.5s ease-out;
+		left 0.5s ease-out,
+		height 0.3s ease;
 }
 </style>