<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
|
} from '@/assets/js/realTime';
|
import {
|
Timeout
|
} from '@/assets/js/tools';
|
|
export default {
|
name: "",
|
|
data() {
|
return {
|
acTabs: "pcs",
|
timer: new Timeout(),
|
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.startTimer();
|
},
|
getBattGroupInfo(BattGroupId) {
|
// console.log(BattGroupId, 'battGroupId');
|
this.$apis.dataMager.battGroupMager
|
.getBattGroupInfo(BattGroupId)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
// console.log(rs, "rs");
|
if (rs.code == 1) {
|
this.leafClick(rs.data[0]);
|
} else {
|
this.$layer.msg("未获取到电池组的信息");
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
// 获取实时组端信息
|
realTimeGroup() {
|
let batt = this.batt;
|
if (!batt.BattGroupId) {
|
return;
|
}
|
this.$apis.storage
|
.getBattGrpState({BattGroupId: batt.BattGroupId})
|
.then((res) => {
|
res = JSON.parse(res.data.result);
|
// console.log(res, 'res real grp');
|
if (res.code) {
|
let list = [];
|
let data = res.data[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;
|
}
|
})
|
.catch((err) => {
|
console.error(err);
|
});
|
},
|
// 获取实时单体信息
|
realTimeSearch () {
|
let batt = this.batt;
|
if (!batt.BattGroupId) {
|
return;
|
}
|
realTimeSearch({BattGroupId: batt.BattGroupId}).then((res) => {
|
res = JSON.parse(res.data.result);
|
// console.log(res, 'res real');
|
if (res.code) {
|
let volList = [],
|
tmpList = [];
|
res.data.forEach((v) => {
|
volList.push({
|
text: '#' + v.mon_num,
|
val: v.mon_vol
|
});
|
tmpList.push({
|
text: '#' + v.mon_num,
|
val: v.mon_tmp
|
});
|
});
|
this.table_bts_tmp = tmpList;
|
this.table_bts_vol = volList;
|
}
|
}).catch((err) => {
|
console.error(err);
|
});
|
},
|
// 获取实时sys信息
|
getSysState() {
|
this.$apis.storage
|
.getSysState()
|
.then((res) => {
|
res = JSON.parse(res.data.result);
|
// console.log(res, "res sys");
|
let data = null;
|
let list = [];
|
if (res.code) {
|
data = res.data[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;
|
})
|
.catch((err) => {
|
console.error(err);
|
});
|
},
|
// 获取实时pcs信息
|
getPcsState() {
|
this.$apis.storage
|
.getPcsState()
|
.then((res) => {
|
res = JSON.parse(res.data.result);
|
// console.log(res, "pcs");
|
let data = null;
|
let list = [];
|
if (res.code) {
|
data = res.data[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;
|
}
|
})
|
.catch((err) => {
|
console.error(err);
|
});
|
},
|
loop () {
|
this.timer.start(() => {
|
this.getSysState();
|
this.getPcsState();
|
this.realTimeGroup();
|
this.realTimeSearch();
|
|
this.timer.open();
|
}, 1000);
|
}
|
},
|
|
mounted() {
|
let BattGroupId = this.$route.params.BattGroupId;
|
this.getBattGroupInfo(BattGroupId);
|
this.loop();
|
},
|
beforeDestroy () {
|
this.timer.stop();
|
}
|
};
|
</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>
|