From 2800fa4f32f3900509cb4d6eefaf2bfaf54efdd7 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 21 Apr 2025 18:29:09 +0800
Subject: [PATCH] fix: 天气显示

---
 src/views/Home/Home.vue |  108 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 81 insertions(+), 27 deletions(-)

diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index 5a2c5a7..e050f03 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -1,37 +1,91 @@
 <template>
-  <template v-if="!singleUavHome?.id">
-    <SearchBox />
-    <HomeLeft />
-    <HomeRight />
-  </template>
-  <template v-else>
-    <SignMachineNest />
-  </template>
-  <RSide />
-  <Footer />
+	<div :key="selectedAreaCode">
+		<!--		单个机巢页面-->
+		<SignMachineNest v-if="singleUavHome?.device_sn" :key="singleUavHome?.device_sn"/>
+		<!--		事件概述详细信息页面-->
+		<EventOverviewDetail v-else-if="isEventOverviewDetail" />
+
+		<!--	智引即飞	-->
+		<AINowFly v-else-if="isAINowFly" />
+		<!--			首页默认的页面-->
+		<template v-else>
+			<HomeLeft />
+			<HomeRight />
+		</template>
+	</div>
+
+
+	<SearchBox />
+	<RSide />
+	<Footer />
 </template>
 
 <script setup>
-import HomeRight from './components/HomeRight/HomeRight.vue';
-import HomeLeft from '@/views/Home/components/HomeLeft/HomeLeft.vue';
-import SearchBox from '@/views/Home/SearchBox.vue';
-import SignMachineNest from '@/views/SignMachineNest/SignMachineNest.vue';
-import { useStore } from 'vuex';
-import Footer from '@/views/Home/Footer.vue';
-import RSide from '@/views/Home/RSide.vue';
-import { onMounted } from 'vue';
-import cesiumOperation from '@/utils/cesium-tsa';
-const store = useStore();
-const { _init,viewerDestory } = cesiumOperation();
+import HomeRight from '@/views/Home/HomeRight/HomeRight.vue'
+import HomeLeft from '@/views/Home/HomeLeft/HomeLeft.vue'
+import SearchBox from '@/views/Home/SearchBox.vue'
+import SignMachineNest from '@/views/SignMachineNest/SignMachineNest.vue'
+import { useStore } from 'vuex'
+import Footer from '@/views/Home/Footer.vue'
+import RSide from '@/views/Home/RSide.vue'
+import { onMounted } from 'vue'
+import cesiumOperation from '@/utils/cesium-tsa'
+import EventOverviewDetail from '@/views/Home/EventOverviewDetail/EventOverviewDetail.vue'
+import AINowFly from '@/views/Home/AINowFly.vue'
+import { getMapCenterPoint } from '@/utils/cesium/mapUtil'
+import { getAreaCodeApi } from '@/api/home'
+import { getDroneSuggest } from '@/api/home/common'
+import { MAP_LEVEL } from '@/const/drc'
+import _ from 'lodash'
 
-const singleUavHome = computed(() => store.state.home.singleUavHome);
+const store = useStore()
+const { _init, viewerDestory } = cesiumOperation()
 
-onBeforeUnmount(()=>{
-  store.commit('setSingleUavHome',null);
-  viewerDestory()
+const singleUavHome = computed(() => store.state.home.singleUavHome)
+const isEventOverviewDetail = computed(() => store.state.home.isEventOverviewDetail)
+const isAINowFly = computed(() => store.state.home.footActiveIndex === 5)
+const userAreaCode = computed(() => store.state.user.userInfo.detail.areaCode)
+const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
+
+
+
+onUnmounted(() => {
+	store.commit('setSingleUavHome', null)
+	store.commit('setIsEventOverviewDetail', false)
+	store.commit('setFootActiveIndex', 0)
+	store.commit('setSelectedAreaCode', null)
+	viewerDestory()
+})
+
+// 获取飞行建议
+function getFlySuggestion(){
+	const viewer = window.$viewer
+	const {longitude,latitude} = getMapCenterPoint(viewer)
+	let height = viewer.camera.positionCartographic.height;
+	if (height > MAP_LEVEL[0].heightRange[1]) {
+		store.commit('setFlySuggest', {})
+		return
+	}
+	const params = { location: longitude + ',' + latitude}
+	getAreaCodeApi(params).then(res => {
+		const { adcode:areaCode } = res.data.data.regeocode.addressComponent
+		if (!areaCode) return
+		return getDroneSuggest({areaCode})
+	}).then(res => {
+		const setFlySuggest = _.pick(res.data.data,['windPower','flightAdvice']) || {}
+		store.commit('setFlySuggest', setFlySuggest)
+	})
+}
+
+onBeforeUnmount(() =>{
+	window.$viewer.camera.moveEnd.removeEventListener(getFlySuggestion);
 })
 
 onMounted(() => {
-  _init('cesium');
-});
+	_init('cesium')
+	nextTick(() => {
+		getFlySuggestion()
+		window.$viewer.camera.moveEnd.addEventListener(getFlySuggestion);
+	})
+})
 </script>

--
Gitblit v1.9.3