guanqb
2023-03-06 6b36a35dd4d71407b95cc5e937093180b14f0ab7
Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
8 files modified
602 ■■■■■ changed files
public/static/config.js 4 ●●●● patch | view | raw | blame | history
src/App.vue 9 ●●●●● patch | view | raw | blame | history
src/components/map/index.vue 48 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 20 ●●●● patch | view | raw | blame | history
src/views/activity/index.vue 238 ●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 155 ●●●● patch | view | raw | blame | history
src/views/home/components/rightContainer.vue 70 ●●●● patch | view | raw | blame | history
src/views/video/list.vue 58 ●●●●● patch | view | raw | blame | history
public/static/config.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-02-21 14:16:56
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-22 11:23:04
 * @LastEditTime: 2023-03-06 10:22:12
 * @FilePath: \srs-police-affairs\public\static\config.js
 * @Description: 
 * 
@@ -29,7 +29,7 @@
    VUE_APP_INTRANET_VIDEO: 'http://10.141.11.11:18185/api',
    // 设备通道号
    VUE_APP_OUTER_NET_EQUIPMENT: '34020000002000000003',
    VUE_APP_OUTER_NET_EQUIPMENT: '36110000002009999000',
    VUE_APP_INTRANET_EQUIPMENT: '36110000002009999000',
    // 模型地址
src/App.vue
@@ -2,20 +2,17 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 15:58:10
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-11 15:24:58
 * @LastEditTime: 2023-03-06 14:42:43
 * @FilePath: \srs-police-affairs\src\App.vue
 * @Description: app.vue
 * 
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved. 
-->
<template>
    <div
        id="app"
        :style="{
    <div id="app" :style="{
        width: (useSceen == true ? currentWidth + 'px' : '100%'),
        height: (useSceen == true ? currentHeight + 'px' : '100%')
    }"
    >
    }">
        <router-view></router-view>
    </div>
