From 47f59dd6d2e98ef7c8eddf432a23f1bcfa4fefce Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 18 Dec 2024 18:20:57 +0800
Subject: [PATCH] 首页左侧文字调整
---
src/views/home/components/leftContainer.vue | 3789 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 1,893 insertions(+), 1,896 deletions(-)
diff --git a/src/views/home/components/leftContainer.vue b/src/views/home/components/leftContainer.vue
index 7a8cbd1..fc3e239 100644
--- a/src/views/home/components/leftContainer.vue
+++ b/src/views/home/components/leftContainer.vue
@@ -1,148 +1,144 @@
<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>
- <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 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>
- <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
+ <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
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)">
- <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">{{ dangerNum }}</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)">
- <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>
-
- <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>
+ <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)">
+ <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">{{ dangerNum }}</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)">
+ <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>
+
+ <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>
</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'
@@ -176,1829 +172,1830 @@
const peopleColor2 = '#f26390'
export default {
- inject: ['userInfo'],
+ inject: ['userInfo'],
- data () {
- return {
- placeNum: 0,
- dangerNum: 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,
- }
+ data () {
+ return {
+ placeNum: 0,
+ dangerNum: 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)
+ })
},
- mounted () {
- // 获取所有数据并加载
- this.getHomeAllData()
+ // 设备饼图轮播
+ keyPeopleEchartsCarousel () {
+ let curIndex = 0
+ if (timer) {
+ clearInterval(timer)
+ }
- if (this.userInfo.dept_id != '1123598813738675201') {
- // console.log(this.userInfo.dept_id,'茅家岭派出所',1596020515064381442);
- this.showBack = false
- this.isAllPoliceStation = false
+ 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)
+ }
+ 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
+
+ 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)
}
- this.$nextTick(() => {
- window.addEventListener("resize", this.echartsResize)
+ } 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
+ },
+
+ /**
+ * @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
+ })
+ yDate2.push({
+ value: e.synum,
+ name: e.name,
+ id: e.id
+ })
+ })
+ }
+ 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)
+ }
+ }
+ }
+ } 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] }
+ // ]
+ // )
+ // }
+ }
+ },
+ },
+ {
+ 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)
})
- // this.getVillageDetailAndPlaceStatisticNumber({ deptId: this.userInfo.dept_id })
+ // 茅家岭单独判断
+ 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)
+ })
},
- 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)
- }
- 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
-
- this.isFirstMounted = true
- if (id != '') {
- this.showBack = false
- this.isAllPoliceStation = false
-
- this.tabTypeThree = 0
+ // 关注场所详情
+ 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 => {
+ 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 {
- 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.value
}
- leftTiming = setInterval(async () => {
- this.houseTabClick(this.tabTypeTwo)
-
- this.landTabClick(this.tabTypeThree)
- }, 600000)
+ 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)
+ }
},
-
- /**
- * @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
+ 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
+ }
}
- 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)
- }
-
- } 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
+ }
+ },
+ },
+ ],
+ 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',
+ }
- /**
- * @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
- })
- yDate2.push({
- value: e.synum,
- name: e.name,
- id: e.id
- })
- })
- }
- 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)
- }
- }
- }
- } 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] }
- // ]
- // )
- // }
- }
- },
- },
- {
- 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 => {
- 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 => {
- let xDate = []
- let yDate = []
-
- this.realHouseNum = res.data.data.count
-
- let dangerList = res.data.data.dangerList.reverse()
- let placeList = res.data.data.placeList.reverse()
- if (flag) {
- this.placeNum = placeList.reduce((pre, cur) => {
- return pre + cur.num
- }, 0)
- this.dangerNum = dangerList.reduce((pre, cur) => {
- return pre + cur.num
- }, 0)
-
- // return
- }
-
- if (this.tabTypeTwo == 1) {
- dangerList.forEach(item => {
- xDate.push(item.nineTypeName)
- yDate.push(item.num)
- })
- } 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]
- })
- this.personEchartsLoading = true
- this.getVillagePersonStatisticInfoByPoliceStationId(params.data.id)
- this.clickPoliceStationId = params.data.id
- } else {
- this.$emit('showpeopledetail', params.data.id, params.data.name)
- }
- })
- },
-
- 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: [
- {
- top: 110,
- left: 60,
- type: 'pie',
- radius: [20, 50],
- center: [0, 0],
- avoidLabelOverlap: false,
- label: {
- show: false,
- position: 'center'
- },
- labelLine: {
- show: false
- },
- data: dataArr
- }
- ],
- 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)
-
- this.initLandEcharts(landData)
- }).catch(res => {
- setTimeout(() => {
- this.landEchartsLoading = false
- }, 500)
- })
- },
-
- /**
- * @description: 现有小区图表渲染
- * @param {*} landData
- * @return {*}
- */
- initLandEcharts (landData) {
- this.disposeLandEchart()
- var chartDom = document.getElementById('landEcharts')
-
- landMyChart = this.$echarts.init(chartDom)
-
- landMyChart.setOption(this.initLandOptions(landData[0], landData[1]))
-
- 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')
- }
- },
-
-
+ ]
+ }
+ },
+ // 房屋
+ inithouseEcharts (xDate, yDate) {
+ var chartDom = document.getElementById('houseEcharts')
+ houseMyChart = this.$echarts.init(chartDom)
+ houseMyChart.setOption(this.initHouseOptions(xDate, yDate))
},
- destroyed () {
- window.removeEventListener("resize", this.echartsResize)
- this.$store.commit('SET_HOTELPOPUP', false)//关闭酒店地图详情弹窗
- this.disposeEchart()
+ 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 => {
+ let xDate = []
+ let yDate = []
+
+ this.realHouseNum = res.data.data.count
+
+ let dangerList = res.data.data.dangerList.reverse()
+ let placeList = res.data.data.placeList.reverse()
+ if (flag) {
+ this.placeNum = placeList.reduce((pre, cur) => {
+ return pre + cur.num
+ }, 0)
+ this.dangerNum = dangerList.reduce((pre, cur) => {
+ return pre + cur.num
+ }, 0)
+
+ // return
+ }
+
+ if (this.tabTypeTwo == 1) {
+ dangerList.forEach(item => {
+ xDate.push(item.nineTypeName)
+ yDate.push(item.num)
+ })
+ } 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]
+ })
+ this.personEchartsLoading = true
+ this.getVillagePersonStatisticInfoByPoliceStationId(params.data.id)
+ this.clickPoliceStationId = params.data.id
+ } else {
+ this.$emit('showpeopledetail', params.data.id, params.data.name)
+ }
+ })
+ },
+
+ 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: [
+ {
+ top: 110,
+ left: 60,
+ type: 'pie',
+ radius: [20, 50],
+ center: [0, 0],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ labelLine: {
+ show: false
+ },
+ data: dataArr
+ }
+ ],
+ 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()
- if (leftTiming != null) {
- clearInterval(leftTiming)
- leftTiming = null
+ 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)
+
+ this.initLandEcharts(landData)
+ }).catch(res => {
+ setTimeout(() => {
+ this.landEchartsLoading = false
+ }, 500)
+ })
+ },
+
+ /**
+ * @description: 现有小区图表渲染
+ * @param {*} landData
+ * @return {*}
+ */
+ initLandEcharts (landData) {
+ this.disposeLandEchart()
+ var chartDom = document.getElementById('landEcharts')
+
+ landMyChart = this.$echarts.init(chartDom)
+
+ landMyChart.setOption(this.initLandOptions(landData[0], landData[1]))
+
+ 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;
- position: relative;
- width: 100%;
- height: 100%;
+ flex-direction: column;
+ // background: $bg-color;
- .person-box {
- .word {
- color: #fff;
- font-size: 14px;
- }
+ background-image: url(/img/box/box-bg.png);
+ background-size: 100% 100%;
+ background-repeat: no-repeat;
- .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';
- }
+ .box {
+ display: flex;
+ position: absolute;
+ flex-direction: column;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 11;
}
- .person-box,
- .house-box,
- .land-box {
- margin: 8px;
+ .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;
flex: 1;
+ background: $sub-tab-bg-color;
+ border-radius: 8px;
+ cursor: pointer;
+ height: 22px;
display: flex;
- flex-direction: column;
- // background: $bg-color;
+ align-items: center;
+ justify-content: center;
- 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;
+ &>div {
+ height: 22px;
+ line-height: 22px;
+ white-space: nowrap;
}
+ }
- .title {
- display: flex;
- align-items: center;
- justify-content: space-between;
+ .tab {
+ display: flex;
+ justify-content: 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%;
- }
+ .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;
+ }
}
- .house-box {
- margin-top: 0;
- margin-bottom: 0;
-
- .title {
- height: 54px;
- line-height: 54px;
- }
+ :deep(.el-main) {
+ padding: 0;
}
- :deep(.el-table__body-wrapper) {
- overflow-x: hidden !important;
+ .echarts-box {
+ padding: 12px;
+ padding-top: 0;
+ flex: 1;
+ width: 100%;
+ // height: 100%;
}
+ }
+
+ .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>
--
Gitblit v1.9.3