From e8efe7370ab9f2b9dfb07b0ae70b0e06d98e37c8 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 01 Apr 2023 17:18:35 +0800
Subject: [PATCH] 菜单栏调整和视频监控调整,每个页面初始化位置调整

---
 src/styles/base/index.scss                       |   10 
 src/styles/media/index.scss                      |    1 
 src/components/map/components/mapSearchPopup.vue |   18 
 src/views/policeInfor/index.vue                  |    7 
 src/views/activity/index.vue                     |    5 
 src/utils/mapPositionInit.js                     |    2 
 /dev/null                                        | 1315 --------------------------------------
 src/views/home/index.vue                         |   34 
 src/views/police/index.vue                       |    6 
 src/views/video/region.vue                       |   13 
 src/views/layout/index.vue                       |   38 
 src/views/video/index.vue                        |    7 
 src/views/activity/components/polygonPlot.vue    |    4 
 src/components/map/components/videoListPopup.vue |   19 
 src/views/video/list.vue                         |  532 ++++++++-------
 15 files changed, 395 insertions(+), 1,616 deletions(-)

diff --git a/src/components/map/components/mapSearchPopup.vue b/src/components/map/components/mapSearchPopup.vue
index c290e81..5397954 100644
--- a/src/components/map/components/mapSearchPopup.vue
+++ b/src/components/map/components/mapSearchPopup.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2023-03-02 09:39:32
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-03-31 17:03:52
+ * @LastEditTime: 2023-04-01 14:43:39
  * @FilePath: \srs-police-affairs\src\components\map\components\mapSearchPopup.vue
  * @Description: 
  * 
@@ -16,6 +16,7 @@
                 <div class="content" :class="{ 'scale-dom': scaleDomFlag }">
                     {{ mapSearchPopupData.name }}
                 </div>
+                <div class="bottom-arrow"></div>
             </div>
         </div>
     </div>
@@ -65,6 +66,21 @@
     left: 0;
     z-index: 1 !important;
 
+    &>.popup-box {
+        position: relative;
+    }
+
+    .bottom-arrow {
+        position: absolute;
+        left: 50%;
+        bottom: 0px;
+        width: 0;
+        height: 0;
+        border: 10px solid transparent;
+        border-top-color: $bg-color;
+        transform: translate(-50%, 100%);
+    }
+
     .scale-dom {
         transform: scale(3);
         transform-origin: left;
diff --git a/src/components/map/components/videoListPopup.vue b/src/components/map/components/videoListPopup.vue
index f99d237..f1a5001 100644
--- a/src/components/map/components/videoListPopup.vue
+++ b/src/components/map/components/videoListPopup.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2023-03-02 09:39:32
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-03-07 11:04:16
+ * @LastEditTime: 2023-04-01 14:41:41
  * @FilePath: \srs-police-affairs\src\components\map\components\videoListPopup.vue
  * @Description: 
  * 
@@ -16,6 +16,7 @@
                 <div class="content" :class="{ 'scale-dom': scaleDomFlag }">
                     {{ videoListPopupData.name }}
                 </div>
+                <div class="bottom-arrow"></div>
             </div>
         </div>
     </div>
@@ -65,12 +66,28 @@
     left: 0;
     z-index: 1 !important;
 
+    &>.popup-box {
+        position: relative;
+    }
+
+    .bottom-arrow {
+        position: absolute;
+        left: 50%;
+        bottom: 0px;
+        width: 0;
+        height: 0;
+        border: 10px solid transparent;
+        border-top-color: $bg-color;
+        transform: translate(-50%, 100%);
+    }
+
     .scale-dom {
         transform: scale(3);
         transform-origin: left;
     }
 
     .content {
+        margin-bottom: 10px;
         padding: 0.5vh;
         width: 220px;
         background: $bg-color;
diff --git a/src/styles/base/index.scss b/src/styles/base/index.scss
index e021e9d..d06a88a 100644
--- a/src/styles/base/index.scss
+++ b/src/styles/base/index.scss
@@ -676,7 +676,6 @@
         display: flex;
         flex-direction: column;
         width: 320px;
-        height: 210px;
 
         .el-dialog__body {
             flex: 1;
@@ -688,11 +687,20 @@
             flex-wrap: wrap;
 
             &>div {
+                width: 100%;
+                height: 36px;
+                line-height: 36px;
                 display: flex;
+                justify-content: flex-start;
                 margin-bottom: 6px;
 
                 &>div {
                     width: 100px;
+                    line-height: 36px;
+                }
+
+                &.button {
+                    justify-content: space-around;
                 }
             }
 
diff --git a/src/styles/media/index.scss b/src/styles/media/index.scss
index 2bdb8fd..5ba3ef1 100644
--- a/src/styles/media/index.scss
+++ b/src/styles/media/index.scss
@@ -2214,7 +2214,6 @@
 
                         .el-dialog {
                             width: countSizeVw(320, 1920);
-                            height: countSizeVh(210);
                         }
 
                         .pick-color-box {
diff --git a/src/utils/mapPositionInit.js b/src/utils/mapPositionInit.js
index 9b073f4..642bd68 100644
--- a/src/utils/mapPositionInit.js
+++ b/src/utils/mapPositionInit.js
@@ -7,7 +7,7 @@
     global.viewer.flyToPosition(
         new global.DC.Position(
             Number(homeCenter[0] + 0.046),
-            Number(homeCenter[1] - 0.36),
+            Number(homeCenter[1] - 0.284),
             Number(36000),
             Number(-3),
             Number(-45),
diff --git a/src/views/activity/components/drawBtnBox copy.vue b/src/views/activity/components/drawBtnBox copy.vue
deleted file mode 100644
index 4f429bf..0000000
--- a/src/views/activity/components/drawBtnBox copy.vue
+++ /dev/null
@@ -1,1005 +0,0 @@
-<template>
-    <div v-show="dialogVisible && isShowActivityEditBox" class="draw-btn-box">
-        <div class="left">
-            <h3>预案布置</h3>
-            <div>
-                <span>要素资源:</span>
-                <ul>
-                    <li>
-                        <button @click="draw('billboard', 'policeman')" title="警员">
-                            <img src="/img/icon/police-people-btn.png" style="height:100%" />
-                        </button>
-                    </li>
-                    <li>
-                        <button @click="draw('billboard', 'policecar')" title="警车">
-                            <img src="/img/icon/car-btn.png" style="height:100%" />
-                        </button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('billboard', 'icon1')" title="普通群众">普通群众</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('billboard', 'icon2')" title="保护对象">保护对象</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('billboard', 'icon3')" title="危险人物">危险人物</button>
-                    </li>
-                </ul>
-            </div>
-            <div>
-                <span>作战标绘:</span>
-
-                <ul>
-                    <li>
-                        <button @click="drawArrow('attack_arrow')" title="进攻箭头">进攻箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('double_arrow')" title="双箭头">双箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('fine_arrow')" title="直箭头">直箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('tailed_attack_arrow')" title="燕尾箭头">燕尾箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('polygon')" title="多边形">多边形</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrowLabel" title="文字标注">文字标注</button>
-                    </li>
-                </ul>
-            </div>
-            <div>
-                <span>巡逻路线:</span>
-                <ul>
-                    <li>
-                        <!-- <el-button
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ></el-button>-->
-                        <button @click="draw('polyline', 'policecar')" title="巡逻路线">
-                            <img src="/img/icon/route1.png" style="height:100%" />
-                        </button>
-                    </li>
-                </ul>
-            </div>
-        </div>
-
-        <el-dialog :title="labelPopupTitle" :modal="false" :visible.sync="addLabelVisible" :close-on-click-modal="true"
-            class="add-label-box" :before-close="cancelSaveLabel">
-            <div>
-                <div class="value-name-box">文字内容:</div>
-                <div class="input-width-box">
-                    <input type="text" v-model="labelInput" placeholder="请输入..." />
-                </div>
-            </div>
-            <div>
-                <div class="value-name-box">字体大小:</div>
-                <div class="input-fontsize-box">
-                    <el-input-number v-model="labelInputFontSize" :step="2" :min="12" max="72"
-                        step-strictly></el-input-number>
-                </div>
-            </div>
-            <div>
-                <div class="value-name-box">字体颜色:</div>
-                <div class="pick-color-box">
-                    <el-color-picker v-model="labelInputFontColor" :predefine="predefineColors" size="small">
-                    </el-color-picker>
-                </div>
-            </div>
-            <div class="btn-box">
-                <el-button @click="lableBoxSave">保存</el-button>
-                <el-button @click="lableBoxDelete">删除</el-button>
-                <el-button @click="cancelSaveLabel">取消</el-button>
-            </div>
-        </el-dialog>
-    </div>
-</template>
-
-<script>
-import {
-    updateActivityCar, updateActivityPolice,
-    updateSecurityPlot
-} from '@/api/activity/index.js'
-
-let plotDrawEmit = undefined
-
-let drawArrowLayers = null
-let isAddLabel = false
-
-let curLabelOverLayer = null
-let drawLabelStatus = 'end'
-let labelPositionChange = false
-
-let labelOverLayerID = []
-
-let eventLast = 0
-let addPlotOverlayData = null
-let addPoliceIconOverlayData = null
-let lableOverlayData = null
-
-export default {
-    props: [
-        'dialogVisible', 'isShowActivityEditBox', 'showingSecurityId',
-        'policeSwitch', 'polylineBtnSwitch',
-        'arrowBtnSwitch', 'policeIconId', 'lineWidth'],
-
-    data () {
-        return {
-            addLabelVisible: false,// 文字标注的窗口(内容是名称)
-            labelInput: '',
-            addLabelPosition: null,
-            labelPopupTitle: '添加文字标注',
-            labelId: '',
-            labelInputFontSize: '40',
-            labelInputFontColor: '#FFFFFF',
-            predefineColors: [
-                '#ff4500',
-                '#ff8c00',
-                '#ffd700',
-                '#90ee90',
-                '#00ced1',
-                '#1e90ff',
-                '#c71585',
-                'rgba(255, 69, 0, )',
-                'rgb(255, 120, 0)',
-                'hsv(51, 100, 98)',
-                'hsva(120, 40, 94)',
-                'hsl(181, 100%, 37%)',
-                'hsla(209, 100%, 56%)',
-                '#c7158577'
-            ],
-        }
-    },
-
-    mounted () {
-        drawLabelStatus = 'end'
-
-        this.$nextTick(() => {
-            plotDrawEmit = new global.DC.Plot(global.viewer, {
-                clampToModel: true
-            })
-
-            if (drawArrowLayers == null) {
-                drawArrowLayers = new global.DC.VectorLayer('drawArrowLayers')
-                global.viewer.addLayer(drawArrowLayers)
-            }
-
-            global.viewer.on(global.DC.MouseEventType.CLICK, this.viewerClick)
-            global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, this.viewerLableMove)
-            global.viewer.on(global.DC.MouseEventType.LEFT_UP, this.labelUp)
-
-            // global.viewer.scene.globe.depthTestAgainstTerrain = true
-        })
-
-    },
-
-    methods: {
-        // 地图元素绘制
-        draw (poltType, policeType) {
-
-            labelPositionChange = false
-            drawLabelStatus = 'end'
-            isAddLabel = false
-
-            let flag = false
-
-            const that = this
-
-            global.viewer.tooltip.enable = true
-
-            plotDrawEmit && plotDrawEmit.draw(poltType, overlay => {
-                if (isAddLabel) return
-
-                if (poltType == 'billboard' && policeType == 'policeman') {
-                    overlay.icon = '/img/icon/man3.png'
-                } else if (poltType == 'billboard' && policeType == 'policecar') {
-                    overlay.icon = '/img/icon/car3.png'
-                }
-
-                if (overlay) {
-                    addPoliceIconOverlayData = overlay
-
-                    if (poltType == 'polyline' && 'policecar' == policeType) {
-                        that.$parent.addLineLayer(overlay)
-                    } else {
-                        that.$parent.addPointCircleCarLayer(overlay)
-                    }
-
-                    plotDrawEmit.edit(overlay, (e) => {
-                        flag = true
-
-                        e.drawType = poltType
-
-                        e.policeType = policeType
-
-                        that.$emit('setOverlayObj', e)
-
-                        document.oncontextmenu = function () {
-                            if (flag == true && poltType == 'billboard') {
-                                flag == true && that.$parent.addSaveNewDrawPoint(policeType)
-
-                                flag = false
-                            } else if (flag == true && poltType == 'polyline') {
-                                let position = ''
-                                e._positions.forEach(item => {
-                                    position += item._lng + ' ' + item._lat + ','
-                                })
-                                position = position.slice(0, position.length - 1)
-
-                                flag == true && that.$parent.addSaveNewDrawLine(position)
-
-                                flag = false
-                            }
-                        }
-                    })
-                }
-            }, { material: global.DC.Namespace.Cesium.Color.fromBytes(28, 160, 133, 122) })
-        },
-
-        drawArrow (type, iconType) {
-            labelPositionChange = false
-            drawLabelStatus = 'end'
-            isAddLabel = false
-
-            global.viewer.tooltip.enable = true
-
-            const that = this
-            let flag = false
-
-            if (type == 'polygon') {
-                plotDrawEmit && plotDrawEmit.draw(type, overlay => {
-                    if (isAddLabel) return
-
-                    if (overlay) {
-                        addPlotOverlayData = overlay
-
-                        that.$parent.addArrowsListLayer(overlay)
-
-                        plotDrawEmit.edit(overlay, (e) => {
-                            flag = true
-
-                            let positionStr = ''
-                            overlay._positions.forEach(item => {
-                                positionStr += item._lng + ' ' + item._lat + ','
-                            })
-                            positionStr = positionStr.slice(0, positionStr.length - 1)
-
-                            document.oncontextmenu = function () {
-                                flag == true && that.$parent.addSaveNewDraw(positionStr, 5)
-
-                                flag = false
-                            }
-                        })
-                    }
-                }, { material: global.DC.Namespace.Cesium.Color.fromBytes(64, 158, 255, 122) })
-            } else if (type == 'billboard') {
-                plotDrawEmit && plotDrawEmit.draw(type, overlay => {
-                    if (isAddLabel) return
-
-                    if (iconType == 'icon1') {
-                        overlay.size = [24, 24]
-                    } else if (iconType == 'icon2') {
-                        overlay.size = [32, 32]
-                    }
-                    overlay.icon = `/img/icon/${iconType}.png`
-                    if (overlay) {
-                        addPlotOverlayData = overlay
-
-                        that.$parent.addPointCircleCarLayer(overlay)
-
-                        plotDrawEmit.edit(overlay, (e) => {
-                            flag = true
-
-                            document.oncontextmenu = function () {
-                                if (flag) {
-                                    flag == true && that.$parent.addPointPopupShow(iconType, `${e._position._lng} ${e._position._lat}`)
-
-                                    flag = false
-                                }
-                            }
-                        })
-                    }
-                })
-            } else {
-                plotDrawEmit && plotDrawEmit.draw(type, overlay => {
-                    if (isAddLabel) return
-
-                    if (overlay) {
-                        let plotType = ''
-                        if (type == 'attack_arrow') {
-                            plotType = 1
-                        } else if (type == 'double_arrow') {
-                            plotType = 2
-                        } else if (type == 'fine_arrow') {
-                            plotType = 3
-                        } else if (type == 'tailed_attack_arrow') {
-                            plotType = 4
-                        }
-
-                        addPlotOverlayData = overlay
-
-                        that.$parent.addArrowsListLayer(overlay)
-
-                        plotDrawEmit.edit(overlay, (e) => {
-                            flag = true
-                            let positionStr = ''
-                            overlay._positions.forEach(item => {
-                                positionStr += item._lng + ' ' + item._lat + ','
-                            })
-                            positionStr = positionStr.slice(0, positionStr.length - 1)
-
-                            document.oncontextmenu = function () {
-                                flag == true && that.$parent.addSaveNewDraw(positionStr, plotType)
-
-                                flag = false
-                            }
-                        })
-                    }
-                }, { material: global.DC.Namespace.Cesium.Color.fromBytes(64, 158, 255, 122) })
-            }
-        },
-
-        // 删除所有地图绘制元素
-        removeDraw () {
-            addPoliceIconOverlayData != null && !addPoliceIconOverlayData.attrParams && addPoliceIconOverlayData.remove()
-        },
-
-        removeDrawArrow () {
-            addPlotOverlayData != null && addPlotOverlayData.remove()
-            labelOverLayerID = []
-        },
-
-        clearDrawArrow () {
-            drawArrowLayers != null && drawArrowLayers.clear()
-        },
-
-        // 编辑标绘位置
-        plotEdit (overlayData, type) {
-            if (type == "arrow") {
-                if ('pointOverlayData' in overlayData.attrParams) {
-                    overlayData.attrParams.pointOverlayData.remove()
-                }
-
-                plotDrawEmit.edit(overlayData, (e) => {
-                    let position = ''
-                    if ('_positions' in overlayData) {
-                        overlayData._positions.forEach((item, index) => {
-                            position += item._lng + ' ' + item._lat + ','
-                        })
-                        position = position.slice(0, position.length - 1)
-                    } else {
-                        overlayData.position = {
-                            lng: Number(overlayData._position._lng),
-                            lat: Number(overlayData._position._lat),
-                            alt: 0.5,
-                        }
-                        position = overlayData._position._lng + ' ' + overlayData._position._lat + ',' + overlayData._position._lng + ' ' + overlayData._position._lat
-                        let pointPosition = new global.DC.Position(Number(overlayData._position._lng), Number(overlayData._position._lat), 0)
-                        let point = new global.DC.Point(pointPosition)
-                        drawArrowLayers.addOverlay(point)
-                        point.attrParams = { 'id': overlayData.attrParams.id, 'color': overlayData.attrParams.color, 'item': overlayData.attrParams }
-                        let r = parseInt(overlayData.attrParams.color.slice(1, 3), 16)
-                        let g = parseInt(overlayData.attrParams.color.slice(3, 5), 16)
-                        let b = parseInt(overlayData.attrParams.color.slice(5, 7), 16)
-                        let a = Math.floor(Number(overlayData.attrParams.color.split(',')[1]) * 2.55)
-                        let color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
-                        point.setStyle({
-                            "color": color, //颜色
-                            "outlineColor": color, //边框颜色
-                            "outlineWidth": 0, //边框大小,
-                            "pixelSize": 32,
-                        })
-                        overlayData.attrParams.pointOverlayData = point
-                    }
-                    this.updateSecurityPlot({ id: overlayData.attrParams.id, position: position })
-                })
-            } else if (type == "line") {
-                let lineOverlayData = overlayData.attrParams.lineObj
-
-                plotDrawEmit.edit(lineOverlayData, (e) => {
-                    let position = ''
-                    let lineNewPositions = []
-                    lineOverlayData._positions.forEach((item, index) => {
-                        if (index % 2 == 0) {
-                            position += item._lng + ' ' + item._lat + ','
-                            lineNewPositions.push(item)
-                        }
-                    })
-                    overlayData.attrParams.lineObj.positions = lineNewPositions
-                    position = position.slice(0, position.length - 1)
-
-                    this.updateActivityCar({
-                        id: overlayData.attrParams.id,
-                        color: overlayData.attrParams.color,
-                        width: overlayData.attrParams.width,
-                        type: 1,
-                        position: position
-                    }, overlayData)
-                })
-            }
-        },
-
-        // 保存新增标绘样式修改
-        addNewPlot (item) {
-            let r = parseInt(item.color.slice(1, 3), 16)
-            let g = parseInt(item.color.slice(3, 5), 16)
-            let b = parseInt(item.color.slice(5, 7), 16)
-            let a = Math.floor(Number(item.color.split(',')[1]) * 2.55) ? Math.floor(Number(item.color.split(',')[1]) * 2.55) : 255
-            let color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
-            if (item.type == 9) {
-                let position = item.position.slice(12, item.position.length - 1).replace(/,/g, ';').replace(/ /g, ',')
-                position = position.split(';')[0].split(',')
-                position = new global.DC.Position(Number(position[0]), Number(position[1]))
-                let label = new global.DC.Label(position, item.name)
-                label.attrParams = { 'id': item.id, item }
-                label.setStyle({
-                    'fillColor': color,
-                    "font": `${item.width}px sans-serif`,
-                })
-                this.lableAllEvent(label)
-
-                this.$parent.addArrowsListLayer(label)
-                return
-            }
-
-            addPlotOverlayData.attrParams = { 'id': item.id, 'color': item.color, item }
-            addPlotOverlayData.setStyle({
-                "material": color
-            })
-            addPlotOverlayData.on(global.DC.MouseEventType.CLICK, this.$parent.reeditArrowClick)
-            if (item.type == 6 || item.type == 7 || item.type == 8) {
-                let position = item.position.slice(12, item.position.length - 2).split(',')[0].split(' ')
-                let pointPosition = new global.DC.Position(Number(position[0]), Number(position[1]))
-                addPlotOverlayData.position = {
-                    lng: Number(position[0]),
-                    lat: Number(position[1]),
-                    alt: 0.5,
-                }
-                let point = new global.DC.Point(pointPosition)
-
-                this.$parent.addPointCircleCarLayer(point)
-
-                point.attrParams = { 'id': item.id, 'color': item.color, item }
-                //    point.on(global.DC.MouseEventType.CLICK, this.$parent.reeditArrowClick)
-                point.setStyle({
-                    "color": color, //颜色
-                    "outlineColor": color, //边框颜色
-                    "outlineWidth": 0, //边框大小,
-                    "pixelSize": 32,
-                })
-                addPlotOverlayData.attrParams.pointOverlayData = point
-            }
-            if (item.type == 5 && item.areaType == 2) {
-                let addPlotPositionArr = []
-                addPlotOverlayData._positions.forEach(inItem => {
-                    addPlotPositionArr.push([Number(inItem._lng), Number(inItem._lat)])
-                })
-                addPlotPositionArr.push([Number(addPlotOverlayData._positions[0]._lng), Number(addPlotOverlayData._positions[0]._lat)])
-                let cachePolygon = this.$turf.polygon([addPlotPositionArr])
-                let arrowsListLayerOverlayList = this.$parent.getArrowsListLayerOverlayList()
-                arrowsListLayerOverlayList.push(...drawArrowLayers.getOverlays())
-                arrowsListLayerOverlayList.forEach(inItem => {
-                    if (inItem.attrParams.item.type == 5 && inItem.attrParams.item.areaType == 1) {
-                        let savePlotPositionArr = []
-                        let savePlotPositionStr = []
-                        inItem._positions.forEach(ininItem => {
-                            savePlotPositionArr.push([Number(ininItem._lng), Number(ininItem._lat)])
-                            savePlotPositionStr += ininItem._lng + ',' + ininItem._lat + ';'
-                        })
-                        savePlotPositionArr.push([Number(inItem._positions[0]._lng), Number(inItem._positions[0]._lat)])
-                        let carePolygon = this.$turf.polygon([savePlotPositionArr])
-                        let isContains = this.$turf.booleanContains(cachePolygon, carePolygon)
-                        // 如果完全包含就作为洞面扣去
-                        if (isContains) {
-                            addPlotOverlayData.holes = [savePlotPositionStr]
-                        }
-
-                    }
-                })
-            }
-        },
-
-        // 保存新增警力资源
-        addNewPolice (data, type, carType) {
-            // 巡逻路线添加
-            if (type == 'policecar' && carType == 1) {
-                // 线坐标字符串
-                let positionNewArr = this.$parent.convertPolylineOrPolygonPositionDate(data.position, data.type)
-                positionNewArr = positionNewArr.slice(1, positionNewArr.length - 2)
-                // 范围面坐标串
-                let coords = global.DC.GeoTools.polylineBuffer(positionNewArr, data.width != -1 ? data.width : 100)
-                let positionStr = ''
-                coords.forEach((item, index) => {
-                    if (!(index == coords.length - 1)) {
-                        positionStr += item[0] + ',' + item[1] + ';'
-                    }
-                })
-                let polygonSavePositionStr = positionStr + coords[0][0] + ',' + coords[0][1] + ';'
-                positionStr = positionStr.slice(0, positionStr.length - 1)
-                // 面颜色
-                let color = ''
-                // 线颜色
-                let lineColor = ''
-                if (data.color == '') {
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 150)
-                } else {
-                    let r = parseInt(data.color.slice(1, 3), 16)
-                    let g = parseInt(data.color.slice(3, 5), 16)
-                    let b = parseInt(data.color.slice(5, 7), 16)
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 150)
-                    lineColor = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 255)
-                }
-                addPoliceIconOverlayData.setStyle({
-                    "material": lineColor,
-                    'width': 3
-                })
-
-                data.linePositionStr = positionNewArr
-                data.polygonPositionStr = polygonSavePositionStr
-                data.lineObj = addPoliceIconOverlayData
-
-                addPoliceIconOverlayData.attrParams = data
-
-                this.$EventBus.$emit('layerPolygonAdd', {
-                    layerName: 'newCarDrawLineLayers',
-                    positions: positionStr,
-                    material: color,
-                    params: data,
-                    incident: this.$parent.lineOverlayTypeClick
-                })
-            } else {
-                let positionObj = this.$parent.convertBillboardPositionDate(data, type)
-                positionObj.lng = positionObj.lng.slice(1, positionObj.lng.length - 1)
-                positionObj.lat = positionObj.lat.slice(0, positionObj.lat.length - 2)
-                let positionArr = data.position.slice(7, data.position.length - 2).split(',')[0].split(' ')
-                let position = new global.DC.Position(Number(positionArr[0]), Number(positionArr[1]))
-                let point = new global.DC.Point(position)
-                let color = ''
-                if (data.color == '') {
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 150)
-                } else {
-                    let r = parseInt(data.color.slice(1, 3), 16)
-                    let g = parseInt(data.color.slice(3, 5), 16)
-                    let b = parseInt(data.color.slice(5, 7), 16)
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 255)
-                }
-                point.attrParams = positionObj
-                this.$parent.addPointCircleCarLayer(point)
-                point.setStyle({
-                    "color": color, //颜色
-                    "outlineColor": color, //边框颜色
-                    "outlineWidth": 0, //边框大小,
-                    "pixelSize": 32,
-                })
-                // point.on(global.DC.MouseEventType.CLICK, this.$parent.overlayTypeClick)
-                point.on(global.DC.MouseEventType.MOUSE_OVER, this.$parent.pointMouseOver)
-                point.on(global.DC.MouseEventType.MOUSE_OUT, this.$parent.pointMouseOut)
-                addPoliceIconOverlayData.attrParams = positionObj
-                addPoliceIconOverlayData.attrParams.pointOverlayData = point
-                addPoliceIconOverlayData.position = {
-                    lng: Number(positionArr[0]),
-                    lat: Number(positionArr[1]),
-                    alt: 0.5,
-                }
-                addPoliceIconOverlayData.on(global.DC.MouseEventType.CLICK, this.$parent.overlayTypeClick)
-                // addPoliceIconOverlayData.on(global.DC.MouseEventType.MOUSE_OVER, this.$parent.pointMouseOver)
-                // addPoliceIconOverlayData.on(global.DC.MouseEventType.MOUSE_OUT, this.$parent.pointMouseOut)
-            }
-        },
-
-        // 修改标绘样式
-        editPlotStyle (params, overlay) {
-            if ('color' in params) {
-                let r = parseInt(params.color.slice(1, 3), 16)
-                let g = parseInt(params.color.slice(3, 5), 16)
-                let b = parseInt(params.color.slice(5, 7), 16)
-                let a = Math.floor(Number(params.color.split(',')[1]) * 2.55) ? Math.floor(Number(params.color.split(',')[1]) * 2.55) : 255
-                let color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
-                overlay.attrParams.color = params.color
-                if (overlay.attrParams.item.type == 9) {
-                    overlay.setStyle({
-                        "fillColor": color
-                    })
-                } else {
-                    overlay.setStyle({
-                        "material": color
-                    })
-                }
-                if ('pointOverlayData' in overlay.attrParams) {
-                    let r = parseInt(params.color.slice(1, 3), 16)
-                    let g = parseInt(params.color.slice(3, 5), 16)
-                    let b = parseInt(params.color.slice(5, 7), 16)
-                    let a = Math.floor(Number(params.color.split(',')[1]) * 2.55)
-                    let color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
-                    overlay.attrParams.pointOverlayData.setStyle({
-                        "color": color, //颜色
-                        "outlineColor": color, //边框颜色
-                        "outlineWidth": 0, //边框大小,
-                        "pixelSize": 32,
-                    })
-                }
-            }
-            if ('name' in params) {
-                addPlotOverlayData.text = params.name
-            }
-
-            if ('width' in params) {
-                overlay.setStyle({
-                    "font": `${params.width}px sans-serif`
-                })
-            }
-        },
-
-        // 修改警车样式
-        editPoliceStyle (params, overlay) {
-            if ('color' in params && 'pointOverlayData' in overlay.attrParams) {
-                overlay.attrParams.data.color = params.color
-                overlay.attrParams.pointOverlayData.attrParams.color = params.color
-                let r = parseInt(params.color.slice(1, 3), 16)
-                let g = parseInt(params.color.slice(3, 5), 16)
-                let b = parseInt(params.color.slice(5, 7), 16)
-                let color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 255)
-                overlay.attrParams.pointOverlayData.setStyle({
-                    "color": color, //颜色
-                    "outlineColor": color, //边框颜色
-                    "outlineWidth": 0, //边框大小,
-                    "pixelSize": 32,
-                })
-            }
-
-            if ('carId' in params) {
-                overlay.attrParams.data.carId = params.carId
-            }
-
-            if ('policemanId' in params) {
-                overlay.attrParams.data.policemanId = params.policemanId
-            }
-
-            if ('width' in params) {
-                if (overlay.attrParams && overlay.attrParams.data && overlay.attrParams.data.type && overlay.attrParams.data.type == 3) {
-                    overlay.attrParams.data.width = params.width
-                } else {
-                    let linePosition = ''
-                    if ('position' in params) {
-                        linePosition = params.position.replace(/,/g, ";").replace(/ /g, ",")
-                    } else {
-                        linePosition = overlay.attrParams.linePositionStr
-                    }
-                    let coords = global.DC.GeoTools.polylineBuffer(linePosition, params.width)
-                    let positionStr = ''
-                    coords.forEach((item, index) => {
-                        if (!(index == coords.length - 1)) {
-                            positionStr += item[0] + ',' + item[1] + ';'
-                        }
-                    })
-                    positionStr = positionStr.slice(0, positionStr.length - 1)
-                    // 面颜色
-                    let color = ''
-                    // 线颜色
-                    let lineColor = ''
-                    if (params.color == '') {
-                        color = global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 150)
-                    } else {
-                        let r = parseInt(params.color.slice(1, 3), 16)
-                        let g = parseInt(params.color.slice(3, 5), 16)
-                        let b = parseInt(params.color.slice(5, 7), 16)
-                        color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 150)
-                        lineColor = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 255)
-                    }
-                    overlay.attrParams.lineObj.setStyle({
-                        "material": lineColor,
-                        'width': 3
-                    })
-                    overlay.attrParams.linePositionStr = linePosition
-                    overlay.attrParams.polygonPositionStr = positionStr
-                    overlay.attrParams.color = params.color
-                    overlay.attrParams.width = params.width
-
-                    this.$EventBus.$emit('layerPolygonAdd', {
-                        layerName: 'newCarDrawLineLayers',
-                        positions: positionStr,
-                        material: color,
-                        params: overlay.attrParams,
-                        incident: this.$parent.lineOverlayTypeClick
-                    })
-
-                    overlay.remove()
-                }
-            }
-        },
-
-        // 修改警车
-        // idid, carId警车id, color颜色, width巡逻路线范围宽度, type线面类型, position坐标
-        updateActivityCar (params, overlay) {
-            updateActivityCar(params).then(res => {
-                if (res.data.success) {
-                    this.editPoliceStyle(params, overlay)
-                    this.$message({
-                        message: '保存成功',
-                        type: 'success'
-                    })
-                } else {
-                    this.$message({
-                        message: '保存失败',
-                        type: 'error'
-                    })
-                }
-
-            })
-        },
-
-        // 修改警员
-        // idid, policemanId警察id ,color颜色
-        updateActivityPolice (params, overlay) {
-            updateActivityPolice(params).then(res => {
-                if (res.data.success) {
-                    this.$message({
-                        message: '保存成功',
-                        type: 'success'
-                    })
-                    this.editPoliceStyle(params, overlay)
-                } else {
-                    this.$message({
-                        message: '保存失败',
-                        type: 'error'
-                    })
-                }
-            })
-        },
-
-        updateSecurityPlot (params, overlay) {
-            updateSecurityPlot(params).then(res => {
-                if (res.data.success) {
-                    this.editPlotStyle(params, overlay)
-                    this.$message({
-                        message: '修改成功',
-                        type: 'success'
-                    })
-                } else {
-                    this.$message({
-                        message: '修改失败',
-                        type: 'error'
-                    })
-                }
-            })
-        },
-
-        // 绘制文字标绘
-        drawArrowLabel () {
-            global.viewer.tooltip.enable = false
-            plotDrawEmit != null && plotDrawEmit.stop()
-
-            isAddLabel = true
-            this.labelPopupTitle = ""
-            drawLabelStatus = 'start'
-
-            this.$emit('drawLabel', drawLabelStatus)
-        },
-
-        /**
-         * @description: 点击覆盖物获取到的位置信息
-         * @param {*} e
-         * @return {*}
-         */
-        overlayClickPosition (e) {
-            this.labelShowPopup(e)
-        },
-
-        /**
-         * @description: 点击地图拿到的位置信息
-         * @param {*} e
-         * @return {*}
-         */
-        viewerClick (e) {
-            if (drawLabelStatus == 'start') {
-                this.labelShowPopup(e)
-            }
-        },
-
-        // 文字编辑弹窗
-        labelShowPopup (e) {
-            this.labelPopupTitle = '添加文字标注'
-            this.labelInputFontSize = 40
-            this.labelInputFontColor = '#FFFFFF'
-            this.addLabelVisible = true
-            this.addLabelPosition = e.wgs84SurfacePosition.lng + ' ' + e.wgs84SurfacePosition.lat + ',' + e.wgs84SurfacePosition.lng + ' ' + e.wgs84SurfacePosition.lat
-            this.labelInput = ''
-        },
-
-        // 文字标注窗口的添加按钮
-        lableBoxSave () {
-            if (this.labelInput == '') {
-                this.$message({
-                    message: '请输入标注文字',
-                    type: 'error'
-                })
-            } else {
-                if (this.labelPopupTitle == "添加文字标注") {
-                    this.$parent.addSecurityPlot({ securityId: this.showingSecurityId, position: this.addLabelPosition, type: 9, name: this.labelInput, color: this.labelInputFontColor, width: this.labelInputFontSize })
-                } else {
-                    this.updateSecurityPlot({ id: this.labelId, name: this.labelInput, color: this.labelInputFontColor, width: this.labelInputFontSize }, addPlotOverlayData)
-                }
-                this.cancelSaveLabel()
-            }
-        },
-
-        // 文字标注窗口的删除按钮
-        lableBoxDelete () {
-            this.$parent.deleteSecurityPlot(this.labelId)
-            addPlotOverlayData && addPlotOverlayData.remove()
-            this.cancelSaveLabel()
-        },
-
-        lableAllEvent (label) {
-            labelOverLayerID.push(label.attrParams.id)
-            label.on(global.DC.MouseEventType.CLICK, this.reEditLabel)
-            label.on(global.DC.MouseEventType.LEFT_DOWN, this.labelDowm)
-        },
-
-        labelDowm (e) {
-            eventLast = 0
-
-            setTimeout(() => {
-                if (eventLast == 0) {
-                    this.$EventBus.$emit('closeTooltip')
-
-                    labelPositionChange = true
-                    curLabelOverLayer = e.overlay
-                    global.viewer.scene.screenSpaceCameraController.enableRotate = false
-                    global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, this.updateLableMove)
-                }
-            }, 500)
-        },
-
-        labelUp (e) {
-            eventLast = new Date().getTime()
-            if (labelPositionChange == true) {
-                global.viewer.scene.screenSpaceCameraController.enableRotate = true
-                global.viewer.off(global.DC.MouseEventType.MOUSE_MOVE, this.updateLableMove)
-
-                // curLabelOverLayer 中的位置就是移动后的位置
-                let position = curLabelOverLayer._position._lng + ' ' + curLabelOverLayer._position._lat + ',' + curLabelOverLayer._position._lng + ' ' + curLabelOverLayer._position._lat
-                this.updateSecurityPlot({ id: curLabelOverLayer.attrParams.id, position: position })
-                labelPositionChange = false
-            }
-        },
-
-        updateLableMove (e) {
-            this.$EventBus.$emit('closeTooltip')
-            curLabelOverLayer.position = {
-                lng: e.wgs84SurfacePosition.lng,
-                lat: e.wgs84SurfacePosition.lat,
-                alt: e.wgs84SurfacePosition.alt,
-                heading: curLabelOverLayer.position.heading,
-                pitch: curLabelOverLayer.position.pitch,
-                roll: curLabelOverLayer.position.roll,
-            }
-        },
-
-        viewerLableMove (e) {
-            if (isAddLabel == true) {
-                this.$EventBus.$emit('showTooltip', {
-                    position: e.windowPosition,
-                    text: '单击选择文字标注位置'
-                })
-            } else {
-                if (e.overlay && e.overlay.attrParams && e.overlay.attrParams.id) {
-                    const flag = labelOverLayerID.some(item => item == e.overlay.attrParams.id)
-
-                    if (flag == true && labelPositionChange != true) {
-                        this.$EventBus.$emit('showTooltip', {
-                            position: e.windowPosition,
-                            text: '长按开启拖拽,单击修改名称'
-                        })
-                    }
-                } else {
-                    this.$EventBus.$emit('closeTooltip')
-                }
-            }
-        },
-
-        // 关闭添加标注弹窗
-        cancelSaveLabel () {
-            isAddLabel = false
-            this.addLabelVisible = false
-            drawLabelStatus = 'end'
-            this.$EventBus.$emit('closeTooltip')
-        },
-
-        // 单击文字标绘
-        reEditLabel (e) {
-            addPlotOverlayData = e.overlay
-            this.$EventBus.$emit('closeTooltip')
-            this.labelId = addPlotOverlayData.attrParams.id
-            this.labelPopupTitle = "修改文字标注"
-            this.labelInput = addPlotOverlayData.text
-            this.labelInputFontSize = Number(addPlotOverlayData.attrParams.item.width)
-            this.labelInputFontColor = addPlotOverlayData.attrParams.item.color
-            this.addLabelVisible = true
-        },
-
-
-    },
-
-    destroyed () {
-        plotDrawEmit != null && plotDrawEmit.stop()
-
-        drawArrowLayers.clear()
-        drawArrowLayers = null
-
-        labelOverLayerID = []
-
-        global.viewer.off(global.DC.MouseEventType.CLICK, this.viewerClick)
-        global.viewer.off(global.DC.MouseEventType.MOUSE_MOVE, this.viewerLableMove)
-        global.viewer.off(global.DC.MouseEventType.LEFT_UP, this.labelUp)
-    },
-}
-</script>
-
-<style lang="scss" scoped>
-.draw-btn-box {
-    position: fixed;
-    display: flex;
-    // left: 50%;
-    bottom: 40px;
-    color: #fff;
-    background: $bg-one-color;
-    white-space: nowrap;
-    // transform: translate(-50%, 0);
-
-    .left,
-    .right {
-        height: 100%;
-
-        &>div {
-            display: flex;
-        }
-
-        ul {
-            display: flex;
-
-            li {
-                button {
-                    height: 30px;
-                    margin: 0 5px;
-                    background-color: $bg-color;
-                    border: 1px solid #cecece;
-                    border-radius: 4px;
-                    color: #fff;
-                    cursor: pointer;
-                    outline: none;
-                }
-            }
-        }
-    }
-
-    .left {
-        width: 100%;
-
-        h3 {
-            font-size: 16px;
-            height: 30px;
-            line-height: 30px;
-            width: 100%;
-            // padding-left: 16%;
-        }
-    }
-
-    .right {
-        width: 20%;
-        padding-top: 35px;
-
-        ul {
-            flex-direction: column;
-
-            li {
-                height: 50px;
-
-                button {
-                    background-color: #2a56cf;
-                }
-            }
-        }
-    }
-}
-</style>
\ No newline at end of file
diff --git a/src/views/activity/components/polygonPlot.vue b/src/views/activity/components/polygonPlot.vue
index 9ce360c..d9c94d4 100644
--- a/src/views/activity/components/polygonPlot.vue
+++ b/src/views/activity/components/polygonPlot.vue
@@ -13,7 +13,7 @@
             <div>
                 <div class="value-name-box">设置透明度:</div>
                 <div class="alpha">