</template>
src/components/map/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 17:00:30
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-02 10:05:29
 * @LastEditTime: 2023-03-06 14:58:38
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -113,7 +113,23 @@
    '31',
    '32',
    '33',
    '34'
    '34',
    '35',
    '36',
    '37',
    '38',
    '39',
    '40',
    '41',
    '42',
    '43',
    '44',
    '45',
    '46',
    '47',
    '48',
    '49',
    '50'
]
var siteEntitylayers = null
@@ -280,21 +296,21 @@
            that.switchImg()
            // 外网
            global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
                    subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
                    format: 'image/jpeg',
                    show: true,
                    maximumLevel: 18
                })
            )
            // global.viewer.imageryLayers.addImageryProvider(
            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
            //         subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
            //         format: 'image/jpeg',
            //         show: true,
            //         maximumLevel: 18
            //     })
            // )
            global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: '/sryx/{z}/{x}/{y}.png',
                })
            )
            // global.viewer.imageryLayers.addImageryProvider(
            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
            //         url: '/sryx/{z}/{x}/{y}.png',
            //     })
            // )
            // 设置地图初始位置,角度等
            global.viewer.camera.setView({
src/styles/media/index.scss
@@ -2246,8 +2246,8 @@
                    .add-polygon-box {
                        .el-dialog {
                            width: countSizeVw(340, 1920);
                            height: countSizeVh(220);
                            width: countSizeVw(300, 1920);
                            height: countSizeVh(166);
                            .el-dialog__body {
                                .el-button {
@@ -2260,21 +2260,13 @@
                                }
                                .value-name-box {
                                    width: countSizeVh(110);
                                }
                                .alpha {
                                    width: calc(100% - countSizeVw(130, 1920));
                                    width: countSizeVh(90);
                                }
                                input {
                                    height: countSizeVh(30);
                                    font-size: countSizeVh(16);
                                    border: countSizeVh(1) solid rgb(0, 92, 169);
                                }
                                .placeholder {
                                    height: countSizeVh(26);
                                }
                            }
@@ -2284,7 +2276,7 @@
                    .edit-plot-box {
                        .el-dialog {
                            width: countSizeVw(300, 1920);
                            height: countSizeVh(220);
                            height: countSizeVh(180);
                            .el-dialog__body {
                                .el-button {
@@ -2301,10 +2293,6 @@
                                    height: countSizeVh(32);
                                    line-height: countSizeVh(32);
                                    width: countSizeVw(120, 1920);
                                }
                                .alpha {
                                    width: calc(100% - countSizeVw(130, 1920));
                                }
                                input {
src/views/activity/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-03 15:48:24
 * @LastEditTime: 2023-03-06 14:56:01
 * @FilePath: \srs-police-affairs\src\views\activity\index.vue
 * @Description: 安保活动
 *
@@ -103,13 +103,13 @@
                        </li>
                        <li>
                            <button @click="drawArrow('tailed_attack_arrow')" title="燕尾箭头">燕尾箭头</button>
                        </li>
                        <li>
                            <button @click="drawArrow('polygon')" title="多边形">多边形</button>
                    </li>
                    <li>
                        <button @click="drawArrow('polygon')" title="多边形">多边形</button>
                    </li>
                    <li>
                        <button @click="drawArrow('billboard','icon1')" title="头像1">头像1</button>
                    </li>
                        <li>
                            <button @click="drawArrow('billboard', 'icon1')" title="头像1">头像1</button>
                        </li>
                    </ul>
                </div>
                <div>
@@ -117,7 +117,7 @@
                    <ul>
                        <li>
                            <!-- <el-button
                                                                                                                                                                                                                                                                                                                                                                                                    ></el-button>-->
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ></el-button>-->
                            <button @click="draw('polyline', 'policecar')" title="巡逻路线">
                                <img src="../../../public/img/icon/route1.png" style="height:100%" />
                            </button>
@@ -406,18 +406,12 @@
        <el-dialog :title="polygonAddTitle" :modal="false" :visible.sync="polygonAddVisible" :close-on-click-modal="true"
            class="add-polygon-box" :before-close="cancelSavePolygon">
            <!-- <div class="line" v-show="isNeedName">
                <div class="value-name-box">设置名称:</div>
                <div>
                    <input type="text" v-model="polygonName" />
                </div>
            </div> -->
            <div class="line" v-show="isNeedPolygonType">
                <div class="value-name-box">选择类型:</div>
                <div class="select-type">
                    <el-select size="small" v-model="polygonAreaType" placeholder="请选择区域类型">
                       <el-option v-for="item in polygonAreaOption" :key="item.value" :label="item.label"
                           :value="item.value"></el-option>
                        <el-option v-for="item in polygonAreaOption" :key="item.value" :label="item.label"
                            :value="item.value"></el-option>
                    </el-select>
                </div>
            </div>
@@ -443,12 +437,6 @@
        <el-dialog title="修改标绘" :modal="false" :visible.sync="editPlotVisible" :close-on-click-modal="true"
            class="edit-plot-box">
            <!-- <div v-show="polygonName">
                <div class="value-name-box">设置名称:</div>
                <div>
                    <input type="text" v-model="polygonName" />
                </div>
            </div> -->
            <div>
                <div class="value-name-box">设置透明度:</div>
                <div class="alpha">
@@ -481,8 +469,6 @@
import { getEquipmentAll } from '@/api/home/index.js'
import flvjs from 'flv.js'
let analyseLayer = null
let analysePolygon = null
let drawLayers = null
let drawArrowLayers = null
let polylineAreaLayer = null
@@ -492,6 +478,7 @@
let plot = undefined
let arrowPlot = undefined
let lineLayer = undefined
let tc = undefined
let track = undefined
let loading = null
@@ -629,7 +616,6 @@
            policeSwitch: true,
            arrowBtnSwitch: true,
            polylineBtnSwitch: false,
            analyseInput: 100,
            activityList: [],
            activityDetails: {},
            boxShow: true,
@@ -696,8 +682,8 @@
            polygonName: '',
            polygonPositionStr: '',
            chooseColor: '#1CA085',
            choosePlotColor:  '#409EFF',
            choosePlotColorAlpha:48,
            choosePlotColor: '#409EFF',
            choosePlotColorAlpha: 48,
            chooseCarColor: '#1CA085',
            choosePoliceColor: '#1CA085',
            chooseLineData: {},
@@ -746,16 +732,16 @@
                video3: false,
                video4: false,
            },
            polygonAreaType:1,
            polygonAreaOption:[{
              value: 1,
              label: '核心区'
            polygonAreaType: 1,
            polygonAreaOption: [{
                value: 1,
                label: '核心区'
            }, {
              value: 2,
              label: '缓冲区'
                value: 2,
                label: '缓冲区'
            }],
            isNeedPolygonType:false,
            plotPointPositionStr:'',
            isNeedPolygonType: false,
            plotPointPositionStr: '',
        }
    },
@@ -785,11 +771,6 @@
    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)
@@ -826,6 +807,8 @@
                polylineAreaLayer = new global.DC.VectorLayer('polylineAreaLayer')
                global.viewer.addLayer(polylineAreaLayer)
            }
            tc = new global.DC.TrackController(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"
@@ -1387,12 +1370,21 @@
        },
        // 点击活动列表活动
        /**
         * @description: 点击活动列表活动
         * @param {*} item
         * @param {*} index
         * @return {*}
         */
        activityListClick (item, index) {
            if (this.currentClickIndex !== '' && this.currentClickIndex == index) {
                return
            }
            this.removeAll()
            this.removeAllArrow()
            arrowsListLayer.clear()
            this.showingSecurityId = item.id
            arrowsListLayer != null && arrowsListLayer.clear()
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'newDrawLayers',
                type: 'VectorLayer'
@@ -1402,10 +1394,20 @@
                layerName: 'polygonLayer',
                type: 'VectorLayer'
            })
            this.$EventBus.$emit('mapRemoveLayer', {
                layerName: 'monitoringLayers',
                type: 'VectorLayer'
            })
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
                type: 'VectorLayer'
            })
            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, ";")
@@ -1418,31 +1420,17 @@
                })
            }
            // 警力资源
            this.getSecurityPoliceList(item.id, this.policeSwitch)
            this.getSecurityCarList(item.id, this.policeSwitch, this.polylineBtnSwitch)
            // 作战标绘
            this.getSecurityPlotList(item.id, this.arrowBtnSwitch)
            if (this.currentClickIndex !== '' && this.currentClickIndex == index) {
                return
            }
            this.analyseInput = 100
            // 巡逻路线
            this.getSecurityCarList(item.id, this.policeSwitch, this.polylineBtnSwitch)
            this.activityDetails = item
            if (analyseLayer != null) {
                analyseLayer.clear()
            }
            let positionObj = this.convertBillboardPositionDate(item, 'activity')
            let point = new global.DC.Point(`${positionObj.lng}, ${positionObj.lat}`)
            analyseLayer.addOverlay(point)
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
                type: 'VectorLayer'
            })
            this.dialogVisible = true
            if (this.userInfo.dept_id == '1123598813738675201' || this.userInfo.dept_id == item.deptId) {
                this.isShowActivityEditBox = true
            } else {
@@ -1457,6 +1445,8 @@
                siteWd: positionObj.lat,
                siteGd: 1500
            })
            this.dialogVisible = true
        },
        // 切换轨警力资源显示
