shuishen
2023-03-22 551d9377a40a4e19e978d30b851720c0323c2d14
活动修改
7 files modified
1 files added
324 ■■■■ changed files
public/img/bg/jj.png patch | view | raw | blame | history
src/router/page/index.js 2 ●●● patch | view | raw | blame | history
src/views/activity/components/activityDetail.vue 10 ●●●● patch | view | raw | blame | history
src/views/activity/components/drawBtnBox.vue 8 ●●●● patch | view | raw | blame | history
src/views/activity/index.vue 244 ●●●● patch | view | raw | blame | history
src/views/activity/index1.vue 40 ●●●● patch | view | raw | blame | history
src/views/home/components/rightContainer.vue 2 ●●● patch | view | raw | blame | history
src/views/layout/index.vue 18 ●●●● patch | view | raw | blame | history
public/img/bg/jj.png
src/router/page/index.js
@@ -90,7 +90,7 @@
            {
                path: 'activity',
                meta: {
                    title: '安保活动'
                    title: '电子沙盘'
                },
                component: activity
            },
src/views/activity/components/activityDetail.vue
@@ -1,15 +1,15 @@
<template>
    <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">名称:</div>
            <div class="category-value">{{ activityDetails.name }}</div>
        </div>
        <div class="row-box">
            <div class="category">活动时间:</div>
            <div class="category">时间:</div>
            <div class="category-value">{{ activityDetails.startTime }} 至 {{ activityDetails.endTime }}</div>
        </div>
        <div class="row-box">
@@ -33,11 +33,11 @@
            <div class="category-value">{{ activityDetails.number }}</div>
        </div>
        <div class="row-box">
            <div class="category">活动地点:</div>
            <div class="category">地点:</div>
            <div class="category-value">{{ activityDetails.place }}</div>
        </div>
        <div class="row-box">
            <div class="category">活动内容:</div>
            <div class="category">内容:</div>
            <div class="category-value">{{ activityDetails.content }}</div>
        </div>
    </div>
src/views/activity/components/drawBtnBox.vue
@@ -731,8 +731,8 @@
            }
        },
        // 修改活动警车
        // id活动id, carId警车id, color颜色, width巡逻路线范围宽度, type线面类型, position坐标
        // 修改警车
        // idid, carId警车id, color颜色, width巡逻路线范围宽度, type线面类型, position坐标
        updateActivityCar (params, overlay) {
            updateActivityCar(params).then(res => {
                if (res.data.success) {
@@ -751,8 +751,8 @@
            })
        },
        // 修改活动警员
        // id活动id, policemanId警察id ,color颜色
        // 修改警员
        // idid, policemanId警察id ,color颜色
        updateActivityPolice (params, overlay) {
            updateActivityPolice(params).then(res => {
                if (res.data.success) {
src/views/activity/index.vue
@@ -2,9 +2,9 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-15 09:15:07
 * @LastEditTime: 2023-03-22 15:15:18
 * @FilePath: \srs-police-affairs\src\views\activity\index.vue
 * @Description: 安保活
 * @Description: 电子沙盘
 *
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved.
-->
@@ -12,7 +12,7 @@
<template>
    <div class="activity-page container">
        <div v-show="boxShow" class="container-content">
            <div class="title">安保活动</div>
            <div class="title">电子沙盘</div>
            <div class="search-box">
                <div>
                    <div class="category">选择时间:</div>
@@ -24,7 +24,7 @@
                </div>
                <div>
                    <div class="category">活动名称:</div>
                    <div class="category">名称:</div>
                    <div class="category-value search-activity">
                        <input type="text" placeholder="请输入…" v-model="searchActivity" class="category-input"
                            @input="inputChange" />
@@ -42,7 +42,7 @@
                        <div class="row-title">常规安保</div>
                        <div class="row-content">
                            <div>
                                <div class="category">活动名称:</div>
                                <div class="category">名称:</div>
                                <div class="category-value">{{ item.name }}</div>
                            </div>
                            <div>
@@ -50,11 +50,11 @@
                                <div class="category-value">{{ item.number }}</div>
                            </div>
                            <div>
                                <div class="category">活动时间:</div>
                                <div class="category">时间:</div>
                                <div class="category-value">{{ item.startTime }} 至 {{ item.endTime }}</div>
                            </div>
                            <div>
                                <div class="category">活动详情:</div>
                                <div class="category">详情:</div>
                                <div class="category-value">{{ item.content }}</div>
                            </div>
                        </div>
@@ -161,7 +161,7 @@
                    <div class="value-name-box">预警范围:</div>
                    <div class="width-box">
                        <div class="input-width-box">
                            <input type="text"  v-model="pointAreaWidth" placeholder="请输入..." />
                            <input type="text" v-model="pointAreaWidth" placeholder="请输入..." />
                        </div>
                        <div class="units">米</div>
                    </div>
@@ -338,7 +338,7 @@
                        id: 9,
                        label: '执法记录仪',
                    }]
                },{
                }, {
                    id: 3,
                    label: '视频监控'
                },
@@ -490,8 +490,8 @@
            }],
            isNeedPolygonType: false,
            plotPointPositionStr: '',
            pointAreaWidth:100,
            dataTreeCheckedNodes:[],
            pointAreaWidth: 100,
            dataTreeCheckedNodes: [],
        }
    },
