import { Component, OnInit, ViewChild } from '@angular/core'; import { Router,ActivatedRoute } from '@angular/router' import { PageZhongDuiDetailsComponent } from '../page-zhong-dui-details/page-zhong-dui-details.component'; import {EchartsDataService} from '../../echarts-data.service' declare var echarts: any; @Component({ selector: 'app-page-two-name', templateUrl: './page-two-name.component.html', styleUrls: ['./page-two-name.component.scss'] }) export class PageTwoNameComponent implements OnInit { constructor(private router:Router,private route:ActivatedRoute,public data:EchartsDataService) { } @ViewChild('zhongDuiChild') zhongDuiChild:PageZhongDuiDetailsComponent; //父组件中获得子组件的引用 ngOnInit(): void { setTimeout(() => { this.planState() this.planAdd() this.passPlanEchart() this.planMake() this.planBack() this.planAudit() }, 0); } axisLabel = { interval: 0, formatter:function(value) { var ret = "";//拼接加\n返回的类目项 var maxLength = 2;//每项显示文字个数 var valLength = value.length;//X轴类目项的文字个数 var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 if (rowN > 1)//如果类目项的文字大于3, { for (var i = 0; i < rowN; i++) { var temp = "";//每次截取的字符串 var start = i * maxLength;//开始截取的位置 var end = start + maxLength;//结束截取的位置 //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧 temp = value.substring(start, end) + "\n"; ret += temp; //凭借最终的字符串 } return ret; } else { return value; } } }//echarts两个字换行 topTextlabel = { show: true, // 开启显示 position: 'top', // 在上方显示 distance: 10, // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。 verticalAlign: 'middle', textStyle: { // 数值样式 color: 'black', fontSize: 12 } }//柱状图上方显示数值 zhiNameData = ["浦东支队","黄埔支队","徐汇支队","长宁支队","静安支队","普陀支队","虹口支队","杨浦支队","闵行支队","宝山支队","嘉定支队","松江支队","金山支队","崇明支队"] zhiNumData = [200,190,180,170,160,150,140,130,120,110,100,90,80,70] isTrue = true //预案新增统计 planAdd () { let _this = this var addEchart = echarts.init(document.getElementById('addEchart')); var option = { title: { text: "预案新增", left: "center", top: "15", textStyle: { fontSize: 23 } }, xAxis: { type: 'category', data: this.zhiNameData, axisLabel: this.axisLabel }, yAxis: { type: 'value' }, series: [{ data: this.zhiNumData, type: 'bar', showBackground: true, backgroundStyle: { color: 'rgba(220, 220, 220, 0.8)' }, barWidth :'28', label: this.topTextlabel }] }; addEchart.setOption(option); addEchart.on('click', function (params) { _this.data.statefulInspectionName = '预案新增' _this.isTrue = !_this.isTrue }); } //预案审核通过 passPlanEchart (){ let _this = this var passPlanEchart = echarts.init(document.getElementById('passPlanEchart')); var option = { title: { text: "预案审核通过", left: "center", top: "15", textStyle: { fontSize: 23 } }, xAxis: { type: 'category', data: this.zhiNameData, axisLabel: this.axisLabel }, yAxis: { type: 'value' }, series: [{ data: this.zhiNumData, type: 'bar', showBackground: true, backgroundStyle: { color: 'rgba(220, 220, 220, 0.8)' }, barWidth :'28', label: this.topTextlabel }] }; passPlanEchart.setOption(option); passPlanEchart.on('click', function (params) { _this.data.statefulInspectionName = '预案审核通过' _this.isTrue = !_this.isTrue }); } //预案编制 planMake (){ let _this = this var passMakeEchart = echarts.init(document.getElementById('planMake')); var option = { title: { text: "预案编制", left: "center", top: "15", textStyle: { fontSize: 23 } }, xAxis: { type: 'category', data: this.zhiNameData, axisLabel: this.axisLabel }, yAxis: { type: 'value' }, series: [{ data: this.zhiNumData, type: 'bar', showBackground: true, backgroundStyle: { color: 'rgba(220, 220, 220, 0.8)' }, barWidth :'28', label: this.topTextlabel }] }; passMakeEchart.setOption(option); passMakeEchart.on('click', function (params) { _this.data.statefulInspectionName = '预案编制' _this.isTrue = !_this.isTrue }); } //预案审核退回 planBack (){ let _this = this var passBackEchart = echarts.init(document.getElementById('planBack')); var option = { title: { text: "预案审核退回", left: "center", top: "15", textStyle: { fontSize: 23 } }, xAxis: { type: 'category', data: this.zhiNameData, axisLabel: this.axisLabel }, yAxis: { type: 'value' }, series: [{ data: this.zhiNumData, type: 'bar', showBackground: true, backgroundStyle: { color: 'rgba(220, 220, 220, 0.8)' }, barWidth :'28', label: this.topTextlabel }] }; passBackEchart.setOption(option); passBackEchart.on('click', function (params) { _this.data.statefulInspectionName = '预案审核退回' _this.isTrue = !_this.isTrue }); } //预案审核中 planAudit (){ let _this = this var planAuditEchart = echarts.init(document.getElementById('planAudit')); var option = { title: { text: "预案审核中", left: "center", top: "15", textStyle: { fontSize: 23 } }, xAxis: { type: 'category', data: this.zhiNameData, axisLabel: this.axisLabel }, yAxis: { type: 'value' }, series: [{ data: this.zhiNumData, type: 'bar', showBackground: true, backgroundStyle: { color: 'rgba(220, 220, 220, 0.8)' }, barWidth :'28', label: this.topTextlabel }] }; planAuditEchart.setOption(option); planAuditEchart.on('click', function (params) { _this.data.statefulInspectionName = '预案审核中' _this.isTrue = !_this.isTrue }); } //预案状态统计 planState(){ var shuju='[{"name":"浦东支队","number":"23","zhanbi":"21%"},{"name":"浦东支队","number":"23","zhanbi":"21%"},{"name":"浦东支队","number":"23","zhanbi":"21%"},{"name":"浦东支队","number":"23","zhanbi":"21%"},{"name":"浦东支队","number":"23","zhanbi":"21%"}]'; var jsonObj = JSON.parse(shuju); var passPlanEchart = echarts.init(document.getElementById('pie')); var option = { title: { text: '预案状态统计(7005份)', left: 'center', top: "11%", textStyle: { fontSize: 23 } }, tooltip: { trigger: 'item', formatter: function (params){ var res = '
名称 | '; res+='数量 | ' res+='总占比 | ' res+=''+jsonObj[i].name+' | ' res+=''+jsonObj[i].number+' | ' res+=''+jsonObj[i].zhanbi+' | ' } res+='