-                    <el-slider v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+                    <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
                 </div>
             </div>
             <div v-show="!polygonName" class="placeholder"></div>
@@ -46,7 +46,7 @@
             <div class="line">
                 <div class="value-name-box">设置透明度:</div>
                 <div class="alpha">
-                    <el-slider v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+                    <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
                 </div>
             </div>
             <div class="placeholder" v-show="!isNeedPolygonType"></div>
diff --git a/src/views/activity/components/publicIndex copy.vue b/src/views/activity/components/publicIndex copy.vue
deleted file mode 100644
index ee5cb15..0000000
--- a/src/views/activity/components/publicIndex copy.vue
+++ /dev/null
@@ -1,772 +0,0 @@
-<template>
-    <div>
-        <layers-show-control :dialogVisible="dialogVisible" :isHavePolice="isHavePolice" :isHaveArrow="isHaveArrow"
-            :isHaveLine="isHaveLine" :policeSwitch="policeSwitch" :arrowBtnSwitch="arrowBtnSwitch"
-            :polylineBtnSwitch="polylineBtnSwitch"></layers-show-control>
-
-        <polygon-plot ref="PolygonPlotPage" :showingSecurityId="showingSecurityId"></polygon-plot>
-        <polyline-plot ref="PolylinePlotPage" :showingSecurityId="showingSecurityId"></polyline-plot>
-
-        <draw-btn-box ref="DRAWBTNBOX" :dialogVisible="dialogVisible" :isShowActivityEditBox="isShowActivityEditBox"
-            :showingSecurityId="showingSecurityId" :policeSwitch="policeSwitch" :polylineBtnSwitch="polylineBtnSwitch"
-            :arrowBtnSwitch="arrowBtnSwitch" :policeIconId="policeIconId" :lineWidth="lineWidth"
-            @setOverlayObj="setOverlayObj" @drawLabel="drawLabel" @setPoliceOption="setPoliceOption"></draw-btn-box>
-
-        <police-car-change ref="PoliceCarChange" :policeOption="policeOption"
-            :policeIconId="policeIconId"></police-car-change>
-
-        <police-person-change ref="PolicePersonChange" :policeTreeData="policeTreeData"></police-person-change>
-
-        <activity-detail :dialogVisible="dialogVisible" :activityDetails="activityDetails"
-            @closeActivityDetails="closeActivityDetails"></activity-detail>
-
-        <video-control-box ref="VIDEOCONTROLBOX"></video-control-box>
-    </div>
-</template>
-
-<script>
-import {
-    getSecurityPoliceList,
-    getSecurityCarList,
-    getSecurityPlotList,
-    getPolicemanTree,
-    getCarList
-} from '@/api/activity/index.js'
-
-import layersShowControl from './layersShowControl.vue'
-import polygonPlot from './polygonPlot.vue'
-import polylinePlot from './polylinePlot.vue'
-import drawBtnBox from './drawBtnBox.vue'
-import policeCarChange from './policeCarChange.vue'
-import policePersonChange from './policePersonChange.vue'
-import activityDetail from './activityDetail.vue'
-import videoControlBox from './videoControlBox.vue'
-
-
-// 要素的
-let pointCircleCarLayer = null
-// 作战的
-let arrowsListLayer = null
-// 巡逻的
-let lineLayer = undefined
-
-let drawLabelStatus = 'end'
-
-let policecarOption = []
-
-export default {
-    inject: ['userInfo'],
-
-    data () {
-        return {
-            dialogVisible: false,
-            isShowActivityEditBox: false,
-            activityDetails: {},
-            isHaveLine: false,
-            isHaveArrow: false,
-            policeSwitch: true,
-            arrowBtnSwitch: true,
-            polylineBtnSwitch: true,
-            policeTreeData: [],
-            policeOption: [],
-            policeIconId: '',
-            policeType: '',
-            pointAreaWidth: '',
-            choosePoliceColor: '',
-            searchPoliceTreeId: '',
-            searchPoliceTreeName: '',
-            policeIconIsCreated: false,
-            policeChooseVisible: false,
-            chooseCarColor: '',
-            policeChooseCarVisible: false,
-            isChoosePoliceElementDisabled: false,
-            showingSecurityId: '',
-            isHavePoliceCar: false,
-            isHavePoliceMan: false,
-        }
-    },
-
-    components: {
-        layersShowControl,
-        drawBtnBox,
-        polygonPlot,
-        polylinePlot,
-        policeCarChange,
-        policePersonChange,
-        activityDetail,
-        videoControlBox
-    },
-
-    computed: {
-        isHavePolice () {
-            return this.isHavePoliceCar || this.isHavePoliceMan
-        }
-    },
-
-    mounted () {
-        this.$nextTick(() => {
-            if (pointCircleCarLayer == null) {
-                pointCircleCarLayer = new global.DC.VectorLayer('pointCircleCarLayer')
-                global.viewer.addLayer(pointCircleCarLayer)
-            }
-
-            if (arrowsListLayer == null) {
-                arrowsListLayer = new global.DC.VectorLayer('arrowsListLayer')
-                global.viewer.addLayer(arrowsListLayer)
-            }
-
-            if (lineLayer == null) {
-                lineLayer = new global.DC.VectorLayer('lineLayer')
-                global.viewer.addLayer(lineLayer)
-            }
-        })
-    },
-    methods: {
-        addNewPolice (data, type, dataType = '') {
-            this.$refs.DRAWBTNBOX.addNewPolice(data, type, dataType)
-        },
-
-
-        addPointPopupShow (type, positions) {
-            this.$refs.PolygonPlotPage.addPointPopupShow(type, positions)
-        },
-
-        addSaveNewDrawPoint (type) {
-            if (type == 'policeman') {
-                this.$refs.PolicePersonChange.addPopupShow()
-            } else if (type == 'policecar') {
-                this.policeOption = policecarOption
-                this.$refs.PoliceCarChange.addPopupShow()
-            }
-        },
-        // 要素资源添加
-        addPointCircleCarLayer (overlay) {
-            pointCircleCarLayer.addOverlay(overlay)
-        },
-
-        addSaveNewDraw (positions, type) {
-            this.$refs.PolygonPlotPage.addPopupShow(positions, type)
-        },
-        // 作战标绘的添加
-        addArrowsListLayer (overlay) {
-            arrowsListLayer.addOverlay(overlay)
-        },
-
-        addSaveNewDrawLine (positions) {
-            this.$refs.PolylinePlotPage.addPopupShow(positions)
-        },
-        // 巡逻路线的添加
-        addLineLayer (overlay) {
-            lineLayer.addOverlay(overlay)
-        },
-
-        // 视频查看
-        lookStartVideo (line, polygon) {
-            this.$refs.VIDEOCONTROLBOX.watchVideo(line, polygon)
-        },
-
-        // 关闭详情弹窗
-        closeActivityDetails () {
-            this.dialogVisible = false
-            this.polylineBtnSwitch = false
-            this.$refs.VIDEOCONTROLBOX.closeVideo()
-            this.$parent.currentTreeItem = ''
-            this.$parent.activeActivityIndex = ''
-
-            this.clearOrRemoveLayerAll('clear')
-        },
-
-        addNewPlot (data) {
-            this.$refs.DRAWBTNBOX.addNewPlot(data)
-        },
-
-        removeDraw () {
-            this.$refs.DRAWBTNBOX.removeDraw()
-        },
-
-        removeDrawArrow () {
-            this.$refs.DRAWBTNBOX.removeDrawArrow()
-        },
-
-        plotEdit (overlay, type) {
-            this.$refs.DRAWBTNBOX.plotEdit(overlay, type)
-        },
-
-        updateSecurityPlot (params, overlay) {
-            this.$refs.DRAWBTNBOX.updateSecurityPlot(params, overlay)
-        },
-
-        updateActivityPolice (params, overlay) {
-            this.$refs.DRAWBTNBOX.updateActivityPolice(params, overlay)
-        },
-
-        updateActivityCar (params, overlay) {
-            this.$refs.DRAWBTNBOX.updateActivityCar(params, overlay)
-        },
-
-        setOverlayObj (e) {
-            this.$refs.PoliceCarChange.setOverlayObj(e)
-            this.$refs.PolicePersonChange.setOverlayObj(e)
-        },
-
-        drawLabel (status) {
-            drawLabelStatus = status
-        },
-
-        reloadAll (params) {
-            // 当前选中的ID
-            this.showingSecurityId = params.item.id
-            // 当前选中的详情
-            this.activityDetails = params.item
-            this.dialogVisible = true
-
-            if (this.userInfo.dept_id == '1123598813738675201' || this.userInfo.dept_id == params.item.deptId) {
-                this.isShowActivityEditBox = true
-            } else {
-                this.isShowActivityEditBox = false
-            }
-
-            this.$refs.DRAWBTNBOX.removeDraw()
-            this.$refs.DRAWBTNBOX.clearDrawArrow()
-
-            this.policeSwitch = true
-            this.arrowBtnSwitch = true
-            this.polylineBtnSwitch = true
-
-            this.clearOrRemoveLayerAll('clear')
-
-            this.getPolicemanTree({ deptId: params.deptId })
-            this.getCarList({ deptId: params.deptId })
-
-            this.getSecurityPlotList(params.id)
-            this.getSecurityPoliceList(params.id)
-            this.getSecurityCarList(params.id)
-        },
-
-        // 获取树状警员列表
-        getPolicemanTree (params) {
-            getPolicemanTree(params).then(res => {
-                this.policeTreeData = res.data.data
-            })
-        },
-
-        // 获取警车列表,生成下拉数据
-        getCarList (params) {
-            getCarList(params).then(res => {
-                res.data.data.forEach(item => {
-                    policecarOption.push({ value: `${item.id}`, label: `${item.serialNumber}`, carType: `${item.carType}`, serialNumber: `${item.serialNumber}`, unitCode: `${item.unitCode}`, unitName: `${item.unitName}`, carNo: `${item.carNo}`, deptName: `${item.deptName}` })
-                })
-
-                this.policeOption = policecarOption
-            })
-        },
-
-        // 获取标绘箭头列表
-        getSecurityPlotList (securityId) {
-            this.$refs.DRAWBTNBOX.removeDrawArrow()
-
-            getSecurityPlotList(securityId).then(res => {
-                // 要素资源
-                this.$parent.normalPeopleList = res.data.data.filter(item => item.type == 6)
-                this.$parent.protectedPeopleList = res.data.data.filter(item => item.type == 7)
-                this.$parent.dangerousPeopleList = res.data.data.filter(item => item.type == 8)
-
-                // 作战标绘
-                this.$parent.attackArrowList = res.data.data.filter(item => item.type == 1)
-                this.$parent.doubleArrowList = res.data.data.filter(item => item.type == 2)
-                this.$parent.tailedAttackArrowList = res.data.data.filter(item => item.type == 3)
-                this.$parent.fineArrowList = res.data.data.filter(item => item.type == 4)
-                this.$parent.polygonList = res.data.data.filter(item => item.type == 5)
-                this.$parent.labelMarkList = res.data.data.filter(item => item.type == 9)
-
-                this.isHaveArrow = res.data.data.some(item => {
-                    return item
-                })
-                let plotList = res.data.data
-                res.data.data.forEach(item => {
-                    let position = item.position.slice(11, item.position.length - 1).replace(/,/g, ';').replace(/ /g, ',')
-                    let chooseArrow = null
-                    // let nameLabel = null
-                    let color = ''
-                    if (item.color == '') {
-                        color = global.DC.Namespace.Cesium.Color.fromBytes(255, 69, 0, 173)
-                    } else {
-                        let r = parseInt(item.color.slice(1, 3), 16)
-                        let g = parseInt(item.color.slice(3, 5), 16)
-                        let b = parseInt(item.color.slice(5, 7), 16)
-                        let a = Math.floor(Number(item.color.split(',')[1]) * 2.55) ? Math.floor(Number(item.color.split(',')[1]) * 2.55) : 255
-                        color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
-                    }
-                    if (item.type == 1) {
-                        chooseArrow = new global.DC.AttackArrow(position)
-                        arrowsListLayer.addOverlay(chooseArrow)
-                    } else if (item.type == 2) {
-                        chooseArrow = new global.DC.DoubleArrow(position)
-                        arrowsListLayer.addOverlay(chooseArrow)
-                    } else if (item.type == 3) {
-                        chooseArrow = new global.DC.FineArrow(position)
-                        arrowsListLayer.addOverlay(chooseArrow)
-                    } else if (item.type == 4) {
-                        chooseArrow = new global.DC.TailedAttackArrow(position)
-                        arrowsListLayer.addOverlay(chooseArrow)
-                    } else if (item.type == 5) {
-                        chooseArrow = new global.DC.Polygon(position)
-                        arrowsListLayer.addOverlay(chooseArrow)
-                        // 缓存区的话需要扣去包含的核心区
-                        if (item.areaType == 2) {
-                            let itemPositionArr = item.position.slice(11, item.position.length - 1).replace(/,/g, ';').replace(/ /g, ',').split(';')
-                            itemPositionArr.push(itemPositionArr[0])
-                            itemPositionArr = itemPositionArr.map(item => {
-                                return item.split(',').map(Number)
-                            })
-                            let cachePolygon = this.$turf.polygon([itemPositionArr])
-                            plotList.forEach(inItem => {
-                                // 查询被包含的核心区
-                                if (inItem.areaType == 1 && inItem.type == 5) {
-                                    let inItemPositionArr = inItem.position.slice(11, inItem.position.length - 1).replace(/,/g, ';').replace(/ /g, ',').split(';')
-                                    inItemPositionArr.push(inItemPositionArr[0])
-                                    inItemPositionArr = inItemPositionArr.map(item => {
-                                        return item.split(',').map(Number)
-                                    })
-                                    if (inItemPositionArr.length == 3 && inItemPositionArr[0][0] == inItemPositionArr[2][0] &&
-                                        inItemPositionArr[2][1] == inItemPositionArr[0][1]) {
-                                        return
-                                    }
-                                    let carePolygon = this.$turf.polygon([inItemPositionArr])
-                                    let isContains = this.$turf.booleanContains(cachePolygon, carePolygon)
-                                    // 如果完全包含就作为洞面扣去
-                                    if (isContains) {
-                                        chooseArrow.holes = [inItem.position.slice(11, inItem.position.length - 1).replace(/,/g, ';').replace(/ /g, ',')]
-                                    }
-
-                                }
-                            })
-                        }
-                        // let center = this.getCenter(item.position)
-                        // let centerPosition = new global.DC.Position(center[0], center[1])
-                        // nameLabel = new global.DC.Label(centerPosition, item.name)
-                        // arrowsListLayer.addOverlay(nameLabel)
-                        // nameLabel.setStyle({
-                        //     "font": "30px",
-                        // })
-                    } else if (item.type == 9) {
-                        position = position.split(';')[0].split(',')
-                        position = new global.DC.Position(Number(position[0]), Number(position[1]))
-                        let label = new global.DC.Label(position, item.name)
-                        label.attrParams = { 'id': item.id, item }
-                        this.$refs.DRAWBTNBOX.lableAllEvent(label)
-                        label.setStyle({
-                            'fillColor': color,
-                            "font": `${item.width}px sans-serif`,
-                        })
-                        arrowsListLayer.addOverlay(label)
-                    } else if (item.type == 6 || item.type == 7 || item.type == 8) {
-                        let iconImgName = ''
-                        if (item.type == 6) {
-                            iconImgName = 'icon1'
-                        } else if (item.type == 7) {
-                            iconImgName = 'icon2'
-                        } else if (item.type == 8) {
-                            iconImgName = 'icon3'
-                        }
-                        position = position.split(';')[0].split(',')
-                        let pointPosition = new global.DC.Position(Number(position[0]), Number(position[1]), 4)
-                        position = new global.DC.Position(Number(position[0]), Number(position[1]), 4.5)
-                        chooseArrow = new global.DC.Billboard(position, `/img/icon/${iconImgName}.png`)
-                        chooseArrow.size = item.type == 6 ? [24, 24] : [32, 32]
-
-                        pointCircleCarLayer.addOverlay(chooseArrow)
-                        chooseArrow.setStyle({
-                            "material": color,
-                        })
-
-                        let point = new global.DC.Point(pointPosition)
-                        pointCircleCarLayer.addOverlay(point)
-                        point.attrParams = { 'id': item.id, 'color': item.color, 'item': item, 'pointOverlayData': point }
-                        point.setStyle({
-                            "color": color, //颜色
-                            "outlineColor": color, //边框颜色
-                            "outlineWidth": 0, //边框大小,
-                            "pixelSize": 32,
-                        })
-                        chooseArrow.attrParams = { 'id': item.id, 'color': item.color, 'item': item, 'pointOverlayData': point }
-                    }
-
-                    if (chooseArrow != null) {
-                        if (!(item.type == 6 || item.type == 7 || item.type == 8)) {
-                            chooseArrow.attrParams = { 'id': item.id, 'color': item.color, item }
-                        }
-                        chooseArrow.setStyle({
-                            "material": color,
-                        })
-                        chooseArrow.off(global.DC.MouseEventType.CLICK, this.reeditArrowClick)
-                        chooseArrow.on(global.DC.MouseEventType.CLICK, this.reeditArrowClick)
-                    }
-                })
-            })
-        },
-
-        // 获取警员分布信息
-        getSecurityPoliceList (securityId) {
-            this.$refs.DRAWBTNBOX.removeDraw()
-
-            getSecurityPoliceList(securityId).then(res => {
-                this.isHavePoliceMan = res.data.data.some(item => {
-                    return item.type == 3
-                })
-
-                this.addMapCarAndPersonLayers(
-                    res.data.data.filter(item => item.type == 3),
-                    'policeman',
-                    pointCircleCarLayer,
-                    'newFactorResourcesLayers')
-            })
-        },
-
-        /**
-        * @description: 警力资源警车和巡逻路线的
-        * @param {*} securityId
-        * @param {*} polylineShow
-        * @return {*}
-        */
-        getSecurityCarList (securityId) {
-
-            getSecurityCarList(securityId).then(res => {
-                this.isHavePoliceCar = res.data.data.some(item => {
-                    return item.type == 3
-                })
-
-                this.isHaveLine = res.data.data.some(item => {
-                    return item.type == 1
-                })
-
-                this.addMapCarAndPersonLayers(
-                    res.data.data.filter(item => item.type == 3),
-                    'policecar',
-                    pointCircleCarLayer,
-                    'newFactorResourcesLayers')
-                this.addMapLineLayers(res.data.data.filter(item => item.type == 1))
-            })
-        },
-
-
-        /**
-         * @description: 警力资源地图添加
-         * @param {*} data
-         * @param {*} type
-         * @param {*} curLayer
-         * @param {*} mapLayer
-         * @return {*}
-         */
-        addMapCarAndPersonLayers (data, type, curLayer, mapLayer) {
-            if (type == 'policecar') {
-                this.$parent.chooseActivityPoliceCarList = data
-            } else {
-                this.$parent.chooseActivityPoliceManList = data
-            }
-            data.forEach(item => {
-                let positionObj = this.$parent.convertBillboardPositionDate(item, type)
-                let position = new global.DC.Position(Number(positionObj.lng), Number(positionObj.lat))
-                let point = new global.DC.Point(position)
-                let color = ''
-                if (item.color == '') {
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 150)
-                } else {
-                    let r = parseInt(item.color.slice(1, 3), 16)
-                    let g = parseInt(item.color.slice(3, 5), 16)
-                    let b = parseInt(item.color.slice(5, 7), 16)
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 255)
-                }
-                point.attrParams = positionObj
-
-                curLayer.addOverlay(point)
-
-                point.setStyle({
-                    "color": color, //颜色
-                    "outlineColor": color, //边框颜色
-                    "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)
-
-
-                // 预警范围先不显示
-                // let circle = new global.DC.Circle(position, item.width != -1 ? item.width : 100)
-                // curLayer.addOverlay(circle)
-                // circle.setStyle({
-                //     "material": global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 100), //颜色
-                // })
-
-                positionObj.pointOverlayData = point
-                this.$EventBus.$emit('layerPointAdd', {
-                    layerName: mapLayer,
-                    type: 'billboard',
-                    params: positionObj,
-                    incident: this.overlayTypeClick,
-                    mouseOverIncident: this.pointMouseOver,
-                    mouseOutIncident: this.pointMouseOut
-                })
-            })
-        },
-
-        // 鼠标移入图标事件
-        pointMouseOver (e) {
-            this.$store.commit('SET_ACTIVITYPOLICEPOPUP', true)
-            let hoverData = {}
-            if ('carId' in e.overlay.attrParams.data) {
-                hoverData = 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',
-                position: [
-                    global.DC.Transform.transformWGS84ToCartesian(
-                        new global.DC.Position(
-                            Number(e.overlay.attrParams.lng),
-                            Number(e.overlay.attrParams.lat),
-                            0
-                        )
-                    )
-                ]
-            })
-        },
-
-        /**
-         * @description: 鼠标移出事件
-         * @param {*} e
-         * @return {*}
-         */
-        pointMouseOut (e) {
-            this.$store.commit('SET_ACTIVITYPOLICEPOPUP', false)
-        },
-
-        /**
-       * @description: 巡逻路线地图添加
-       * @param {*} data
-       * @return {*}
-       */
-        addMapLineLayers (data) {
-            this.$parent.chooseActivityLineList = data
-
-            data.forEach(item => {
-                let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
-                // 线坐标字符串
-                item.linePositionStr = positionNewArr
-                let coords = global.DC.GeoTools.polylineBuffer(positionNewArr, item.width != -1 ? item.width : 100)
-                let color = ''
-                let lineColor = ''
-                if (item.color == '') {
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 150)
-                } else {
-                    let r = parseInt(item.color.slice(1, 3), 16)
-                    let g = parseInt(item.color.slice(3, 5), 16)
-                    let b = parseInt(item.color.slice(5, 7), 16)
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 150)
-                    lineColor = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 255)
-                }
-
-                let positionStr = ''
-                coords.forEach(item => {
-                    positionStr += item[0] + ',' + item[1] + ';'
-                })
-
-                item.polygonPositionStr = positionStr
-
-                let lineObj = new global.DC.Polyline(positionNewArr)
-
-                lineLayer.addOverlay(lineObj)
-                lineObj.setStyle({
-                    'material': lineColor,
-                    'width': 3
-                })
-
-                item.lineObj = lineObj
-
-                this.$EventBus.$emit('layerPolygonAdd', {
-                    layerName: 'newCarDrawLineLayers',
-                    positions: positionStr,
-                    material: color,
-                    params: item,
-                    incident: this.lineOverlayTypeClick
-                })
-
-            })
-        },
-
-        clearOrRemoveLayerAll (type) {
-            if (type == 'clear') {
-                // 要素的
-                pointCircleCarLayer != null && pointCircleCarLayer.clear()
-                this.$EventBus.$emit('mapClearLayer', {
-                    layerName: 'newFactorResourcesLayers',
-                    type: 'VectorLayer'
-                })
-
-                // 作战的
-                arrowsListLayer != null && arrowsListLayer.clear()
-
-                // 巡逻的
-                lineLayer != null && lineLayer.clear()
-                this.$EventBus.$emit('mapClearLayer', {
-                    layerName: 'newCarDrawLineLayers',
-                    type: 'VectorLayer'
-                })
-
-                // 活动区域的
-                this.$EventBus.$emit('mapClearLayer', {
-                    layerName: 'polygonWallLayer',
-                    type: 'VectorLayer'
-                })
-            } else {
-                // 要素的
-                pointCircleCarLayer != null && pointCircleCarLayer.remove(), pointCircleCarLayer = null
-                this.$EventBus.$emit('mapRemoveLayer', {
-                    layerName: 'newFactorResourcesLayers',
-                    type: 'VectorLayer'
-                })
-
-                // 作战的
-                arrowsListLayer != null && arrowsListLayer.remove(), arrowsListLayer = null
-
-                // 巡逻的
-                lineLayer != null && lineLayer.remove(), lineLayer = null
-                this.$EventBus.$emit('mapRemoveLayer', {
-                    layerName: 'newCarDrawLineLayers',
-                    type: 'VectorLayer'
-                })
-
-                // 活动区域的
-                this.$EventBus.$emit('mapRemoveLayer', {
-                    layerName: 'polygonWallLayer',
-                    type: 'VectorLayer'
-                })
-            }
-        },
-
-        // 切换轨警力资源显示
-        switchChange (e) {
-            pointCircleCarLayer.show = e
-            this.$EventBus.$emit('layerShow', { layerName: 'newFactorResourcesLayers', flag: e })
-        },
-
-        // 切换作战标绘
-        switchArrowBtnChange (e) {
-            arrowsListLayer.show = e
-        },
-
-        // 切换轨迹播放控件
-        switchBtnChange (e) {
-            lineLayer.show = e
-            this.$EventBus.$emit('layerShow', { layerName: 'newCarDrawLineLayers', flag: e })
-        },
-
-        // 获取标绘图层覆盖物
-        getArrowsListLayerOverlayList () {
-            return arrowsListLayer.getOverlays()
-        },
-
-        // 单击。标绘箭头
-        reeditArrowClick (e) {
-            this.$refs.PolygonPlotPage.setCurOver(e)
-        },
-
-        // 地图绘制元素点击事件
-        overlayTypeClick (e) {
-            if (this.userInfo.dept_id == '1123598813738675201' || this.userInfo.dept_id == this.activityDeptId) {
-                this.isChoosePoliceElementDisabled = false
-            } else {
-                this.isChoosePoliceElementDisabled = true
-            }
-
-            if ('policemanId' in e.overlay.attrParams.data) {
-                this.$refs.PolicePersonChange.setConfig(e)
-
-            } else if ('carId' in e.overlay.attrParams.data) {
-                this.$refs.PoliceCarChange.setConfig(e)
-
-            }
-        },
-
-        // 树形数据传数组
-        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
-        },
-
-        // 巡逻路线面点击事件
-        lineOverlayTypeClick (e) {
-            this.policeIconId = e.overlay.attrParams.id
-
-            this.$refs.VIDEOCONTROLBOX.closeVideo()
-
-            this.$refs.PolylinePlotPage.setOverlay(e)
-
-            if (this.userInfo.dept_id == '1123598813738675201' || this.userInfo.dept_id == this.activityDeptId) {
-                this.$refs.PolylinePlotPage.setConfig({
-                    title: '修改巡逻路线',
-                    isLineEdit: true,
-                    lineEditVisible: true
-                })
-            } else {
-                this.$refs.PolylinePlotPage.setConfig({
-                    lineEditVisible: true
-                })
-            }
-        },
-
-        // 转换 点 坐标数据
-        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', data: data }
-            } else if (iconName == 'policecar') {
-                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 0.05, url: '/img/icon/car3.png', data: data }
-            }
-            return positionObj
-        },
-
-        // 转换 线面 坐标数据
-        convertPolylineOrPolygonPositionDate (data, type) {
-            let positionStr = data.slice(11, data.length - 1)
-            let positionArr = positionStr.split(',')
-            let positionNewArr = ''
-            positionArr.forEach(item => {
-                if (type == 1) {
-                    positionNewArr += item.split(' ')[0] + ',' + item.split(' ')[1] + ';'
-                } else {
-                    positionNewArr += item.split(' ')[0] + ',' + item.split(' ')[1] + ',' + 0 + ';'
-                }
-            })
-            return positionNewArr
-        },
-    },
-
-    destroyed () {
-        this.clearOrRemoveLayerAll('remove')
-    }
-}
-</script>
-
-<style lang="scss" scoped></style>
\ No newline at end of file
diff --git a/src/views/activity/index.vue b/src/views/activity/index.vue
index a9f8f45..3af7495 100644
--- a/src/views/activity/index.vue
+++ b/src/views/activity/index.vue
@@ -179,6 +179,7 @@
 import { getEquipmentAll } from '@/api/home/index.js'
 
 import publicIndex from './components/publicIndex.vue'
