guanqb
2023-01-30 1e854f96cd776d413aaf23fde4e614cf848d1b10
Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
8 files modified
593 ■■■■■ changed files
src/api/dept/index.js 38 ●●●●● patch | view | raw | blame | history
src/api/home/index.js 5 ●●●●● patch | view | raw | blame | history
src/store/modules/user.js 138 ●●●● patch | view | raw | blame | history
src/styles/media/index.scss 15 ●●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 247 ●●●●● patch | view | raw | blame | history
src/views/home/index.vue 134 ●●●● patch | view | raw | blame | history
src/views/layout/index.vue 10 ●●●● patch | view | raw | blame | history
src/views/police/index.vue 6 ●●●● patch | view | raw | blame | history
src/api/dept/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-30 15:18:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-05 15:23:32
 * @LastEditTime: 2023-01-30 15:22:52
 * @FilePath: \srs-police-affairs\src\api\dept\index.js
 * @Description:
 *
@@ -231,6 +231,37 @@
    })
}
/**
 * @description: 获取首页重点人员的数据
 * @param {*} params
 * @return {*}
 */
export const getPersonInfo = (params) => {
    return request({
        url: '/api/villagePersonInfo/villagePersonInfo/keyPersonnelCount',
        method: 'get',
        params: {
            ...params,
        }
    })
}
/**
 * @description: 获取首页重点人员列表信息
 * @param {*} params
 * @return {*}
 */
export const getPersonInfoPage = (params) => {
    return request({
        url: '/api/villagePersonInfo/villagePersonInfo/page',
        method: 'get',
        params: {
            ...params,
        }
    })
}
// 获取对应id下的派出所的责任区人口
export const getVillagePersonStatisticInfoByPoliceStationId = (name, id) => {
    return request({
@@ -244,7 +275,7 @@
}
// 获取该责任区下的人员列表信息
export const getAreaPage = (current, areaId, policeName, phone) => {
export const getAreaPage = (current, areaId, policeName, phone, size) => {
    return request({
        url: `/api/policeStationInfo/policeStationInfo/getAreaPage`,
        method: 'get',
@@ -252,7 +283,8 @@
            current,
            areaId,
            policeName,
            phone
            phone,
            size
        }
    })
}
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-13 17:42:10
 * @LastEditTime: 2023-01-30 10:04:22
 * @FilePath: \srs-police-affairs\src\api\home\index.js
 * @Description: 
 * 
@@ -153,4 +153,5 @@
            phone
        }
    })
}
}
src/store/modules/user.js
@@ -1,70 +1,80 @@
import { loginByUsername,logout } from "@/api/login/login";
import {Message} from 'element-ui'
import md5 from "js-md5";
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-12-27 09:33:01
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-30 11:52:22
 * @FilePath: \srs-police-affairs\src\store\modules\user.js
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
 */
