cma_search/client/src/views/supervisionNew/statisticsGroup.vue

384 lines
18 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-card>
<el-row :gutter="6">
<el-date-picker
v-model="listQuery.task2__year"
type="year"
placeholder="选择年"
value-format="yyyy"
style="width:200px"
>
</el-date-picker>
<el-button
class="filter-item"
type="primary"
icon="el-icon-search"
@click="handleFilter"
>查看</el-button>
<el-button
type="primary"
@click="handlePrint"
>打印</el-button
>
</el-row>
</el-card>
<el-card style="margin-top:10px">
<div ref="print" id="myReport" class="printContainer">
<h3 style="text-align: center;">{{ fileName }}</h3>
<p v-if="fileName!==''" style="text-align: center;">{{ listQuery.task2__year }} </p>
<!-- 5个目标值 -->
<el-row id="echartsContainer">
<el-col class="chartsWrap" style="">
<div id="main" style="width:1800px;height:300px;margin-left: 10px;"></div>
</el-col>
<el-col class="chartsWrap" style="">
<div id="main2" style="width:1800px;height:300px;margin-left: 10px;"></div>
</el-col>
<el-col class="chartsWrap" style="">
<div id="main3" style="width:1800px;height:300px;margin-left: 10px;"></div>
</el-col>
<el-col class="chartsWrap" style="">
<div id="main4" style="width:1800px;height:300px;margin-left: 10px;"></div>
</el-col>
</el-row>
</div>
</el-card>
</div>
</template>
<script>
import { getTask2Do } from "@/api/task";
import { getOrgList, getSubOrgList } from "@/api/org";
import checkPermission from "@/utils/permission";
import * as echarts from 'echarts';
export default {
data() {
return {
timeStamp:0,
listQuery:{
task2__year:'',
page:0
},
xaxis:[],
deptName:'',
fileName:'',
};
},
mounted() {
this.getGroup();
},
methods: {
// handleFilter(){
// let that = this;
// if(that.listQuery.belong_dept!==''){
// if(that.listQuery.task2__year!==''){
// that.bar1Data = [];
// that.bar2Data = [];
// that.line1Data = [];
// that.line2Data = [];
// that.line3Data = [];
// that.line4Data = [];
// that.fileName = that.deptName;
// that.tableData1 = [];
// that.tableDatas = [ [],[],[],[],[],[],[],[],[],[],[],[],[]];
// getTask2Do(that.listQuery).then(res=>{
// let data = res.data.filter(item=>{
// return item.task2_.type==20
// });
// data.forEach(element => {
// let obj = element;
// if(element.num_issue!==null&&element.num_error!==null&&element.num_issue!==0){
// let rate1 = ((element.num_issue-element.num_error)/element.num_issue).toFixed(4)
// obj.rate1 = Number(rate1)*100
// }else{
// obj.rate1 = ''
// }
// if(element.num_expect!==null&&element.num_issue!==null&&element.num_expect!==0){
// let rate2 = (element.num_issue/element.num_expect).toFixed(4)
// obj.rate2 = Number(rate2)*100
// }
// else{
// obj.rate2 = ''
// }
// if(element.num_pt!==null&&element.num_pt_10!==null&&element.num_pt!==0){
// let rate3 = (element.num_pt_10/element.num_pt).toFixed(4)
// obj.rate3 = Number(rate3)*100
// }
// else{
// obj.rate3 = ''
// }
// if(element.num_complaint!==null&&element.num_complaint_10!==null&&element.num_complaint!==0){
// let rate4 = (element.num_complaint_10/element.num_complaint).toFixed(4)
// obj.rate4 = Number(rate4)*100
// }
// else{
// obj.rate4 = ''
// }
// let ind = element.task2_.cycle-1;
// that.tableData1[ind] = obj;
// });
// for (let i = 0; i < that.tableData1.length; i++) {
// let item = that.tableData1[i];
// if(item!==undefined){
// for(let j = 0; j < that.tableDatas.length; j++){
// that.tableDatas[j][i] =
// j==0?item.num_acc:
// j==1?item.num_issue:
// j==2?item.num_error:
// j==3?item.rate1:
// j==4?item.num_expect:
// j==5?item.num_issue:
// j==6?item.rate2:
// j==7?item.num_pt:
// j==8?item.num_pt_10:
// j==9?item.rate3:
// j==10?item.num_complaint:
// j==11?item.num_complaint_10:
// item.rate4;
// }
// }
// }
// that.timeStamp++;
// for(let k=0;k<that.tableDatas.length;k++){
// let num = 0;
// let num1 = that.tableDatas[k][0]?that.tableDatas[k][0]:0;
// let num2 = that.tableDatas[k][1]?that.tableDatas[k][1]:0;
// let num3 = that.tableDatas[k][2]?that.tableDatas[k][2]:0;
// let num4 = that.tableDatas[k][3]?that.tableDatas[k][3]:0;
// let num5 = that.tableDatas[k][4]?that.tableDatas[k][4]:0;
// let num6 = that.tableDatas[k][5]?that.tableDatas[k][5]:0;
// if(k==3){
// num = ((that.tableDatas[1][7]-that.tableDatas[2][7])/that.tableDatas[1][7]).toFixed(4)
// }else if(k==6){
// num = (that.tableDatas[5][7]/that.tableDatas[4][7]).toFixed(4)
// }else if(k==9){
// num =(that.tableDatas[8][7]/that.tableDatas[7][7]).toFixed(4)
// }else if(k==12){
// num = (that.tableDatas[11][7]/that.tableDatas[10][7]).toFixed(4)
// }else{
// num = Number(num1)+Number(num2)+Number(num3)+Number(num4)+Number(num5)+Number(num6);
// }
// if(num!=='NaN'&&num!==NaN){
// if(k==3||k==6||k==9||k==12){
// // debugger;
// console.log(parseFloat((Number(num)*100)))
// // parseFloat((Number(num)*100).toPrecision(12))
// let numbe = parseFloat((Number(num)*100).toPrecision(12));
// that.tableDatas[k][7] = numbe;
// }else{
// that.tableDatas[k][7] = num;
// }
// }else{
// that.tableDatas[k][7] = ''
// }
// }
// for(let i=0;i<6;i++){
// if(that.tableDatas[1][i]!==undefined){
// that.bar1Data.push(Number(that.tableDatas[1][i]))
// }else{
// that.bar1Data.push(0)
// }
// if(that.tableDatas[4][i]!==undefined){
// that.bar2Data.push(Number(that.tableDatas[4][i]))
// }else{
// that.bar2Data.push(0)
// }
// if(that.tableDatas[3][i]!==undefined){
// that.line1Data.push(Number(that.tableDatas[3][i]))
// }else{
// that.line1Data.push(0)
// }
// if(that.tableDatas[6][i]!==undefined){
// that.line2Data.push(Number(that.tableDatas[6][i]))
// }else{
// that.line2Data.push(0)
// }
// if(that.tableDatas[9][i]!==undefined){
// that.line3Data.push(Number(that.tableDatas[9][i]))
// }else{
// that.line3Data.push(0)
// }
// if(that.tableDatas[12][i]!==undefined){
// that.line4Data.push(Number(that.tableDatas[12][i]))
// }else{
// that.line4Data.push(0)
// }
// }
// that.bar1Option.series[0].data = that.bar1Data;
// that.bar2Option.series[0].data = that.bar2Data;
// that.line1Option.series[0].data = that.line1Data;
// that.line2Option.series[0].data = that.line2Data;
// that.line3Option.series[0].data = that.line3Data;
// that.line4Option.series[0].data = that.line4Data;
// that.barChart1.clear();
// that.barChart1.setOption(that.bar1Option);
// that.barChart2.clear();
// that.barChart2.setOption(that.bar2Option);
// that.lineChart1.clear();
// that.lineChart1.setOption(that.line1Option);
// that.lineChart2.clear();
// that.lineChart2.setOption(that.line2Option);
// that.lineChart3.clear();
// that.lineChart3.setOption(that.line3Option);
// that.lineChart4.clear();
// that.lineChart4.setOption(that.line4Option);
// })
// }else{
// this.$message.warning('请选择时间')
// }
// }else{
// this.$message.warning('请选择部门')
// }
// },
handlePrint() {
this.$PRINT('#myReport');
},
setOption(){
var myChart = echarts.init(document.getElementById('main'));
var myChart2 = echarts.init(document.getElementById('main2'));
var myChart3 = echarts.init(document.getElementById('main3'));
var myChart4 = echarts.init(document.getElementById('main4'));
var option = {
tooltip: {
trigger:"axis",
axisPointer: {
type: 'shadow'
},
formatter:"{a1}<br/>{b1}{c1}%"
},
legend: {
data:['目标值']
},
grid: {
left: '2%',
right: '2%',
bottom: '10%',
top: '2%',
containLabel: true
},
xAxis: {
axisLabel: {
interval: 'auto',
rotate: 80 //设置倾斜角度数值 可设置 正负 两种
},
type: 'category',
data: this.xaxis,
},
color:['#91cc75','#438af4'],
yAxis: {
axisLabel:{
formatter:"{value}%"
}
},
series: [
{
name: '',
type: 'bar',
z:"-1",
barGap: '-100%',
barWidth:10,
data: [100, 100, 100, 100, 100, 100],
markLine : {
symbol:"none",
label: {
position: "end", //将警示值放在哪个位置三个值start,"middle","end" 开始 中点 结束
},
data : [{
silent:false, //鼠标悬停事件 true没有false有
lineStyle:{ //警戒线的样式 虚实 颜色
type:"solid",
color:"#ffb4b4",
},
label:{
position:'end',
formatter:"目标(90)",
color:"#ffb4b4",
fontSize:'8'
},
yAxis:90 // 警戒线的标注值可以有多个yAxis,多条警示线 或者采用 {type : 'average', name: '平均值'}type值有 max min average分为最大最小平均值
}]
}
},
{
name: '及时率',
type: 'bar',
barWidth:10,
data: [95, 92, 96, 90, 91, 98]
}
],
};
// 使用刚指定的配置项和数据显示图表
myChart.setOption(option);
myChart2.setOption(option);
myChart3.setOption(option);
myChart4.setOption(option);
},
checkPermission,
getGroup() {
if (this.checkPermission(["record_confirm"])) {
getOrgList({ can_supervision: true }).then((res) => {
let data = res.data,xaxis = [];
let arr = data.filter(item=>{
return item.type==26||item.type==28
})
arr.forEach(item=>{
xaxis.push(item.name)
})
this.orgData = arr;
this.xaxis = xaxis;
this.setOption();
});
} else {
getSubOrgList().then((res) => {
let data = res.data,xaxis = [];
let arr = data.filter(item=>{
return item.type==26||item.type==28
})
arr.forEach(item=>{
xaxis.push(item.name)
})
this.orgData = arr;
this.xaxis = xaxis;
this.setOption();
});
}
},
}
};
</script>
<style>
.printContainer{
/* width: 1075px; */
}
#numTable,#echartsContainer{
/* margin-left: 37px; */
width: 100%;
}
#numTable td{
height: 32px;
padding-left: 5px;
}
.numCell{
width: 80px;
}
.numCell.numCell_last{
width: 100px;
}
#echartsContainer{
margin-top: 30px;
}
.chartsWrap{
/* margin-top: 30px; */
/* padding-top: 50px; */
width: 100%;
overflow-x: scroll;
border-top: 1px solid #eeeeee;
}
</style>