+import { initMapPosition } from '@/utils/mapPositionInit'
 
 
 let loading = null
@@ -370,6 +371,10 @@
     components: { publicIndex },
 
     created () {
+        this.$nextTick(() => {
+            initMapPosition()
+        })
+
         let userInfo = sessionStorage.getItem("userInfo")
         if (userInfo != null) {
             // 将JSON格式的对象解析为js对象
diff --git a/src/views/activity/index1.vue b/src/views/activity/index1.vue
deleted file mode 100644
index a628c6b..0000000
--- a/src/views/activity/index1.vue
+++ /dev/null
@@ -1,1457 +0,0 @@
-<!--
- * @Author: shuishen 1109946754@qq.com
- * @Date: 2022-08-18 16:18:17
- * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2022-12-29 15:46:00
- * @FilePath: \srs-police-affairs\src\views\activity\index.vue
- * @Description: 电子沙盘
- * 
- * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
--->
-
-<template>
-    <div class="activity-page container">
-        <div v-show="boxShow" class="container-content">
-            <div class="title">安保活动</div>
-            <div class="search-box">
-                <div>
-                    <div class="category">活动类型:</div>
-                    <div class="category-value">
-                    <el-select size="small" v-model="activityType" placeholder="请选择" @change="activityTypeChange">
-                        <el-option v-for="item in activityOptions" :key="item.dictKey" :label="item.dictValue"
-                            :value="item.dictKey" class="activity-option"></el-option>
-                    </el-select>
-                </div>
-            </div>
-
-                <div>
-                    <div class="category">选择时间:</div>
-                    <div class="category-value">
-                        <!-- <el-date-picker
-                                                size="small"
-                                                v-model="selectTime"
-                                                type="date"
-                                                placeholder="选择日期"
-                                                style="width:268px"
-                                            ></el-date-picker>-->
-                        <el-date-picker v-model="selectTime" type="daterange" align="right" unlink-panels
-                            format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至"
-                            start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"
-                            @change="activityTimeChange"></el-date-picker>
-                    </div>
-                </div>
-
-                <div>
-                    <div class="category">活动名称:</div>
-                    <div class="category-value">
-                        <input type="text" placeholder="请输入活动名称" v-model="searchActivity" class="category-input"
-                            @input="inputChange" />
-                        <button class="category-button el-icon-search" @click="searchClick"></button>
-                    </div>
-                </div>
-            </div>
-            <div class="result-content">
-                <div class="table-box">
-                    <div v-show="activityList.length > 0" class="row-box" :class="{ on: currentClickIndex === index }"
-                        v-for="(item, index) in activityList" :key="index" @click="activityListClick(item, index)">
-                        <div class="row-title">常规安保</div>
-                        <div class="row-content">
-                            <div>
-                                <div class="category">活动名称:</div>
-                                <div class="category-value">{{ item.name }}</div>
-                            </div>
-                            <div>
-                                <div class="category">申报人数:</div>
-                                <div class="category-value">{{ item.number }}</div>
-                            </div>
-                            <div>
-                                <div class="category">活动时间:</div>
-                                <div class="category-value">{{ item.startTime }} 至 {{ item.endTime }}</div>
-                            </div>
-                            <div>
-                                <div class="category">活动详情:</div>
-                                <div class="category-value">{{ item.content }}</div>
-                            </div>
-                        </div>
-                    </div>
-
-                    <div v-show="activityList == 0" class="no-data">暂无数据</div>
-                </div>
-                <div class="pages all-pagination-sty">
-                    <el-pagination background layout="prev, pager, next" :page-size="pagesize" :page-count="pagesCount"
-                        :current-page="currentPage" @current-change="handleCurrentChange"></el-pagination>
-                </div>
-            </div>
-        </div>
-
-        <div class="draw-btn-box" v-show="arrangeVisible">
-            <div>
-                <span>警力资源:</span>
-
-                <ul>
-                    <li>
-                        <button @click="draw('billboard', 'policeman')">
-                            <img src="../../../public/img/icon/police.png" style="height:100%" />
-                        </button>
-                    </li>
-                    <li>
-                        <button @click="draw('polyline', 'policeman')">警员路线</button>
-                    </li>
-                    <li>
-                        <button @click="draw('polygon', 'policeman')">警员范围</button>
-                    </li>
-                    <li>
-                        <button @click="draw('billboard', 'policecar')">
-                            <img src="../../../public/img/icon/car.png" style="height:100%" />
-                        </button>
-                    </li>
-                    <li>
-                        <button @click="draw('polyline', 'policecar')">警车路线</button>
-                    </li>
-                    <li>
-                        <button @click="draw('polygon', 'policecar')">警车范围</button>
-                    </li>
-                </ul>
-            </div>
-            <div>
-                <span>作战标绘:</span>
-
-                <ul>
-                    <li>
-                        <button @click="drawArrow('attack_arrow')">进攻箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('double_arrow')">双箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('fine_arrow')">直箭头</button>
-                    </li>
-                    <li>
-                        <button @click="drawArrow('tailed_attack_arrow')">燕尾箭头</button>
-                    </li>
-                    <li>
-                        <button @click="removeAllArrow()">清除</button>
-                    </li>
-                </ul>
-            </div>
-            <div>
-                <span>撤离路线:</span>
-                <ul>
-                    <li>
-                        <el-button title="路线绘制" @click="draw('billboard', 'policeman')" icon="el-icon-my-route"></el-button>
-                    </li>
-                </ul>
-            </div>
-        </div>
-
-        <div class="second-container" :class="{ 'spread': boxShow, 'take-back': !boxShow }">
-            <el-tree :data="treeData" show-checkbox node-key="id" @check="treeCheckClick"></el-tree>
-        </div>
-
-        <div v-show="dialogVisible" class="activity-details-box">
-            <div class="title">
-                活动详情
-                <div class="close" @click="closeActivityDetails"></div>
-            </div>
-
-            <div class="row-box">
-                <div class="category">活动名称:</div>
-                <div class="category-value">{{ activityDetails.name }}</div>
-            </div>
-
-        <div class="row-box">
-            <div class="category">活动时间:</div>
-            <div class="category-value">{{ activityDetails.startTime }} 至 {{ activityDetails.endTime }}</div>
-        </div>
-
-        <div class="row-box">
-            <div class="category">活动内容1:</div>
-            <div class="category-value">{{ activityDetails.content }}</div>
-        </div>
-
-        <!-- <div class="row-box">
-                <div class="category">应急预案:</div>
-                <div class="category-value">
-                    <el-switch v-model="polylineSwitch" @change="switchChange" active-color="#13ce66"
-                                            inactive-color="#ccc"></el-switch>
-                                    </div>
-            </div>
-
-            <div class="row-box">
-                <div class="category">巡逻路线:</div>
-                <div class="category-value">
-                    <el-switch v-model="polylineBtnSwitch" @change="switchBtnChange" active-color="#13ce66"
-                        inactive-color="#ccc"></el-switch>
-                </div>
-            </div>-->
-
-        <!-- <div class="row-box">
-                                    <div class="category">分析范围:</div>
-                                    <div class="category-value">
-                                        <el-input
-                                            @input="analyseChange"
-                                            size="mini"
-                                            type="number"
-                                            v-model="analyseInput"
-                                            placeholder="请输入范围"
-                                        ></el-input>
-                                    </div>
-                                </div>-->
-
-            <div class="row-box">
-                <el-button @click="arrangeDraw">预案布置</el-button>
-            </div>
-        </div>
-
-        <div class="plan-control">
-            <div class="row-box">
-                <div class="category">应急预案:</div>
-                <div class="category-value">
-                    <el-switch v-model="polylineSwitch" @change="switchChange" active-color="#13ce66"
-                        inactive-color="#ccc"></el-switch>
-                </div>
-            </div>
-
-            <div class="row-box">
-                <div class="category">巡逻路线:</div>
-                <div class="category-value">
-                    <el-switch v-model="polylineBtnSwitch" @change="switchBtnChange" active-color="#13ce66"
-                        inactive-color="#ccc"></el-switch>
-                </div>
-            </div>
-        </div>
-
-        <div class="btn-box" v-show="isTrackBtnShow">
-            <ul>
-                <li>
-                    <button @click="play()">播放</button>
-                </li>
-                <li>
-                    <button @click="pause()">暂停</button>
-                </li>
-                <li>
-                    <button @click="restore()">恢复</button>
-                </li>
-                <li>
-                    <button @click="view('1', -20, 100)">第一视角</button>
-                </li>
-                <li>
-                    <button @click="view('2')">上帝视角</button>
-                </li>
-                <li>
-                    <button @click="view('tracked')">跟随视角</button>
-                </li>
-                <li>
-                    <button @click="view('free')">自由视角</button>
-                </li>
-            </ul>
-        </div>
-
-        <el-dialog :title="policeChooseTitle" :modal="true" :visible.sync="policeChooseVisible"
-            :before-close="policeChooseBeforeClose" :close-on-click-modal="true" class="choose-police-box">
-            <div>
-                <el-select size="small" v-model="policeType" placeholder="请选择">
-                    <el-option v-for="item in policeOption" :key="item.value" :label="item.label"
-                        :value="item.value"></el-option>
-                </el-select>
-                <el-button @click="determine">确定</el-button>
-                <el-button @click="cancel">取消</el-button>
-            </div>
-        </el-dialog>
-    </div>
-</template>
-
-<script>
-import { getSecurityList, getPoliceList, getCarList, addCarAndRange, addActivityPolice, getSecurityPoliceList, getSecurityCarList, updateActivityPolice, updateActivityCar, getServiceDictionary, getActivityType } from '@/api/activity/index.js'
-
-let analyseLayer = null
-let analysePolygon = null
-let drawLayers = null
-let drawArrowLayers = null
-let plot = undefined
-let arrowPlot = undefined
-let tc = undefined
-let track = undefined
-let loading = null
-
-export default {
-    data () {
-        return {
-            currentPage: 1,
-            pagesize: 4,
-            pagesCount: 1,
-            activityOptions: [
-                {
-                    dictKey: '',
-                    dictValue: '全部'
-                }
-            ],
-            policeOption: [],
-            policemanOption: [],
-            policecarOption: [],
-            activityType: '',
-            policeType: '',
-            searchActivity: '',
-            selectTime: '',
-            navType: 0,
-            treeData: [{
-                id: 1,
-                label: '数据地图',
-                children: [{
-                    id: 2,
-                    label: '实时警力',
-                    children: [{
-                        id: 7,
-                        label: 'BOOM',
-                        lng: 116.020595,
-                        lat: 28.686225,
-                        alt: 100,
-                    }, {
-                        id: 8,
-                        label: 'MDM',
-                        lng: 116.030370,
-                        lat: 28.685075,
-                        alt: 100,
-                    }, {
-                        id: 9,
-                        label: 'pdds',
-                        lng: 116.021054,
-                        lat: 28.684692,
-                        alt: 100,
-                    }]
-                }, {
-                    id: 3,
-                    label: '视频监控',
-                    children: [{
-                        id: 10,
-                        label: '监控1',
-                        lng: 116.032703,
-                        lat: 28.677435,
-                        alt: 100,
-                    }]
-                }, {
-                    id: 4,
-                    label: '治安重点场所',
-                    children: [{
-                        id: 10,
-                        label: '卡点',
-                        lng: 116.029703,
-                        lat: 28.683435,
-                        alt: 100,
-                    },
-                    {
-                        id: 11,
-                        label: '电警点',
-                        lng: 115.022703,
-                        lat: 28.682435,
-                        alt: 100,
-                    },
-                    {
-                        id: 12,
-                        label: '岗亭',
-                        lng: 116.028002,
-                        lat: 28.681302,
-                        alt: 100,
-                    }]
-                }, {
-                    id: 5,
-                    label: '重点单位',
-                    children: [{
-                        id: 13,
-                        label: '大中型商超',
-                        lng: 116.023293,
-                        lat: 28.680986,
-                        alt: 100,
-                    },
-                    {
-                        id: 14,
-                        label: '幼儿园',
-                        lng: 116.0275001,
-                        lat: 28.679361,
-                        alt: 100,
-                    },
-                    {
-                        id: 15,
-                        label: '政府事业单位',
-                        lng: 116.024398,
-                        lat: 28.678066,
-                        alt: 100,
-                    },
-                    {
-                        id: 16,
-                        label: '机场',
-                        lng: 116.0268529,
-                        lat: 28.6829572,
-                        alt: 100,
-                    },
-                    {
-                        id: 17,
-                        label: '银行',
-                        lng: 116.025595,
-                        lat: 28.681225,
-                        alt: 100,
-                    }]
-                },
-                {
-                    id: 6,
-                    label: '特殊场所',
-                    children: [{
-                        id: 18,
-                        label: '印刷店',
-                        lng: 116.020370,
-                        lat: 28.680075,
-                        alt: 100,
-                    },
-                    {
-                        id: 19,
-                        label: '废旧金属收购',
-                        lng: 116.030054,
-                        lat: 28.683692,
-                        alt: 100,
-                    },
-                    {
-                        id: 20,
-                        label: '开锁店',
-                        lng: 116.022703,
-                        lat: 28.679435,
-                        alt: 100,
-                    },
-                    {
-                        id: 21,
-                        label: '酒店',
-                        lng: 115.028703,
-                        lat: 28.684435,
-                        alt: 100,
-                    }]
-                },
-                {
-                    id: 777,
-                    label: '热力图'
-                }]
-            }],
-            defaultProps: {
-                children: 'children',
-                label: 'label'
-            },
-            dialogVisible: false,
-            arrangeVisible: false,
-            currentClickIndex: '',
-            polylineSwitch: false,
-            polylineBtnSwitch: false,
-            analyseInput: 100,
-            activityList: [],
-            activityDetails: {},
-            boxShow: true,
-            policeChooseTitle: '选择警员',
-            policeChooseVisible: false,
-            overlayObj: {},
-            isTrackBtnShow: false,
-            showingSecurityId: '',
-            policeIconIsCreated: false,
-            policeIconId: {},
-        }
-    },
-    created () {
-        // 获取下拉列表数据
-        this.getActivityType()
-
-        this.getPoliceList()
-
-        this.getCarList()
-
-        this.getSecurityList(this.currentPage, this.pagesize)
-    },
-    mounted () {
-        this.$parent.$parent.resize('400px', true)
-
-        this.$nextTick(() => {
-            if (analyseLayer == null) {
-                analyseLayer = new global.DC.VectorLayer('analyseLayer')
-                global.viewer.addLayer(analyseLayer)
-            }
-
-            if (drawLayers == null) {
-                drawLayers = new global.DC.VectorLayer('drawLayers')
-                global.viewer.addLayer(drawLayers)
-                plot = new global.DC.Plot(global.viewer)
-            }
-
-            if (drawArrowLayers == null) {
-                drawArrowLayers = new global.DC.VectorLayer('drawArrowLayers')
-                global.viewer.addLayer(drawArrowLayers)
-                arrowPlot = new global.DC.Plot(global.viewer)
-            }
-            // 轨迹
-            let positions = "116.023042, 28.684732; 116.023402, 28.679067; 116.023475, 28.678843; 116.023697, 28.678647; 116.024121, 28.678391; 116.026906, 28.678461; 116.027065, 28.676867; 116.033252, 28.676165"
-            tc = new global.DC.TrackController(global.viewer)
-            track = new global.DC.Track(positions, 15)
-            track.setModel('/model/qiche.gltf', {
-                scale: 0.5
-            })
-            tc.addTrack(track)
-        })
-    },
-
-    updated () {
-    },
-
-    methods: {
-        loading () {
-            loading = this.$loading({
-                lock: true,
-                text: '拼命加载中',
-                spinner: 'el-icon-loading',
-                background: 'rgba(0, 0, 0, 0.7)'
-            })
-        },
-
-        getActivityType () {
-            getServiceDictionary().then(response => {
-                const activityType = response.data.data.records.filter(item => item.code == "securityType")
-
-                getActivityType(activityType[0].id).then(res => {
-                    this.activityOptions.push(...res.data.data)
-                })
-            })
-        },
-
-        // 生成热力图坐标
-        generatePosition (num) {
-            let list = []
-            for (let i = 0; i < num; i++) {
-                let lng = 115.974 + Math.random() * 0.5
-                let lat = 28.628 + Math.random() * 0.5
-                list.push(new global.DC.Position(lng, lat))
-            }
-            return list
-        },
-
-        inputChange (e) {
-            console.log(e)
-        },
-
-        // 点击搜索
-        searchClick () {
-            let startTime = ''
-            let endTime = ''
-            if (this.selectTime) {
-                startTime = this.selectTime[0]
-                endTime = this.selectTime[1]
-            }
-            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
-        },
-
-        // 下拉选择值变化
-        activityTypeChange () {
-            let startTime = ''
-            let endTime = ''
-            if (this.selectTime) {
-                startTime = this.selectTime[0]
-                endTime = this.selectTime[1]
-            }
-            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
-        },
-
-        // 时间选中值触发
-        activityTimeChange () {
-            let startTime = ''
-            let endTime = ''
-            if (this.selectTime) {
-                startTime = this.selectTime[0]
-                endTime = this.selectTime[1]
-            }
-            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
-        },
-
-        // 获取活动警员分布信息
-        getSecurityPoliceList (securityId) {
-            this.removeAll()
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'newDrawLayers',
-                type: 'VectorLayer'
-            })
-            getSecurityPoliceList(securityId).then(res => {
-                res.data.data.forEach(item => {
-                    if (item.type == 1) {
-                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
-                        this.$EventBus.$emit('layerPolylineAdd', {
-                            layerName: 'newDrawLayers',
-                            positions: positionNewArr,
-                            material: global.DC.Color.ORANGE.withAlpha(0.6),
-                            width: 4,
-                            params: {
-                                id: item.id,
-                                policemanId: item.policemanId
-                            },
-                            incident: this.overlayTypeClick
-                        })
-                    } else if (item.type == 2) {
-                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
-                        this.$EventBus.$emit('layerPolygonAdd', {
-                            layerName: 'newDrawLayers',
-                            positions: positionNewArr,
-                            material: global.DC.Color.ORANGE.withAlpha(0.6),
-                            params: {
-                                id: item.id,
-                                policemanId: item.policemanId
-                            },
-                            incident: this.overlayTypeClick
-                        })
-
-                    } else if (item.type == 3) {
-                        let positionObj = this.convertBillboardPositionDate(item.position, 'policeman', item.id, item.policemanId)
-                        this.$EventBus.$emit('layerPointAdd', {
-                            layerName: 'newDrawLayers',
-                            type: 'billboard',
-                            params: positionObj,
-                            incident: this.overlayTypeClick
-                        })
-                    }
-                })
-            })
-        },
-
-        // 获取活动警车分布信息
-        getSecurityCarList (securityId) {
-            this.removeAll()
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'newCarDrawLayers',
-                type: 'VectorLayer'
-            })
-            getSecurityCarList(securityId).then(res => {
-                res.data.data.forEach(item => {
-                    if (item.type == 1) {
-                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
-                        this.$EventBus.$emit('layerPolylineAdd', {
-                            layerName: 'newCarDrawLayers',
-                            positions: positionNewArr,
-                            material: global.DC.Color.BLUE.withAlpha(0.4),
-                            width: 8,
-                            params: {
-                                id: item.id,
-                                carId: item.carId
-                            },
-                            incident: this.overlayTypeClick
-                        })
-                    } else if (item.type == 2) {
-                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
-                        this.$EventBus.$emit('layerPolygonAdd', {
-                            layerName: 'newCarDrawLayers',
-                            positions: positionNewArr,
-                            material: global.DC.Color.BLUE.withAlpha(0.4),
-                            params: {
-                                id: item.id,
-                                carId: item.carId
-                            },
-                            incident: this.overlayTypeClick
-                        })
-
-                    } else if (item.type == 3) {
-                        let positionObj = this.convertBillboardPositionDate(item.position, 'policecar', item.id, item.carId)
-                        this.$EventBus.$emit('layerPointAdd', {
-                            layerName: 'newCarDrawLayers',
-                            type: 'billboard',
-                            params: positionObj,
-                            incident: this.overlayTypeClick
-                        })
-                    }
-                })
-            })
-        },
-
-        // 获取活动列表
-        getSecurityList (current, size, type, name, startTime, endTime) {
-            this.loading()
-
-            getSecurityList(current, size, type, name, startTime, endTime).then(res => {
-                this.activityList = res.data.data.records.map(item => {
-                    item.startTime = item.startTime.substring(0, 16)
-                    item.endTime = item.endTime.substring(0, 16)
-
-                    return item
-                })
-
-                this.pagesCount = res.data.data.pages
-
-                this.addActivityPoint()
-
-                loading.close()
-            })
-        },
-
-        // 获取警员列表,生成下拉数据
-        getPoliceList () {
-            getPoliceList().then(res => {
-                res.data.data.forEach(item => {
-                    this.policemanOption.push({ value: `${item.id}`, label: `${item.name}` })
-                })
-            })
-        },
-
-        // 获取警车列表,生成下拉数据
-        getCarList () {
-            getCarList().then(res => {
-                res.data.data.forEach(item => {
-                    this.policecarOption.push({ value: `${item.id}`, label: `${item.serialNumber}` })
-                })
-            })
-        },
-
-        // 修改活动警员
-        updateActivityPolice (id, policemanId) {
-            updateActivityPolice(id, policemanId).then(res => {
-                this.getSecurityPoliceList(this.showingSecurityId)
-            })
-        },
-
-        // 修改活动警车
-        updateActivityCar (id, carId) {
-            updateActivityCar(id, carId).then(res => {
-                this.getSecurityCarList(this.showingSecurityId)
-            })
-        },
-
-        // 活动添加警车和范围
-        addCarAndRange (carId, position, securityId, type) {
-            addCarAndRange(carId, position, securityId, type).then(res => {
-                this.getSecurityCarList(securityId)
-            })
-        },
-
-        // 添加活动图标
-        addActivityPoint () {
-            this.activityList.forEach(item => {
-                let positionObj = this.convertBillboardPositionDate(item.position, 'activity')
-                this.$EventBus.$emit('layerPointAdd', {
-                    layerName: 'activityLayers',
-                    type: "billboard",
-                    params: positionObj,
-                    incident: this.houseSiteClick
-                })
-            })
-        },
-
-        // 活动添加警员
-        addActivityPolice (policemanId, position, securityId, type) {
-            addActivityPolice(policemanId, position, securityId, type).then(res => {
-                this.getSecurityPoliceList(securityId)
-            })
-        },
-
-        // 转换 点 坐标数据
-        convertBillboardPositionDate (data, iconName, plotId, policeId) {
-            let positionStr = data
-            positionStr = data.slice(6, positionStr.length - 1)
-            let positionArr = positionStr.split(" ")
-            let positionObj = {}
-            if (iconName == 'activity') {
-                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/activity.png' }
-            } else if (iconName == 'policeman') {
-                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/police.png', id: plotId, policemanId: policeId }
-            } else if (iconName == 'policecar') {
-                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/car.png', id: plotId, carId: policeId }
-            }
-            return positionObj
-        },
-
-        // 转换 线面 坐标数据
-        convertPolylineOrPolygonPositionDate (data, type) {
-            let positionStr = data.slice(11, data.length - 1)
-            let positionArr = positionStr.split(',')
-            let positionNewArr = ''
-            positionArr.forEach(item => {
-                if (type == 1) {
-                    positionNewArr += item.split(' ')[0] + ',' + item.split(' ')[1] + ';'
-                } else {
-                    positionNewArr += item.split(' ')[0] + ',' + item.split(' ')[1] + ',' + 0 + ';'
-                }
-            })
-            return positionNewArr
-        },
-
-        // 树形控件选中事件
-        treeCheckClick (e1, e2) {
-            const that = this
-            this.$EventBus.$emit('mapRemoveLayer', {
-                layerName: 'activeHeatLayer',
-                type: 'HeatLayer'
-            })
-            if (e1.label == '热力图' && e2.checkedKeys.some(item => {
-                return item == 777
-            })) {
-                this.$EventBus.$emit('layerPointAdd', {
-                    layerName: 'activeHeatLayer',
-                    type: "HeatPoint",
-                    layerType: 'HeatLayer',
-                    params: {
-                        positions: that.generatePosition(2000)
-                    }
-                })
-            } else {
-                this.$EventBus.$emit('mapClearLayer', {
-                    layerName: 'activeLayer',
-                    type: 'VectorLayer'
-                })
-                e2.checkedNodes.forEach(item => {
-                    if (item.lng) {
-                        item.url = '/img/icon/position.png'
-                        this.$EventBus.$emit('layerPointAdd', {
-                            layerName: 'activeLayer',
-                            type: "billboard",
-                            params: item
-                        })
-                    }
-                })
-            }
-        },
-
-        // 点击活动列表活动
-        activityListClick (item, index) {
-            this.removeAll()
-            this.showingSecurityId = item.id
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'newDrawLayers',
-                type: 'VectorLayer'
-            })
-            this.getSecurityPoliceList(item.id)
-            this.getSecurityCarList(item.id)
-            if (this.currentClickIndex !== '' && this.currentClickIndex == index) {
-                return
-            }
-            this.analyseInput = 100
-
-            this.activityDetails = item
-
-            this.polylineSwitch = false
-
-            if (analyseLayer != null) {
-                analyseLayer.clear()
-            }
-
-            let positionObj = this.convertBillboardPositionDate(item.position, 'activity')
-
-            let point = new global.DC.Point(`${positionObj.lng}, ${positionObj.lat}`)
-            analyseLayer.addOverlay(point)
-
-            let coords = global.DC.GeoTools.pointBuffer(`${positionObj.lng}, ${positionObj.lat}`, 100)
-            analysePolygon = new global.DC.Polygon(coords)
-
-            analysePolygon.setStyle({
-                material: global.DC.Color.RED.withAlpha(0.4)
-            })
-
-            analyseLayer.addOverlay(analysePolygon)
-
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'polylineLayer',
-                type: 'VectorLayer'
-            })
-
-            this.dialogVisible = true
-
-            this.currentClickIndex = index
-
-            this.$EventBus.$emit('toPosition', {
-                siteJd: positionObj.lng,
-                siteWd: positionObj.lat,
-                siteGd: 1500
-            })
-        },
-
-        // 切换轨迹路线显示
-        switchChange (e) {
-            if (e == true) {
-                this.$EventBus.$emit('layerPolylineAdd', {
-                    layerName: 'polylineLayer',
-                    positions: '116.023042, 28.684732; 116.023402, 28.679067; 116.023475, 28.678843; 116.023697, 28.678647; 116.024121, 28.678391; 116.026906, 28.678461; 116.027065, 28.676867; 116.033252, 28.676165',
-                    material: global.DC.Namespace.Cesium.Color.fromBytes(
-                        255, 0, 0,
-                        255
-                    ),
-                    distanceDisplayCondition: {
-                        near: 0, //最近距离
-                        far: Number.MAX_VALUE //最远距离
-                    }
-                })
-            } else {
-                this.$EventBus.$emit('mapClearLayer', {
-                    layerName: 'polylineLayer',
-                    type: 'VectorLayer'
-                })
-            }
-        },
-
-        // 切换轨迹播放控件
-        switchBtnChange (e) {
-            this.isTrackBtnShow = e
-        },
-
-        // 输入绘制线范围
-        analyseChange (e) {
-            analyseLayer.removeOverlay(analysePolygon)
-            let coords = global.DC.GeoTools.pointBuffer(`${this.activityDetails.lng}, ${this.activityDetails.lat}`, e)
-            analysePolygon = new global.DC.Polygon(coords)
-            analysePolygon.setStyle({
-                material: global.DC.Color.RED.withAlpha(0.4)
-            })
-            analyseLayer.addOverlay(analysePolygon)
-        },
-
-        // 分页页码变化事件
-        handleCurrentChange: function (currentPage) {
-            this.currentPage = currentPage
-            this.getSecurityList(this.currentPage, this.pagesize)
-        },
-
-        // 关闭活动详情弹窗
-        closeActivityDetails () {
-            this.dialogVisible = false
-            this.currentClickIndex = ''
-            this.polylineSwitch = false
-            analyseLayer.clear()
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'polylineLayer',
-                type: 'VectorLayer'
-            })
-        },
-
-        // 地图元素绘制
-        draw (poltType, policeType) {
-            let flag = false
-            const that = this
-            this.policeType = ''
-            plot && plot.draw(poltType, overlay => {
-
-                if (poltType == 'billboard' && policeType == 'policeman') {
-                    overlay.icon = '/img/policeIcon.png'
-                } else if (poltType == 'billboard' && policeType == 'policecar') {
-                    overlay.icon = '/img/policeCar.jfif'
-                }
-
-                if (overlay) {
-
-                    drawLayers.addOverlay(overlay)
-                    plot.edit(overlay, (e) => {
-                        flag = true
-                        overlay.on(global.DC.MouseEventType.CLICK, this.overlayTypeClick)
-                        overlay.drawType = poltType
-                        overlay.policeType = policeType
-                        this.overlayObj = overlay
-                        document.oncontextmenu = function () {
-                            if (flag == true && poltType == 'billboard') {
-                                if (policeType == 'policeman') {
-                                    that.policeChooseTitle = '选择警员'
-                                    that.policeOption = that.policemanOption
-                                } else if (policeType == 'policecar') {
-                                    that.policeChooseTitle = '选择警车'
-                                    that.policeOption = that.policecarOption
-                                }
-                                that.policeChooseVisible = true
-                                flag = false
-                            } else if (flag == true && poltType == 'polygon') {
-                                if (policeType == 'policecar') {
-                                    that.policeChooseTitle = '选择警车'
-                                    that.policeOption = that.policecarOption
-                                    that.policeChooseVisible = true
-                                    flag = false
-                                }
-                            }
-                        }
-                    })
-                }
-            })
-        },
-
-        // 删除所有地图绘制元素
-        removeAll () {
-            drawLayers.clear()
-        },
-
-        drawArrow (type) {
-            arrowPlot && arrowPlot.draw(type, overlay => {
-                if (overlay) {
-                    drawArrowLayers.addOverlay(overlay)
-                    plot.edit(overlay)
-                }
-            })
-        },
-
-        removeAllArrow () {
-            drawArrowLayers.clear()
-        },
-
-        arrangeDraw () {
-            this.arrangeVisible = true
-        },
-
-        // 播放轨迹
-        play () {
-            tc.play()
-            this.view('1', -20, 100)
-        },
-
-        // 暂停播放轨迹
-        pause () {
-            tc.pause()
-        },
-
-        // 恢复播放轨迹
-        restore () {
-            tc.restore()
-        },
-
-        // 轨迹视角切换
-        view (mode, pitch, range) {
-            tc.viewTrack(track, {
-                mode: mode,
-                pitch: pitch,
-                range: range
-            })
-        },
-
-        // 大小重置
-        boxResize (val) {
-            this.boxShow = val
-        },
-
-        // 选择警员取消按钮
-        cancel () {
-            this.policeIconIsCreated = false
-            this.policeChooseVisible = false
-            this.overlayObj2 = {}
-            this.removeAll()
-        },
-
-        // 选择警员关闭
-        policeChooseBeforeClose () {
-            this.policeChooseVisible = false
-            this.policeIconIsCreated = false
-            this.removeAll()
-        },
-
-        // 选择警员确认按钮
-        determine () {
-            if (!this.policeIconIsCreated) {
-                let type = ''
-                let position = ''
-                if (this.overlayObj.drawType == 'billboard') {
-                    type = 3
-                    position = this.overlayObj._position._lng + ' ' + this.overlayObj._position._lat
-                } else if (this.overlayObj.drawType == 'polyline') {
-                    type = 1
-                    this.overlayObj._positions.forEach(item => {
-                        position += item._lng + ' ' + item._lat + ','
-                    })
-                    position = position.slice(0, position.length - 1)
-                } else if (this.overlayObj.drawType == 'polygon') {
-                    type = 2
-                    this.overlayObj._positions.forEach(item => {
-                        position += item._lng + ' ' + item._lat + ','
-                    })
-                    position += this.overlayObj._positions[0]._lng + ' ' + this.overlayObj._positions[0]._lat + ','
-                    position = position.slice(0, position.length - 1)
-                }
-                if (this.overlayObj.policeType == 'policeman') {
-                    this.addActivityPolice(this.policeType, position, this.showingSecurityId, type)
-                } else if (this.overlayObj.policeType == 'policecar') {
-                    this.addCarAndRange(this.policeType, position, this.showingSecurityId, type)
-                }
-                this.policeChooseVisible = false
-                this.policeIconIsCreated = false
-            } else {
-                if (this.policeChooseTitle == '选择警员') {
-                    this.updateActivityPolice(this.policeIconId, this.policeType)
-                } else if (this.policeChooseTitle == '选择警车') {
-                    this.updateActivityCar(this.policeIconId, this.policeType)
-                }
-                this.policeChooseVisible = false
-                this.policeIconIsCreated = false
-            }
-        },
-
-        // 地图绘制元素点击事件
-        overlayTypeClick (e) {
-            this.policeIconIsCreated = true
-            if ('policemanId' in e.overlay.attrParams) {
-                this.policeChooseTitle = '选择警员'
-                this.policeOption = this.policemanOption
-                this.policeIconId = e.overlay.attrParams.id
-                this.policeType = e.overlay.attrParams.policemanId
-            } else if ('carId' in e.overlay.attrParams) {
-                this.policeChooseTitle = '选择警车'
-                this.policeOption = this.policecarOption
-                this.policeIconId = e.overlay.attrParams.id
-                this.policeType = e.overlay.attrParams.carId
-            }
-            this.policeChooseVisible = true
-        }
-    },
-
-    destroyed () {
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'activeLayer',
-            type: 'VectorLayer'
-        })
-
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'activityLayers',
-            type: 'VectorLayer'
-        })
-
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'polylineLayer',
-            type: 'VectorLayer'
-        })
-
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'activeHeatLayer',
-            type: 'HeatLayer'
-        })
-
-        this.$EventBus.$emit('mapClearLayer', {
-            layerName: 'newDrawLayers',
-            type: 'VectorLayer'
-        })
-        this.$EventBus.$emit('mapClearLayer', {
-            layerName: 'newCarDrawLayers',
-            type: 'VectorLayer'
-        })
-
-        analyseLayer.clear()
-
-        this.removeAll()
-        tc.clear()
-
-        this.$parent.$parent.resize('0px')
-    }
-}
-</script>
-
-<style scoped lang="scss">
-.container {
-    height: 100%;
-    width: 100%;
-    position: relative;
-
-    &-content {
-        position: relative;
-        display: flex;
-        flex-direction: column;
-        width: 100%;
-        height: 100%;
-        color: #fff;
-        background: $bg-color;
-
-        .title {
-            height: 40px;
-            line-height: 40px;
-            font-weight: 700;
-            font-size: 24px;
-            letter-spacing: 20px;
-        }
-
-        .search-box {
-            padding: 0 10px;
-
-            &>div:first-child {
-                margin-top: 0;
-            }
-
-            &>div {
-                margin-top: 10px;
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-
-                .category {
-                    width: 88px;
-                    font-size: 16px;
-                }
-
-                .category-value {
-                    flex: 1;
-                }
-
-                input {
-                    width: 209px;
-                    height: 32px;
-                    font-size: 12px;
-                    text-indent: 1em;
-                    color: #ffffff;
-                    background-color: transparent;
-                    border: 1px solid rgb(0, 92, 169);
-                    border-radius: 5px 0 0 5px;
-                }
-
-                input:focus {
-                    outline: none;
-                }
-
-                input::-webkit-input-placeholder {
-                    color: rgba(238, 238, 238, 0.7);
-                }
-
-                button {
-                    font-size: 20px;
-                    font-weight: 700;
-                    width: 60px;
-                    height: 32px;
-                    background-color: $table-body-tr-2n-color;
-                    color: #fff;
-                    border: 1px solid rgb(0, 92, 169);
-                    cursor: pointer;
-                    border-radius: 0 5px 5px 0;
-                    vertical-align: top;
-                }
-
-                button:active {
-                    background-color: $table-body-tr-2n-color;
-                    border: 1px solid rgb(0, 92, 169);
-                    color: rgb(189, 185, 185) !important;
-                }
-            }
-        }
-
-        .result-content {
-            flex: 1;
-            margin-top: 8px;
-            display: flex;
-            flex-direction: column;
-            overflow: hidden;
-
-            .table-box {
-                flex: 1;
-                overflow-x: hidden;
-                overflow-y: auto;
-
-                .row-box {
-                    margin: 10px;
-                    padding: 10px;
-                    background: $table-body-tr-2n-color;
-                    cursor: pointer;
-                    font-size: 14px;
-
-                    .row-content {
-                        &>div {
-                            display: flex;
-                            line-height: 28px;
-
-                            .category {
-                                width: 88px;
-                            }
-
-                            .category-value {
-                                flex: 1;
-                                display: flex;
-                                justify-content: flex-start;
-                                flex-wrap: wrap;
-                            }
-                        }
-                    }
-                }
-
-                .row-box:hover {
-                    // background-color: $table-header-bg-color;
-                    background-color: rgba(17, 38, 163, 0.5);
-                }
-
-                .row-box.on {
-                    // background: $table-header-bg-color;
-                    background-color: rgba(17, 38, 163, 0.5);
-                }
-
-                :deep(.el-dialog) {
-                    margin-right: 0px;
-                }
-
-                .tableClass {
-                    margin: 0 auto;
-                    width: 400px;
-                    // height: 400px;
-                    border-collapse: collapse;
-                }
-
-                .tableClass td {
-                    width: 300px;
-                }
-            }
-
-            .pages {
-                height: 40px;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-            }
-        }
-    }
-
-    .draw-btn-box {
-        position: fixed;
-        left: 50%;
-        bottom: 40px;
-        color: #fff;
-        background: $bg-one-color;
-        white-space: nowrap;
-        transform: translate(-50%, 0);
-
-        &>div {
-            display: flex;
-        }
-
-        ul {
-            display: flex;
-
-            li {
-                button {
-                    height: 30px;
-                    margin: 0 5px;
-                    background-color: $bg-color;
-                    border: 1px solid #cecece;
-                    border-radius: 4px;
-                    color: #fff;
-                    cursor: pointer;
-                    outline: none;
-                }
-            }
-        }
-    }
-
-    .second-container {
-        position: absolute;
-        top: 0px;
-        display: flex;
-        flex-direction: column;
-        width: 240px;
-        background: $bg-color;
-
-        :deep(.el-tree) {
-            background: transparent;
-        }
-
-        :deep(.el-tree-node__content) {
-            background: transparent;
-        }
-
-        :deep(.el-tree-node) {
-            background: transparent;
-            color: #fff;
-        }
-    }
-
-    .second-container.spread {
-        left: 444px;
-    }
-
-    .second-container.take-back {
-        left: 10px;
-    }
-
-    .activity-details-box {
-        position: fixed;
-        top: 90px;
-        right: 10px;
-        width: 400px;
-        padding: 10px;
-
-        border-radius: 10px;
-        color: #fff;
-        background: $bg-color;
-        overflow-x: hidden;
-        overflow-y: auto;
-
-        .title {
-            position: relative;
-            height: 36px;
-            line-height: 36px;
-
-            .close {
-                position: absolute;
-                top: 50%;
-                right: 0;
-                transform: translate(0, -50%);
-                cursor: pointer;
-            }
-
-            .close::before {
-                content: '\e6db';
-                font-family: element-icons;
-            }
-        }
-
-        .row-box {
-            width: 100%;
-            line-height: 28px;
-            display: flex;
-
-            &>div {
-                text-align: left;
-            }
-
-            .category {
-                width: 96px;
-            }
-
-            .category-value {
-                flex: 1;
-            }
-        }
-    }
-
-    .plan-control {
-        position: fixed;
-        top: 90px;
-        right: 450px;
-        width: 180px;
-        padding: 10px;
-        color: #fff;
-        background-color: $bg-color;
-
-        .row-box {
-            width: 100%;
-            line-height: 28px;
-            display: flex;
-
-            &>div {
-                text-align: left;
-            }
-
-            .category {
-                width: 96px;
-            }
-
-            .category-value {
-                flex: 1;
-            }
-        }
-    }
-
-    .btn-box {
-        position: fixed;
-        top: 78px;
-        left: 50%;
-        transform: translate(-50%, 0);
-        min-height: 40px;
-        padding: 10px 10px 0 10px;
-        border-radius: 10px;
-        color: #fff;
-        user-select: none;
-
-        ul {
-            display: flex;
-
-            li {
-                button {
-                    height: 30px;
-                    margin: 0 5px;
-                    background-color: $bg-color;
-                    border: 1px solid #cecece;
-                    border-radius: 4px;
-                    color: #fff;
-                    cursor: pointer;
-                    outline: none;
-                }
-            }
-        }
-    }
-}
-</style>
\ No newline at end of file
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 8141a05..2a0e777 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 16:18:17
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-04-01 11:24:57
+ * @LastEditTime: 2023-04-01 11:53:43
  * @FilePath: \srs-police-affairs\src\views\home\index.vue
  * @Description: 小区-栋-层-房屋
  *
