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

718 lines
20 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-select
v-model="listQuery.dept"
placeholder="报送部门"
clearable
@change="handleFilter"
>
<el-option
v-for="item in orgData"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
<el-date-picker
v-model="listQuery.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">
<el-table
ref="tableRef"
:data="tableData"
class="tableStyle"
:header-cell-style="handerMethod"
:span-method="objectSpanMethod"
border
>
<el-table-column label="统计周期" width="180" prop="type"></el-table-column>
<el-table-column label="统计周期" width="180" prop="title"></el-table-column>
<el-table-column prop="first" label="1-2月"></el-table-column>
<el-table-column prop="seconde" label="3-4月"></el-table-column>
<el-table-column prop="third" label="5-6月"></el-table-column>
<el-table-column prop="fouth" label="7-8月"></el-table-column>
<el-table-column prop="fifth" label="9-10月"></el-table-column>
<el-table-column prop="sixth" label="11-12月"></el-table-column>
<el-table-column prop="all" label="年度"></el-table-column>
</el-table>
<!-- <table border="1" width="1000" cellspacing="0">
<thead >
<tr>
<th colspan="2">统计周期</th>
<th>1-2</th>
<th>3-4</th>
<th>5-6</th>
<th>7-8</th>
<th>9-10</th>
<th>11-12</th>
<th>年度</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2">重大质量事故</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td rowspan="3">报告/证书合格率</td>
<td>已发放报告/证书数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>不准确报告/证书数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>报告/证书合格率</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td rowspan="3">报告/证书及时率</td>
<td>应发报告/证书数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>实际按时完成报告/证书数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>报告/证书及时率</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td rowspan="3">能力验证满意率</td>
<td>全部获结果参数数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>满意结果参数数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>能力验证满意率</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td rowspan="3">客户投诉处理满意率</td>
<td>全部已处理投诉数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>获满意结果的投诉数量</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>客户投诉处理满意率</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
</tbody>
</table> -->
<el-row>
<el-col :span="12">
<div id="bar1" style="width:500px;height:400px;margin-top: 50px;"></div>
</el-col>
<el-col :span="12">
<div id="bar2" style="width:500px;height:400px;margin-top: 50px;"></div>
</el-col>
<el-col :span="12">
<div id="lin1" style="width:500px;height:400px;margin-top: 50px;"></div>
</el-col>
<el-col :span="12">
<div id="lin2" style="width:500px;height:400px;margin-top: 50px;"></div>
</el-col>
<el-col :span="12">
<div id="lin3" style="width:500px;height:400px;margin-top: 50px;"></div>
</el-col>
<el-col :span="12">
<div id="lin4" style="width:500px;height:400px;margin-top: 50px;"></div>
</el-col>
</el-row>
</div>
</el-card>
</div>
</template>
<script>
import { getOrgList, getSubOrgList } from "@/api/org";
import checkPermission from "@/utils/permission";
import * as echarts from 'echarts'
export default {
data() {
return {
listQuery:{
dept:'',
year:''
},
tableData: [{
type:'重大质量事故',
title:'重大质量事故',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},{
type:'报告/证书合格率',
title:'已发放报告/证书数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},{
type:'报告/证书合格率',
title:'不准确报告/证书数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
}, {
type:'报告/证书合格率',
title:'报告/证书合格率',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
}, {
type:'报告/证书及时率',
title:'应发报告/证书数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},{
type:'报告/证书及时率',
title:'实际按时完成报告/证书数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
}, {
type:'报告/证书及时率',
title:'报告/证书及时率',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},
{
type:'能力验证满意率',
title:'全部获结果参数数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},{
type:'能力验证满意率',
title:'满意结果参数数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
}, {
type:'能力验证满意率',
title:'能力验证满意率',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},{
type:'客户投诉处理满意率',
title:'全部已处理投诉数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},{
type:'客户投诉处理满意率',
title:'获满意结果的投诉数量',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
}, {
type:'客户投诉处理满意率',
title:'客户投诉处理满意率',
first:'1',
seconde:'2',
third:'3',
fouth:'4',
fifth:'5',
sixth:'6',
all:'21'
},
],
orgData:[],
barChart1:null,
barchart2:null,
lineChart1:null,
lineChart2:null,
lineChart3:null,
lineChart4:null,
xAxisData:["1-2月","3-4月","5-6月","7-8月","9-10月","11-12月"],
};
},
mounted() {
this.getGroup();
this.getBarChart1();
this.getBarChart2();
this.getLineChart1();
this.getLineChart2();
this.getLineChart3();
this.getLineChart4();
},
methods: {
handlePrint() {
this.$PRINT('#myReport');
},
getBarChart1(){
let chartDom = document.getElementById('bar1');
this.barChart1 = echarts.init(chartDom);
let option = {
title:{
text:"已发放报告/证书数量"
},
xAxis:{
axisTick: {
show: false
},
data:this.xAxisData
},
yAxis:{},
series:[
{
name:"已发放报告/证书数量",
type:"bar",
data:[8,10,4,5,4,8]
}
]
}
this.barChart1.setOption(option);
},
getBarChart2(){
let chartDom = document.getElementById('bar2');
this.barChart2 = echarts.init(chartDom);
let option = {
title:{
text:"已发放报告/证书数量"
},
xAxis:{
axisTick: {
show: false
},
data:this.xAxisData
},
yAxis:{},
series:[
{
name:"已发放报告/证书数量",
type:"bar",
data:[8,10,4,5,4,8]
}
]
}
this.barChart2.setOption(option);
},
getLineChart1(){
let chartDom = document.getElementById('lin1');
this.lineChart1 = echarts.init(chartDom);
let option = {
title: {
text: '报告/证书合格率'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['报告/证书合格率']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
axisTick: {
show: false
},
splitLine: {
show: false,
},
type: 'category',
boundaryGap: false,
data: this.xAxisData
},
yAxis: {
type: 'value'
},
series: [
{
name: '报告/证书合格率',
type: 'line',
stack: 'Total',
data: [80, 99, 80, 96, 95, 97, 99]
}
]
};
this.lineChart1.setOption(option);
},
getLineChart2(){
let chartDom = document.getElementById('lin2');
this.lineChart2 = echarts.init(chartDom);
let option = {
title: {
text: '报告/证书合格率'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['报告/证书合格率']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
axisTick: {
show: false
},
splitLine: {
show: false,
},
type: 'category',
boundaryGap: false,
data: this.xAxisData
},
yAxis: {
type: 'value'
},
series: [
{
name: '报告/证书合格率',
type: 'line',
stack: 'Total',
data: [100, 99, 80, 96, 95, 97, 99]
}
]
};
this.lineChart2.setOption(option);
},
getLineChart3(){
let chartDom = document.getElementById('lin3');
this.lineChart3 = echarts.init(chartDom);
let option = {
title: {
text: '报告/证书合格率'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['报告/证书合格率']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
axisTick: {
show: false
},
splitLine: {
show: false,
},
type: 'category',
boundaryGap: false,
data: this.xAxisData
},
yAxis: {
type: 'value'
},
series: [
{
name: '报告/证书合格率',
type: 'line',
stack: 'Total',
data: [97, 99, 98.8, 98.9, 99, 99.9, 96]
}
]
};
this.lineChart3.setOption(option);
},
getLineChart4(){
let chartDom = document.getElementById('lin4');
this.lineChart4 = echarts.init(chartDom);
let option = {
title: {
text: '报告/证书合格率'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['报告/证书合格率']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
axisTick: {
show: false
},
splitLine: {
show: false,
},
type: 'category',
boundaryGap: false,
data: this.xAxisData
},
yAxis: {
type: 'value'
},
series: [
{
name: '报告/证书合格率',
type: 'line',
stack: 'Total',
data:[89, 99, 92, 96, 95, 97, 99]
}
]
};
this.lineChart4.setOption(option);
},
checkPermission,
getGroup() {
if (this.checkPermission(["record_confirm"])) {
getOrgList({ can_supervision: true }).then((res) => {
this.orgData = res.data;
});
} else {
getSubOrgList().then((res) => {
this.orgData = res.data;
});
}
},
//合并单位表头
handerMethod ({ row, column, rowIndex, columnIndex }) {
if (row[0].level == 1) {
//这里有个非常坑的bug 必须是row[0]=0 row[1]=2才会生效
row[0].colSpan = 0
row[1].colSpan = 2
if (columnIndex === 0) {
return { display: 'none' }
}
}
},
handleFilter(){},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
// console.log(row, column, rowIndex, columnIndex)
if (rowIndex==0) {
if(columnIndex==1){
return {
rowspan: 1,
colspan: 0,// 如果相等则将colspan设置为0
};
}else if(columnIndex==0){
return {
rowspan: 1,
colspan: 2,
};
}else{
return {
rowspan: 1,
colspan: 1,
};
}
}else{
if(columnIndex==0){
if(rowIndex==1||rowIndex==4||rowIndex==7||rowIndex==10){
return {
rowspan: 3,
colspan: 1,
}
}else{
return {
rowspan:0,
colspan:1,
}
}
}else{
return {
rowspan:1,
colspan:1,
}
}
}
},
}
};
</script>
<style>
.printContainer{
width: 1075px;
}
</style>