@ -0,0 +1,42 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 标签分布
|
||||||
|
export function bigDataTag() {
|
||||||
|
return request({
|
||||||
|
url: '/szxc/data/tag',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 年龄分布
|
||||||
|
export function bigDataAge() {
|
||||||
|
return request({
|
||||||
|
url: '/szxc/data/age',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 性别分布
|
||||||
|
export function bigDataSex() {
|
||||||
|
return request({
|
||||||
|
url: '/szxc/data/sex',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 活动分布
|
||||||
|
export function bigDataActive() {
|
||||||
|
return request({
|
||||||
|
url: '/szxc/data/active',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 心愿分布
|
||||||
|
export function bigDataWish() {
|
||||||
|
return request({
|
||||||
|
url: '/szxc/data/wish',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 747 B |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 498 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 761 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 781 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 479 KiB |
@ -0,0 +1,456 @@
|
|||||||
|
<template>
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<div class="center">数据大屏</div>
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="analysis" id="analysis1"></div>
|
||||||
|
<div class="analysis" id="analysis2"></div>
|
||||||
|
<div class="analysis" id="analysis3"></div>
|
||||||
|
<div class="analysis" id="analysis4"></div>
|
||||||
|
<div class="analysis" id="analysis5"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { bigDataTag, bigDataAge, bigDataSex, bigDataActive, bigDataWish } from "@/api/szxc/sjdp";
|
||||||
|
import * as echarts from 'echarts';
|
||||||
|
|
||||||
|
let barChart1 = null;
|
||||||
|
let barChart2 = null;
|
||||||
|
let barChart3 = null;
|
||||||
|
let barChart4 = null;
|
||||||
|
let barChart5 = null;
|
||||||
|
|
||||||
|
function resizeFun() {
|
||||||
|
barChart1.resize();
|
||||||
|
barChart2.resize();
|
||||||
|
barChart3.resize();
|
||||||
|
barChart4.resize();
|
||||||
|
barChart5.resize();
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "Index",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
age: {
|
||||||
|
legend: [],
|
||||||
|
xAxis: [],
|
||||||
|
series: []
|
||||||
|
},
|
||||||
|
sex: {
|
||||||
|
xAxis: [],
|
||||||
|
series: []
|
||||||
|
},
|
||||||
|
tag: {
|
||||||
|
legend: [],
|
||||||
|
xAxis: [],
|
||||||
|
series: []
|
||||||
|
},
|
||||||
|
active: {
|
||||||
|
legend: [],
|
||||||
|
xAxis: [],
|
||||||
|
series: []
|
||||||
|
},
|
||||||
|
wish: {
|
||||||
|
legend: [],
|
||||||
|
xAxis: [],
|
||||||
|
series: []
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getBigDataAge()
|
||||||
|
this.getBigDataSex()
|
||||||
|
this.getBigDataTag()
|
||||||
|
this.getBigDataActive()
|
||||||
|
this.getBigDataWish()
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
if (!barChart1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
barChart1.dispose()
|
||||||
|
barChart2.dispose()
|
||||||
|
barChart3.dispose()
|
||||||
|
barChart4.dispose()
|
||||||
|
barChart5.dispose()
|
||||||
|
|
||||||
|
barChart1 = null
|
||||||
|
barChart2 = null
|
||||||
|
barChart3 = null
|
||||||
|
barChart4 = null
|
||||||
|
barChart5 = null
|
||||||
|
|
||||||
|
window.removeEventListener("resize", resizeFun);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 年龄
|
||||||
|
getBigDataAge() {
|
||||||
|
bigDataAge().then(response => {
|
||||||
|
this.age.legend = []
|
||||||
|
this.age.xAxis = ['0-12岁','13-17岁','18-22岁','23-30岁','31-59岁','60岁以上']
|
||||||
|
this.age.series = []
|
||||||
|
|
||||||
|
response.forEach(item => {
|
||||||
|
this.age.legend.push(item.dept_name);
|
||||||
|
let arr = [];
|
||||||
|
|
||||||
|
this.age.xAxis.forEach(item1=>{
|
||||||
|
arr.push(item[item1])
|
||||||
|
})
|
||||||
|
|
||||||
|
this.age.series.push(
|
||||||
|
{
|
||||||
|
name: item.dept_name,
|
||||||
|
type:'line',
|
||||||
|
data: arr
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
this.initChart();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 性别
|
||||||
|
getBigDataSex() {
|
||||||
|
bigDataSex().then(response => {
|
||||||
|
this.sex.xAxis = []
|
||||||
|
this.sex.series = []
|
||||||
|
|
||||||
|
let arr1 = [];
|
||||||
|
let arr2 = [];
|
||||||
|
let arr3 = [];
|
||||||
|
response.forEach(item => {
|
||||||
|
this.sex.xAxis.push(item.dept_name);
|
||||||
|
arr1.push(item.headCount)
|
||||||
|
arr2.push(item.man)
|
||||||
|
arr3.push(item.women)
|
||||||
|
})
|
||||||
|
|
||||||
|
this.sex.series = [{
|
||||||
|
name: '总数',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '男',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '女',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr3
|
||||||
|
}]
|
||||||
|
|
||||||
|
this.initChart()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 标签
|
||||||
|
getBigDataTag() {
|
||||||
|
bigDataTag().then(response => {
|
||||||
|
this.tag.legend = []
|
||||||
|
this.tag.xAxis = []
|
||||||
|
this.tag.series = []
|
||||||
|
|
||||||
|
if(response && response[0]){
|
||||||
|
this.tag.xAxis = Object.keys(response[0]).filter(item1 => item1 !== "dept_name")
|
||||||
|
}
|
||||||
|
|
||||||
|
response.forEach(item => {
|
||||||
|
this.tag.legend.push(item.dept_name);
|
||||||
|
let arr = [];
|
||||||
|
|
||||||
|
this.tag.xAxis.forEach(item1=>{
|
||||||
|
arr.push(item[item1])
|
||||||
|
})
|
||||||
|
|
||||||
|
this.tag.series.push(
|
||||||
|
{
|
||||||
|
name: item.dept_name,
|
||||||
|
type:'bar',
|
||||||
|
data: arr
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
this.initChart()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 活动
|
||||||
|
getBigDataActive() {
|
||||||
|
bigDataActive().then(response => {
|
||||||
|
this.active.xAxis = []
|
||||||
|
this.active.series = []
|
||||||
|
|
||||||
|
let arr1 = [];
|
||||||
|
let arr2 = [];
|
||||||
|
let arr3 = [];
|
||||||
|
let arr4 = [];
|
||||||
|
response.forEach(item => {
|
||||||
|
this.active.xAxis.push(item.dept_name);
|
||||||
|
arr1.push(item.num)
|
||||||
|
arr2.push(item['待开始'])
|
||||||
|
arr3.push(item['进行中'])
|
||||||
|
arr3.push(item['已结束'])
|
||||||
|
})
|
||||||
|
|
||||||
|
this.active.series = [{
|
||||||
|
name: '总数',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '待开始',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '进行中',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '已结束',
|
||||||
|
type: 'bar',
|
||||||
|
data: arr4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
this.initChart()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 心愿
|
||||||
|
getBigDataWish() {
|
||||||
|
bigDataWish().then(response => {
|
||||||
|
this.wish.legend = []
|
||||||
|
this.wish.xAxis = []
|
||||||
|
this.wish.series = []
|
||||||
|
|
||||||
|
if(response && response[0]){
|
||||||
|
this.wish.xAxis = Object.keys(response[0]).filter(item1 => item1 !== "dept_name")
|
||||||
|
}
|
||||||
|
|
||||||
|
response.forEach(item => {
|
||||||
|
this.wish.legend.push(item.dept_name);
|
||||||
|
let arr = [];
|
||||||
|
|
||||||
|
this.wish.xAxis.forEach(item1=>{
|
||||||
|
arr.push(item[item1])
|
||||||
|
})
|
||||||
|
|
||||||
|
this.wish.series.push(
|
||||||
|
{
|
||||||
|
name: item.dept_name,
|
||||||
|
type:'bar',
|
||||||
|
data: arr
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
this.initChart()
|
||||||
|
});
|
||||||
|
},
|
||||||
|
initChart() {
|
||||||
|
const _this = this;
|
||||||
|
|
||||||
|
barChart1 = echarts.init(document.getElementById('analysis1'));
|
||||||
|
barChart1.setOption({
|
||||||
|
title: {
|
||||||
|
text: '年龄分布'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: _this.age.legend
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
data: _this.age.xAxis
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: _this.age.series
|
||||||
|
});
|
||||||
|
|
||||||
|
barChart2 = echarts.init(document.getElementById('analysis2'));
|
||||||
|
barChart2.setOption({
|
||||||
|
title: {
|
||||||
|
text: '性别分布'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data:["总数","男","女"]
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
data: this.sex.xAxis
|
||||||
|
},
|
||||||
|
yAxis: {},
|
||||||
|
series: this.sex.series
|
||||||
|
});
|
||||||
|
|
||||||
|
barChart3 = echarts.init(document.getElementById('analysis3'));
|
||||||
|
barChart3.setOption({
|
||||||
|
title: {
|
||||||
|
text: '标签分布'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: _this.tag.legend
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
data: _this.tag.xAxis
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: _this.tag.series
|
||||||
|
});
|
||||||
|
|
||||||
|
barChart4 = echarts.init(document.getElementById('analysis4'));
|
||||||
|
barChart4.setOption({
|
||||||
|
title: {
|
||||||
|
text: '活动分布'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: ['总数', '待开始', '进行中', '已结束']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '3%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
data: _this.active.xAxis
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: _this.active.series
|
||||||
|
});
|
||||||
|
|
||||||
|
barChart5 = echarts.init(document.getElementById('analysis5'));
|
||||||
|
barChart5.setOption({
|
||||||
|
title: {
|
||||||
|
text: '心愿分布'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: _this.wish.legend
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '5%',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '3%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
data: _this.wish.xAxis
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series: _this.wish.series
|
||||||
|
});
|
||||||
|
|
||||||
|
window.addEventListener("resize", resizeFun)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.container {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
background: url("../../../assets/images/img.png") no-repeat 100% 100%;
|
||||||
|
|
||||||
|
.head {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 50%;
|
||||||
|
min-width: 600px;
|
||||||
|
z-index: 20;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.center {
|
||||||
|
background: url("../../../assets/images/head.gif") no-repeat center 43% ;
|
||||||
|
background-size: 100%;
|
||||||
|
height: 10vh;
|
||||||
|
line-height: 7vh;
|
||||||
|
flex: 1;
|
||||||
|
font-size: 5vh;
|
||||||
|
color: #5cf8ff;
|
||||||
|
font-family: cursive;
|
||||||
|
font-weight: bolder;
|
||||||
|
text-shadow: 2px 2px 3px #ffdd45;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
width: 100vw;
|
||||||
|
height: 90vh;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.analysis{
|
||||||
|
width: 600px;
|
||||||
|
min-width: 400px;
|
||||||
|
height: 400px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: rgba(255,255,255,0.8);
|
||||||
|
padding: 15px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||