@@ -1476,17 +1466,6 @@
            this.getSecurityCarList(this.showingSecurityId, this.policeSwitch, this.polylineBtnSwitch)
        },
        // 输入绘制线范围
        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
@@ -1501,7 +1480,6 @@
            this.isTrackBtnShow = false
            this.closeVideo()
            this.currentClickIndex = ''
            analyseLayer.clear()
            arrowsListLayer.clear()
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
@@ -1536,15 +1514,23 @@
                    overlay.icon = '/img/policeCar.jfif'
                }
                if (overlay) {
                    drawLayers.addOverlay(overlay)
                    plot.edit(overlay, (e) => {
                        drawLayers.addOverlay(overlay)
                        // drawLayers.addOverlay(overlay)
                        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') {
@@ -1581,10 +1567,18 @@
        // 删除所有地图绘制元素
        removeAll () {
            drawLayers.clear()
            drawLayers != null && drawLayers.clear()
        },
        drawArrow (type,iconType) {
        /**
         * @description: 箭头
         * @return {*}
         */
        removeAllArrow () {
            drawArrowLayers != null && drawArrowLayers.clear()
        },
        drawArrow (type, iconType) {
            if (type == 'polygon') {
                const that = this
                let flag = false
@@ -1603,7 +1597,7 @@
                            // overlay.on(global.DC.MouseEventType.CLICK, this.polygonClick)
                            document.oncontextmenu = function () {
                                if (flag) {
                                    that.choosePlotColor =  '#409EFF'
                                    that.choosePlotColor = '#409EFF'
                                    that.choosePlotColorAlpha = 48
                                    that.polygonAreaType = 1
                                    that.isNeedName = true
@@ -1616,35 +1610,34 @@
                        })
                    }
                }, { material: global.DC.Color.RED })
            } else if (type == 'billboard'){
               console.log(11);
               const that = this
               let flag = false
            } else if (type == 'billboard') {
                console.log(11)
                const that = this
                let flag = false
                plot && plot.draw(type, overlay => {
                    if (iconType == 'icon1') {
                        overlay.icon = '/img/icon/icon1.png'
                        this.plotSaveType = 6
                    }
                    if (overlay) {
                    drawArrowLayers.addOverlay(overlay)
                    plot.edit(overlay, (e) => {
                        flag = true
                        console.log('overlay',overlay);
                        this.plotPointPositionStr = overlay._position._lng + ' ' + overlay._position._lat
                        document.oncontextmenu = function () {
                        drawArrowLayers.addOverlay(overlay)
                        plot.edit(overlay, (e) => {
                            flag = true
                            this.plotPointPositionStr = overlay._positions._lng + ' ' + overlay._positions._lat
                            document.oncontextmenu = function () {
                                if (flag) {
                                    that.choosePlotColor =  '#409EFF'
                                    that.choosePlotColor = '#409EFF'
                                    that.choosePlotColorAlpha = 48
                                    that.polygonAddVisible = true
                                    that.isNeedName = false
                                    flag = false
                                }
                            }
                    })
                }
                        })
                    }
                })
            }else {
            } else {
                const that = this
                let flag = false
                arrowPlot && arrowPlot.draw(type, overlay => {
@@ -1671,7 +1664,7 @@
                            drawArrowLayers.addOverlay(overlay)
                            document.oncontextmenu = function () {
                                if (flag) {
                                    that.choosePlotColor =  '#409EFF'
                                    that.choosePlotColor = '#409EFF'
                                    that.isNeedName = false
                                    that.isNeedPolygonType = false
                                    that.polygonAddVisible = true
@@ -1681,12 +1674,6 @@
                        })
                    }
                }, { material: global.DC.Color.RED })
            }
        },
        removeAllArrow () {
            if (drawArrowLayers != null) {
                drawArrowLayers.clear()
            }
        },