@@ -131,17 +131,17 @@
     <el-dialog :title="keyPersonTitle" :modal="true" :visible.sync="keyPersonVisible" :before-close="personInfoClose"
         :close-on-click-modal="true" class="keyPerson-details-box">
         <!-- <div class="header" v-show="!isMaoJiaLin">
-                                                                                                                                                                                                                                                                                                                                                                                <div>
-                                                                                                                                                                                                                                                                                                                                                                                    人员名称:
-                                                                                                                                                                                                                                                                                                                                                                                    <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
-                                                                                                                                                                                                                                                                                                                                                                                </div>
-                                                                                                                                                                                                                                                                                                                                                                                <div>
-                                                                                                                                                                                                                                                                                                                                                                                    联系电话:
-                                                                                                                                                                                                                                                                                                                                                                                    <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
-                                                                                                                                                                                                                                                                                                                                                                                </div>
-                                                                                                                                                                                                                                                                                                                                                                                <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
-                                                                                                                                                                                                                                                                                                                                                                                <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
-                                                                                                                                                                                                                                                                                                                                                                            </div> -->
+                                                                                                                                                                                                                                                                                                                                                                                    <div>
+                                                                                                                                                                                                                                                                                                                                                                                        人员名称:
+                                                                                                                                                                                                                                                                                                                                                                                        <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
+                                                                                                                                                                                                                                                                                                                                                                                    </div>
+                                                                                                                                                                                                                                                                                                                                                                                    <div>
+                                                                                                                                                                                                                                                                                                                                                                                        联系电话:
+                                                                                                                                                                                                                                                                                                                                                                                        <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
+                                                                                                                                                                                                                                                                                                                                                                                    </div>
+                                                                                                                                                                                                                                                                                                                                                                                    <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
+                                                                                                                                                                                                                                                                                                                                                                                    <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
+                                                                                                                                                                                                                                                                                                                                                                                </div> -->
 
             <el-table :data="keyPersonDetailArr" style="width: 100%"
                 :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
