From a7e6761ba0cfccdf33ed552eb2d3b783c8e4ab4a Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 16 Apr 2025 20:49:12 +0800
Subject: [PATCH] feat:事件弹窗显示调整

---
 src/hooks/useMapAggregation/useMapAggregation.js |  100 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 61 insertions(+), 39 deletions(-)

diff --git a/src/hooks/useMapAggregation/useMapAggregation.js b/src/hooks/useMapAggregation/useMapAggregation.js
index df7750a..c3b229b 100644
--- a/src/hooks/useMapAggregation/useMapAggregation.js
+++ b/src/hooks/useMapAggregation/useMapAggregation.js
@@ -4,8 +4,8 @@
 import uavImg from '@/assets/images/home/useUavHome/uavImg.png'
 import eventSingle from '@/assets/images/home/useEventOperate/eventSingle.png'
 
-import DevicePopUpBox from '@/hooks/useMapAggregation/DevicePopUpBox.vue'
-import EventPopUpBox from '@/hooks/useMapAggregation/EventPopUpBox.vue'
+import DevicePopUpBox from '@/hooks/components/DevicePopUpBox.vue'
+import EventPopUpBox from '@/hooks/components/EventPopUpBox.vue'
 
 import { render } from 'vue'
 import { useStore } from 'vuex'
@@ -54,8 +54,23 @@
   const store = useStore()
   const userAreaCode = computed(() => store.state.user.userInfo.detail.areaCode)
   const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
-  let saveAreaCode = null;
-  let saveParams = { area_code: '',date_enum:'CURRENT_WEEK' };
+
+
+  const eventTimeType = computed(() => store.state.home.eventTimeType)
+  const eventTimeRang = computed(() => store.state.home.eventTimeRang)
+
+  const singleUavHome = computed(() => store.state.home.singleUavHome)
+
+  let needFly = true
+
+  const combinedValues = computed(() => ({
+    selectedAreaCode: selectedAreaCode.value,
+    eventTimeType: eventTimeType.value,
+    eventTimeRang: eventTimeRang.value,
+    singleUavHome: singleUavHome.value,
+  }))
+
+  let saveParams = { area_code: '', date_enum: 'CURRENT_WEEK' }
 
 
   // 确定缩放比例
@@ -122,14 +137,12 @@
       if (arr.length !== 0) {
         returnObj.childrens = arr
       }
-      console.log(returnObj, '111111')
       return returnObj
     })
   }
 
   // 获取事件聚合
   function getMapEventCount (params) {
-    console.log(5555555)
     return getMapEvents(params).then(res => {
       const resData = res?.data?.data
       if (resData?.data) {
@@ -169,9 +182,7 @@
   const initMapData = async areaCode => {
     eventList = []
     if (!areaCode) return
-    saveAreaCode = areaCode;
-    saveParams.area_code = areaCode;
-    console.log(type, '444')
+    saveParams.area_code = areaCode
     const list = type === 'device' ? await getDeviceCount(areaCode) : await getMapEventCount(saveParams)
     const splashedList = type === 'device'
       ? await getDeviceList(areaCode)
@@ -228,38 +239,32 @@
     }
   }
 
+  watch(combinedValues, async (newValue, oldValue) => {
+    if (newValue.singleUavHome?.device_sn) {
+      clearMapEntity()
+      return
+    }
 
-  let needFly = true
+    if (newValue.eventTimeType) {
+      saveParams = { area_code: newValue.selectedAreaCode, date_enum: store.state.home.eventTimeParams }
+    }
 
-  watch(
-    selectedAreaCode,
-    async (newValue, oldValue) => {
-      needFly = true
-      if (!viewer) return
-      viewer.scene.postRender.removeEventListener(determineScaling)
-      initMapData(newValue).then(() => {
-        viewer.scene.postRender.addEventListener(determineScaling)
-      })
-    },
+    if (newValue.eventTimeRang) {
+      saveParams = { area_code: newValue.selectedAreaCode, start_date: newValue.eventTimeRang[0], end_date: newValue.eventTimeRang[1] }
+    }
+
+    needFly = true
+    if (!viewer) return
+    handlerInit()
+
+    viewer.scene.postRender.removeEventListener(determineScaling)
+
+    initMapData(newValue.selectedAreaCode).then(() => {
+      viewer.scene.postRender.addEventListener(determineScaling)
+    })
+  },
     { deep: true }
   )
-
-  // 监听 日 周 月 年
-  watch(() => store.state.home.eventTimeType, (newVal) => {
-    if (!saveAreaCode) return
-    if (newVal) {
-      saveParams = { area_code:saveAreaCode,date_enum: store.state.home.eventTimeParams }
-      initMapData(saveAreaCode);
-    }
-  });
-  // 监听事件右侧日期范围
-  watch(() => store.state.home.eventTimeRang, (newVal) => {
-    if (!saveAreaCode) return
-    if (newVal) {
-      saveParams = { area_code:saveAreaCode,start_date: newVal[0], end_date: newVal[1]}
-      initMapData(saveAreaCode);
-    }
-  });
 
   //散点机巢
   function splashed (row) {
@@ -463,10 +468,15 @@
     let clickTargets = viewer.scene.drillPick(click.position).map(item => item.id)
     if (!clickTargets.length) return
 
+    console.log(clickTargets, 11111)
+
     let deviceAggregationFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'deviceAggregation')
     let deviceFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'device')
+    // "event"
     let eventFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'event')
+    // let eventFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'eventAggregation')
     currentEntity = deviceAggregationFind || deviceFind || eventFind
+
     if (!currentEntity) return
     if (!currentEntity?.position?._value) return
     // 一定要移除
@@ -508,6 +518,11 @@
 
   // 移除所有监听事件,变量置空
   const removeAll = () => {
+    clearMapEntity()
+    viewer = null
+  }
+
+  const clearMapEntity = () => {
     if (!viewer) return
     removeEntities()
     removeLabel()
@@ -515,21 +530,28 @@
     viewer.scene.postRender.removeEventListener(determineScaling)
     handler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
     handler?.destroy()
-    viewer = null
     active = null
     handler = null
     currentEntity = null
   }
+
   const init = () => {
     viewer = window.$viewer
     viewer.scene.postRender.removeEventListener(determineScaling)
     initMapData(selectedAreaCode.value || userAreaCode.value).then(() => {
       viewer.scene.postRender.addEventListener(determineScaling)
     })
+
+    handlerInit()
+  }
+
+  const handlerInit = () => {
+    if (handler) return
+
     handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
     handler.setInputAction(singleMachineEvent, Cesium.ScreenSpaceEventType.LEFT_CLICK)
-
   }
+
   onBeforeUnmount(() => { })
   // onMounted(() => {
   //   nextTick(() => {

--
Gitblit v1.9.3