jhbigscreen/src/pages/components/MonitAndWarning.vue

174 lines
4.3 KiB
Vue
Raw Normal View History

2023-08-13 12:31:50 +08:00
<template>
2024-03-28 01:21:13 +08:00
<el-row :key="elKey">
<el-col :span="8">
<div class="time-study-value">
<p>今日预警数</p>
<div class="analyse-num">
<span>{{ todayCnt }}</span>
</div>
</div>
<div class="time-study-value">
<p>本周预警数</p>
<div class="analyse-num">
<span>{{ weekCnt }}</span>
</div>
</div>
</el-col>
<el-col :span="16">
<div class="survey-oil-title">
<div class="survey-oil-hr"></div>
<div class="survey-oil-text">预警类型</div>
<div
class="survey-oil-summary"
style="
position: absolute;
right: 0px;
top: 8px;
font-size: 15px;
padding: 0 15px;
background: #000b25;
"
>
<span style="font-weight: 800; color: red">未完成</span>/<span
style="color: #c0dafb"
>总数</span
>
</div>
</div>
<div class="analyse-number-max" id="afootOverflowType" style="height: unset">
<div
class="glr-login-number-max analyse-num-max"
v-for="(item, idx) in warningType"
style="height: unset"
:key="idx"
>
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe">
<div><img src="images/text_red_spot.png" />{{ item.name }}</div>
<div class="glr-rate-value glr-rate-red-value">
<span>{{ item.data }}/{{ item.total }}</span>
2023-08-13 12:31:50 +08:00
</div>
2024-03-28 01:21:13 +08:00
</div>
</div>
</div>
</el-col>
</el-row>
2023-08-13 12:31:50 +08:00
</template>
<script>
export default {
2024-03-28 01:21:13 +08:00
name: "JhbigscreenMonitAndWarning",
props: {
type: {
type: String,
default: "index",
2023-08-13 12:31:50 +08:00
},
2024-03-28 01:21:13 +08:00
},
data() {
return {
elKey: 0,
prjInfo: {},
deptInfo: {},
todayCnt: 0,
weekCnt: 0,
warningType: [
{
name: "AI预警",
data: 0,
total: 0,
},
{
name: "安全预警",
data: 0,
total: 0,
},
{
name: "质量预警",
data: 0,
total: 0,
},
],
};
},
mounted() {
this.$bus.$on("projectChange", (res) => {
this.prjInfo = res;
if (this.deptInfo.text) {
this.getMonitAndWarning();
}
});
this.$bus.$on("deptChange", (dept) => {
this.deptInfo = dept;
if (this.prjInfo.id) {
this.getMonitAndWarning();
}
});
},
created() {
this.init();
},
methods: {
init() {
this.getMonitAndWarning();
2023-08-13 12:31:50 +08:00
},
2024-03-28 01:21:13 +08:00
getMonitAndWarning() {
let prjId = 0;
if (this.type == "detail") {
prjId = this.prjInfo.id;
}
this.$api.problemmodify.getMonitAndWarning(this.deptInfo.id||0, prjId).then((d) => {
let tmps = d.data?.today || [];
let sum = 0;
tmps.forEach((it) => {
sum += it.total;
2023-08-13 12:31:50 +08:00
});
2024-03-28 01:21:13 +08:00
this.todayCnt = sum;
sum = 0;
tmps = d.data?.week || [];
tmps.forEach((it) => {
sum += it.total;
2023-08-13 12:31:50 +08:00
});
2024-03-28 01:21:13 +08:00
this.weekCnt = sum;
let data = 0;
sum = 0;
tmps = d.data?.group || [];
let objs = tmps.filter((it) => it.infotype == "0");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[1].data = data;
this.warningType[1].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "1");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[2].data = data;
this.warningType[2].total = sum;
data = 0;
sum = 0;
tmps = d.data?.group || [];
objs = tmps.filter((it) => it.infotype == "96");
objs.forEach((it) => {
sum += it.total;
if (it.checkState != "4") {
data += it.total;
}
});
this.warningType[0].data = data;
this.warningType[0].total = sum;
this.elKey++;
});
2023-08-13 12:31:50 +08:00
},
2024-03-28 01:21:13 +08:00
},
2023-08-13 12:31:50 +08:00
};
2024-03-28 01:21:13 +08:00
</script>