@@ -512,15 +512,15 @@
        this.getSecurityList(this.currentPage, this.pagesize)
        //摄像头
        this.getEquipmentAll({ type: 1},'')
        this.getEquipmentAll({ type: 1 }, '')
        //警车
        this.getEquipmentAll({ type: 0},'');
        this.getEquipmentAll({ type: 0 }, '')
        //手台-公网
        this.getEquipmentAll({ type: "2-1" },'');
        this.getEquipmentAll({ type: "2-1" }, '')
        //手台-专网
        this.getEquipmentAll({ type: "2-2" },'');
        this.getEquipmentAll({ type: "2-2" }, '')
        //执法记录仪
        this.getEquipmentAll({ type: 3 },'')
        this.getEquipmentAll({ type: 3 }, '')
    },
@@ -577,7 +577,7 @@
            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
        },
        // 获取活动列表
        // 获取列表
        getSecurityList (current, size, type, name, startTime, endTime) {
            this.loading()
            var deptId = ""
@@ -601,7 +601,7 @@
            })
        },
        // 添加活动图标
        // 添加图标
        addActivityPoint () {
            this.activityList.forEach(item => {
                let positionObj = this.convertBillboardPositionDate(item, 'activity')
@@ -640,7 +640,7 @@
        },
        /**
         * @description: 点击活动列表活动
         * @description: 点击列表
         * @param {*} item
         * @param {*} index
         * @return {*}
@@ -672,7 +672,7 @@
            this.showingSecurityId = item.id
            // 加载当前活动面
            // 加载当前面
            if (item.activityArea && item.activityArea.length > 0) {
                let polyGonData = item.activityArea.slice(11, item.activityArea.length - 1)
                polyGonData = polyGonData.replace(/,/g, ";")
@@ -685,12 +685,12 @@
                })
            }
            // 警员警车列表根据活动deptid筛选
            // 警员警车列表根据deptid筛选
            // 获取树状警员数据
            console.log('item',item.deptId,item);
            this.getPolicemanTree({deptId:item.deptId})
            this.getCarList({deptId:item.deptId})
            console.log('item', item.deptId, item)
            this.getPolicemanTree({ deptId: item.deptId })
            this.getCarList({ deptId: item.deptId })
            // 警力资源
            this.getSecurityPoliceList(item.id, this.policeSwitch)
@@ -751,7 +751,7 @@
            this.getSecurityCarList(this.showingSecurityId, this.policeSwitch, this.polylineBtnSwitch, 'line')
        },
        // 获取活动标绘箭头列表
        // 获取标绘箭头列表
        getSecurityPlotList (securityId, arrowShow, showType) {
            arrowsListLayer.clear()
            this.$refs.DRAWBTNBOX.removeDrawArrow()
@@ -838,7 +838,7 @@
                            iconImgName = 'icon3'
                        }
                        position = position.split(';')[0].split(',')
                        let pointPosition = new global.DC.Position(Number(position[0]), Number(position[1]),4)
                        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]
@@ -865,7 +865,7 @@
                        label.attrParams = { 'id': item.id, item }
                        this.$refs.DRAWBTNBOX.lableAllEvent(label)
                        label.setStyle({
                            'fillColor':color,
                            'fillColor': color,
                            "font": `${item.width}px sans-serif`,
                        })
                        arrowsListLayer.addOverlay(label)
@@ -883,7 +883,7 @@
            })
        },
        // 获取活动警员分布信息
        // 获取警员分布信息
        getSecurityPoliceList (securityId, pointShow) {
            this.$refs.DRAWBTNBOX.removeDraw()
@@ -959,7 +959,7 @@
                this.isHaveLine = res.data.data.some(item => {
                    return item.type == 1
                })
                type == 'car' && pointShow && this.addMapCarAndPersonLayers(
                    res.data.data.filter(item => item.type == 3),
                    'policecar',
@@ -1018,7 +1018,7 @@
                // circle.setStyle({
                //     "material": global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 100), //颜色
                // })
                this.$EventBus.$emit('layerPointAdd', {
                    layerName: mapLayer,
                    type: 'billboard',
@@ -1180,12 +1180,12 @@
            })
        },
        // 活动添加警车和范围
        // carId警车id, position坐标, securityId活动id, type线面类型,width缓存范围,color范围颜色
        // 添加警车和范围
        // carId警车id, position坐标, securityIdid, type线面类型,width缓存范围,color范围颜色
        addCarAndRange (params) {
            addCarAndRange(params).then(res => {
                if (res.data.success) {
                    this.$refs.DRAWBTNBOX.addNewPolice(res.data.data,'policecar',params.type)
                    this.$refs.DRAWBTNBOX.addNewPolice(res.data.data, 'policecar', params.type)
                    this.$message({
                        message: '添加成功',
                        type: 'success'
@@ -1199,8 +1199,8 @@
            })
        },
        // 活动添加警员
        // policemanId警车id, position坐标, securityId活动id, type线面类型
        // 添加警员
        // policemanId警车id, position坐标, securityIdid, type线面类型
        addActivityPolice (params) {
            addActivityPolice(params).then(res => {
                if (res.data.success) {
@@ -1251,7 +1251,7 @@
        // 树形控件选中事件
        treeCheckClick (e1, e2) {
            // 没有选中活动就不展示实时图标
            // 没有选中就不展示实时图标
            const that = this
            this.$EventBus.$emit('mapRemoveLayer', {
                layerName: 'activeHeatLayer',
@@ -1300,38 +1300,38 @@
            }
            this.dataTreeCheckedNodes = e2.checkedNodes
            this.eachDataTreeCheckedNodes(this.dataTreeCheckedNodes)
        },
        // 遍历树数据实时图标
        eachDataTreeCheckedNodes(data){
        eachDataTreeCheckedNodes (data) {
            // 清除定时器
            if(realPoliceTimer != {}) {
                for(let item in realPoliceTimer) {
                    console.log(`定时器realPoliceTimer[${item}]关闭了`);
            if (realPoliceTimer != {}) {
                for (let item in realPoliceTimer) {
                    console.log(`定时器realPoliceTimer[${item}]关闭了`)
                    clearInterval(realPoliceTimer[item])
                }
            }
            if(data != []){
                 data.some(item => {
                     return item.label == '视频监控'
                 }) ? this.iconImageShowOrHidden('/img/icon/camera.png', '',cameraList, 'activityCameraLayers') : this.clearLayerIconForMap('activityCameraLayers');
            if (data != []) {
                data.some(item => {
                    return item.label == '视频监控'
                }) ? this.iconImageShowOrHidden('/img/icon/camera.png', '', cameraList, 'activityCameraLayers') : this.clearLayerIconForMap('activityCameraLayers')
                 data.some(item => {
                     return item.label == '警车'
                 }) ? this.iconImageShowOrHidden('/img/icon/real-car.png','/img/icon/real-car-ok.png', carList, 'activityCarLayers') : this.clearLayerIconForMap('activityCarLayers');
                data.some(item => {
                    return item.label == '警车'
                }) ? this.iconImageShowOrHidden('/img/icon/real-car.png', '/img/icon/real-car-ok.png', carList, 'activityCarLayers') : this.clearLayerIconForMap('activityCarLayers')
                 data.some(item => {
                     return item.label == '公网'
                 }) ? this.iconImageShowOrHidden('/img/icon/real-public-recorder.png','/img/icon/real-public-recorder-ok.png', talkBackEquipmentPublicList, 'activityTalkBackEquipmentPublicLayers') : this.clearLayerIconForMap('activityTalkBackEquipmentPublicLayers');
                data.some(item => {
                    return item.label == '公网'
                }) ? this.iconImageShowOrHidden('/img/icon/real-public-recorder.png', '/img/icon/real-public-recorder-ok.png', talkBackEquipmentPublicList, 'activityTalkBackEquipmentPublicLayers') : this.clearLayerIconForMap('activityTalkBackEquipmentPublicLayers')
                 data.some(item => {
                     return item.label == '专网'
                 }) ? this.iconImageShowOrHidden('/img/icon/real-recorder.png','/img/icon/real-recorder-ok.png', talkBackEquipmentList, 'activityTalkBackEquipmentLayers') : this.clearLayerIconForMap('activityTalkBackEquipmentLayers');
                data.some(item => {
                    return item.label == '专网'
                }) ? this.iconImageShowOrHidden('/img/icon/real-recorder.png', '/img/icon/real-recorder-ok.png', talkBackEquipmentList, 'activityTalkBackEquipmentLayers') : this.clearLayerIconForMap('activityTalkBackEquipmentLayers')
                 data.some(item => {
                     return item.label == '执法记录仪'
                 }) ? this.iconImageShowOrHidden('/img/icon/real-phone.png', '/img/icon/real-phone-ok.png',policeCarmeraList, 'activityPoliceCameraLayers') : this.clearLayerIconForMap('activityPoliceCameraLayers');
                data.some(item => {
                    return item.label == '执法记录仪'
                }) ? this.iconImageShowOrHidden('/img/icon/real-phone.png', '/img/icon/real-phone-ok.png', policeCarmeraList, 'activityPoliceCameraLayers') : this.clearLayerIconForMap('activityPoliceCameraLayers')
            }
        },
@@ -1339,9 +1339,9 @@
         * 清除当前图层数据 
         * @param {*} layerName 图层名称
         */
         clearLayerIconForMap(layerName) {
        clearLayerIconForMap (layerName) {
            realPoliceTimer[layerName] && clearInterval(realPoliceTimer[layerName])
            console.log(`定时器realPoliceTimer[${layerName}]关闭了`);
            console.log(`定时器realPoliceTimer[${layerName}]关闭了`)
            this.$EventBus.$emit('mapClearLayer', {
                layerName: layerName,
                type: 'VectorLayer'
@@ -1354,38 +1354,38 @@
         * @param {*} data 传入的数据(摄像头,手台等集合数据)
         * @param {*} layerName 选中图层名称
         */
        iconImageShowOrHidden(img, imgOk, data, layerName, isChooseSecurity) {
            if(this.showingSecurityId && !isChooseSecurity) {
        iconImageShowOrHidden (img, imgOk, data, layerName, isChooseSecurity) {
            if (this.showingSecurityId && !isChooseSecurity) {
                // 实时图标刷新时间间隔
                let refreshTime = 60000
                this.searchRealResources(layerName)
                realPoliceTimer[layerName] = setInterval(()=> this.searchRealResources(layerName),refreshTime)
                realPoliceTimer[layerName] = setInterval(() => this.searchRealResources(layerName), refreshTime)
            } else {
                this.$EventBus.$emit('mapRemoveLayer', {
                   layerName: layerName,
                   type: 'VectorLayer'
                    layerName: layerName,
                    type: 'VectorLayer'
                })
                if (data.length > 0) {
                   data.forEach(item => {
                    if (item.longitude && item.latitude) {
                        this.$EventBus.$emit('layerPointAdd', {
                            layerName: layerName,
                            type: "billboard",
                            params: {
                                ...item,
                                lng: item.longitude,
                                lat: item.latitude,
                                alt: 1,
                                url: item.clockStatus == 0 ? img:imgOk
                            },
                        })
                    }
                   })
                    data.forEach(item => {
                        if (item.longitude && item.latitude) {
                            this.$EventBus.$emit('layerPointAdd', {
                                layerName: layerName,
                                type: "billboard",
                                params: {
                                    ...item,
                                    lng: item.longitude,
                                    lat: item.latitude,
                                    alt: 1,
                                    url: item.clockStatus == 0 ? img : imgOk
                                },
                            })
                        }
                    })
                }
            }
        },
        // 关闭活动详情弹窗
        // 关闭详情弹窗
        closeActivityDetails () {
            this.dialogVisible = false
            this.polylineBtnSwitch = false
@@ -1410,19 +1410,19 @@
        },
        // 定时查找实时警力资源
        searchRealResources(layerName){
            console.log(`定时器realPoliceTimer[${layerName}]开启了`);
        searchRealResources (layerName) {
            console.log(`定时器realPoliceTimer[${layerName}]开启了`)
            let type = ''
            if(layerName == 'activityCarLayers') {
            if (layerName == 'activityCarLayers') {
                type = 0
            }else if (layerName == 'activityTalkBackEquipmentPublicLayers'){
            } else if (layerName == 'activityTalkBackEquipmentPublicLayers') {
                type = '2-1'
            }else if (layerName == 'activityTalkBackEquipmentLayers'){
            } else if (layerName == 'activityTalkBackEquipmentLayers') {
                type = '2-2'
            }else if (layerName == 'activityPoliceCameraLayers'){
            } else if (layerName == 'activityPoliceCameraLayers') {
                type = 3
            }
            this.getEquipmentAll({ type: type ,query:this.showingSecurityId },layerName);
            this.getEquipmentAll({ type: type, query: this.showingSecurityId }, layerName)
        },
        // 大小重置
@@ -1511,7 +1511,7 @@
                            message: '范围必须为正整数',
                            type: 'warning'
                        })
                    }else {
                    } else {
                        this.policeChooseCarVisible = false
                        this.addCarAndRange({
                            carId: this.policeType,
@@ -1519,7 +1519,7 @@
                            securityId: this.showingSecurityId,
                            type: type,
                            color: this.chooseCarColor,
                            width:this.pointAreaWidth
                            width: this.pointAreaWidth
                        })
                        this.policeIconIsCreated = false
                    }
@@ -1530,20 +1530,20 @@
                            message: '请选择警员',
                            type: 'warning'
                        })
                    }else if (!(/(^[1-9]\d*$)/.test(Number(this.pointAreaWidth)))) {
                    } else if (!(/(^[1-9]\d*$)/.test(Number(this.pointAreaWidth)))) {
                        this.$message({
                            message: '范围必须为正整数',
                            type: 'warning'
                        })
                    } else {
                        this.policeChooseVisible = false
                        this.addActivityPolice({ policemanId: this.searchPoliceTreeId, position: position, securityId: this.showingSecurityId, type: type, color: this.choosePoliceColor ,width:this.pointAreaWidth})
                        this.addActivityPolice({ policemanId: this.searchPoliceTreeId, position: position, securityId: this.showingSecurityId, type: type, color: this.choosePoliceColor, width: this.pointAreaWidth })
                        this.policeIconIsCreated = false
                    }
                }
            } else {
                if (this.policeChooseVisible == true) {
                    if (this.searchPoliceTreeId == ''|| this.searchPoliceTreeName == '') {
                    if (this.searchPoliceTreeId == '' || this.searchPoliceTreeName == '') {
                        this.$message({
                            message: '请在列表中选择警员',
                            type: 'warning'
@@ -1554,8 +1554,8 @@
                            type: 'warning'
                        })
                    } else {
                         this.$refs.DRAWBTNBOX.updateActivityPolice({ id: this.policeIconId, policemanId: this.searchPoliceTreeId, color: this.choosePoliceColor,width:this.pointAreaWidth },policeOverlayData.overlay)
                         this.policeChooseVisible = false
                        this.$refs.DRAWBTNBOX.updateActivityPolice({ id: this.policeIconId, policemanId: this.searchPoliceTreeId, color: this.choosePoliceColor, width: this.pointAreaWidth }, policeOverlayData.overlay)
                        this.policeChooseVisible = false
                    }
                } else if (this.policeChooseCarVisible == true) {
                    if (this.policeType == '') {
@@ -1569,7 +1569,7 @@
                            type: 'warning'
                        })
                    } else {
                        this.$refs.DRAWBTNBOX.updateActivityCar({ id: this.policeIconId, carId: this.policeType, color: this.chooseCarColor,width:this.pointAreaWidth },policeOverlayData.overlay)
                        this.$refs.DRAWBTNBOX.updateActivityCar({ id: this.policeIconId, carId: this.policeType, color: this.chooseCarColor, width: this.pointAreaWidth }, policeOverlayData.overlay)
                        this.policeChooseCarVisible = false
                    }
                }
@@ -1594,7 +1594,7 @@
            if ('policemanId' in e.overlay.attrParams.data) {
                this.policeIconId = e.overlay.attrParams.data.id
                this.policeType = e.overlay.attrParams.data.policemanId
                this.pointAreaWidth = e.overlay.attrParams.data.width != '-1' ? e.overlay.attrParams.data.width :100
                this.pointAreaWidth = e.overlay.attrParams.data.width != '-1' ? e.overlay.attrParams.data.width : 100
                this.choosePoliceColor = e.overlay.attrParams.data.color != '' ? e.overlay.attrParams.data.color : '#FF0000'
                let choosePoliceName = this.platFn(this.policeTreeData).find(item => item.id == e.overlay.attrParams.data.policemanId).name
                this.searchPoliceTreeId = e.overlay.attrParams.data.policemanId
@@ -1605,7 +1605,7 @@
                this.policeOption = policecarOption
                this.policeIconId = e.overlay.attrParams.data.id
                this.policeType = e.overlay.attrParams.data.carId
                this.pointAreaWidth = e.overlay.attrParams.data.width != '-1' ? e.overlay.attrParams.data.width :100
                this.pointAreaWidth = e.overlay.attrParams.data.width != '-1' ? e.overlay.attrParams.data.width : 100
                this.chooseCarColor = e.overlay.attrParams.data.color != '' ? e.overlay.attrParams.data.color : '#FF0000'
                this.policeIconIsCreated = true
                this.policeChooseCarVisible = true
@@ -1627,7 +1627,7 @@
            this.chooseColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color : '#1CA085'
            this.policeIconId = e.overlay.attrParams.id
            policeOverlayData = e
            policeOverlayData = e
            curLinePosition = e.overlay.attrParams.linePositionStr
            curLinePolygonPosition = e.overlay.attrParams.polygonPositionStr
@@ -1641,8 +1641,8 @@
            }
        },
        // 保存活动标绘箭头
        // securityId活动id, position坐标, type标绘类型, name多边形名称,color标绘颜色,aera_type多边形类型
        // 保存标绘箭头
        // securityIdid, position坐标, type标绘类型, name多边形名称,color标绘颜色,aera_type多边形类型
        addSecurityPlot (params) {
            addSecurityPlot(params).then(res => {
                if (res.data.success) {
@@ -1734,7 +1734,7 @@
        // 保存巡逻路线信息
        saveLineInfo () {
            this.$refs.DRAWBTNBOX.updateActivityCar({ id: this.policeIconId, color: this.chooseColor, width: this.lineWidth },policeOverlayData.overlay)
            this.$refs.DRAWBTNBOX.updateActivityCar({ id: this.policeIconId, color: this.chooseColor, width: this.lineWidth }, policeOverlayData.overlay)
            this.lineEditVisible = false
        },
@@ -1798,10 +1798,10 @@
                        type: 'success'
                    })
                    policeOverlayData.overlay.remove()
                    if(type == 'car' && 'pointOverlayData' in policeOverlayData.overlay.attrParams){
                    if (type == 'car' && 'pointOverlayData' in policeOverlayData.overlay.attrParams) {
                        policeOverlayData.overlay.attrParams.pointOverlayData.remove()
                    }
                    if(type == 'line' && 'lineObj' in policeOverlayData.overlay.attrParams){
                    if (type == 'line' && 'lineObj' in policeOverlayData.overlay.attrParams) {
                        policeOverlayData.overlay.attrParams.lineObj.remove()
                    }
                } else {
@@ -1818,7 +1818,7 @@
            deleteActivityPolice(id).then(res => {
                if (res.data.success) {
                    policeOverlayData.overlay.remove()
                    if('pointOverlayData' in policeOverlayData.overlay.attrParams){
                    if ('pointOverlayData' in policeOverlayData.overlay.attrParams) {
                        policeOverlayData.overlay.attrParams.pointOverlayData.remove()
                    }
                    this.$message({
@@ -1851,12 +1851,12 @@
            this.lineEditVisible = false
        },
        // 删除活动标绘接口
        // 删除标绘接口
        deleteSecurityPlot (id) {
            deleteSecurityPlot(id).then(res => {
                if (res.data.success) {
                    plotOverlayData!=null && plotOverlayData.overlay!=null && plotOverlayData.overlay.remove()
                    if (plotOverlayData!=null && plotOverlayData.overlay!=null&&'pointOverlayData' in plotOverlayData.overlay.attrParams) {
                    plotOverlayData != null && plotOverlayData.overlay != null && plotOverlayData.overlay.remove()
                    if (plotOverlayData != null && plotOverlayData.overlay != null && 'pointOverlayData' in plotOverlayData.overlay.attrParams) {
                        plotOverlayData.overlay.attrParams.pointOverlayData.remove()
                    }
                    this.$message({
@@ -1872,20 +1872,20 @@
            })
        },
        // 删除活动标绘
        // 删除标绘
        deletePlot () {
            this.deleteSecurityPlot(this.plotId)
            this.editPlotVisible = false
        },
        // 获取设备列表
        getEquipmentAll (params,layerName) {
        getEquipmentAll (params, layerName) {
            getEquipmentAll({ ...params, deptId: this.userInfo.dept_id }).then(res => {
                if (params.type == 0) {
                    //警车
                    carList = res.data.data
                    if(layerName){
                        this.iconImageShowOrHidden('/img/icon/real-car.png','/img/icon/real-car-ok.png',carList, layerName,true)
                    if (layerName) {
                        this.iconImageShowOrHidden('/img/icon/real-car.png', '/img/icon/real-car-ok.png', carList, layerName, true)
                    }
                } else if (params.type == 1) {
                    //摄像头
@@ -1893,20 +1893,20 @@
                } else if (params.type == '2-1') {
                    //公网-手台
                    talkBackEquipmentPublicList = res.data.data
                    if(layerName){
                        this.iconImageShowOrHidden('/img/icon/real-public-recorder.png','/img/icon/real-public-recorder-ok.png', talkBackEquipmentPublicList, layerName,true)
                    if (layerName) {
                        this.iconImageShowOrHidden('/img/icon/real-public-recorder.png', '/img/icon/real-public-recorder-ok.png', talkBackEquipmentPublicList, layerName, true)
                    }
                } else if (params.type == '2-2') {
                    //专网-手台
                    talkBackEquipmentList = res.data.data
                    if(layerName){
                        this.iconImageShowOrHidden('/img/icon/real-phone.png','/img/icon/real-phone-ok.png', talkBackEquipmentList, layerName,true)
                    if (layerName) {
                        this.iconImageShowOrHidden('/img/icon/real-phone.png', '/img/icon/real-phone-ok.png', talkBackEquipmentList, layerName, true)
                    }
                } else {
                    //执法记录仪
                    policeCarmeraList = res.data.data
                    if(layerName){
                        this.iconImageShowOrHidden('/img/icon/real-recorder.png', '/img/icon/real-recorder-ok.png', policeCarmeraList, layerName,true)
                    if (layerName) {
                        this.iconImageShowOrHidden('/img/icon/real-recorder.png', '/img/icon/real-recorder-ok.png', policeCarmeraList, layerName, true)
                    }
                }
            })
@@ -2007,11 +2007,11 @@
        }
    },
    beforeDestroy() {
    beforeDestroy () {
        // 清除定时器
        if(realPoliceTimer != {}) {
            for(let item in realPoliceTimer) {
                console.log(`定时器realPoliceTimer[${item}]关闭了`);
        if (realPoliceTimer != {}) {
            for (let item in realPoliceTimer) {
                console.log(`定时器realPoliceTimer[${item}]关闭了`)
                clearInterval(realPoliceTimer[item])
            }
        }
src/views/activity/index1.vue
@@ -4,7 +4,7 @@
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-29 15:46:00
 * @FilePath: \srs-police-affairs\src\views\activity\index.vue
 * @Description: 安保活动
 * @Description: 电子沙盘
 * 
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
-->
@@ -28,12 +28,12 @@
                    <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>-->
                                            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"
@@ -173,8 +173,8 @@
                <div class="category">应急预案:</div>
                <div class="category-value">
                    <el-switch v-model="polylineSwitch" @change="switchChange" active-color="#13ce66"
                                inactive-color="#ccc"></el-switch>
                        </div>
                                        inactive-color="#ccc"></el-switch>
                                </div>
            </div>
            <div class="row-box">
@@ -186,17 +186,17 @@
            </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="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>
src/views/home/components/rightContainer.vue
@@ -58,7 +58,7 @@
        <!-- <div class="alert-box" ref="alertBox">
            <div class="title" ref="alertBoxTitle">
                <div>安保活动</div>
                <div>电子沙盘</div>
                <div class="title-tab">
                    <span :class="{ choosed: acttype == 0 }" @click="actTabClick(0)">正在进行</span>/
                    <span :class="{ choosed: acttype == 1 }" @click="actTabClick(1)">历史活动</span>
src/views/layout/index.vue
@@ -67,16 +67,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 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 class="return" @click="goTOFllow">返回引导页</div>
                                </div>
                            </div>
                        </div>-->
                            </div>-->
        </div>
        <div class="main-container">
@@ -155,7 +155,7 @@
                    ]
                },
                {
                    menuName: '安保活动',
                    menuName: '电子沙盘',
                    path: '/layout/activity'
                },
                {