上海预案管理平台
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

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);
}
}