You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
379 lines
11 KiB
379 lines
11 KiB
import { Component, OnInit } from "@angular/core"; |
|
import { Router, ActivatedRoute } from "@angular/router"; |
|
import { EchartsDataService } from "../../echarts-data.service"; |
|
import { MatSnackBarConfig, MatSnackBar } from "@angular/material/snack-bar"; |
|
import { DateAdapter } from "@angular/material/core"; |
|
declare var echarts: any; |
|
|
|
@Component({ |
|
selector: "app-page-there", |
|
templateUrl: "./page-there.component.html", |
|
styleUrls: ["./page-there.component.scss"], |
|
}) |
|
export class PageThereComponent implements OnInit { |
|
constructor( |
|
private router: Router, |
|
private activatedRoute: ActivatedRoute, |
|
public echartsData: EchartsDataService, |
|
public snackBar: MatSnackBar, |
|
private adapter: DateAdapter<any> |
|
) {} |
|
|
|
zhutu; //echarts实例 |
|
option; |
|
time: String; |
|
buildingTypeName: String; |
|
setTimeoutObj; //延时器需要清除 |
|
headtext: string; |
|
zhong: string; |
|
type; |
|
tabledata; |
|
organizationId = []; |
|
lastid; |
|
tid; |
|
|
|
ngOnDestroy(): void { |
|
if (!this.zhutu) { |
|
return; |
|
} |
|
this.zhutu.clear(); |
|
this.zhutu.dispose(); |
|
} |
|
|
|
ngOnInit(): void { |
|
if (sessionStorage.getItem("refresh") === "true") { |
|
sessionStorage.removeItem("refresh"); |
|
location.reload(); |
|
} |
|
if (window.matchMedia("(max-width: 1400px)").matches) { |
|
this.padHw = true; |
|
//this.padjt= |
|
} else { |
|
this.padHw = false; |
|
} |
|
this.dateInit(); |
|
let datayuex: string; |
|
this.activatedRoute.queryParams.subscribe((param) => { |
|
this.lastid = param.id; |
|
this.type = param.type; |
|
this.headtext = param.headtext; |
|
datayuex = param.level; |
|
this.zhong = param.zhong; |
|
this.headName = datayuex + this.headtext; |
|
this.tid = param.tid; |
|
this.pieonetype = param.pieonetype; |
|
if (this.headtext == "二维预案") { |
|
this.planType = 1; |
|
} else if (this.headtext == "三维预案") { |
|
this.planType = 2; |
|
} else if (this.headtext == "其他预案") { |
|
this.planType = 4; |
|
} else if (this.headtext == "文本预案") { |
|
this.planType = 16; |
|
} |
|
//console.log(headName) |
|
}); |
|
|
|
window.setTimeout(() => { |
|
this.getechartsdata(); |
|
}); |
|
} |
|
pieonetype; //判断是级别还是类型,上个页面传过来的参数 |
|
planType; //预案类型 |
|
padHw; |
|
headName; |
|
selectType: string = "month"; //选择当前的 查询类型 按月/年 |
|
async getechartsdata() { |
|
let paramdata; /* ={ |
|
planStatus:this.tid=='pieone'?'': this.type, |
|
PlanCategory:this.tid=='pieone'&&this.pieonetype=='true'?this.type:'', |
|
OrganizationId:this.lastid, |
|
PlanType:this.tid=='pieone'&&this.pieonetype=='false'?this.planType:'' |
|
} */ |
|
if ( |
|
this.echartsData.planYear == undefined && |
|
this.echartsData.planMonth != undefined |
|
) { |
|
this.echartsData.planYear = new Date().getFullYear(); |
|
paramdata = { |
|
planStatus: this.tid == "pieone" ? "" : this.type, |
|
PlanCategory: |
|
this.tid == "pieone" && this.pieonetype == "true" ? this.type : "", |
|
OrganizationId: this.lastid, |
|
PlanType: |
|
this.tid == "pieone" && this.pieonetype == "false" |
|
? this.planType |
|
: "", |
|
TimeIntervalStart: |
|
this.echartsData.planYear + "-" + this.echartsData.planMonth, |
|
TimeIntervalEnd: |
|
this.echartsData.planYear + "-" + this.echartsData.planMonth, |
|
}; |
|
} else if ( |
|
this.echartsData.planYear == undefined && |
|
this.echartsData.planMonth == undefined |
|
) { |
|
paramdata = { |
|
planStatus: this.tid == "pieone" ? "" : this.type, |
|
PlanCategory: |
|
this.tid == "pieone" && this.pieonetype == "true" ? this.type : "", |
|
OrganizationId: this.lastid, |
|
PlanType: |
|
this.tid == "pieone" && this.pieonetype == "false" |
|
? this.planType |
|
: "", |
|
}; |
|
} else { |
|
paramdata = { |
|
planStatus: this.tid == "pieone" ? "" : this.type, |
|
PlanCategory: |
|
this.tid == "pieone" && this.pieonetype == "true" ? this.type : "", |
|
OrganizationId: this.lastid, |
|
PlanType: |
|
this.tid == "pieone" && this.pieonetype == "false" |
|
? this.planType |
|
: "", |
|
TimeIntervalStart: |
|
this.echartsData.planYear + "-" + this.echartsData.planMonth, |
|
TimeIntervalEnd: |
|
this.echartsData.planYear + "-" + this.echartsData.planMonth, |
|
}; |
|
} |
|
await this.echartsData.getData( |
|
paramdata, |
|
this.tid == "pieone" && this.pieonetype == "true" |
|
? "/api/StatisticsAnalysis/Plans/Category" |
|
: this.tid == "pieone" && this.pieonetype == "false" |
|
? "/api/StatisticsAnalysis/Plans/Type" |
|
: `/api/StatisticsAnalysis/Plans/Status` |
|
); |
|
this.tabledata = JSON.parse(JSON.stringify(this.echartsData.allDate)); |
|
// console.log(this.tabledata) |
|
for (var i = 0; i < this.tabledata[0].organizations.length; i++) { |
|
this.zhiNameData.push( |
|
this.tabledata[0].organizations[i].organizationName |
|
); |
|
this.zhiNumData.push(this.tabledata[0].organizations[i].count); |
|
this.organizationId.push( |
|
this.tabledata[0].organizations[i].organizationId |
|
); |
|
} |
|
this.tiaoshiPao = this.echartsData.qipao( |
|
this.tiaoshiPao, |
|
this.zhiNumData, |
|
this.zhiNameData |
|
); |
|
this.zhuzhuangtu(this.headName); |
|
} |
|
|
|
//查询数据 |
|
years: any = []; |
|
selectMonth: any = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; |
|
|
|
//日期初始化 |
|
dateInit() { |
|
let date = new Date().getFullYear(); |
|
for (let i = date; i >= date - 10; i--) { |
|
this.years.unshift(i); |
|
} |
|
// console.log(this.years) |
|
} |
|
|
|
selectOneYear: any = new Date().getFullYear(); //开始年份 |
|
selectStartMonth: any = 1; //开始月份 |
|
Submit(e) {} |
|
selectStartYear: any = new Date().getFullYear(); //开始年份 |
|
|
|
topTextlabel = { |
|
show: true, // 开启显示 |
|
position: "top", // 在上方显示 |
|
distance: 10, // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。 |
|
verticalAlign: "middle", |
|
textStyle: { |
|
// 数值样式 |
|
color: "black", |
|
fontSize: 12, |
|
}, |
|
}; //柱状图数值顶部显示 |
|
zhiNameData = []; |
|
zhiNumData = []; |
|
tiaoshiPao: any; |
|
//气泡提示数据获取 |
|
bianli() { |
|
var arrshuzu = "["; |
|
for (var i = 0; i < this.zhiNumData.length; i++) { |
|
arrshuzu += |
|
'{"value":' + |
|
this.zhiNumData[i] + |
|
',"coord":[' + |
|
i + |
|
"," + |
|
this.zhiNumData[i] + |
|
'],"name":' + |
|
'"' + |
|
this.zhiNameData[i] + |
|
'"' + |
|
"},"; |
|
} |
|
arrshuzu = arrshuzu.substring(0, arrshuzu.length - 1); |
|
arrshuzu += "]"; |
|
this.tiaoshiPao = JSON.parse(arrshuzu); |
|
//return tishiPao |
|
} |
|
date = [ |
|
"一月", |
|
"二月", |
|
"三月", |
|
"四月", |
|
"五月", |
|
"六月", |
|
"七月", |
|
"八月", |
|
"九月", |
|
]; |
|
dateNum = [270, 253, 244, 199, 189, 173, 160, 198, 200]; |
|
//返回 |
|
goBack() { |
|
//this.zhutu.clear() |
|
this.zhutu ? this.zhutu.dispose() : null; |
|
history.go(-1); |
|
this.echartsData.statefulInspectionToggle = true; |
|
} |
|
|
|
axisLabel = { |
|
interval: 0, |
|
//rotate:-30, |
|
textStyle: { |
|
fontSize: 15, |
|
color: "#000000", |
|
}, |
|
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两个字换行 |
|
/* 柱状图 */ |
|
zhuzhuangtu(headName: string) { |
|
var ec = echarts as any; |
|
this.zhutu = ec.init(document.getElementById("zhidui"), "walden"); |
|
this.option = { |
|
title: { |
|
text: headName + `总数(${this.tabledata[0].totalCount})`, |
|
left: "center", |
|
top: 0, |
|
//bottom: "540", |
|
textStyle: { |
|
fontSize: 30, |
|
}, |
|
}, |
|
grid: { |
|
top: this.padHw ? 90 : 110, |
|
containLabel: true, |
|
//bottom: 10 |
|
}, |
|
xAxis: { |
|
id: this.organizationId, |
|
type: "category", |
|
data: this.zhiNameData, |
|
axisLabel: this.axisLabel, |
|
}, |
|
yAxis: { |
|
type: "value", |
|
axisLabel: { |
|
textStyle: { |
|
fontSize: 18, |
|
color: "#000000", |
|
}, |
|
}, |
|
}, |
|
tooltip: { |
|
trigger: "item", |
|
formatter: (params) => { |
|
return this.echartsData.biaogeTishida(params); |
|
}, |
|
position: this.echartsData.tableTooltipNoShowq, |
|
/* backgroundColor:'rgba(255,255,255,1)', |
|
borderWidth:'1', |
|
borderRadius :'0' */ |
|
}, |
|
series: [ |
|
{ |
|
data: this.zhiNumData, |
|
type: "bar", |
|
markPoint: { |
|
symbolSize: [65, 65], |
|
data: this.tiaoshiPao, |
|
}, |
|
backgroundStyle: { |
|
color: "rgba(220, 220, 220, 0.8)", |
|
}, |
|
barWidth: "38", |
|
//label: this.topTextlabel |
|
}, |
|
], |
|
}; |
|
this.zhutu.getZr().on("click", (params) => { |
|
// console.log(params.name) |
|
const pointInPixel = [params.offsetX, params.offsetY]; |
|
if (this.zhutu.containPixel("grid", pointInPixel)) { |
|
let xIndex = this.zhutu.convertFromPixel({ seriesIndex: 0 }, [ |
|
params.offsetX, |
|
params.offsetY, |
|
])[0]; |
|
/*事件处理代码书写位置*/ |
|
this.echartsData.isQuery == false |
|
? (this.echartsData.planYear = this.option.xAxis.data[xIndex]) |
|
: this.echartsData.planYear == undefined; |
|
console.log(this.echartsData.planYear); |
|
if ( |
|
(this.echartsData.level == "0" || this.echartsData.level == "1") && |
|
this.tabledata[0].organizations[xIndex].subOrganizations.length >= 1 |
|
) { |
|
this.router.navigate(["/statisticanalysis/PageZhongDuiDetails"], { |
|
queryParams: { |
|
level: this.option.xAxis.data[xIndex], |
|
name: this.headtext, |
|
id: this.option.xAxis.id[xIndex], |
|
type: this.type, |
|
tid: this.tid, |
|
pieonetype: this.pieonetype, |
|
}, |
|
}); |
|
} else { |
|
this.router.navigate(["/statisticanalysis/AllPlan"], { |
|
queryParams: { |
|
xname: this.option.xAxis.data[xIndex], |
|
name: this.headtext, |
|
id: this.option.xAxis.id[xIndex], |
|
type: this.type, |
|
tid: this.tid, |
|
pieonetype: this.pieonetype, |
|
}, |
|
}); |
|
} |
|
} |
|
}); |
|
/* this.zhutu.on('click', (params) => { |
|
console.log(params) |
|
this.echartsData.statefulInspectionName =params.name; |
|
this.router.navigateByUrl(`/statisticanalysis/delete_one/delete_four`); |
|
}); */ |
|
this.zhutu.setOption(this.option); |
|
} |
|
}
|
|
|