@@ -169,10 +169,10 @@
             </el-table>
 
             <!-- <div class="pages all-pagination-sty" ref="tablePagination" v-show="!isMaoJiaLin">
-                                                                                                                                                                                                                                                                                                                                                               <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
-                                                                                                                                                                                                                                                                                                                                                                   :total="peoplePage.total" :current-page="peoplePage.currentPage"
-                                                                                                                                                                                                                                                                                                                                                                   @current-change="handlePersonPageChange"></el-pagination>
-                                                                                                                                                                                                                                                                                                                                                         </div> -->
+                                                                                                                                                                                                                                                                                                                                                                   <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
+                                                                                                                                                                                                                                                                                                                                                                       :total="peoplePage.total" :current-page="peoplePage.currentPage"
+                                                                                                                                                                                                                                                                                                                                                                       @current-change="handlePersonPageChange"></el-pagination>
+                                                                                                                                                                                                                                                                                                                                                             </div> -->
         </el-dialog>
 
         <el-dialog :title="equimentTitle" :modal="true" :visible.sync="equimentVisible" :before-close="equimentBeforeClose"
@@ -2075,6 +2075,8 @@
     },
 
     destroyed () {
+        loading.close()
+
         this.clearPolygonLayer()
 
         // cylinderLayer != null && cylinderLayer != undefined && cylinderLayer != '' && cylinderLayer.remove()
diff --git a/src/views/layout/index.vue b/src/views/layout/index.vue
index 1a437cb..9e8356d 100644
--- a/src/views/layout/index.vue
+++ b/src/views/layout/index.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 16:18:24
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-03-18 09:00:11
+ * @LastEditTime: 2023-04-01 16:30:54
  * @FilePath: \srs-police-affairs\src\views\layout\index.vue
  * @Description: 
  * 
@@ -33,9 +33,11 @@
             <div class="menu-list right">
                 <div @mouseenter="item.childrenFlag = true" @mouseleave="item.childrenFlag = false" class="nav-list"
                     @click="goToPath(item)" v-for="(item, index) in menuRightList" :key="index">
-                    <span :class="{ on: currentUrl.indexOf(item.path) != -1 }">{{ item.menuName }}</span>
+                    <span :class="{ on: currentUrl.indexOf(item.path) != -1 || currentUrl.indexOf(item.pathT) != -1 }">{{
+                        item.menuName }}</span>
                     <div class="sub-nav-list" v-show="item.children && item.childrenFlag">
-                        <div v-for="(subItem, subIndex) in item.children" :key="subIndex" @click="goToPath(subItem)">
+                        <div :class="{ on: currentUrl.indexOf(subItem.path) != -1 }"
+                            v-for="(subItem, subIndex) in item.children" :key="subIndex" @click.stop="goToPath(subItem)">
                             {{
                                 subItem.menuName
                             }}
@@ -67,16 +69,16 @@
         <!-- <div class="userIcon" :class="{on: userOn == true}" @click="openUser">
                 <div class="userDetail" v-if="isShowUserDetail">
                     <div class="triangle"></div>
-                                    <div class="userName">用户名:{{userName}}</div>
-                                    <div class="userBtn">
-                                        <div class="edit" @click="goTOLogin">
-                                            >
-                                            <img src="../../../public/img/editLogin.webp" alt />
-                                        </div>
-                                        <div class="return" @click="goTOFllow">返回引导页</div>
-                                    </div>
-                                </div>
-                            </div>-->
+                                                                                                <div class="userName">用户名:{{userName}}</div>
+                                                                                                <div class="userBtn">
+                                                                                                    <div class="edit" @click="goTOLogin">
+                                                                                                        >
+                                                                                                        <img src="../../../public/img/editLogin.webp" alt />
+                                                                                                    </div>
+                                                                                                    <div class="return" @click="goTOFllow">返回引导页</div>
+                                                                                                </div>
+                                                                                            </div>
+                                                                                        </div>-->
         </div>
 
         <div class="main-container">
@@ -141,7 +143,8 @@
             menuRightList: [
                 {
                     menuName: '视频监控',
-                    path: '/layout/video',
+                    path: '/layout/video/list',
+                    pathT: '/layout/video/region',
                     childrenFlag: false,
                     children: [
                         {
@@ -249,7 +252,7 @@
          * @return {*} 没有返回值
          */
         goToPath (params) {
-            if (params.children && params.children.length > 0) return
+            console.log(params, 215555)
 
             if (params.path) {
                 if (this.$route.path == params.path) return
@@ -257,7 +260,6 @@
             } else {
                 params.childrenFlag = !params.childrenFlag
             }
-
         },
 
         flexibelClick () {
@@ -468,6 +470,10 @@
                         background: $table-body-tr-n-color;
                         cursor: pointer;
                         box-sizing: content-box;
+
+                        &.on {
+                            color: rgba(252, 189, 86, 1);
+                        }
                     }
 
                     div:first-child {
diff --git a/src/views/police/index.vue b/src/views/police/index.vue
index 96607c6..5c2a696 100644
--- a/src/views/police/index.vue
+++ b/src/views/police/index.vue
@@ -145,6 +145,8 @@
 let tc = null
 let track = null
 
+import { initMapPosition } from '@/utils/mapPositionInit'
+
 export default {
     inject: ['userInfo'],
 
@@ -206,6 +208,10 @@
 
     created () {
         window.addEventListener('resize', this.setTableHeight)
+
+        this.$nextTick(() => {
+            initMapPosition()
+        })
     },
 
     mounted () {
diff --git a/src/views/policeInfor/index.vue b/src/views/policeInfor/index.vue
index 8f12eaa..c0b9477 100644
--- a/src/views/policeInfor/index.vue
+++ b/src/views/policeInfor/index.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 16:18:17
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-03-30 15:44:10
+ * @LastEditTime: 2023-04-01 16:42:12
  * @FilePath: \srs-police-affairs\src\views\policeInfor\index.vue
  * @Description: 辖区管理
  * 
@@ -199,6 +199,7 @@
 let timer = []
 
 import { getActAsPoliceList, getAnswerPolices, getAlarmList } from "@/api/home/index.js"
+import { initMapPosition } from '@/utils/mapPositionInit'
 
 export default {
     inject: ['userInfo'],
@@ -230,6 +231,10 @@
     created () {
         const that = this
 
+        this.$nextTick(() => {
+            initMapPosition()
+        })
+
         this.defaultDate()
 
         this.$EventBus.$on('PoliceInforSiteClick', (params) => {
diff --git a/src/views/video/index.vue b/src/views/video/index.vue
index 932a1c1..a27e9b4 100644
--- a/src/views/video/index.vue
+++ b/src/views/video/index.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 16:18:17
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2022-11-18 10:06:55
+ * @LastEditTime: 2023-04-01 16:36:06
  * @FilePath: \srs-police-affairs\src\views\video\index.vue
  * @Description: 辖区管理
  * 
@@ -16,7 +16,12 @@
 </template>
 
 <script>
+
+
 export default {
+    created () {
+
+    },
     methods: {
         boxResize (val) {
             this.$refs['video-target-box'].boxResize(val)
diff --git a/src/views/video/list.vue b/src/views/video/list.vue
index 6e73eb3..7757dfb 100644
--- a/src/views/video/list.vue
+++ b/src/views/video/list.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 16:18:17
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-03-31 17:07:47
+ * @LastEditTime: 2023-04-01 17:09:18
  * @FilePath: \srs-police-affairs\src\views\video\list.vue
  * @Description: 辖区管理
  * 
@@ -13,8 +13,11 @@
     <div class="list container">
         <div v-show="boxShow" class="container-content">
             <div class="search-box">
-                点位名称:
-                <input v-model="searchValue" @input="searchChange" type="text" placeholder="请输入…" />
+                <span style="display: inline-block; white-space:nowrap;">
+                    点位名称:
+                </span>
+                <el-input size="small" placeholder="请输入…" v-model="searchValue" @change="searchChange" clearable>
+                </el-input>
             </div>
 
             <div class="draw-btn">
@@ -41,7 +44,7 @@
 
                             &nbsp;
 
-                            <span v-show="node.data.number && node.data.number != -1">
+                            <span v-show="'number' in node.data && node.data.number != -1">
                                 ({{
                                     node.data.number
                                 }}个)
@@ -86,13 +89,11 @@
 
         <el-dialog :title="drawDialogTitle" :modal="false" :visible.sync="drawDialogVisible"
             :before-close="drawDialogBeforeClose" :close-on-click-modal="true" class="video-draw-box">
-            <div>
-                <div>名称:</div>
-                <input type="text" v-model="drawName" placeholder="请输入绘制线的名称" />
-            </div>
             <div v-show="inputpopup">
                 <div>距离:</div>
-                <input type="text" v-model="range" placeholder="请输入绘制线的范围" />
+                <div>
+                    <input type="text" v-model="range" placeholder="请输入缓冲范围" />
+                </div>
             </div>
             <div class="line">
                 <div class="value-name-box">颜色:</div>
@@ -102,8 +103,15 @@
                 </div>
             </div>
             <div>
-                <button @click="saveDrawInfo">保存</button>
-                <button @click="cancelSaveDrawInfo">取消</button>
+                <div class="value-name-box">设置透明度:</div>
+                <div class="alpha">
+                    <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+                </div>
+            </div>
+            <div class="button">
+                <button @click="searchDraw">查询</button>
+
+                <button @click="drawDialogBeforeClose">取消</button>
             </div>
         </el-dialog>
     </div>
@@ -121,29 +129,30 @@
     equipmentNum = window.BASE_URL_CONFIG.VUE_APP_INTRANET_EQUIPMENT
 }
 
-import EntityDraw from "@/utils/EntityDraw.js"
+import { getEquipmentAll } from '@/api/home/index.js'
+
 import {
     getDevices,
     getRegionList,
-    insertRegionSaveList,
     getTreeDevices,
     getSearchTreeDevices,
-    getTreeDevicesNearby
 } from '@/api/video/index.js'
 import flvjs from 'flv.js'
 
-let graphicLayer = null
+import { initMapPosition } from '@/utils/mapPositionInit'
+
 let plot = undefined
 let drawPlotLayers = null
+let loading = null
 
+let drawFlag = false
+let drawPlotData = null
 
 export default {
     inject: ['userInfo'],
 
     data () {
         return {
-            monitoringList: [],
-            monitoringSaveList: [],
             dialogTitle: '',
             drawDialogTitle: '绘制线面',
             dialogVisible: false,
@@ -154,7 +163,6 @@
             range: 100,
             inputpopup: false,
             changeBtn: false,
-            drawName: '',
             drawType: 1,
             props: {
                 label: 'name',
@@ -168,7 +176,6 @@
             defaultExpandedKeys: [],
             searchLazyFlag: true,
             searchTreeData: [],
-            drawPlotData: {},
             chooseRangeColor: '#FF0000',
             predefineColors: [
                 '#ff4500',
@@ -187,11 +194,15 @@
                 '#c7158577'
             ],
 
-            videoPlayShow: false
+            videoPlayShow: false,
+            startDrawFlag: false,
+
+            choosePlotColorAlpha: 50
         }
     },
 
     created () {
+
     },
 
     mounted () {
@@ -204,10 +215,17 @@
                     clampToModel: true
                 })
             }
+
+            this.getEquipmentAll({ type: 1, deptid: this.userInfo.dept_id })
         })
     },
 
     methods: {
+        // 计算透明度值
+        formatTooltip (val) {
+            return val / 100
+        },
+
         async getDevices (channelId) {
             let flvAddress = ''
             await getDevices(channelId).then(res => {
@@ -269,22 +287,35 @@
         },
 
         drawDialogBeforeClose () {
-            this.drawName = ''
+            plot.stop()
+
             if (drawPlotLayers != null) {
                 drawPlotLayers.clear()
             }
-            this.$EventBus.$emit('mapRemoveLayer', {
-                layerName: 'monitoringLayers',
-                type: 'VectorLayer'
-            })
+
             this.drawDialogVisible = false
         },
 
         searchChange (e) {
-            if (e.target.value.trim() != '') {
+            this.inputpopup = false
+            plot.stop()
+
+            if (drawPlotLayers != null) {
+                drawPlotLayers.clear()
+            }
+
+            drawPlotData = null
+
+            if (e.trim() != '') {
                 this.searchLazyFlag = false
+                this.loading()
+                this.$EventBus.$emit('mapClearLayer', {
+                    layerName: 'treeValAllLayer',
+                    type: 'VectorLayer'
+                })
 
                 this.searchTreeData = []
+
                 getSearchTreeDevices({
                     deviceId: equipmentNum,
                     parentId: '361102',
@@ -292,20 +323,48 @@
                     name: this.searchValue.trim()
                 }).then(res => {
                     this.searchTreeData = res.data.data
+
+                    res.data.data.length && res.data.data.forEach(item => {
+                        this.$EventBus.$emit('layerPointAdd', {
+                            layerName: 'treeValAllLayer',
+                            type: "billboard",
+                            layerType: 'ClusterLayer',
+                            params: {
+                                ...item,
+                                text: item.name,
+                                lng: item.longitude,
+                                lat: item.latitude,
+                                url: item.status == 1 ? '/img/icon/video.png' : '/img/icon/video-off.png',
+                                channelId: item.channelId,
+                                status: item.status,
+                                disableDepthTestDistance: Number.POSITIVE_INFINITY
+                            },
+                            incident: this.siteClick,
+                            // mouseOverIncident: this.pointMouseOver,
+                            // mouseOutIncident: this.pointMouseOut,
+                        })
+                    })
+
+                    this.closeLoading()
                 })
             } else {
                 this.searchLazyFlag = true
+
+                this.getEquipmentAll({ type: 1, deptid: this.userInfo.dept_id })
             }
         },
 
-        // 封装方法绘制线面 type:polygon/polyline
-        // draww (type) {
-        //     if (graphicLayer == null) graphicLayer = new EntityDraw()
-        //     graphicLayer.activate(type, (lastEventData) => {
-        //     })
-        // },
-
         draw (type) {
+            const that = this
+            drawFlag = false
+            if (this.startDrawFlag == true) {
+                drawFlag = true
+                plot && plot.stop()
+                drawFlag = false
+                this.startDrawFlag = false
+            }
+            this.startDrawFlag = true
+
             if (type == 'polyline') {
                 this.inputpopup = true
                 this.drawType = 1
@@ -313,44 +372,34 @@
                 this.inputpopup = false
                 this.drawType = 2
             }
+
             plot && plot.draw(type, overlay => {
+                if (drawFlag) return
+
                 if (overlay) {
+                    drawPlotData = overlay
+                    drawPlotData.customType = type
+                    that.range = 100
                     drawPlotLayers.addOverlay(overlay)
-                    plot.edit(overlay)
-                    if (overlay) {
-                        drawPlotLayers.addOverlay(overlay)
-                        plot.edit(overlay, (e) => {
-                            this.drawDialogVisible = true
-                            this.range = 100
-                            this.drawPlotData = overlay
-                            document.oncontextmenu = function () {
-                                return false
-                            }
-                            this.getRegionList(type, overlay)
-                        })
-                    }
+
+                    setTimeout(() => {
+                        that.drawDialogVisible = true
+                    }, 100)
                 }
-            }, { material: global.DC.Color.RED })
+            }, { material: global.DC.Color.RED.withAlpha(0.5) })
         },
 
         removeDrawLayer () {
             this.inputpopup = false
-            this.monitoringList = this.monitoringSaveList
+            plot.stop()
+
             if (drawPlotLayers != null) {
                 drawPlotLayers.clear()
             }
-            this.drawPlotData = []
-            this.$EventBus.$emit('mapRemoveLayer', {
-                layerName: 'monitoringLayers',
-                type: 'VectorLayer'
-            })
-        },
 
-        // 修改范围
-        setRegion (range) {
-            graphicLayer.addPolyLineGon(range, (lastEventData) => {
-                // this.getRegionList('polyline', JSON.stringify(lastEventData))
-            })
+            drawPlotData = null
+
+            this.getEquipmentAll({ type: 1, deptid: this.userInfo.dept_id })
         },
 
         // 大小重置
@@ -358,147 +407,102 @@
             this.boxShow = val
         },
 
-        changeRange () {
-            this.setRegion(this.range)
+        searchDraw () {
+            this.searchLazyFlag = false
+
+            this.searchValue = ''
+
+            this.drawDialogVisible = false
+
+            this.loading()
+
+            const color = this.chooseRangeColor + ',' + this.choosePlotColorAlpha
+
+            let r = parseInt(color.slice(1, 3), 16)
+            let g = parseInt(color.slice(3, 5), 16)
+            let b = parseInt(color.slice(5, 7), 16)
+            let a = Math.floor(Number(color.split(',')[1]) * 2.55) ? Math.floor(Number(color.split(',')[1]) * 2.55) : 255
+
+            drawPlotData.setStyle({
+                material: global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
+            })
+
+            this.$EventBus.$emit('mapClearLayer', {
+                layerName: 'treeValAllLayer',
+                type: 'VectorLayer'
+            })
+
+            this.getRegionList(drawPlotData)
         },
 
-        closeRangeInput () {
-            this.inputpopup = false
-        },
-
-        getRegionList (type, data) {
+        getRegionList ({ customType, positions }) {
             let positionStr = ''
-            if (type == 'polyline') {
-                data._positions.forEach(item => {
-                    positionStr = positionStr + item._lng + ',' + item._lat + ';'
+
+            const color = this.chooseRangeColor + ',' + this.choosePlotColorAlpha
+
+            let r = parseInt(color.slice(1, 3), 16)
+            let g = parseInt(color.slice(3, 5), 16)
+            let b = parseInt(color.slice(5, 7), 16)
+            let a = Math.floor(Number(color.split(',')[1]) * 2.55) ? Math.floor(Number(color.split(',')[1]) * 2.55) : 255
+
+            if (customType == 'polyline') {
+                positions.forEach(item => {
+                    positionStr += `${item.lng},${item.lat};`
                 })
-                let coords = global.DC.GeoTools.polylineBuffer(positionStr, 100)
+                let coords = global.DC.GeoTools.polylineBuffer(positionStr, this.range)
                 let polygon = new global.DC.Polygon(coords)
-                let position = ''
-                polygon._positions.forEach(item => {
-                    position += item._lng + ',' + item._lat + ';'
+
+                polygon.setStyle({
+                    material: global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, a)
                 })
-                position += polygon._positions[0]._lng + ',' + polygon._positions[0]._lat + ';'
+                drawPlotLayers.addOverlay(polygon)
+
+                let position = ''
+
+                polygon.positions.forEach(item => {
+                    position += `${item.lng},${item.lat};`
+                })
+
+                position += polygon.positions[0].lng + ',' + polygon.positions[0].lat + ';'
                 positionStr = position
             } else {
-                data._positions.forEach(item => {
-                    positionStr = positionStr + item._lng + ',' + item._lat + ';'
+                positions.forEach(item => {
+                    positionStr += `${item.lng},${item.lat};`
                 })
-                positionStr = positionStr + data._positions[0]._lng + ',' + data._positions[0]._lat + ';'
+                positionStr = positionStr + positions[0].lng + ',' + positions[0].lat + ';'
             }
+
+            this.searchTreeData = []
+
             getRegionList({
                 page: 1,
                 count: 20,
                 range: positionStr
             }).then(res => {
-                this.monitoringList = res.data.data.list
+                this.searchTreeData = res.data.data
 
-                this.$EventBus.$emit('mapRemoveLayer', {
-                    layerName: 'monitoringLayers',
-                    type: 'VectorLayer'
+                res.data.data.length && res.data.data.forEach(item => {
+                    this.$EventBus.$emit('layerPointAdd', {
+                        layerName: 'treeValAllLayer',
+                        type: "billboard",
+                        layerType: 'ClusterLayer',
+                        params: {
+                            ...item,
+                            text: item.name,
+                            lng: item.longitude,
+                            lat: item.latitude,
+                            url: item.status == 1 ? '/img/icon/video.png' : '/img/icon/video-off.png',
+                            channelId: item.channelId,
+                            status: item.status,
+                            disableDepthTestDistance: Number.POSITIVE_INFINITY
+                        },
+                        incident: this.siteClick,
+                        // mouseOverIncident: this.pointMouseOver,
+                        // mouseOutIncident: this.pointMouseOut,
+                    })
                 })
 
-                this.initMonitoringIcon()
-            })
-        },
-
-        /**
-         * @description: 加载面调用接口返回的点数据
-         * @return {*}
-         */
-        initMonitoringIcon () {
-            this.monitoringList.forEach(item => {
-                this.$EventBus.$emit('layerPointAdd', {
-                    layerName: 'monitoringLayers',
-                    type: "billboard",
-                    params: {
-                        name: item.name,
-                        lng: item.longitude,
-                        lat: item.latitude,
-                        alt: 1,
-                        url: '/img/icon/video.png',
-                        deviceId: item.deviceId,
-                        channelId: item.channelId
-                    },
-                    incident: this.siteClick
-                })
-            })
-        },
-
-        // 保存绘制的线面
-        saveDrawInfo () {
-            if (this.drawName == '') {
-                this.$message({
-                    message: '请输入名称',
-                    type: 'error'
-                })
-            } else {
-                let drawPositionStr = ''
-                let extent = 0
-                let width = 0
-
-                if (this.drawType == 1) {
-                    // 获取线坐标
-                    this.drawPlotData._positions.forEach(item => {
-                        drawPositionStr += item._lng + ' ' + item._lat + ','
-                    })
-                    drawPositionStr = drawPositionStr.slice(0, drawPositionStr.length - 1)
-                    // 求线长度
-                    let linePosition = []
-                    this.drawPlotData._positions.forEach(item => {
-                        linePosition.push([item._lng, item._lat])
-                    })
-                    let line = this.$turf.lineString(linePosition)
-                    let length = this.$turf.length(line, { units: 'kilometers' })
-                    extent = length.toFixed(3)
-                } else {
-                    // 获取面坐标
-                    this.drawPlotData._positions.forEach(item => {
-                        drawPositionStr += item.lng + ' ' + item.lat + ','
-                    })
-                    drawPositionStr += this.drawPlotData._positions[0]._lng + ' ' + this.drawPlotData._positions[0]._lat
-                    // 求面面积
-                    let polygonPosition = []
-                    this.drawPlotData._positions.forEach(item => {
-                        polygonPosition.push([item._lng, item._lat])
-                    })
-                    polygonPosition.push([this.drawPlotData._positions[0]._lng, this.drawPlotData._positions[0]._lat])
-                    let polygon = this.$turf.polygon([polygonPosition])
-                    let area = this.$turf.area(polygon)
-                    extent = area.toFixed(3)
-                }
-                this.insertRegionSaveList({ type: this.drawType, positions: drawPositionStr, name: this.drawName, extent: extent, width: this.range, color: this.chooseRangeColor })
-                this.drawDialogVisible = false
-                this.drawName = ''
-                if (drawPlotLayers != null) {
-                    drawPlotLayers.clear()
-                }
-                this.$EventBus.$emit('mapRemoveLayer', {
-                    layerName: 'monitoringLayers',
-                    type: 'VectorLayer'
-                })
-            }
-        },
-
-        // 取消绘制线面
-        cancelSaveDrawInfo () {
-            this.drawDialogBeforeClose()
-        },
-
-        // type线面类型, positions坐标, name名称, width线宽度, extent线长度或面面积
-        insertRegionSaveList (parmas) {
-            insertRegionSaveList(parmas).then(res => {
-                if (res.data.success) {
-                    this.$message({
-                        message: '保存成功',
-                        type: 'warning'
-                    })
-                } else {
-                    this.$message({
-                        message: '保存失败'
-                    })
-                }
-
+                this.closeLoading()
             })
         },
 
@@ -518,24 +522,31 @@
                 sourceId = node.data.sourceId
             }
 
+            console.log(node, 56)
+
+            const status = node.label == "在线" ? { status: 1 } : node.label == "离线" ? { status: 0 } : {}
+
             await getTreeDevices({
                 deviceId: equipmentNum,
                 parentId,
                 deptId: this.userInfo.dept_id,
                 type,
                 sourceId,
+                ...status
             }).then(res => {
                 data = res.data.data
 
-                data.forEach(item => {
-                    item.leaf = !item.parent
+                if (data.length) {
+                    data.forEach(item => {
+                        item.leaf = !item.parent
 
-                    if (!item.longitude && !item.latitude && item.leaf) {
-                        item.disabled = true
-                    }
-                })
+                        if (!item.longitude && !item.latitude && item.leaf) {
+                            item.disabled = true
+                        }
+                    })
 
-                data[0].leaf == false && node.level < 2 && this.defaultExpandedKeys.push(data[0].id)
+                    data[0].leaf == false && node.level < 2 && this.defaultExpandedKeys.push(data[0].id)
+                }
             })
 
             return resolve(data)
@@ -562,59 +573,23 @@
                 siteGd: 600,
             })
 
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'treeValLayer',
-                type: 'VectorLayer'
+            this.$store.commit('SET_VIDEOLISTPOPUP', true)
+
+            this.$store.commit('SET_VIDEOLISTPOPUPDATA', {
+                ...node
             })
 
-            this.$EventBus.$emit('mapClearLayer', {
-                layerName: 'treeValAllLayer',
-                type: 'VectorLayer'
-            })
-
-            this.$EventBus.$emit('layerPointAdd', {
-                layerName: 'treeValLayer',
-                type: "billboard",
-                params: {
-                    name: node.name,
-                    lng: node.longitude,
-                    lat: node.latitude,
-                    alt: 1,
-                    url: node.status == 1 ? '/img/icon/video.png' : '/img/icon/video-off.png',
-                    channelId: node.id,
-                    status: node.status
-                },
-                incident: this.siteClick,
-                mouseOverIncident: this.pointMouseOver,
-                mouseOutIncident: this.pointMouseOut,
-                // pointMouseMove: this.pointMouseMove
-            })
-
-            getTreeDevicesNearby({ longitude, latitude, mileage: 1 }).then(res => {
-                res.data.data.forEach(item => {
-                    if (item.longitude && item.latitude && item.channelId != node.id) {
-                        this.$EventBus.$emit('layerPointAdd', {
-                            layerName: 'treeValAllLayer',
-                            type: "billboard",
-                            layerType: 'ClusterLayer',
-                            params: {
-                                ...item,
-                                text: item.name,
-                                lng: item.longitude,
-                                lat: item.latitude,
-                                alt: 1,
-                                url: item.status == 1 ? '/img/icon/video.png' : '/img/icon/video-off.png',
-                                channelId: item.channelId,
-                                status: item.status
-                            },
-                            incident: this.siteClick,
-                            mouseOverIncident: this.pointMouseOver,
-                            mouseOutIncident: this.pointMouseOut,
-                            // pointMouseMove: this.pointMouseMove
-                        })
-                    }
-                })
-
+            var popup = new global.DC.DivForms(global.viewer, {
+                domId: 'videoListPopup',
+                position: [
+                    global.DC.Transform.transformWGS84ToCartesian(
+                        new global.DC.Position(
+                            Number(node.longitude),
+                            Number(node.latitude),
+                            0
+                        )
+                    )
+                ]
             })
 
         },
@@ -657,30 +632,75 @@
         pointMouseOut (e) {
             this.$store.commit('SET_VIDEOLISTPOPUP', false)
         },
+
+        // 获取设备列表
+        getEquipmentAll (params, layerName) {
+            this.loading()
+
+            this.$EventBus.$emit('mapClearLayer', {
+                layerName: 'treeValAllLayer',
+                type: 'VectorLayer'
+            })
+
+            initMapPosition()
+
+            getEquipmentAll({ ...params, deptId: this.userInfo.dept_id }).then(res => {
+                if (params.type == 1 && res.data.data) {
+                    res.data.data.forEach(item => {
+                        if (item.longitude && item.latitude) {
+                            this.$EventBus.$emit('layerPointAdd', {
+                                layerName: 'treeValAllLayer',
+                                type: "billboard",
+                                layerType: 'ClusterLayer',
+                                params: {
+                                    ...item,
+                                    text: item.name,
+                                    lng: item.longitude,
+                                    lat: item.latitude,
+                                    url: item.status == 1 ? '/img/icon/video.png' : '/img/icon/video-off.png',
+                                    channelId: item.channelId,
+                                    status: item.status,
+                                    disableDepthTestDistance: Number.POSITIVE_INFINITY
+                                },
+                                incident: this.siteClick,
+                                // mouseOverIncident: this.pointMouseOver,
+                                // mouseOutIncident: this.pointMouseOut,
+                            })
+                        }
+                    })
+                }
+
+                this.closeLoading()
+            })
+        },
+
+        loading () {
+            loading = this.$loading({
+                lock: true,
+                text: '拼命加载中',
+                spinner: 'el-icon-loading',
+                background: 'rgba(0, 0, 0, 0.2)'
+            })
+        },
+
+        closeLoading () {
+            if (loading != null) {
+                setTimeout(() => {
+                    loading.close()
+                }, 1000)
+            }
+        },
+
     },
 
     destroyed () {
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'monitoringLayers',
-            type: 'VectorLayer'
-        })
-
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'searchLayer',
-            type: 'VectorLayer'
-        })
-
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'treeValLayer',
-            type: 'VectorLayer'
-        })
+        this.$store.commit('SET_VIDEOLISTPOPUP', false)
+        loading.close()
 
         this.$EventBus.$emit('mapRemoveLayer', {
             layerName: 'treeValAllLayer',
             type: 'VectorLayer'
         })
-
-        // graphicLayer.destroy()
 
         this.$parent.$parent.$parent.resize('0px')
 
diff --git "a/src/views/video/region - \345\211\257\346\234\254.vue" "b/src/views/video/region - \345\211\257\346\234\254.vue"
deleted file mode 100644
index 8ca51d3..0000000
--- "a/src/views/video/region - \345\211\257\346\234\254.vue"
+++ /dev/null
@@ -1,1315 +0,0 @@
-<!--
- * @Author: shuishen 1109946754@qq.com
- * @Date: 2022-08-18 16:18:17
- * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-03-02 16:11:51
- * @FilePath: \srs-police-affairs\src\views\video\region.vue
- * @Description: 辖区管理
- * 
- * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
--->
-
-<template>
-    <div class="region container">
-        <div class="region-left-container">
-            <div v-show="boxShow" class="container-content">
-                <div class="search-box">
-                    范围名称:
-                    <input v-model="searchValue" @input="searchChange" type="text" placeholder="请输入搜索条件" />
-                    <button @click="searchClick" class="el-icon-search"></button>
-                </div>
-
-                <div v-show="true" class="search-val-box">
-                    <div @click="searchVlaClick(item)" v-for="(item, index) in searchArray" :key="index">{{ item.name }}
-                    </div>
-            </div>
-
-            <div class="list-show">
-                    <div class="car-list">
-                        <div class="list-box">
-                            <el-table :data="saveRangeList" style="width: 100%"
-                                :header-cell-style="{ 'text-align': 'center', 'background-color': 'rgba(9, 40, 199, 0.5)', 'borderColor': '#324e75' }"
-                                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" @cell-click="rowClick">
-                                <el-table-column prop="name" label="范围名称" min-width="50%"></el-table-column>
-                                <el-table-column prop="extent" label="长度km/面积㎡" min-width="50%">
-                                    <!-- <template slot-scope="scope">
-                                            <span>{{ scope.row.extent }}</span>
-                                            <span>千米</span>
-                                        </template>-->
-                                </el-table-column>
-                                <el-table-column prop="id" label="操作" min-width="50%">
-                                    <template slot-scope="scope">
-                                        <el-button @click.stop="flytoRange(scope.row)" type="text" size="small" title="定位">
-                                            <i class="el-icon-location"></i>
-                                        </el-button>
-                                        <el-button @click.stop="deleteRegionSaveList(scope.row.id)" type="text" size="small"
-                                            title="删除">
-                                            <i class="el-icon-delete"></i>
-                                        </el-button>
-                                    </template>
-                                </el-table-column>
-                            </el-table>
-                        </div>
-                        <div class="pages all-pagination-sty">
-                            <el-pagination background layout="prev, pager, next" :page-size="pagesize"
-                                :page-count="pagesCount" :current-page="currentPage"
-                                @current-change="handleCurrentChange"></el-pagination>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="item video1" v-show="isShowVideo.video1">
-            <div class="select" v-show="isShowSelect.video1">
-                <el-select size="small" v-model="monitor.type1" @change="((val) => { navClick(val, 1) })" placeholder="请选择"
-                    ref="videoSelect1">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video1 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video1">
-                <video id="videoElement1" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video1">设备离线中…</div>
-        </div>
-        <div class="item video2" v-show="isShowVideo.video2">
-            <div class="select" v-show="isShowSelect.video2">
-                <el-select size="small" v-model="monitor.type2" @change="((val) => { navClick(val, 2) })" placeholder="请选择"
-                    ref="videoSelect2">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video2 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video2">
-                <video id="videoElement2" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video2">设备离线中…</div>
-        </div>
-        <div class="item video3" v-show="isShowVideo.video3">
-            <div class="select" v-show="isShowSelect.video3">
-                <el-select size="small" v-model="monitor.type3" @change="((val) => { navClick(val, 3) })" placeholder="请选择"
-                    ref="videoSelect3">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video3 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video3">
-                <video id="videoElement3" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video3">设备离线中…</div>
-        </div>
-        <div class="item video4" v-show="isShowVideo.video4">
-            <div class="select" v-show="isShowSelect.video4">
-                <el-select size="small" v-model="monitor.type4" @change="((val) => { navClick(val, 4) })" placeholder="请选择"
-                    ref="videoSelect4">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video4 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video4">
-                <video id="videoElement4" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video4">设备离线中…</div>
-        </div>
-        <div class="item video5" v-show="isShowVideo.video5">
-            <div class="select" v-show="isShowSelect.video5">
-                <el-select size="small" v-model="monitor.type5" @change="((val) => { navClick(val, 5) })" placeholder="请选择"
-                    ref="videoSelect5">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video5 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video5">
-                <video id="videoElement5" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video5">设备离线中…</div>
-        </div>
-        <div class="item video6" v-show="isShowVideo.video6">
-            <div class="select" v-show="isShowSelect.video6">
-                <el-select size="small" v-model="monitor.type6" @change="((val) => { navClick(val, 6) })" placeholder="请选择"
-                    ref="videoSelect6">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video6 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video6">
-                <video id="videoElement6" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video6">设备离线中…</div>
-        </div>
-        <div class="item video7" v-show="isShowVideo.video7">
-            <div class="select" v-show="isShowSelect.video7">
-                <el-select size="small" v-model="monitor.type7" v-show="isShowSelect.video7"
-                    @change="((val) => { navClick(val, 7) })" placeholder="请选择" ref="videoSelect7">
-                    <el-option v-show="isShowSelect.video7" v-for="item in monitorOption" :key="item.value"
-                        :label="item.label" :value="item.value" class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video7 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video7">
-                <video id="videoElement7" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video7">设备离线中…</div>
-        </div>
-        <div class="item video8" v-show="isShowVideo.video8">
-            <div class="select" v-show="isShowSelect.video8">
-                <el-select size="small" v-model="monitor.type8" @change="((val) => { navClick(val, 8) })" placeholder="请选择"
-                    ref="videoSelect8">
-                    <el-option v-for="item in monitorOption" :key="item.value" :label="item.label" :value="item.value"
-                        class="video-option-css">
-                        <div class="video-status" :style="{ background: (item.item.status == 0 ? '#adadad' : '#4ccc7d') }">
-                        </div>
-                        {{ item.label }}
-                    </el-option>
-                </el-select>
-                <div class="close" @click="isShowVideo.video8 = false">
-                    <i class="el-icon-close"></i>
-                </div>
-            </div>
-            <div class="video" v-show="!isShowOutline.video8">
-                <video id="videoElement8" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-            </div>
-            <div class="outline" v-show="isShowOutline.video8">设备离线中…</div>
-        </div>
-        <!-- <div class="deleteVideo" v-show="isShowVideo.video1" @click="deleteVideo">关闭</div> -->
-
-        <el-dialog :title="dialogTitle" :modal="false" :visible.sync="dialogVisible" :before-close="dialogBeforeClose"
-            :close-on-click-modal="true" class="car-video-box">
-            <video id="videoElement" autoplay controls width="100%" height="100%" style="object-fit: fill"></video>
-        </el-dialog>
-
-        <el-dialog title="修改范围" :modal="false" :visible.sync="editRangeVisible" :close-on-click-modal="true"
-            class="edit-range-box">
-            <div class="line">
-                <div class="value-name-box">选择范围颜色:</div>
-                <div class="pick-color-box">
-                    <el-color-picker v-model="chooseRangeColor" :predefine="predefineColors" size="small">
-                    </el-color-picker>
-                </div>
-            </div>
-            <div v-show="!isLineRange" class="placeholder"></div>
-            <div v-show="isLineRange">
-                <div class="value-name-box">设置范围宽度:</div>
-                <div class="input-width-box">
-                    <input type="text" v-model="lineWidth" placeholder="请输入..." />
-                </div>
-                <div class="units">米</div>
-            </div>
-            <div>
-                <el-button @click="saveRangeInfo">保存</el-button>
-                <el-button @click="editRange">编辑</el-button>
-                <el-button @click="deleteRange">删除</el-button>
-                <el-button @click="editRangeVisible = false">取消</el-button>
-            </div>
-        </el-dialog>
-    </div>
-</template>
-
-<script>
-import EntityDraw from "@/utils/EntityDraw.js"
-import { listQuery, accurateSearch } from "@/utils/search.js"
-import { getVideoList, getDevices, getRegionSaveList, deleteRegionSaveList, getRegionList, updataRegionSaveList } from '@/api/video/index.js'
-import flvjs from 'flv.js'
-
-// let graphicLayer = null
-let rangeLayer = null
-let rangeLineLayer = null
-let plot = undefined
-
-export default {
-    inject: ['userInfo'],
-
-    data () {
-        return {
-            currentPage: 1,
-            pagesize: 13,
-            pagesCount: 1,
-            monitoringList: [],
-            dialogTitle: '',
-            dialogVisible: false,
-            searchValue: '',
-            searchArray: [],
-            searchValBoxShow: false,
-            boxShow: true,
-            flvPlayer: null,
-            flvListPlayer: {
-                flvPlayer1: null,
-                flvPlayer2: null,
-                flvPlayer3: null,
-                flvPlayer4: null,
-                flvPlayer5: null,
-                flvPlayer6: null,
-                flvPlayer7: null,
-                flvPlayer8: null,
-            },
-            saveRangeList: [],
-            monitorOption: [],
-            monitor: {
-                type1: '',
-                type2: '',
-                type3: '',
-                type4: '',
-                type5: '',
-                type6: '',
-                type7: '',
-                type8: '',
-            },
-            isShowSelect: {
-                video1: true,
-                video2: true,
-                video3: true,
-                video4: true,
-                video5: true,
-                video6: true,
-                video7: true,
-                video8: true,
-            },
-            isShowVideo: {
-                video1: false,
-                video2: false,
-                video3: false,
-                video4: false,
-                video5: false,
-                video6: false,
-                video7: false,
-                video8: false,
-            },
-            saveRangeID: '',
-            valChoosed: '',
-            argsChoosed: '',
-            isShowOutline: {
-                video1: false,
-                video2: false,
-                video3: false,
-                video4: false,
-                video5: false,
-                video6: false,
-                video7: false,
-                video8: false,
-            },
-            chooseRangeColor: '#FF0000',
-            editRangeVisible: false,
-            lineWidth: '',
-            rangeOverlayData: {},
-            isLineRange: false,
-            isEndDrawPlot: true,
-            predefineColors: [
-                '#ff4500',
-                '#ff8c00',
-                '#ffd700',
-                '#90ee90',
-                '#00ced1',
-                '#1e90ff',
-                '#c71585',
-                'rgba(255, 69, 0, )',
-                'rgb(255, 120, 0)',
-                'hsv(51, 100, 98)',
-                'hsva(120, 40, 94)',
-                'hsl(181, 100%, 37%)',
-                'hsla(209, 100%, 56%)',
-                '#c7158577'
-            ],
-        }
-    },
-
-    created () {
-        // this.getVideoList(1, 100)
-        this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
-
-    },
-
-    mounted () {
-        this.$parent.$parent.$parent.resize('400px', true)
-        // graphicLayer = new EntityDraw()
-        this.$nextTick(() => {
-            if (rangeLayer == null) {
-                rangeLayer = new global.DC.VectorLayer('rangeLayer')
-                global.viewer.addLayer(rangeLayer)
-                plot = new global.DC.Plot(global.viewer)
-            }
-            if (rangeLineLayer == null) {
-                rangeLineLayer = new global.DC.VectorLayer('rangeLineLayer')
-                global.viewer.addLayer(rangeLineLayer)
-            }
-        })
-
-    },
-
-    methods: {
-        handleCurrentChange: function (currentPage) {
-            this.currentPage = currentPage
-            this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
-        },
-
-        // getVideoList (current, size) {
-        //     getVideoList(current, size).then(res => {
-        //         this.monitoringList = res.data.data.list
-        //         this.initMonitoringIcon()
-        //         this.getMonitorOption()
-        //     })
-        // },
-
-        // getMonitorOption () {
-        //     this.monitorOption = []
-        //     this.monitoringList.forEach((item, index) => {
-        //         let flvUrl = ''
-        //         this.getDevices(item.deviceId).then(res => {
-        //             flvUrl = res
-        //             this.monitorOption.push({ value: `${index}`, label: `${item.name}`, flvUrl: `${flvUrl}` })
-        //             if (index == this.monitoringList.length - 1) {
-        //                 if (this.monitoringList.length < 6) {
-        //                     this.monitor.type1 = this.monitorOption[0].label
-        //                     this.monitor.type2 = this.monitorOption[0].label
-        //                     this.monitor.type3 = this.monitorOption[0].label
-        //                     this.monitor.type4 = this.monitorOption[0].label
-        //                     this.monitor.type5 = this.monitorOption[0].label
-        //                     this.monitor.type6 = this.monitorOption[0].label
-        //                     for (let i = 0; i < 6; i++) {
-        //                         this.playVideoList(`flvPlayer${i + 1}`, `${this.monitorOption[0].flvUrl}`, `videoElement${i + 1}`)
-        //                     }
-
-        //                 } else {
-        //                     this.monitor.type1 = this.monitorOption[0].label
-        //                     this.monitor.type2 = this.monitorOption[1].label
-        //                     this.monitor.type3 = this.monitorOption[2].label
-        //                     this.monitor.type4 = this.monitorOption[3].label
-        //                     this.monitor.type5 = this.monitorOption[4].label
-        //                     this.monitor.type6 = this.monitorOption[5].label
-        //                     for (let i = 0; i < 6; i++) {
-        //                         this.playVideoList(`flvPlayer${i + 1}`, `${this.monitorOption[i].flvUrl}`, `videoElement${i + 1}`)
-        //                     }
-        //                 }
-        //             }
-        //         })
-        //     })
-        // },
-
-        playVideoList (flvItemPlayer, flvUrl, videoEleName) {
-            if (this.flvListPlayer[flvItemPlayer] != null) {
-                this.flvListPlayer[flvItemPlayer].pause()
-                this.flvListPlayer[flvItemPlayer].unload()
-                this.flvListPlayer[flvItemPlayer].detachMediaElement()
-                this.flvListPlayer[flvItemPlayer].destroy()
-                this.flvListPlayer[flvItemPlayer] = null
-            }
-
-            if (flvjs.isSupported() && flvUrl != 'nodata') {
-                let videoElement = document.getElementById(videoEleName)
-                this.flvListPlayer[flvItemPlayer] = flvjs.createPlayer({
-                    type: 'flv',
-                    isLive: true,
-                    hasAudio: false,
-                    url: flvUrl
-                })
-                this.flvListPlayer[flvItemPlayer].attachMediaElement(videoElement)
-                this.flvListPlayer[flvItemPlayer].load()
-                this.flvListPlayer[flvItemPlayer].play()
-            }
-        },
-
-        navClick (val, args) {
-            if (this.valChoosed == val && this.argsChoosed == args) return
-            this.valChoosed = val
-            this.argsChoosed = args
-
-            this.monitor[`type${args}`] = this.monitorOption[val].item.name
-            if (this.monitorOption[val].item.status == 0) {
-                this.isShowOutline[`video${args}`] = true
-            }
-            this.getDevices(this.monitorOption[val].item.channelId).then(res => {
-
-                this.playVideoList(`flvPlayer${args}`, `${res}`, `videoElement${args}`)
-            })
-        },
-
-        getRegionSaveList (current, size, deptId, name) {
-            getRegionSaveList(current, size, deptId, name).then(res => {
-                this.saveRangeList = res.data.data.records
-                this.pagesCount = res.data.data.pages
-                this.initRangeListLayer()
-            })
-        },
-
-        deleteRegionSaveList (id) {
-            deleteRegionSaveList(id).then(res => {
-                if (res.data.success) {
-                    this.$message({
-                        message: '删除成功',
-                        type: 'warning'
-                    })
-                    this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
-                } else {
-                    this.$message({
-                        message: '删除失败'
-                    })
-                }
-            })
-        },
-
-        flytoRange (data) {
-            this.$EventBus.$emit('flytoLayer', {
-                polygonName: 'polygon' + data.id,
-                duration: 3
-            })
-
-        },
-
-        initRangeListLayer () {
-            this.$EventBus.$emit('mapRemoveLayer', {
-                layerName: 'rangeSaveLayer',
-                type: 'VectorLayer'
-            })
-
-            this.$EventBus.$emit('mapRemoveLayer', {
-                layerName: 'monitoringLayers',
-                type: 'VectorLayer'
-            })
-
-            if (rangeLineLayer != null) {
-                rangeLineLayer.clear()
-            }
-
-            this.saveRangeList.forEach(item => {
-                console.log(item, 656565656)
-                let positionStr = ''
-                if (item.type == 1) {
-                    let linePositionStr = ''
-                    linePositionStr = item.positions.replace(/,/g, ';')
-                    linePositionStr = linePositionStr.replace(/ /g, ',')
-                    linePositionStr += ';'
-                    let coords = global.DC.GeoTools.polylineBuffer(linePositionStr, 100)
-                    let polygon = new global.DC.Polygon(coords)
-                    let position = ''
-                    polygon._positions.forEach(item => {
-                        position += item._lng + ',' + item._lat + ';'
-                    })
-                    positionStr = position
-                } else {
-                    positionStr = this.convertPositionDate(item.positions, 'polygon')
-                }
-                let color = ''
-                if (item.color == '') {
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 150)
-                } else {
-                    let r = parseInt(item.color.slice(1, 3), 16)
-                    let g = parseInt(item.color.slice(3, 5), 16)
-                    let b = parseInt(item.color.slice(5, 7), 16)
-                    color = global.DC.Namespace.Cesium.Color.fromBytes(r, g, b, 150)
-                }
-                this.$EventBus.$emit('layerPolygonAdd', {
-                    layerName: 'rangeSaveLayer',
-                    positions: positionStr,
-                    material: color,
-                    polygonName: 'polygon' + item.id,
-                    params: item,
-                    incident: this.overlayTypeClick
-                })
-            })
-
-        },
-
-        // 点击线面
-        overlayTypeClick (e) {
-            if (this.isEndDrawPlot == false) {
-                this.$message({
-                    message: '请先完成编辑',
-                    type: 'error'
-                })
-            } else {
-                this.rangeOverlayData = e.overlay
-                this.lineWidth = e.overlay.attrParams.width != -1 ? e.overlay.attrParams.width : 100
-                this.chooseRangeColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color : '#FF0000'
-                if (e.overlay.attrParams.type == 1) {
-                    this.isLineRange = true
-                } else {
-                    this.isLineRange = false
-                }
-                this.editRangeVisible = true
-            }
-        },
-
-        // 保存范围修改
-        saveRangeInfo () {
-            this.updataRegionSaveList({ id: this.rangeOverlayData.attrParams.id, color: this.chooseRangeColor, width: this.lineWidth })
-            this.editRangeVisible = false
-        },
-
-        // 更新范围信息
-        updataRegionSaveList (params) {
-            this.isEndDrawPlot = true
-            updataRegionSaveList(params).then(res => {
-                if (res.data.success) {
-                    this.$message({
-                        message: '保存成功',
-                        type: 'warning'
-                    })
-                } else {
-                    this.$message({
-                        message: '保存失败'
-                    })
-                }
-                this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
-                this.editRangeVisible = false
-            })
-        },
-
-        // 删除线面
-        deleteRange () {
-            deleteRegionSaveList(this.rangeOverlayData.attrParams.id).then(res => {
-                if (res.data.success) {
-                    this.$message({
-                        message: '删除成功',
-                        type: 'warning'
-                    })
-                    this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
-                } else {
-                    this.$message({
-                        message: '删除失败'
-                    })
-                }
-                this.editRangeVisible = false
-            })
-        },
-
-        // 编辑线面
-        editRange () {
-            this.editRangeVisible = false
-            this.isEndDrawPlot = false
-            let overlayData = this.rangeOverlayData
-            if (this.rangeOverlayData.attrParams.type == 1) {
-                this.$EventBus.$emit('mapRemovePolygonLayer', {
-                    layerName: 'rangeSaveLayer',
-                    polygonName: 'polygon' + this.rangeOverlayData.attrParams.id,
-                    type: 'VectorLayer'
-                })
-                overlayData = this.rangeOverlayData.attrParams.lineObj
-            }
-            plot.edit(overlayData, (e) => {
-                let position = ''
-                overlayData._positions.forEach(item => {
-                    position += item._lng + ' ' + item._lat + ','
-                })
-                position = position.slice(0, position.length - 1)
-                rangeLayer.addOverlay(overlayData)
-                this.updataRegionSaveList({ id: this.rangeOverlayData.attrParams.id, color: this.chooseRangeColor, width: this.lineWidth, positions: position })
-            })
-        },
-
-        convertPositionDate (data, type) {
-            let positionStr = data
-            if (type == 'polygon') {
-                positionStr = positionStr.replace(/,/g, ";")
-                positionStr = positionStr.replace(/ /g, ",")
-                return positionStr
-            } else {
-                positionStr = data.slice(11, positionStr.length - 1)
-                let positionArr = positionStr.split(",")
-                let positionNewStr = ''
-                positionArr.forEach(item => {
-                    let lng = item.split(' ')[0]
-                    let lat = item.split(' ')[1]
-                    positionNewStr += lng + ',' + lat + ';'
-                })
-                return positionNewStr
-            }
-        },
-
-        async getDevices (channelId) {
-            let flvAddress = ''
-            await getDevices(channelId).then(res => {
-                if ('data' in res.data) {
-                    flvAddress = res.data.data.flv
-                } else {
-                    flvAddress = 'nodata'
-                }
-            })
-            return flvAddress
-        },
-
-        initMonitoringIcon () {
-            this.monitoringList.forEach((item, index) => {
-                this.$EventBus.$emit('layerPointAdd', {
-                    layerName: 'monitoringLayers',
-                    type: "billboard",
-                    params: {
-                        name: item.name,
-                        lng: item.longitude,
-                        lat: item.latitude,
-                        alt: 1,
-                        url: '/img/icon/video.png',
-                        // deviceId: item.deviceId
-                    },
-                    // incident: this.siteClick
-                })
-
-            })
-        },
-
-        rowClick (row) {
-            if (this.saveRangeID == row.id) {
-                let noShowVideo = {
-                    video1: false,
-                    video2: false,
-                    video3: false,
-                    video4: false,
-                    video5: false,
-                    video6: false,
-                    video7: false,
-                    video8: false
-                }
-                if (JSON.stringify(noShowVideo) != JSON.stringify(this.isShowVideo)) {
-                    this.monitorOption.forEach((item, index) => {
-                        if (index < 8) {
-                            this.isShowVideo[`video${index + 1}`] = false
-                        }
-                    })
-                } else {
-                    this.monitorOption.forEach((item, index) => {
-                        if (index < 8) {
-                            this.isShowVideo[`video${index + 1}`] = true
-                        }
-                    })
-                }
-                this.$EventBus.$emit('mapRemoveLayer', {
-                    layerName: 'monitoringLayers',
-                    type: 'VectorLayer'
-                })
-            } else {
-                this.isShowVideo = {
-                    video1: false,
-                    video2: false,
-                    video3: false,
-                    video4: false,
-                    video5: false,
-                    video6: false,
-                    video7: false,
-                    video8: false
-                }
-                this.monitor = {
-                    type1: '',
-                    type2: '',
-                    type3: '',
-                    type4: '',
-                    type5: '',
-                    type6: '',
-                    type7: '',
-                    type8: ''
-                }
-                if (row.type == 2) {
-                    getRegionList({
-                        page: 1,
-                        count: 20,
-                        id: row.id
-                    }).then(res => {
-                        let monitorData = res.data.data.list
-
-                        this.monitoringList = res.data.data.list
-                        this.$EventBus.$emit('mapRemoveLayer', {
-                            layerName: 'monitoringLayers',
-                            type: 'VectorLayer'
-                        })
-
-                        this.initMonitoringIcon()
-
-                        this.monitorOption = []
-
-                        monitorData.forEach((item, index) => {
-                            this.monitorOption.push({ value: index, label: item.name, item })
-
-                            if (index < 8) {
-                                const ind = index + 1
-                                this.isShowVideo[`video${ind}`] = true
-                                this.monitor[`type${ind}`] = item.name
-                                if (item.status == 0) {
-                                    this.isShowOutline[`video${ind}`] = true
-                                }
-
-                                this.getDevices(item.channelId).then(res => {
-                                    this.playVideoList(`flvPlayer${ind}`, `${res}`, `videoElement${ind}`)
-                                })
-                            }
-                        })
-                    })
-                } else {
-                    let positionStr = row.positions.replace(/,/g, ';')
-                    positionStr = positionStr.replace(/ /g, ',')
-                    positionStr += ';'
-                    let coords = global.DC.GeoTools.polylineBuffer(positionStr, row.width)
-                    let polygon = new global.DC.Polygon(coords)
-                    let position = ''
-                    polygon._positions.forEach(item => {
-                        position += item._lng + ',' + item._lat + ';'
-                    })
-                    getRegionList({
-                        page: 1,
-                        count: 20,
-                        range: position
-                    }).then(res => {
-                        let monitorData = res.data.data.list
-
-                        this.monitoringList = res.data.data.list
-                        this.$EventBus.$emit('mapRemoveLayer', {
-                            layerName: 'monitoringLayers',
-                            type: 'VectorLayer'
-                        })
-
-                        this.initMonitoringIcon()
-
-                        this.monitorOption = []
-
-                        monitorData.forEach((item, index) => {
-                            this.monitorOption.push({ value: index, label: item.name, item })
-
-                            if (index < 8) {
-                                const ind = index + 1
-                                this.isShowVideo[`video${ind}`] = true
-                                this.monitor[`type${ind}`] = item.name
-                                if (item.status == 0) {
-                                    this.isShowOutline[`video${ind}`] = true
-                                }
-
-                                this.getDevices(item.channelId).then(res => {
-                                    this.playVideoList(`flvPlayer${ind}`, `${res}`, `videoElement${ind}`)
-                                })
-                            }
-                        })
-                    })
-                }
-
-            }
-            this.saveRangeID = row.id
-        },
-
-        // async siteClick (e) {
-        //     if (this.flvPlayer != null) {
-        //         this.flvPlayer.pause()
-        //         this.flvPlayer.unload()
-        //         this.flvPlayer.detachMediaElement()
-        //         this.flvPlayer.destroy()
-        //         this.flvPlayer = null
-        //     }
-
-        //     this.dialogTitle = e.overlay.attrParams.name
-        //     this.dialogVisible = true
-        //     let flvUrl = ''
-        //     await this.getDevices(e.overlay.attrParams.deviceId).then(res => {
-        //         flvUrl = res
-        //     })
-        //     if (flvjs.isSupported() && flvUrl != 'nodata') {
-        //         var videoElement = document.getElementById('videoElement')
-        //         this.flvPlayer = flvjs.createPlayer({
-        //             type: 'flv',
-        //             isLive: true,
-        //             hasAudio: false,
-        //             url: flvUrl
-        //         })
-        //         this.flvPlayer.attachMediaElement(videoElement)
-        //         this.flvPlayer.load()
-        //         this.flvPlayer.play()
-        //     }
-        // },
-
-        dialogBeforeClose () {
-            this.dialogVisible = false
-        },
-
-        searchChange () {
-            if (this.searchValue == '') {
-                this.searchValBoxShow = false
-                this.searchArray = []
-                this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
-                this.$message({
-                    message: '请输入搜索内容',
-                    type: 'warning'
-                })
-            } else {
-                this.searchArray = listQuery(this.saveRangeList, this.searchValue, 'name')
-                this.searchValBoxShow = true
-                this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
-            }
-        },
-
-        searchClick () {
-            if (this.searchValue != '') {
-                this.searchValBoxShow = false
-                this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
-            } else {
-                this.$message({
-                    message: '请输入搜索内容',
-                    type: 'warning'
-                })
-            }
-        },
-
-        searchVlaClick (item) {
-            this.searchValBoxShow = false
-            this.searchArray = []
-            // this.monitoringList = [item]
-            this.searchValue = item.name
-            this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id, this.searchValue)
-        },
-
-        // 大小重置
-        boxResize (val) {
-            this.boxShow = val
-            if (!val) {
-                let videoList = document.querySelectorAll('.item')
-                videoList.forEach(item => {
-                    item.classList.add('new-item-width')
-                })
-                document.querySelector('.video1').classList.add('new-video146-left')
-                document.querySelector('.video1 video').load()
-                document.querySelector('.video2').classList.add('new-video235-left')
-                document.querySelector('.video3').classList.add('new-video235-left')
-                document.querySelector('.video4').classList.add('new-video146-left')
-                document.querySelector('.video5').classList.add('new-video235-left')
-                document.querySelector('.video6').classList.add('new-video146-left')
-                document.querySelector('.video7').classList.add('new-video7-left')
-                document.querySelector('.video8').classList.add('new-video8-left')
-            } else {
-                let videoList = document.querySelectorAll('.item')
-                videoList.forEach(item => {
-                    item.classList.remove('new-item-width')
-                })
-                document.querySelector('.video1').classList.remove('new-video146-left')
-                document.querySelector('.video2').classList.remove('new-video235-left')
-                document.querySelector('.video3').classList.remove('new-video235-left')
-                document.querySelector('.video4').classList.remove('new-video146-left')
-                document.querySelector('.video5').classList.remove('new-video235-left')
-                document.querySelector('.video6').classList.remove('new-video146-left')
-                document.querySelector('.video7').classList.remove('new-video7-left')
-                document.querySelector('.video8').classList.remove('new-video8-left')
-            }
-        },
-
-        deleteVideo () {
-            this.isShowVideo = {
-                video1: false,
-                video2: false,
-                video3: false,
-                video4: false,
-                video5: false,
-                video6: false,
-                video7: false,
-                video8: false
-            }
-        },
-
-
-        //#region
-        // enterVideoBox (num) {
-        //     for (let key in this.isShowSelect) {
-        //         this.isShowSelect[key] = false
-        //     }
-        //     if (num == 1) {
-        //         this.$refs.videoSelect1.blur()
-        //     } else if (num == 2) {
-        //         this.$refs.videoSelect2.blur()
-        //     } else if (num == 3) {
-        //         this.$refs.videoSelect3.blur()
-        //     } else if (num == 4) {
-        //         this.$refs.videoSelect4.blur()
-        //     } else if (num == 5) {
-        //         this.$refs.videoSelect5.blur()
-        //     } else if (num == 6) {
-        //         this.$refs.videoSelect6.blur()
-        //     } else if (num == 7) {
-        //         this.$refs.videoSelect7.blur()
-        //     } else if (num == 8) {
-        //         this.$refs.videoSelect8.blur()
-        //     }
-        //     this.isShowSelect[`video${num}`] = true
-        // },
-
-        // leaveVideoBox (num) {
-        //     if (num == 1) {
-        //         this.$refs.videoSelect1.blur()
-        //     } else if (num == 2) {
-        //         this.$refs.videoSelect2.blur()
-        //     } else if (num == 3) {
-        //         this.$refs.videoSelect3.blur()
-        //     } else if (num == 4) {
-        //         this.$refs.videoSelect4.blur()
-        //     } else if (num == 5) {
-        //         this.$refs.videoSelect5.blur()
-        //     } else if (num == 6) {
-        //         this.$refs.videoSelect6.blur()
-        //     } else if (num == 7) {
-        //         this.$refs.videoSelect7.blur()
-        //     } else if (num == 8) {
-        //         this.$refs.videoSelect8.blur()
-        //     }
-        //     this.isShowSelect[`video${num}`] = false
-        // },
-
-        // enterSelectBox (num) {
-        //     this.isShowSelect[`video${num}`] = true
-        // },
-        // #endregion
-
-    },
-
-    destroyed () {
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'monitoringLayers',
-            type: 'VectorLayer'
-        })
-
-        this.$EventBus.$emit('mapRemoveLayer', {
-            layerName: 'rangeSaveLayer',
-            type: 'VectorLayer'
-        })
-
-        // graphicLayer.destroy()
-
-        if (rangeLineLayer != null) {
-            rangeLineLayer.clear()
-        }
-
-        this.$parent.$parent.$parent.resize('0px')
-
-        if (this.flvPlayer != null) {
-            this.flvPlayer.pause()
-            this.flvPlayer.unload()
-            this.flvPlayer.detachMediaElement()
-            this.flvPlayer.destroy()
-            this.flvPlayer = null
-        }
-
-    }
-}
-</script>
-
-<style scoped lang="scss">
-.container {
-    position: relative;
-    display: flex;
-    width: 100%;
-    height: 100%;
-
-    .region-left-container {
-        position: relative;
-        width: 100%;
-        height: 100%;
-
-        .container-content {
-            display: flex;
-            flex-direction: column;
-            width: 100%;
-            height: 100%;
-            color: #fff;
-            background: $bg-color;
-
-            .search-box {
-                padding: 6px;
-                height: 46px;
-                display: flex;
-                align-items: center;
-
-                input {
-                    flex: 1;
-                    height: 100%;
-                    font-size: 18px;
-                    text-indent: 1em;
-                    color: #ffffff;
-                    background-color: rgba(24, 79, 202, 0.6);
-                    // border: 1px solid rgb(0, 92, 169);
-                    border: 1px solid rgb(24, 79, 202);
-                    border-radius: 20px 0 0 20px;
-                }
-
-                input:focus {
-                    outline: none;
-                }
-
-                input::-webkit-input-placeholder {
-                    color: rgba(238, 238, 238, 0.7);
-                }
-
-                button {
-                    font-size: 24px;
-                    font-weight: 700;
-                    width: 80px;
-                    height: 100%;
-                    background-color: $table-body-tr-n-color;
-                    color: #fff;
-                    border: 1px solid rgb(0, 92, 169);
-                    cursor: pointer;
-                    border-radius: 0 20px 20px 0;
-                }
-
-                button:active {
-                    background-color: $table-body-tr-2n-color;
-                    border: 1px solid rgb(0, 92, 169);
-                }
-            }
-
-            .search-val-box {
-                display: flex;
-                flex-direction: column;
-                position: absolute;
-                top: 48px;
-                left: 6px;
-                width: calc(100% - 12px);
-                max-height: 160px;
-                text-align: left;
-                color: #fff;
-                background: $el-dialog-bg-color;
-                z-index: 1111;
-                border-radius: 10px;
-                overflow-y: auto;
-
-                &>div {
-                    height: 100%;
-                    padding: 0 10px;
-                    line-height: 36px;
-                    cursor: pointer;
-                }
-            }
-
-            .list-show {
-                flex: 1;
-
-                &>div {
-                    height: 100%;
-                    display: flex;
-                    flex-direction: column;
-
-                    // background-color: #fff;
-                    .list-box {
-                        flex: 1;
-
-                        .btn {
-                            width: 60px;
-                            height: 30px;
-                            background-color: #65b1ff;
-                            color: #fff;
-                            border-radius: 4px;
-                            cursor: pointer;
-                            margin-top: 10px;
-                        }
-
-                        .btn:active {
-                            background-color: rgb(0, 92, 169);
-                            border: 1px solid rgb(0, 92, 169);
-                        }
-                    }
-                }
-
-                .pages {
-                    height: 40px;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                }
-            }
-        }
-    }
-
-    .item {
-        background-color: $bg-color;
-        // position: absolute;
-        position: fixed;
-        z-index: 98;
-        width: calc((1920 - 400) / 4 / 1920 * 100vw);
-        height: calc((1080 - 60) / 3 / 1080 * 100vh);
-
-        .close {
-            position: absolute;
-            top: 0;
-            right: 0;
-            width: 32px;
-            text-align: center;
-            height: 100%;
-            z-index: 999;
-            display: flex;
-            color: #fff;
-            font-size: 22px;
-            cursor: pointer;
-            align-items: center;
-        }
-
-        .close:hover {
-            color: #65b1ff;
-        }
-
-        .select {
-            position: absolute;
-            top: 6%;
-            width: 100%;
-            z-index: 999;
-        }
-
-        .video {
-            height: 100%;
-            padding: 1%;
-        }
-
-        .outline {
-            position: absolute;
-            color: #eee;
-            letter-spacing: 2px;
-            font-size: 24px;
-            width: 100%;
-            text-align: center;
-            top: 40%;
-        }
-    }
-
-    .new-item-width {
-        width: 25vw;
-    }
-
-    .new-video235-left {
-        left: 0 !important;
-    }
-
-    .new-video146-left {
-        left: 75vw !important;
-    }
-
-    .new-video7-left {
-        left: 25vw !important;
-    }
-
-    .new-video8-left {
-        left: 50vw !important;
-    }
-
-    .video1 {
-        top: calc(60 / 1080 * 100vh);
-        left: calc(1540 / 1920 * 100vw);
-
-        .video {
-            padding: 1% 1% 0 1%;
-        }
-    }
-
-    .video2 {
-        top: calc(60 / 1080 * 100vh);
-        left: calc(400 / 1920 * 100vw);
-
-        .video {
-            padding: 1% 1% 0 1%;
-        }
-    }
-
-    .video3 {
-        left: calc(400 / 1920 * 100vw);
-        // top: calc(340 / 1080 * 100vh);
-        top: calc(400 / 1080 * 100vh);
-
-        .video {
-            padding: 1% 1% 0 1%;
-        }
-    }
-
-    .video4 {
-        left: calc(1540 / 1920 * 100vw);
-        // top: calc(340 / 1080 * 100vh);
-        top: calc(400 / 1080 * 100vh);
-
-        .video {
-            padding: 1% 1% 0 1%;
-        }
-    }
-
-    .video5 {
-        left: calc(400 / 1920 * 100vw);
-        // top: calc(680 / 1080 * 100vh);
-        top: calc(740 / 1080 * 100vh);
-    }
-
-    .video6 {
-        left: calc(1540 / 1920 * 100vw);
-        // top: calc(680 / 1080 * 100vh);
-        top: calc(740 / 1080 * 100vh);
-    }
-
-    .video7 {
-        left: calc(780 / 1920 * 100vw);
-        // top: calc(680 / 1080 * 100vh);
-        top: calc(740 / 1080 * 100vh);
-
-        .video {
-            padding: 1% 0 1% 0;
-        }
-    }
-
-    .video8 {
-        left: calc(1160 / 1920 * 100vw);
-        // top: calc(680 / 1080 * 100vh);
-        top: calc(740 / 1080 * 100vh);
-
-        .video {
-            padding: 1% 0 1% 1%;
-        }
-    }
-
-    .deleteVideo {
-        // position: absolute;
-        position: fixed;
-        width: 60px;
-        height: 26px;
-        line-height: 26px;
-        color: #fff;
-        background-color: $bg-color;
-        left: calc(1480 / 1920 * 100vw);
-        top: calc(70 / 1080 * 100vh);
-        cursor: pointer;
-        z-index: 99;
-    }
-
-    .deleteVideo-new-left {
-        left: calc(1380 / 1920 * 100vw);
-    }
-}
-</style>
\ No newline at end of file
diff --git a/src/views/video/region.vue b/src/views/video/region.vue
index b95b671..5c4d472 100644
--- a/src/views/video/region.vue
+++ b/src/views/video/region.vue
@@ -35,9 +35,9 @@
                                 <el-table-column prop="name" label="范围名称" min-width="50%"></el-table-column>
                                 <el-table-column prop="extent" label="长度km/面积㎡" min-width="50%">
                                     <!-- <template slot-scope="scope">
-                                                                                <span>{{ scope.row.extent }}</span>
-                                                                                <span>千米</span>
-                                                                            </template>-->
+                                                                                    <span>{{ scope.row.extent }}</span>
+                                                                                    <span>千米</span>
+                                                                                </template>-->
                                 </el-table-column>
                                 <el-table-column prop="id" label="操作" min-width="50%">
                                     <template slot-scope="scope">
@@ -274,6 +274,8 @@
 let rangeLineLayer = null
 let plot = undefined
 
+import { initMapPosition } from '@/utils/mapPositionInit'
+
 export default {
     inject: ['userInfo'],
 
@@ -382,8 +384,11 @@
 
     created () {
         // this.getVideoList(1, 100)
-        this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
+        this.$nextTick(() => {
+            initMapPosition()
+        })
 
+        this.getRegionSaveList(this.currentPage, this.pagesize, this.userInfo.dept_id)
     },
 
     mounted () {

--
Gitblit v1.9.3