152 lines
3.6 KiB
Vue
152 lines
3.6 KiB
Vue
<template>
|
||
<section>
|
||
<ai-detail class="Statistics">
|
||
<template slot="title">
|
||
<ai-title title="投票实况" isShowBack isShowBottomBorder @onBackClick="cancel(false)"></ai-title>
|
||
</template>
|
||
<template slot="content">
|
||
<ai-title title="本届任职" isShowBottomBorder></ai-title>
|
||
<div class="basicinfo-box">
|
||
<div><span>已投人数:</span><span>{{ data.alreadyCount || 0 }}</span></div>
|
||
<div><span>未投人数:</span><span>{{ data.notYetCount || 0 }}</span></div>
|
||
<div><span>日期:</span><span>{{ data.dateTime || '' }}</span></div>
|
||
</div>
|
||
|
||
<ai-title title="候选人选票统计" isShowBottomBorder></ai-title>
|
||
|
||
<div class="echarts-box">
|
||
<div id="echarts-bar"></div>
|
||
<!-- <ai-empty class="empty"></ai-empty> -->
|
||
</div>
|
||
</template>
|
||
</ai-detail>
|
||
</section>
|
||
</template>
|
||
|
||
<script>
|
||
import * as echarts from 'echarts';
|
||
export default {
|
||
name: "Statistics",
|
||
props: {
|
||
instance: Function,
|
||
dict: Object,
|
||
params: Object,
|
||
},
|
||
data() {
|
||
return {
|
||
data: {},
|
||
myChart: null,
|
||
}
|
||
},
|
||
created() {
|
||
this.getStatistics()
|
||
},
|
||
mounted() {
|
||
this.getStaBar()
|
||
},
|
||
methods: {
|
||
cancel (isRefresh) {
|
||
this.$emit('change', {
|
||
type: 'electionList',
|
||
isRefresh: !!isRefresh
|
||
})
|
||
},
|
||
getStatistics() {
|
||
this.instance.post(`/app/appgeneralelectioninfo/statistics?id=${this.params.id}`).then(res=> {
|
||
if(res?.data) {
|
||
this.data = res.data
|
||
this.statistics = res.data.statistics
|
||
let xData = res.data.statistics.map(e=> e.candidate_user_name)
|
||
let yData1 = res.data.statistics.map(e=> e.c1)
|
||
let yData2 = res.data.statistics.map(e=> e.c2)
|
||
let yData3 = res.data.statistics.map(e=> e.c3)
|
||
this.getStaBar(xData,yData1,yData2,yData3)
|
||
}
|
||
})
|
||
},
|
||
getStaBar(xData,yData1,yData2,yData3) {
|
||
let chartDom = document.getElementById('echarts-bar')
|
||
this.myChart = echarts.init(chartDom);
|
||
this.myChart.setOption({
|
||
dataZoom: [
|
||
{
|
||
type: "slider",
|
||
xAxisIndex: [0],
|
||
filterMode: "filter",
|
||
},
|
||
],
|
||
legend: {
|
||
data: ['支持', '反对', '弃票']
|
||
},
|
||
xAxis: {
|
||
type: 'category',
|
||
data: xData,
|
||
},
|
||
yAxis: {
|
||
type: 'value',
|
||
alignTicks: true,
|
||
},
|
||
series: [ // 支持、反对、弃票
|
||
{
|
||
name: '支持',
|
||
data: yData1,
|
||
type: 'bar',
|
||
|
||
showBackground: true,
|
||
backgroundStyle: {
|
||
color: 'rgba(180, 180, 180, 0.2)'
|
||
},
|
||
barWidth: 22,
|
||
barGap: '20%',
|
||
},
|
||
{
|
||
name: '反对',
|
||
data: yData2,
|
||
type: 'bar',
|
||
|
||
showBackground: true,
|
||
backgroundStyle: {
|
||
color: 'rgba(180, 180, 180, 0.2)'
|
||
},
|
||
barWidth: 22,
|
||
barGap: '20%',
|
||
},
|
||
{
|
||
name: '弃票',
|
||
data: yData3,
|
||
type: 'bar',
|
||
|
||
showBackground: true,
|
||
backgroundStyle: {
|
||
color: 'rgba(180, 180, 180, 0.2)'
|
||
},
|
||
barWidth: 22,
|
||
barGap: '20%',
|
||
}
|
||
]
|
||
})
|
||
}
|
||
},
|
||
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.Statistics {
|
||
.basicinfo-box {
|
||
display: flex;
|
||
margin: 20px 0;
|
||
div {
|
||
flex: 1;
|
||
}
|
||
}
|
||
.echarts-box {
|
||
// width: 100%;
|
||
|
||
#echarts-bar {
|
||
width: 1200px;
|
||
height: 400px;
|
||
}
|
||
}
|
||
}
|
||
</style> |