From b520e8aaaff455b96c63e7f903dc17b9cbaacf92 Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Thu, 02 Mar 2023 16:21:06 +0800
Subject: [PATCH] 警员警车鼠标移入提示框

---
 src/views/activity/index.vue |   89 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 67 insertions(+), 22 deletions(-)

diff --git a/src/views/activity/index.vue b/src/views/activity/index.vue
index 366d2eb..3ab58d6 100644
--- a/src/views/activity/index.vue
+++ b/src/views/activity/index.vue
@@ -954,7 +954,7 @@
                         })
 
                     } else if (item.type == 3 && pointShow) {
-                        let positionObj = this.convertBillboardPositionDate(item.position, 'policeman', item.id, item.policemanId, item.deptId, item.color)
+                        let positionObj = this.convertBillboardPositionDate(item, 'policeman')
                         let position = new global.DC.Position(Number(positionObj.lng), Number(positionObj.lat))
                         let point = new global.DC.Point(position)
                         let color = ''
@@ -966,6 +966,7 @@
                             let b = parseInt(item.color.slice(5, 7), 16)
                             color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 150)
                         }
+                        point.attrParams = positionObj
                         pointCircleCarLayer.addOverlay(point)
                         point.setStyle({
                             "color": color, //颜色
@@ -973,11 +974,16 @@
                             "outlineWidth": 0, //边框大小,
                             "pixelSize": 32,
                         })
+                        point.on(global.DC.MouseEventType.CLICK, this.overlayTypeClick)
+                        point.on(global.DC.MouseEventType.MOUSE_OVER, this.pointMouseOver)
+                        point.on(global.DC.MouseEventType.MOUSE_OUT, this.pointMouseOut)
                         this.$EventBus.$emit('layerPointAdd', {
                             layerName: 'newDrawLayers',
                             type: 'billboard',
                             params: positionObj,
-                            incident: this.overlayTypeClick
+                            incident: this.overlayTypeClick,
+                            mouseOverIncident: this.pointMouseOver,
+                            mouseOutIncident: this.pointMouseOut
                         })
                     }
                 })
@@ -1088,7 +1094,7 @@
                             },
                         })
                     } else if (item.type == 3 && pointShow) {
-                        let positionObj = this.convertBillboardPositionDate(item.position, 'policecar', item.id, item.carId, item.deptId, item.color)
+                        let positionObj = this.convertBillboardPositionDate(item, 'policecar')
                         let position = new global.DC.Position(Number(positionObj.lng), Number(positionObj.lat))
                         let point = new global.DC.Point(position)
                         let color = ''
@@ -1100,6 +1106,7 @@
                             let b = parseInt(item.color.slice(5, 7), 16)
                             color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 150)
                         }
+                        point.attrParams = positionObj
                         pointCircleManLayer.addOverlay(point)
                         point.setStyle({
                             "color": color, //颜色
@@ -1107,7 +1114,9 @@
                             "outlineWidth": 0, //边框大小,
                             "pixelSize": 32,
                         })
-
+                        point.on(global.DC.MouseEventType.CLICK, this.overlayTypeClick)
+                        point.on(global.DC.MouseEventType.MOUSE_OVER, this.pointMouseOver)
+                        point.on(global.DC.MouseEventType.MOUSE_OUT, this.pointMouseOut)
                         this.$EventBus.$emit('layerPointAdd', {
                             layerName: 'newCarDrawLayers',
                             type: 'billboard',
@@ -1168,7 +1177,7 @@
         getCarList () {
             getCarList().then(res => {
                 res.data.data.forEach(item => {
-                    this.policecarOption.push({ value: `${item.id}`, label: `${item.serialNumber}` })
+                    this.policecarOption.push({ value: `${item.id}`, label: `${item.serialNumber}` , carType: `${item.carType}` })
                 })
             })
         },
@@ -1222,7 +1231,7 @@
         // 添加活动图标
         addActivityPoint () {
             this.activityList.forEach(item => {
-                let positionObj = this.convertBillboardPositionDate(item.position, 'activity')
+                let positionObj = this.convertBillboardPositionDate(item, 'activity')
                 this.$EventBus.$emit('layerPointAdd', {
                     layerName: 'activityLayers',
                     type: "billboard",
@@ -1252,17 +1261,17 @@
         },
 
         // 转换 点 坐标数据
-        convertBillboardPositionDate (data, iconName, plotId, policeId, deptId, color) {
-            let positionStr = data
-            positionStr = data.slice(6, positionStr.length - 1)
+        convertBillboardPositionDate (data, iconName) {
+            let positionStr = data.position
+            positionStr = data.position.slice(6, positionStr.length - 1)
             let positionArr = positionStr.split(" ")
             let positionObj = {}
             if (iconName == 'activity') {
                 positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 0, url: '/img/icon/activity.png' }
             } else if (iconName == 'policeman') {
-                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 0.05, url: '/img/icon/man3.png', id: plotId, policemanId: policeId, deptId: deptId, color: color }
+                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 0.05, url: '/img/icon/man3.png', data:data}
             } else if (iconName == 'policecar') {
-                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 0.05, url: '/img/icon/car3.png', id: plotId, carId: policeId, deptId: deptId, color: color }
+                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 0.05, url: '/img/icon/car3.png', data:data}
             }
             return positionObj
         },
@@ -1405,7 +1414,7 @@
                 analyseLayer.clear()
             }
 
-            let positionObj = this.convertBillboardPositionDate(item.position, 'activity')
+            let positionObj = this.convertBillboardPositionDate(item, 'activity')
 
             let point = new global.DC.Point(`${positionObj.lng}, ${positionObj.lat}`)
             analyseLayer.addOverlay(point)
@@ -1782,19 +1791,19 @@
             } else {
                 this.isChoosePoliceElementDisabled = true
             }
