| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2023-03-02 09:39:32 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-04-01 14:43:39 |
| | | * @LastEditTime: 2025-12-01 18:53:47 |
| | | * @FilePath: \srs-police-affairs\src\components\map\components\mapSearchPopup.vue |
| | | * @Description: |
| | | * |
| | | * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. |
| | | --> |
| | | <template> |
| | | <div> |
| | | <div v-if="mapSearchPopup" class="popup-dom" id="mapSearchPopup"> |
| | | <div style="transform: translate(-50%, 0);"> |
| | | <!-- 样式自己修改 --> |
| | | <div class="content" :class="{ 'scale-dom': scaleDomFlag }"> |
| | | <div class="url-code" v-if="mapSearchPopupData.showImg"> |
| | | <el-image style="width: 100px; height: 100px" :src="mapSearchPopupData.url" |
| | | :preview-src-list="[mapSearchPopupData.url]"> |
| | | </el-image> |
| | | </div> |
| | | {{ mapSearchPopupData.name }} |
| | | <div> |
| | | <div v-if="mapSearchPopup" class="popup-dom" id="mapSearchPopup"> |
| | | <div style="transform: translate(-50%, 0);"> |
| | | <!-- 样式自己修改 --> |
| | | <div class="content" :class="{ 'scale-dom': scaleDomFlag }"> |
| | | <div class="close-box"> |
| | | <i class="el-icon-close" @click="closeCurPopup"></i> |
| | | </div> |
| | | <div class="url-code" v-if="mapSearchPopupData.showImg"> |
| | | <el-image style="width: 100px; height: 100px" :src="mapSearchPopupData.url" |
| | | :preview-src-list="[mapSearchPopupData.url]"> |
| | | </el-image> |
| | | </div> |
| | | {{ mapSearchPopupData.name }} |
| | | </div> |
| | | <div class="bottom-arrow"></div> |
| | | </div> |
| | | </div> |
| | | <div class="bottom-arrow"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapGetters } from 'vuex' |
| | | |
| | | export default { |
| | | name: 'mapSearchPopup', |
| | | name: 'mapSearchPopup', |
| | | |
| | | inject: ["getWidth", 'userInfo'], |
| | | inject: ["getWidth", 'userInfo'], |
| | | |
| | | data () { |
| | | return { |
| | | scaleDomFlag: false |
| | | data () { |
| | | return { |
| | | scaleDomFlag: false |
| | | } |
| | | }, |
| | | |
| | | computed: { |
| | | ...mapGetters([ |
| | | 'mapSearchPopup', |
| | | 'mapSearchPopupData' |
| | | ]) |
| | | }, |
| | | |
| | | mounted () { |
| | | if (this.getWidth() > 7000) { |
| | | this.scaleDomFlag = true |
| | | } else { |
| | | this.scaleDomFlag = false |
| | | } |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | closeCurPopup () { |
| | | this.$EventBus.$emit("mapClearLayer", { |
| | | layerName: "searchLayer", |
| | | type: "VectorLayer", |
| | | }) |
| | | |
| | | this.$store.commit("SET_MAPSEARCHPOPUP", false) |
| | | |
| | | this.$store.commit("SET_MAPSEARCHPOPUPDATA", {}) |
| | | } |
| | | } |
| | | }, |
| | | |
| | | computed: { |
| | | ...mapGetters([ |
| | | 'mapSearchPopup', |
| | | 'mapSearchPopupData' |
| | | ]) |
| | | }, |
| | | |
| | | mounted () { |
| | | if (this.getWidth() > 7000) { |
| | | this.scaleDomFlag = true |
| | | } else { |
| | | this.scaleDomFlag = false |
| | | } |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .popup-dom { |
| | | position: fixed; |
| | | top: -16px; |
| | | left: 0; |
| | | z-index: 1 !important; |
| | | position: fixed; |
| | | top: -16px; |
| | | left: 0; |
| | | z-index: 1 !important; |
| | | |
| | | &>.popup-box { |
| | | position: relative; |
| | | } |
| | | |
| | | .bottom-arrow { |
| | | position: absolute; |
| | | left: 50%; |
| | | bottom: 0px; |
| | | width: 0; |
| | | height: 0; |
| | | border: 10px solid transparent; |
| | | border-top-color: $bg-color; |
| | | transform: translate(-50%, 100%); |
| | | } |
| | | |
| | | .scale-dom { |
| | | transform: scale(3); |
| | | transform-origin: left; |
| | | } |
| | | |
| | | .content { |
| | | padding: 0.5vh; |
| | | width: 220px; |
| | | background: $bg-color; |
| | | border-radius: 4px; |
| | | color: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | .url-code { |
| | | ::v-deep(img) { |
| | | width: 64px; |
| | | height: 64px; |
| | | vertical-align: middle; |
| | | } |
| | | &>.popup-box { |
| | | position: relative; |
| | | } |
| | | |
| | | } |
| | | .bottom-arrow { |
| | | position: absolute; |
| | | left: 50%; |
| | | bottom: 0px; |
| | | width: 0; |
| | | height: 0; |
| | | border: 10px solid transparent; |
| | | border-top-color: $bg-color; |
| | | transform: translate(-50%, 100%); |
| | | } |
| | | |
| | | .scale-dom { |
| | | transform: scale(3); |
| | | transform-origin: left; |
| | | } |
| | | |
| | | .content { |
| | | padding: 0.5vh; |
| | | width: 220px; |
| | | background: $bg-color; |
| | | border-radius: 4px; |
| | | color: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | .close-box { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | |
| | | ::v-deep(.el-icon-close) { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .url-code { |
| | | ::v-deep(img) { |
| | | width: 64px; |
| | | height: 64px; |
| | | vertical-align: middle; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | </style> |
| | |
| | | font-size: countSizeVw(14, 1920); |
| | | } |
| | | |
| | | .close-box { |
| | | padding: 0 countSizeVh(8); |
| | | } |
| | | |
| | | .url-code { |
| | | img { |
| | |
| | | <template> |
| | | <div class="container"> |
| | | <div class="person-box" style="position: relative;"> |
| | | <div class="box"> |
| | | <div class="title"> |
| | | <div class="title-tab"> |
| | | <span :class="{ choosed: peopletype == 0 }">现有人员</span> |
| | | </div> |
| | | </div> |
| | | <el-main v-loading="personEchartsLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)" style="height: calc(100% - 17.6%);"> |
| | | <div class="sub-tab" v-show="peopletype == 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 |
| | | }}人 |
| | | </div> |
| | | <div class="container"> |
| | | <div class="person-box" style="position: relative;"> |
| | | <div class="box"> |
| | | <div class="title"> |
| | | <div class="title-tab"> |
| | | <span :class="{ choosed: peopletype == 0 }">现有人员</span> |
| | | </div> |
| | | </div> |
| | | <el-main v-loading="personEchartsLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)" |
| | | style="height: calc(100% - 17.6%);"> |
| | | <div class="sub-tab" v-show="peopletype == 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 |
| | | }}人 |
| | | </div> |
| | | </div> |
| | | <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 |
| | | }}人 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="echarts-box" style="overflow-y: auto;" ref="REFPERSONECHARTS"> |
| | | <div id="PersonEcharts" :style="{ height: personEchartsHeight }"></div> |
| | | </div> |
| | | </el-main> |
| | | |
| | | <div class="back" title="返回上一级" v-show="dataDeep == 2 && peopletype == 0 && showBack" |
| | | @click="backBegin"> |
| | | </div> |
| | | </div> |
| | | <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 |
| | | }}人 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="echarts-box" style="overflow-y: auto;" ref="REFPERSONECHARTS"> |
| | | <div id="PersonEcharts" :style="{ height: personEchartsHeight }"></div> |
| | | </div> |
| | | </el-main> |
| | | |
| | | <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" |
| | | 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 |
| | | <svg class="border-svg"> |
| | | <defs> |
| | | <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%"> |
| | | <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" |
| | | 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 |
| | | <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" |
| | | 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" /> |
| | | </circle> |
| | | </mask> |
| | | </defs> |
| | | 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> |
| | | </svg> |
| | | </div> |
| | | <div class="house-box" style="position: relative;"> |
| | | <div class="box"> |
| | | <div class="title">重点场所</div> |
| | | <el-main v-loading="houseEchartsLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)" style="height: calc(100% - 17.6%);"> |
| | | <div class="sub-tab"> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 0 }" @click="houseTabClick(0)"> |
| | | <div class="tab-title-small">九小场所:</div> |
| | | <div class="tab-title-small">{{ placeNum }}</div> |
| | | <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> |
| | | <div class="house-box" style="position: relative;"> |
| | | <div class="box"> |
| | | <div class="title">重点场所</div> |
| | | <el-main v-loading="houseEchartsLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)" |
| | | style="height: calc(100% - 17.6%);"> |
| | | <div class="sub-tab"> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 0 }" @click="houseTabClick(0)"> |
| | | <div class="tab-title-small">九小场所:</div> |
| | | <div class="tab-title-small">{{ placeNum }}</div> |
| | | </div> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 1 }" @click="houseTabClick(1)"> |
| | | <div class="tab-title-small">其它场所:</div> |
| | | <div class="tab-title-small">{{ otherPlaceNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div id="houseEcharts" class="echarts-box"></div> |
| | | </el-main> |
| | | </div> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 1 }" @click="houseTabClick(1)"> |
| | | <div class="tab-title-small">其它场所:</div> |
| | | <div class="tab-title-small">{{ otherPlaceNum }}</div> |
| | | </div> |
| | | </div> |
| | | <div id="houseEcharts" class="echarts-box"></div> |
| | | </el-main> |
| | | </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> |
| | | </svg> |
| | | </div> |
| | | <div class="land-box" style="position: relative;"> |
| | | <div class="box"> |
| | | <div class="title">现有小区</div> |
| | | <el-main v-loading="landEchartsLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" |
| | | element-loading-background="rgba(0, 0, 0, 0.5)" style="height: calc(100% - 17.6%);"> |
| | | <div class="sub-tab" v-show="isAllPoliceStation"> |
| | | <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> |
| | | <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> |
| | | </svg> |
| | | </div> |
| | | <div class="land-box" style="position: relative;"> |
| | | <div class="box"> |
| | | <div class="title">现有小区</div> |
| | | <el-main v-loading="landEchartsLoading" element-loading-text="拼命加载中" |
| | | element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)" |
| | | style="height: calc(100% - 17.6%);"> |
| | | <div class="sub-tab" v-show="isAllPoliceStation"> |
| | | <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> |
| | | <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> |
| | | </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> |
| | | </div> |
| | | <div id="landEcharts" class="echarts-box"></div> |
| | | </el-main> |
| | | </div> |
| | | <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> |
| | | </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> |
| | | </div> |
| | | <div id="landEcharts" class="echarts-box"></div> |
| | | </el-main> |
| | | </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> |
| | | </svg> |
| | | <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> |
| | | </svg> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { fontSize } from '@/utils/fontSize.js' |
| | | import { |
| | | getAreaStatisticInfo, |
| | | getVillageStatisticData, |
| | | getVillageStatisticDetail, |
| | | getPlaceOfConcernStatisticData, |
| | | getPlaceOfConcernStatisticDetail, |
| | | getVillageDetailAndPlaceStatisticNumber, |
| | | getNineStatistics |
| | | getAreaStatisticInfo, |
| | | getVillageStatisticData, |
| | | getVillageStatisticDetail, |
| | | getPlaceOfConcernStatisticData, |
| | | getPlaceOfConcernStatisticDetail, |
| | | getVillageDetailAndPlaceStatisticNumber, |
| | | getNineStatistics |
| | | } from "@/api/home/index.js" |
| | | import { schoolJSON } from '../homeleft/school' |
| | | import { hospitalJSON } from '../homeleft/hospital' |
| | |
| | | const peopleColor2 = '#f26390' |
| | | |
| | | export default { |
| | | inject: ['userInfo'], |
| | | inject: ['userInfo'], |
| | | |
| | | data () { |
| | | return { |
| | | placeNum: 0, |
| | | otherPlaceNum: 0, |
| | | tabType: 0, |
| | | personEchartsLoading: false, |
| | | houseEchartsLoading: false, |
| | | landEchartsLoading: false, |
| | | peopletype: 0, |
| | | tabTypeTwo: 0, |
| | | tabTypeThree: 0, |
| | | peopleTitle: '', |
| | | peopleVisible: false, |
| | | dataDeep: 1, |
| | | keyPersonOption: {}, |
| | | keyPersonSelectSaveArr: [], |
| | | areaNum: '', |
| | | villageNum: '', |
| | | policeVillageNum: '', |
| | | policeStationPersonInfo: {}, |
| | | villagePersonStatisticInfoList: [], |
| | | showBack: true, |
| | | isAllPoliceStation: true, |
| | | realHouseNum: '', |
| | | keyPlaceNum: '', |
| | | personAll: '', |
| | | // 记录当前选中派出所的ID |
| | | policeStaionID: '', |
| | | peopleLoading: false, |
| | | personEchartsHeight: '100%', |
| | | syldBigType: '', |
| | | syldName: '', |
| | | gzcsType: '', |
| | | gzcsUnitName: '', |
| | | gzcsPerson: '', |
| | | gzcsPhone: '', |
| | | isFirstMounted: true, |
| | | clickPoliceStationId: '', |
| | | areaId: null, |
| | | } |
| | | }, |
| | | |
| | | mounted () { |
| | | // 获取所有数据并加载 |
| | | this.getHomeAllData() |
| | | |
| | | if (this.userInfo.dept_id != '1123598813738675201') { |
| | | // console.log(this.userInfo.dept_id,'茅家岭派出所',1596020515064381442); |
| | | this.showBack = false |
| | | this.isAllPoliceStation = false |
| | | } |
| | | |
| | | this.$nextTick(() => { |
| | | window.addEventListener("resize", this.echartsResize) |
| | | }) |
| | | |
| | | // this.getVillageDetailAndPlaceStatisticNumber({ deptId: this.userInfo.dept_id }) |
| | | }, |
| | | |
| | | methods: { |
| | | // 酒店列表 |
| | | getHotelList () { |
| | | getHotelList({ deptId: this.$parent.areaChangeValue, orderName: 'hotel_name', hotelName: this.$parent.zhuSuName, orderRule: 'asc', size: this.$parent.zhuSuPage.pageSize, current: this.$parent.zhuSuPage.currentPage }).then(res => { |
| | | console.log(res.data.data.records, 'getHotelList-1234') |
| | | this.$parent.zhuSuPage.total = res.data.data.total |
| | | this.$parent.zhuSuArr = res.data.data.records |
| | | setTimeout(() => { |
| | | this.$parent.zhuSuLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 设备饼图轮播 |
| | | keyPeopleEchartsCarousel () { |
| | | let curIndex = 0 |
| | | if (timer) { |
| | | clearInterval(timer) |
| | | } |
| | | |
| | | timer = setInterval(() => { |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "downplay", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | curIndex = (curIndex + 1) % keyPeopleDataLength |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "highlight", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "showTip", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | }, 1000) |
| | | |
| | | keyPersonmyChart.on("mouseover", function (param) { |
| | | clearInterval(timer) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "downplay", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "highlight", |
| | | seriesIndex: 0, |
| | | dataIndex: param.dataIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "showTip", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | curIndex = param.dataIndex |
| | | }) |
| | | |
| | | keyPersonmyChart.on("mouseout", function (param) { |
| | | curIndex = param.dataIndex |
| | | if (timer) { |
| | | clearInterval(timer) |
| | | data () { |
| | | return { |
| | | placeNum: 0, |
| | | otherPlaceNum: 0, |
| | | tabType: 0, |
| | | personEchartsLoading: false, |
| | | houseEchartsLoading: false, |
| | | landEchartsLoading: false, |
| | | peopletype: 0, |
| | | tabTypeTwo: 0, |
| | | tabTypeThree: 0, |
| | | peopleTitle: '', |
| | | peopleVisible: false, |
| | | dataDeep: 1, |
| | | keyPersonOption: {}, |
| | | keyPersonSelectSaveArr: [], |
| | | areaNum: '', |
| | | villageNum: '', |
| | | policeVillageNum: '', |
| | | policeStationPersonInfo: {}, |
| | | villagePersonStatisticInfoList: [], |
| | | showBack: true, |
| | | isAllPoliceStation: true, |
| | | realHouseNum: '', |
| | | keyPlaceNum: '', |
| | | personAll: '', |
| | | // 记录当前选中派出所的ID |
| | | policeStaionID: '', |
| | | peopleLoading: false, |
| | | personEchartsHeight: '100%', |
| | | syldBigType: '', |
| | | syldName: '', |
| | | gzcsType: '', |
| | | gzcsUnitName: '', |
| | | gzcsPerson: '', |
| | | gzcsPhone: '', |
| | | isFirstMounted: true, |
| | | clickPoliceStationId: '', |
| | | areaId: null, |
| | | } |
| | | timer = setInterval(() => { |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "downplay", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | curIndex = (curIndex + 1) % keyPeopleDataLength |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "highlight", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "showTip", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | }, 1000) |
| | | }) |
| | | }, |
| | | /** |
| | | * 责任区查询 |
| | | * @param {*} areaId |
| | | */ |
| | | getHomeAllDataByAreaId (policeStationId, areaId) { |
| | | // if(areaId){ |
| | | this.policeStaionID = policeStationId |
| | | this.areaId = areaId |
| | | this.getNineStatistics(true) |
| | | // } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取首页的所有数据 |
| | | * @return {*} |
| | | */ |
| | | getHomeAllData (id = '') { |
| | | this.areaId = null |
| | | this.policeStaionID = id |
| | | this.clickPoliceStationId = id |
| | | mounted () { |
| | | // 获取所有数据并加载 |
| | | this.getHomeAllData() |
| | | |
| | | this.isFirstMounted = true |
| | | if (id != '') { |
| | | this.showBack = false |
| | | this.isAllPoliceStation = false |
| | | |
| | | this.tabTypeThree = 0 |
| | | } else { |
| | | this.showBack = true |
| | | this.isAllPoliceStation = true |
| | | } |
| | | this.tabType = 0//解决下拉选择派出所重点人员显示bug |
| | | this.personTabClick(this.tabType) |
| | | |
| | | this.getNineStatistics(true) |
| | | this.houseTabClick(this.tabTypeTwo) |
| | | |
| | | this.landTabClick(this.tabTypeThree) |
| | | |
| | | if (leftTiming != null) { |
| | | clearInterval(leftTiming) |
| | | leftTiming = null |
| | | } |
| | | |
| | | leftTiming = setInterval(async () => { |
| | | this.houseTabClick(this.tabTypeTwo) |
| | | |
| | | this.landTabClick(this.tabTypeThree) |
| | | }, 600000) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 户籍人口和重点人员切换 |
| | | * @param {*} type |
| | | * @return {*} |
| | | */ |
| | | personTabClick (type) { |
| | | console.log('type', type, 'this.tabType', this.tabType, 'this.isFirstMounted', this.isFirstMounted) |
| | | if (type == 0) { |
| | | if (this.tabType == 0 && !this.isFirstMounted) { |
| | | console.log('再次点击人口总数', this.isFirstMounted) |
| | | this.$emit('showpeopledetail', '', '总人口列表', 'includeKeypeople', this.clickPoliceStationId) |
| | | return |
| | | } |
| | | this.isFirstMounted = false |
| | | this.dataDeep = 1 |
| | | this.disposeEchart() |
| | | this.personEchartsLoading = true |
| | | this.personEchartsHeight = '100%' |
| | | if (this.userInfo.dept_id == '1123598813738675201' && this.policeStaionID == '') { |
| | | |
| | | this.getPoliceStationInfo() |
| | | |
| | | } else { |
| | | this.getVillagePersonStatisticInfoByPoliceStationId(this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id) |
| | | if (this.userInfo.dept_id != '1123598813738675201') { |
| | | // console.log(this.userInfo.dept_id,'茅家岭派出所',1596020515064381442); |
| | | this.showBack = false |
| | | this.isAllPoliceStation = false |
| | | } |
| | | |
| | | } else if (type == 1) { |
| | | if (this.tabType == 1 && !this.isFirstMounted) { |
| | | console.log('再次点击重点人口') |
| | | this.$emit('showpeopledetail', this.clickPoliceStationId, '重点人员列表', 'onlyKeypeople') |
| | | return |
| | | } |
| | | this.dataDeep = 1 |
| | | this.disposeEchart() |
| | | this.personEchartsLoading = true |
| | | this.initkeyPersonEcharts() |
| | | } |
| | | this.tabType = type |
| | | this.$nextTick(() => { |
| | | window.addEventListener("resize", this.echartsResize) |
| | | }) |
| | | |
| | | // this.getVillageDetailAndPlaceStatisticNumber({ deptId: this.userInfo.dept_id }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取分局户籍人口数据 |
| | | * @return {*} |
| | | */ |
| | | getPoliceStationInfo () { |
| | | getVillagePersonStatisticInfo().then(res => { |
| | | if (res.data.code == 200) { |
| | | this.disposeEchart() |
| | | curSubofficeData = res.data.data |
| | | this.personAll = res.data.data |
| | | console.log('getPoliceStationInfo', res.data.data) |
| | | this.policeStationPersonInfo = res.data.data |
| | | //异步,因此放进接口方法内部 |
| | | this.initPersonEcharts() |
| | | this.clickPeopleChart() |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | } |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取派出所户籍人口数据 |
| | | * @param {*} policeStationId |
| | | * @param {*} name |
| | | * @return {*} |
| | | */ |
| | | getVillagePersonStatisticInfoByPoliceStationId (policeStationId, name) { |
| | | getVillagePersonStatisticInfoByPoliceStationId(policeStationId, name).then(res => { |
| | | if (res.data.code == 200) { |
| | | console.log(res, 'getVillagePersonStatisticInfoByPoliceStationId') |
| | | this.disposeEchart() |
| | | var chartDom = document.getElementById('PersonEcharts') |
| | | homePersonmyChart = this.$echarts.init(chartDom) |
| | | this.personAll = res.data.data |
| | | console.log('this.personAll', this.personAll) |
| | | |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.personAll.emphasisNum = 23 |
| | | } |
| | | |
| | | this.villagePersonStatisticInfoList = res.data.data |
| | | var xDate = [], yDate1 = [], yDate2 = [] |
| | | |
| | | if (this.villagePersonStatisticInfoList.data.length > 0) { |
| | | this.villagePersonStatisticInfoList.data.forEach(e => { |
| | | xDate.push(e.name.replace('居民委员会', '')) |
| | | yDate1.push({ |
| | | value: e.hjnum, |
| | | name: e.name, |
| | | id: e.id, |
| | | communityCode: e.communityCode |
| | | }) |
| | | yDate2.push({ |
| | | value: e.synum, |
| | | name: e.name, |
| | | id: e.id, |
| | | communityCode: e.communityCode |
| | | }) |
| | | methods: { |
| | | // 酒店列表 |
| | | getHotelList () { |
| | | getHotelList({ deptId: this.$parent.areaChangeValue, orderName: 'hotel_name', hotelName: this.$parent.zhuSuName, orderRule: 'asc', size: this.$parent.zhuSuPage.pageSize, current: this.$parent.zhuSuPage.currentPage }).then(res => { |
| | | console.log(res.data.data.records, 'getHotelList-1234') |
| | | this.$parent.zhuSuPage.total = res.data.data.total |
| | | this.$parent.zhuSuArr = res.data.data.records |
| | | setTimeout(() => { |
| | | this.$parent.zhuSuLoading = false |
| | | }, 500) |
| | | }) |
| | | } |
| | | homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate1, yDate2, peopleColor1, peopleColor2), true) |
| | | this.clickPeopleChart() |
| | | }, |
| | | |
| | | setTimeout(() => { |
| | | this.dataDeep = 2 |
| | | this.personEchartsLoading = false |
| | | }, 1000) |
| | | |
| | | } |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 初始化现有人图表 |
| | | * @return {*} |
| | | */ |
| | | initPersonEcharts () { |
| | | var chartDom = document.getElementById('PersonEcharts') |
| | | homePersonmyChart = this.$echarts.init(chartDom) |
| | | |
| | | var xDate = [], yDate1 = [], yDate2 = [] |
| | | //传入x,y轴数据 |
| | | |
| | | if (this.policeStationPersonInfo.data.length > 0) { |
| | | this.policeStationPersonInfo.data.forEach(e => { |
| | | xDate.push(e.name.replace('派出', '')) |
| | | yDate1.push({ |
| | | value: e.hjnum, |
| | | id: e.id, |
| | | type: 'policeStation', |
| | | name: e.name |
| | | }) |
| | | yDate2.push({ |
| | | value: e.synum, |
| | | id: e.id, |
| | | type: 'policeStation', |
| | | name: e.name |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate1, yDate2, peopleColor1, peopleColor2)) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 图表数据处理 |
| | | * @param {*} xDate |
| | | * @param {*} yDate |
| | | * @param {*} colors |
| | | * @return {*} |
| | | */ |
| | | initPersonOptions (xDate, yDate1, yDate2, colors1, colors2) { |
| | | let options |
| | | |
| | | if (xDate.length == 0) { |
| | | options = { |
| | | title: { |
| | | text: '暂无数据1', |
| | | x: 'center', |
| | | y: 'center', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontWeight: 'normal', |
| | | fontSize: fontSize(14) |
| | | // 设备饼图轮播 |
| | | keyPeopleEchartsCarousel () { |
| | | let curIndex = 0 |
| | | if (timer) { |
| | | clearInterval(timer) |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | options = { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: ' <span style="display: inline-block; margin-right: 4px; border-radius: 10px; width: 10px; height: 10px;background-color: #91cc75;"></span> {b0}<strong style="margin-left:10px">{c0}人</strong>', |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | |
| | | axisLabel: { |
| | | color: "#fff", |
| | | interval: 0, |
| | | rotate: 45, |
| | | fontSize: fontSize(10) |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: "#fff" |
| | | } |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | minInterval: 1, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | legend: { |
| | | itemWidth: 15, |
| | | itemHeight: 15, |
| | | data: ['户籍人口', '实有人口'], |
| | | textStyle: { |
| | | color: '#fff' |
| | | }, |
| | | formatter: function (name) { |
| | | var data = [] |
| | | if (name == '户籍人口') { |
| | | data = options.series[0].data |
| | | } else { |
| | | data = options.series[1].data |
| | | } |
| | | var total = 0 |
| | | for (var i = 0; i < data.length; i++) { |
| | | total += data[i].value |
| | | } |
| | | return `${name} (${total}人)` |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '户籍人口', |
| | | data: yDate1, |
| | | type: 'bar', |
| | | barWidth: '40%', |
| | | stack: true, |
| | | emphasis: { |
| | | disabled: true, |
| | | focus: 'none' |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colors1 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors1[0] }, |
| | | // { offset: 0.5, color: colors1[1] }, |
| | | // { offset: 1, color: colors1[2] }, |
| | | // ] |
| | | // ) |
| | | // } |
| | | }, |
| | | emphasis: { |
| | | color: colors1 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors1[2] }, |
| | | // { offset: 0.7, color: colors1[1] }, |
| | | // { offset: 1, color: colors1[0] } |
| | | // ] |
| | | // ) |
| | | // } |
| | | timer = setInterval(() => { |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "downplay", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | curIndex = (curIndex + 1) % keyPeopleDataLength |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "highlight", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "showTip", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | }, 1000) |
| | | |
| | | keyPersonmyChart.on("mouseover", function (param) { |
| | | clearInterval(timer) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "downplay", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "highlight", |
| | | seriesIndex: 0, |
| | | dataIndex: param.dataIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "showTip", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | curIndex = param.dataIndex |
| | | }) |
| | | |
| | | keyPersonmyChart.on("mouseout", function (param) { |
| | | curIndex = param.dataIndex |
| | | if (timer) { |
| | | clearInterval(timer) |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: '实有人口', |
| | | data: yDate2, |
| | | type: 'bar', |
| | | barWidth: '40%', |
| | | stack: true, |
| | | emphasis: { |
| | | disabled: true, |
| | | focus: 'none' |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colors2 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors2[2] }, |
| | | // { offset: 0.5, color: colors2[1] }, |
| | | // { offset: 1, color: colors2[0] }, |
| | | // ] |
| | | // ) |
| | | // } |
| | | }, |
| | | emphasis: { |
| | | color: colors2 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors2[0] }, |
| | | // { offset: 0.7, color: colors2[1] }, |
| | | // { offset: 1, color: colors2[2] } |
| | | // ] |
| | | // ) |
| | | // } |
| | | } |
| | | }, |
| | | }, |
| | | timer = setInterval(() => { |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "downplay", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | curIndex = (curIndex + 1) % keyPeopleDataLength |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "highlight", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | keyPersonmyChart.dispatchAction({ |
| | | type: "showTip", |
| | | seriesIndex: 0, |
| | | dataIndex: curIndex, |
| | | }) |
| | | }, 1000) |
| | | }) |
| | | }, |
| | | /** |
| | | * 责任区查询 |
| | | * @param {*} areaId |
| | | */ |
| | | getHomeAllDataByAreaId (policeStationId, areaId) { |
| | | // if(areaId){ |
| | | this.policeStaionID = policeStationId |
| | | this.areaId = areaId |
| | | this.getNineStatistics(true) |
| | | // } |
| | | }, |
| | | |
| | | ], |
| | | grid: { |
| | | top: '4%', |
| | | left: '2%', |
| | | right: '2%', |
| | | bottom: '1%', |
| | | containLabel: true |
| | | }, |
| | | } |
| | | } |
| | | /** |
| | | * @description: 获取首页的所有数据 |
| | | * @return {*} |
| | | */ |
| | | getHomeAllData (id = '') { |
| | | this.areaId = null |
| | | this.policeStaionID = id |
| | | this.clickPoliceStationId = id |
| | | |
| | | return options |
| | | this.isFirstMounted = true |
| | | if (id != '') { |
| | | this.showBack = false |
| | | this.isAllPoliceStation = false |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有人图表中的返回按钮 |
| | | * @return {*} |
| | | */ |
| | | backBegin () { |
| | | this.clickPoliceStationId = this.userInfo.dept_id |
| | | this.personAll = curSubofficeData |
| | | this.dataDeep = 1 |
| | | this.initPersonEcharts() |
| | | this.$parent.getAllPoliceStationCenter() |
| | | }, |
| | | |
| | | // 现有住宅和关注场所统计总数 |
| | | getVillageDetailAndPlaceStatisticNumber (params) { |
| | | getVillageDetailAndPlaceStatisticNumber(params).then(res => { |
| | | if (res.data.data.length > 0) { |
| | | res.data.data.forEach(item => { |
| | | if (item.typeName == 'gzcs') { |
| | | this.keyPlaceNum = item.number |
| | | } else if (item.typeName == 'syld') { |
| | | this.realHouseNum = item.number |
| | | } |
| | | }) |
| | | } |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.keyPlaceNum = 54 |
| | | this.realHouseNum = 205 |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 实有住宅统计 |
| | | getVillageStatisticData (params) { |
| | | getVillageStatisticData(params).then(res => { |
| | | this.disposeHouseEchart() |
| | | let xDate = [] |
| | | let yDate = [] |
| | | res.data.data.forEach(item => { |
| | | xDate.push(item.typeName) |
| | | yDate.push(item.number) |
| | | }) |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | xDate = ['学校', '医院', '宾馆酒店', '房屋建筑业', '数字经济', '批发业', '零售业'] |
| | | yDate = [34, 2, 33, 11, 22, 30, 14] |
| | | } |
| | | |
| | | this.inithouseEcharts(xDate, yDate) |
| | | // 点击事件 |
| | | this.clickHouseChart('实有住宅') |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 实有住宅详情 |
| | | getVillageStatisticDetail () { |
| | | getVillageStatisticDetail({ deptId: this.userInfo.dept_id, bigType: this.syldBigType, name: this.syldName, current: this.$parent.syldPage.currentPage, size: this.$parent.syldPage.pageSize }).then(res => { |
| | | console.log('getVillageStatisticDetail', res, res.data.data.records) |
| | | this.$parent.syldPage.total = res.data.data.total |
| | | this.$parent.syldArr = res.data.data.records |
| | | setTimeout(() => { |
| | | this.$parent.syldLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 关注场所统计 |
| | | getPlaceOfConcernStatisticData (params) { |
| | | getPlaceOfConcernStatisticData(params).then(res => { |
| | | this.disposeHouseEchart() |
| | | let xDate = [] |
| | | let yDate = [] |
| | | res.data.data.forEach(item => { |
| | | xDate.push(item.typeName) |
| | | yDate.push(item.number) |
| | | }) |
| | | |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | xDate = ['反恐重点目标', '危爆品', '重点服务对象', '困难儿童'] |
| | | yDate = [14, 13, 10, 17] |
| | | } |
| | | |
| | | this.inithouseEcharts(xDate, yDate) |
| | | // 点击事件 |
| | | this.clickHouseChart('关注场所') |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 关注场所详情 |
| | | getPlaceOfConcernStatisticDetail () { |
| | | getPlaceOfConcernStatisticDetail({ deptId: this.userInfo.dept_id, type: this.gzcsType, unitName: this.gzcsUnitName, person: this.gzcsPerson, phone: this.gzcsPhone, current: this.$parent.gzcsPage.currentPage, size: this.$parent.gzcsPage.pageSize }).then(res => { |
| | | console.log('getPlaceOfConcernStatisticDetail', res, res.data.data.records) |
| | | this.$parent.gzcsPage.total = res.data.data.total |
| | | this.$parent.gzcsArr = res.data.data.records |
| | | setTimeout(() => { |
| | | this.$parent.gzcsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | // 九小场所echarts |
| | | initPlaceEcharts (xDate, yDate, type) { |
| | | var chartDom = document.getElementById('houseEcharts') |
| | | houseMyChart = this.$echarts.init(chartDom) |
| | | houseMyChart.setOption(this.initPlaceOptions(xDate, yDate)) |
| | | // 圆柱点击事件 |
| | | this.clickPlaceChart(type) |
| | | }, |
| | | // 场所图表点击事件 |
| | | clickPlaceChart (type) { |
| | | this.tabTypeThree = type |
| | | this.houseEchartsLoading = true |
| | | houseMyChart.on('click', params => { |
| | | console.log(type, 1122) |
| | | if (type == 1) { |
| | | this.$emit('showplacedetail', type, '其它场所列表', params.data.id, this.areaId) |
| | | } else { |
| | | this.$emit('showplacedetail', type, '九小场所列表', params.name, this.areaId) |
| | | } |
| | | }) |
| | | }, |
| | | // 九小场所 |
| | | initPlaceOptions (xDate, y1Date) { |
| | | const that = this |
| | | return { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) |
| | | this.tabTypeThree = 0 |
| | | } else { |
| | | msg = params.value |
| | | this.showBack = true |
| | | this.isAllPoliceStation = true |
| | | } |
| | | this.tabType = 0//解决下拉选择派出所重点人员显示bug |
| | | this.personTabClick(this.tabType) |
| | | |
| | | this.getNineStatistics(true) |
| | | this.houseTabClick(this.tabTypeTwo) |
| | | |
| | | this.landTabClick(this.tabTypeThree) |
| | | |
| | | if (leftTiming != null) { |
| | | clearInterval(leftTiming) |
| | | leftTiming = null |
| | | } |
| | | |
| | | msg = `${params.marker}${params.name}<strong style="margin-left:10px">${msg}</strong>` |
| | | return msg |
| | | }, |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | leftTiming = setInterval(async () => { |
| | | this.houseTabClick(this.tabTypeTwo) |
| | | |
| | | this.landTabClick(this.tabTypeThree) |
| | | }, 600000) |
| | | }, |
| | | color: myColor, |
| | | xAxis: { |
| | | type: 'value', |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | show: false, |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(14) |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | data: y1Date, |
| | | type: 'bar', |
| | | barWidth: '50%', |
| | | barCategoryGap: '80%', |
| | | zlevel: 2, |
| | | cursor: that.userInfo.dept_id != '1596020515064381442' ? 'default' : 'pointer', |
| | | itemStyle: { |
| | | normal: { |
| | | color: '#ed7c2f', |
| | | label: { |
| | | show: true, //开启显示 |
| | | position: 'right', //在上方显示 |
| | | textStyle: { //数值样式 |
| | | color: '#ed7c2f', |
| | | fontSize: 10 |
| | | } |
| | | |
| | | /** |
| | | * @description: 户籍人口和重点人员切换 |
| | | * @param {*} type |
| | | * @return {*} |
| | | */ |
| | | personTabClick (type) { |
| | | console.log('type', type, 'this.tabType', this.tabType, 'this.isFirstMounted', this.isFirstMounted) |
| | | if (type == 0) { |
| | | if (this.tabType == 0 && !this.isFirstMounted) { |
| | | console.log('再次点击人口总数', this.isFirstMounted) |
| | | this.$emit('showpeopledetail', '', '总人口列表', 'includeKeypeople', this.clickPoliceStationId) |
| | | return |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | grid: { |
| | | top: '2%', |
| | | left: '2%', |
| | | // right: '-1%', |
| | | right: '10%', |
| | | bottom: '2%', |
| | | containLabel: true |
| | | }, |
| | | dataZoom: [ |
| | | { |
| | | type: "inside", |
| | | startValue: 0, |
| | | endValue: 4, |
| | | minValueSpan: 8, |
| | | maxValueSpan: 8, |
| | | yAxisIndex: [0], |
| | | zoomOnMouseWheel: false, // 关闭滚轮缩放 |
| | | moveOnMouseWheel: true, // 开启滚轮平移 |
| | | moveOnMouseMove: true // 鼠标移动能触发数据窗口平移 |
| | | }, |
| | | { |
| | | type: 'slider', |
| | | realtime: true, |
| | | startValue: 0, |
| | | endValue: 4, |
| | | width: '3.5', |
| | | height: '90%', |
| | | yAxisIndex: [0], // 控制y轴滚动 |
| | | // fillerColor: "rgba(154, 181, 215, 1)", // 滚动条颜色 |
| | | fillerColor: "rgba(11, 19, 145, 0.5)", // 滚动条颜色 |
| | | borderColor: "rgba(17, 100, 210, 0.12)", |
| | | backgroundColor: 'transparent',//两边未选中的滑动条区域的颜色 |
| | | handleSize: 0, // 两边手柄尺寸 |
| | | showDataShadow: false,//是否显示数据阴影 默认auto |
| | | showDetail: false, // 拖拽时是否展示滚动条两侧的文字 |
| | | top: '1%', |
| | | right: '5', |
| | | } |
| | | this.isFirstMounted = false |
| | | this.dataDeep = 1 |
| | | this.disposeEchart() |
| | | this.personEchartsLoading = true |
| | | this.personEchartsHeight = '100%' |
| | | if (this.userInfo.dept_id == '1123598813738675201' && this.policeStaionID == '') { |
| | | |
| | | ] |
| | | } |
| | | }, |
| | | // 房屋 |
| | | inithouseEcharts (xDate, yDate) { |
| | | var chartDom = document.getElementById('houseEcharts') |
| | | houseMyChart = this.$echarts.init(chartDom) |
| | | houseMyChart.setOption(this.initHouseOptions(xDate, yDate)) |
| | | }, |
| | | this.getPoliceStationInfo() |
| | | |
| | | initHouseOptions (xDate, y1Date, y2Date) { |
| | | const that = this |
| | | return { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) + '万栋' |
| | | } else { |
| | | msg = params.value + '栋' |
| | | } |
| | | |
| | | msg = `${params.marker}${params.name}<strong style="margin-left:10px">${msg}</strong>` |
| | | return msg |
| | | }, |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | color: myColor, |
| | | xAxis: { |
| | | type: 'value', |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | show: false, |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(14) |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | data: y1Date, |
| | | type: 'bar', |
| | | barWidth: '50%', |
| | | barCategoryGap: '80%', |
| | | zlevel: 2, |
| | | cursor: that.userInfo.dept_id != '1596020515064381442' ? 'default' : 'pointer', |
| | | itemStyle: { |
| | | normal: { |
| | | // barBorderRadius: [0, 30, 30, 0], |
| | | // color: function (params) { |
| | | // var num = myColor.length |
| | | // return myColor[params.dataIndex % num] |
| | | // }, |
| | | color: '#ed7c2f', |
| | | label: { |
| | | show: true, //开启显示 |
| | | position: 'right', //在上方显示 |
| | | textStyle: { //数值样式 |
| | | color: '#ed7c2f', |
| | | fontSize: 10 |
| | | } |
| | | } else { |
| | | this.getVillagePersonStatisticInfoByPoliceStationId(this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id) |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | // { |
| | | // data: y2Date, |
| | | // show: true, |
| | | // type: 'bar', |
| | | // barGap: '-100%', |
| | | // barWidth: '35%', //统计条宽度 |
| | | // itemStyle: { |
| | | // normal: { |
| | | // color: 'rgba(102, 102, 102,0.5)' |
| | | // }, |
| | | // }, |
| | | // z: 1, |
| | | // } |
| | | ], |
| | | grid: { |
| | | top: '2%', |
| | | left: '2%', |
| | | // right: '-1%', |
| | | right: '10%', |
| | | bottom: '2%', |
| | | containLabel: true |
| | | }, |
| | | dataZoom: [ |
| | | { |
| | | type: "inside", |
| | | startValue: 0, |
| | | endValue: 4, |
| | | minValueSpan: 8, |
| | | maxValueSpan: 8, |
| | | yAxisIndex: [0], |
| | | zoomOnMouseWheel: false, // 关闭滚轮缩放 |
| | | moveOnMouseWheel: true, // 开启滚轮平移 |
| | | moveOnMouseMove: true // 鼠标移动能触发数据窗口平移 |
| | | }, |
| | | { |
| | | type: 'slider', |
| | | realtime: true, |
| | | startValue: 0, |
| | | endValue: 4, |
| | | width: '3.5', |
| | | height: '90%', |
| | | yAxisIndex: [0], // 控制y轴滚动 |
| | | // fillerColor: "rgba(154, 181, 215, 1)", // 滚动条颜色 |
| | | fillerColor: "rgba(11, 19, 145, 0.5)", // 滚动条颜色 |
| | | borderColor: "rgba(17, 100, 210, 0.12)", |
| | | backgroundColor: 'transparent',//两边未选中的滑动条区域的颜色 |
| | | handleSize: 0, // 两边手柄尺寸 |
| | | showDataShadow: false,//是否显示数据阴影 默认auto |
| | | showDetail: false, // 拖拽时是否展示滚动条两侧的文字 |
| | | top: '1%', |
| | | right: '5', |
| | | } |
| | | |
| | | ] |
| | | } |
| | | }, |
| | | |
| | | houseTabClick (type) { |
| | | this.tabTypeTwo = type |
| | | |
| | | this.houseEchartsLoading = true |
| | | |
| | | this.disposeHouseEchart() |
| | | |
| | | this.getNineStatistics() |
| | | |
| | | // 其它场所 |
| | | // this.getHouseStatisticInfo(2) |
| | | |
| | | // 场所数量 |
| | | // this.getHouseStatisticInfo(1) |
| | | }, |
| | | |
| | | getNineStatistics (flag = false) { |
| | | getNineStatistics({ |
| | | deptId: this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id, |
| | | areaId: this.areaId |
| | | }).then(res => { |
| | | console.log("九小", res) |
| | | let xDate = [] |
| | | let yDate = [] |
| | | |
| | | this.realHouseNum = res.data.data.count |
| | | |
| | | let otherList = res.data.data.otherList.reverse() |
| | | let placeList = res.data.data.placeList.reverse() |
| | | if (flag) { |
| | | this.placeNum = placeList.reduce((pre, cur) => { |
| | | return pre + cur.num |
| | | }, 0) |
| | | this.otherPlaceNum = otherList.reduce((pre, cur) => { |
| | | return pre + cur.num |
| | | }, 0) |
| | | |
| | | return |
| | | } |
| | | |
| | | if (this.tabTypeTwo == 1) { |
| | | otherList.forEach(item => { |
| | | xDate.push(item.nineTypeName) |
| | | yDate.push({ |
| | | value: item.num, |
| | | id: item.id |
| | | }) |
| | | }) |
| | | } else { |
| | | placeList.forEach(item => { |
| | | xDate.push(item.nineTypeName) |
| | | yDate.push(item.num) |
| | | }) |
| | | } |
| | | |
| | | this.initPlaceEcharts(xDate, yDate, this.tabTypeTwo) |
| | | |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取现有住宅信息 |
| | | * @param {*} deptld |
| | | * @param {*} isFollow |
| | | * @return {*} |
| | | */ |
| | | getHouseStatisticInfo (isFollow) { |
| | | getHouseStatisticInfo(this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id, isFollow).then(res => { |
| | | this.disposeHouseEchart() |
| | | |
| | | let xDate = [] |
| | | let yDate = [] |
| | | if (isFollow == 1) { |
| | | this.keyPlaceNum = res.data.data.count |
| | | } else { |
| | | this.realHouseNum = res.data.data.count |
| | | } |
| | | res.data.data.data.forEach(item => { |
| | | xDate.push(item.name) |
| | | yDate.push(item.num) |
| | | }) |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.keyPlaceNum = 28 |
| | | this.realHouseNum = 205 |
| | | if (isFollow == 2) { |
| | | xDate = ['学校', '医院', '宾馆酒店', '房屋建筑业', '数字经济', '批发业', '零售业'] |
| | | yDate = [34, 2, 33, 11, 22, 30, 14] |
| | | this.inithouseEcharts(xDate, yDate) |
| | | } else { |
| | | xDate = ['反恐重点目标', '危爆品', '重点服务对象', '困难儿童'] |
| | | yDate = [14, 13, 10, 17] |
| | | this.inithouseEcharts(xDate, yDate) |
| | | } |
| | | |
| | | this.clickHouseChart() |
| | | } else { |
| | | this.inithouseEcharts(xDate, yDate) |
| | | } |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | initLandOptions (xDate, yDate) { |
| | | return { |
| | | color: ['#0532ff'], |
| | | grid: { |
| | | top: '4%', |
| | | left: '12%', |
| | | right: '4%', |
| | | bottom: '28%' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | return `${params.marker} ${params.name}: ${params.value} 个` |
| | | }, |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | interval: 0, |
| | | rotate: 45, |
| | | fontSize: fontSize(10) |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: "#fff" |
| | | } else if (type == 1) { |
| | | if (this.tabType == 1 && !this.isFirstMounted) { |
| | | console.log('再次点击重点人口') |
| | | this.$emit('showpeopledetail', this.clickPoliceStationId, '重点人员列表', 'onlyKeypeople') |
| | | return |
| | | } |
| | | this.dataDeep = 1 |
| | | this.disposeEchart() |
| | | this.personEchartsLoading = true |
| | | this.initkeyPersonEcharts() |
| | | } |
| | | } |
| | | this.tabType = type |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | minInterval: 1, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | data: yDate, |
| | | type: 'bar', |
| | | barWidth: '24%', |
| | | itemStyle: { |
| | | normal: { |
| | | barBorderRadius: [30, 30, 0, 0], |
| | | // color: function (params) { |
| | | // var num = Math.floor(Math.random() * (myLandColors.length - 1) + 1) |
| | | // return myLandColors[params.dataIndex % num] |
| | | // }, |
| | | } |
| | | }, |
| | | } |
| | | ], |
| | | // zoomData: [ // 有滚动条 平移 |
| | | // dataZoom: [ // 有滚动条 平移 |
| | | // { |
| | | // type: 'slider', |
| | | // show: true, |
| | | // realtime: true, |
| | | // start: 0, |
| | | // end: 40, // 初始展示40% |
| | | // height: 4, |
| | | // backgroundColor: 'rgba(47,69,84,0.2)', |
| | | // fillerColor: "rgba(17, 100, 210, 0.42)", // 滚动条颜色 |
| | | // borderColor: "rgba(17, 100, 210, 0.12)", |
| | | // handleSize: 0, // 两边手柄尺寸 |
| | | // showDetail: false, // 拖拽时是否展示滚动条两侧的文字 |
| | | // top: '96%', |
| | | // }, |
| | | // { |
| | | // type: "inside", // 支持内部鼠标滚动平移 |
| | | // start: 0, |
| | | // end: 40, |
| | | // zoomOnMouseWheel: false, // 关闭滚轮缩放 |
| | | // moveOnMouseWheel: true, // 开启滚轮平移 |
| | | // moveOnMouseMove: true // 鼠标移动能触发数据窗口平移 |
| | | // } |
| | | // ] |
| | | } |
| | | }, |
| | | |
| | | clickPeopleChart () { |
| | | homePersonmyChart.on('click', params => { |
| | | if (params.data.type == 'policeStation') { |
| | | const center = this.$parent.getPoliceStationCenter(params.data.id) |
| | | this.$EventBus.$emit('toPosition', { |
| | | layerName: 'carLayers', |
| | | siteJd: center[0], |
| | | siteWd: center[1] |
| | | }) |
| | | this.personEchartsLoading = true |
| | | this.getVillagePersonStatisticInfoByPoliceStationId(params.data.id) |
| | | this.clickPoliceStationId = params.data.id |
| | | } else { |
| | | console.log(params, '------1------') |
| | | |
| | | this.$emit('showpeopledetail', params.data.id, params.data.name, params.data.communityCode) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | clickHouseChart (type) { |
| | | houseMyChart.on('click', params => { |
| | | console.log(params, 'clickHouseChart') |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.mjlClick(params) |
| | | return |
| | | } |
| | | |
| | | if (type == '实有住宅') { |
| | | if (params.name == '住宿服务') { |
| | | this.$parent.zhuSuPage.currentPage = 1 |
| | | this.$parent.zhuSuPopupShow = true |
| | | this.$parent.zhuSuLoading = true |
| | | this.getHotelList() |
| | | |
| | | } else { |
| | | this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗 |
| | | this.$EventBus.$emit("mapClearLayer", {//清除酒店地图图标 |
| | | layerName: "jiudianLayer", |
| | | type: "VectorLayer", |
| | | /** |
| | | * @description: 获取分局户籍人口数据 |
| | | * @return {*} |
| | | */ |
| | | getPoliceStationInfo () { |
| | | getVillagePersonStatisticInfo().then(res => { |
| | | if (res.data.code == 200) { |
| | | this.disposeEchart() |
| | | curSubofficeData = res.data.data |
| | | this.personAll = res.data.data |
| | | console.log('getPoliceStationInfo', res.data.data) |
| | | this.policeStationPersonInfo = res.data.data |
| | | //异步,因此放进接口方法内部 |
| | | this.initPersonEcharts() |
| | | this.clickPeopleChart() |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | } |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | this.$parent.syldPage.currentPage = 1 |
| | | this.$parent.syldPopupTitle = params.name |
| | | this.syldBigType = params.name |
| | | this.syldName = '' |
| | | this.$parent.syldArr = [] |
| | | this.$parent.syldPopupShow = true |
| | | this.$parent.syldLoading = true |
| | | this.getVillageStatisticDetail() |
| | | } |
| | | }, |
| | | |
| | | } else { |
| | | console.log('关注场所') |
| | | this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗 |
| | | this.$EventBus.$emit("mapClearLayer", {//清除酒店地图图标 |
| | | layerName: "jiudianLayer", |
| | | type: "VectorLayer", |
| | | }) |
| | | this.$parent.gzcsPage.currentPage = 1 |
| | | this.gzcsType = params.name |
| | | this.gzcsUnitName = '' |
| | | this.gzcsPerson = '' |
| | | this.gzcsPhone = '' |
| | | this.$parent.gzcsArr = [] |
| | | this.$parent.gzcsPopupShow = true |
| | | this.$parent.gzcsLoading = true |
| | | this.getPlaceOfConcernStatisticDetail() |
| | | } |
| | | }) |
| | | }, |
| | | /** |
| | | * @description: 获取派出所户籍人口数据 |
| | | * @param {*} policeStationId |
| | | * @param {*} name |
| | | * @return {*} |
| | | */ |
| | | getVillagePersonStatisticInfoByPoliceStationId (policeStationId, name) { |
| | | getVillagePersonStatisticInfoByPoliceStationId(policeStationId, name).then(res => { |
| | | if (res.data.code == 200) { |
| | | console.log(res, 'getVillagePersonStatisticInfoByPoliceStationId') |
| | | this.disposeEchart() |
| | | var chartDom = document.getElementById('PersonEcharts') |
| | | homePersonmyChart = this.$echarts.init(chartDom) |
| | | this.personAll = res.data.data |
| | | console.log('this.personAll', this.personAll) |
| | | |
| | | // 茅家岭账号点击现有住宅 |
| | | mjlClick (params) { |
| | | console.log('params', params) |
| | | this.$parent.architectureTitle = params.name |
| | | if (params.name == '学校') { |
| | | this.$parent.xxPopupShow = true |
| | | this.$parent.houseArr = [] |
| | | this.$parent.houseLoading = true |
| | | setTimeout(() => { |
| | | this.$parent.houseLoading = false |
| | | this.$parent.houseArr = schoolJSON |
| | | }, 1000) |
| | | } else { |
| | | this.$parent.architectureShow = true |
| | | this.$parent.architectureTable = [] |
| | | this.$parent.architectureLoad = true |
| | | |
| | | if (params.name == '医院') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = hospitalJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '宾馆酒店') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = hotelJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '数字经济') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = digitalJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '房屋建筑业') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = housingJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '批发业') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = wholesaleJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '零售业') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = retailJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '反恐重点目标') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = antiTerroristJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '危爆品') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = dExplosionJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '重点服务对象') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = serviceObjJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '困难儿童') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = difficultyJSON |
| | | }, 1000) |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 初始化重点人员饼状图 |
| | | * @return {*} |
| | | */ |
| | | async initkeyPersonEcharts () { |
| | | this.disposeEchart() |
| | | |
| | | let personInfo = await this.getPersonInfo() |
| | | console.log('personInfo', personInfo) |
| | | keyPeopleDataLength = personInfo.length |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | personInfo = [ |
| | | { count: 3, name: '非涉法涉诉重点个访人员', value: 7 }, |
| | | { count: 1, name: '楼盘业主维权群体', value: 1 }, |
| | | { count: 1, name: '欠薪讨债群体', value: 1 }, |
| | | { count: 4, name: '涉法涉诉重点个访人员', value: 4 }, |
| | | { count: 11, name: '征地拆迁群体', value: 11 }, |
| | | ] |
| | | } |
| | | |
| | | const high = this.$refs.REFPERSONECHARTS.offsetHeight |
| | | |
| | | // if (personInfo.length * (high / 7) > high) { |
| | | // this.personEchartsHeight = personInfo.length * (high / 7) + 'px' |
| | | // } else { |
| | | this.personEchartsHeight = '100%' |
| | | // } |
| | | |
| | | this.$nextTick(() => { |
| | | var chartDom = document.getElementById('PersonEcharts') |
| | | keyPersonmyChart = this.$echarts.init(chartDom) |
| | | keyPersonmyChart.setOption(this.initkeyPersonOption(personInfo)) |
| | | |
| | | this.clickkeyPersonChart() |
| | | if (personInfo.length > 1) { |
| | | this.keyPeopleEchartsCarousel() |
| | | } else { |
| | | clearInterval(timer) |
| | | keyPersonmyChart.off("mouseover") |
| | | keyPersonmyChart.off("mouseout") |
| | | } |
| | | }) |
| | | |
| | | |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 调用接口获取重点人员数据 |
| | | * @return {*} |
| | | */ |
| | | getPersonInfo () { |
| | | const data = getPersonInfo({ deptId: this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id }).then(res => { |
| | | console.log('getPersonInfo', { deptId: this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id }) |
| | | |
| | | 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) { |
| | | let options |
| | | |
| | | if (dataArr.length == 0) { |
| | | options = { |
| | | title: { |
| | | text: '暂无重点人员数据', |
| | | x: 'center', |
| | | y: 'center', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontWeight: 'normal', |
| | | fontSize: fontSize(14) |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | options = { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) + '万人' |
| | | } else { |
| | | msg = params.value + '人' |
| | | } |
| | | msg = `<div style="color: #FFF;">${params.marker} ${params.name}:<strong style="margin-left:10px">${msg}</strong></div>` |
| | | return msg |
| | | }, |
| | | backgroundColor: "rgba(8, 56, 185, 0.9)", |
| | | borderColor: "rgba(8, 56, 185, 0.9)", |
| | | textStyle: { |
| | | fontSize: fontSize(12) |
| | | }, |
| | | confine: true |
| | | }, |
| | | // legend: { |
| | | // orient: 'vertical', |
| | | // top: 'middle', |
| | | // right: '2%', |
| | | // y: '1%', |
| | | // itemGap: 15, |
| | | // textStyle: { |
| | | // color: '#fff' |
| | | // }, |
| | | // align: 'left', |
| | | // formatter: function (name) { |
| | | // let data = dataArr |
| | | // let tarValue |
| | | // for (let i = 0; i < data.length; i++) { |
| | | // if (data[i].name == name) { |
| | | // tarValue = data[i].value |
| | | // } |
| | | // } |
| | | // let v = tarValue |
| | | // return `${name} ${v} 人 ` |
| | | // }, |
| | | // }, |
| | | series: [ |
| | | { |
| | | |
| | | type: 'pie', |
| | | radius: [20, 50], |
| | | center: ['50%', '50%'], |
| | | |
| | | data: dataArr, |
| | | label: { |
| | | normal: { |
| | | formatter: function (params, ticket, callback) { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) + '万人' |
| | | } else { |
| | | msg = params.value + '人' |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.personAll.emphasisNum = 23 |
| | | } |
| | | return `{white|${params.name}}{yellow|${msg}}` |
| | | }, |
| | | rich: { |
| | | yellow: { |
| | | color: "#ffc72b", |
| | | fontSize: fontSize(12), |
| | | padding: [5, 4], |
| | | align: 'center' |
| | | }, |
| | | total: { |
| | | color: "#ffc72b", |
| | | fontSize: fontSize(12), |
| | | align: 'center' |
| | | }, |
| | | white: { |
| | | color: "#fff", |
| | | align: 'center', |
| | | fontSize: fontSize(12), |
| | | padding: [21, 0] |
| | | }, |
| | | blue: { |
| | | color: '#49dff0', |
| | | fontSize: fontSize(12), |
| | | align: 'center' |
| | | }, |
| | | } |
| | | }, |
| | | }, |
| | | |
| | | this.villagePersonStatisticInfoList = res.data.data |
| | | var xDate = [], yDate1 = [], yDate2 = [] |
| | | |
| | | if (this.villagePersonStatisticInfoList.data.length > 0) { |
| | | this.villagePersonStatisticInfoList.data.forEach(e => { |
| | | xDate.push(e.name.replace('居民委员会', '')) |
| | | yDate1.push({ |
| | | value: e.hjnum, |
| | | name: e.name, |
| | | id: e.id, |
| | | communityCode: e.communityCode |
| | | }) |
| | | yDate2.push({ |
| | | value: e.synum, |
| | | name: e.name, |
| | | id: e.id, |
| | | communityCode: e.communityCode |
| | | }) |
| | | }) |
| | | } |
| | | homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate1, yDate2, peopleColor1, peopleColor2), true) |
| | | this.clickPeopleChart() |
| | | |
| | | setTimeout(() => { |
| | | this.dataDeep = 2 |
| | | this.personEchartsLoading = false |
| | | }, 1000) |
| | | |
| | | } |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 初始化现有人图表 |
| | | * @return {*} |
| | | */ |
| | | initPersonEcharts () { |
| | | var chartDom = document.getElementById('PersonEcharts') |
| | | homePersonmyChart = this.$echarts.init(chartDom) |
| | | |
| | | var xDate = [], yDate1 = [], yDate2 = [] |
| | | //传入x,y轴数据 |
| | | |
| | | if (this.policeStationPersonInfo.data.length > 0) { |
| | | this.policeStationPersonInfo.data.forEach(e => { |
| | | xDate.push(e.name.replace('派出', '')) |
| | | yDate1.push({ |
| | | value: e.hjnum, |
| | | id: e.id, |
| | | type: 'policeStation', |
| | | name: e.name |
| | | }) |
| | | yDate2.push({ |
| | | value: e.synum, |
| | | id: e.id, |
| | | type: 'policeStation', |
| | | name: e.name |
| | | }) |
| | | }) |
| | | } |
| | | ], |
| | | grid: { |
| | | x: 10, |
| | | y: 10, |
| | | x2: 10, |
| | | y2: 20 |
| | | }, |
| | | } |
| | | } |
| | | |
| | | return options |
| | | homePersonmyChart.setOption(this.initPersonOptions(xDate, yDate1, yDate2, peopleColor1, peopleColor2)) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 图表数据处理 |
| | | * @param {*} xDate |
| | | * @param {*} yDate |
| | | * @param {*} colors |
| | | * @return {*} |
| | | */ |
| | | initPersonOptions (xDate, yDate1, yDate2, colors1, colors2) { |
| | | let options |
| | | |
| | | if (xDate.length == 0) { |
| | | options = { |
| | | title: { |
| | | text: '暂无数据1', |
| | | x: 'center', |
| | | y: 'center', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontWeight: 'normal', |
| | | fontSize: fontSize(14) |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | options = { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: ' <span style="display: inline-block; margin-right: 4px; border-radius: 10px; width: 10px; height: 10px;background-color: #91cc75;"></span> {b0}<strong style="margin-left:10px">{c0}人</strong>', |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | |
| | | axisLabel: { |
| | | color: "#fff", |
| | | interval: 0, |
| | | rotate: 45, |
| | | fontSize: fontSize(10) |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: "#fff" |
| | | } |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | minInterval: 1, |
| | | max: Math.floor(Math.max(...yDate1.map(i => i.value), ...yDate2.map(i => i.value)) * 1.5), |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | legend: { |
| | | itemWidth: 15, |
| | | itemHeight: 15, |
| | | data: ['户籍人口', '实有人口'], |
| | | textStyle: { |
| | | color: '#fff' |
| | | }, |
| | | formatter: function (name) { |
| | | var data = [] |
| | | if (name == '户籍人口') { |
| | | data = options.series[0].data |
| | | } else { |
| | | data = options.series[1].data |
| | | } |
| | | var total = 0 |
| | | for (var i = 0; i < data.length; i++) { |
| | | total += data[i].value |
| | | } |
| | | return `${name} (${total}人)` |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '户籍人口', |
| | | data: yDate1, |
| | | type: 'bar', |
| | | barWidth: '40%', |
| | | stack: true, |
| | | emphasis: { |
| | | disabled: true, |
| | | focus: 'none' |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colors1 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors1[0] }, |
| | | // { offset: 0.5, color: colors1[1] }, |
| | | // { offset: 1, color: colors1[2] }, |
| | | // ] |
| | | // ) |
| | | // } |
| | | }, |
| | | emphasis: { |
| | | color: colors1 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors1[2] }, |
| | | // { offset: 0.7, color: colors1[1] }, |
| | | // { offset: 1, color: colors1[0] } |
| | | // ] |
| | | // ) |
| | | // } |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | name: '实有人口', |
| | | data: yDate2, |
| | | type: 'bar', |
| | | barWidth: '40%', |
| | | stack: true, |
| | | emphasis: { |
| | | disabled: true, |
| | | focus: 'none' |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colors2 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors2[2] }, |
| | | // { offset: 0.5, color: colors2[1] }, |
| | | // { offset: 1, color: colors2[0] }, |
| | | // ] |
| | | // ) |
| | | // } |
| | | }, |
| | | emphasis: { |
| | | color: colors2 |
| | | // color: function (params) { |
| | | // return new global.echarts.graphic.LinearGradient( |
| | | // 0, 0, 0, 1, |
| | | // [ |
| | | // { offset: 0, color: colors2[0] }, |
| | | // { offset: 0.7, color: colors2[1] }, |
| | | // { offset: 1, color: colors2[2] } |
| | | // ] |
| | | // ) |
| | | // } |
| | | } |
| | | }, |
| | | }, |
| | | |
| | | ], |
| | | grid: { |
| | | top: '4%', |
| | | left: '2%', |
| | | right: '2%', |
| | | bottom: '1%', |
| | | containLabel: true |
| | | }, |
| | | } |
| | | } |
| | | |
| | | return options |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有人图表中的返回按钮 |
| | | * @return {*} |
| | | */ |
| | | backBegin () { |
| | | this.clickPoliceStationId = this.userInfo.dept_id |
| | | this.personAll = curSubofficeData |
| | | this.dataDeep = 1 |
| | | this.initPersonEcharts() |
| | | this.$parent.getAllPoliceStationCenter() |
| | | }, |
| | | |
| | | // 现有住宅和关注场所统计总数 |
| | | getVillageDetailAndPlaceStatisticNumber (params) { |
| | | getVillageDetailAndPlaceStatisticNumber(params).then(res => { |
| | | if (res.data.data.length > 0) { |
| | | res.data.data.forEach(item => { |
| | | if (item.typeName == 'gzcs') { |
| | | this.keyPlaceNum = item.number |
| | | } else if (item.typeName == 'syld') { |
| | | this.realHouseNum = item.number |
| | | } |
| | | }) |
| | | } |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.keyPlaceNum = 54 |
| | | this.realHouseNum = 205 |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 实有住宅统计 |
| | | getVillageStatisticData (params) { |
| | | getVillageStatisticData(params).then(res => { |
| | | this.disposeHouseEchart() |
| | | let xDate = [] |
| | | let yDate = [] |
| | | res.data.data.forEach(item => { |
| | | xDate.push(item.typeName) |
| | | yDate.push(item.number) |
| | | }) |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | xDate = ['学校', '医院', '宾馆酒店', '房屋建筑业', '数字经济', '批发业', '零售业'] |
| | | yDate = [34, 2, 33, 11, 22, 30, 14] |
| | | } |
| | | |
| | | this.inithouseEcharts(xDate, yDate) |
| | | // 点击事件 |
| | | this.clickHouseChart('实有住宅') |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 实有住宅详情 |
| | | getVillageStatisticDetail () { |
| | | getVillageStatisticDetail({ deptId: this.userInfo.dept_id, bigType: this.syldBigType, name: this.syldName, current: this.$parent.syldPage.currentPage, size: this.$parent.syldPage.pageSize }).then(res => { |
| | | console.log('getVillageStatisticDetail', res, res.data.data.records) |
| | | this.$parent.syldPage.total = res.data.data.total |
| | | this.$parent.syldArr = res.data.data.records |
| | | setTimeout(() => { |
| | | this.$parent.syldLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 关注场所统计 |
| | | getPlaceOfConcernStatisticData (params) { |
| | | getPlaceOfConcernStatisticData(params).then(res => { |
| | | this.disposeHouseEchart() |
| | | let xDate = [] |
| | | let yDate = [] |
| | | res.data.data.forEach(item => { |
| | | xDate.push(item.typeName) |
| | | yDate.push(item.number) |
| | | }) |
| | | |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | xDate = ['反恐重点目标', '危爆品', '重点服务对象', '困难儿童'] |
| | | yDate = [14, 13, 10, 17] |
| | | } |
| | | |
| | | this.inithouseEcharts(xDate, yDate) |
| | | // 点击事件 |
| | | this.clickHouseChart('关注场所') |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | // 关注场所详情 |
| | | getPlaceOfConcernStatisticDetail () { |
| | | getPlaceOfConcernStatisticDetail({ deptId: this.userInfo.dept_id, type: this.gzcsType, unitName: this.gzcsUnitName, person: this.gzcsPerson, phone: this.gzcsPhone, current: this.$parent.gzcsPage.currentPage, size: this.$parent.gzcsPage.pageSize }).then(res => { |
| | | console.log('getPlaceOfConcernStatisticDetail', res, res.data.data.records) |
| | | this.$parent.gzcsPage.total = res.data.data.total |
| | | this.$parent.gzcsArr = res.data.data.records |
| | | setTimeout(() => { |
| | | this.$parent.gzcsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | // 九小场所echarts |
| | | initPlaceEcharts (xDate, yDate, type) { |
| | | var chartDom = document.getElementById('houseEcharts') |
| | | houseMyChart = this.$echarts.init(chartDom) |
| | | houseMyChart.setOption(this.initPlaceOptions(xDate, yDate)) |
| | | // 圆柱点击事件 |
| | | this.clickPlaceChart(type) |
| | | }, |
| | | // 场所图表点击事件 |
| | | clickPlaceChart (type) { |
| | | this.tabTypeThree = type |
| | | this.houseEchartsLoading = true |
| | | houseMyChart.on('click', params => { |
| | | console.log(type, 1122) |
| | | if (type == 1) { |
| | | this.$emit('showplacedetail', type, '其它场所列表', params.data.id, this.areaId) |
| | | } else { |
| | | this.$emit('showplacedetail', type, '九小场所列表', params.name, this.areaId) |
| | | } |
| | | }) |
| | | }, |
| | | // 九小场所 |
| | | initPlaceOptions (xDate, y1Date) { |
| | | const that = this |
| | | return { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) |
| | | } else { |
| | | msg = params.value |
| | | } |
| | | |
| | | msg = `${params.marker}${params.name}<strong style="margin-left:10px">${msg}</strong>` |
| | | return msg |
| | | }, |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | color: myColor, |
| | | xAxis: { |
| | | type: 'value', |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | show: false, |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(14) |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | data: y1Date, |
| | | type: 'bar', |
| | | barWidth: '50%', |
| | | barCategoryGap: '80%', |
| | | zlevel: 2, |
| | | cursor: that.userInfo.dept_id != '1596020515064381442' ? 'default' : 'pointer', |
| | | itemStyle: { |
| | | normal: { |
| | | color: '#ed7c2f', |
| | | label: { |
| | | show: true, //开启显示 |
| | | position: 'right', //在上方显示 |
| | | textStyle: { //数值样式 |
| | | color: '#ed7c2f', |
| | | fontSize: 10 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | ], |
| | | grid: { |
| | | top: '2%', |
| | | left: '2%', |
| | | // right: '-1%', |
| | | right: '10%', |
| | | bottom: '2%', |
| | | containLabel: true |
| | | }, |
| | | dataZoom: [ |
| | | { |
| | | type: "inside", |
| | | startValue: 0, |
| | | endValue: 4, |
| | | minValueSpan: 8, |
| | | maxValueSpan: 8, |
| | | yAxisIndex: [0], |
| | | zoomOnMouseWheel: false, // 关闭滚轮缩放 |
| | | moveOnMouseWheel: true, // 开启滚轮平移 |
| | | moveOnMouseMove: true // 鼠标移动能触发数据窗口平移 |
| | | }, |
| | | { |
| | | type: 'slider', |
| | | realtime: true, |
| | | startValue: 0, |
| | | endValue: 4, |
| | | width: '3.5', |
| | | height: '90%', |
| | | yAxisIndex: [0], // 控制y轴滚动 |
| | | // fillerColor: "rgba(154, 181, 215, 1)", // 滚动条颜色 |
| | | fillerColor: "rgba(11, 19, 145, 0.5)", // 滚动条颜色 |
| | | borderColor: "rgba(17, 100, 210, 0.12)", |
| | | backgroundColor: 'transparent',//两边未选中的滑动条区域的颜色 |
| | | handleSize: 0, // 两边手柄尺寸 |
| | | showDataShadow: false,//是否显示数据阴影 默认auto |
| | | showDetail: false, // 拖拽时是否展示滚动条两侧的文字 |
| | | top: '1%', |
| | | right: '5', |
| | | } |
| | | |
| | | ] |
| | | } |
| | | }, |
| | | // 房屋 |
| | | inithouseEcharts (xDate, yDate) { |
| | | var chartDom = document.getElementById('houseEcharts') |
| | | houseMyChart = this.$echarts.init(chartDom) |
| | | houseMyChart.setOption(this.initHouseOptions(xDate, yDate)) |
| | | }, |
| | | |
| | | initHouseOptions (xDate, y1Date, y2Date) { |
| | | const that = this |
| | | return { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) + '万栋' |
| | | } else { |
| | | msg = params.value + '栋' |
| | | } |
| | | |
| | | msg = `${params.marker}${params.name}<strong style="margin-left:10px">${msg}</strong>` |
| | | return msg |
| | | }, |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | color: myColor, |
| | | xAxis: { |
| | | type: 'value', |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | show: false, |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(14) |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | data: y1Date, |
| | | type: 'bar', |
| | | barWidth: '50%', |
| | | barCategoryGap: '80%', |
| | | zlevel: 2, |
| | | cursor: that.userInfo.dept_id != '1596020515064381442' ? 'default' : 'pointer', |
| | | itemStyle: { |
| | | normal: { |
| | | // barBorderRadius: [0, 30, 30, 0], |
| | | // color: function (params) { |
| | | // var num = myColor.length |
| | | // return myColor[params.dataIndex % num] |
| | | // }, |
| | | color: '#ed7c2f', |
| | | label: { |
| | | show: true, //开启显示 |
| | | position: 'right', //在上方显示 |
| | | textStyle: { //数值样式 |
| | | color: '#ed7c2f', |
| | | fontSize: 10 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | // { |
| | | // data: y2Date, |
| | | // show: true, |
| | | // type: 'bar', |
| | | // barGap: '-100%', |
| | | // barWidth: '35%', //统计条宽度 |
| | | // itemStyle: { |
| | | // normal: { |
| | | // color: 'rgba(102, 102, 102,0.5)' |
| | | // }, |
| | | // }, |
| | | // z: 1, |
| | | // } |
| | | ], |
| | | grid: { |
| | | top: '2%', |
| | | left: '2%', |
| | | // right: '-1%', |
| | | right: '10%', |
| | | bottom: '2%', |
| | | containLabel: true |
| | | }, |
| | | dataZoom: [ |
| | | { |
| | | type: "inside", |
| | | startValue: 0, |
| | | endValue: 4, |
| | | minValueSpan: 8, |
| | | maxValueSpan: 8, |
| | | yAxisIndex: [0], |
| | | zoomOnMouseWheel: false, // 关闭滚轮缩放 |
| | | moveOnMouseWheel: true, // 开启滚轮平移 |
| | | moveOnMouseMove: true // 鼠标移动能触发数据窗口平移 |
| | | }, |
| | | { |
| | | type: 'slider', |
| | | realtime: true, |
| | | startValue: 0, |
| | | endValue: 4, |
| | | width: '3.5', |
| | | height: '90%', |
| | | yAxisIndex: [0], // 控制y轴滚动 |
| | | // fillerColor: "rgba(154, 181, 215, 1)", // 滚动条颜色 |
| | | fillerColor: "rgba(11, 19, 145, 0.5)", // 滚动条颜色 |
| | | borderColor: "rgba(17, 100, 210, 0.12)", |
| | | backgroundColor: 'transparent',//两边未选中的滑动条区域的颜色 |
| | | handleSize: 0, // 两边手柄尺寸 |
| | | showDataShadow: false,//是否显示数据阴影 默认auto |
| | | showDetail: false, // 拖拽时是否展示滚动条两侧的文字 |
| | | top: '1%', |
| | | right: '5', |
| | | } |
| | | |
| | | ] |
| | | } |
| | | }, |
| | | |
| | | houseTabClick (type) { |
| | | this.tabTypeTwo = type |
| | | |
| | | this.houseEchartsLoading = true |
| | | |
| | | this.disposeHouseEchart() |
| | | |
| | | this.getNineStatistics() |
| | | |
| | | // 其它场所 |
| | | // this.getHouseStatisticInfo(2) |
| | | |
| | | // 场所数量 |
| | | // this.getHouseStatisticInfo(1) |
| | | }, |
| | | |
| | | getNineStatistics (flag = false) { |
| | | getNineStatistics({ |
| | | deptId: this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id, |
| | | areaId: this.areaId |
| | | }).then(res => { |
| | | console.log("九小", res) |
| | | let xDate = [] |
| | | let yDate = [] |
| | | |
| | | this.realHouseNum = res.data.data.count |
| | | |
| | | let otherList = res.data.data.otherList.reverse() |
| | | let placeList = res.data.data.placeList.reverse() |
| | | if (flag) { |
| | | this.placeNum = placeList.reduce((pre, cur) => { |
| | | return pre + cur.num |
| | | }, 0) |
| | | this.otherPlaceNum = otherList.reduce((pre, cur) => { |
| | | return pre + cur.num |
| | | }, 0) |
| | | |
| | | return |
| | | } |
| | | |
| | | if (this.tabTypeTwo == 1) { |
| | | otherList.forEach(item => { |
| | | xDate.push(item.nineTypeName) |
| | | yDate.push({ |
| | | value: item.num, |
| | | id: item.id |
| | | }) |
| | | }) |
| | | } else { |
| | | placeList.forEach(item => { |
| | | xDate.push(item.nineTypeName) |
| | | yDate.push(item.num) |
| | | }) |
| | | } |
| | | |
| | | this.initPlaceEcharts(xDate, yDate, this.tabTypeTwo) |
| | | |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取现有住宅信息 |
| | | * @param {*} deptld |
| | | * @param {*} isFollow |
| | | * @return {*} |
| | | */ |
| | | getHouseStatisticInfo (isFollow) { |
| | | getHouseStatisticInfo(this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id, isFollow).then(res => { |
| | | this.disposeHouseEchart() |
| | | |
| | | let xDate = [] |
| | | let yDate = [] |
| | | if (isFollow == 1) { |
| | | this.keyPlaceNum = res.data.data.count |
| | | } else { |
| | | this.realHouseNum = res.data.data.count |
| | | } |
| | | res.data.data.data.forEach(item => { |
| | | xDate.push(item.name) |
| | | yDate.push(item.num) |
| | | }) |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.keyPlaceNum = 28 |
| | | this.realHouseNum = 205 |
| | | if (isFollow == 2) { |
| | | xDate = ['学校', '医院', '宾馆酒店', '房屋建筑业', '数字经济', '批发业', '零售业'] |
| | | yDate = [34, 2, 33, 11, 22, 30, 14] |
| | | this.inithouseEcharts(xDate, yDate) |
| | | } else { |
| | | xDate = ['反恐重点目标', '危爆品', '重点服务对象', '困难儿童'] |
| | | yDate = [14, 13, 10, 17] |
| | | this.inithouseEcharts(xDate, yDate) |
| | | } |
| | | |
| | | this.clickHouseChart() |
| | | } else { |
| | | this.inithouseEcharts(xDate, yDate) |
| | | } |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.houseEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | initLandOptions (xDate, yDate) { |
| | | return { |
| | | color: ['#0532ff'], |
| | | grid: { |
| | | top: '4%', |
| | | left: '12%', |
| | | right: '4%', |
| | | bottom: '28%' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | return `${params.marker} ${params.name}: ${params.value} 个` |
| | | }, |
| | | backgroundColor: 'rgba(8, 56, 185, 0.9)', |
| | | borderColor: 'rgba(8, 56, 185, 0.9)', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: xDate, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | interval: 0, |
| | | rotate: 45, |
| | | fontSize: fontSize(10) |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: "#fff" |
| | | } |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | minInterval: 1, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | color: "#fff", |
| | | fontSize: fontSize(12) |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | data: yDate, |
| | | type: 'bar', |
| | | barWidth: '24%', |
| | | itemStyle: { |
| | | normal: { |
| | | barBorderRadius: [30, 30, 0, 0], |
| | | // color: function (params) { |
| | | // var num = Math.floor(Math.random() * (myLandColors.length - 1) + 1) |
| | | // return myLandColors[params.dataIndex % num] |
| | | // }, |
| | | } |
| | | }, |
| | | } |
| | | ], |
| | | // zoomData: [ // 有滚动条 平移 |
| | | // dataZoom: [ // 有滚动条 平移 |
| | | // { |
| | | // type: 'slider', |
| | | // show: true, |
| | | // realtime: true, |
| | | // start: 0, |
| | | // end: 40, // 初始展示40% |
| | | // height: 4, |
| | | // backgroundColor: 'rgba(47,69,84,0.2)', |
| | | // fillerColor: "rgba(17, 100, 210, 0.42)", // 滚动条颜色 |
| | | // borderColor: "rgba(17, 100, 210, 0.12)", |
| | | // handleSize: 0, // 两边手柄尺寸 |
| | | // showDetail: false, // 拖拽时是否展示滚动条两侧的文字 |
| | | // top: '96%', |
| | | // }, |
| | | // { |
| | | // type: "inside", // 支持内部鼠标滚动平移 |
| | | // start: 0, |
| | | // end: 40, |
| | | // zoomOnMouseWheel: false, // 关闭滚轮缩放 |
| | | // moveOnMouseWheel: true, // 开启滚轮平移 |
| | | // moveOnMouseMove: true // 鼠标移动能触发数据窗口平移 |
| | | // } |
| | | // ] |
| | | } |
| | | }, |
| | | |
| | | clickPeopleChart () { |
| | | homePersonmyChart.on('click', params => { |
| | | if (params.data.type == 'policeStation') { |
| | | const center = this.$parent.getPoliceStationCenter(params.data.id) |
| | | this.$EventBus.$emit('toPosition', { |
| | | layerName: 'carLayers', |
| | | siteJd: center[0], |
| | | siteWd: center[1], |
| | | siteGd: 32000 |
| | | }) |
| | | this.personEchartsLoading = true |
| | | this.getVillagePersonStatisticInfoByPoliceStationId(params.data.id) |
| | | this.clickPoliceStationId = params.data.id |
| | | } else { |
| | | console.log(params, '------1------') |
| | | |
| | | this.$emit('showpeopledetail', params.data.id, params.data.name, params.data.communityCode) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | clickHouseChart (type) { |
| | | houseMyChart.on('click', params => { |
| | | console.log(params, 'clickHouseChart') |
| | | // 茅家岭单独判断 |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | this.mjlClick(params) |
| | | return |
| | | } |
| | | |
| | | if (type == '实有住宅') { |
| | | if (params.name == '住宿服务') { |
| | | this.$parent.zhuSuPage.currentPage = 1 |
| | | this.$parent.zhuSuPopupShow = true |
| | | this.$parent.zhuSuLoading = true |
| | | this.getHotelList() |
| | | |
| | | } else { |
| | | this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗 |
| | | this.$EventBus.$emit("mapClearLayer", {//清除酒店地图图标 |
| | | layerName: "jiudianLayer", |
| | | type: "VectorLayer", |
| | | }) |
| | | this.$parent.syldPage.currentPage = 1 |
| | | this.$parent.syldPopupTitle = params.name |
| | | this.syldBigType = params.name |
| | | this.syldName = '' |
| | | this.$parent.syldArr = [] |
| | | this.$parent.syldPopupShow = true |
| | | this.$parent.syldLoading = true |
| | | this.getVillageStatisticDetail() |
| | | } |
| | | |
| | | } else { |
| | | console.log('关注场所') |
| | | this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗 |
| | | this.$EventBus.$emit("mapClearLayer", {//清除酒店地图图标 |
| | | layerName: "jiudianLayer", |
| | | type: "VectorLayer", |
| | | }) |
| | | this.$parent.gzcsPage.currentPage = 1 |
| | | this.gzcsType = params.name |
| | | this.gzcsUnitName = '' |
| | | this.gzcsPerson = '' |
| | | this.gzcsPhone = '' |
| | | this.$parent.gzcsArr = [] |
| | | this.$parent.gzcsPopupShow = true |
| | | this.$parent.gzcsLoading = true |
| | | this.getPlaceOfConcernStatisticDetail() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 茅家岭账号点击现有住宅 |
| | | mjlClick (params) { |
| | | console.log('params', params) |
| | | this.$parent.architectureTitle = params.name |
| | | if (params.name == '学校') { |
| | | this.$parent.xxPopupShow = true |
| | | this.$parent.houseArr = [] |
| | | this.$parent.houseLoading = true |
| | | setTimeout(() => { |
| | | this.$parent.houseLoading = false |
| | | this.$parent.houseArr = schoolJSON |
| | | }, 1000) |
| | | } else { |
| | | this.$parent.architectureShow = true |
| | | this.$parent.architectureTable = [] |
| | | this.$parent.architectureLoad = true |
| | | |
| | | if (params.name == '医院') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = hospitalJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '宾馆酒店') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = hotelJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '数字经济') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = digitalJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '房屋建筑业') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = housingJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '批发业') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = wholesaleJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '零售业') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = retailJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '反恐重点目标') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = antiTerroristJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '危爆品') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = dExplosionJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '重点服务对象') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = serviceObjJSON |
| | | }, 1000) |
| | | } |
| | | |
| | | if (params.name == '困难儿童') { |
| | | setTimeout(() => { |
| | | this.$parent.architectureLoad = false |
| | | this.$parent.architectureTable = difficultyJSON |
| | | }, 1000) |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 初始化重点人员饼状图 |
| | | * @return {*} |
| | | */ |
| | | async initkeyPersonEcharts () { |
| | | this.disposeEchart() |
| | | |
| | | let personInfo = await this.getPersonInfo() |
| | | console.log('personInfo', personInfo) |
| | | keyPeopleDataLength = personInfo.length |
| | | if (this.userInfo.dept_id == '1596020515064381442') { |
| | | personInfo = [ |
| | | { count: 3, name: '非涉法涉诉重点个访人员', value: 7 }, |
| | | { count: 1, name: '楼盘业主维权群体', value: 1 }, |
| | | { count: 1, name: '欠薪讨债群体', value: 1 }, |
| | | { count: 4, name: '涉法涉诉重点个访人员', value: 4 }, |
| | | { count: 11, name: '征地拆迁群体', value: 11 }, |
| | | ] |
| | | } |
| | | |
| | | const high = this.$refs.REFPERSONECHARTS.offsetHeight |
| | | |
| | | // if (personInfo.length * (high / 7) > high) { |
| | | // this.personEchartsHeight = personInfo.length * (high / 7) + 'px' |
| | | // } else { |
| | | this.personEchartsHeight = '100%' |
| | | // } |
| | | |
| | | this.$nextTick(() => { |
| | | var chartDom = document.getElementById('PersonEcharts') |
| | | keyPersonmyChart = this.$echarts.init(chartDom) |
| | | keyPersonmyChart.setOption(this.initkeyPersonOption(personInfo)) |
| | | |
| | | this.clickkeyPersonChart() |
| | | if (personInfo.length > 1) { |
| | | this.keyPeopleEchartsCarousel() |
| | | } else { |
| | | clearInterval(timer) |
| | | keyPersonmyChart.off("mouseover") |
| | | keyPersonmyChart.off("mouseout") |
| | | } |
| | | }) |
| | | |
| | | |
| | | setTimeout(() => { |
| | | this.personEchartsLoading = false |
| | | }, 500) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 调用接口获取重点人员数据 |
| | | * @return {*} |
| | | */ |
| | | getPersonInfo () { |
| | | const data = getPersonInfo({ deptId: this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id }).then(res => { |
| | | console.log('getPersonInfo', { deptId: this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id }) |
| | | |
| | | 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) { |
| | | let options |
| | | |
| | | if (dataArr.length == 0) { |
| | | options = { |
| | | title: { |
| | | text: '暂无重点人员数据', |
| | | x: 'center', |
| | | y: 'center', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontWeight: 'normal', |
| | | fontSize: fontSize(14) |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | options = { |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: params => { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) + '万人' |
| | | } else { |
| | | msg = params.value + '人' |
| | | } |
| | | msg = `<div style="color: #FFF;">${params.marker} ${params.name}:<strong style="margin-left:10px">${msg}</strong></div>` |
| | | return msg |
| | | }, |
| | | backgroundColor: "rgba(8, 56, 185, 0.9)", |
| | | borderColor: "rgba(8, 56, 185, 0.9)", |
| | | textStyle: { |
| | | fontSize: fontSize(12) |
| | | }, |
| | | confine: true |
| | | }, |
| | | // legend: { |
| | | // orient: 'vertical', |
| | | // top: 'middle', |
| | | // right: '2%', |
| | | // y: '1%', |
| | | // itemGap: 15, |
| | | // textStyle: { |
| | | // color: '#fff' |
| | | // }, |
| | | // align: 'left', |
| | | // formatter: function (name) { |
| | | // let data = dataArr |
| | | // let tarValue |
| | | // for (let i = 0; i < data.length; i++) { |
| | | // if (data[i].name == name) { |
| | | // tarValue = data[i].value |
| | | // } |
| | | // } |
| | | // let v = tarValue |
| | | // return `${name} ${v} 人 ` |
| | | // }, |
| | | // }, |
| | | series: [ |
| | | { |
| | | |
| | | type: 'pie', |
| | | radius: [20, 50], |
| | | center: ['50%', '50%'], |
| | | |
| | | data: dataArr, |
| | | label: { |
| | | normal: { |
| | | formatter: function (params, ticket, callback) { |
| | | let msg |
| | | if (params.value > 10000) { |
| | | msg = (params.value / 10000).toFixed(2) + '万人' |
| | | } else { |
| | | msg = params.value + '人' |
| | | } |
| | | return `{white|${params.name}}{yellow|${msg}}` |
| | | }, |
| | | rich: { |
| | | yellow: { |
| | | color: "#ffc72b", |
| | | fontSize: fontSize(12), |
| | | padding: [5, 4], |
| | | align: 'center' |
| | | }, |
| | | total: { |
| | | color: "#ffc72b", |
| | | fontSize: fontSize(12), |
| | | align: 'center' |
| | | }, |
| | | white: { |
| | | color: "#fff", |
| | | align: 'center', |
| | | fontSize: fontSize(12), |
| | | padding: [21, 0] |
| | | }, |
| | | blue: { |
| | | color: '#49dff0', |
| | | fontSize: fontSize(12), |
| | | align: 'center' |
| | | }, |
| | | } |
| | | }, |
| | | }, |
| | | } |
| | | ], |
| | | grid: { |
| | | x: 10, |
| | | y: 10, |
| | | x2: 10, |
| | | y2: 20 |
| | | }, |
| | | } |
| | | } |
| | | |
| | | return options |
| | | }, |
| | | |
| | | /** |
| | | * @description: 重点人员饼状图的点击事件 |
| | | * @return {*} |
| | | */ |
| | | async clickkeyPersonChart () { |
| | | keyPersonmyChart.on('click', async params => { |
| | | this.$emit('showkeypersondetail', params.name) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有小区切换 |
| | | * @param {*} type |
| | | * @return {*} |
| | | */ |
| | | landTabClick (type) { |
| | | this.tabTypeThree = type |
| | | this.landEchartsLoading = true |
| | | |
| | | this.disposeLandEchart() |
| | | if (type == 0) { |
| | | this.getAreaStatisticInfo(2) |
| | | } else if (type == 1) { |
| | | this.getAreaStatisticInfo(1) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取现有小区数据 |
| | | * @param {*} type |
| | | * @param {*} deptId |
| | | * @return {*} |
| | | */ |
| | | getAreaStatisticInfo (type) { |
| | | getAreaStatisticInfo(type, this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id).then(res => { |
| | | this.disposeLandEchart() |
| | | |
| | | let landData = [] |
| | | if (type == 2) { |
| | | this.areaNum = res.data.data.areaNum |
| | | this.villageNum = res.data.data.villageNum |
| | | let nameArr = [] |
| | | let countArr = [] |
| | | res.data.data.data.forEach(item => { |
| | | nameArr.push(item.name.replace('派出', '').replace('居民委员会', '')) |
| | | countArr.push({ value: item.count, id: item.id }) |
| | | }) |
| | | landData = [nameArr, countArr] |
| | | } else if (type == 1) { |
| | | // this.areaNum = res.data.data.areaNum |
| | | // this.villageNum = res.data.data.villageNum |
| | | let nameArr = [] |
| | | let countArr = [] |
| | | res.data.data.data.forEach(item => { |
| | | nameArr.push(item.name.replace('派出', '')) |
| | | countArr.push({ value: item.count, id: item.id }) |
| | | }) |
| | | landData = [nameArr, countArr] |
| | | } |
| | | setTimeout(() => { |
| | | this.landEchartsLoading = false |
| | | }, 500) |
| | | console.log("landData1", landData) |
| | | this.initLandEcharts(landData) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.landEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有小区图表渲染 |
| | | * @param {*} landData |
| | | * @return {*} |
| | | */ |
| | | initLandEcharts (landData) { |
| | | this.disposeLandEchart() |
| | | var chartDom = document.getElementById('landEcharts') |
| | | console.log("chartDom", chartDom) |
| | | landMyChart = this.$echarts.init(chartDom) |
| | | console.log("landMyChart", landMyChart) |
| | | landMyChart.setOption(this.initLandOptions(landData[0], landData[1])) |
| | | console.log("setOption", landData[0]) |
| | | this.clickLandChart() |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有小区图表点击事件 |
| | | * @return {*} |
| | | */ |
| | | clickLandChart () { |
| | | landMyChart.on('click', params => { |
| | | console.log('clickLandChart') |
| | | if (this.tabTypeThree == 0) { |
| | | this.$emit('showlanddetail', params.name, 2, params.data.id) |
| | | } else { |
| | | this.$emit('showlanddetail', params.name, 1, params.data.id) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 视图窗口改变时,echarts图表重置 |
| | | * @return {*} |
| | | */ |
| | | echartsResize () { |
| | | homePersonmyChart && homePersonmyChart != null && homePersonmyChart.resize() |
| | | landMyChart && landMyChart != null && landMyChart.resize() |
| | | keyPersonmyChart && keyPersonmyChart != null && keyPersonmyChart.resize() |
| | | houseMyChart && houseMyChart != null && houseMyChart.resize() |
| | | }, |
| | | |
| | | /** |
| | | * @description: 销毁所有echarts实例,解绑点击事件 |
| | | * @return {*} |
| | | */ |
| | | disposeEchart () { |
| | | if (homePersonmyChart != null && homePersonmyChart != '' && homePersonmyChart != undefined) { |
| | | homePersonmyChart.dispose() |
| | | homePersonmyChart.off('click') |
| | | } |
| | | |
| | | if (keyPersonmyChart != null && keyPersonmyChart != '' && keyPersonmyChart != undefined) { |
| | | keyPersonmyChart.dispose() |
| | | keyPersonmyChart.off('click') |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 销毁所有echarts实例,解绑点击事件 |
| | | * @return {*} |
| | | */ |
| | | disposeHouseEchart () { |
| | | if (houseMyChart != null && houseMyChart != '' && houseMyChart != undefined) { |
| | | houseMyChart.clear() |
| | | houseMyChart.dispose() |
| | | houseMyChart.off('click') |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 销毁所有echarts实例,解绑点击事件 |
| | | * @return {*} |
| | | */ |
| | | disposeLandEchart () { |
| | | if (landMyChart != null && landMyChart != '' && landMyChart != undefined) { |
| | | landMyChart.dispose() |
| | | landMyChart.off('click') |
| | | } |
| | | }, |
| | | |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * @description: 重点人员饼状图的点击事件 |
| | | * @return {*} |
| | | */ |
| | | async clickkeyPersonChart () { |
| | | keyPersonmyChart.on('click', async params => { |
| | | this.$emit('showkeypersondetail', params.name) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有小区切换 |
| | | * @param {*} type |
| | | * @return {*} |
| | | */ |
| | | landTabClick (type) { |
| | | this.tabTypeThree = type |
| | | this.landEchartsLoading = true |
| | | |
| | | this.disposeLandEchart() |
| | | if (type == 0) { |
| | | this.getAreaStatisticInfo(2) |
| | | } else if (type == 1) { |
| | | this.getAreaStatisticInfo(1) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 获取现有小区数据 |
| | | * @param {*} type |
| | | * @param {*} deptId |
| | | * @return {*} |
| | | */ |
| | | getAreaStatisticInfo (type) { |
| | | getAreaStatisticInfo(type, this.policeStaionID != '' ? this.policeStaionID : this.userInfo.dept_id).then(res => { |
| | | destroyed () { |
| | | window.removeEventListener("resize", this.echartsResize) |
| | | this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗 |
| | | this.disposeEchart() |
| | | this.disposeHouseEchart() |
| | | this.disposeLandEchart() |
| | | |
| | | let landData = [] |
| | | if (type == 2) { |
| | | this.areaNum = res.data.data.areaNum |
| | | this.villageNum = res.data.data.villageNum |
| | | let nameArr = [] |
| | | let countArr = [] |
| | | res.data.data.data.forEach(item => { |
| | | nameArr.push(item.name.replace('派出', '').replace('居民委员会', '')) |
| | | countArr.push({ value: item.count, id: item.id }) |
| | | }) |
| | | landData = [nameArr, countArr] |
| | | } else if (type == 1) { |
| | | // this.areaNum = res.data.data.areaNum |
| | | // this.villageNum = res.data.data.villageNum |
| | | let nameArr = [] |
| | | let countArr = [] |
| | | res.data.data.data.forEach(item => { |
| | | nameArr.push(item.name.replace('派出', '')) |
| | | countArr.push({ value: item.count, id: item.id }) |
| | | }) |
| | | landData = [nameArr, countArr] |
| | | if (leftTiming != null) { |
| | | clearInterval(leftTiming) |
| | | leftTiming = null |
| | | } |
| | | setTimeout(() => { |
| | | this.landEchartsLoading = false |
| | | }, 500) |
| | | console.log("landData1", landData) |
| | | this.initLandEcharts(landData) |
| | | }).catch(res => { |
| | | setTimeout(() => { |
| | | this.landEchartsLoading = false |
| | | }, 500) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有小区图表渲染 |
| | | * @param {*} landData |
| | | * @return {*} |
| | | */ |
| | | initLandEcharts (landData) { |
| | | this.disposeLandEchart() |
| | | var chartDom = document.getElementById('landEcharts') |
| | | console.log("chartDom", chartDom) |
| | | landMyChart = this.$echarts.init(chartDom) |
| | | console.log("landMyChart", landMyChart) |
| | | landMyChart.setOption(this.initLandOptions(landData[0], landData[1])) |
| | | console.log("setOption", landData[0]) |
| | | this.clickLandChart() |
| | | }, |
| | | |
| | | /** |
| | | * @description: 现有小区图表点击事件 |
| | | * @return {*} |
| | | */ |
| | | clickLandChart () { |
| | | landMyChart.on('click', params => { |
| | | console.log('clickLandChart') |
| | | if (this.tabTypeThree == 0) { |
| | | this.$emit('showlanddetail', params.name, 2, params.data.id) |
| | | } else { |
| | | this.$emit('showlanddetail', params.name, 1, params.data.id) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 视图窗口改变时,echarts图表重置 |
| | | * @return {*} |
| | | */ |
| | | echartsResize () { |
| | | homePersonmyChart && homePersonmyChart != null && homePersonmyChart.resize() |
| | | landMyChart && landMyChart != null && landMyChart.resize() |
| | | keyPersonmyChart && keyPersonmyChart != null && keyPersonmyChart.resize() |
| | | houseMyChart && houseMyChart != null && houseMyChart.resize() |
| | | }, |
| | | |
| | | /** |
| | | * @description: 销毁所有echarts实例,解绑点击事件 |
| | | * @return {*} |
| | | */ |
| | | disposeEchart () { |
| | | if (homePersonmyChart != null && homePersonmyChart != '' && homePersonmyChart != undefined) { |
| | | homePersonmyChart.dispose() |
| | | homePersonmyChart.off('click') |
| | | } |
| | | |
| | | if (keyPersonmyChart != null && keyPersonmyChart != '' && keyPersonmyChart != undefined) { |
| | | keyPersonmyChart.dispose() |
| | | keyPersonmyChart.off('click') |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 销毁所有echarts实例,解绑点击事件 |
| | | * @return {*} |
| | | */ |
| | | disposeHouseEchart () { |
| | | if (houseMyChart != null && houseMyChart != '' && houseMyChart != undefined) { |
| | | houseMyChart.clear() |
| | | houseMyChart.dispose() |
| | | houseMyChart.off('click') |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * @description: 销毁所有echarts实例,解绑点击事件 |
| | | * @return {*} |
| | | */ |
| | | disposeLandEchart () { |
| | | if (landMyChart != null && landMyChart != '' && landMyChart != undefined) { |
| | | landMyChart.dispose() |
| | | landMyChart.off('click') |
| | | } |
| | | }, |
| | | |
| | | |
| | | }, |
| | | |
| | | destroyed () { |
| | | window.removeEventListener("resize", this.echartsResize) |
| | | this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗 |
| | | this.disposeEchart() |
| | | this.disposeHouseEchart() |
| | | this.disposeLandEchart() |
| | | |
| | | if (leftTiming != null) { |
| | | clearInterval(leftTiming) |
| | | leftTiming = null |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .container { |
| | | display: flex; |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | .person-box { |
| | | .word { |
| | | color: #fff; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .before { |
| | | margin-left: 108px; |
| | | } |
| | | |
| | | .back { |
| | | color: #fff; |
| | | position: absolute; |
| | | top: 96px; |
| | | right: 16px; |
| | | width: 20px; |
| | | height: 20px; |
| | | font-size: 20px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .back:hover { |
| | | color: #43bafe; |
| | | } |
| | | |
| | | .back::after { |
| | | font-family: element-icons; |
| | | content: '\e6ea'; |
| | | } |
| | | } |
| | | |
| | | .person-box, |
| | | .house-box, |
| | | .land-box { |
| | | margin: 8px; |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | // background: $bg-color; |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | background-image: url(/img/box/box-bg.png); |
| | | background-size: 100% 100%; |
| | | background-repeat: no-repeat; |
| | | .person-box { |
| | | .word { |
| | | color: #fff; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .box { |
| | | display: flex; |
| | | position: absolute; |
| | | flex-direction: column; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | z-index: 11; |
| | | .before { |
| | | margin-left: 108px; |
| | | } |
| | | |
| | | .back { |
| | | color: #fff; |
| | | position: absolute; |
| | | top: 96px; |
| | | right: 16px; |
| | | width: 20px; |
| | | height: 20px; |
| | | font-size: 20px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .back:hover { |
| | | color: #43bafe; |
| | | } |
| | | |
| | | .back::after { |
| | | font-family: element-icons; |
| | | content: '\e6ea'; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | padding: 0 18px 0 18px; |
| | | position: relative; |
| | | font-size: 16px; |
| | | |
| | | font-weight: bold; |
| | | font-style: oblique; |
| | | letter-spacing: 2px; |
| | | color: #fff; |
| | | |
| | | .title-tab { |
| | | span { |
| | | color: #99cccc; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | span.choosed { |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| | | .title-num { |
| | | color: #fff; |
| | | |
| | | span { |
| | | color: #99cccc; |
| | | } |
| | | |
| | | span.choosed { |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| | | .choosed { |
| | | color: #fff; |
| | | } |
| | | |
| | | &>div:nth-of-type(2) { |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | |
| | | // .sub-title { |
| | | // display: flex; |
| | | // justify-content: space-between; |
| | | // height: 36px; |
| | | // } |
| | | |
| | | .sub-tab { |
| | | padding: 10px; |
| | | display: flex; |
| | | color: #99cccc; |
| | | |
| | | .tab, |
| | | .tab3 { |
| | | margin: 0 10px; |
| | | .person-box, |
| | | .house-box, |
| | | .land-box { |
| | | margin: 8px; |
| | | flex: 1; |
| | | background: $sub-tab-bg-color; |
| | | border-radius: 8px; |
| | | cursor: pointer; |
| | | height: 22px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-direction: column; |
| | | // background: $bg-color; |
| | | |
| | | &>div { |
| | | height: 22px; |
| | | line-height: 22px; |
| | | white-space: nowrap; |
| | | background-image: url(/img/box/box-bg.png); |
| | | background-size: 100% 100%; |
| | | background-repeat: no-repeat; |
| | | |
| | | .box { |
| | | display: flex; |
| | | position: absolute; |
| | | flex-direction: column; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | z-index: 11; |
| | | } |
| | | } |
| | | |
| | | .tab { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .tab1 { |
| | | width: 50%; |
| | | margin-left: 25% !important; |
| | | display: flex; |
| | | justify-content: center; |
| | | margin: 0 10px; |
| | | background: $sub-tab-bg-color; |
| | | border-radius: 8px; |
| | | cursor: pointer; |
| | | height: 22px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | padding: 0 18px 0 18px; |
| | | position: relative; |
| | | font-size: 16px; |
| | | |
| | | font-weight: bold; |
| | | font-style: oblique; |
| | | letter-spacing: 2px; |
| | | color: #fff; |
| | | |
| | | .title-tab { |
| | | span { |
| | | color: #99cccc; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | span.choosed { |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| | | .title-num { |
| | | color: #fff; |
| | | |
| | | span { |
| | | color: #99cccc; |
| | | } |
| | | |
| | | span.choosed { |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| | | .choosed { |
| | | color: #fff; |
| | | } |
| | | |
| | | &>div:nth-of-type(2) { |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | |
| | | // .sub-title { |
| | | // display: flex; |
| | | // justify-content: space-between; |
| | | // height: 36px; |
| | | // } |
| | | |
| | | .sub-tab { |
| | | padding: 10px; |
| | | display: flex; |
| | | color: #99cccc; |
| | | |
| | | .tab, |
| | | .tab3 { |
| | | margin: 0 10px; |
| | | flex: 1; |
| | | background: $sub-tab-bg-color; |
| | | border-radius: 8px; |
| | | cursor: pointer; |
| | | height: 22px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | &>div { |
| | | height: 22px; |
| | | line-height: 22px; |
| | | white-space: nowrap; |
| | | } |
| | | } |
| | | |
| | | .tab { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .tab1 { |
| | | width: 50%; |
| | | margin-left: 25% !important; |
| | | display: flex; |
| | | justify-content: center; |
| | | margin: 0 10px; |
| | | background: $sub-tab-bg-color; |
| | | border-radius: 8px; |
| | | cursor: pointer; |
| | | height: 22px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | } |
| | | |
| | | :deep(.el-main) { |
| | | padding: 0; |
| | | } |
| | | |
| | | .echarts-box { |
| | | padding: 12px; |
| | | padding-top: 0; |
| | | flex: 1; |
| | | width: 100%; |
| | | // height: 100%; |
| | | } |
| | | } |
| | | |
| | | :deep(.el-main) { |
| | | padding: 0; |
| | | .house-box { |
| | | margin-top: 0; |
| | | margin-bottom: 0; |
| | | |
| | | .title { |
| | | height: 54px; |
| | | line-height: 54px; |
| | | } |
| | | } |
| | | |
| | | .echarts-box { |
| | | padding: 12px; |
| | | padding-top: 0; |
| | | flex: 1; |
| | | width: 100%; |
| | | // height: 100%; |
| | | :deep(.el-table__body-wrapper) { |
| | | overflow-x: hidden !important; |
| | | } |
| | | } |
| | | |
| | | .house-box { |
| | | margin-top: 0; |
| | | margin-bottom: 0; |
| | | |
| | | .title { |
| | | height: 54px; |
| | | line-height: 54px; |
| | | } |
| | | } |
| | | |
| | | :deep(.el-table__body-wrapper) { |
| | | overflow-x: hidden !important; |
| | | } |
| | | } |
| | | |
| | | .border-svg { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | z-index: 1; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | height: 100%; |
| | | z-index: 1; |
| | | } |
| | | |
| | | .mypath { |
| | | stroke: rgba(33, 150, 243, 1); |
| | | stroke-width: 2; |
| | | stroke-dasharray: 888; |
| | | // stroke-dashoffset: 888; |
| | | fill: none; |
| | | animation: go 6s linear infinite forwards; |
| | | stroke: rgba(33, 150, 243, 1); |
| | | stroke-width: 2; |
| | | stroke-dasharray: 888; |
| | | // stroke-dashoffset: 888; |
| | | fill: none; |
| | | animation: go 6s linear infinite forwards; |
| | | } |
| | | |
| | | @keyframes go { |
| | | 0% { |
| | | stroke-dashoffset: 0; |
| | | } |
| | | 0% { |
| | | stroke-dashoffset: 0; |
| | | } |
| | | |
| | | 100% { |
| | | stroke-dashoffset: 888; |
| | | } |
| | | 100% { |
| | | stroke-dashoffset: 888; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | --> |
| | | |
| | | <template> |
| | | <div class="police-page container"> |
| | | <div v-show="boxShow" class="container-content" ref="containerContent"> |
| | | <div class="time-select" ref="timeSelect"> |
| | | <div class="search-item-box"> |
| | | <el-input size="small" clearable v-model="searchKey" @input="searchBtn" placeholder="请输入(姓名、手机号、身份证号、住址)" |
| | | style="cursor: pointer;"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="police-page container"> |
| | | <div v-show="boxShow" class="container-content" ref="containerContent"> |
| | | <div class="time-select" ref="timeSelect"> |
| | | <div class="search-item-box"> |
| | | <el-input size="small" clearable v-model="searchKey" @input="searchBtn" |
| | | placeholder="请输入(姓名、手机号、身份证号、住址)" style="cursor: pointer;"></el-input> |
| | | </div> |
| | | </div> |
| | | |
| | | <div v-show="tableData.length > 0" class="list police-info intelligent-table" ref="tableBox"> |
| | | <el-table :data="tableData" style="width: 100%" :height="currentTableHeight" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }" |
| | | :row-class-name="tableRowClassName" class="police-infor-table"> |
| | | <el-table-column prop="realName" :show-overflow-tooltip="true" label="姓名"></el-table-column> |
| | | <el-table-column prop="phone" :show-overflow-tooltip="true" label="手机号"></el-table-column> |
| | | <el-table-column prop="cardNo" :show-overflow-tooltip="true" label="身份证号"></el-table-column> |
| | | <!-- <el-table-column prop="address" :show-overflow-tooltip="true" label="住址"></el-table-column> --> |
| | | <el-table-column label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)" |
| | | @click="rowClick(scope.row)"> |
| | | <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i> |
| | | </el-button> |
| | | <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)"> |
| | | <i class="el-icon-document" style="color:#66b1ff"></i> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div v-show="tableData.length > 0" class="list police-info intelligent-table" ref="tableBox"> |
| | | <el-table :data="tableData" style="width: 100%" :height="currentTableHeight" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }" |
| | | :row-class-name="tableRowClassName" class="police-infor-table"> |
| | | <el-table-column prop="realName" :show-overflow-tooltip="true" label="姓名"></el-table-column> |
| | | <el-table-column prop="phone" :show-overflow-tooltip="true" label="手机号"></el-table-column> |
| | | <el-table-column prop="cardNo" :show-overflow-tooltip="true" label="身份证号"></el-table-column> |
| | | <!-- <el-table-column prop="address" :show-overflow-tooltip="true" label="住址"></el-table-column> --> |
| | | <el-table-column label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)" |
| | | @click="rowClick(scope.row)"> |
| | | <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i> |
| | | </el-button> |
| | | <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)"> |
| | | <i class="el-icon-document" style="color:#66b1ff"></i> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div class="pages all-pagination-sty" ref="tablePagination" style="padding-top:-15px"> |
| | | <el-pagination background layout="prev, pager, next" :page-size="pages.pageSize" :total="pages.total" |
| | | :pager-count="pages.total > 100000 ? 3 : 4" :current-page="pages.currentPage" |
| | | @current-change="handleCurrentChange"></el-pagination> |
| | | <div class="pages all-pagination-sty" ref="tablePagination" style="padding-top:-15px"> |
| | | <el-pagination background layout="prev, pager, next" :page-size="pages.pageSize" |
| | | :total="pages.total" :pager-count="pages.total > 100000 ? 3 : 4" |
| | | :current-page="pages.currentPage" @current-change="handleCurrentChange"></el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <detailsPopup ref="detailsPopup" :popupTile="popupTile"></detailsPopup> |
| | | </div> |
| | | |
| | | <detailsPopup ref="detailsPopup" :popupTile="popupTile"></detailsPopup> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | let JQSmychart = null |
| | | |
| | | let positionColor = [ |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 192, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 242, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(0, 185, 209, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(250, 84, 28, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(221, 255, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(51, 255, 0, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 255, 181, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 181, 252, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 129, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 236, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 184, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 113, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(81, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(126, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(168, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(171, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 249, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(210, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 174, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 226, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 176, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 155, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 155, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 192, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 242, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(0, 185, 209, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(250, 84, 28, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(221, 255, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(51, 255, 0, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 255, 181, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 181, 252, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 129, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 236, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 184, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 113, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(81, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(126, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(168, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(171, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 249, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(210, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 174, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 226, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 176, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 155, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 155, 20), |
| | | ] |
| | | import { initMapPosition } from '@/utils/mapPositionInit' |
| | | import { |
| | | getVillagePersonInfoBySearch, |
| | | getVillagePersonInfoBySearch, |
| | | } from "@/api/dept/index.js" |
| | | import { getPoliceStationTree } from "@/api/home/index.js" |
| | | let loading = null |
| | | |
| | | export default { |
| | | inject: ['userInfo'], |
| | | inject: ['userInfo'], |
| | | |
| | | data () { |
| | | return { |
| | | popupTile: '详情信息', |
| | | searchKey: '', |
| | | realEmptyText: "", |
| | | currentTableHeight: 0, |
| | | tableData: [], |
| | | boxShow: false, |
| | | pages: { |
| | | total: 0, |
| | | pageSize: 16, |
| | | count: 0, |
| | | currentPage: 1 |
| | | }, |
| | | policeStationOptions: [] |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | const that = this |
| | | |
| | | that.$nextTick(() => { |
| | | initMapPosition() |
| | | that.searchBtn() |
| | | }) |
| | | this.getPoliceStationTree(1) |
| | | }, |
| | | |
| | | mounted () { |
| | | this.$parent.$parent.resize('400px', true) |
| | | |
| | | this.$nextTick(() => { |
| | | this.$EventBus.$emit('closeMxTileset') |
| | | |
| | | this.setTableHeight() |
| | | }) |
| | | |
| | | window.addEventListener('resize', this.setTableHeight) |
| | | }, |
| | | |
| | | computed: { |
| | | positionColor () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return "#1AFA29" |
| | | } else { |
| | | return "#ccc" |
| | | data () { |
| | | return { |
| | | popupTile: '详情信息', |
| | | searchKey: '', |
| | | realEmptyText: "", |
| | | currentTableHeight: 0, |
| | | tableData: [], |
| | | boxShow: false, |
| | | pages: { |
| | | total: 0, |
| | | pageSize: 16, |
| | | count: 0, |
| | | currentPage: 1 |
| | | }, |
| | | policeStationOptions: [] |
| | | } |
| | | } |
| | | }, |
| | | |
| | | positionDisabled () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | created () { |
| | | const that = this |
| | | |
| | | methods: { |
| | | // 加载首页下拉列表数据 |
| | | getPoliceStationTree (type, id = '') { |
| | | var that = this |
| | | getPoliceStationTree(type, id).then(res => { |
| | | if (type == 1) { |
| | | |
| | | this.policeStationOptions = res.data.data |
| | | |
| | | this.policeStationOptions.unshift({ |
| | | name: '全部', |
| | | id: 1 |
| | | }) |
| | | |
| | | this.initPoliceStationLayer() |
| | | } |
| | | }) |
| | | that.$nextTick(() => { |
| | | initMapPosition() |
| | | that.searchBtn() |
| | | }) |
| | | this.getPoliceStationTree(1) |
| | | }, |
| | | |
| | | // 加载面数据的方法 |
| | | initPoliceStationLayer () { |
| | | const that = this |
| | | cylinderLayer = new global.DC.PrimitiveLayer('cylinderLayer') |
| | | global.viewer.addLayer(cylinderLayer) |
| | | mounted () { |
| | | this.$parent.$parent.resize('400px', true) |
| | | |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | this.$nextTick(() => { |
| | | this.$EventBus.$emit('closeMxTileset') |
| | | |
| | | this.policeStationOptions.forEach((item, index) => { |
| | | if (item.position && item.position.length > 0) { |
| | | item.position.forEach((sourceItem, sourceIndex) => { |
| | | this.setTableHeight() |
| | | }) |
| | | |
| | | const Json = { ...JSON.parse(sourceItem) } |
| | | window.addEventListener('resize', this.setTableHeight) |
| | | }, |
| | | |
| | | global.DC.Namespace.Cesium.GeoJsonDataSource.load(Json, { |
| | | stroke: positionColor[index], |
| | | fill: positionColor[index], //注意:颜色必须大写,即不能为blue |
| | | strokeWidth: 0, |
| | | clampToGround: false |
| | | }).then(function (dataSource) { |
| | | let entities = dataSource.entities.values |
| | | //修改entity样式 |
| | | for (let i = 0; i < entities.length; i++) { |
| | | let entity = entities[i] |
| | | entity.polyline = { |
| | | positions: entity.polygon.hierarchy._value.positions, |
| | | width: 2, |
| | | material: global.DC.Namespace.Cesium.Color.fromCssColorString('#ED7C2F'), |
| | | clampToGround: true |
| | | computed: { |
| | | positionColor () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return "#1AFA29" |
| | | } else { |
| | | return "#ccc" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | DataSourcesArray.push(dataSource) |
| | | dataSource.show = true |
| | | global.viewer.dataSources.add(dataSource) |
| | | positionDisabled () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | |
| | | methods: { |
| | | // 加载首页下拉列表数据 |
| | | getPoliceStationTree (type, id = '') { |
| | | var that = this |
| | | getPoliceStationTree(type, id).then(res => { |
| | | if (type == 1) { |
| | | |
| | | this.policeStationOptions = res.data.data |
| | | |
| | | this.policeStationOptions.unshift({ |
| | | name: '全部', |
| | | id: 1 |
| | | }) |
| | | |
| | | this.initPoliceStationLayer() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 加载面数据的方法 |
| | | initPoliceStationLayer () { |
| | | const that = this |
| | | cylinderLayer = new global.DC.PrimitiveLayer('cylinderLayer') |
| | | global.viewer.addLayer(cylinderLayer) |
| | | |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // 获取选中数据--暂时为测试数据 |
| | | getRowData (row) { |
| | | let data = [ |
| | | { |
| | | label: '与户主关系', |
| | | prop: 'relation', |
| | | value: row.relation, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '名字', |
| | | prop: 'realName', |
| | | value: row.realName, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '身份证号', |
| | | prop: 'cardNo', |
| | | value: row.cardNo, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '人口类型', |
| | | prop: 'personType', |
| | | value: row.personType == 1 ? '户籍人口' : '实有人口', |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '地址', |
| | | prop: 'address', |
| | | value: row.address, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '新地址', |
| | | prop: 'reAddress', |
| | | // value: row.reAddress.replace('江西省上饶', ''), |
| | | value: row.reAddress, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '审查状态', |
| | | prop: 'status', |
| | | value: row.status, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '审查时间', |
| | | prop: 'sctime', |
| | | value: row.sctime, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '社区局村委会', |
| | | prop: 'neightborhoood', |
| | | value: row.neightborhoood, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '重点人员细类', |
| | | prop: 'zdryxl', |
| | | value: row.zdryxl, |
| | | type: 'detail' |
| | | } |
| | | ] |
| | | return data |
| | | }, |
| | | this.policeStationOptions.forEach((item, index) => { |
| | | if (item.position && item.position.length > 0) { |
| | | item.position.forEach((sourceItem, sourceIndex) => { |
| | | |
| | | // 点击详情 |
| | | goDetail (row) { |
| | | let data = this.getRowData(row) |
| | | this.$refs.detailsPopup.initOpen(data) |
| | | }, |
| | | const Json = { ...JSON.parse(sourceItem) } |
| | | |
| | | // 点击定位 |
| | | rowClick (row) { |
| | | this.$EventBus.$emit('toPosition', { |
| | | siteJd: row.x, |
| | | siteWd: row.y, |
| | | siteGd: 200 |
| | | }) |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'searchAILayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$EventBus.$emit('layerPointAdd', { |
| | | layerName: 'searchAILayer', |
| | | type: "billboard", |
| | | params: { |
| | | ...row, |
| | | lng: row.x, |
| | | lat: row.y, |
| | | alt: 1, |
| | | url: `/img/icon/location.png` |
| | | global.DC.Namespace.Cesium.GeoJsonDataSource.load(Json, { |
| | | stroke: positionColor[index], |
| | | fill: positionColor[index], //注意:颜色必须大写,即不能为blue |
| | | strokeWidth: 0, |
| | | clampToGround: false |
| | | }).then(function (dataSource) { |
| | | let entities = dataSource.entities.values |
| | | //修改entity样式 |
| | | for (let i = 0; i < entities.length; i++) { |
| | | let entity = entities[i] |
| | | entity.polyline = { |
| | | positions: entity.polygon.hierarchy._value.positions, |
| | | width: 4, |
| | | material: global.DC.Namespace.Cesium.Color.fromCssColorString('#19298d'), |
| | | clampToGround: true |
| | | } |
| | | } |
| | | |
| | | DataSourcesArray.push(dataSource) |
| | | dataSource.show = true |
| | | global.viewer.dataSources.add(dataSource) |
| | | }) |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | }) |
| | | // 获取选中数据--暂时为测试数据 |
| | | getRowData (row) { |
| | | let data = [ |
| | | { |
| | | label: '与户主关系', |
| | | prop: 'relation', |
| | | value: row.relation, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '名字', |
| | | prop: 'realName', |
| | | value: row.realName, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '身份证号', |
| | | prop: 'cardNo', |
| | | value: row.cardNo, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '人口类型', |
| | | prop: 'personType', |
| | | value: row.personType == 1 ? '户籍人口' : '实有人口', |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '地址', |
| | | prop: 'address', |
| | | value: row.address, |
| | | type: 'popup' |
| | | }, |
| | | { |
| | | label: '新地址', |
| | | prop: 'reAddress', |
| | | // value: row.reAddress.replace('江西省上饶', ''), |
| | | value: row.reAddress, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '审查状态', |
| | | prop: 'status', |
| | | value: row.status, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '审查时间', |
| | | prop: 'sctime', |
| | | value: row.sctime, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '社区局村委会', |
| | | prop: 'neightborhoood', |
| | | value: row.neightborhoood, |
| | | type: 'detail' |
| | | }, |
| | | { |
| | | label: '重点人员细类', |
| | | prop: 'zdryxl', |
| | | value: row.zdryxl, |
| | | type: 'detail' |
| | | } |
| | | ] |
| | | return data |
| | | }, |
| | | |
| | | let data = this.getRowData(row) |
| | | // 点击详情 |
| | | goDetail (row) { |
| | | let data = this.getRowData(row) |
| | | this.$refs.detailsPopup.initOpen(data) |
| | | }, |
| | | |
| | | this.$store.commit('SET_DIALOGDETAILPOPUP', true) |
| | | // 点击定位 |
| | | rowClick (row) { |
| | | this.$EventBus.$emit('toPosition', { |
| | | siteJd: row.x, |
| | | siteWd: row.y, |
| | | siteGd: 200 |
| | | }) |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'searchAILayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$EventBus.$emit('layerPointAdd', { |
| | | layerName: 'searchAILayer', |
| | | type: "billboard", |
| | | params: { |
| | | ...row, |
| | | lng: row.x, |
| | | lat: row.y, |
| | | alt: 1, |
| | | url: `/img/icon/location.png` |
| | | }, |
| | | }) |
| | | |
| | | this.$store.commit('SET_DIALOGDETAILPOPUPDATA', data) |
| | | // 商业模拟数据 |
| | | var dialogDetailPopup = new global.DC.DivForms(global.viewer, { |
| | | domId: 'dialogDetailPopup', |
| | | position: [ |
| | | global.DC.Transform.transformWGS84ToCartesian( |
| | | new global.DC.Position( |
| | | Number(row.x), |
| | | Number(row.y), |
| | | 0 |
| | | ) |
| | | ) |
| | | ] |
| | | }) |
| | | }, |
| | | let data = this.getRowData(row) |
| | | |
| | | // 清空按钮-图标图层清除 |
| | | clearRow (row) { |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'searchAILayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$store.commit('SET_DIALOGDETAILPOPUP', false) |
| | | }, |
| | | this.$store.commit('SET_DIALOGDETAILPOPUP', true) |
| | | |
| | | // 获取列表 |
| | | getList () { |
| | | this.loading() |
| | | let params = { |
| | | searchKey: this.searchKey, |
| | | size: this.pages.pageSize, |
| | | current: this.pages.currentPage, |
| | | deptId: JSON.parse(sessionStorage.getItem("userInfo")).dept_id |
| | | } |
| | | getVillagePersonInfoBySearch(params).then(res => { |
| | | if (res.data.data.records.length > 0) { |
| | | res.data.data.records.forEach(item => { |
| | | if (item.status == 0) { |
| | | item.status = '未审查' |
| | | } else if (item.status == 1) { |
| | | item.status = '审查正常' |
| | | } else if (item.status == 2) { |
| | | item.status = '审查异常' |
| | | this.$store.commit('SET_DIALOGDETAILPOPUPDATA', data) |
| | | // 商业模拟数据 |
| | | var dialogDetailPopup = new global.DC.DivForms(global.viewer, { |
| | | domId: 'dialogDetailPopup', |
| | | position: [ |
| | | global.DC.Transform.transformWGS84ToCartesian( |
| | | new global.DC.Position( |
| | | Number(row.x), |
| | | Number(row.y), |
| | | 0 |
| | | ) |
| | | ) |
| | | ] |
| | | }) |
| | | }, |
| | | |
| | | // 清空按钮-图标图层清除 |
| | | clearRow (row) { |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'searchAILayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$store.commit('SET_DIALOGDETAILPOPUP', false) |
| | | }, |
| | | |
| | | // 获取列表 |
| | | getList () { |
| | | this.loading() |
| | | let params = { |
| | | searchKey: this.searchKey, |
| | | size: this.pages.pageSize, |
| | | current: this.pages.currentPage, |
| | | deptId: JSON.parse(sessionStorage.getItem("userInfo")).dept_id |
| | | } |
| | | }) |
| | | getVillagePersonInfoBySearch(params).then(res => { |
| | | if (res.data.data.records.length > 0) { |
| | | res.data.data.records.forEach(item => { |
| | | if (item.status == 0) { |
| | | item.status = '未审查' |
| | | } else if (item.status == 1) { |
| | | item.status = '审查正常' |
| | | } else if (item.status == 2) { |
| | | item.status = '审查异常' |
| | | } |
| | | }) |
| | | } |
| | | this.tableData = res.data.data.records |
| | | this.pages.total = res.data.data.total |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }).catch(error => { |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }) |
| | | }, |
| | | |
| | | searchBtn (e = '') { |
| | | this.pages.currentPage = 1 |
| | | |
| | | if (e == '') { |
| | | this.tableData = [] |
| | | return |
| | | } |
| | | |
| | | this.getList() |
| | | }, |
| | | |
| | | // 分页处理 |
| | | handleCurrentChange (currentPage) { |
| | | this.pages.currentPage = currentPage |
| | | this.getList() |
| | | }, |
| | | |
| | | |
| | | loading () { |
| | | loading = this.$loading({ |
| | | lock: true, |
| | | text: '拼命加载中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.5)' |
| | | }) |
| | | }, |
| | | |
| | | setTableHeight () { |
| | | this.currentTableHeight = this.$refs.containerContent.offsetHeight - this.$refs.timeSelect.offsetHeight |
| | | }, |
| | | |
| | | // 大小重置 |
| | | boxResize (val) { |
| | | this.boxShow = val |
| | | }, |
| | | }, |
| | | |
| | | destroyed () { |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | |
| | | DataSourcesArray = [] |
| | | |
| | | if (cylinderLayer != null) { |
| | | cylinderLayer.remove() |
| | | cylinderLayer = null |
| | | } |
| | | this.tableData = res.data.data.records |
| | | this.pages.total = res.data.data.total |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }).catch(error => { |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }) |
| | | }, |
| | | |
| | | searchBtn (e = '') { |
| | | this.pages.currentPage = 1 |
| | | loading && loading.close() |
| | | |
| | | if (e == '') { |
| | | this.tableData = [] |
| | | return |
| | | } |
| | | window.removeEventListener('resize', this.setTableHeight) |
| | | |
| | | this.getList() |
| | | }, |
| | | this.$parent.$parent.resize('0px') |
| | | |
| | | // 分页处理 |
| | | handleCurrentChange (currentPage) { |
| | | this.pages.currentPage = currentPage |
| | | this.getList() |
| | | }, |
| | | |
| | | |
| | | loading () { |
| | | loading = this.$loading({ |
| | | lock: true, |
| | | text: '拼命加载中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.5)' |
| | | }) |
| | | }, |
| | | |
| | | setTableHeight () { |
| | | this.currentTableHeight = this.$refs.containerContent.offsetHeight - this.$refs.timeSelect.offsetHeight |
| | | }, |
| | | |
| | | // 大小重置 |
| | | boxResize (val) { |
| | | this.boxShow = val |
| | | }, |
| | | }, |
| | | |
| | | destroyed () { |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | |
| | | DataSourcesArray = [] |
| | | |
| | | if (cylinderLayer != null) { |
| | | cylinderLayer.remove() |
| | | cylinderLayer = null |
| | | this.clearRow() |
| | | } |
| | | |
| | | loading && loading.close() |
| | | |
| | | window.removeEventListener('resize', this.setTableHeight) |
| | | |
| | | this.$parent.$parent.resize('0px') |
| | | |
| | | this.clearRow() |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .container { |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | &-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | color: #fff; |
| | | background: $bg-color; |
| | | } |
| | | |
| | | &-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 100%; |
| | | height: 100%; |
| | | color: #fff; |
| | | background: $bg-color; |
| | | } |
| | | } |
| | | |
| | | .list { |
| | | height: calc(100% - 48px); |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .pages { |
| | | height: 40px; |
| | | height: calc(100% - 48px); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | flex-direction: column; |
| | | |
| | | .state-box { |
| | | width: 20px; |
| | | height: 20px; |
| | | line-height: 20px; |
| | | text-align: center; |
| | | margin: 0 auto; |
| | | border-radius: 50%; |
| | | background-color: #adadad; |
| | | } |
| | | .pages { |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .online { |
| | | background-color: #4ccc7d; |
| | | } |
| | | .state-box { |
| | | width: 20px; |
| | | height: 20px; |
| | | line-height: 20px; |
| | | text-align: center; |
| | | margin: 0 auto; |
| | | border-radius: 50%; |
| | | background-color: #adadad; |
| | | } |
| | | |
| | | .online { |
| | | background-color: #4ccc7d; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2022-08-18 16:18:17 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2024-02-08 17:51:12 |
| | | * @LastEditTime: 2025-12-01 19:17:51 |
| | | * @FilePath: \srs-police-affairs\src\views\site\index.vue |
| | | * @Description: 辖区管理 |
| | | * |
| | |
| | | --> |
| | | |
| | | <template> |
| | | <div class="site-page-home police-page container"> |
| | | <div v-show="boxShow" class="container-content" ref="containerContent"> |
| | | <div class="site-page-home police-page container"> |
| | | <div v-show="boxShow" class="container-content" ref="containerContent"> |
| | | |
| | | <div class="time-select" ref="timeSelect"> |
| | | <div class="search-item-box"> |
| | | <span>场所类型:</span> |
| | | <div class="time-select" ref="timeSelect"> |
| | | <div class="search-item-box"> |
| | | <span>场所类型:</span> |
| | | |
| | | <el-select clearable style="flex: 1;" size="small" v-model="typeValue" @change="typeChange" |
| | | placeholder="请选择场所类型"> |
| | | <el-option v-for="item in typeOptions" :key="item.key" :label="item.title" :value="item.key"></el-option> |
| | | </el-select> |
| | | <el-select clearable style="flex: 1;" size="small" v-model="typeValue" @change="typeChange" |
| | | placeholder="请选择场所类型"> |
| | | <el-option v-for="item in typeOptions" :key="item.key" :label="item.title" |
| | | :value="item.key"></el-option> |
| | | </el-select> |
| | | </div> |
| | | |
| | | <div class="search-item-box"> |
| | | <span>场所名称:</span> |
| | | |
| | | <el-input style="flex: 1;" size="small" placeholder="请输入场所名称" v-model="placeName" |
| | | @change="searchChange" clearable></el-input> |
| | | </div> |
| | | |
| | | <div class="search-item-box" style="justify-content: center;"> |
| | | <el-button @click="searchBtn" icon="el-icon-search" class="bjnr-btn">搜索</el-button> |
| | | <el-button @click="clearRow" icon="el-icon-delete" class="bjnr-btn">清除</el-button> |
| | | </div> |
| | | <div class="search-item-box" style="overflow-wrap: break-word;"> |
| | | <el-button @click="filterBtn(1)" class="bjnr-btn" |
| | | :class="{ isOneClick: criminalRecordFlag == 1 }">有隐患场所({{ |
| | | yhcsNum ? yhcsNum : |
| | | '0' |
| | | }})隐患总数({{ yhNum ? yhNum : |
| | | '0' }})</el-button> |
| | | </div> |
| | | <div class="search-item-box" style="overflow-wrap: break-word;"> |
| | | <el-button @click="filterBtn(2)" class="bjnr-btn" |
| | | :class="{ isOneClick: criminalRecordFlag == 1 }">已整改场所({{ |
| | | yzgcsNum ? yzgcsNum : |
| | | '0' |
| | | }})已整改隐患({{ yzgyhNum ? yzgyhNum : |
| | | '0' }})</el-button> |
| | | </div> |
| | | <div class="search-item-box" style="overflow-wrap: break-word;"> |
| | | <el-button @click="filterBtn(3)" class="bjnr-btn" |
| | | :class="{ isOneClick: criminalRecordFlag == 1 }">未整改场所({{ |
| | | wzgcsNum ? wzgcsNum : |
| | | '0' |
| | | }})未整改隐患({{ wzgyhNum ? wzgyhNum : |
| | | '0' }})</el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="list police-info" ref="tableBox"> |
| | | <el-table :data="tableData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }" |
| | | :row-class-name="tableRowClassName" class="police-infor-table"> |
| | | <el-table-column prop="placeName" :show-overflow-tooltip="true" label="场所名称"></el-table-column> |
| | | <el-table-column prop="location" :show-overflow-tooltip="true" label="场所地址"></el-table-column> |
| | | <el-table-column prop="nineName" :show-overflow-tooltip="true" label="场所类型"></el-table-column> |
| | | <el-table-column width="80" label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)" |
| | | @click="rowClick(scope.row)"> |
| | | <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i> |
| | | </el-button> |
| | | <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)"> |
| | | <i class="el-icon-document" style="color:#66b1ff"></i> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div class="pages all-pagination-sty" ref="tablePagination"> |
| | | <el-pagination background layout="prev, pager, next" :page-size="pages.size" :total="pages.total" |
| | | :pager-count="4" :current-page="pages.current" |
| | | @current-change="handleCurrentChange"></el-pagination> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <div class="search-item-box"> |
| | | <span>场所名称:</span> |
| | | |
| | | <el-input style="flex: 1;" size="small" placeholder="请输入场所名称" v-model="placeName" @change="searchChange" |
| | | clearable></el-input> |
| | | </div> |
| | | |
| | | <div class="search-item-box" style="justify-content: center;"> |
| | | <el-button @click="searchBtn" icon="el-icon-search" class="bjnr-btn">搜索</el-button> |
| | | <el-button @click="clearRow" icon="el-icon-delete" class="bjnr-btn">清除</el-button> |
| | | </div> |
| | | <div class="search-item-box" style="overflow-wrap: break-word;"> |
| | | <el-button @click="filterBtn(1)" class="bjnr-btn" :class="{ isOneClick: criminalRecordFlag == 1 }">有隐患场所({{ |
| | | yhcsNum ? yhcsNum : |
| | | '0' |
| | | }})隐患总数({{ yhNum ? yhNum : |
| | | '0' }})</el-button> |
| | | </div> |
| | | <div class="search-item-box" style="overflow-wrap: break-word;"> |
| | | <el-button @click="filterBtn(2)" class="bjnr-btn" :class="{ isOneClick: criminalRecordFlag == 1 }">已整改场所({{ |
| | | yzgcsNum ? yzgcsNum : |
| | | '0' |
| | | }})已整改隐患({{ yzgyhNum ? yzgyhNum : |
| | | '0' }})</el-button> |
| | | </div> |
| | | <div class="search-item-box" style="overflow-wrap: break-word;"> |
| | | <el-button @click="filterBtn(3)" class="bjnr-btn" :class="{ isOneClick: criminalRecordFlag == 1 }">未整改场所({{ |
| | | wzgcsNum ? wzgcsNum : |
| | | '0' |
| | | }})未整改隐患({{ wzgyhNum ? wzgyhNum : |
| | | '0' }})</el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="list police-info" ref="tableBox"> |
| | | <el-table :data="tableData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }" |
| | | :row-class-name="tableRowClassName" class="police-infor-table"> |
| | | <el-table-column prop="placeName" :show-overflow-tooltip="true" label="场所名称"></el-table-column> |
| | | <el-table-column prop="location" :show-overflow-tooltip="true" label="场所地址"></el-table-column> |
| | | <el-table-column prop="nineName" :show-overflow-tooltip="true" label="场所类型"></el-table-column> |
| | | <el-table-column width="80" label="操作" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)" |
| | | @click="rowClick(scope.row)"> |
| | | <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i> |
| | | </el-button> |
| | | <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)"> |
| | | <i class="el-icon-document" style="color:#66b1ff"></i> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div class="pages all-pagination-sty" ref="tablePagination"> |
| | | <el-pagination background layout="prev, pager, next" :page-size="pages.size" :total="pages.total" |
| | | :pager-count="4" :current-page="pages.current" @current-change="handleCurrentChange"></el-pagination> |
| | | </div> |
| | | </div> |
| | | |
| | | <SiteDialogPopup ref="SiteDialogPopup"></SiteDialogPopup> |
| | | </div> |
| | | |
| | | <SiteDialogPopup ref="SiteDialogPopup"></SiteDialogPopup> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | let JQSmychart = null |
| | | |
| | | let positionColor = [ |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 192, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 242, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(0, 185, 209, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(250, 84, 28, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(221, 255, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(51, 255, 0, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 255, 181, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 181, 252, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 129, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 236, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 184, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 113, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(81, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(126, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(168, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(171, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 249, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(210, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 174, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 226, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 176, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 155, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 155, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 192, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 242, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(0, 185, 209, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(250, 84, 28, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(221, 255, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(51, 255, 0, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 255, 181, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 181, 252, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 129, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 236, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 184, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(97, 113, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(81, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(126, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(168, 252, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(171, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 249, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(210, 97, 255, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 174, 58, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 226, 97, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 176, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 155, 20), |
| | | global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 155, 20), |
| | | ] |
| | | import { initMapPosition } from '@/utils/mapPositionInit' |
| | | import { getNineTypeTree, getNinePage, getNineStatisticsNum } from "@/api/site/index.js" |
| | |
| | | let loading = null |
| | | |
| | | export default { |
| | | inject: ['userInfo'], |
| | | inject: ['userInfo'], |
| | | |
| | | data () { |
| | | return { |
| | | boxShow: false, |
| | | isDanger: null, |
| | | placeName: '', |
| | | typeValue: '', |
| | | typeOptions: [], |
| | | data () { |
| | | return { |
| | | boxShow: false, |
| | | isDanger: null, |
| | | placeName: '', |
| | | typeValue: '', |
| | | typeOptions: [], |
| | | |
| | | tableData: [], |
| | | yhcsNum: 0, |
| | | yhNum: 0, |
| | | yzgcsNum: 0, |
| | | yzgyhNum: 0, |
| | | wzgcsNum: 0, |
| | | wzgyhNum: 0, |
| | | pages: { |
| | | current: 1, |
| | | size: 22, |
| | | total: 0, |
| | | count: 0, |
| | | }, |
| | | policeStationOptions: [] |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | // 获取九小场所隐患数量统计 |
| | | this.getNineStatisticsNum() |
| | | this.getNineTypeTree() |
| | | this.getNinePage() |
| | | const that = this |
| | | |
| | | that.$nextTick(() => { |
| | | initMapPosition() |
| | | }) |
| | | this.getPoliceStationTree(1) |
| | | }, |
| | | |
| | | mounted () { |
| | | this.$parent.$parent.resize('400px', true) |
| | | |
| | | this.$nextTick(() => { |
| | | this.$EventBus.$emit('closeMxTileset') |
| | | }) |
| | | }, |
| | | |
| | | computed: { |
| | | positionColor () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return "#1AFA29" |
| | | } else { |
| | | return "#ccc" |
| | | tableData: [], |
| | | yhcsNum: 0, |
| | | yhNum: 0, |
| | | yzgcsNum: 0, |
| | | yzgyhNum: 0, |
| | | wzgcsNum: 0, |
| | | wzgyhNum: 0, |
| | | pages: { |
| | | current: 1, |
| | | size: 22, |
| | | total: 0, |
| | | count: 0, |
| | | }, |
| | | policeStationOptions: [] |
| | | } |
| | | } |
| | | }, |
| | | |
| | | positionDisabled () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | created () { |
| | | // 获取九小场所隐患数量统计 |
| | | this.getNineStatisticsNum() |
| | | this.getNineTypeTree() |
| | | this.getNinePage() |
| | | const that = this |
| | | |
| | | methods: { |
| | | // 加载首页下拉列表数据 |
| | | getPoliceStationTree (type, id = '') { |
| | | var that = this |
| | | getPoliceStationTree(type, id).then(res => { |
| | | if (type == 1) { |
| | | |
| | | this.policeStationOptions = res.data.data |
| | | |
| | | this.policeStationOptions.unshift({ |
| | | name: '全部', |
| | | id: 1 |
| | | }) |
| | | |
| | | this.initPoliceStationLayer() |
| | | } |
| | | }) |
| | | that.$nextTick(() => { |
| | | initMapPosition() |
| | | }) |
| | | this.getPoliceStationTree(1) |
| | | }, |
| | | |
| | | // 加载面数据的方法 |
| | | initPoliceStationLayer () { |
| | | const that = this |
| | | cylinderLayer = new global.DC.PrimitiveLayer('cylinderLayer') |
| | | global.viewer.addLayer(cylinderLayer) |
| | | mounted () { |
| | | this.$parent.$parent.resize('400px', true) |
| | | |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | this.$nextTick(() => { |
| | | this.$EventBus.$emit('closeMxTileset') |
| | | }) |
| | | }, |
| | | |
| | | this.policeStationOptions.forEach((item, index) => { |
| | | if (item.position && item.position.length > 0) { |
| | | item.position.forEach((sourceItem, sourceIndex) => { |
| | | |
| | | const Json = { ...JSON.parse(sourceItem) } |
| | | |
| | | global.DC.Namespace.Cesium.GeoJsonDataSource.load(Json, { |
| | | stroke: positionColor[index], |
| | | fill: positionColor[index], //注意:颜色必须大写,即不能为blue |
| | | strokeWidth: 0, |
| | | clampToGround: false |
| | | }).then(function (dataSource) { |
| | | let entities = dataSource.entities.values |
| | | //修改entity样式 |
| | | for (let i = 0; i < entities.length; i++) { |
| | | let entity = entities[i] |
| | | entity.polyline = { |
| | | positions: entity.polygon.hierarchy._value.positions, |
| | | width: 2, |
| | | material: global.DC.Namespace.Cesium.Color.fromCssColorString('#ED7C2F'), |
| | | clampToGround: true |
| | | computed: { |
| | | positionColor () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return "#1AFA29" |
| | | } else { |
| | | return "#ccc" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | DataSourcesArray.push(dataSource) |
| | | dataSource.show = true |
| | | global.viewer.dataSources.add(dataSource) |
| | | positionDisabled () { |
| | | return (row) => { |
| | | if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | |
| | | methods: { |
| | | // 加载首页下拉列表数据 |
| | | getPoliceStationTree (type, id = '') { |
| | | var that = this |
| | | getPoliceStationTree(type, id).then(res => { |
| | | if (type == 1) { |
| | | |
| | | this.policeStationOptions = res.data.data |
| | | |
| | | this.policeStationOptions.unshift({ |
| | | name: '全部', |
| | | id: 1 |
| | | }) |
| | | |
| | | this.initPoliceStationLayer() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 加载面数据的方法 |
| | | initPoliceStationLayer () { |
| | | const that = this |
| | | cylinderLayer = new global.DC.PrimitiveLayer('cylinderLayer') |
| | | global.viewer.addLayer(cylinderLayer) |
| | | |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // 是否有隐患 |
| | | filterBtn (isDanger) { |
| | | this.isDanger = isDanger |
| | | this.getNinePage() |
| | | }, |
| | | // 获取九小场所隐患数量统计 |
| | | getNineStatisticsNum () { |
| | | var that = this |
| | | getNineStatisticsNum({ |
| | | nineType: this.typeValue, |
| | | placeName: this.placeName |
| | | }).then(res => { |
| | | const data = res.data.data |
| | | that.yhcsNum = data[0].total |
| | | that.yhNum = data[0].patrolNum |
| | | that.yzgcsNum = data[1].total |
| | | that.yzgyhNum = data[1].patrolNum |
| | | that.wzgcsNum = data[2].total |
| | | that.wzgyhNum = data[2].patrolNum |
| | | }) |
| | | }, |
| | | getNineTypeTree () { |
| | | getNineTypeTree().then(res => { |
| | | this.typeOptions = res.data.data |
| | | }) |
| | | }, |
| | | this.policeStationOptions.forEach((item, index) => { |
| | | if (item.position && item.position.length > 0) { |
| | | item.position.forEach((sourceItem, sourceIndex) => { |
| | | |
| | | // 切换登记类型 |
| | | typeChange () { |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | const Json = { ...JSON.parse(sourceItem) } |
| | | |
| | | searchChange () { |
| | | if (this.placeName.trim() == '') { |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | } |
| | | }, |
| | | global.DC.Namespace.Cesium.GeoJsonDataSource.load(Json, { |
| | | stroke: positionColor[index], |
| | | fill: positionColor[index], //注意:颜色必须大写,即不能为blue |
| | | strokeWidth: 0, |
| | | clampToGround: false |
| | | }).then(function (dataSource) { |
| | | let entities = dataSource.entities.values |
| | | //修改entity样式 |
| | | for (let i = 0; i < entities.length; i++) { |
| | | let entity = entities[i] |
| | | entity.polyline = { |
| | | positions: entity.polygon.hierarchy._value.positions, |
| | | width: 4, |
| | | material: global.DC.Namespace.Cesium.Color.fromCssColorString('#19298d'), |
| | | clampToGround: true |
| | | } |
| | | } |
| | | |
| | | searchBtn () { |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | DataSourcesArray.push(dataSource) |
| | | dataSource.show = true |
| | | global.viewer.dataSources.add(dataSource) |
| | | }) |
| | | |
| | | // 分页处理 |
| | | handleCurrentChange (current) { |
| | | this.pages.current = current |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | |
| | | // 加载动画 |
| | | loading () { |
| | | loading = this.$loading({ |
| | | lock: true, |
| | | text: '拼命加载中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.5)' |
| | | }) |
| | | }, |
| | | |
| | | getNinePage () { |
| | | this.loading() |
| | | |
| | | getNinePage({ |
| | | current: this.pages.current, |
| | | size: this.pages.size, |
| | | nineType: this.typeValue, |
| | | placeName: this.placeName, |
| | | isDanger: this.isDanger |
| | | }).then(res => { |
| | | const data = res.data.data |
| | | |
| | | this.tableData = data.records |
| | | this.pages.total = data.total |
| | | |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }).catch(error => { |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }) |
| | | }, |
| | | |
| | | // 点击定位 |
| | | rowClick (row) { |
| | | let lng = global.DC.CoordTransform.GCJ02ToWGS84(row.lng, row.lat)[0] |
| | | let lat = global.DC.CoordTransform.GCJ02ToWGS84(row.lng, row.lat)[1] |
| | | |
| | | this.$EventBus.$emit('toPosition', { |
| | | siteJd: lng, |
| | | siteWd: lat, |
| | | siteGd: 2000 |
| | | }) |
| | | |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'scanLayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$EventBus.$emit('layerPointAdd', { |
| | | layerName: 'scanLayer', |
| | | type: "billboard", |
| | | params: { |
| | | ...row, |
| | | lng: lng, |
| | | lat: lat, |
| | | alt: 1, |
| | | size: [25.8, 32.4], |
| | | url: `/img/icon/site.png`, |
| | | setStyle: { |
| | | disableDepthTestDistance: Number.POSITIVE_INFINITY |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | incident: this.siteClick |
| | | }) |
| | | // 是否有隐患 |
| | | filterBtn (isDanger) { |
| | | this.isDanger = isDanger |
| | | this.getNinePage() |
| | | }, |
| | | // 获取九小场所隐患数量统计 |
| | | getNineStatisticsNum () { |
| | | var that = this |
| | | getNineStatisticsNum({ |
| | | nineType: this.typeValue, |
| | | placeName: this.placeName |
| | | }).then(res => { |
| | | const data = res.data.data |
| | | that.yhcsNum = data[0].total |
| | | that.yhNum = data[0].patrolNum |
| | | that.yzgcsNum = data[1].total |
| | | that.yzgyhNum = data[1].patrolNum |
| | | that.wzgcsNum = data[2].total |
| | | that.wzgyhNum = data[2].patrolNum |
| | | }) |
| | | }, |
| | | getNineTypeTree () { |
| | | getNineTypeTree().then(res => { |
| | | this.typeOptions = res.data.data |
| | | }) |
| | | }, |
| | | |
| | | // 切换登记类型 |
| | | typeChange () { |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | |
| | | searchChange () { |
| | | if (this.placeName.trim() == '') { |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | } |
| | | }, |
| | | |
| | | searchBtn () { |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | |
| | | // 分页处理 |
| | | handleCurrentChange (current) { |
| | | this.pages.current = current |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | |
| | | // 加载动画 |
| | | loading () { |
| | | loading = this.$loading({ |
| | | lock: true, |
| | | text: '拼命加载中', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.5)' |
| | | }) |
| | | }, |
| | | |
| | | getNinePage () { |
| | | this.loading() |
| | | |
| | | getNinePage({ |
| | | current: this.pages.current, |
| | | size: this.pages.size, |
| | | nineType: this.typeValue, |
| | | placeName: this.placeName, |
| | | isDanger: this.isDanger |
| | | }).then(res => { |
| | | const data = res.data.data |
| | | |
| | | this.tableData = data.records |
| | | this.pages.total = data.total |
| | | |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }).catch(error => { |
| | | setTimeout(() => { |
| | | loading && loading.close() |
| | | }, 300) |
| | | }) |
| | | }, |
| | | |
| | | // 点击定位 |
| | | rowClick (row) { |
| | | let lng = global.DC.CoordTransform.GCJ02ToWGS84(row.lng, row.lat)[0] |
| | | let lat = global.DC.CoordTransform.GCJ02ToWGS84(row.lng, row.lat)[1] |
| | | |
| | | this.$EventBus.$emit('toPosition', { |
| | | siteJd: lng, |
| | | siteWd: lat, |
| | | siteGd: 2000 |
| | | }) |
| | | |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'scanLayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$EventBus.$emit('layerPointAdd', { |
| | | layerName: 'scanLayer', |
| | | type: "billboard", |
| | | params: { |
| | | ...row, |
| | | lng: lng, |
| | | lat: lat, |
| | | alt: 1, |
| | | size: [25.8, 32.4], |
| | | url: `/img/icon/site.png`, |
| | | setStyle: { |
| | | disableDepthTestDistance: Number.POSITIVE_INFINITY |
| | | } |
| | | }, |
| | | incident: this.siteClick |
| | | }) |
| | | }, |
| | | |
| | | // 查看详情 |
| | | goDetail (row) { |
| | | this.$refs.SiteDialogPopup.initOpen(row) |
| | | }, |
| | | |
| | | siteClick (e) { |
| | | this.$refs.SiteDialogPopup.initOpen(e.overlay.attrParams) |
| | | }, |
| | | |
| | | // 清空按钮-清除图标图层 |
| | | clearRow () { |
| | | this.isDanger = null |
| | | this.placeName = null |
| | | this.typeValue = null |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'scanLayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$store.commit('SET_DIALOGDETAILPOPUP', false) |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | |
| | | // 大小重置 |
| | | boxResize (val) { |
| | | this.boxShow = val |
| | | }, |
| | | }, |
| | | |
| | | // 查看详情 |
| | | goDetail (row) { |
| | | this.$refs.SiteDialogPopup.initOpen(row) |
| | | }, |
| | | destroyed () { |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | |
| | | siteClick (e) { |
| | | this.$refs.SiteDialogPopup.initOpen(e.overlay.attrParams) |
| | | }, |
| | | DataSourcesArray = [] |
| | | |
| | | // 清空按钮-清除图标图层 |
| | | clearRow () { |
| | | this.isDanger = null |
| | | this.placeName = null |
| | | this.typeValue = null |
| | | this.$EventBus.$emit('mapClearLayer', { |
| | | layerName: 'scanLayer', |
| | | type: 'VectorLayer' |
| | | }) |
| | | this.$store.commit('SET_DIALOGDETAILPOPUP', false) |
| | | this.pages.current = 1 |
| | | this.getNinePage() |
| | | this.getNineStatisticsNum() |
| | | }, |
| | | if (cylinderLayer != null) { |
| | | cylinderLayer.remove() |
| | | cylinderLayer = null |
| | | } |
| | | |
| | | // 大小重置 |
| | | boxResize (val) { |
| | | this.boxShow = val |
| | | }, |
| | | }, |
| | | loading && loading.close() |
| | | |
| | | destroyed () { |
| | | DataSourcesArray.forEach(item => { |
| | | global.viewer.dataSources.remove(item, true) |
| | | }) |
| | | this.$parent.$parent.resize('0px') |
| | | |
| | | DataSourcesArray = [] |
| | | |
| | | if (cylinderLayer != null) { |
| | | cylinderLayer.remove() |
| | | cylinderLayer = null |
| | | this.clearRow() |
| | | } |
| | | |
| | | loading && loading.close() |
| | | |
| | | this.$parent.$parent.resize('0px') |
| | | |
| | | this.clearRow() |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .container { |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | &-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | position: relative; |
| | | width: 100%; |
| | | height: 100%; |
| | | color: #fff; |
| | | background: $bg-color; |
| | | } |
| | | |
| | | &-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 100%; |
| | | height: 100%; |
| | | color: #fff; |
| | | background: $bg-color; |
| | | } |
| | | } |
| | | |
| | | .list { |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .pages { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | flex-direction: column; |
| | | |
| | | .pages { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | </style> |