import { loginByUsername, logout } from "@/api/login/login"
import { Message } from 'element-ui'
import md5 from "js-md5"
import * as auth from '@/utils/auth'
import {setStore, getStore} from '@/utils/store'
import { setStore, getStore } from '@/utils/store'
const user = {
  state: {
    userInfo: getStore({name: 'userInfo'}) || [],
    token: getStore({name: 'token'}) || '',
  },
  actions: {
    //根据用户名登录
    LoginByUsername({ commit }, loginForm) {
      return new Promise((resolve, reject) => {
        loginByUsername(
          loginForm.tenantId,
          loginForm.username,
          md5(loginForm.password),
          loginForm.type,
          loginForm.key,
          loginForm.code
        )
          .then((res) => {
            const data = res.data;
            if (data.error_description) {
              Message({
                message: data.error_description,
                type: "error",
              });
              //跳转首页
              this.$router.push({ path: "/login" });
            } else {
              commit("SET_TOKEN", data.access_token);
              commit('SET_USER_INFO', data);
            }
            resolve();
          })
          .catch((error) => {
            reject(error);
          });
      });
    state: {
        userInfo: getStore({ name: 'userInfo' }) || [],
        token: getStore({ name: 'token' }) || '',
    },
    //登出
    LogOut({commit}) {
      return new Promise((resolve, reject) => {
        logout().then(() => {
          commit('SET_TOKEN', '');
          auth.removeToken();
          auth.removeUserInfo();
          resolve();
        }).catch(error => {
          reject(error)
        })
      })
    actions: {
        //根据用户名登录
        LoginByUsername ({ commit }, loginForm) {
            return new Promise((resolve, reject) => {
                loginByUsername(
                    loginForm.tenantId,
                    loginForm.username,
                    md5(loginForm.password),
                    loginForm.type,
                    loginForm.key,
                    loginForm.code
                )
                    .then((res) => {
                        const data = res.data
                        if (data.error_description) {
                            Message({
                                message: data.error_description,
                                type: "error",
                            })
                            //跳转首页
                            this.$router.push({ path: "/login" })
                        } else {
                            commit("SET_TOKEN", data.access_token)
                            commit('SET_USER_INFO', data)
                        }
                        resolve()
                    })
                    .catch((error) => {
                        reject(error)
                    })
            })
        },
        //登出
        LogOut ({ commit }) {
            return new Promise((resolve, reject) => {
                logout().then(() => {
                    commit('SET_TOKEN', '')
                    auth.removeToken()
                    auth.removeUserInfo()
                    resolve()
                }).catch(error => {
                    reject(error)
                })
            })
        },
    },
  },
  mutations:{
    SET_TOKEN: (state, token) => {
      auth.setToken(token);
    },
    SET_USER_INFO: (state, userInfo) => {
      state.userInfo = userInfo;
      auth.setUserInfo(state.userInfo)
      setStore({name: 'userInfo', content: state.userInfo})
    },
  }
};
    mutations: {
        SET_TOKEN: (state, token) => {
            auth.setToken(token)
        },
        SET_USER_INFO: (state, userInfo) => {
            state.userInfo = userInfo
            auth.setUserInfo(state.userInfo)
            setStore({ name: 'userInfo', content: state.userInfo })
        },
    }
}
export default user;
export default user
src/styles/media/index.scss
@@ -207,6 +207,12 @@
                                }
                            }
                            .person-box {
                                .back {
                                    top: countSizeVh(96);
                                }
                            }
                        }
                        .bottom-container {
@@ -1776,9 +1782,10 @@
                            width: countSizeVw(180, 1920);
                            padding: countSizeVh(10);
                            border-radius: countSizeVh(8);
                            .row-box {
                                line-height: countSizeVh(28);
                                .category {
                                    width: countSizeVw(96, 1920);
                                }
@@ -2803,6 +2810,12 @@
                                }
                            }
                        }
                        .person-box {
                            .back {
                                top: maxCountSizeVh(96);
                            }
                        }
                    }
                    .bottom-container {
src/views/home/components/leftContainer.vue
@@ -14,21 +14,13 @@
                    </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">{{policeStationPersonInfo.total}}人</div>
                        <div class="tab-title-small">{{ policeStationPersonInfo.total }}人</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">{{policeStationPersonInfo.emphasisNum}}人</div>
                        <div class="tab-title-small">{{ policeStationPersonInfo.emphasisNum }}人</div>
                    </div>
                    <!-- <div class="tab3" :class="{ 'select-on-tab': tabType == 2 }" @click="personTabClick(2)">
                        <div class="num">91995人</div>
@@ -36,68 +28,40 @@
                    </div>-->
                </div>
                <div id="PersonEcharts" class="echarts-box"></div>
                <div
                    class="back"
                    title="返回上一级"
                    v-show="dataDeep == 2 && peopletype == 0"
                    @click="backBegin"
                ></div>
                <div class="back" title="返回上一级" v-show="dataDeep == 2 && peopletype == 0" @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%"
                    >
                    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"
                            />
                                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>
@@ -105,19 +69,11 @@
            <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">182万户</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">634个</div>
                    </div>
@@ -126,19 +82,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>
@@ -146,40 +93,23 @@
            <div class="box">
                <div class="title">现有地</div>
                <div class="sub-tab">
                    <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}}个</div>
                        <div class="tab-title-small">{{ villageNum }}个</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}}个</div>
                        <div class="tab-title-small">{{ areaNum }}个</div>
                    </div>
                </div>
                <div id="landEcharts" 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>
