guanqb
2023-01-06 5b05a7173b40c74a64cf3802ab91a07d97e2ed11
监控样式修改、搜索框隐藏问题解决
12 files modified
707 ■■■■■ changed files
public/index.html 4 ●●●● patch | view | raw | blame | history
src/api/home/index.js 30 ●●●●● patch | view | raw | blame | history
src/api/police/index.js 4 ●●●● patch | view | raw | blame | history
src/api/video/index.js 5 ●●●●● patch | view | raw | blame | history
src/components/map/components/mapPopup.vue 136 ●●●● patch | view | raw | blame | history
src/components/map/index.vue 69 ●●●●● patch | view | raw | blame | history
src/router/axios.js 6 ●●●● patch | view | raw | blame | history
src/styles/media/index.scss 9 ●●●●● patch | view | raw | blame | history
src/views/home/components/bottomContainer.vue 251 ●●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 100 ●●●● patch | view | raw | blame | history
src/views/home/index.vue 89 ●●●●● patch | view | raw | blame | history
src/views/layout/index.vue 4 ●●●● patch | view | raw | blame | history
public/index.html
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-09-07 09:34:58
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-09-28 09:03:27
 * @LastEditTime: 2023-01-06 17:01:58
 * @FilePath: \srs-police-affairs\public\index.html
 * @Description: 
 * 
@@ -17,7 +17,7 @@
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>affairs.ico">
    <title>
        社区警务平台
        信州公安VR指挥平台
    </title>
    <script src="./depend/vue.min.js"></script>
src/api/home/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-12-27 14:19:19
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-05 15:16:20
 * @LastEditTime: 2023-01-06 16:30:13
 * @FilePath: \srs-police-affairs\src\api\home\index.js
 * @Description: 
 * 
@@ -42,4 +42,32 @@
        method: 'get',
        params: {}
    })
}
// 获取接警历史记录
export const getAlarmList = (type, time) => {
    return request({
        url: `/api/alarm/alarm/page`,
        method: 'get',
        params: {
            current: 1,
            size: 100,
            type,
            time
        }
    })
}
// 获取处警历史
export const getActAsPoliceList = (alarmID, cjdwbh = '') => {
    return request({
        url: `/api/outAlarm/outAlarm/page`,
        method: 'get',
        params: {
            current: 1,
            size: 100,
            alarmID,
            cjdwbh
        }
    })
}
src/api/police/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-15 15:10:41
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-05 15:22:33
 * @LastEditTime: 2023-01-06 17:13:07
 * @FilePath: \srs-police-affairs\src\api\police\index.js
 * @Description: 
 * 
@@ -17,7 +17,7 @@
 */
