Files
dvcp_v2_wxcp_app/src/project/saas/AppDataStatistics/components/resident.vue

293 lines
11 KiB
Vue
Raw Normal View History

2022-12-11 16:21:17 +08:00
<template>
2022-12-11 17:46:29 +08:00
<div class="resident">
<div class="resident_num">
<div class="num_item">
<p class="num_item_name">居民总数</p>
<p class="num_item_data">2036</p>
</div>
<div class="num_item">
<p class="num_item_name">居民总数</p>
<p class="num_item_data">2036</p>
</div>
<div class="num_item">
<p class="num_item_name">居民总数</p>
<p class="num_item_data">2036</p>
</div>
</div>
<!-- 特殊人群 -->
<div class="specialPeople">
<h3>特殊人群</h3>
2022-12-12 13:46:45 +08:00
<div class="specialBox">
<div id="specialEcharts"></div>
2022-12-11 17:46:29 +08:00
</div>
</div>
2022-12-12 14:56:57 +08:00
<!-- 年龄分布 -->
<div class="ageDistribution">
<h3>年龄分布</h3>
<div class="ageBox">
<div id="ageEcharts"></div>
</div>
</div>
<!-- 男女比例 -->
<div class="ageProportion">
<h3>男女比例</h3>
<div class="proportionBox">
<div id="proportionEcharts"></div>
</div>
</div>
2022-12-11 17:46:29 +08:00
</div>
2022-12-11 16:21:17 +08:00
</template>
<script>
2022-12-12 13:46:45 +08:00
import * as echarts from 'echarts';
2022-12-11 16:21:17 +08:00
export default {
2022-12-12 13:46:45 +08:00
name: "resident",
data() {
return {
2022-12-11 16:21:17 +08:00
2022-12-12 13:46:45 +08:00
}
},
created() {
},
mounted() {
this.getSpecialEcharts()
2022-12-12 14:56:57 +08:00
this.getAgeEcherts()
this.getAgeProportion()
2022-12-12 13:46:45 +08:00
},
methods: {
2022-12-12 14:56:57 +08:00
// 特殊人群
2022-12-12 13:46:45 +08:00
getSpecialEcharts() {
let specialDom = document.getElementById('specialEcharts');
let myChart = echarts.init(specialDom);
let option = {
title: {
zlevel: 0,
2022-12-12 14:56:57 +08:00
text: ['{name|特殊人群}'],
2022-12-12 13:46:45 +08:00
top: 'center',
left: '48%',
textAlign: 'center',
textStyle: {
rich: {
name: {
color: '#999999',
fontSize: 13,
lineHeight: 15
},
},
},
},
2022-12-12 15:02:59 +08:00
color: ['#4980CB','#F3A963','#6B79BB','#97D1B3'],
2022-12-12 13:46:45 +08:00
series: [
{
name: '特殊人群',
type: 'pie',
radius: ['30%', '60%'],
avoidLabelOverlap: false,
hoverAnimation: false,
emphasis: {
disabled: false,
scale: false,
scaleSize: 0,
},
label: {
alignTo: 'labelLine',
formatter: '{name|{b}}\n{value|{c}}',
padding: [0, -70],
minMargin: 5,
edgeDistance: 10,
lineHeight: 15,
rich: {
time: {
fontSize: 10,
color: '#999'
}
}
},
labelLine: {
length: 15,
length2: 70,
maxSurfaceAngle: 80
},
data: [
{ value: 1048, name: '退伍军人' },
{ value: 735, name: '吸毒人员' },
{ value: 580, name: '刑满释放人员' },
{ value: 484, name: '高龄老人' },
]
}
]
};
option && myChart.setOption(option);
2022-12-12 14:56:57 +08:00
},
// 年龄分布
getAgeEcherts() {
let ageDom = document.getElementById('ageEcharts');
let myChart = echarts.init(ageDom);
let option;
option = {
xAxis: {
type: 'category',
data: ['10以下', '10-18', '18-65', '65-80', '80以上']
},
yAxis: {
type: "value",
axisTick: {
show: false,
},
axisLine: {
show: false,
},
},
series: [
{
data: [136, 195, 162, 138, {
value: 98,
itemStyle: {
color: '#F3A963'
}
}],
type: 'bar',
itemStyle: {
normal: {
color: "#3975C6",
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: {
fontSize: 13,
color: '#4980CB'
}
},
},
},
barWidth: 22,
barGap: '20%',
}
]
};
option && myChart.setOption(option);
},
// 男女比例
getAgeProportion() {
let proportionDom = document.getElementById('proportionEcharts');
let myChart = echarts.init(proportionDom);
let option = {
title: {
zlevel: 0,
text: ['{name|男女比例}'],
top: 'center',
left: '48%',
textAlign: 'center',
textStyle: {
rich: {
name: {
color: '#999999',
fontSize: 13,
lineHeight: 15
},
},
},
},
2022-12-12 17:40:55 +08:00
color: ['#3975C6','#F3A963'],
2022-12-12 14:56:57 +08:00
series: [
{
name: '特殊人群',
type: 'pie',
radius: ['30%', '60%'],
avoidLabelOverlap: false,
hoverAnimation: false,
emphasis: {
disabled: false,
scale: false,
scaleSize: 0,
},
label: {
alignTo: 'labelLine',
formatter: '{name|{b}}{value|{c}}\n',
padding: [0, -50],
minMargin: 5,
edgeDistance: 10,
lineHeight: 15,
rich: {
time: {
fontSize: 10,
color: '#999'
}
}
},
labelLine: {
length: 20,
length2: 50,
maxSurfaceAngle: 80
},
data: [
2022-12-12 17:40:55 +08:00
{ value: 1048, name: '男' },
{ value: 735, name: '女' },
2022-12-12 14:56:57 +08:00
]
}
]
};
option && myChart.setOption(option);
},
2022-12-12 13:46:45 +08:00
},
destroyed() {
2022-12-12 14:56:57 +08:00
2022-12-12 13:46:45 +08:00
},
2022-12-11 16:21:17 +08:00
}
</script>
<style lang="scss" scoped>
.resident {
2022-12-11 17:46:29 +08:00
padding: 0 30px;
box-sizing: border-box;
.resident_num {
width: 100%;
height: 160px;
background: #FFF;
margin-top: 32px;
border-radius: 16px;
display: flex;
.num_item {
width: 33%;
height: 100%;
text-align: center;
margin-top: 32px;
.num_item_name {
color: #666666;
}
.num_item_data {
margin-top: 10px;
color: #000000;
font-size: 36px;
}
}
}
2022-12-12 14:56:57 +08:00
.specialPeople,
.ageDistribution,
.ageProportion {
2022-12-11 17:46:29 +08:00
margin-top: 32px;
2022-12-12 14:56:57 +08:00
.specialBox,
.ageBox,
.proportionBox {
2022-12-12 13:46:45 +08:00
margin-top: 24px;
width: 100%;
height: 480px;
border-radius: 8px;
background: #FFF;
2022-12-11 17:46:29 +08:00
2022-12-12 14:56:57 +08:00
#specialEcharts,
#ageEcharts,
#proportionEcharts {
2022-12-12 13:46:45 +08:00
width: 100%;
height: 100%;
}
}
2022-12-11 17:46:29 +08:00
}
2022-12-11 16:21:17 +08:00
}
</style>