<template>
|
<flex-layout direction="row" class="page-real-time" :no-bg="true">
|
<!-- 储能 -->
|
<content-box
|
style="margin-left: 4px; margin-right: 4px"
|
:title="battFullName"
|
>
|
<flex-layout :no-bg="true">
|
<div class="page-content">
|
<el-tabs
|
v-model="acTabs"
|
type="border-card"
|
class="flex-layout noborder"
|
@tab-click="tabClick"
|
>
|
<el-tab-pane label="pcs信息" class="" name="pcs">
|
<assemble-table :data="table_pcs" labels="属性,值" :len="3">
|
</assemble-table>
|
</el-tab-pane>
|
<el-tab-pane label="sys信息" class="" name="sys">
|
<assemble-table :data="table_sys" labels="属性,值" :len="3">
|
</assemble-table>
|
</el-tab-pane>
|
<!-- 组端 -->
|
<el-tab-pane label="组端" name="table_bts_grp">
|
<assemble-table :data="table_bts_grp" labels="属性,值" :len="3">
|
</assemble-table>
|
</el-tab-pane>
|
<!-- 单体温度 -->
|
<el-tab-pane label="单体温度" name="table_bts_tmp">
|
<assemble-table
|
:data="table_bts_tmp"
|
labels="单体编号,温度(℃)"
|
:len="3"
|
>
|
</assemble-table>
|
</el-tab-pane>
|
<!-- 单体电压 -->
|
<el-tab-pane
|
label="单体电压"
|
name="table_bts_vol"
|
class="el-table-wrapper"
|
>
|
<assemble-table
|
:data="table_bts_vol"
|
labels="单体编号,电压(V)"
|
:len="3"
|
>
|
</assemble-table>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
</flex-layout>
|
</content-box>
|
</flex-layout>
|
</template>
|
|
<script>
|
import ContentBox from "@/components/ContentBox";
|
import AssembleTable from "./components/AssembleTable";
|
import {
|
workModel,
|
sysState,
|
battState,
|
battGrpStats,
|
SYS,
|
PCS,
|
getAlarm,
|
dcAC1DevRun,
|
airCondState,
|
getState,
|
} from "@/assets/js/const/const_storage";
|
import {
|
realTimeSearch,
|
getBattGrpState,
|
getPcsState,
|
getSysState,
|
} from "./js/realTime";
|
import { Timeout } from "@/assets/js/tools";
|
import { getBattGroupInfo } from "@/views/dataMager/js/battGroupMager";
|
import createWs from "@/assets/js/websocket";
|
const WSMixin = createWs("RealTime");
|
|
import const_digit from "@/assets/js/const/const_digit";
|
const {
|
cap: CAP,
|
vol: VOL,
|
curr: CURR,
|
res: RES,
|
conduct: CONDUCT,
|
temp: TEMP,
|
hum: HUM,
|
} = const_digit;
|
|
export default {
|
name: "movingRingSystem",
|
mixins: [WSMixin],
|
data() {
|
return {
|
acTabs: "pcs",
|
batt: {},
|
table_pcs: [],
|
table_sys: [],
|
table_bts_grp: [],
|
table_bts_tmp: [],
|
table_bts_vol: [],
|
};
|
},
|
components: {
|
ContentBox,
|
AssembleTable,
|
},
|
watch: {
|
"$route.params.battGroupId"(battGroupId) {
|
this.$nextTick(() => {
|
this.getBattGroupInfo(battGroupId);
|
});
|
},
|
},
|
computed: {
|
battFullName() {
|
let batt = this.batt;
|
if (batt.stationName && batt.battGroupName) {
|
return batt.stationName + "-" + batt.battGroupName;
|
}
|
return "电池组全称";
|
},
|
},
|
methods: {
|
tabClick() {},
|
leafClick(data) {
|
this.batt = data;
|
// this.diagram.desc = "";
|
// this.realTimeAlarmss();
|
// // 开启循环请求
|
this.sendMessage();
|
},
|
getBattGroupInfo(battGroupId) {
|
// console.log(battGroupId, 'battGroupId');
|
getBattGroupInfo(battGroupId)
|
.then((res) => {
|
res = res.data;
|
if (res.code) {
|
this.leafClick(res.data[0]);
|
} else {
|
this.$layer.msg("未获取到电池组的信息");
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
// 获取实时组端信息
|
realTimeGroup(res) {
|
if (res) {
|
// console.log(res, 'res real grp');
|
// debugger;
|
if (res.code && res.data) {
|
let list = [];
|
let data = res.data2.list[0];
|
Object.keys(battGrpStats).forEach((v) => {
|
let val,
|
details = null;
|
switch (v) {
|
case "battState":
|
val = battState[data[v]];
|
break;
|
case "diState":
|
case "doState":
|
val = data[v];
|
details = getState(val, v);
|
break;
|
case "battAlm0":
|
case "battfault0":
|
case "battfault1":
|
val = data[v];
|
details = getAlarm(val, v);
|
break;
|
default:
|
val = data[v];
|
break;
|
}
|
list.push({
|
text: battGrpStats[v],
|
val,
|
details,
|
});
|
});
|
this.table_bts_grp = list;
|
}
|
}
|
},
|
// 获取实时单体信息
|
realTimeSearch(res) {
|
if (res) {
|
// console.log(res, 'res real');
|
if (res.code && res.data) {
|
let volList = [],
|
tmpList = [];
|
res.data2.list.forEach((v) => {
|
volList.push({
|
text: "#" + v.monNum,
|
val: v.monVol.toHold(VOL),
|
});
|
tmpList.push({
|
text: "#" + v.monNum,
|
val: v.monTmp.toHold(TEMP),
|
});
|
});
|
this.table_bts_tmp = tmpList;
|
this.table_bts_vol = volList;
|
}
|
}
|
},
|
// 获取实时sys信息
|
getSysState(res) {
|
if (res) {
|
// console.log(res, "res sys");
|
let data = null;
|
let list = [];
|
if (res.code && res.data) {
|
data = res.data2.list[0];
|
Object.keys(SYS).forEach((v) => {
|
let val,
|
details = null;
|
switch (v) {
|
case "sysState":
|
case "pcsState1":
|
case "pcsState2":
|
case "pcsState3":
|
case "pcsState4":
|
val = sysState[data[v]];
|
break;
|
case "workModel":
|
val = workModel[data[v]];
|
break;
|
case "sysAlm0":
|
case "sysAlm1":
|
case "sysAlm2":
|
case "sysAlm3":
|
case "sysFault0":
|
val = data[v];
|
details = getAlarm(val, v);
|
break;
|
case "airCondState1":
|
case "airCondState2":
|
val = airCondState[data[v]];
|
break;
|
default:
|
val = data[v];
|
break;
|
}
|
list.push({
|
text: SYS[v],
|
val,
|
details,
|
prop: v,
|
});
|
});
|
}
|
// console.log(list, 'sys list', data);
|
this.table_sys = list;
|
}
|
},
|
// 获取实时pcs信息
|
getPcsState(res) {
|
if (res) {
|
// console.log(res, "pcs");
|
let data = null;
|
let list = [];
|
if (res.code && res.data) {
|
data = res.data2.list[0];
|
Object.keys(PCS).forEach((v) => {
|
let val,
|
details = null;
|
switch (v) {
|
case "dcAC1DevRun":
|
case "dcAC2DevRun":
|
case "dcAC3DevRun":
|
case "dcAC4DevRun":
|
val = data[v];
|
details = dcAC1DevRun(val);
|
break;
|
case "dcAC1CompFault":
|
case "dcAC1EnvirFault":
|
case "dcAC1HardFault":
|
case "dcAC1TmpFault":
|
case "dcAC2CompFault":
|
case "dcAC2EnvirFault":
|
case "dcAC2HardFault":
|
case "dcAC2TmpFault":
|
case "dcAC3CompFault":
|
case "dcAC3EnvirFault":
|
case "dcAC3HardFault":
|
case "dcAC3TmpFault":
|
case "dcAC4CompFault":
|
case "dcAC4EnvirFault":
|
case "dcAC4HardFault":
|
case "dcAC4TmpFault":
|
val = data[v];
|
details = getAlarm(val, v);
|
break;
|
default:
|
val = data[v];
|
break;
|
}
|
list.push({
|
text: PCS[v],
|
val,
|
details,
|
prop: v,
|
});
|
});
|
this.table_pcs = list;
|
}
|
}
|
},
|
onWSOpen() {
|
this.sendMessage();
|
},
|
sendMessage() {
|
let batt = this.batt;
|
// console.log(batt, '=====batt');
|
if (!batt.battGroupId || !this.isWSOpen) {
|
return false;
|
}
|
let params = {
|
battGroupId: batt.battGroupId,
|
devId: batt.fbsdeviceId,
|
powerDeviceId: 0,
|
pageType: "enestorage",
|
};
|
// console.log("====", params, JSON.stringify(params));
|
this.SOCKET.send(JSON.stringify(params));
|
},
|
onWSMessage(res) {
|
res = JSON.parse(res.data);
|
let data = res.data.data;
|
// console.log(data, "=====data");
|
this.getSysState(data.ess3100Sys);
|
this.getPcsState(data.ess3100Pcs);
|
this.realTimeGroup(data.gts);
|
this.realTimeSearch(data.rtdata);
|
},
|
},
|
|
mounted() {
|
let battGroupId = this.$route.params.battGroupId;
|
this.getBattGroupInfo(battGroupId);
|
// this.loop();
|
},
|
};
|
</script>
|
|
<style scoped>
|
.page-content {
|
position: relative;
|
padding-top: 8px;
|
padding-bottom: 2px;
|
box-sizing: border-box;
|
height: 100%;
|
}
|
>>> .posA_full {
|
height: 100%;
|
}
|
>>> .assemble_table .el-table--border {
|
border: 0 none;
|
}
|
>>> .assemble_table .has-gutter th:nth-last-of-type(2),
|
>>> .assemble_table .has-gutter th:last-of-type,
|
>>> .assemble_table .el-table__row td:last-of-type {
|
border: 0 none;
|
}
|
</style>
|