export const getHistoricalTrack = (params, requestBaseUrl = 'outside') => {
    return request({
        url: `/api/position/history/${params.channelId}`,
        url: `/position/history/${params.channelId}`,
        method: 'get',
        requestBaseUrl,
        params: params
src/api/video/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-15 15:10:41
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-19 17:38:55
 * @LastEditTime: 2023-01-06 17:15:39
 * @FilePath: \srs-police-affairs\src\api\video\index.js
 * @Description: 
 * 
@@ -20,7 +20,8 @@
 */
export const getVideoList = (page, count, query, params = {}) => {
    return request({
        url: '/device/query/devices/34020000002000000003/channels',
        // 内网使用地址,外网把36110000002009999000更换掉
        url: '/device/query/devices/36110000002009999000/channels',
        method: 'get',
        requestBaseUrl: 'outside',
        params: {
src/components/map/components/mapPopup.vue
@@ -13,53 +13,91 @@
                            <div class="arrow-rb"></div>
                            <div class="label-wrap">
                                <div class="title">
                                    详细信息
                                    警情信息
                                    <div class="details-btn" @click="popupDetailShow">详情>>></div>
                                    <div class="close" @click="closePopup" title="关闭"></div>
                                </div>
                                <div class="change-btn">
                                    <div class="on">接警信息</div>
                                    <div>出警信息</div>
                                    <div @click="currentBtn = '接警信息'" :class="{ on: currentBtn == '接警信息' }">接警信息</div>
                                    <div @click="currentBtnChange('出警信息')" :class="{ on: currentBtn == '出警信息' }">出警信息
                                    </div>
                                </div>
                                <div class="label-content">
                                <div v-show="currentBtn == '接警信息'" class="label-content">
                                    <div class="item">
                                        <div>警情类别:</div>
                                        <div>{{ dataPopup.type }}</div>
                                        <div>接警单位:</div>
                                        <div>{{ dataPopup.JJDWMC }}</div>
                                    </div>
                                    <div class="item">
                                        <div>接警员:</div>
                                        <div>{{ dataPopup.JJYXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>接警时间:</div>
                                        <div>{{ dataPopup.dealTime }}</div>
                                    </div>
                                    <div class="item">
                                        <div>警情状态:</div>
                                        <div>{{ dataPopup.state }}</div>
                                    </div>
                                    <div class="item">
                                        <div>经办民警:</div>
                                        <div>{{ dataPopup.dealPolice }}</div>
                                        <div>{{ dataPopup.JJSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警人:</div>
                                        <div>{{ dataPopup.callPeople }}</div>
                                        <div>{{ dataPopup.BJRXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警电话:</div>
                                        <div>{{ dataPopup.comingPhone }}</div>
                                        <div>联系电话:</div>
                                        <div>{{ dataPopup.LXDH }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警人联系人:</div>
                                        <div>{{ dataPopup.callPhone }}</div>
                                        <div>联系电话:</div>
                                        <div>{{ dataPopup.BJNR }}</div>
                                    </div>
                                    <div class="item">
                                        <div>所属派出所:</div>
                                        <div>{{ dataPopup.policeName }}</div>
                                        <div>事发地址:</div>
                                        <div>{{ dataPopup.SFDZ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>经度:</div>
                                        <div>{{ dataPopup.position[0] }}</div>
                                        <div>报警类型:</div>
                                        <div>{{ dataPopup.BJLX }}</div>
                                    </div>
                                    <div class="item">
                                        <div>纬度:</div>
                                        <div>{{ dataPopup.position[1] }}</div>
                                        <div>备注:</div>
                                        <div>{{ dataPopup.MEMO }}</div>
                                    </div>
                                </div>
                                <div v-show="currentBtn == '出警信息'" class="label-content">
                                    <div class="item">
                                        <div>处警单位:</div>
                                        <div>{{ CJdata.CJDWMC }}</div>
                                    </div>
                                    <div class="item">
                                        <div>处警员:</div>
                                        <div>{{ CJdata.CJYXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>接警时间:</div>
                                        <div>{{ CJdata.JJSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>出动人员:</div>
                                        <div>{{ CJdata.CDRY }}</div>
                                    </div>
                                    <div class="item">
                                        <div>出动车辆:</div>
                                        <div>{{ CJdata.CDCL }}</div>
                                    </div>
                                    <div class="item">
                                        <div>到达现场时间:</div>
                                        <div>{{ CJdata.DDXCSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>处理完毕时间:</div>
                                        <div>{{ CJdata.CLWBSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>处警类型:</div>
                                        <div>{{ CJdata.CJLX }}</div>
                                    </div>
                                    <div class="item">
                                        <div>备注:</div>
                                        <div>{{ CJdata.MEMO }}</div>
                                    </div>
                                </div>
                            </div>
@@ -76,8 +114,17 @@
<script>
import { mapGetters } from 'vuex'
import { getActAsPoliceList } from "@/api/home/index.js"
export default {
    name: 'mapPopup',
    data () {
        return {
            currentBtn: '接警信息',
            CJdata: {}
        }
    },
    computed: {
        ...mapGetters([
            'detailsPopup',
@@ -86,7 +133,21 @@
    },
    methods: {
        closePopup () {
            this.currentBtn = '接警信息'
            this.$store.commit('SET_DETAILSPOPUP', false)
        },
        currentBtnChange (type) {
            this.currentBtn = type
            this.CJdata = {}
            getActAsPoliceList(this.dataPopup.JJDBH, '').then(res => {
                this.CJdata = res.data.data.records
            })
        },
        popupDetailShow () {
            this.$EventBus.$emit('policeSituationSiteClick', this.dataPopup)
        }
    }
}
@@ -124,7 +185,7 @@
.divForms .area {
    position: relative;
    min-width: 420px;
    min-width: 360px;
}
.divForms-wrap {
@@ -220,12 +281,13 @@
        }
        &>div.on {
            border-bottom: 2px solid #1831a7;
            color: #3d95f3;
            border-bottom: 2px solid #3d95f3;
        }
    }
    .label-content {
        padding: 4px 0;
        padding: 10px 0;
        .item {
            display: flex;
@@ -237,7 +299,7 @@
            text-align: left;
            &>div:first-child {
                width: 96px;
                width: 112px;
                text-align: justify;
                display: inline-block;
                text-align-last: justify;
@@ -260,10 +322,22 @@
    height: 36px;
    line-height: 36px;
    .details-btn {
        position: absolute;
        top: 0;
        right: 28px;
        height: 100%;
        cursor: pointer;
    }
    .details-btn:hover {
        color: #3d95f3;
    }
    .close {
        position: absolute;
        right: 5px;
        top: -2px;
        top: 0;
    }
    .close::before {
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: 2022-12-30 13:59:43
 * @LastEditTime: 2023-01-06 16:59:43
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -15,37 +15,20 @@
        <!-- 全屏控制按钮 -->
        <div class="screen-full-btn">
            <el-tooltip v-if="isFullscreen" content="缩放" placement="bottom" effect="dark">
                <i
                    class="fa fa-compress"
                    style="vertical-align: middle; cursor: pointer"
                    @click="fullscreenchange"
                ></i>
                <i class="fa fa-compress" style="vertical-align: middle; cursor: pointer" @click="fullscreenchange"></i>
            </el-tooltip>
            <el-tooltip v-if="!isFullscreen" content="全屏" placement="bottom" effect="dark">
                <i
                    class="fa fa-expand"
                    style="vertical-align: middle; cursor: pointer"
                    @click="fullscreenchange"
                ></i>
                <i class="fa fa-expand" style="vertical-align: middle; cursor: pointer" @click="fullscreenchange"></i>
            </el-tooltip>
        </div>
        <!-- 切换矢量图按钮 -->
        <div
            class="image-switch-icon-btn"
            title="切换影像"
            @mouseover="showImgBtn = true"
            @mouseleave="showImgBtn = false"
        >
        <div class="image-switch-icon-btn" title="切换影像" @mouseover="showImgBtn = true" @mouseleave="showImgBtn = false">
            <div class="icon-box">
                <img src="/img/base_map.png" alt />
            </div>
            <div
                class="image-switch-img-btn"
                v-show="showImgBtn"
                @mouseover="showImgBtn = true"
                @mouseleave="showImgBtn = false"
            >
            <div class="image-switch-img-btn" v-show="showImgBtn" @mouseover="showImgBtn = true"
                @mouseleave="showImgBtn = false">
                <div class="img" @click="switchImg">
                    <span :class="{ on: imgtype == 0 }">影像</span>
                </div>
@@ -188,29 +171,29 @@
            // global.viewer.addTerrain(terrain)
            // 天地图 影像
            global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_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=img_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.WebMapTileServiceImageryProvider({
            //         url: "http://10.141.11.11:8090/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
            //         layer: "wmts_4326_361100",
            //         style: "default",
            //         format: "image/png",
            //         tileMatrixSetID: "c",
            //         tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
            //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
            //     })
            // )
            global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
                    url: "http://10.141.11.11:8090/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
                    layer: "wmts_4326_361100",
                    style: "default",
                    format: "image/png",
                    tileMatrixSetID: "c",
                    tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
                    tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
                })
            )
            // 设置地图初始位置,角度等
            global.viewer.camera.setView({
src/router/axios.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-07-29 15:19:13
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-03 10:58:13
 * @LastEditTime: 2023-01-06 17:13:56
 * @FilePath: \srs-police-affairs\src\router\axios.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
@@ -46,8 +46,8 @@
            // config.baseURL = "http://192.168.0.129:18185/api"
        } else if (config.requestBaseUrl == "fengt") {
            // feng tu 数据
            // config.baseURL = "http://10.141.11.11:18080"
            config.baseURL = "http://192.168.0.112:18080"
            config.baseURL = "http://10.141.11.11:18080"
            // config.baseURL = "http://192.168.0.112:18080"
        } else if (config.requestBaseUrl == "fengtDS") {
            config.baseURL = "http://192.168.0.112:9091"
        }
src/styles/media/index.scss
@@ -739,7 +739,7 @@
                                    &>.park-content,
                                    &>.business-content {
                                        height: countSizeVh(380);
                                        .el-table__header-wrapper {
                                            height: countSizeVh(48);
@@ -774,7 +774,7 @@
                                            font-size: countSizeVh(16);
                                        }
                                    }
                                }
@@ -2394,7 +2394,7 @@
                    }
                    .area {
                        min-width: countSizeVw(420, 1920);
                        min-width: countSizeVw(360, 1920);
                    }
                    .b-t {
@@ -2430,7 +2430,7 @@
                    }
                    .label-content {
                        padding: countSizeVh(4) 0;
                        padding: countSizeVh(10) 0;
                    }
@@ -2451,7 +2451,6 @@
                            .close {
                                right: countSizeVw(5, 1920);
                                top: countSizeVh(-2);
                            }
                            .close::before {
src/views/home/components/bottomContainer.vue
@@ -12,12 +12,12 @@
                        start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> -->
                    <el-date-picker @change="datePickerChange" v-show="timetype == 0" v-model="currentTime" type="week"
                        format="yyyy 第 WW 周" :picker-options="pickerOptions" placeholder="选择周">
                    <el-date-picker @change="datePickerChange" v-show="timetype == 0" v-model="currentWeekTime"
                        type="week" format="yyyy 第 WW 周" :picker-options="pickerOptions" placeholder="选择周">
                    </el-date-picker>
                    <el-date-picker @change="datePickerChange" v-show="timetype == 1" v-model="currentTime" type="month"
                        :picker-options="pickerOptions" placeholder="选择月">
                    <el-date-picker @change="datePickerChange" v-show="timetype == 1" v-model="currentMonthTime"
                        type="month" :picker-options="pickerOptions" placeholder="选择月">
                    </el-date-picker>
                </div>
                <div class="history-tab">
@@ -51,15 +51,15 @@
                        <li v-for="(item, index) in listCurrentData" :key="index" :data-obj="JSON.stringify(item)"
                            class="row">
                            <span class="num" v-text="index + 1"></span>
                            <span class="receiving-alarm-unit" v-text="JJDWMC"></span>
                            <span class="receiving-alarm-people" v-text="JJYXM"></span>
                            <span class="receiving-alarm-time" v-text="JJSJ"></span>
                            <span class="call-people" v-text="BJRXM"></span>
                            <span class="call-phone" v-text="LXDH"></span>
                            <span class="call-police-content" v-text="BJNR"></span>
                            <span class="incident-site" v-text="SFDZ"></span>
                            <span class="call-police-type" v-text="BJLX"></span>
                            <span class="alarm-bz" v-text="MEMO"></span>
                            <span class="receiving-alarm-unit" v-text="item.JJDWMC"></span>
                            <span class="receiving-alarm-people" v-text="item.JJYXM"></span>
                            <span class="receiving-alarm-time" v-text="item.JJSJ"></span>
                            <span class="call-people" v-text="item.BJRXM"></span>
                            <span class="call-phone" v-text="item.LXDH"></span>
                            <span class="call-police-content" :title="item.BJNR" v-text="item.BJNR"></span>
                            <span class="incident-site" v-text="item.SFDZ"></span>
                            <span class="call-police-type" v-text="item.BJLX"></span>
                            <span class="alarm-bz" v-text="item.MEMO"></span>
                        </li>
                    </ul>
                </vue-seamless-scroll>
@@ -105,7 +105,7 @@
import vueSeamlessScroll from 'vue-seamless-scroll'
import historyArr from '@/assets/data/policeSituationArr/historyArr.js'
import { getCallPolices, getAnswerPolices } from "@/api/home/index.js"
import { getCallPolices, getAnswerPolices, getAlarmList } from "@/api/home/index.js"
export default {
    data () {
@@ -118,7 +118,8 @@
            policeSituationHistoryArr: [],
            policeSituationHistorySaveArr: [],
            eventTime: '',
            currentTime: '',
            currentWeekTime: '',
            currentMonthTime: '',
            pickerOptions: {}, // 日期设置对象
            classOption: {
                step: 1
@@ -151,14 +152,7 @@
    },
    created () {
        this.policeSituationHistoryArr = historyArr
        this.policeSituationHistorySaveArr = historyArr
        this.getAnswerPolices()
        setInterval(() => {
            console.log(this.currentTime)
        }, 5000)
        // disabledDate 为true表示不可选,false表示可选
        this.pickerOptions = {
@@ -178,10 +172,12 @@
    },
    methods: {
        // 时间改变事件
        datePickerChange (e) {
            // this.timetype
            const dateStr = this.dateFormat(e)
            this.getAlarmList(this.timetype, dateStr)
        },
        // 获取当前日期
@@ -196,94 +192,141 @@
            return time
        },
        // 获取实时接警记录
        getAnswerPolices () {
            // getCallPolices().then(res => {
            //     res.data.result
            // })
            // getAnswerPolices().then(res => {
            //     this.policeSituationRealtimeArr = res.data.result
            // })
            this.policeSituationRealtimeArr = [
                {
                    JJDW: '公安局',
                    position: [112, 28]
                },
                {
                    JJDW: '派出所'
                },
            ]
            this.policeSituationRealtimeArr = [{
                ZDDWXZB: 112,
                ZDDWYZB: 25,
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所,今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            },
            {
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所,今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            },
            {
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            },
            {
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            },
            {
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            },
            {
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            },
            {
                JJDWMC: '信州公安局派出所',
                JJYXM: '欧阳西门',
                JJSJ: '2022-12-12 12:12:12',
                BJRXM: '西门庆祝',
                LXDH: 17335843642,
                BJNR: '今日在某小区查获私人赌博场所',
                SFDZ: '上饶市信州区万达华府小区',
                BJLX: '聚众赌博',
                MEMO: '人群聚集赌博'
            }]
        },
        // 获取历史接警记录
        getAlarmList (type, time) {
            getAlarmList(type, time).then(res => {
                this.policeSituationHistoryArr = res.data.data.records
            })
        },
        // 周月选择
        timeTabClick (type) {
            this.timetype = type
            if (type == 0) {
                this.getAlarmList(type, this.dateFormat(this.currentWeekTime))
            } else {
                this.currentMonthTime == '' ? this.currentMonthTime = new Date() : ''
                this.getAlarmList(type, this.dateFormat(this.currentMonthTime))
            }
            this.$emit('changePoliceSituationTimeType', type)
            this.$emit('policeSituationChange')
        },
        // 实时历史选择
        historyTabClick (type) {
            this.historytype = type
            this.currentWeekTime = new Date()
            if (type == 0) {
                this.getAnswerPolices()
            } else {
                this.policeSituationHistoryArr = this.chooseMouthTimeDate(this.policeSituationHistorySaveArr)
                this.getAlarmList(type, this.dateFormat(this.currentWeekTime))
            }
        },
        historyTabClick (type) {
            this.historytype = type
            this.$emit('changePoliceSituationHistoryType', type)
            this.$emit('policeSituationChange')
        },
        chooseWeekTimeDate (arr) {
            let lastWeekArr = []
            let realtimeTimeStamp = new Date().valueOf() - 24 * 60 * 60 * 1000
            let lastWeekTimeStamp = new Date().valueOf() - 7 * 24 * 60 * 60 * 1000
            arr.forEach(item => {
                if (new Date(item.dealTime).valueOf() < realtimeTimeStamp && new Date(item.dealTime).valueOf() > lastWeekTimeStamp) {
                    lastWeekArr.push(item)
                }
            })
            return lastWeekArr
        chooseWeekTimeDate () {
            return this.policeSituationHistoryArr
        },
        chooseMouthTimeDate (arr) {
            let lastMouthArr = []
            let realtimeTimeStamp = new Date().valueOf() - 24 * 60 * 60 * 1000
            let lastMouthTimeStamp = new Date().valueOf() - 30 * 24 * 60 * 60 * 1000
            arr.forEach(item => {
                if (new Date(item.dealTime).valueOf() < realtimeTimeStamp && new Date(item.dealTime).valueOf() > lastMouthTimeStamp) {
                    lastMouthArr.push(item)
                }
            })
            return lastMouthArr
        chooseMouthTimeDate () {
            return this.policeSituationHistoryArr
        },
        policeSituationClick (item) {
            if (item.position) {
                this.$EventBus.$emit('toPosition', {
                    layerName: 'policeSituationyLayers',
                    siteJd: Number(item.position[0]),
                    siteWd: Number(item.position[1])
                })
                this.$store.commit('SET_DETAILSPOPUP', true)
                this.$store.commit('SET_DATAPOPUP', item)
                var popup = new global.DC.DivForms(global.viewer, {
                    domId: 'divFormsDomBox',
                    position: [
                        global.DC.Transform.transformWGS84ToCartesian(
                            new global.DC.Position(
                                Number(item.position[0]),
                                Number(item.position[1]),
                                0
                            )
                        )
                    ]
                })
            } else {
                this.$emit('policeSituationSiteClick', item)
            }
        },
        // 列表行选择
        handleSelectClick (e) {
            let element
            for (let i = 0; i < e.path.length; i++) {
@@ -296,8 +339,36 @@
            let currentItem = JSON.parse(element.dataset.obj)
            this.policeSituationClick(currentItem)
        }
        },
        // 点击定位或者显示弹窗
        policeSituationClick (item) {
            if (item.ZDDWXZB && item.ZDDWXZB != 0 && item.ZDDWYZB && item.ZDDWYZB != 0) {
                this.$EventBus.$emit('toPosition', {
                    layerName: 'policeSituationyLayers',
                    siteJd: Number(item.ZDDWXZB),
                    siteWd: Number(item.ZDDWYZB)
                })
                this.$store.commit('SET_DETAILSPOPUP', true)
                this.$store.commit('SET_DATAPOPUP', item)
                var popup = new global.DC.DivForms(global.viewer, {
                    domId: 'divFormsDomBox',
                    position: [
                        global.DC.Transform.transformWGS84ToCartesian(
                            new global.DC.Position(
                                Number(item.ZDDWXZB),
                                Number(item.ZDDWYZB),
                                0
                            )
                        )
                    ]
                })
            } else {
                this.$emit('policeSituationSiteClick', item)
            }
        }
    }
}
</script>
@@ -435,6 +506,12 @@
                display: flex;
                cursor: pointer;
                span {
                    overflow: hidden;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                }
                .num {
                    width: 6%;
                }
src/views/home/components/leftContainer.vue
@@ -4,28 +4,28 @@
            <div class="box">
                <div class="title">
                    <div class="title-tab">
                        <span :class="{ choosed: peopletype == 0 }" @click="peopleTabClick(0)">现有人员</span>/
                        <span :class="{ choosed: peopletype == 1 }" @click="peopleTabClick(1)">重点人员</span>
                        <span :class="{ choosed: peopletype == 0 }" @click="peopleTabClick(0)">现有人员</span>
                        <!-- <span :class="{ choosed: peopletype == 1 }" @click="peopleTabClick(1)">重点人员</span> -->
                    </div>
                    <div class="title-num">
                    <!-- <div class="title-num">
                        共
                        <span :class="{ choosed: peopletype == 0 }">100</span>/
                        <span :class="{ choosed: peopletype == 0 }">100</span>人
                        <span :class="{ choosed: peopletype == 1 }">1</span>人
                    </div>
                    </div> -->
                </div>
                <div class="sub-tab" v-show="peopletype == 0">
                    <div class="tab3" :class="{ 'select-on-tab': tabType == 0 }" @click="personTabClick(0)">
                        <div class="num">164.57万人</div>
                        <div class="type">户籍人口</div>
                    <div class="tab" :class="{ 'select-on-tab': tabType == 0 }" @click="personTabClick(0)">
                        <div class="tab-title-small">户籍人口:</div>
                        <div class="tab-title-small">164.57万人</div>
                    </div>
                    <div class="tab3" :class="{ 'select-on-tab': tabType == 1 }" @click="personTabClick(1)">
                        <div class="num">17.52万人</div>
                        <div class="type">流动人口</div>
                    <div class="tab" :class="{ 'select-on-tab': tabType == 1 }" @click="personTabClick(1)">
                        <div class="tab-title-small">重点人员:</div>
                        <div class="tab-title-small">1人</div>
                    </div>
                    <div class="tab3" :class="{ 'select-on-tab': tabType == 2 }" @click="personTabClick(2)">
                    <!-- <div class="tab3" :class="{ 'select-on-tab': tabType == 2 }" @click="personTabClick(2)">
                        <div class="num">91995人</div>
                        <div class="type">境外人口</div>
                    </div>
                    </div> -->
                </div>
                <div id="PersonEcharts" class="echarts-box"></div>
                <div class="back" title="返回上一级" v-show="dataDeep == 2 && peopletype == 0" @click="backBegin"></div>
@@ -132,7 +132,7 @@
const myLandColors = ['#4150d8', '#28bf7e', '#ed7c2f', '#f2a93b', '#f9cf36', '#4a5bdc', '#4cd698', '#f4914e', '#fcb75b', '#ffe180', '#b6c2ff', '#96edc1']
export default {
    data () {
    data() {
        return {
            tabType: 0,
            peopletype: 0,
@@ -253,7 +253,7 @@
            keyPersonSelectSaveArr: [],
        }
    },
    mounted () {
    mounted() {
        this.initLandEcharts()
        this.initPersonEcharts()
        this.inithouseEcharts()
@@ -265,20 +265,20 @@
        })
    },
    methods: {
        echartsResize () {
        echartsResize() {
            homePersonmyChart && homePersonmyChart != null && homePersonmyChart.resize()
            landMyChart && landMyChart != null && landMyChart.resize()
            keyPersonmyChart && keyPersonmyChart != null && keyPersonmyChart.resize()
            houseMyChart && houseMyChart != null && houseMyChart.resize()
        },
        initPersonEcharts () {
        initPersonEcharts() {
            var chartDom = document.getElementById('PersonEcharts')
            homePersonmyChart = this.$echarts.init(chartDom)
            homePersonmyChart.setOption(this.initPersonOptions(['车站所', '沙溪所', '灵溪所', '北门所', '江光所'], [881, 2211, 6414, 4321, 1232], ['#06B5D7', '#44C0C1', '#71C8B1']))
        },
        initPersonOptions (xDate, yDate, colors) {
        initPersonOptions(xDate, yDate, colors) {
            return {
                tooltip: {
                    trigger: 'item',
@@ -355,34 +355,32 @@
            }
        },
        personTabClick (type) {
        personTabClick(type) {
            this.tabType = type
            this.dataDeep = 1
            let xDate, yDate, colors
            if (type == 0) {
                homePersonmyChart.dispose()
                this.initPersonEcharts()
                homePersonmyChart.off('click')
                this.clickPeopleChart()
                xDate = ['车站所', '沙溪所', '灵溪所', '北门所', '江光所']
                yDate = [881, 2211, 6414, 4321, 1232]
                colors = ['#06B5D7', '#44C0C1', '#71C8B1']
                homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate, colors), true)
            } else if (type == 1) {
                xDate = ['湖北', '上海', '北京', '广东', '浙江']
                yDate = [6414, 4231, 2211, 1231, 881]
                colors = ['#ef9faa', '#f7bfc6', '#fedade']
            } else if (type == 2) {
                xDate = ['日本', '美国', '俄罗斯', '英国', '印度']
                yDate = [881, 1231, 2211, 4321, 6414]
                colors = ['#7d65c0', '#a47db4', '#e0a8c5']
                this.peopleTabClick(type);
            }
            homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate, colors), true)
        },
        inithouseEcharts () {
        inithouseEcharts() {
            var chartDom = document.getElementById('houseEcharts')
            houseMyChart = this.$echarts.init(chartDom)
            houseMyChart.setOption(this.initHouseOptions(['商业房屋', '居民住宅', '公共用房', '文化场所', '政府建筑'], [88188, 1222211, 464104, 43201, 12302], [{ 'value': 1222211, 'realValue': 88188 }, { 'value': 1222211, 'realValue': 1222211 }, { 'value': 1222211, 'realValue': 464104 }, { 'value': 1222211, 'realValue': 43201 }, { 'value': 1222211, 'realValue': 12302 }]))
        },
        initHouseOptions (xDate, y1Date, y2Date) {
        initHouseOptions(xDate, y1Date, y2Date) {
            return {
                tooltip: {
                    trigger: 'item',
@@ -472,7 +470,7 @@
            }
        },
        houseTabClick (type) {
        houseTabClick(type) {
            this.tabTypeTwo = type
            let xDate, y1Date, y2Date
@@ -489,13 +487,13 @@
            houseMyChart.setOption(this.initHouseOptions(xDate, y1Date, y2Date), true)
        },
        initLandEcharts () {
        initLandEcharts() {
            var chartDom = document.getElementById('landEcharts')
            landMyChart = this.$echarts.init(chartDom)
            landMyChart.setOption(this.initLandOptions(['车站所', '沙溪所', '灵溪所', '北门所', '江光所', '水南所', '秦峰所', '茅家岭所', '西市所', '朝阳所'], [6414, 2211, 4321, 1232, 881, 6414, 2211, 4321, 1232, 881]))
        },
        initLandOptions (xDate, yDate) {
        initLandOptions(xDate, yDate) {
            return {
                grid: {
                    top: '4%',
@@ -581,7 +579,7 @@
            }
        },
        landTabClick (type) {
        landTabClick(type) {
            this.tabTypeThree = type
            let xDate, yDate
@@ -596,8 +594,8 @@
            landMyChart.setOption(this.initLandOptions(xDate, yDate), true)
        },
        peopleTabClick (type) {
            this.peopletype = type
        peopleTabClick(type) {
            // this.peopletype = type
            homePersonmyChart.dispose()
            this.$nextTick(() => {
                if (type == 0) {
@@ -613,7 +611,7 @@
            })
        },
        clickPeopleChart () {
        clickPeopleChart() {
            homePersonmyChart.on('click', params => {
                let xDate, yDate, colors
                this.dataDeep = 2
@@ -698,7 +696,7 @@
            })
        },
        clickLandChart () {
        clickLandChart() {
            landMyChart.on('click', params => {
                this.landVisible = true
                this.landTitle = params.name
@@ -710,7 +708,7 @@
            })
        },
        clickkeyPersonChart () {
        clickkeyPersonChart() {
            keyPersonmyChart.on('click', params => {
                let keyPersonDetailNewArr = []
                this.keyPersonSelectArr.some((item) => {
@@ -722,14 +720,14 @@
            })
        },
        initkeyPersonEcharts () {
        initkeyPersonEcharts() {
            var chartDom = document.getElementById('PersonEcharts')
            keyPersonmyChart = this.$echarts.init(chartDom)
            let dataArr = this.getKeyPersonCount(this.keyPersonSelectArr)
            keyPersonmyChart.setOption(this.initkeyPersonOption(dataArr))
        },
        initkeyPersonOption (dataArr) {
        initkeyPersonOption(dataArr) {
            return {
                tooltip: {
                    trigger: 'item',
@@ -745,8 +743,8 @@
                    }
                },
                legend: {
                    left: '48%',
                    y: '10%',
                    left: '45%',
                    y: '1%',
                    itemGap: 20,
                    textStyle: {
                        color: '#fff'
@@ -767,8 +765,8 @@
                    {
                        name: '',
                        type: 'pie',
                        radius: ['40%', '70%'],
                        center: ['24%', '57%'],
                        radius: ['30%', '60%'],
                        center: ['22%', '55%'],
                        avoidLabelOverlap: false,
                        label: {
                            show: false,
@@ -789,7 +787,7 @@
            }
        },
        selectPoliceChangeData (name) {
        selectPoliceChangeData(name) {
            if (this.peopletype == 0 && this.tabType == 0) {
                let xDate, yDate, colors
                if (name == '车站所') {
@@ -847,7 +845,7 @@
        },
        backBegin () {
        backBegin() {
            this.dataDeep = 1
            let xDate, yDate, colors
            if (this.tabType == 0) {
@@ -866,7 +864,7 @@
            homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate, colors), true)
        },
        getKeyPersonCount (arr) {
        getKeyPersonCount(arr) {
            let valueArr = [0, 0, 0, 0, 0, 0, 0]
            arr.some(item => {
                if (item.type == '涉恐人员') {
@@ -897,7 +895,7 @@
            return KeyPersonDataArr
        },
        selectAreaChangeData (name) {
        selectAreaChangeData(name) {
            if (this.peopletype == 1) {
                if (this.peopletype == 1 && name != '全部') {
                    let arr = []
@@ -921,7 +919,7 @@
    },
    destroyed () {
    destroyed() {
        window.removeEventListener("resize", this.echartsResize)
        if (homePersonmyChart) {
@@ -1071,6 +1069,10 @@
                background: $sub-tab-bg-color;
                border-radius: 8px;
                cursor: pointer;
                height: 22px;
                display: flex;
                align-items: center;
                justify-content: center;
                &>div {
                    height: 22px;
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-01-05 17:04:32
 * @LastEditTime: 2023-01-06 15:44:39
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -348,6 +348,14 @@
                    :class="{ on: policeInformationType == '出警信息' }"
                    @click="policeInformationType = '出警信息'"
                >出警信息</div>
                <div
                    :class="{ on: policeInformationType == '接警信息' }"
                    @click="alarmOrActAsPolice('接警信息')"
                >接警信息</div>
                <div
                    :class="{ on: policeInformationType == '出警信息' }"
                    @click="alarmOrActAsPolice('出警信息')"
                >出警信息</div>
            </div>
            <div v-show="policeInformationType == '接警信息'" class="box">
@@ -405,7 +413,62 @@
                </div>
            </div>
            <div v-show="policeInformationType == '出警信息'" class="box"></div>
            <div v-show="policeInformationType == '出警信息'" class="box">
                <div class="item">
                    <div>处警单位编号:</div>
                    <div>{{ CJdata.CJDWBH }}</div>
                </div>
                <div class="item">
                    <div>处警单位名称:</div>
                    <div>{{ CJdata.CJDWMC }}</div>
                </div>
                <div class="item">
                    <div>处警单编号:</div>
                    <div>{{ CJdata.CJDBH }}</div>
                </div>
                <div class="item">
                    <div>处警员编号:</div>
                    <div>{{ CJdata.CJYBH }}</div>
                </div>
                <div class="item">
                    <div>处警员姓名:</div>
                    <div>{{ CJdata.CJYXM }}</div>
                </div>
                <div class="item">
                    <div>接警时间:</div>
                    <div>{{ CJdata.JJSJ }}</div>
                </div>
                <div class="item">
                    <div>到达现场时间:</div>
                    <div>{{ CJdata.DDXCSJ }}</div>
                </div>
                <div class="item">
                    <div>首次反馈时间:</div>
                    <div>{{ CJdata.SCFKSJ }}</div>
                </div>
                <div class="item">
                    <div>处理完毕时间:</div>
                    <div>{{ CJdata.CLWBSJ }}</div>
                </div>
                <div class="item">
                    <div>出动人员:</div>
                    <div>{{ CJdata.CDRY }}</div>
                </div>
                <div class="item">
                    <div>出动车辆:</div>
                    <div>{{ CJdata.CDCL }}</div>
                </div>
                <div class="item">
                    <div>处警类型:</div>
                    <div>{{ CJdata.CJLX }}</div>
                </div>
                <div class="dialog-content">
                    <div>备注:</div>
                    <div>{{ CJdata.MEMO }}</div>
                </div>
            </div>
        </el-dialog>
    </div>
</template>
@@ -528,6 +591,8 @@
import policeSituationHistoryArr from '@/assets/data/policeSituationArr/historyArr.js'
import { getPoliceStationList } from "@/api/dept"
import { convertStringToList } from "@/utils/geometryStringTool"
import { getActAsPoliceList } from "@/api/home/index.js"
export default {
    data () {
@@ -662,6 +727,7 @@
            policeSituationRealtimeArr: [],
            policeSituationHistoryArr: [],
            policeSituationDetailArr: {},
            CJdata: {},
            activityDetailArr: {},
        }
@@ -670,6 +736,7 @@
    components: { leftContainer, rightContainer, bottomContainer },
    created () {
        const that = this
        this.carList = carList
        this.phoneList = phoneList
        this.monitoringList = monitoringList
@@ -687,6 +754,12 @@
        this.getResidentialQuartersList('361102')
        this.$EventBus.$on('policeSituationSiteClick', (params) => {
            console.log(params)
            that.policeSituationSiteClick(params)
        })
    },
    mounted () {
@@ -732,6 +805,18 @@
    },
    methods: {
        // 接出警切换
        alarmOrActAsPolice (type) {
            this.policeInformationType = type
            this.CJdata = {}
            if (type == '出警信息') {
                getActAsPoliceList(this.policeSituationDetailArr.JJDBH).then(res => {
                    this.CJdata = res.data.data.records
                })
            }
        },
        searchName (name, arr) {
            let obj = {}
            let flag = false
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: 2022-12-28 10:08:37
 * @LastEditTime: 2023-01-06 17:01:29
 * @FilePath: \srs-police-affairs\src\views\layout\index.vue
 * @Description: 
 * 
@@ -24,7 +24,7 @@
            </div>
            <div class="title">
                <h3>社区警务平台</h3>
                <h3>信州公安VR指挥平台</h3>
            </div>
            <!-- 菜单导航 -->