-            if ('policemanId' in e.overlay.attrParams) {
-                this.policeIconId = e.overlay.attrParams.id
-                this.policeType = e.overlay.attrParams.policemanId
-                this.choosePoliceColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color : '#FF0000'
-                let choosePoliceName = this.platFn(this.policeTreeData).find(item => item.id == e.overlay.attrParams.policemanId).name
+            if ('policemanId' in e.overlay.attrParams.data) {
+                this.policeIconId = e.overlay.attrParams.data.id
+                this.policeType = e.overlay.attrParams.data.policemanId
+                this.choosePoliceColor = e.overlay.attrParams.data.color != '' ? e.overlay.attrParams.data.color : '#FF0000'
+                let choosePoliceName = this.platFn(this.policeTreeData).find(item => item.id == e.overlay.attrParams.data.policemanId).name
                 this.searchPoliceTreeName = choosePoliceName
                 this.policeIconIsCreated = true
                 this.policeChooseVisible = true
-            } else if ('carId' in e.overlay.attrParams) {
+            } else if ('carId' in e.overlay.attrParams.data) {
                 this.policeOption = this.policecarOption
-                this.policeIconId = e.overlay.attrParams.id
-                this.policeType = e.overlay.attrParams.carId
-                this.chooseCarColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color : '#FF0000'
+                this.policeIconId = e.overlay.attrParams.data.id
+                this.policeType = e.overlay.attrParams.data.carId
+                this.chooseCarColor = e.overlay.attrParams.data.color != '' ? e.overlay.attrParams.data.color : '#FF0000'
                 this.policeIconIsCreated = true
                 this.policeChooseCarVisible = true
             }
@@ -2485,6 +2494,19 @@
         // 鼠标移入图标事件
         pointMouseOver (e) {
             this.$store.commit('SET_ACTIVITYPOLICEPOPUP', true)
+            let hoverData = {}
+            if('carId' in e.overlay.attrParams.data){
+                hoverData = this.policecarOption.filter(item=>item.value == e.overlay.attrParams.data.carId)[0]
+                hoverData.policeData={'name': 'none'}
+                hoverData.policeStationName = 'none'
+            }else{
+                let policeArr = this.filterTree (this.policeTreeData)
+                hoverData.policeData = policeArr.filter(item=>item.id == e.overlay.attrParams.data.policemanId)[0]
+                hoverData.policeStationName = policeArr.filter(item=>item.id == policeArr.filter(item=>item.id == e.overlay.attrParams.data.policemanId)[0].parentId)[0].name
+                hoverData.carType = 'none'
+                hoverData.label = 'none'
+            }
+            this.$store.commit('SET_ACTIVITYPOLICEPOPUPDATA', hoverData)
 
             var popup = new global.DC.DivForms(global.viewer, {
                 domId: 'ActivityPoliceDomBox',
@@ -2506,8 +2528,19 @@
          * @return {*}
          */
         pointMouseOut (e) {
-            console.log(6666333)
             this.$store.commit('SET_ACTIVITYPOLICEPOPUP', false)
+        },
+
+        // 树形数据传数组
+        filterTree (tree, arr = []) {
+          if (!tree.length) return []
+          arr.push(...tree)
+          for(let item of tree){
+            if(item.children && item.children.length){
+               this.filterTree(item.children,arr)
+            }
+          }
+          return arr
         }
 
     },
@@ -2523,6 +2556,18 @@
         searchPoliceTreeName (val) {
             this.$refs.policeTree.filter(val)
         },
+
+        policeChooseVisible(val) {
+            if(val){
+                this.$store.commit('SET_ACTIVITYPOLICEPOPUP', false)
+            }
+        },
+
+        policeChooseCarVisible(val){
+            if(val){
+                this.$store.commit('SET_ACTIVITYPOLICEPOPUP', false)
+            }
+        }
     },
 
     destroyed () {

--
Gitblit v1.9.3