forked from drone/command-center-dashboard

罗广辉
2025-04-17 9005ee603a22a063664fd5631a92d42c48669233
src/hooks/useMapAggregation/useMapAggregation.js
@@ -2,13 +2,24 @@
import aggregationImg from '@/assets/images/home/useUavHome/aggregation.png'
import eventAggregationImg from '@/assets/images/home/useUavHome/eventAggregationImg.png'
import uavImg from '@/assets/images/home/useUavHome/uavImg.png'
// 事件图标
import eventSingle from '@/assets/images/home/useEventOperate/eventSingle.png'
import eventPending from '@/assets/images/home/useEventOperate/eventPending.png' // 待处理 0
import eventWaitAudit from '@/assets/images/home/useEventOperate/eventWaitAudit.png' // 待审核 2
import eventProcessing from '@/assets/images/home/useEventOperate/eventProcessing.png' // 处理中 3
import eventCompleted from '@/assets/images/home/useEventOperate/eventCompleted.png' // 已完成 4
import eventClosed from '@/assets/images/home/useEventOperate/eventClosed.png' // 已完结 5
import DevicePopUpBox from '@/hooks/components/DevicePopUpBox.vue'
import EventPopUpBox from '@/hooks/components/EventPopUpBox.vue'
// 图标
import offlineImg from '@/assets/images/home/useEventOperate/offline.png'
import onlineImg from '@/assets/images/home/useEventOperate/eventSingle.png'
// 机巢图标
import endingImg from '@/assets/images/aiNowFly/ending.png'
import endingHighImg from '@/assets/images/aiNowFly/ending-high.png'
import { render } from 'vue'
import { useStore } from 'vuex'
import { getCenterPoint } from '@/utils/cesium/mapUtil'
@@ -39,8 +50,6 @@
export const useMapAggregation = (type, status) => {
   const { flyTo } = cesiumOperation()
   const singleImg = type === 'device' ? onlineImg : eventSingle
  const offlinesingleImg = type === 'device' ? offlineImg : eventSingle
   const mergeImg = type === 'device' ? aggregationImg : eventAggregationImg
   const MapPopUpBox = type === 'device' ? DevicePopUpBox : EventPopUpBox
   const styleTransform = type === 'device' ? 'translateY(-50%)' : 'translate(-50%,-110%)'
@@ -136,7 +145,6 @@
   // 事件散点
   let eventList = []
   function processChildren(childrens) {
      // console.log(childrens, '事件点')
      return (childrens || []).map(item => {
         const arr = processChildren(item.childrens)
         if (item.data) {
@@ -195,6 +203,7 @@
      if (!areaCode) return
      saveParams.area_code = areaCode
      const list = type === 'device' ? await getDeviceCount(areaCode) : await getMapEventCount(saveParams)
      const splashedList =
         type === 'device'
            ? await getDeviceList(areaCode)
@@ -203,6 +212,7 @@
                  latitude: Number(i.latitude),
                  longitude: Number(i.longitude),
                  type: 'event',
          status: i.status
              }))
      const hierarchy = convertToHierarchy(areaCode.slice(0, 6))
      const jsonPath = hierarchy.join('/')
@@ -292,6 +302,15 @@
   //散点机巢
   function splashed(row) {
      row.splashedList.forEach((item, index) => {
      const eventImage = {
        0: eventPending,
        2: eventWaitAudit,
        3: eventProcessing,
        4: eventCompleted,
        5: eventClosed
      }
      const image = type === 'device' ? (item.status === "OFFLINE" ? endingHighImg : endingImg) : eventImage[item.status] || eventSingle
         viewer.entities.add({
            id: `aggregation-splashed-${index}`,
@@ -308,9 +327,7 @@
            },
            billboard: {
          // singleImg
               image: new Cesium.ConstantProperty(()=>{
            return item.status ==="OFFLINE" ? offlinesingleImg:singleImg
          }),
          image: new Cesium.ConstantProperty(image),
               width: 24,
               height: 24,
            },
@@ -495,8 +512,6 @@
   const singleMachineEvent = async click => {
      let clickTargets = viewer.scene.drillPick(click.position).map(item => item.id)
      if (!clickTargets.length) return
      // console.log(clickTargets, 11111)
      let deviceAggregationFind = findTypeItem(
         clickTargets,