@@ -1949,25 +1936,25 @@
                        chooseArrow = new global.DC.Polygon(position)
                        arrowsListLayer.addOverlay(chooseArrow)
                        // 缓存区的话需要扣去包含的核心区
                        if(item.areaType == 2){
                        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=>{
                            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){
                                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=>{
                                    inItemPositionArr = inItemPositionArr.map(item => {
                                        return item.split(',').map(Number)
                                    })
                                    let carePolygon = this.$turf.polygon([inItemPositionArr])
                                    let isContains = this.$turf.booleanContains(cachePolygon, carePolygon);
                                    let isContains = this.$turf.booleanContains(cachePolygon, carePolygon)
                                    // 如果完全包含就作为洞面扣去
                                    if(isContains){
                                    if (isContains) {
                                        chooseArrow.holes = [inItem.position.slice(11, inItem.position.length - 1).replace(/,/g, ';').replace(/ /g, ',')]
                                    }
@@ -2035,12 +2022,12 @@
        // 单击。标绘箭头
        reeditArrowClick (e) {
            this.plotOverlayData = e
            this.choosePlotColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color.slice(0,7) :  '#409EFF'
            this.choosePlotColorAlpha = e.overlay.attrParams.color != '' ? Number(e.overlay.attrParams.color.split(',')[1]) :  48
            if(e.overlay.attrParams.item.type == 5){
            this.choosePlotColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color.slice(0, 7) : '#409EFF'
            this.choosePlotColorAlpha = e.overlay.attrParams.color != '' ? Number(e.overlay.attrParams.color.split(',')[1]) : 48
            if (e.overlay.attrParams.item.type == 5) {
                this.polygonAreaType = e.overlay.attrParams.item.areaType != '' ? e.overlay.attrParams.item.areaType : 1
                this.isNeedPolygonType = true
            }else{
            } else {
                this.isNeedPolygonType = false
            }
            // this.polygonName = e.overlay.attrParams.name
@@ -2351,8 +2338,6 @@
                tc.clear()
            }
            tc = new global.DC.TrackController(global.viewer)
            /**
             * @description: 
             * @param {*} position 当前行驶位置信息
@@ -2657,19 +2642,19 @@
        // 树形数据传数组
        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)
            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
            return arr
        },
        // 计算透明度值
        formatTooltip(val) {
            return val / 100;
        formatTooltip (val) {
            return val / 100
        },
    },
@@ -2754,23 +2739,22 @@
            type: 'VectorLayer'
        })
        analyseLayer.clear()
        arrowsListLayer.clear()
        lineLayer.clear()
        arrowsListLayer.remove()
        lineLayer.remove()
        if (pointCircleManLayer != null) {
            pointCircleManLayer.clear()
            pointCircleManLayer.remove()
        }
        if (pointCircleCarLayer != null) {
            pointCircleCarLayer.clear()
            pointCircleCarLayer.remove()
        }
        this.removeAll()
        this.removeAllArrow()
        if (tc) {
            tc.clear()
            tc.remove()
        }
        if (polylineAreaLayer) {
            polylineAreaLayer.clear()
            polylineAreaLayer.remove()
        }
        this.$parent.$parent.resize('0px')
src/views/home/components/leftContainer.vue
@@ -13,27 +13,19 @@
                    </div>-->
                </div>
                <div class="sub-tab" v-show="peopletype == 0">
                    <div
                        class="tab"
                        :class="{ 'select-on-tab': tabType == 0 }"
                        @click="personTabClick(0)"
                    >
                    <div class="tab" :class="{ 'select-on-tab': tabType == 0 }" @click="personTabClick(0)">
                        <div class="tab-title-small">户籍人口:</div>
                        <div class="tab-title-small">
                            {{
                            personAll.total ? personAll.total : 0
                                personAll.total ? personAll.total : 0
                            }}人
                        </div>
                    </div>
                    <div
                        class="tab"
                        :class="{ 'select-on-tab': tabType == 1 }"
                        @click="personTabClick(1)"
                    >
                    <div class="tab" :class="{ 'select-on-tab': tabType == 1 }" @click="personTabClick(1)">
                        <div class="tab-title-small">重点人员:</div>
                        <div class="tab-title-small">
                            {{
                            personAll.emphasisNum ? personAll.emphasisNum : 0
                                personAll.emphasisNum ? personAll.emphasisNum : 0
                            }}人
                        </div>
                    </div>
@@ -43,68 +35,39 @@
                    </div>-->
                </div>
                <div id="PersonEcharts" class="echarts-box"></div>
                <div
                    class="back"
                    title="返回上一级"
                    v-show="dataDeep == 2 && peopletype == 0 && showBack"
                    @click="backBegin"
                ></div>
                <div class="back" title="返回上一级" v-show="dataDeep == 2 && peopletype == 0 && showBack" @click="backBegin">
                </div>
            </div>
            <svg class="border-svg">
                <defs>
                    <path
                        id="border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    <path id="border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                        d="M0.27,0.03c52.66,0,105.34,0,158,0c1.67,2,3.33,4,5,6c1,0.33,2,0.67,3,1c1.33,1.67,2.67,3.33,4,5
                    c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                    c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                    c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                    c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                        fill="transparent"
                    />
                    <radialGradient
                        id="border-box-8-gradient-974b4d7cfafa444396861ca1d1173c8c"
                        cx="50%"
                        cy="50%"
                        r="50%"
                    >
                        c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                        c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                        c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                        c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z" fill="transparent" />
                    <radialGradient id="border-box-8-gradient-974b4d7cfafa444396861ca1d1173c8c" cx="50%" cy="50%" r="50%">
                        <stop offset="0%" stop-color="#fff" stop-opacity="1" />
                        <stop offset="100%" stop-color="#fff" stop-opacity="0" />
                    </radialGradient>
                    <mask id="border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c">
                        <circle
                            cx="0"
                            cy="0"
                            r="150"
                            fill="url(#border-box-8-gradient-974b4d7cfafa444396861ca1d1173c8c)"
                        >
                            <animateMotion
                                dur="8s"
                        <circle cx="0" cy="0" r="150" fill="url(#border-box-8-gradient-974b4d7cfafa444396861ca1d1173c8c)">
                            <animateMotion dur="8s"
                                path="M0.27,0.03c52.66,0,105.34,0,158,0c1.67,2,3.33,4,5,6c1,0.33,2,0.67,3,1c1.33,1.67,2.67,3.33,4,5
                        c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                        c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                        c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                        c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                                rotate="auto"
                                repeatCount="indefinite"
                            />
                            c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                            c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                            c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                            c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                                rotate="auto" repeatCount="indefinite" />
                        </circle>
                    </mask>
                </defs>
                <use
                    stroke-width="2"
                    xlink:href="#border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    mask="url(#border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c)"
                    stroke="#4fd2dd"
                >
                    <animate
                        attributeName="stroke-dasharray"
                        from="0, 1442"
                        to="1442, 0"
                        dur="8s"
                        repeatCount="indefinite"
                    />
                <use stroke-width="2" xlink:href="#border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    mask="url(#border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c)" stroke="#4fd2dd">
                    <animate attributeName="stroke-dasharray" from="0, 1442" to="1442, 0" dur="8s"
                        repeatCount="indefinite" />
                </use>
            </svg>
        </div>
@@ -112,40 +75,23 @@
            <div class="box">
                <div class="title">现有住宅</div>
                <div class="sub-tab">
                    <div
                        class="tab"
                        :class="{ 'select-on-tab': tabTypeTwo == 0 }"
                        @click="houseTabClick(0)"
                    >
                    <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 0 }" @click="houseTabClick(0)">
                        <div class="tab-title-small">实有楼栋:</div>
                        <div class="tab-title-small">{{ realHouseNum?realHouseNum: 0 }}栋</div>
                        <div class="tab-title-small">{{ realHouseNum ? realHouseNum : 0 }}栋</div>
                    </div>
                    <div
                        class="tab"
                        :class="{ 'select-on-tab': tabTypeTwo == 1 }"
                        @click="houseTabClick(1)"
                    >
                    <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 1 }" @click="houseTabClick(1)">
                        <div class="tab-title-small">关注场所:</div>
                        <div class="tab-title-small">{{ keyPlaceNum?keyPlaceNum: 0 }}栋</div>
                        <div class="tab-title-small">{{ keyPlaceNum ? keyPlaceNum : 0 }}栋</div>
                    </div>
                </div>
                <div id="houseEcharts" class="echarts-box"></div>
            </div>
            <svg class="border-svg">
                <use
                    stroke-width="2"
                    xlink:href="#border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    mask="url(#border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c)"
                    stroke="#4fd2dd"
                >
                    <animate
                        attributeName="stroke-dasharray"
                        from="0, 1442"
                        to="1442, 0"
                        dur="8s"
                        repeatCount="indefinite"
                    />
                <use stroke-width="2" xlink:href="#border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    mask="url(#border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c)" stroke="#4fd2dd">
                    <animate attributeName="stroke-dasharray" from="0, 1442" to="1442, 0" dur="8s"
                        repeatCount="indefinite" />
                </use>
            </svg>
        </div>
@@ -153,27 +99,19 @@
            <div class="box">
                <div class="title">现有地</div>
                <div class="sub-tab" v-show="isAllPoliceStation">
                    <div
                        class="tab"
                        :class="{ 'select-on-tab': tabTypeThree == 0 }"
                        @click="landTabClick(0)"
                    >
                    <div class="tab" :class="{ 'select-on-tab': tabTypeThree == 0 }" @click="landTabClick(0)">
                        <div class="tab-title-small">小区:</div>
                        <div class="tab-title-small">{{ villageNum?villageNum: 0 }}个</div>
                        <div class="tab-title-small">{{ villageNum ? villageNum : 0 }}个</div>
                    </div>
                    <div
                        class="tab"
                        :class="{ 'select-on-tab': tabTypeThree == 1 }"
                        @click="landTabClick(1)"
                    >
                    <div class="tab" :class="{ 'select-on-tab': tabTypeThree == 1 }" @click="landTabClick(1)">
                        <div class="tab-title-small">责任区:</div>
                        <div class="tab-title-small">{{ areaNum?areaNum: 0 }}个</div>
                        <div class="tab-title-small">{{ areaNum ? areaNum : 0 }}个</div>
                    </div>
                </div>
                <div class="sub-tab" v-show="!isAllPoliceStation">
                    <div class="tab1 select-on-tab">
                        <div class="tab-title-small">小区:</div>
                        <div class="tab-title-small">{{ villageNum?villageNum: 0 }}个</div>
                        <div class="tab-title-small">{{ villageNum ? villageNum : 0 }}个</div>
                    </div>
                </div>
@@ -181,19 +119,10 @@
            </div>
            <svg class="border-svg">
                <use
                    stroke-width="2"
                    xlink:href="#border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    mask="url(#border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c)"
                    stroke="#4fd2dd"
                >
                    <animate
                        attributeName="stroke-dasharray"
                        from="0, 1442"
                        to="1442, 0"
                        dur="8s"
                        repeatCount="indefinite"
                    />
                <use stroke-width="2" xlink:href="#border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                    mask="url(#border-box-8-mask-974b4d7cfafa444396861ca1d1173c8c)" stroke="#4fd2dd">
                    <animate attributeName="stroke-dasharray" from="0, 1442" to="1442, 0" dur="8s"
                        repeatCount="indefinite" />
                </use>
            </svg>
        </div>
@@ -1153,7 +1082,7 @@
                color: #fff;
            }
            & > div:nth-of-type(2) {
            &>div:nth-of-type(2) {
                font-size: 14px;
            }
        }
@@ -1181,7 +1110,7 @@
                align-items: center;
                justify-content: center;
                & > div {
                &>div {
                    height: 22px;
                    line-height: 22px;
                    white-space: nowrap;
src/views/home/components/rightContainer.vue
@@ -15,8 +15,9 @@
                        <el-table-column prop="contact" label="联系方式"></el-table-column>
                    </el-table>
                    <div class="pointList">
                        <el-tooltip class="item" effect="dark" :content="item.dept" placement="top" v-for="(item, index) in schedulingDeptList" :key="index">
                            <div class="point"  @click="getSchedlingList(item)">
                        <el-tooltip class="item" effect="dark" :content="item.dept" placement="top"
                            v-for="(item, index) in schedulingDeptList" :key="index">
                            <div class="point" @click="getSchedlingList(item)">
                            </div>
                        </el-tooltip>
                    </div>
@@ -116,7 +117,7 @@
let equimentDataLength = 0
import recorderArr from '@/assets/data/equimentsDate/recorder.js'
import { getSchedulingList,getSchedulingDeptList } from '@/api/home/index.js'
import { getSchedulingList, getSchedulingDeptList } from '@/api/home/index.js'
import { fontSize } from '@/utils/fontSize.js'
import { getCaseAll, getEquipment } from "@/api/home/index.js"
@@ -125,13 +126,13 @@
export default {
    inject: ['userInfo'],
    data() {
    data () {
        return {
            eventTime: [],
            pickerOptions: {
                shortcuts: [{
                    text: '最近一周',
                    onClick(picker) {
                    onClick (picker) {
                        const end = new Date()
                        const start = new Date()
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
@@ -139,7 +140,7 @@
                    }
                }, {
                    text: '最近一个月',
                    onClick(picker) {
                    onClick (picker) {
                        const end = new Date()
                        const start = new Date()
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
@@ -147,7 +148,7 @@
                    }
                }, {
                    text: '最近三个月',
                    onClick(picker) {
                    onClick (picker) {
                        const end = new Date()
                        const start = new Date()
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
@@ -159,14 +160,14 @@
            linetype: 0,
            tableHeight: 0,
            schedulingList: [],
            schedulingDeptList:[1,2,3,4,5,6,1,2,3,4,5,6],
            schedulingDeptList: [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6],
            policeStaionID: ''
        }
    },
    created() {
    created () {
        this.pickerOptions = {
            ...this.pickerOptions,
            disabledDate(time) {
            disabledDate (time) {
                // 设置可选择的日期为今天之后的一个月内
                let curDate = (new Date()).getTime()
                return time.getTime() > curDate
@@ -180,7 +181,7 @@
        this.getSchedulingDeptList()
    },
    mounted() {
    mounted () {
        this.getHomeAllData()
@@ -193,13 +194,13 @@
    methods: {
        //获取值班列表信息
        getSchedlingList(item){
        getSchedlingList (item) {
            this.$emit('showschedulingdetail', item.dept, item.dept, 'type')
        },
        //获取值班单位信息
        getSchedulingDeptList(){
            getSchedulingDeptList().then((res)=>{
                this.schedulingDeptList = res.data.data;
        getSchedulingDeptList () {
            getSchedulingDeptList().then((res) => {
                this.schedulingDeptList = res.data.data
            })
        },
        // actTabClick (type) {
@@ -213,7 +214,7 @@
         * @description: 获取当前组件内所有数据
         * @return {*}
         */
        getHomeAllData(id = '') {
        getHomeAllData (id = '') {
            this.policeStaionID = id
            this.initEventChangeEcharts()
@@ -232,22 +233,22 @@
            }, 600000)
        },
        getSchedulingList() {
        getSchedulingList () {
            const params = {
               sameday:1
                sameday: 1
            }
            getSchedulingList(1,100,params).then(res => {
            getSchedulingList(1, 100, params).then(res => {
                this.schedulingList = res.data.data.records
            })
        },
        echartsResize() {
        echartsResize () {
            equipmentmyChart && equipmentmyChart != null && equipmentmyChart.resize()
            eventchangemychart && eventchangemychart != null && eventchangemychart.resize()
        },
        // 案件统计中时间变化
        async caseTimeChange(e) {
        async caseTimeChange (e) {
            const date = e.map(item => {
                return this.dateFormat(item)
            })
@@ -258,7 +259,7 @@
        },
        // 设置默认时间
        defaultDate() {
        defaultDate () {
            var current = new Date()
            var seven = new Date(current.getTime() - 7 * 24 * 60 * 60 * 1000)
@@ -267,7 +268,7 @@
        },
        // 获取当前日期
        dateFormat(dateData) {
        dateFormat (dateData) {
            var date = new Date(dateData)
            var y = date.getFullYear()
            var m = date.getMonth() + 1
@@ -279,7 +280,7 @@
        },
        // 获取案件统计值
        getCaseAll(start, end) {
        getCaseAll (start, end) {
            const caseAll = getCaseAll(start, end, this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id).then(res => {
                if (res.data.length > 0) {
                    return res.data.reduce((previous, current) => {
@@ -296,7 +297,7 @@
        },
        // 初始化案件统计
        async initEventChangeEcharts() {
        async initEventChangeEcharts () {
            var chartDom = document.getElementById('EventChangeEcharts')
            if (eventchangemychart != null && eventchangemychart != '' && eventchangemychart != undefined) eventchangemychart.dispose()
@@ -313,7 +314,7 @@
        },
        // 案件统计的options
        initEventChangeOption(xData, yData) {
        initEventChangeOption (xData, yData) {
            let option
            if (xData.length == 0) {  //暂无数据
                option = {
@@ -417,7 +418,7 @@
        },
        // 现有设备统计
        getEquipment() {
        getEquipment () {
            const typeData = {
                carCount: '车辆',
                monitorCount: '摄像头',
@@ -480,7 +481,7 @@
        },
        // 现有设备饼图初始化
        async initEquipmentEcharts(type) {
        async initEquipmentEcharts (type) {
            this.linetype = type
            if (equipmentmyChart != null && equipmentmyChart != '' && equipmentmyChart != undefined) {
@@ -513,7 +514,7 @@
        },
        // 现有设备options饼图数据
        initEquipmentOptions(dataArr) {
        initEquipmentOptions (dataArr) {
            return {
                tooltip: {
                    trigger: 'item',
@@ -628,7 +629,7 @@
        },
        // 饼图轮播
        equipmentEchartsCarousel() {
        equipmentEchartsCarousel () {
            let curIndex = 0
            if (timer) {
                clearInterval(timer)
@@ -673,7 +674,7 @@
        },
        // 现有设备的点击事件(显示弹窗表格)
        clickEquimentChart() {
        clickEquimentChart () {
            equipmentmyChart.on('click', params => {
                // 设备类型,摄像头弹窗显示,其他弹窗显示,【记录仪列显示,警车列显示,手台列显示】,遍历数组
                if ('equimentType' in params.data) {
@@ -685,7 +686,7 @@
        },
    },
    destroyed() {
    destroyed () {
        window.removeEventListener("resize", this.echartsResize)
        if (equipmentmyChart) {
@@ -828,12 +829,13 @@
            padding: 0 12px;
            flex: 1;
            .pointList{
            .pointList {
                width: 100%;
                display: flex;
                justify-content: space-evenly;
                margin-top: 15px;
                .point{
                .point {
                    width: 12px;
                    height: 12px;
                    border-radius: 50px;
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-02-24 13:45:15
 * @LastEditTime: 2023-03-06 10:29:22
 * @FilePath: \srs-police-affairs\src\views\video\list.vue
 * @Description: 辖区管理
 * 
@@ -36,6 +36,14 @@
                                    node.data.name
                                }}
                            </span>
                            &nbsp;
                            <span v-show="node.data.number && node.data.number != -1">
                                ({{
                                    node.data.number
                                }}个)
                            </span>
                        </span>
                    </el-tree>
@@ -48,6 +56,14 @@
                                {{
                                    node.data.name
                                }}
                            </span>
                            &nbsp;
                            <span v-show="node.data.number && node.data.number != -1">
                                ({{
                                    node.data.number
                                }}个)
                            </span>
                        </span>
                    </el-tree>
@@ -88,12 +104,10 @@
            <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>
                    <el-color-picker v-model="chooseRangeColor" :predefine="predefineColors" size="small">
                    </el-color-picker>
                </div>
                </div>
            </div>
            <div>
                <button @click="saveDrawInfo">保存</button>
                <button @click="cancelSaveDrawInfo">取消</button>
@@ -168,20 +182,20 @@
            drawPlotData: {},
            chooseRangeColor: '#FF0000',
            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'
                '#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'
            ],
        }
    },
@@ -320,7 +334,7 @@
                        })
                    }
                }
            },{material: global.DC.Color.RED})
            }, { material: global.DC.Color.RED })
        },
        removeDrawLayer () {
@@ -458,7 +472,7 @@
                    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.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) {