Browse Source

Merge branch 'dev-fangyi0919' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev-fangyi0919

feature
dai 3 years ago
parent
commit
01ae4117d0
  1. 6
      src/assets/scss/modules/visual/incident-info.scss
  2. 165
      src/views/modules/visual/communityGovern/geliguankong/detail-info.vue
  3. 540
      src/views/modules/visual/communityGovern/geliguankong/geliguankong.vue
  4. 179
      src/views/modules/visual/communityGovern/geliguankong/pieOption.js
  5. 110
      src/views/modules/visual/cpts/tb.vue
  6. 154
      src/views/modules/visual/plugin/power/organization.vue

6
src/assets/scss/modules/visual/incident-info.scss

@ -81,8 +81,14 @@
}
}
}
.wrap-width2{
width: 720px;
}
}
.m-info {
padding-left: 62px;
font-size: 14px;

165
src/views/modules/visual/communityGovern/geliguankong/detail-info.vue

@ -0,0 +1,165 @@
<template>
<div class="m-pop">
<div class="wrap wrap-width2">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>详情</span>
</div>
<div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<div class="m-top">
<div class="m-info">
<div class="info-prop">
<span>姓名</span>
<span>{{ eventInfo.name }}</span>
</div>
<div class="info-prop">
<span>手机号</span>
<span>{{ eventInfo.mobile }}</span>
</div>
<div class="info-prop">
<span>证件号</span>
<span>{{ eventInfo.idCard }}</span>
</div>
<div class="info-prop">
<span>关注原因</span>
<span>{{ eventInfo.reason || "--" }}</span>
</div>
<div class="info-prop">
<span>隔离状态</span>
<span>{{ eventInfo.isolatedState === '0' ? '集中隔离' : eventInfo.isolatedState === '1' ? '居家隔离' : eventInfo.isolatedState === '2' ? '国家健康监测' : '--', }}</span>
</div>
<div class="info-prop">
<span>备注</span>
<span>{{ eventInfo.remark || "--" }}</span>
</div>
</div>
</div>
</cpt-card>
</div>
</div>
</template>
<script>
import cptCard from "@/views/modules/visual/cpts/card";
import screenLoading from "@/views/modules/visual/cpts/loading";
import { requestPost } from "@/js/dai/request";
import foldText from "@/views/components/foldText";
import dateFormat from "dai-js/tools/dateFormat";
function iniData () {
return {
eventProcess: [],
eventInfo: {
gridId: "",
gridName: '',
createdTime: [],
eventContent: "",
imageUrls: [],
voiceUrls: [],
sourceType: '',
address: '',
reportUserId: "",
name: "",
mobile: "",
idCard: "",
},
};
}
export default {
name: "demandInfo",
props: {
detailId: {
type: String,
default: "",
},
},
components: {
cptCard,
screenLoading,
foldText,
},
data: iniData,
computed: {},
watch: {
detailId () {
let data = iniData();
Object.keys(data).forEach((k) => {
this[k] = data[k];
});
this.getApiData();
},
},
mounted () {
console.log(this.detailId);
this.getApiData();
},
methods: {
handleClose () {
this.$emit("close");
},
async getApiData () {
await this.getEventInfo();
},
//
async getEventInfo () {
const url = "/epmetuser/icEpidemicSpecialAttention/detail";
//const url = "http://yapi.elinkservice.cn/mock/245/api/gov/project/icEvent/processAnalysis/eventDetail/" + this.detailId;
const { data, code, msg } = await requestPost(url, {
id: this.detailId,
});
if (code === 0) {
this.eventInfo = data;
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/incident-info.scss"
scoped
></style>

540
src/views/modules/visual/communityGovern/geliguankong/geliguankong.vue

@ -0,0 +1,540 @@
<template>
<cpt-card style="margin-top:40px">
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>隔离管控分析</span>
</div>
<div class="g-cpt-resi">
<div class="g-l">
<div class="l_top">
<div v-if="!pieNoData && !dataLoading"
class="g-pie">
<screen-echarts-frame class="echart-wr"
@myChartMethod="pieInitOk"
ref="pieChart"></screen-echarts-frame>
</div>
<screen-nodata class="nodata"
v-if="pieNoData&& !dataLoading"></screen-nodata>
<div class="table-status"
v-if="dataLoading">
<screen-loading>加载中</screen-loading>
</div>
</div>
<div class="l_bottom">
<div v-if="!gridPieNoData && !dataLoading"
class="g-pie">
<screen-echarts-frame class="echart-grid-pie"
@myChartMethod="gridPieInitOk"
ref="gridPieChart"></screen-echarts-frame>
</div>
<screen-nodata class="nodata"
v-if="gridPieNoData&& !dataLoading"></screen-nodata>
<div class="table-status"
v-if="dataLoading">
<screen-loading>加载中</screen-loading>
</div>
</div>
</div>
<div class="g-r">
<div class="m-tb">
<div class="tb">
<cpt-tb :col-list="demand.colList"
:loading="demand.loading"
:header="demand.header"
:list="demand.list"
@handleClickRow="toPeopleInfo"
@operate="toDetailInfo"></cpt-tb>
</div>
<div class="m-pagination">
<el-pagination hide-on-single-page
:current-page="demand.pageNo"
:page-size="demand.pageSize"
:total="demand.total"
background
layout="prev, pager, next,total"
@current-change="handlePageNoChange_demand">
</el-pagination>
</div>
</div>
</div>
</div>
<detail-info v-if="showProject"
:detailId="detailId"
@close="showProject = false" />
</cpt-card>
</template>
<script>
import { requestPost } from "@/js/dai/request"
import cptCard from "@/views/modules/visual/cpts/card"
import cptTb from "@/views/modules/visual/cpts/tb"
import screenEchartsFrame from "@/views/modules/visual/components/screen-echarts-frame"
import ScreenLoading from "@/views/modules/visual/components/screen-loading"
import ScreenNodata from "@/views/modules/visual/components/screen-nodata"
import detailInfo from "./detail-info.vue"
import { pieOption } from './pieOption.js'
import dateFormat from "dai-js/tools/dateFormat"
import nextTick from 'dai-js/tools/nextTick'
//rgba(255, 120, 0, 1) rgba(198, 0, 255, 1) rgba(120, 0, 255, 1) 绿rgba(0, 229, 237, 1)
const colorArray = ['rgba(255, 186, 0, 1)', 'rgba(198, 0, 255, 1)', 'rgba(120, 0, 255, 1)', '#00E5ED']
export default {
name: "shijianchulifenxi",
data () {
return {
showProject: false,
dataLoading: true,
pieNoData: false,
gridPieNoData: false,
pieChartS: null,
pieChart: '',
pieOption: {},
pieInitState: false,
pieTotal: 0,
pieData: [],
gridPieChartS: null,
gridPieChart: '',
gridPieOption: {},
gridPieInitState: false,
gridPieTotal: 0,
gridPieData: [],
tableList: [],
demand: {
loading: true,
colList: [
{
align: "center",
width: "5%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "25%",
},
{
align: "center",
width: "20%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "20%",
},
{
align: "center",
width: "10%",
},
],
header: ["序号", "姓名", "所属房屋", "关注原因", "隔离状态", "最近一次核酸时间", "查看"],
list: [],
pageSize: 10,
pageNo: 1,
total: 0,
},
categoryCode: '',
detailId: '',
processStatus: '',
}
},
// mixins: [animate]
beforeDestroy () {
},
async created () {
},
async mounted () {
this.dataLoading = true
await this.getApiData()
this.dataLoading = false
},
methods: {
async getApiData () {
await this.getPieData()
},
assignData () {
this.getPie()
this.getGridPie()
},
// 1
async getPieData () {
if (this.$refs.pieChart) {
this.$refs.pieChart.showLoading()
this.$refs.pieChart.clear()
}
if (this.$refs.gridPieChart) {
this.$refs.gridPieChart.showLoading()
this.$refs.gridPieChart.clear()
}
const url = "/epmetuser/icEpidemicSpecialAttention/pie"
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icEpidemicSpecialAttention/pie"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (this.$refs.pieChart) {
this.$refs.pieChart.hideLoading()
}
if (this.$refs.gridPieChart) {
this.$refs.gridPieChart.hideLoading()
}
if (code === 0) {
this.pieData = []
data.isolatedList.forEach((item, index) => {
let obj = {
value: item.total,
name: item.categoryName,
categoryCode: item.categoryCode,
color: item.color,
selected: false
}
this.pieData.push(obj)
})
this.getPie()
this.gridPieData = []
data.historyList.forEach((item, index) => {
let obj = {
value: item.total,
name: item.categoryName,
categoryCode: item.categoryCode,
color: colorArray[3],
selected: false
}
this.gridPieData.push(obj)
})
this.getGridPie()
} else {
this.$message.error(msg)
}
},
//
async getTable () {
const url = "/epmetuser/icEpidemicSpecialAttention/list"
let params = {
isolatedState: this.categoryCode,
attentionType: '2',
pageNo: this.demand.pageNo,
pageSize: this.demand.pageSize,
}
const { data, code, msg } = await requestPost(url, params)
this.demand.loading = false
if (code === 0) {
this.demand.total = data.total
this.tableList = data.list
this.demand.list = data.list.map((item, index) => {
return [
index + 1,
item.name ? item.name : '--',
item.allName ? item.allName : '--',
item.reason ? item.reason : '--',
item.isolatedState === '0' ? '集中隔离' : item.isolatedState === '1' ? '居家隔离' : item.isolatedState === '2' ? '国家健康监测' : '',
item.lastNatTime ? item.lastNatTime : '--',
{ type: "operate", list: ["查看"] },
]
})
} else {
this.$message.error(msg)
}
},
handlePageNoChange_demand (val) {
this.demand.pageNo = val
this.getTable()
},
async toPeopleInfo (index) {
if (this.tableList[index].userId) {
this.$router.push({ path: `/main-shuju/visual-basicinfo-people/${this.tableList[index].userId}` })
} else {
this.$message.info('无居民信息')
}
},
async toDetailInfo (index) {
const { tableList } = this
this.detailId = tableList[index].id
this.showProject = true
},
pieInitOk (dom) {
this.pieChartS = dom
this.pieInitState = true
},
getPie () {
if (this.pieInitState) {
this.assignPieChart()
} else {
setTimeout(() => {
this.getPie()
}, 500)
}
},
//
async assignPieChart () {
this.pieTotal = 0
let maxIndex = 0
let maxValue = this.pieData[0].value
const _that = this
// pieChart
this.pieOption = pieOption(this.pieChartS)
this.pieData.forEach((item, index) => {
this.pieTotal = this.pieTotal + item.value
if (item.value > maxValue) {
maxValue = item.value
maxIndex = index
item.selected = true
} else if (index !== 0) {
item.selected = false
}
})
this.pieOption.title.text = this.pieTotal
// this.clickPie() //
this.clickPie(null, maxIndex)
let fun = function (params) {
_that.clickPie(params)
}
this.$refs.pieChart.handleClick(fun)
},
clickPie (params, index) {
let dataIndex = params ? params.dataIndex : index ? index : null
let componentIndex = params ? params.componentIndex : null
if (componentIndex === 2) { //
dataIndex = -1
this.categoryCode = ''
this.$refs.pieChart.clear()
}
this.pieData.forEach((element, index) => {
if (index === dataIndex) {
element.label = {
show: true,
}
element.labelLine = {
show: true,
lineStyle: {
opacity: 1,
}
}
this.categoryCode = element.categoryCode
element.selected = !element.selected
} else {
element.label = {
show: false,
}
element.labelLine = {
show: false,
lineStyle: {
opacity: 0,
color: 'rgba(255,255,255,0)'
}
}
element.selected = false
}
})
this.pieOption.series[1].data = this.pieData
// this.$refs.pieChart.hideLoading()
this.pieOption.series[1].itemStyle = {
color: function (params) {
return params.data.color
}
}
this.$refs.pieChart.setOption(this.pieOption)
this.demand.pageNo = 1
this.getTable()
},
gridPieInitOk (dom) {
this.gridPieChartS = dom
this.gridPieInitState = true
},
getGridPie () {
if (this.gridPieInitState) {
this.assignGridPieChart()
} else {
setTimeout(() => {
this.getGridPie()
}, 500)
}
},
//
async assignGridPieChart () {
this.gridPieTotal = 0
let maxIndex = 0
let maxValue = this.gridPieData[0].value
const _that = this
// pieChart
this.gridPieOption = pieOption(this.gridPieChartS)
this.gridPieData.forEach((item, index) => {
this.gridPieTotal = this.gridPieTotal + item.value
})
this.gridPieOption.title.text = this.gridPieTotal
// this.gridPieOption.legend.bottom = 50
this.clickGridPie() // this.clickGridPie(maxIndex)
let fun = function (params) {
_that.clickGridPie(params)
}
this.$refs.gridPieChart.handleClick(fun)
},
clickGridPie (params) {
let dataIndex = params ? params.dataIndex : null
let componentIndex = params ? params.componentIndex : null
if (componentIndex === 2) { //
dataIndex = -1
this.tableOrgId = ''
this.tableOrgType = ''
this.$refs.gridPieChart.clear()
}
this.gridPieData.forEach((element, index) => {
if (index === dataIndex) {
element.label = {
show: true,
}
element.labelLine = {
show: true,
lineStyle: {
opacity: 1,
}
}
this.tableOrgId = element.orgId
this.tableOrgType = element.orgType
console.log(element)
} else {
element.label = {
show: false,
}
element.labelLine = {
show: false,
lineStyle: {
opacity: 0,
color: 'rgba(255,255,255,0)'
}
}
}
})
this.gridPieOption.series[1].data = this.gridPieData
this.gridPieOption.series[1].itemStyle = {
color: function (params) {
console.log(params)
return params.data.color
}
}
// this.$refs.pieChart.hideLoading()
this.$refs.gridPieChart.setOption(this.gridPieOption)
},
toUserInfo (uid) {
this.$router.push({ path: `/main-shuju/visual-basicinfo-people/${uid}` })
},
},
props: {
uid: {
type: String,
default: "",
// default: "8ada68cb6f1e4b9a8333348a39ef3aee",
}
},
computed: {},
components: {
cptCard,
cptTb,
screenEchartsFrame,
ScreenLoading,
ScreenNodata,
detailInfo
},
watch: {
dateIdShow () {
// let dataArray = this.dateIdShow.split('-')
// this.dateId = dataArray.join('')
},
uid (id) {
this.userId = id
},
userId () {
this.getApiData()
window.scrollTo(0, 0)
}
},
}
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/shijianfenleifenxi.scss"
scoped
></style>
<style
lang="scss"
src="@/assets/scss/modules/visual/search_1.scss"
scoped
></style>

179
src/views/modules/visual/communityGovern/geliguankong/pieOption.js

@ -0,0 +1,179 @@
export function pieOption (_charts) {
const center= ['50%', '140px']
return {
title: {
text: '0',
top: 115,
left: 'center',
textStyle: {
width: '100%',
fontSize: 26,
color: '#FFFFFF',
fontWeight: 400
},
itemGap: 5,
subtext: '总数',
subtextStyle: {
fontSize: 18,
color: '#fff',
fontWeight: 400
}
},
tooltip: {
show: false
},
legend: {
bottom: 0,
itemWidth: 20,
itemHeight: 10,
textStyle: {
color: '#D2E7FF',
fontSize: 14,
lineHeight: 20,
},
},
series: [
// 外侧圆环
{
type: 'pie',
// 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。
startAngle: 0,
hoverAnimation: false,
// tooltip: {
// },
center: center,
radius: ['48%', '48.3%'],
label: {
show: false
},
labelLine: {
show: false
},
data: [{
value: 360,
itemStyle: {
color: 'rgba(40, 101, 250, 0)',
width:0,
borderColor: 'rgba(40, 101, 250, 0.5)',
borderWidth: 1,
borderType: 'dotted'
}
}
]
},
// 突出的
{
hoverAnimation: false,
// name: 'Access From',
type: 'pie',
center: center,
radius: ['25%', '38%'],
avoidLabelOverlap: false,
// top: top + '%',
// height: '80%',
selectedMode: 'single',
left: 'center',
width: 480,
label: {
// show: false,
position: 'outside',
alignTo: 'edge',
// formatter: '{a|{c}}\n\n{name|{b}}',
formatter: '{a|{c}}\n{r|}\n{name|{b}}',
minMargin: 5,
edgeDistance: 1,
lineHeight: 15,
color: '#fff',
fontSize: 10,
// distanceToLabelLine: -60,
rich: {
name: {
padding: [0, 6, 0, 6]
},
a: {
fontSize: 18,
color: '#fff',
padding: [0, 6, 6, 6]
},
r: {
backgroundColor: 'auto',
borderRadius: 6,
width: 6,
height: 6,
// padding: [3, 3, 0, -12]
}
}
},
labelLine: {
show: false,
smooth: 0.2,
length: 20,
length2: 0,
maxSurfaceAngle: 80
},
labelLayout: function (params) {
const isLeft = params.labelRect.x < _charts.getWidth() / 2;
const points = params.labelLinePoints;
// Update the end point.
if (points) {
points[2][0] = isLeft
? params.labelRect.x
: params.labelRect.x + params.labelRect.width;
}
return {
labelLinePoints: points
};
},
itemStyle: {
// color:function(params) {
// //自定义颜色
// var colorList = [
// '#00FFFF', '#00FF00', '#FFFF00', '#FF8C00', '#FF0000', '#FE8463',
// ];
// return colorList[params.dataIndex]
// }
},
data: [],
},
// 中间圆环
{
type: 'pie',
// 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。
startAngle: 0,
hoverAnimation: false,
center: center,
// tooltip: {
// },
radius: ['0%', '20%'],
label: {
show: false
},
labelLine: {
show: false
},
data: [{
value: 360,
itemStyle: {
normal: {
color: 'rgba(8, 37, 134, 1)',
}
}
}
]
},
]
}
}

110
src/views/modules/visual/cpts/tb.vue

@ -1,89 +1,81 @@
<template>
<div class="m-table">
<table class="table" border="0" cellspacing="0" cellpadding="0">
<col
:align="item.align"
:width="item.width"
:key="'col' + index"
v-for="(item, index) in colList"
/>
<table class="table"
border="0"
cellspacing="0"
cellpadding="0">
<col :align="item.align"
:width="item.width"
:key="'col' + index"
v-for="(item, index) in colList" />
<thead>
<tr class="table-header">
<th class="table-header-th" v-for="item in header" :key="item">
<th class="table-header-th"
v-for="item in header"
:key="item">
{{ item }}
</th>
</tr>
</thead>
<tbody class="table-body">
<tr
class="table-body-tr"
v-for="(value, index) in list"
:key="index"
@click="handleClickRow(index)"
>
<td class="td" v-for="(item, indexs) in value" :key="indexs">
<div
v-if="typeof item === 'string' || typeof item === 'number'"
:title="item"
>
<tr class="table-body-tr"
v-for="(value, index) in list"
:key="index"
@click="handleClickRow(index)">
<td class="td"
v-for="(item, indexs) in value"
:key="indexs">
<div v-if="typeof item === 'string' || typeof item === 'number'"
:title="item">
{{ item }}
</div>
<div v-if="typeof item === 'object' && item.type === 'img'">
<!-- <span>{{ item.type+ item.src}}</span> -->
<img style="width: 18px; height: 18px" :src="item.src" alt="" />
<img style="width: 18px; height: 18px"
:src="item.src"
alt="" />
</div>
<div
v-if="typeof item === 'object' && item && item.type == 'index'"
>
<img
v-if="highlightTop3 && index == 0"
src="@/assets/img/shuju/top/1.png"
alt=""
/>
<img
v-else-if="highlightTop3 && index == 1"
src="@/assets/img/shuju/top/2.png"
alt=""
/>
<img
v-else-if="highlightTop3 && index == 2"
src="@/assets/img/shuju/top/3.png"
alt=""
/>
<div v-if="typeof item === 'object' && item && item.type == 'index'">
<img v-if="highlightTop3 && index == 0"
src="@/assets/img/shuju/top/1.png"
alt="" />
<img v-else-if="highlightTop3 && index == 1"
src="@/assets/img/shuju/top/2.png"
alt="" />
<img v-else-if="highlightTop3 && index == 2"
src="@/assets/img/shuju/top/3.png"
alt="" />
<span v-else>{{ index + 1 }}</span>
</div>
<a
v-else-if="
<a v-else-if="
typeof item === 'object' && item && item.type == 'operate'
"
v-for="btn in item.list"
:key="'operate' + index + btn"
@click="handleClickBtn(index, btn)"
>{{ btn }}</a
>
<a
v-else-if="
v-for="btn in item.list"
:key="'operate' + index + btn"
@click.stop="handleClickBtn(index, btn)">{{ btn }}</a>
<a v-else-if="
typeof item === 'object' && item && item.type == 'people'
"
@click="handleClickPeople(item)"
>{{ item.name }}</a
>
@click="handleClickPeople(item)">{{ item.name }}</a>
</td>
</tr>
</tbody>
</table>
<div class="table-status" v-if="loading">
<div class="table-status"
v-if="loading">
<screen-loading>加载中</screen-loading>
</div>
<div class="table-status" v-if="list.length == 0 && !loading">
<div class="table-status"
v-if="list.length == 0 && !loading">
<div class="no-data">
<img src="@/assets/img/modules/visual/noData.png" class="no-data-img" />
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
</div>
@ -151,24 +143,24 @@ export default {
default: false,
},
},
data() {
data () {
return {};
},
watch: {},
mounted() {},
mounted () { },
created() {},
created () { },
methods: {
//
handleClickRow(index) {
handleClickRow (index) {
this.$emit("handleClickRow", index);
},
handleClickBtn(index, type) {
handleClickBtn (index, type) {
this.$emit("operate", index, type);
},
handleClickPeople(item) {
handleClickPeople (item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.uid}`,
});

154
src/views/modules/visual/plugin/power/organization.vue

@ -12,14 +12,14 @@
<span>动力主轴</span>
<div class="search">
<div class="second-select cascader">
<el-cascader class="customer_cascader"
ref="myCascader"
placeholder="请选择所属组织"
:options="agencytree"
v-model="agencyId"
:show-all-levels="false"
@change="handleChangeAgencytree"
:props="{ expandTrigger: 'hover', emitPath: false, label: 'orgName', value: 'orgId', children: 'subOrgList' }"/>
<el-cascader class="customer_cascader"
ref="myCascader"
placeholder="请选择所属组织"
:options="agencytree"
v-model="agencyId"
:show-all-levels="false"
@change="handleChangeAgencytree"
:props="{ expandTrigger: 'hover', emitPath: false, label: 'orgName', value: 'orgId', children: 'subOrgList' }" />
</div>
</div>
<!-- <div class="second-select ">
@ -40,7 +40,8 @@
<div class="card-left">
<!-- <div class="card-item-title">小标题</div> -->
<div class="card-left-top">
<screen-org-tree :list="list" @onClickNode="onClickNode"></screen-org-tree>
<screen-org-tree :list="list"
@onClickNode="onClickNode"></screen-org-tree>
</div>
<div class="card-left-bottom">
<screen-table :headerStyle="headerStyle"
@ -61,36 +62,43 @@
</el-pagination>
</div>
<house-dialog v-if="showHouse"
:houseId="houseId"
@close="showHouse = false"></house-dialog>
:houseId="houseId"
@close="showHouse = false"></house-dialog>
</div>
</div>
<div class="card-right">
<div class="card-right-top">
<screen-top-count :colorIndex="item.index" v-for="(item, key) in countList" :key="key">
<template v-slot:number>{{item.value}}</template>
<template v-slot:title>{{item.title}}</template>
<screen-top-count :colorIndex="item.index"
v-for="(item, key) in countList"
:key="key">
<template v-slot:number>{{item.value}}</template>
<template v-slot:title>{{item.title}}</template>
</screen-top-count>
</div>
<div class="card-title" style="margin-left: 20px; margin-bottom: 20px; margin-top: 20px;">
<img class="title-icon" src="../../../../../assets/img/shuju/title-tip.png" />
<div class="card-title"
style="margin-left: 20px; margin-bottom: 20px; margin-top: 20px;">
<img class="title-icon"
src="../../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
网格分布
</div>
</div>
</div>
<div class="card-right-bottom">
<screen-org-map ref="orgMap"></screen-org-map>
<div class="legend">
<div class="legend-item">
<img src="../../../../../assets/img/plugins/danghui.png" class="legend-item-icon">
<img src="../../../../../assets/img/plugins/danghui.png"
class="legend-item-icon">
<div class="legend-item-text">党群服务站</div>
</div>
<div class="legend-item">
<img src="../../../../../assets/img/plugins/louyuanxiaozu.png" class="legend-item-icon">
<img src="../../../../../assets/img/plugins/louyuanxiaozu.png"
class="legend-item-icon">
<div class="legend-item-text">楼院党小组</div>
</div>
<div class="legend-item">
<img src="../../../../../assets/img/plugins/dangyuanzhongxinhu.png" class="legend-item-icon">
<img src="../../../../../assets/img/plugins/dangyuanzhongxinhu.png"
class="legend-item-icon">
<div class="legend-item-text">党员中心户</div>
</div>
</div>
@ -127,11 +135,11 @@ export default {
screenTopCount,
houseDialog
},
data() {
data () {
return {
headerList: [
{ title: "序号", coulmn: 'index', width: '100px' },
{ title: "党员", coulmn: 'kernelMemberNameConcat' },
{ title: "党员中心户", coulmn: 'kernelMemberNameConcat' },
{ title: "地址", coulmn: 'address' }
],
headerStyle: [
@ -166,7 +174,7 @@ export default {
zhongxinhuList: [], //
}
},
async mounted() {
async mounted () {
this.showInfo = false
// const { user } = this.$store.state
// this.agencyId = user.agencyId
@ -198,7 +206,7 @@ export default {
this.pageNo = val
this.getList()
},
getList() {
getList () {
this.tableData = []
this.visibleLoading = true
let params = {
@ -221,7 +229,7 @@ export default {
this.$message.error(err)
})
},
async getCount() {
async getCount () {
const url = "/pli/power/data/axis/statistics"
let params = {
agencyId: this.agencyId
@ -268,7 +276,7 @@ export default {
this.$message.error(msg)
}
},
async getStructTree() {
async getStructTree () {
const url = "/pli/power/data/axis/structTree"
let params = {
agencyId: this.agencyId
@ -284,7 +292,7 @@ export default {
this.$message.error(msg)
}
},
getMapData() {
getMapData () {
const params1 = {
axisStructId: this.axisStructId,
agencyId: this.agencyId,
@ -357,69 +365,69 @@ export default {
// },
//
async getAgencylist () {
const url = '/data/aggregator/org/agencytree'
let params = {
agencyId: this.agencyId,
client:'gov'
}
const { data, code, msg } = await requestPost(url,params)
if (code === 0) {
let _data
if (data) {
_data = this.removeByOrgType(data, 'agency')
if (_data) {
this.agencytree = this.removeEmptySubOrgList(_data)
// id
this.agencyId = this.agencytree[0].subOrgList && this.agencytree[0].subOrgList.length > 0 ? this.setListAgencyId_one(this.agencytree[0].subOrgList) : this.agencytree[0].orgId
}
}
} else {
this.$message.error(msg)
const url = '/data/aggregator/org/agencytree'
let params = {
agencyId: this.agencyId,
client: 'gov'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let _data
if (data) {
_data = this.removeByOrgType(data, 'agency')
if (_data) {
this.agencytree = this.removeEmptySubOrgList(_data)
// id
this.agencyId = this.agencytree[0].subOrgList && this.agencytree[0].subOrgList.length > 0 ? this.setListAgencyId_one(this.agencytree[0].subOrgList) : this.agencytree[0].orgId
}
}
} else {
this.$message.error(msg)
}
},
removeByOrgType (orgArray, orgType) {
if (orgArray && orgArray.length > 0) {
for (let p = orgArray.length - 1; p >= 0; p--) {
let orgInfo = orgArray[p]
if (orgInfo) {
if (orgInfo.orgType !== orgType) {
orgArray.splice(p, 1)
} else {
this.removeByOrgType(orgInfo.subOrgList, orgType)
}
}
if (orgArray && orgArray.length > 0) {
for (let p = orgArray.length - 1; p >= 0; p--) {
let orgInfo = orgArray[p]
if (orgInfo) {
if (orgInfo.orgType !== orgType) {
orgArray.splice(p, 1)
} else {
this.removeByOrgType(orgInfo.subOrgList, orgType)
}
}
}
return orgArray
}
return orgArray
},
removeEmptySubOrgList (orgArray) {
orgArray.forEach((orgInfo) => {
if (orgInfo && orgInfo.subOrgList) {
if (orgInfo.subOrgList.length === 0) {
orgInfo.subOrgList = undefined
} else {
this.removeEmptySubOrgList(orgInfo.subOrgList)
}
}
})
return orgArray;
orgArray.forEach((orgInfo) => {
if (orgInfo && orgInfo.subOrgList) {
if (orgInfo.subOrgList.length === 0) {
orgInfo.subOrgList = undefined
} else {
this.removeEmptySubOrgList(orgInfo.subOrgList)
}
}
})
return orgArray;
},
// orgId
setListAgencyId_one(subOrgList) {
setListAgencyId_one (subOrgList) {
if (subOrgList[0].subOrgList && subOrgList[0].subOrgList.length > 0) {
return this.setAgencyId_two(subOrgList[0].subOrgList)
} else {
return subOrgList[0].orgId
}
},
setAgencyId_two(subOrgList) {
setAgencyId_two (subOrgList) {
if (subOrgList[0].subOrgList && subOrgList[0].subOrgList.length > 0) {
return this.setListAgencyId_one(subOrgList[0].subOrgList)
} else {
return subOrgList[0].orgId
}
},
async handleChangeAgencytree() {
async handleChangeAgencytree () {
this.pageNo = 1
this.pageSize = 5
this.total = 0
@ -457,7 +465,7 @@ export default {
></style>
<style lang="scss" scoped>
.second-select {
margin: 0 10px 0 40px !important;
margin: 0 10px 0 40px !important;
}
.card-title {
display: flex;
@ -482,7 +490,7 @@ export default {
border: 1px solid #1a64cc;
}
.el-icon-arrow-down::before {
content: "\e790";
content: "\e790";
}
}
}
@ -582,7 +590,7 @@ export default {
color: #fff;
}
.card-item-title::after {
content: '';
content: "";
position: absolute;
top: 50%;
left: 20px;
@ -590,7 +598,7 @@ export default {
height: 12px;
box-sizing: border-box;
margin-top: -6px;
background: #2865FA;
background: #2865fa;
border-radius: 50%;
}
</style>

Loading…
Cancel
Save