Files
hb_pqs_web/src/views/componentschild/areaview.vue
2025-01-09 19:02:44 +08:00

284 lines
7.6 KiB
Vue

<template>
<div ref="areaView" id="viewEcharts" style="width: 100%;"></div>
</template>
<script>
import { dicData } from "@/assets/commjs/dictypeData";
import { getAreaData } from "@/api/Tableabove";
import yan from "@/assets/commjs/color";
export default {
props: {
item: {
type: Object,
default: null,
},
item2: {
type: Object,
default: null,
},
height: {
type: Number,
default: null,
},
height2: {
type: Number,
default: null,
},
},
watch: {
height2(a, b) {
if (a == 24) {
this.$refs.areaView.style.height =
document.getElementById("conmentId").offsetHeight - 50 + "px";
} else {
return;
}
},
height(a, b) {
if (a == 6 || a == 8 || a == 9 || a == 16) {
setTimeout(() => {
let str = document.getElementById("areaview").style.height;
let strsec = str.split("p");
let height = parseInt(strsec) - 50 + "px";
this.$refs.areaView.style.height = height;
}, 200);
} else {
return;
}
},
},
data() {
return {
classificationData: [],
areaStatistics: [],
time: this.timefamt(),
formData: {
deptIndex: JSON.parse(window.sessionStorage.getItem("Info")).deptId,
monitorFlag: 2,
powerFlag: 2,
serverName: "event-boot",
searchBeginTime: "",
searchEndTime: "",
statisticalType: {},
timeFlag: 1,
},
};
},
created() {
this.getclassificationData();
this.queryData();
},
mounted() {
setTimeout(() => {
let str = document.getElementById("areaview").style.height;
let strsec = str.split("p");
let height = parseInt(strsec) - 50 + "px";
this.$refs.areaView.style.height = height;
}, 200);
},
methods: {
//获取统计类型
getclassificationData() {
var code = "Statistical_Type";
this.classificationData = dicData(code, ["Report_Type"]);
this.formData.statisticalType = this.classificationData[0];
},
queryData() {
this.formData.searchBeginTime = this.time[0];
this.formData.searchEndTime = this.time[1];
getAreaData(this.formData).then((res) => {
this.areaStatistics = res.data.areaStatistics.areaCalculation;
this.qualifiedechart();
});
},
timefamt() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
month = month > 9 ? month : "0" + month;
day = day < 10 ? "0" + day : day;
var arr = [];
var time1 = year + "-" + month + "-01";
arr.push(time1);
var time2 = year + "-" + month + "-" + day;
arr.push(time2);
return arr;
},
qualifiedechart() {
let echartsColor = JSON.parse(window.localStorage.echartsColor);
let echartsndArr = [];
let echartsArr = [];
this.areaStatistics.forEach((item) => {
echartsndArr.push(item.areaName);
echartsArr.push(item.frequency);
});
const echarts = require("echarts");
var myChartes = echarts.init(document.getElementById("viewEcharts"));
myChartes.clear();
//let echartsColor = JSON.parse(window.localStorage.echartsColor);
let option = {
title: {
text: "区域",
left: "center",
textStyle: {
color: "#fff",
fontSize: 16,
},
},
tooltip: {
//提示框组件
trigger: "axis",
axisPointer: {
type: "shadow",
label: {
color: "#fff",
fontSize: 16,
},
},
textStyle: {
color: "#fff",
fontStyle: "normal",
opacity: 0.35,
fontSize: 14,
},
backgroundColor: "rgba(0,0,0,0.35)",
borderWidth: 0,
formatter: function (params) {
// console.log(params);
var tips = "";
for (var i = 0; i < params.length; i++) {
if (params[i].value == 3.14159) {
tips += params[i].name + "<br/>";
tips += params[i].seriesName + ":暂无数据<br/>";
} else {
tips += params[i].name + "<br/>";
tips += params[i].seriesName + ":" + params[i].value + "<br/>";
}
}
return tips;
},
},
grid: yan.EchartObject.gridj,
dataZoom: yan.EchartObject.dataZoom,
color: echartsColor.FigureColor,
legend: {
data: ["暂降次数"],
itemWidth: 16,
itemHeight: 16,
right: 80,
itemGap: 28,
itemStyle: {
color: echartsColor.FigureColor[0],
},
textStyle: {
color: "#fff",
rich: {
a: {
verticalAlign: "middle",
},
},
padding: [2, 0, 0, 0], //[上、右、下、左]
},
},
xAxis: [
{
name: yan.EchartObject.area1,
type: "category",
data: echartsndArr,
axisLine: {
show: true,
lineStyle: {
color: "#fff",
},
symbol: ["none", "arrow"],
},
axisLabel: {
textStyle: {
fontFamily: yan.EchartObject.fontFamily,
color: "#fff",
fontSize: yan.EchartObject.xNamefontSize,
},
},
axisTick: {
alignWithLabel: true,
},
},
],
yAxis: [
{
type: "value",
name: yan.EchartObject.nuit2,
nameTextStyle: {
color: "#fff",
},
minInterval: 1,
axisLine: {
show: true,
lineStyle: {
color: "#fff",
},
},
axisLabel: {
textStyle: {
fontFamily:yan.EchartObject.fontFamily,
color: "#fff",
fontSize:yan.EchartObject.xNamefontSize
//fontSize:10
},
},
splitLine: {
lineStyle: {
// 使用深浅的间隔色
color: "#fff",
type: "dashed",
opacity: 0.5,
},
},
},
],
series: [
{
barMaxWidth: yan.EchartObject.barMaxWidth,
itemStyle: {
normal: {
//这里是颜色
color: function (params) {
// console.log(params,'1111111111111111111111');
if (params.data == 3.14159) {
return echartsColor.FigureColor[9];
} else {
return echartsColor.FigureColor[0];
}
},
},
// color: echartsColor.FigureColor[0],
},
name: "暂降次数",
type: "bar",
data: echartsArr,
},
],
};
myChartes.setOption(option)
window.echartsArr.push(myChartes);
setTimeout(() => {
myChartes.resize();
}, 100);
this.loadingd = false;
let _this = this;
_this.$erd.listenTo(_this.$refs.areaView, (element) => {
_this.$nextTick(() => {
myChartes.resize();
});
});
window.onresize = function () {
myChartes.resize();
};
},
},
};
</script>