factory_web/src/views/enm_energy/month_base.vue

528 lines
12 KiB
Vue

<!-- 全厂电量统计 -->
<template>
<div class="app-container">
<el-header>
<div class="left-panel">
<el-date-picker
v-model="search_date"
type="year"
value-format="YYYY"
format="YYYY"
placeholder="年"
style="margin-right: 6px"
@change="dateChange"
/>
<el-button
type="primary"
icon="el-icon-search"
@click="dateChange"
></el-button>
<el-button
type="primary"
@click="exportExcel()"
:loading="exportLoading"
>导出xlsx
</el-button>
<el-button type="primary" @click="handlePrint">打印 </el-button>
</div>
</el-header>
<el-card style="margin-top: 5px">
<div class="printWrap">
<div ref="print" id="myReport" class="printContainer">
<table
border="1"
width="1600"
cellspacing="0"
:key="timeStamp"
id="myTable"
class="myTable"
>
<thead class="myTableHead">
<tr>
<th colspan="16">电量消耗月报表</th>
</tr>
<tr>
<th>工段</th>
<th>设备</th>
<th>单位</th>
<th v-for="item in 12" :key="item">
{{ item }}月
</th>
<th>本年合计</th>
</tr>
</thead>
<tr v-for="(item, index) in tableDatas" :key="index">
<td class="numCell" v-if="index == 0" rowspan="4">
{{ item[0] }}
</td>
<td
class="numCell"
v-else-if="index == 4"
rowspan="5"
>
{{ item[0] }}
</td>
<td
class="numCell"
v-else-if="index == 9"
rowspan="5"
>
{{ item[0] }}
</td>
<td
class="numCell"
v-else-if="index == 14"
rowspan="4"
>
{{ item[0] }}
</td>
<td
class="numCell"
v-else-if="index == 18"
rowspan="3"
>
{{ item[0] }}
</td>
<td
class="numCell"
v-else-if="index == 21"
rowspan="5"
>
{{ item[0] }}
</td>
<td
class="numCell"
v-else-if="
index == 26 || index == 27 || index == 28
"
>
{{ item[0] }}
</td>
<td class="numCell">{{ item[1] }}</td>
<td class="numCell">{{ item[2] }}</td>
<td
class="numCell"
v-for="month_item in months"
:key="month_item"
@click="itemClick(item, index)"
>
{{ item[2 + month_item] }}
</td>
<td class="numCell">{{ item[15] }}</td>
</tr>
</table>
</div>
</div>
</el-card>
<el-dialog v-model="itemVisible" :title="tableName">
<scEcharts
height="400px"
width="1033px"
:option="option"
></scEcharts>
<template #footer>
<slot name="footer"></slot>
</template>
</el-dialog>
</div>
</template>
<script>
import scEcharts from "@/components/scEcharts";
export default {
components: {
scEcharts,
},
data() {
return {
year: "",
month: "",
day: "",
search_date: "",
tableDatas: [
["石灰石破碎", "破碎机", "kw.h"], //0
["石灰石破碎", "堆取料机", "kw.h"],
["石灰石破碎", "低压变压器柜", "kw.h"],
["石灰石破碎", "石灰石破碎合计", "kw.h"],
["原料磨", "循环风机", "kw.h"],
["原料磨", "辊压机", "kw.h"],
["原料磨", "调配变压器", "kw.h"],
["原料磨", "低压变压器柜器", "kw.h"],
["原料磨", "原料磨系统合计", "kw.h"],
["回转窑", "尾排风机", "kw.h"],
["回转窑", "高温风机", "kw.h"],
["回转窑", "头排风机", "kw.h"],
["回转窑", "低压变压器柜", "kw.h"],
["回转窑", "回转窑烧成系统合计", "kw.h"],
["煤磨", "煤磨主电机", "kw.h"],
["煤磨", "煤磨排风机", "kw.h"],
["煤磨", "低压变压器柜", "kw.h"],
["煤磨", "煤磨系统合计", "kw.h"],
["余热发电", "余热发电量", "kw.h"],
["余热发电", "余热发电自用电量", "kw.h"],
["余热发电", "余热供电量", "kw.h"],
["空压机", "1#空压机", "kw.h"],
["空压机", "2#空压机", "kw.h"],
["空压机", "3#空压机", "kw.h"],
["空压机", "4#空压机", "kw.h"],
["空压机", "空压机合计", "kw.h"],
["富氧燃烧系统", "富氧燃烧耗电设备", "kw.h"],
["生产总耗电量", "生产部分总耗电", "kw.h"],
["全厂进线", "全厂耗电量", "kw.h"],
],
timeStamp: null,
itemVisible: false,
months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
tableName: "全厂电量月统计",
sourceData: {},
xAxisData: [],
option: {
title: {
text: "全厂电量月统计",
x: "center",
},
grid: {
top: "20%",
left: "3%",
right: "10%",
bottom: "5%",
containLabel: true,
},
legend: {
orient: "horizontal",
x: "right",
y: "10",
data: [],
},
xAxis: {
type: "category",
data: [
"1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月",
],
name: "时间",
nameTextStyle: {
fontWeight: 600,
fontSize: 14,
},
axisLine: {
lineStyle: {
color: "#3366CC",
},
},
axisLabel: {
rotate: 45,
interval: 0,
},
boundaryGap: false,
},
yAxis: {
type: "value",
name: "对象值",
nameTextStyle: {
fontWeight: 500,
fontSize: 14,
},
axisLine: {
lineStyle: {
color: "#3366CC",
},
},
},
tooltip: {
show: true,
trigger: "axis",
axisPointer: {
type: "cross",
axis: "auto",
snap: true,
},
showContent: true,
},
series: [
{
name: "",
data: [4, 1, 9, 2, 11, 3, 5, 7, 8, 10, 6, 12],
type: "line",
symbolSize: 8,
symbol: "circle",
smooth: 0.5,
itemStyle: {
normal: {
label: {
show: true,
},
lineStyle: {
width: 1,
type: "dotted",
color: "#3366CC",
},
},
},
},
],
},
};
},
mounted() {
let that = this;
var nowDate = new Date();
that.year = nowDate.getFullYear();
that.search_date = that.year + "";
that.timeStamp = nowDate.getTime();
let tableDatas = that.tableDatas;
for (let i = 0; i < tableDatas.length; i++) {
for (let j = 0; j < 12; j++) {
let k = 3 + j;
that.tableDatas[i][k] = 0;
this.$forceUpdate();
}
}
this.getData();
},
methods: {
dateChange() {
let that = this;
for (let i = 0; i < that.tableDatas.length; i++) {
for (let j = 0; j < 13; j++) {
let k = 3 + j;
that.tableDatas[i][k] = 0;
this.$forceUpdate();
}
}
let nowDate = new Date();
that.timeStamp = nowDate.getTime();
this.getData();
},
getData() {
let that = this;
function dataPush(name) {
let index = 0;
if (name == "破碎机") {
index = 0;
} else if (name == "堆取料机") {
index = 1;
} else if (name == "低压变压器柜") {
index = 2;
} else if (name == "循环风机") {
index = 4;
} else if (name == "调配变压器") {
index = 6;
} else if (name == "低压变压器柜器") {
index = 7;
} else if (name == "尾排风机") {
index = 9;
} else if (name == "高温风机") {
index = 10;
} else if (name == "头排风机") {
index = 11;
} else if (name == "煤磨主电机") {
index = 14;
} else if (name == "煤磨排风机") {
index = 15;
} else if (name == "低压变压器柜") {
index = 16;
} else if (name == "余热发电量") {
index = 18;
} else if (name == "余热发电自用电量") {
index = 19;
} else if (name == "1#空压机") {
index = 21;
} else if (name == "2#空压机") {
index = 22;
} else if (name == "3#空压机") {
index = 23;
} else if (name == "4#空压机") {
index = 24;
} else if (name == "富氧燃烧耗电设备") {
index = 26;
}
return index;
}
function sumNum(a, b, c, d) {
let sum = 0;
if (typeof a !== "undefined" && a !== "NaN") {
sum = sum + Number(a);
}
if (typeof b !== "undefined" && a !== "NaN") {
sum = sum + Number(b);
}
if (typeof c !== "undefined" && a !== "NaN") {
sum = sum + Number(c);
}
if (typeof d !== "undefined" && a !== "NaN") {
sum = sum + Number(d);
}
return sum;
}
let obj = {};
obj.type = "month_s";
obj.year_s = that.year;
obj.page = 0;
obj.mpoint__ep_monitored__power_kw__gte = 100;
this.$API.enm.mpoint.stat
.req(obj)
.then((res) => {
let wrapArr = [],
innerArr = [];
res.forEach((item) => {
let month = item.month;
if (wrapArr[month]) {
wrapArr[month].push(item);
} else {
wrapArr[month] = [];
wrapArr[month].push(item);
}
});
wrapArr.forEach((inner, inde) => {
inner.forEach((item) => {
let i = dataPush(item.mpoint_name);
let k = 0;
if (
i == 0 ||
i == 4 ||
i == 9 ||
i == 14 ||
i == 18 ||
i == 21 ||
i == 26 ||
i == 27 ||
i == 28
) {
k = 3 + inde;
} else {
k = 2 + inde;
}
that.tableDatas[i][k] = item.val;
});
});
for (let k = 0; k < 24; k++) {
let m = k + 3;
let n = k + 1;
//石灰石破碎合计
that.tableDatas[3][m] = sumNum(
that.tableDatas[0][m],
that.tableDatas[1][m],
that.tableDatas[2][m]
);
//辊压机
// that.tableDatas[5][m] = sumNum();
//原料磨系统合计
that.tableDatas[8][m] =
sumNum(
that.tableDatas[4][m],
// that.tableDatas[5][m],
that.tableDatas[6][m],
that.tableDatas[7][m]
) -
sumNum(
that.tableDatas[1][m],
that.tableDatas[2][m]
);
//低压变压器柜
// that.tableDatas[12][m] = sumNum(
// that.tableDatas[9][m],
// that.tableDatas[10][m],
// that.tableDatas[11][m]
// );
//回转窑烧成系统合计
that.tableDatas[13][m] =
typeof that.tableDatas[12][m] !== "undefined"
? sumNum(
that.tableDatas[9][m],
that.tableDatas[10][m],
that.tableDatas[11][m],
that.tableDatas[12][m]
)
: sumNum(
that.tableDatas[9][m],
that.tableDatas[10][m],
that.tableDatas[11][m]
);
//煤磨系统合计
let sum17 = sumNum(
that.tableDatas[14][m],
that.tableDatas[15][m],
that.tableDatas[16][m]
);
that.tableDatas[17][m] =
typeof that.tableDatas[21][m] !== "undefined"
? sum17 - that.tableDatas[21][m]
: sum17;
//余热供电量
that.tableDatas[20][m] =
typeof that.tableDatas[19][m] !== "undefined"
? that.tableDatas[18][m] -
that.tableDatas[19][m]
: that.tableDatas[18][m];
//空压机合计
that.tableDatas[25][m] = sumNum(
that.tableDatas[21][m],
that.tableDatas[22][m],
that.tableDatas[23][m],
that.tableDatas[24][m]
);
//生产部分总耗电
that.tableDatas[27][m] = sumNum(
that.tableDatas[3][m],
that.tableDatas[8][m],
that.tableDatas[13][m],
that.tableDatas[17][m],
that.tableDatas[18][m],
that.tableDatas[25][m],
that.tableDatas[26][m]
);
//全厂耗电量
// that.tableDatas[28][m] = sumNum(
// that.tableDatas[27][m],
// that.tableDatas[26][m]
// );
}
that.tableDatas.forEach((inner, inde) => {
let sum15 = 0;
inner.forEach((num, ind) => {
if (ind > 2 && ind < 15) {
sum15 = sum15 + Number(num);
}
});
inner[15] = sum15;
});
})
.then(() => {});
},
itemClick(item, index) {
let that = this;
let lineData = that.tableDatas[index].slice(3, that.headerLength);
that.option.xAxis.data = that.xAxisData;
that.option.series[0].data = lineData;
this.itemVisible = true;
},
exportExcel() {
this.exportLoading = true;
this.$XLSX("#myTable", this.tableName);
this.exportLoading = false;
},
handlePrint() {
this.$PRINT("#myReport");
},
},
};
</script>
<style scoped>
.printWrap {
width: 100%;
overflow-x: scroll;
}
</style>