@@ -189,7 +119,7 @@
<script>
import { fontSize } from '@/utils/fontSize.js'
import { getAreaStatisticInfo } from "@/api/home/index.js"
import { getVillagePersonStatisticInfo, getVillagePersonStatisticInfoByPoliceStationId } from "@/api/dept"
import { getVillagePersonStatisticInfo, getVillagePersonStatisticInfoByPoliceStationId, getPersonInfo, getPersonInfoPage } from "@/api/dept"
let homePersonmyChart
let houseMyChart
@@ -201,6 +131,8 @@
const myLandColors = ['#4150d8', '#28bf7e', '#ed7c2f', '#f2a93b', '#f9cf36', '#4a5bdc', '#4cd698', '#f4914e', '#fcb75b', '#ffe180', '#b6c2ff', '#96edc1']
export default {
    inject: ['userInfo'],
    data () {
        return {
            tabType: 0,
@@ -325,6 +257,11 @@
        this.getPoliceStationInfo()
        this.inithouseEcharts()
        this.clickLandChart()
        setTimeout(() => {
            console.log(this.userInfo.dept_id, 98999)
        }, 5000)
        this.$nextTick(() => {
            window.addEventListener("resize", this.echartsResize)
@@ -728,25 +665,45 @@
            })
        },
        clickkeyPersonChart () {
            keyPersonmyChart.on('click', params => {
                let keyPersonDetailNewArr = []
                this.keyPersonSelectArr.some((item) => {
                    if (item.type == params.name) {
                        keyPersonDetailNewArr.push(item)
                    }
                })
                this.$emit('showkeypersondetail', params.name, keyPersonDetailNewArr)
            })
        },
        initkeyPersonEcharts () {
        /**
         * @description: 初始化重点人员饼状图
         * @return {*}
         */
        async initkeyPersonEcharts () {
            var chartDom = document.getElementById('PersonEcharts')
            keyPersonmyChart = this.$echarts.init(chartDom)
            let dataArr = this.getKeyPersonCount(this.keyPersonSelectArr)
            keyPersonmyChart.setOption(this.initkeyPersonOption(dataArr))
            let personInfo = await this.getPersonInfo()
            keyPersonmyChart.setOption(this.initkeyPersonOption(personInfo))
        },
        /**
         * @description: 调用接口获取重点人员数据
         * @return {*}
         */
        getPersonInfo () {
            const data = getPersonInfo({ deptId: this.userInfo.dept_id }).then(res => {
                res.data = res.data.map(item => {
                    item = {
                        ...item,
                        name: item.zdryxl,
                        value: item.count
                    }
                    return item
                })
                return res.data
            })
            return data
        },
        /**
         * @description: 重点人员饼状图渲染的options
         * @param {*} dataArr
         * @return {*}
         */
        initkeyPersonOption (dataArr) {
            return {
                tooltip: {
@@ -758,11 +715,14 @@
                        } else {
                            msg = params.value + '人'
                        }
                        msg = ` <span style="display: inline-block; margin-right: 4px; border-radius: 10px; width: 10px; height: 10px;background-color: #5470c6;"></span> ${params.name}<strong style="margin-left:10px">${msg}</strong>'`
                        msg = `${params.marker} ${params.name}<strong style="margin-left:10px">${msg}</strong>'`
                        return msg
                    }
                },
                legend: {
                    type: 'scroll',
                    orient: 'vertical',
                    left: '45%',
                    y: '1%',
                    itemGap: 20,
@@ -805,6 +765,20 @@
                    y2: 20
                },
            }
        },
        /**
        * @description: 重点人员饼状图的点击事件
        * @return {*}
        */
        async clickkeyPersonChart () {
            keyPersonmyChart.on('click', async params => {
                this.$emit('showkeypersondetail', params.name)
            })
            /**
             * @description:
             * @return {*}
             */
        },
        selectPoliceChangeData (name) {
@@ -883,37 +857,6 @@
            //     colors = ['#7d65c0', '#a47db4', '#e0a8c5']
            // }
            // homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate, colors), true)
        },
        getKeyPersonCount (arr) {
            let valueArr = [0, 0, 0, 0, 0, 0, 0]
            arr.some(item => {
                if (item.type == '涉恐人员') {
                    valueArr[0] = Number(valueArr[0]) + 1
                } else if (item.type == '涉稳人员') {
                    valueArr[1] = Number(valueArr[1]) + 1
                } else if (item.type == '涉毒人员') {
                    valueArr[2] = Number(valueArr[2]) + 1
                } else if (item.type == '在逃人员') {
                    valueArr[3] = Number(valueArr[3]) + 1
                } else if (item.type == '重大刑事犯罪前科人员') {
                    valueArr[4] = Number(valueArr[4]) + 1
                } else if (item.type == '肇事肇祸精神病人') {
                    valueArr[5] = Number(valueArr[5]) + 1
                } else if (item.type == '重点上访人员') {
                    valueArr[6] = Number(valueArr[6]) + 1
                }
            })
            let KeyPersonDataArr = [
                { value: valueArr[0], name: '涉恐人员' },
                { value: valueArr[1], name: '涉稳人员' },
                { value: valueArr[2], name: '涉毒人员' },
                { value: valueArr[3], name: '在逃人员' },
                { value: valueArr[4], name: '重大刑事犯罪前科人员' },
                { value: valueArr[5], name: '肇事肇祸精神病人' },
                { value: valueArr[6], name: '重点上访人员' }
            ]
            return KeyPersonDataArr
        },
        selectAreaChangeData (name) {
@@ -1043,7 +986,7 @@
        .back {
            color: #fff;
            position: absolute;
            top: 120px;
            top: 96px;
            right: 16px;
            width: 20px;
            height: 20px;
@@ -1126,7 +1069,7 @@
                color: #fff;
            }
            & > div:nth-of-type(2) {
            &>div:nth-of-type(2) {
                font-size: 14px;
            }
        }
@@ -1154,7 +1097,7 @@
                align-items: center;
                justify-content: center;
                & > div {
                &>div {
                    height: 22px;
                    line-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-29 15:24:05
 * @LastEditTime: 2023-01-30 15:54:32
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -81,7 +81,7 @@
            </div>
        </el-dialog>
        <el-dialog :title="peopleTitle" :modal="true" :visible.sync="peopleVisible" :before-close="peopleBeforeClose"
        <el-dialog :title="peopleTitle" :modal="true" :visible.sync="peopleVisible" :before-close="personInfoClose"
            :close-on-click-modal="true" class="area-details-box">
            <div class="header">
                <div>
@@ -186,18 +186,36 @@
        </el-dialog>
        <el-dialog :title="keyPersonTitle" :modal="true" :visible.sync="keyPersonVisible"
            :before-close="keyPersonBeforeClose" :close-on-click-modal="true" class="keyPerson-details-box">
            :before-close="personInfoClose" :close-on-click-modal="true" class="keyPerson-details-box">
            <div class="header">
                <div>
                    人员名称:
                    <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
                </div>
                <div>
                    联系电话:
                    <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
                </div>
                <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
                <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
            </div>
            <el-table :data="keyPersonDetailArr" style="width: 100%"
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }">
                <el-table-column prop="type" label="重点人员类型"></el-table-column>
                <el-table-column prop="name" label="姓名"></el-table-column>
                <el-table-column prop="sex" label="性别"></el-table-column>
                <el-table-column prop="zdryxl" label="重点人员类型"></el-table-column>
                <el-table-column prop="realName" label="姓名"></el-table-column>
                <el-table-column prop="address" label="地址"></el-table-column>
                <el-table-column prop="phone" label="电话"></el-table-column>
                <el-table-column prop="policeStation" label="所属派出所"></el-table-column>
                <el-table-column prop="housingEastate" label="所属责任区"></el-table-column>
                <el-table-column prop="policeStationName" label="所属派出所"></el-table-column>
                <el-table-column prop="areaName" label="所属责任区"></el-table-column>
            </el-table>
            <div class="pages" ref="tablePagination">
                <el-pagination background layout="prev, pager, next" :page-size="peoplePage.pageSize"
                    :total="peoplePage.total" :current-page="peoplePage.currentPage"
                    @current-change="handlePersonPageChange"></el-pagination>
            </div>
        </el-dialog>
        <el-dialog title="警情信息" :modal="true" :visible.sync="policeSituationVisible"
@@ -431,7 +449,7 @@
import geoJson from './444.json'
import { getPanoramaList } from "@/api/panorama"
import { getAreaPage, getResidentialQuartersList } from '@/api/dept/index.js'
import { getAreaPage, getResidentialQuartersList, getPersonInfoPage } from '@/api/dept/index.js'
import monitoringList from '@/assets/data/monitoring.js'
import leftContainer from './components/leftContainer'
@@ -446,6 +464,8 @@
import { getActAsPoliceList, getEquipmentPaging, getPoliceStationTree, getEquipmentAll, getLandDetail } from "@/api/home/index.js"
export default {
    inject: ['userInfo'],
    data () {
        return {
            houseLayerShow: true,
@@ -474,7 +494,7 @@
            peopleInfoList: [],
            peoplePage: {
                total: 0,
                pageSize: 0,
                pageSize: 10,
                currentPage: 1
            },
            peopleSearchQuery: {
@@ -1380,12 +1400,11 @@
            this.getPeopleInfoList(this.peoplePage.currentPage, this.peopleSearchQuery.id)
        },
        getPeopleInfoList (current, areaId, policeName, phone) {
            getAreaPage(current, areaId, policeName, phone).then(res => {
        getPeopleInfoList (current, areaId, policeName = '', phone = '') {
            getAreaPage(current, areaId, policeName, phone, this.peoplePage.pageSize).then(res => {
                if (res.data.code == 200) {
                    this.peopleInfoList = res.data.data.records
                    this.peoplePage.total = res.data.data.total
                    this.peoplePage.pageSize = res.data.data.size
                }
            })
        },
@@ -1501,10 +1520,47 @@
            return flvAddress
        },
        showkeypersondetail (name, arr) {
            this.keyPersonVisible = true
        /**
         * @description: 显示重点人员列表
         * @param {*} name 当前类别名称
         * @return {*}
         */
        showkeypersondetail (name) {
            this.keyPersonTitle = name
            this.keyPersonDetailArr = arr
            this.getPersonInfoPage()
            this.keyPersonVisible = true
        },
        /**
         * @description: 重点人员列表分页切换
         * @param {*} current 当前页
         * @return {*}
         */
        handlePersonPageChange (current) {
            this.peoplePage.currentPage = current
            this.getPersonInfoPage()
        },
        /**
         * @description: 获取重点人员列表信息
         * @return {*}
         */
        getPersonInfoPage () {
            getPersonInfoPage({
                status: 2,
                depaId: this.userInfo.dept_id,
                zdryxl: this.keyPersonTitle,
                realName: this.peoplePoliceName,
                phone: this.peopleCallPhone,
                current: this.peoplePage.currentPage,
                size: this.peoplePage.pageSize
            }).then(res => {
                this.peoplePage.total = res.data.data.total
                this.keyPersonDetailArr = res.data.data.records
            })
        },
        changeActivityType (type) {
@@ -1532,6 +1588,7 @@
                }
            })
        },
        /**
         * 获取派出所和责任区数据
         */
@@ -1607,17 +1664,54 @@
            this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage, this.policeName, this.callPhone)
        },
        /**
         * @description: 列表弹框中的搜索
         * @return {*}
         */
        searchPeopleDetail () {
            this.peoplePage.currentPage = 1
            if (this.peopleVisible == true) {
                this.getPeopleInfoList(this.peoplePage.currentPage, this.peopleSearchQuery.id, this.peoplePoliceName, this.peopleCallPhone)
            } else if (this.keyPersonVisible == true) {
                this.getPersonInfoPage()
            }
        },
        /**
         * @description: 列表弹框中的清除
         * @return {*}
         */
        clearPeopleDetailSearchValue () {
            this.peoplePoliceName = ''
            this.peopleCallPhone = ''
            this.peoplePage.currentPage = 1
            this.getPeopleInfoList(this.peoplePage.currentPage, this.peopleSearchQuery.id)
            if (this.peopleVisible == true) {
                this.getPeopleInfoList(this.peoplePage.currentPage, this.peopleSearchQuery.id)
            } else if (this.keyPersonVisible == true) {
                this.getPersonInfoPage()
            }
        },
        searchPeopleDetail () {
        /**
         * @description: 现有人员和重点人员列表弹窗关闭的事件
         * @return {*}
         */
        personInfoClose () {
            this.peoplePoliceName = ''
            this.peopleCallPhone = ''
            this.peoplePage.currentPage = 1
            this.getPeopleInfoList(this.peoplePage.currentPage, this.peopleSearchQuery.id, this.peoplePoliceName, this.peopleCallPhone)
        },
            this.peopleInfoList = []
            this.keyPersonDetailArr = []
            if (this.peopleVisible == true) {
                this.peopleVisible = false
            } else if (this.keyPersonVisible == true) {
                this.keyPersonVisible = false
            }
        }
    },
    destroyed () {
src/views/layout/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:24
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-16 15:50:43
 * @LastEditTime: 2023-01-30 14:46:08
 * @FilePath: \srs-police-affairs\src\views\layout\index.vue
 * @Description: 
 * 
@@ -91,6 +91,12 @@
<script>
import { getUserInfo, getToken } from '@/utils/auth'
export default {
    provide () {
        return {
            userInfo: JSON.parse(getUserInfo())
        }
    },
    data () {
        return {
            menuLeftList: [
@@ -200,7 +206,7 @@
                // 跳过登录方式
                //var path = params.path + "?token=" + getToken()
                //账户名密码模拟登录方式
                var path =  params.path + '?securitySupervisionSystem={"tokenMY":"987654321S","data":{"rese":"admin","sap":"admin","dip":"000000"}}'
                var path = params.path + '?securitySupervisionSystem={"tokenMY":"987654321S","data":{"rese":"admin","sap":"admin","dip":"000000"}}'
                // console.log(path,5555)
                window.open(path)
                return
src/views/police/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-15 16:03:00
 * @LastEditTime: 2023-01-30 11:45:29
 * @FilePath: \srs-police-affairs\src\views\police\index.vue
 * @Description: 辖区管理
 * 
@@ -101,11 +101,11 @@
                        <el-pagination
                            background
                            layout="prev, pager, next"
                            :page-size="equimentPage.pageSize"
                            you:page-size="equimentPage.pageSize"
                            :page-count="equimentPage.count"
                            :pager-count="4"
                            :current-page="equimentPage.currentPage"
                            @current-change="handleCurrentChange"
                            pager-count="5"
                        ></el-pagination>
                    </div>
                </div>