<template>
|
<flex-layout direction="row" class="page-real-time" :no-bg="true">
|
<home-list
|
v-if="homeListShow"
|
slot="header"
|
@toggleChange="toggleChange"
|
@leaf-click="leafClick"
|
></home-list>
|
<content-box
|
style="margin-left: 4px; margin-right: 4px;"
|
:title="battFullName"
|
>
|
<div slot="box-tools" class="box-tools">
|
<el-tooltip
|
class="item"
|
effect="dark"
|
content="历史数据"
|
placement="bottom"
|
>
|
<i class="iconfont el-icon-jinru" @click="syncPage"></i>
|
</el-tooltip>
|
</div>
|
<div slot="box-tools" class="box-tools" style="right: 40px;">
|
<el-tooltip
|
class="item"
|
effect="dark"
|
content="历史实时数据"
|
placement="bottom"
|
>
|
<i
|
class="el-iconfont el-icon-s-marketing"
|
@click="historyRealTimeDataDialog.show = true"
|
></i>
|
</el-tooltip>
|
</div>
|
<div
|
slot="box-tools"
|
class="box-tools"
|
style="right: 72px;"
|
v-if="esVideoSn"
|
>
|
<el-tooltip
|
class="item"
|
effect="dark"
|
content="视频监控"
|
placement="bottom"
|
>
|
<i
|
class="el-iconfont el-icon-video-camera-solid"
|
@click="esVideoDialog = true"
|
></i>
|
</el-tooltip>
|
</div>
|
<!-- <div slot="box-tools" class="box-tools" style="right: 72px;">-->
|
<!-- <el-tooltip class="item" effect="dark" content="逆变信息" placement="bottom">-->
|
<!-- <i class="iconfont el-icon-icon-test" @click="nibian.show=true"></i>-->
|
<!-- </el-tooltip>-->
|
<!-- </div>-->
|
<flex-layout :no-bg="true">
|
<div class="content-header" slot="header" :model="inputs">
|
<div class="table-layout">
|
<div class="table-row">
|
<div class="table-cell text-right w80">电池状态:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.batt_state"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
<div class="table-cell text-right w80">端电压:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.group_online_vol"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
<div class="table-cell text-right w80">电池电流:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.group_curr"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
<div class="table-cell text-right w80">更新日期:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.rec_datetime"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell text-right w80">测试时长:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.batt_test_tlong"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
<div class="table-cell text-right w80">测试容量:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.batt_test_cap"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
<div class="table-cell text-right w80">剩余容量:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.batt_syrl_cap"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
<div class="table-cell text-right w80">续航时长:</div>
|
<div class="table-cell">
|
<el-input
|
:value="backInputs.sysc"
|
size="small"
|
:disabled="true"
|
></el-input>
|
</div>
|
</div>
|
</div>
|
</div>
|
<div class="page-content">
|
<div
|
class="page-content-tools"
|
v-if="control.show && isCanTest && isTestDev"
|
>
|
<el-popover placement="bottom" trigger="hover">
|
<div class="hdw-menu-list">
|
<ul>
|
<li class="hdw-menu-item" v-if="control.data.startTest.show">
|
<a
|
@click="dischargeDialog.show = true"
|
href="javascript:void(0);"
|
>启动测试</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="control.data.stopTest.show">
|
<a @click="stopTest" href="javascript:void(0);">停止测试</a>
|
</li>
|
<li class="hdw-menu-item" v-if="isSystemSet">
|
<a
|
@click="systemDialog.show = true"
|
href="javascript:void(0);"
|
>系统参数设置</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="isLithium">
|
<a @click="dcdcWorkDialog = true" href="javascript:void(0);"
|
>DCDC工作参数</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="isLithium">
|
<a @click="workPlanDialog = true" href="javascript:void(0);"
|
>削峰填谷计划</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="isShowJunHeng">
|
<a
|
@click="balanceControlDialog = true"
|
href="javascript:void(0);"
|
>均衡控制参数设置</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="control.data.clearWarn.show">
|
<a @click="clearWarn" href="javascript:void(0);"
|
>清除告警</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="control.data.startYH.show">
|
<a
|
@click="curingDialog.show = true"
|
href="javascript:void(0);"
|
>启动养护/除硫</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="control.data.stopYH.show">
|
<a
|
@click="stopCuringDialog.show = true"
|
href="javascript:void(0);"
|
>停止养护/除硫</a
|
>
|
</li>
|
<li
|
class="hdw-menu-item"
|
v-if="control.data.startOutlineYH.show"
|
>
|
<a
|
@click="outlineCuringDialog.show = true"
|
href="javascript:void(0);"
|
>启动离线养护</a
|
>
|
</li>
|
<li
|
class="hdw-menu-item"
|
v-if="control.data.stopOutlineYH.show"
|
>
|
<a href="javascript:void(0);" @click="stopOutLineCuring">停止离线养护</a>
|
</li>
|
<li class="hdw-menu-item" v-if="isRestartCircle">
|
<a
|
@click="restartPlanDialog.show = true"
|
href="javascript:void(0);"
|
>定期重启设备</a
|
>
|
</li>
|
<li class="hdw-menu-item" v-if="control.data.restart.show">
|
<a href="javascript:void(0);" @click="restartSystem"
|
>重启设备</a
|
>
|
</li>
|
</ul>
|
</div>
|
<button class="hdw-btn transparentBtn" slot="reference">
|
<span class="light-color">远程管理</span>
|
<i class="hdw-icon el-icon-caret-bottom"></i>
|
</button>
|
</el-popover>
|
</div>
|
<el-tabs
|
v-model="acTabs"
|
type="border-card"
|
class="flex-layout noborder"
|
@tab-click="tabClick"
|
>
|
<el-tab-pane key="eleLine" label="电路拓扑图" name="eleLine" v-if="pageConfig.eleLine && !isLd9">
|
<div style="position: absolute;top: 8px; left: 8px">
|
<science-box
|
style="position: relative"
|
no-header
|
v-show="stateListState && batt.FBSDeviceId"
|
>
|
<div class="hdw-state-list table-layout">
|
<div
|
v-for="state in showStateList"
|
:key="state.text"
|
class="table-row"
|
:class="state.type"
|
v-show="!state.notShow"
|
>
|
<div class="table-cell text-right">
|
<i
|
v-if="state.icon"
|
class="iconfont"
|
:class="state.icon"
|
></i
|
>{{ state.text }}
|
</div>
|
<div class="table-cell">
|
{{ state.value }}{{ state.unit }}
|
</div>
|
</div>
|
</div>
|
<table class="table-info-list" v-if="fodShow">
|
<thead>
|
<tr>
|
<td v-for="item in fodHeaders" :key="item.prop">
|
{{ item.label }}
|
</td>
|
</tr>
|
</thead>
|
<tbody>
|
<tr v-for="(fod, key) in fodData" :key="key">
|
<td v-for="(item, index) in fod" :key="index">
|
{{ fod[index] }}
|
</td>
|
</tr>
|
</tbody>
|
</table>
|
</science-box>
|
<science-box
|
style="position: relative; margin-top: 8px"
|
no-header
|
v-show="stateListState && batt.FBSDeviceId"
|
>
|
<div class="hdw-state-list table-layout">
|
<div
|
v-for="state in showHistoryStateList"
|
:key="state.text"
|
class="table-row"
|
:class="state.type"
|
v-show="!state.notShow"
|
>
|
<div class="table-cell text-right">
|
<i
|
v-if="state.icon"
|
class="iconfont"
|
:class="state.icon"
|
></i
|
>{{ state.text }}
|
</div>
|
<div class="table-cell">
|
{{ state.value }}{{ state.unit }}
|
</div>
|
</div>
|
</div>
|
</science-box>
|
<!-- 上次核容测试信息 -->
|
<science-box
|
style="position: relative; margin-top: 8px"
|
title="上一次核容测试信息"
|
v-show="stateListState && batt.FBSDeviceId"
|
>
|
<div class="hdw-state-list table-layout">
|
<div
|
v-for="state in lastCapacityTest.filter((item) => item.show)"
|
:key="state.text"
|
class="table-row"
|
:class="state.type"
|
>
|
<div class="table-cell text-right">
|
<i
|
v-if="state.icon"
|
class="iconfont"
|
:class="state.icon"
|
></i
|
>{{ state.text }}
|
</div>
|
<div class="table-cell">
|
{{ state.value }}{{ state.unit }}
|
</div>
|
</div>
|
</div>
|
</science-box>
|
</div>
|
<div style="position: absolute;top: 8px; left: 8px" v-if="isLithium" v-show="batt.FBSDeviceId">
|
<science-box
|
style="position: relative"
|
no-header>
|
<div class="hdw-state-list table-layout">
|
<div class="table-row">
|
<div class="table-cell text-right">设备状态:</div>
|
<div class="table-cell">{{ backInputs.batt_state }}</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell text-right">电池电流:</div>
|
<div class="table-cell">{{ backInputs.group_curr }}</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell text-right">测试容量:</div>
|
<div class="table-cell">{{ backInputs.batt_test_cap }}</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell text-right">剩余容量:</div>
|
<div class="table-cell">{{ backInputs.batt_syrl_cap }}</div>
|
</div>
|
</div>
|
</science-box>
|
</div>
|
<circuit-diagram
|
v-show="batt.FBSDeviceId"
|
:batt="batt"
|
:online-vol="inputs.online_vol"
|
:group-vol="inputs.group_vol"
|
:batt-curr="inputs.group_curr"
|
:dev-temp="diagram.temp"
|
:type="diagram.type"
|
:update="diagram.update"
|
:version="dev_version"
|
:contact-res="diagram.contactRes"
|
:drop-vol="diagram.dropVol"
|
:dev-type="diagram.devType"
|
></circuit-diagram>
|
</el-tab-pane>
|
<el-tab-pane
|
key="vol"
|
label="电压"
|
name="vol"
|
v-if="tabsConfig.vol && pageConfig.vol"
|
>
|
<bar-chart
|
ref="vol"
|
id="vol"
|
unit="V"
|
:show-tools="true"
|
@right-click="chartRightCLick"
|
></bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="res"
|
label="内阻"
|
name="res"
|
v-if="tabsConfig.res && pageConfig.res"
|
>
|
<bar-chart
|
ref="res"
|
id="res"
|
unit="mΩ"
|
:show-tools="true"
|
max-color="red"
|
min-color="green"
|
@right-click="chartRightCLick"
|
></bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="temp"
|
label="温度"
|
name="temp"
|
v-if="tabsConfig.temp && pageConfig.temp"
|
>
|
<bar-chart
|
ref="temp"
|
id="temp"
|
unit="℃"
|
:show-tools="true"
|
max-color="red"
|
min-color="green"
|
@right-click="chartRightCLick"
|
></bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="conduct"
|
label="电导"
|
name="conduct"
|
v-if="tabsConfig.conduct && pageConfig.conduct"
|
>
|
<bar-chart
|
ref="conduct"
|
id="conduct"
|
:show-tools="true"
|
@right-click="chartRightCLick"
|
></bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="monConnRes"
|
label="链接条阻值"
|
name="monConnRes"
|
v-if="tabsConfig.monConnRes && pageConfig.monConnRes">
|
<bar-chart
|
ref="monConnRes"
|
id="monConnRes"
|
unit="mΩ"
|
:show-tools="true"
|
@right-click="chartRightCLick"
|
></bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="curr"
|
label="均衡电流"
|
name="curr"
|
v-if="tabsConfig.curr && pageConfig.curr"
|
>
|
<bar-chart
|
ref="curr"
|
id="curr"
|
unit="A"
|
:show-tools="true"
|
@right-click="chartRightCLick"
|
>
|
</bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="leakVol"
|
label="漏液电压"
|
name="leakVol"
|
v-if="tabsConfig.leakVol && pageConfig.leakVol"
|
>
|
<bar-chart
|
ref="leakVol"
|
id="leakVol"
|
unit="V"
|
:show-tools="true"
|
@right-click="chartRightCLick"
|
></bar-chart>
|
</el-tab-pane>
|
<el-tab-pane
|
key="tblData"
|
label="数据表格"
|
name="tblData"
|
class="el-table-wrapper"
|
v-if="pageConfig.tblData"
|
>
|
<el-table stripe size="small" :data="table.datas" height="100%">
|
<el-table-column
|
v-for="header in table.headers"
|
:key="header.prop"
|
:prop="header.prop"
|
:label="header.label"
|
:width="header.width"
|
align="center"
|
></el-table-column>
|
</el-table>
|
</el-tab-pane>
|
<el-tab-pane
|
key="dianchigaojing"
|
label="电池告警"
|
name="dianchigaojing"
|
class="el-table-wrapper"
|
v-if="tabsConfig.dianchigaojing && pageConfig.dianchigaojing"
|
>
|
<div class="dianchigaojing">
|
<div class="borderBox box1">
|
<el-table
|
stripe
|
size="small"
|
:data="table1.datas"
|
height="100%"
|
>
|
<el-table-column
|
prop="battGroupId"
|
align="center"
|
label="电池组ID"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="recordTime"
|
align="center"
|
label="记录时间"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="groupVolAlarm"
|
align="center"
|
label="组电压告警"
|
>
|
<template slot-scope="scope">
|
<!-- <img :src="eleOffImg" class="lampImg" v-if="scope.row.groupVolAlarm==0">
|
<img :src="eleOffImg" class="lampImg" v-else> -->
|
<hdw-light :type="scope.row.groupVolAlarm"></hdw-light>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="testEndVol"
|
align="center"
|
label="测试终止电压"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="testEndCap"
|
align="center"
|
label="测试终止剩余容量"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="testTimeLong"
|
align="center"
|
label="测试终止时间(秒)"
|
>
|
</el-table-column>
|
</el-table>
|
</div>
|
<div class="borderBox box2">
|
<el-table
|
stripe
|
size="small"
|
:data="table2.datas"
|
height="100%"
|
>
|
<el-table-column
|
prop="battGroupId"
|
align="center"
|
label="电池组ID"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="recordTime"
|
align="center"
|
label="记录时间"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="monNum"
|
align="center"
|
label="单体编号"
|
>
|
</el-table-column>
|
<el-table-column
|
prop="monVolAlarm"
|
align="center"
|
label="单体电压告警"
|
>
|
<template slot-scope="scope">
|
<hdw-light :type="scope.row.monVolAlarm"></hdw-light>
|
<!-- <img :src="eleOffImg" class="lampImg" v-if="scope.row.monVolAlarm==0">
|
<img :src="eleOffImg" class="lampImg" v-else> -->
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="monTempAlarm"
|
align="center"
|
label="单体温度告警"
|
>
|
<template slot-scope="scope">
|
<!-- <img :src="eleOffImg" class="lampImg" v-if="scope.row.monTempAlarm==0">
|
<img :src="eleOffImg" class="lampImg" v-else> -->
|
<hdw-light :type="scope.row.monTempAlarm"></hdw-light>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="monResAlarm"
|
align="center"
|
label="单体内阻告警"
|
>
|
<template slot-scope="scope">
|
<!-- <img :src="eleOffImg" class="lampImg" v-if="scope.row.monResAlarm==0">
|
<img :src="eleOffImg" class="lampImg" v-else> -->
|
<hdw-light :type="scope.row.monResAlarm"></hdw-light>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="monRestCapAlarm"
|
align="center"
|
label="单体剩余容量告警"
|
>
|
<template slot-scope="scope">
|
<!-- <img :src="eleOffImg" class="lampImg"
|
v-if="scope.row.monRestCapAlarm==0">
|
<img :src="eleOffImg" class="lampImg" v-else> -->
|
<hdw-light
|
:type="scope.row.monRestCapAlarm"
|
></hdw-light>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
</el-tab-pane>
|
<el-tab-pane
|
key="niBianInfoTab"
|
label="逆变信息"
|
name="niBianInfoTab"
|
v-if="isNiBian && pageConfig.niBianInfoTab"
|
>
|
<ni-bian-info-tab
|
ref="niBianInfoTab"
|
:name="acTabs"
|
:devId="batt.FBSDeviceId"
|
:mask-show="maskShow"
|
>
|
</ni-bian-info-tab>
|
</el-tab-pane>
|
<el-tab-pane label="均衡供电" name="jggdInfoTab" v-if="isJhgd && pageConfig.jggdInfoTab">
|
<!-- <jggd-info-tab :devId="batt.FBSDeviceId"></jggd-info-tab> -->
|
<balance-supply-module
|
:devId="batt.FBSDeviceId"
|
:name="acTabs"
|
></balance-supply-module>
|
</el-tab-pane>
|
<el-tab-pane label="电价统计分析" name="elePrice" v-if="isLithium && pageConfig.elePrice">
|
<ele-price-tpl ref="elePriceTpl" :devId="batt.FBSDeviceId" :name="acTabs" :batt="batt"></ele-price-tpl>
|
</el-tab-pane>
|
<el-tab-pane label="BMS信息" name="bmsInfo" v-if="isLithium" v-show="false">
|
<bms-info ref="bmsInfo" :batt="batt" :real-update="acTabs=='bmsInfo'"></bms-info>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
</flex-layout>
|
</content-box>
|
<!-- 放电参数设置 -->
|
<el-dialog
|
:title="dischargeDialogTitle"
|
width="700px"
|
:visible.sync="dischargeDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<discharge-dialog-content
|
v-if="dischargeDialog.show"
|
:batt="batt"
|
@close="closeDisChargeDialog"
|
>
|
</discharge-dialog-content>
|
</el-dialog>
|
<!-- 系统参数设置 -->
|
<el-dialog
|
title="系统参数设置"
|
width="700px"
|
:visible.sync="systemDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<system-params v-if="systemDialog.show" :batt="batt"></system-params>
|
</el-dialog>
|
<!-- 除硫养护参数设置 -->
|
<el-dialog
|
title="除硫养护参数设置"
|
width="700px"
|
:visible.sync="curingDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<curing-params v-if="curingDialog.show" :batt="batt"></curing-params>
|
</el-dialog>
|
<!-- 离线养护参数设置 -->
|
<el-dialog
|
title="离线养护参数设置"
|
width="700px"
|
:visible.sync="outlineCuringDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<outline-curing-params
|
v-if="outlineCuringDialog.show"
|
:batt="batt"
|
></outline-curing-params>
|
</el-dialog>
|
<!-- 定期重启参数设置 -->
|
<el-dialog
|
title="定期重启参数设置"
|
width="700px"
|
:visible.sync="restartPlanDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<restart-plan-params
|
v-if="restartPlanDialog.show"
|
:batt="batt"
|
></restart-plan-params>
|
</el-dialog>
|
<!-- 实时历史数据 -->
|
<el-dialog
|
:title="histroyDataTitle"
|
width="1200px"
|
:visible.sync="historyRealTimeDataDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center no-bg"
|
:modal-append-to-body="false"
|
>
|
<history-realtime-data
|
:batt="batt"
|
v-if="historyRealTimeDataDialog.show"
|
></history-realtime-data>
|
</el-dialog>
|
<!-- 逆变信息 -->
|
<el-dialog
|
title="逆变信息"
|
width="600px"
|
:visible.sync="nibian.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<ni-bian v-if="nibian.show" :batt="batt"></ni-bian>
|
</el-dialog>
|
<!-- 停止养护除硫 -->
|
<el-dialog
|
title="停止养护除硫"
|
width="600px"
|
:visible.sync="stopCuringDialog.show"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<stop-curing v-if="stopCuringDialog.show" :batt="batt"></stop-curing>
|
</el-dialog>
|
<el-dialog
|
title="视频监控"
|
width="600px"
|
:visible.sync="esVideoDialog"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>
|
</el-dialog>
|
<el-dialog
|
title="历史内阻数据"
|
width="1200px"
|
:visible.sync="hisResDialog"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<history-res v-if="hisResDialog" :batt="batt"></history-res>
|
</el-dialog>
|
<!-- 均衡参数设置 -->
|
<el-dialog
|
title="均衡控制参数设置"
|
width="auto"
|
:visible.sync="balanceControlDialog"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<balance-control-params
|
v-if="balanceControlDialog"
|
:batt="batt"
|
></balance-control-params>
|
</el-dialog>
|
|
<!-- 均衡参数设置 -->
|
<el-dialog
|
title="DCDC工作参数设置"
|
width="auto"
|
:visible.sync="dcdcWorkDialog"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<dc-work-params
|
v-if="dcdcWorkDialog"
|
:visible.sync="dcdcWorkDialog"
|
:batt="batt"
|
></dc-work-params>
|
</el-dialog>
|
|
<!-- 锂电池削峰填谷 -->
|
<el-dialog
|
title="削峰填谷计划"
|
width="auto"
|
:visible.sync="workPlanDialog"
|
:close-on-click-modal="false"
|
top="0"
|
class="dialog-center"
|
:modal-append-to-body="false"
|
>
|
<work-plan
|
v-if="workPlanDialog"
|
:visible.sync="workPlanDialog"
|
:batt="batt"
|
></work-plan>
|
</el-dialog>
|
<right-menu
|
:visible.sync="rightMenu.show"
|
:x="rightMenu.x"
|
:y="rightMenu.y"
|
>
|
<div class="right-menu-list">
|
<ul>
|
<li>
|
<a href="javascript:;" @click="payAttentionMon">添加关注单体</a>
|
</li>
|
<li>
|
<a href="javascript:;" @click="hisResDialog = true"
|
>导出历史内阻数据</a
|
>
|
</li>
|
</ul>
|
</div>
|
</right-menu>
|
<stop-outline-curing :dev-id="batt.FBSDeviceId" :stop-time="stopTime"></stop-outline-curing>
|
</flex-layout>
|
</template>
|
|
<script>
|
import stopOutlineCuring from "@/components/params/stopOutlineCuring";
|
import ContentBox from "../../components/ContentBox";
|
import HomeList from "./HomeList";
|
import BarChart from "../../components/chart/BarChart";
|
import CircuitDiagram from "./CircuitDiagram";
|
import ScienceBox from "../../components/ScienceBox";
|
import DischargeDialogContent from "../../components/params/DischargeDialogContent";
|
import SystemParams from "@/components/params/SystemParams";
|
import CuringParams from "@/components/params/CuringParams";
|
import OutlineCuringParams from "@/components/params/OutlineCuringParams";
|
import RestartPlanParams from "@/components/params/RestartPlanParams";
|
import HistoryRealtimeData from "@/pages/dataTest/HistoryRealtimeData";
|
import RightMenu from "@/components/RightMenu";
|
import NiBian from "@/pages/dataTest/dialogs/NiBian";
|
import StopCuring from "@/pages/dataTest/dialogs/StopCuring";
|
import NiBianInfoTab from "@/pages/dataTest/components/NiBianInfoTab";
|
import balanceSupplyModule from "@/pages/dataTest/components/balance-supply-module";
|
import dcWorkParams from "@/pages/dataTest/dialogs/dcdc/workParams";
|
import {
|
realTimeNot,
|
realTimeAdd,
|
BattRtAlarmActionGetInfo,
|
BattRsAlarmActionGetInfo,
|
// realTimeXuHang,
|
realTimeSearch,
|
realTimeGroup,
|
realTimeAlarm,
|
realTimePowerOff,
|
realTimeLd9Data,
|
realTimeStateList,
|
inversionInfo,
|
} from "../../assets/js/realTime";
|
import {
|
getLastCapacityTest
|
} from "../../assets/js/history";
|
import {
|
formatSeconds,
|
sethoubeiTime,
|
Timeout,
|
regEquipType,
|
getBarNum,
|
GetMonomerCap,
|
GetHourRate,
|
isHasPermit,
|
getConduct,
|
} from "../../assets/js/tools";
|
|
import { const_61850, const_9100, const_ld_nine } from "../../assets/js/const";
|
import getMarkLineData from "@/components/chart/js/getMarkLineData";
|
import BarChartThreeD from "@/components/chart/BarChartThreeD";
|
import JggdInfoTab from "./components/jggdInfoTab.vue";
|
import HdwLight from "../dataMager/components/HdwLight.vue";
|
import EzVideo from "@/components/ezVideo";
|
import getDevType from "@/assets/js/tools/getDevType";
|
import historyRes from "@/pages/dataTest/components/historyRes";
|
import BalanceSupplyModule from "./components/balance-supply-module.vue";
|
import BalanceControlParams from "@/components/params/balance-control-params.vue";
|
import getTblHeader from "@/pages/dataTest/js/getTblHeader";
|
import lithiumInfo from "@/assets/js/tools/lithium";
|
import workPlan from "@/pages/dataTest/dialogs/dcdc/workPlan";
|
import ElePriceTpl from "@/pages/dataTest/components/elePriceTpl";
|
import BmsInfo from "@/pages/dataTest/components/bmsInfo";
|
|
/* import moment from "moment"; */
|
let vol, resChart, temp, conduct, currChart, leakVol, monConnRes;
|
let tblData = [];
|
export default {
|
components: {
|
stopOutlineCuring,
|
BmsInfo,
|
ElePriceTpl,
|
EzVideo,
|
//BarChartThreeD,
|
ContentBox,
|
HomeList,
|
BarChart,
|
CircuitDiagram,
|
ScienceBox,
|
DischargeDialogContent,
|
SystemParams,
|
CuringParams,
|
OutlineCuringParams,
|
RestartPlanParams,
|
HistoryRealtimeData,
|
RightMenu,
|
NiBian,
|
StopCuring,
|
NiBianInfoTab,
|
JggdInfoTab,
|
HdwLight,
|
historyRes,
|
// NiBianInfo,
|
balanceSupplyModule,
|
BalanceSupplyModule,
|
BalanceControlParams,
|
dcWorkParams,
|
workPlan,
|
},
|
watch: {
|
"$route.params.BattGroupId"(BattGroupId) {
|
this.$nextTick(() => {
|
this.getBattGroupInfo(BattGroupId);
|
});
|
},
|
isNiBian(val) {
|
if (!val && this.acTabs == "niBianInfoTab") {
|
this.acTabs = "eleLine";
|
}
|
},
|
"$store.state.theme.collapse"() {
|
this.$nextTick(() => {
|
this.resize();
|
});
|
},
|
"diagram.type"() {
|
let batt = this.batt;
|
this.getLastCapacityTest(batt);
|
}
|
},
|
data() {
|
let permits = this.$store.state.user.permits;
|
let isCanTest = isHasPermit("batt_test_op_permit", permits);
|
let stateList = const_61850.stateList;
|
let historyStateList = const_61850.historyStateList;
|
let lastCapacityTest = const_61850.lastCapacityTest;
|
let pageConfig = this.$store.getters["user/realTabsConfig"];
|
return {
|
workPlanDialog: false,
|
dcdcWorkDialog: false,
|
balanceControlDialog: false,
|
hisResDialog: false,
|
esVideoDialog: false,
|
esVideoSn: "",
|
maskShow: false,
|
eleOffImg: require("../../assets/images/eleOff.png"),
|
eleOnImg: require("../../assets/images/eleOn.png"),
|
isCanTest: isCanTest,
|
homeListShow: true,
|
dev_version: "",
|
username: sessionStorage.getItem("username"),
|
pageConfig: pageConfig,
|
stopTime: 0,
|
rightMenu: {
|
show: false,
|
x: 0,
|
y: 0,
|
xIndex: 0,
|
},
|
/* 电池状态 模块 组端展示 */
|
inputs: {
|
group_vol: 0 /* 端电压-组端电压 */,
|
online_vol: 0 /* 端电压-在线电压 */,
|
group_curr: 0 /* 电池电流 */,
|
batt_test_tlong: "0:00:00" /* 测试时长 */,
|
rec_datetime: 0 /* 更新日期 */,
|
batt_test_cap: 0 /* 测试容量 */,
|
batt_rest_cap: 0, // 剩余容量
|
batt_state: 0 /* 电池状态 */,
|
devTemperature: 0, // 环境温度
|
devHumidity: 0, // 环境湿度
|
},
|
acTabs: "eleLine",
|
table: {
|
headers: [
|
{
|
prop: "num1",
|
label: "单体编号",
|
width: "",
|
},
|
{
|
prop: "vol1",
|
label: "电压(V)",
|
width: "",
|
},
|
{
|
prop: "res1",
|
label: "内阻(mΩ)",
|
width: "",
|
},
|
{
|
prop: "temp1",
|
label: "温度(℃)",
|
width: "",
|
},
|
{
|
prop: "conduct1",
|
label: "电导",
|
width: "",
|
},
|
{
|
prop: "monConnRes",
|
label: "链接条阻值",
|
width: ""
|
},
|
{
|
prop: "curr1",
|
label: "均衡电流(A)",
|
width: "",
|
},
|
{
|
prop: "leakVol1",
|
label: "漏液电压(V)",
|
width: "",
|
},
|
],
|
datas: [
|
{
|
num1: 0,
|
vol1: 0,
|
res1: 0,
|
temp1: 0,
|
conduct1: 0,
|
curr1: 0,
|
leakVol1: 0,
|
},
|
],
|
},
|
table1: {
|
datas: [
|
{
|
battGroupId: 0,
|
recordTime: 0,
|
groupVolAlarm: 0,
|
testEndVol: 0,
|
testEndCap: 0,
|
testTimeLong: 0,
|
},
|
],
|
},
|
table2: {
|
datas: [
|
{
|
battGroupId: 0,
|
recordTime: 0,
|
monNum: 0,
|
monVolAlarm: 0,
|
monTempAlarm: 0,
|
monResAlarm: 0,
|
monRestCapAlarm: 0,
|
},
|
],
|
},
|
batt: {},
|
stateListShow: true,
|
stateList: stateList,
|
historyStateList: historyStateList,
|
lastCapacityTest: lastCapacityTest,
|
timer: new Timeout("realTime"),
|
diagram: {
|
update: true,
|
type: -1,
|
desc: "",
|
powerCut: 1,
|
temp: 0, // 设备温度
|
contactRes: 0, // 接触器阻抗
|
dropVol: 0, // 导通压降
|
devType: 0, // 设备类型
|
},
|
dischargeDialog: {
|
show: false,
|
},
|
systemDialog: {
|
show: false,
|
},
|
curingDialog: {
|
show: false,
|
},
|
outlineCuringDialog: {
|
show: false,
|
},
|
restartPlanDialog: {
|
show: false,
|
},
|
historyRealTimeDataDialog: {
|
show: false,
|
},
|
control: {
|
show: false,
|
data: {
|
startTest: {
|
// 启动核容测试
|
show: true,
|
typeShow: false,
|
id: 11,
|
},
|
stopTest: {
|
// 停止测试
|
show: true,
|
typeShow: false,
|
id: 12,
|
},
|
setSystemParams: {
|
// 系统参数设置
|
show: true,
|
typeShow: false,
|
id: 13,
|
},
|
clearWarn: {
|
// 清理告警
|
show: true,
|
typeShow: false,
|
id: 14,
|
},
|
startYH: {
|
// 启动养护/除硫
|
show: true,
|
typeShow: false,
|
id: 15,
|
},
|
stopYH: {
|
// 停止养护/除硫
|
show: true,
|
typeShow: false,
|
id: 16,
|
},
|
startOutlineYH: {
|
// 启动离线养护/除硫
|
show: true,
|
typeShow: false,
|
id: 17,
|
},
|
stopOutlineYH: {
|
// 停止离线养护/除硫
|
show: true,
|
typeShow: false,
|
id: 18,
|
},
|
circleRestart: {
|
// 定期重启
|
show: true,
|
typeShow: false,
|
id: 19,
|
},
|
restart: {
|
// 重启
|
show: true,
|
typeShow: false,
|
id: 20,
|
},
|
},
|
},
|
powerChart: {
|
ACVol: [
|
{
|
id: "ACVolA",
|
name: "三项交流电压",
|
number: "A",
|
min: 0,
|
max: 250,
|
unit: "伏特(V)",
|
color: [
|
[0.2, "#FA62E8"],
|
[0.8, "#00FFFF"],
|
[1, "#DCFD00"],
|
],
|
},
|
{
|
id: "ACVolB",
|
name: "三项交流电压",
|
number: "B",
|
min: 0,
|
max: 250,
|
unit: "伏特(V)",
|
color: [
|
[0.2, "#FA62E8"],
|
[0.8, "#00FFFF"],
|
[1, "#DCFD00"],
|
],
|
},
|
{
|
id: "ACVolC",
|
name: "三项交流电压",
|
number: "C",
|
min: 0,
|
max: 250,
|
unit: "伏特(V)",
|
color: [
|
[0.2, "#FA62E8"],
|
[0.8, "#00FFFF"],
|
[1, "#DCFD00"],
|
],
|
},
|
],
|
ACCurr: [
|
{
|
id: "ACCurrA",
|
name: "三项交流电流",
|
number: "A",
|
min: 0,
|
max: 100,
|
unit: "安培(A)",
|
color: [
|
[0.2, "#0081FF"],
|
[0.8, "#90EC7D"],
|
[1, "#E5357E"],
|
],
|
},
|
{
|
id: "ACCurrB",
|
name: "三项交流电流",
|
number: "B",
|
min: 0,
|
max: 100,
|
unit: "安培(A)",
|
color: [
|
[0.2, "#0081FF"],
|
[0.8, "#90EC7D"],
|
[1, "#E5357E"],
|
],
|
},
|
{
|
id: "ACCurrC",
|
name: "三项交流电流",
|
number: "C",
|
min: 0,
|
max: 100,
|
unit: "安培(A)",
|
color: [
|
[0.2, "#0081FF"],
|
[0.8, "#90EC7D"],
|
[1, "#E5357E"],
|
],
|
},
|
],
|
ACPower: [
|
{
|
id: "ACPowerA",
|
name: "三项交流频率",
|
number: "A",
|
min: 40,
|
max: 80,
|
unit: "赫兹(Hz)",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
{
|
id: "ACPowerB",
|
name: "三项交流频率",
|
number: "B",
|
min: 40,
|
max: 80,
|
unit: "赫兹(Hz)",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
{
|
id: "ACPowerC",
|
name: "三项交流频率",
|
number: "C",
|
min: 40,
|
max: 80,
|
unit: "赫兹(Hz)",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
],
|
Cos: [
|
{
|
id: "CosA",
|
name: "三项功率因数",
|
number: "A",
|
min: 0,
|
max: 0.2,
|
unit: "",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
{
|
id: "CosB",
|
name: "三项功率因数",
|
number: "B",
|
min: 0,
|
max: 0.2,
|
unit: "",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
{
|
id: "CosC",
|
name: "三项功率因数",
|
number: "C",
|
min: 0,
|
max: 0.2,
|
unit: "",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
],
|
apparentPower: [
|
{
|
id: "apparentPowerA",
|
name: "三项视在功率",
|
number: "A",
|
min: 0,
|
max: 1000,
|
unit: "千伏安(KVA)",
|
color: [
|
[0.2, "#6042FA"],
|
[0.8, "#F8BD45"],
|
[1, "#00FFFF"],
|
],
|
},
|
{
|
id: "apparentPowerB",
|
name: "三项视在功率",
|
number: "B",
|
min: 0,
|
max: 1000,
|
unit: "千伏安(KVA)",
|
color: [
|
[0.2, "#6042FA"],
|
[0.8, "#F8BD45"],
|
[1, "#00FFFF"],
|
],
|
},
|
{
|
id: "apparentPowerC",
|
name: "三项视在功率",
|
number: "C",
|
min: 0,
|
max: 1000,
|
unit: "千伏安(KVA)",
|
color: [
|
[0.2, "#6042FA"],
|
[0.8, "#F8BD45"],
|
[1, "#00FFFF"],
|
],
|
},
|
],
|
direct: [
|
{
|
id: "directVol",
|
name: "输出直流电压",
|
number: "电压",
|
min: 0,
|
max: 60,
|
unit: "伏特(V)",
|
color: [
|
[0.2, "#FA62E8"],
|
[0.8, "#00FFFF"],
|
[1, "#DCFD00"],
|
],
|
},
|
{
|
id: "directCurr",
|
name: "输出直流电流",
|
number: "电流",
|
min: 0,
|
max: 100,
|
unit: "安培(A)",
|
color: [
|
[0.2, "#0081FF"],
|
[0.8, "#90EC7D"],
|
[1, "#E5357E"],
|
],
|
},
|
{
|
id: "directPower",
|
name: "输出直流功率",
|
number: "功率",
|
min: 0,
|
max: 100,
|
unit: "千瓦(KW)",
|
color: [
|
[0.2, "#F8BD45"],
|
[0.8, "#00FFFF"],
|
[1, "#F3535F"],
|
],
|
},
|
],
|
},
|
nibian: {
|
show: false,
|
},
|
stopCuringDialog: {
|
show: false,
|
},
|
fodHeaders: [],
|
fodData: [],
|
lithiumParams: {
|
analog: lithiumInfo.analog().params,
|
},
|
};
|
},
|
methods: {
|
tabClick(tab) {
|
this.acTabs = tab.name;
|
// 根据tab更新电路图
|
if (this.acTabs === "eleLine") {
|
this.diagram.update = true;
|
} else {
|
this.diagram.update = false;
|
}
|
// 更新图表
|
this.setChart();
|
|
// 重置图表的大小
|
this.$nextTick(() => {
|
this.resize();
|
// 设置表格的数据
|
if (this.acTabs == "tblData") {
|
this.table.datas = tblData;
|
} else if (this.acTabs == "dianchigaojing") {
|
this.loadDevAla();
|
}
|
});
|
},
|
loadDevAla() {
|
let postData = {
|
battGroupId: this.batt.BattGroupId,
|
};
|
BattRtAlarmActionGetInfo(postData)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.table2.datas = rs.data;
|
}
|
})
|
.catch((err) => {
|
console.log(err);
|
});
|
BattRsAlarmActionGetInfo(postData)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.table1.datas = rs.data;
|
}
|
})
|
.catch((err) => {
|
console.log(err);
|
});
|
},
|
toggleChange() {
|
this.resize();
|
},
|
resize() {
|
if (this.acTabs === "powerInfo") {
|
this.powerInfoChartResize();
|
} else if (this.acTabs === "niBianInfoTab") {
|
this.$refs.niBianInfoTab.resize();
|
} else if(this.isLithium && this.acTabs == "elePrice") { // 锂电池显示电价分析图
|
this.$refs.elePriceTpl.resize();
|
} else if(this.acTabs == "bmsInfo") {
|
this.$refs.bmsInfo.resize();
|
}else {
|
this.$G.chartManage.resize(this.acTabs);
|
}
|
},
|
powerInfoChartResize() {
|
// 三项交流电压
|
this.powerChart.ACVol.forEach((item) => {
|
this.$refs[item.id][0].resize();
|
});
|
|
// 三项交流电流
|
this.powerChart.ACCurr.forEach((item) => {
|
this.$refs[item.id][0].resize();
|
});
|
|
// 三项交流频率
|
this.powerChart.ACPower.forEach((item) => {
|
this.$refs[item.id][0].resize();
|
});
|
|
// 三项功率因数
|
this.powerChart.Cos.forEach((item) => {
|
this.$refs[item.id][0].resize();
|
});
|
|
// 三项视在功率
|
this.powerChart.apparentPower.forEach((item) => {
|
this.$refs[item.id][0].resize();
|
});
|
|
// 输出直流
|
this.powerChart.direct.forEach((item) => {
|
this.$refs[item.id][0].resize();
|
});
|
},
|
initChart() {
|
// 电压
|
vol = {
|
title: {
|
show: true,
|
text: "最大值=0V;最小值=0V;平均值=0V",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "电压",
|
type: "bar",
|
data: [],
|
markLine: {
|
data: getMarkLineData(),
|
},
|
},
|
],
|
};
|
// 漏液电压
|
leakVol = {
|
title: {
|
show: true,
|
text: "最大值=0V;最小值=0V;平均值=0V",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "漏液电压",
|
type: "bar",
|
data: [],
|
markLine: {
|
data: getMarkLineData(),
|
},
|
},
|
],
|
};
|
|
// 内阻
|
resChart = {
|
title: {
|
show: true,
|
text: "最大值=0mΩ;最小值=mΩ;平均值=0mΩ",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "内阻",
|
type: "bar",
|
data: [],
|
markLine: {
|
data: getMarkLineData(),
|
},
|
},
|
],
|
};
|
|
// 温度
|
temp = {
|
title: {
|
show: true,
|
text: "最大值=0℃;最小值=0℃;平均值=0℃",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "温度",
|
type: "bar",
|
data: [],
|
markLine: {
|
data: getMarkLineData(),
|
},
|
},
|
],
|
};
|
|
// 电导
|
conduct = {
|
title: {
|
show: true,
|
text: "最大值=0;最小值=0;平均值=0",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "电导",
|
type: "bar",
|
data: [],
|
markLine: {
|
data: getMarkLineData(),
|
},
|
},
|
],
|
};
|
// 均衡电流
|
currChart = {
|
title: {
|
show: true,
|
text: "最大值=0mA;最小值=0mA;平均值=0mA",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "均衡电流",
|
type: "bar",
|
data: [],
|
},
|
],
|
};
|
|
// 链接条阻值
|
monConnRes = {
|
title: {
|
show: true,
|
text: "最大值=0mΩ;最小值=0mΩ;平均值=0mΩ",
|
x: "center",
|
textStyle: {
|
fontSize: "14",
|
},
|
},
|
series: [
|
{
|
name: "链接条阻值",
|
type: "bar",
|
data: [],
|
},
|
],
|
};
|
// 设置配置项
|
this.setChart();
|
},
|
setChart() {
|
let acTabs = this.acTabs;
|
switch (acTabs) {
|
case "vol":
|
this.$refs.vol.setOption(vol);
|
break;
|
case "res":
|
this.$refs.res.setOption(resChart);
|
break;
|
case "temp":
|
this.$refs.temp.setOption(temp);
|
break;
|
case "conduct":
|
this.$refs.conduct.setOption(conduct);
|
break;
|
case "curr":
|
this.$refs.curr.setOption(currChart);
|
break;
|
case "leakVol":
|
this.$refs.leakVol.setOption(leakVol);
|
break;
|
case "monConnRes":
|
this.$refs.monConnRes.setOption(monConnRes);
|
break;
|
}
|
},
|
startTimer() {
|
this.timer.start(() => {
|
this.$axios
|
.all([
|
this.realTimeSearch(),
|
this.realTimeGroupss(),
|
this.realStateTimeData(),
|
this.realTimeStateList(),
|
this.loadDevAla(),
|
//this.inversionInfo()
|
this.getLithiumAnalog(), // 锂电池模拟量
|
])
|
.then(() => {
|
this.timer.open();
|
})
|
.catch(() => {
|
this.timer.open();
|
});
|
}, 3000);
|
},
|
getBattGroupInfo(BattGroupId) {
|
this.homeListShow = false;
|
this.timer.name = "movingRingSysteRrealTime";
|
this.$apis.dataMager.battGroupMager
|
.getBattGroupInfo(BattGroupId)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.leafClick(rs.data[0]);
|
} else {
|
this.$layer.msg("未获取到电池组的信息");
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
leafClick(data) {
|
this.batt = data;
|
this.diagram.desc = "";
|
this.realTimeAlarmss();
|
// this.realTimeXuHang(); // 预估续航时长
|
this.diagram.devType = getDevType(data.chargeType, data.buscoupleState);
|
this.esVideoSn = data.videoUrl;
|
this.table.headers = getTblHeader(data.FBSDeviceId);
|
// 如果是61850 则查询最后一次放电数据
|
if (regEquipType(data.FBSDeviceId, ["equip61850"])) {
|
this.getLastCapacityTest(data);
|
}
|
this.$nextTick(()=>{
|
this.changeTabsName();
|
// 开启循环请求
|
this.startTimer();
|
});
|
|
|
},
|
/**
|
* 根据设备类型修改Tabs选中状态
|
*/
|
changeTabsName() {
|
if(this.isLd9) {
|
this.acTabs = "vol";
|
}
|
|
this.$nextTick(()=>{
|
this.resize();
|
});
|
|
},
|
/* 查询电池告警参数 */
|
realTimeAlarmss() {
|
var batt = this.batt;
|
realTimeAlarm({
|
dev_id: batt.FBSDeviceId,
|
}).then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
let list = rs.data;
|
// 单体电压
|
this.setChartMarkLine(vol, "Voltage", "Batt_Alarm_Type_MonVol", list);
|
// 单体温度
|
this.setChartMarkLine(
|
temp,
|
"Temperature",
|
"Batt_Alarm_Type_MonTmp",
|
list
|
);
|
// 单体内阻
|
this.setChartMarkLine(
|
resChart,
|
"Resistance",
|
"Batt_Alarm_Type_MonRes",
|
list
|
);
|
// 单体电导
|
this.setChartMarkLine(
|
conduct,
|
"Conductance",
|
"Batt_Alarm_Type_MonRes",
|
list
|
);
|
|
// 漏液电压
|
this.setChartMarkLine(
|
leakVol,
|
"leakVol",
|
"Batt_Alarm_Type_MonLYVol",
|
list
|
);
|
}
|
});
|
},
|
setChartMarkLine(chartData, name, alm_name, list) {
|
let batt = this.batt;
|
// 遍历list
|
for (let i = 0; i < list.length; i++) {
|
let item = list[i];
|
if (item.alm_name == alm_name) {
|
let high = 0;
|
let low = 0;
|
switch (name) {
|
case "Voltage": // 电压告警
|
//单体电压
|
let std_mon_vol = batt.MonVolStd;
|
high = parseFloat(std_mon_vol * item.alm_high_coe).toHold(3);
|
low = parseFloat(std_mon_vol * item.alm_low_coe).toHold(3);
|
break;
|
case "Temperature":
|
//单体温度
|
let std_mon_tmp = 25;
|
high = parseFloat(std_mon_tmp * item.alm_high_coe).toHold(1);
|
low = parseFloat(std_mon_tmp * item.alm_low_coe).toHold(1);
|
break;
|
case "Resistance":
|
let std_mon_res =
|
(1 * (batt.MonVolStd / 2)) / (batt.MonCapStd / 100);
|
high = parseFloat(std_mon_res * item.alm_high_coe).toHold(3);
|
low = parseFloat(std_mon_res * item.alm_low_coe).toHold(3);
|
break;
|
case "Conductance":
|
let std_mon_ser = batt.MonSerStd;
|
high = parseFloat(std_mon_ser * item.alm_high_coe).toHold(0);
|
low = parseFloat(std_mon_ser * item.alm_low_coe).toHold(0);
|
break;
|
case "leakVol":
|
high = parseFloat(item.alm_high_coe);
|
low = parseFloat(item.alm_low_coe);
|
break;
|
}
|
// 低告警
|
chartData.series[0].markLine.data[0].yAxis = low;
|
// 高告警
|
chartData.series[0].markLine.data[1].yAxis = high;
|
break;
|
}
|
}
|
},
|
/* 实时组端信息 */
|
realTimeGroupss() {
|
var batt = this.batt;
|
realTimeGroup(batt.BattGroupId).then((res) => {
|
let rsa = JSON.parse(res.data.result);
|
if (rsa.code == 1) {
|
this.inputs = rsa.data[0];
|
}
|
});
|
},
|
realStateTimeData() {
|
let batt = this.batt;
|
if(regEquipType(batt.FBSDeviceId, ["LD9"])) {
|
this.realTimeLd9Data();
|
}else {
|
this.realTimePowerOffs();
|
}
|
},
|
realTimeLd9Data() {
|
let batt = this.batt;
|
realTimeLd9Data({
|
dev_id: batt.FBSDeviceId,
|
|
}).then(res=>{
|
let rs = JSON.parse(res.data.result);
|
if(rs.code == 1) {
|
let data = rs.data[0];
|
// 判断是否超时
|
let outTime = 2 * 60; //设备超时时间(2分钟)
|
var nowTime = new Date(data.note).getTime(); //当前时间
|
var record = new Date(data.record_datetime).getTime();
|
if (Math.abs(nowTime - record) / 1000 > outTime) {
|
this.disconnect();
|
}else {
|
this.diagram.type = 1;
|
}
|
}else {
|
this.disconnect();
|
}
|
}).catch(error=>{
|
console.log(error);
|
this.disconnect();
|
});
|
},
|
/* 查询电路图开关状态和信息 */
|
realTimePowerOffs() {
|
let batt = this.batt;
|
// 设备为61850显示右侧的面板
|
if (regEquipType(batt.FBSDeviceId, ["equip61850"])) {
|
this.stateListShow = true;
|
} else {
|
this.stateListShow = false;
|
}
|
// 查询后台数据
|
realTimePowerOff({
|
dev_id: batt.FBSDeviceId,
|
}).then((res) => {
|
let rs = JSON.parse(res.data.result);
|
let outTime = 2 * 60; //设备超时时间(2分钟)
|
let isOutTime = true; //通讯中断 判断设备是否通讯中断 true:中断 false:正常
|
if (rs.code == 1) {
|
let data = rs.data[0];
|
// 设置版本号
|
this.dev_version = data.dev_version;
|
// 基础信息
|
this.setEquipBase(data);
|
|
// 判断是否超时
|
var nowTime = new Date(data.note).getTime(); //当前时间
|
var record = new Date(data.record_datetime).getTime();
|
if (Math.abs(nowTime - record) / 1000 > outTime) {
|
this.disconnect();
|
} else {
|
// 未超时执行逻辑
|
let dev_id = batt.FBSDeviceId;
|
this.diagram.powerCut = 0;
|
// 设备为61850
|
if (regEquipType(dev_id, "equip61850")) {
|
this.setEquip61850(data);
|
} else if (
|
regEquipType(dev_id, ["BTS", "BTS9110", "BTS9120", "lithium", "LD9"])
|
) {
|
this.setEquipBTS(data);
|
} else if (regEquipType(dev_id, ["BTS9605", "BTS9611"])) {
|
this.setEquip9605(data);
|
} else {
|
this.disconnect();
|
}
|
}
|
} else {
|
// 设置版本号
|
this.dev_version = "";
|
// 设备处于未连接
|
this.disconnect();
|
}
|
});
|
},
|
disconnect() {
|
// 设备未连接
|
this.diagram.type = -1;
|
this.setStateList("workState", "未连接");
|
this.diagram.temp = 0;
|
// 通讯状态
|
this.setStateList("connect", "异常", "table-row-error");
|
// 温度
|
this.setStateList("devTemp", "未知", "table-row-warn");
|
// 干接点
|
this.setStateList("contact", "未知", "table-row-warn");
|
// 核容终止原因
|
// this.setStateList("stopReason", "未知");
|
// 操作失败原因
|
this.setStateList("failReason", "未知");
|
// 预估续航时长
|
//this.setStateList("xuHang", "???");
|
|
// 显示遮罩层
|
this.maskShow = true;
|
},
|
// 基础信息
|
setEquipBase(data) {
|
let groupIndex = this.batt.GroupIndexInFBSDevice;
|
// 设备的温度
|
this.diagram.temp = data.dev_temp;
|
let contactRes = (groupIndex != 0
|
? data.dev_conresist1
|
: data.dev_conresist
|
).toHold(2);
|
let dropVol = (groupIndex != 0
|
? data.dev_condvoldp1
|
: data.dev_condvoldp
|
).toHold(2);
|
let alarms = data.dev_61850alarms.split(",");
|
if (alarms.length) {
|
this.diagram.contactRes = alarms[0] == "true" ? "k1异常" : contactRes;
|
this.diagram.dropVol = alarms[3] == "true" ? "D1异常" : dropVol;
|
} else {
|
this.diagram.contactRes = contactRes;
|
this.diagram.dropVol = dropVol;
|
}
|
},
|
// BTS设备信息
|
setEquipBTS(data) {
|
let batt = this.batt;
|
// 关闭遮罩层
|
this.maskShow = false;
|
// 电路图类型
|
let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
|
this.diagram.desc = "";
|
let battstate = this.inputs.batt_state;
|
let alarmstatus = data.dev_alarmstate;
|
|
// 是否为锂电池
|
let isLithium = regEquipType(batt.FBSDeviceId, "lithium");
|
|
// 设置停电放电状态
|
if (data.dev_onlinevollow) {
|
this.inputs.batt_state = 5;
|
this.diagram.type = 5;
|
this.diagram.desc = "(开关闭合)";
|
this.diagram.powerCut = 1;
|
// 当前设备是BTS设备
|
if (workstatus === 0 && data.dev_res_test_state !== 0) {
|
this.diagram.desc += "(内阻测试)";
|
}
|
|
// 锂电池详细描述为空
|
if (isLithium) {
|
this.diagram.desc = "";
|
}
|
|
return;
|
}
|
// 判断workstatus
|
switch (workstatus) {
|
case 0:
|
this.diagram.type = 0;
|
this.diagram.desc = "(开关闭合)";
|
// 当前设备是BTS设备
|
if (data.dev_res_test_state !== 0) {
|
this.diagram.desc += "(内阻测试)";
|
}
|
break;
|
case 1:
|
if (
|
data.dev_testgroupnum > 0 &&
|
data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1
|
) {
|
this.diagram.type = 1;
|
this.diagram.desc = "(开关断开)";
|
} else {
|
if (battstate === 3) {
|
this.diagram.type = 1;
|
this.diagram.desc = "(开关断开)";
|
} else {
|
this.diagram.type = 0;
|
this.diagram.desc = "(开关闭合)";
|
}
|
}
|
|
// 当前设备是BTS设备
|
if (data.dev_testtype == 209) {
|
this.diagram.desc += "(KD测试)";
|
this.diagram.type = 3;
|
}
|
break;
|
case 2:
|
//辨别当前电池组是否在充电
|
if (
|
this.diagram.type == 2 ||
|
(data.dev_testgroupnum > 0 &&
|
data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1)
|
) {
|
//充电
|
if (
|
alarmstatus === 1 ||
|
alarmstatus === 2 ||
|
alarmstatus === 3 ||
|
alarmstatus === 4 ||
|
alarmstatus === 6
|
) {
|
//限流充电 -->常闭接触器断开
|
this.diagram.type = 2;
|
this.diagram.desc = "(开关断开)";
|
} else {
|
//直流充电 -->常闭接触器闭合
|
this.diagram.type = 2;
|
this.diagram.desc = "(开关闭合)";
|
}
|
} else {
|
this.diagram.type = 0;
|
this.diagram.desc = "(开关闭合)";
|
}
|
break;
|
default:
|
this.diagram.type = -1;
|
this.maskShow = true;
|
break;
|
}
|
|
// 锂电池详细描述为空
|
if (isLithium) {
|
this.diagram.desc = "";
|
}
|
},
|
// 61850设备信息
|
setEquip61850(data) {
|
// 电路图类型
|
let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
|
this.diagram.desc = "";
|
// 关闭遮罩层
|
this.maskShow = false;
|
// 设置停电放电状态
|
if (data.dev_onlinevollow) {
|
this.inputs.batt_state = 5;
|
this.diagram.type = 5;
|
this.diagram.desc = "(开关闭合)";
|
this.diagram.powerCut = 1;
|
// 当前设备是BTS设备
|
if (workstatus === 0 && data.dev_res_test_state !== 0) {
|
this.diagram.desc += "(内阻测试)";
|
}
|
return;
|
}
|
|
switch (workstatus) {
|
case 0: //浮充状态拓扑图
|
this.diagram.type = 0;
|
this.diagram.desc = "(开关闭合)";
|
break;
|
case 4: //浮充状态(内阻测试)拓扑图
|
this.diagram.type = 0;
|
// 当前设备是否是内阻测试
|
this.diagram.desc = "(开关闭合)";
|
this.diagram.desc += "(内阻测试)";
|
break;
|
case 1: //充电状态拓扑图
|
this.diagram.type = 2;
|
this.diagram.desc = "(开关断开)";
|
break;
|
case 2: //放电状态拓扑图
|
this.diagram.type = 1;
|
this.diagram.desc = "(开关断开)";
|
break;
|
case 3: //放电状态拓扑图
|
this.diagram.type = 5;
|
break;
|
case 5: //放电状态(KD测试)拓扑图
|
this.diagram.type = 3;
|
this.diagram.desc = "(开关断开)";
|
this.diagram.desc += "(KD测试)";
|
break;
|
case 6: // 离线养护测试
|
this.diagram.type = 4;
|
this.diagram.desc = "离线养护测试";
|
break;
|
default:
|
//未知
|
this.diagram.type = -1;
|
this.diagram.desc = "(未知)";
|
this.maskShow = true;
|
break;
|
}
|
|
// 设备工作状态
|
let workStates = const_61850.workstates;
|
this.setStateList("workState", workStates[data.dev_workstate]);
|
// 核容终止原因
|
// let stopReasons = const_61850.stopreasons;
|
// if (data.dev_workstate == 2) {
|
// this.setStateList("stopReason", "未知");
|
// } else {
|
// this.setStateList(
|
// "stopReason",
|
// stopReasons[data.dev_last_captest_stop_type]
|
// );
|
// }
|
|
// 操作失败原因
|
let failReasons = const_61850.failreasons;
|
this.setStateList("failReason", failReasons[data.dev_alarmstate]);
|
|
// 告警信息
|
let alarms = data.dev_61850alarms.split(",");
|
// alarms = ['false', 'false', 'true', 'false', 'true'];
|
// 通讯状态
|
if (alarms[1] == "true") {
|
this.setStateList("connect", "异常", "table-row-error");
|
} else {
|
this.setStateList("connect", "正常", "");
|
}
|
|
// 温度
|
if (alarms[2] == "true") {
|
this.setStateList("devTemp", "异常", "table-row-error");
|
} else {
|
this.setStateList("devTemp", "正常", "");
|
}
|
|
// 干接点
|
if (alarms[4] == "true") {
|
this.setStateList("contact", "异常", "table-row-error");
|
} else {
|
this.setStateList("contact", "正常", "");
|
}
|
},
|
// 9605设备
|
setEquip9605(data) {
|
let batt = this.batt;
|
// 关闭遮罩层
|
this.maskShow = false;
|
// 电路图类型
|
let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
|
this.diagram.desc = "";
|
let battstate = this.inputs.batt_state;
|
let alarmstatus = data.dev_alarmstate;
|
|
// 设置停电放电状态
|
if (data.dev_onlinevollow) {
|
this.inputs.batt_state = 5;
|
this.diagram.type = 5;
|
this.diagram.desc = "(开关闭合)";
|
this.diagram.powerCut = 1;
|
// 当前设备是BTS设备
|
if (workstatus === 0 && data.dev_res_test_state !== 0) {
|
this.diagram.desc += "(内阻测试)";
|
}
|
return;
|
}
|
// 判断workstatus
|
switch (workstatus) {
|
case 0:
|
this.diagram.type = 0;
|
//this.diagram.desc = '(开关闭合)';
|
// 当前设备是BTS设备
|
if (data.dev_res_test_state !== 0) {
|
this.diagram.type = 6;
|
this.diagram.desc += "(内阻测试)";
|
}
|
break;
|
case 1:
|
this.diagram.type = 1;
|
//this.diagram.desc = '(开关断开)';
|
break;
|
case 2:
|
this.diagram.type = 2;
|
//this.diagram.desc = '(开关断开)';
|
break;
|
default:
|
this.diagram.type = -1;
|
this.maskShow = true;
|
break;
|
}
|
},
|
// 设置stateList的值
|
setStateList(name, value, type) {
|
let stateList = this.stateList;
|
for (let i = 0; i < stateList.length; i++) {
|
let state = stateList[i];
|
if (state.name == name) {
|
state.value = value;
|
state.type = type ? type : "";
|
}
|
}
|
|
let historyStateList = this.historyStateList;
|
for (let i = 0; i < historyStateList.length; i++) {
|
let state = historyStateList[i];
|
if (state.name == name) {
|
state.value = value;
|
state.type = type ? type : "";
|
}
|
}
|
|
for (let i = 0, list = this.lastCapacityTest, j = list.length; i < j; i++) {
|
let state = list[i];
|
if (state.name == name) {
|
state.value = value;
|
state.type = type || "";
|
}
|
}
|
},
|
/* echars图表 */
|
realTimeSearch() {
|
var batt = this.batt;
|
realTimeSearch({
|
BattGroupId: batt.BattGroupId,
|
}).then((res) => {
|
let diagramType = this.diagram.type;
|
let rs = JSON.parse(res.data.result);
|
let data = [];
|
if (rs.code == 1 && diagramType != -1) {
|
data = rs.data.map((item) => {
|
return {
|
num1: "#" + item.mon_num,
|
vol1: item.mon_vol,
|
res1: item.mon_res,
|
temp1: item.mon_tmp,
|
conduct1: item.mon_res
|
? ((1 / item.mon_res) * 1000).toFixed(0)
|
: 0,
|
curr1: item.mon_JH_curr,
|
leakVol1: item.mon_LY_vol,
|
monConnRes: item.mon_conn_res,
|
};
|
});
|
}
|
// 更新表格
|
if (this.acTabs == "tblData") {
|
this.table.datas = data;
|
} else {
|
tblData = data;
|
}
|
|
// 电压值
|
let volTempVol = [];
|
if (rs.code == 1) {
|
volTempVol = rs.data.map((item) => {
|
let value = diagramType == -1?0:item.mon_vol.toFixed(3);
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let volBarNum = getBarNum(volTempVol);
|
vol.title.text =
|
"最大值=" +
|
volBarNum.max.toFixed(2) +
|
"V;最小值=" +
|
volBarNum.min.toFixed(2) +
|
"V;平均值=" +
|
volBarNum.avg.toFixed(2) +
|
"V";
|
vol.series[0].data = volTempVol;
|
|
// 内阻
|
let volTempres = [];
|
if (rs.code == 1) {
|
volTempres = rs.data.map((item) => {
|
let value = diagramType == -1?0:item.mon_res;
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let resBarNum = getBarNum(volTempres);
|
resChart.title.text =
|
"最大值=" +
|
resBarNum.max.toFixed(2) +
|
"mΩ;最小值=" +
|
resBarNum.min.toFixed(2) +
|
"mΩ;平均值=" +
|
resBarNum.avg.toFixed(2) +
|
"mΩ";
|
resChart.series[0].data = volTempres;
|
|
// 温度
|
let volTempte = [];
|
if (rs.code == 1) {
|
volTempte = rs.data.map((item) => {
|
let value = diagramType == -1?0:item.mon_tmp;
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let tempBarNum = getBarNum(volTempte);
|
temp.title.text =
|
"最大值=" +
|
tempBarNum.max.toFixed(1) +
|
"℃;最小值=" +
|
tempBarNum.min.toFixed(1) +
|
"℃;平均值=" +
|
tempBarNum.avg.toFixed(1) +
|
"℃";
|
temp.series[0].data = volTempte;
|
|
// 电导
|
let conductTemp = [];
|
if (rs.code == 1) {
|
conductTemp = rs.data.map((item) => {
|
let value = diagramType == -1?0:getConduct(item.mon_res, item.mon_vol);
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let conductBarNum = getBarNum(conductTemp);
|
conduct.title.text =
|
"最大值=" +
|
conductBarNum.max.toFixed(0) +
|
";最小值=" +
|
conductBarNum.min.toFixed(0) +
|
";平均值=" +
|
conductBarNum.avg.toFixed(0);
|
conduct.series[0].data = conductTemp;
|
// 均衡电流
|
let currTemp = [];
|
if (rs.code == 1) {
|
currTemp = rs.data.map((item) => {
|
let value = diagramType == -1?0:item.mon_JH_curr;
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let currBarNum = getBarNum(currTemp);
|
currChart.title.text =
|
"最大值=" +
|
currBarNum.max.toFixed(1) +
|
"mA;最小值=" +
|
currBarNum.min.toFixed(1) +
|
"mA;平均值=" +
|
currBarNum.avg.toFixed(1) +
|
"mA";
|
currChart.series[0].data = currTemp;
|
// 漏液电压
|
let leakVolTemp = [];
|
if (rs.code == 1) {
|
leakVolTemp = rs.data.map((item) => {
|
let value = diagramType == -1?0:item.mon_LY_vol;
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let leakVolNum = getBarNum(leakVolTemp);
|
leakVol.title.text =
|
"最大值=" +
|
leakVolNum.max.toFixed(1) +
|
"V;最小值=" +
|
leakVolNum.min.toFixed(1) +
|
"V;平均值=" +
|
leakVolNum.avg.toFixed(1) +
|
"V";
|
leakVol.series[0].data = leakVolTemp;
|
|
// 链接条阻值
|
let monConnResData = [];
|
if (rs.code == 1) {
|
monConnResData = rs.data.map((item) => {
|
let value = diagramType == -1?0:item.mon_conn_res;
|
return ["#" + item.mon_num, value];
|
});
|
}
|
let connResBarNum = getBarNum(monConnResData);
|
monConnRes.title.text =
|
"最大值=" +
|
connResBarNum.max.toFixed(1) +
|
"mΩ;最小值=" +
|
connResBarNum.min.toFixed(1) +
|
"mΩ;平均值=" +
|
connResBarNum.avg.toFixed(1) +
|
"mΩ";
|
monConnRes.series[0].data = monConnResData;
|
// 更新电压图表
|
this.setChart();
|
});
|
},
|
// 向父级发送同步页面的指令
|
syncPage() {
|
let batt = this.batt;
|
let search =
|
"?province=" +
|
batt.StationName1 +
|
"&city=" +
|
batt.StationName2 +
|
"&county=" +
|
batt.StationName5 +
|
"&home=" +
|
batt.StationName3 +
|
"&batt=" +
|
batt.BattGroupId;
|
let url = '#/history';
|
if (regEquipType(batt.FBSDeviceId, "LD9")) {
|
url = '#/history-ld9';
|
}
|
window.parent.postMessage(
|
{
|
cmd: "syncPage",
|
params: {
|
pageInfo: {
|
label: "历史数据",
|
name: "history",
|
src: url + search,
|
closable: true,
|
},
|
},
|
},
|
"*"
|
);
|
},
|
// 停止测试
|
stopTest() {
|
this.$layer.confirm(
|
"停止测试",
|
{
|
icon: 3,
|
},
|
(index) => {
|
// 关闭询问层
|
this.$layer.close(index);
|
// 根据设备id进行停止
|
if (regEquipType(this.batt.FBSDeviceId, "equip61850")) {
|
// 停止设备
|
this.stop61850Test();
|
} else if (
|
regEquipType(this.batt.FBSDeviceId, [
|
"BTS",
|
"BTS9110",
|
"BTS9120",
|
"BTS9605",
|
"lithium",
|
])
|
) {
|
// 停止设备
|
this.stopBtsTest();
|
} else if (regEquipType(this.batt.FBSDeviceId, "LD9")) {
|
this.stopLD9();
|
} else {
|
// 提示信息
|
this.$layer.msg("未知设备类型,暂无法停止测试!");
|
}
|
}
|
);
|
},
|
// 停止LD9测试
|
stopLD9() {
|
// 开启等待框
|
let loading = this.$layer.loading(1);
|
// 请求后台
|
this.$apis.dischargeTest.ld9
|
.stop({
|
num: const_ld_nine.cmd.stop,
|
dev_id: this.batt.FBSDeviceId,
|
})
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
// 提示信息
|
this.$layer.msg("停止测试成功");
|
} else {
|
// 提示信息
|
this.$layer.msg("停止测试失败!");
|
}
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 关闭等待框
|
this.$layer.close(loading);
|
// 提示信息
|
this.$layer.msg("停止测试失败,停止测试请求异常!");
|
});
|
},
|
// 停止bts测试
|
stopBtsTest() {
|
// 开启等待框
|
let loading = this.$layer.loading(1);
|
// 请求后台
|
this.$apis.dischargeTest.bts
|
.stop({
|
num: const_9100.cmd.stop,
|
dev_id: this.batt.FBSDeviceId,
|
})
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
// 提示信息
|
this.$layer.msg("停止测试成功");
|
} else {
|
// 提示信息
|
this.$layer.msg("停止测试失败!");
|
}
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 关闭等待框
|
this.$layer.close(loading);
|
// 提示信息
|
this.$layer.msg("停止测试失败,停止测试请求异常!");
|
});
|
},
|
// 停止61850测试
|
stop61850Test() {
|
// 开启等待框
|
let loading = this.$layer.loading(1);
|
// 请求后台
|
this.$apis.dischargeTest.e61850
|
.stop({
|
num: const_61850.cmd.stop,
|
dev_id: this.batt.FBSDeviceId,
|
})
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
// 提示信息
|
this.$layer.msg("停止测试成功");
|
} else {
|
// 提示信息
|
this.$layer.msg("停止测试失败!");
|
}
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 关闭等待框
|
this.$layer.close(loading);
|
// 提示信息
|
this.$layer.msg("停止测试失败,停止测试请求异常!");
|
});
|
},
|
// 停止养护除硫
|
stopCuring() {
|
let batt = this.batt;
|
let groupNum = batt.GroupIndexInFBSDevice + 1;
|
this.$layer.confirm(
|
"确定停止养护/除硫",
|
{
|
icon: 3,
|
},
|
(index) => {
|
// 关闭确认框
|
this.$layer.close(index);
|
let loading = this.$layer.loading(1);
|
this.$apis.curing
|
.stop(batt.FBSDeviceId, groupNum)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
this.$layer.msg(rs.msg);
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
// 关闭等待框
|
this.$layer.close(loading);
|
});
|
}
|
);
|
},
|
// 查询拓扑图状态的显示
|
searchStatus() {
|
this.$apis.pageSetting.realTime
|
.searchStatus()
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
let data = rs.data;
|
this.stateList.forEach((item) => {
|
item.show = this.getStateById(item.id, data);
|
});
|
|
this.historyStateList.forEach((item) => {
|
item.show = this.getStateById(item.id, data);
|
});
|
}
|
// 设置养护除硫信息
|
this.setFodHeaders(this.stateList);
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
setFodHeaders(stateList) {
|
let result = [];
|
result.push({
|
prop: "num",
|
label: "编号",
|
});
|
// 剩余天数
|
let resDay = const_61850.getItemByName("resDay", stateList);
|
if (resDay && resDay.show) {
|
result.push({
|
prop: "RestTime_",
|
label: "天数",
|
});
|
}
|
// 工作状态
|
let workModel = const_61850.getItemByName("workMode", stateList);
|
if (workModel && workModel.show) {
|
result.push({
|
prop: "WorkState_",
|
label: "模式",
|
});
|
}
|
// 组端电压
|
let groupVol = const_61850.getItemByName("groupVol", stateList);
|
if (groupVol && groupVol.show) {
|
result.push({
|
prop: "VGroupVol_",
|
label: "组压",
|
});
|
}
|
// 峰值电压
|
let peakVol = const_61850.getItemByName("peakVol", stateList);
|
if (peakVol && peakVol.show) {
|
result.push({
|
prop: "VpeakVol_",
|
label: "峰压",
|
});
|
}
|
this.fodHeaders = result;
|
},
|
// 查询控制按钮的内容
|
searchControl() {
|
this.$apis.pageSetting.realTime
|
.searchControl()
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
let control = false; // 控制整体的显示
|
if (rs.code == 1) {
|
let data = rs.data;
|
Object.keys(this.control.data).forEach((key) => {
|
let item = this.control.data[key];
|
item.show = this.getStateById(item.id, data); // 根据id设置按钮的状态
|
// 存在控制
|
if (item.show) {
|
control = item.show;
|
}
|
});
|
}
|
this.control.show = control; // 设置整体显示的状态
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
getStateById(id, list) {
|
let result = true;
|
for (let i = 0; i < list.length; i++) {
|
let item = list[i];
|
if (id == item.id) {
|
result = item.status ? true : false;
|
break;
|
}
|
}
|
return result;
|
},
|
/**
|
* 读取锂电池信息 暂定读取组一的
|
*/
|
getLithiumAnalog() {
|
let batt = this.batt;
|
let isLithium = regEquipType(batt.FBSDeviceId, ["lithium"]);
|
if (isLithium) {
|
this.$apis.dcdc
|
.getDcDcAnalogParams({
|
devId: batt.FBSDeviceId,
|
})
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
// 剩余容量进行累加
|
let restCap = 0;
|
rs.data.map(item=>{
|
restCap += item.restCap;
|
});
|
|
let data = rs.data[0];
|
data.restCap = restCap;
|
this.lithiumParams.analog = data;
|
} else {
|
this.lithiumParams.analog = lithiumInfo.analog().params;
|
}
|
})
|
.catch((error) => {
|
this.lithiumParams.analog = lithiumInfo.analog().params;
|
console.log(error);
|
});
|
}
|
},
|
clearWarn() {
|
// 清除告警
|
this.$layer.confirm(
|
"清除设备告警",
|
{
|
icon: 3,
|
title: "系统提示",
|
},
|
(index) => {
|
// 关闭弹出框
|
this.$layer.close(index);
|
// 开启加载等待
|
let load = this.$layer.loading(1);
|
// 执行清除告警
|
let batt = this.batt;
|
this.$apis.system
|
.clearWarn(batt.FBSDeviceId)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.$layer.msg("清除设备告警成功!");
|
} else {
|
this.$layer.msg("清除设备告警失败!");
|
}
|
// 关闭等待
|
this.$layer.close(load);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 关闭等待
|
this.$layer.close(load);
|
});
|
}
|
);
|
},
|
realTimeStateList() {
|
// 获取剩余天数,工作模式,组端电压,峰值电压
|
let batt = this.batt;
|
// 仅有编号不做任何操作
|
if (this.fodHeaders.length == 1) {
|
return;
|
}
|
realTimeStateList(batt.BattGroupId)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
let data = [];
|
if (rs.code == 1) {
|
let rsData = rs.data[0];
|
let workModels = ["停止", "养护", "除硫"];
|
let list = ["one", "two", "three", "four", "five"];
|
let fodHeaders = this.fodHeaders;
|
data = list.map((item, index) => {
|
let workModel = rsData["WorkState_" + item];
|
return fodHeaders.map((fod) => {
|
if (fod.prop == "num") {
|
return index + 1;
|
} else if (fod.prop == "WorkState_") {
|
return workModels[workModel];
|
} else {
|
return rsData[fod.prop + item];
|
}
|
});
|
//return [index+1, rsData['RestTime_'+item], workModels[workModel], rsData['VGroupVol_'+item], rsData['VpeakVol_'+item]]
|
});
|
this.fodData = data;
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
// realTimeXuHang() {
|
// let batt = this.batt;
|
// realTimeXuHang(batt.FBSDeviceId).then(res=>{
|
// let rs = JSON.parse(res.data.result);
|
// if(rs.data == -1) {
|
// // 预估续航时长
|
// this.setStateList("xuHang", "???");
|
// }else {
|
// // 预估续航时长
|
// this.setStateList("xuHang", formatSeconds(rs.data*60));
|
// }
|
// }).catch(error=>{
|
// // 预估续航时长
|
// this.setStateList("xuHang", "???");
|
// })
|
// },
|
// 逆变信息
|
inversionInfo() {
|
let batt = this.batt;
|
inversionInfo(batt.FBSDeviceId)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
console.log(rs);
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
monitorPage() {
|
// 获取缓存的session
|
let name = sessionStorage.getItem("acTabs");
|
let pageName = this.homeListShow
|
? "realTime"
|
: "movingRingSysteRrealTime";
|
if (name === pageName && this.acTabs === "eleLine") {
|
this.diagram.update = true;
|
} else {
|
this.diagram.update = false;
|
}
|
// 启动监控
|
requestAnimationFrame(() => {
|
this.monitorPage();
|
});
|
},
|
setRightMenuPos(x, y) {
|
this.rightMenu.show = true;
|
this.rightMenu.x = x;
|
this.rightMenu.y = y;
|
},
|
chartRightCLick(params) {
|
this.rightMenu.show = true;
|
this.rightMenu.x = params.x;
|
this.rightMenu.y = params.y;
|
this.rightMenu.xIndex = params.xIndex;
|
},
|
payAttentionMon() {
|
let searchParams = {
|
BattGroupId: this.batt.BattGroupId,
|
MonNum: this.rightMenu.xIndex + 1,
|
};
|
|
// 查询
|
realTimeNot(searchParams)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.$layer.msg("单体#" + searchParams.MonNum + "已被关注");
|
} else {
|
this.addAttentionMon(searchParams);
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
});
|
},
|
addAttentionMon(params) {
|
let loading = this.$layer.loading(1);
|
// 请求后台添加
|
realTimeAdd(params)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.$layer.msg("成功关注单体#" + params.MonNum);
|
} else {
|
this.$layer.msg("添加失败");
|
}
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
this.$layer.close(loading);
|
console.log(error);
|
});
|
},
|
closeDisChargeDialog() {
|
this.dischargeDialog.show = false;
|
},
|
restartSystem() {
|
let self = this;
|
let batt = this.batt;
|
let resetPwd = "restart123456";
|
this.$prompt("请输入重启密码", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
inputType: "password",
|
})
|
.then(({ value }) => {
|
if (value == resetPwd) {
|
let loading = this.$layer.loading();
|
this.$apis.outline
|
.restart(batt.FBSDeviceId)
|
.then((res) => {
|
let rs = JSON.parse(res.data.result);
|
if (rs.code == 1) {
|
this.$alert("发送重启命令成功", "系统提示");
|
} else {
|
this.$alert("发送重启命令失败!", "系统提示");
|
}
|
this.$layer.close(loading);
|
})
|
.catch((error) => {});
|
} else {
|
this.$layer.msg("密码不正确");
|
}
|
})
|
.catch(() => {});
|
},
|
changeSkin() {
|
this.$nextTick(() => {
|
if (this.skinActive == "science-black") {
|
this.eleOffImg = require("../../assets/images/eleOff-black.png");
|
this.eleOnImg = require("../../assets/images/eleOn-black.png");
|
} else if (this.skinActive == "science-blue") {
|
this.eleOffImg = require("../../assets/images/eleOff.png");
|
this.eleOnImg = require("../../assets/images/eleOn.png");
|
}
|
});
|
},
|
getLastCapacityTest (batt) {
|
let param = {
|
num: batt.FBSDeviceId,
|
BattGroupId: batt.BattGroupId
|
};
|
getLastCapacityTest(param).then((res) => {
|
res = JSON.parse(res.data.result);
|
// console.log(res, 'res======');
|
if (res.code) {
|
let data = res.data;
|
// 上次核容停止原因
|
this.setStateList('stopReason', data.test_stoptype_reason);
|
// 核容测试的最后一笔数据
|
let datalist = data.batttestdataList;
|
// 上次核容开始时间
|
this.setStateList('test_starttime', data.test_starttime);
|
// 上次核容测试容量
|
this.setStateList('test_cap', data.test_cap.toFixed(1) + "AH");
|
// 上次核容测试时长
|
this.setStateList('test_timelong', formatSeconds(data.test_timelong));
|
let volArr = [];
|
datalist.forEach((v) => {
|
volArr.push(['#' + v.mon_num, v.mon_vol]);
|
});
|
let batNum = getBarNum(volArr);
|
let avg_curr = data.test_timelong > 0 ? data.test_cap * 3600 / data.test_timelong : data.test_curr;
|
let over_cap = GetMonomerCap(batt.MonCapStd, GetHourRate(batt.MonCapStd, avg_curr),
|
data.test_cap, batNum.max, batNum.min, batt.MonVolStd, 0);
|
let real_cap = GetMonomerCap(batt.MonCapStd, GetHourRate(batt.MonCapStd, avg_curr),
|
data.test_cap, batNum.max, batNum.min, batt.MonVolStd, 1);
|
let xuhang = batt.Load_curr ? real_cap / batt.Load_curr : 0;
|
// 剩余容量
|
this.setStateList('re_cap', over_cap.toFixed(1) + 'AH');
|
// 续航时长
|
this.setStateList('endurance_time', xuhang ? sethoubeiTime(xuhang) : '---');
|
}
|
}).catch((err) => {
|
console.error(err);
|
});
|
},
|
stopOutLineCuring() {
|
this.stopTime = new Date().getTime();
|
console.log(this.stopTime);
|
}
|
},
|
computed: {
|
battFullName() {
|
let batt = this.batt;
|
if (batt.StationName && batt.BattGroupName) {
|
return batt.StationName + "-" + batt.BattGroupName;
|
}
|
return "电池组全称";
|
},
|
backInputs() {
|
let batt = this.batt;
|
let isLd9 = this.isLd9;
|
const obj = {
|
0: "未知",
|
1: "浮充",
|
2: "充电",
|
3: "放电",
|
4: "均充",
|
},
|
list = {
|
batt_state: "未知",
|
group_online_vol: "在线:0.00V;组端:0.00V",
|
group_curr: "0.00A",
|
rec_datetime: "1982-01-01 00:00:00",
|
batt_test_tlong: formatSeconds(0),
|
batt_test_cap: "0Ah",
|
batt_syrl_cap: "---",
|
sysc: "------",
|
};
|
if (this.diagram.type == -1) {
|
return list;
|
}
|
let batt_state_text = this.diagram.powerCut && !isLd9
|
? "停电放电"
|
: obj[this.inputs.batt_state];
|
list.batt_state = batt_state_text + this.diagram.desc;
|
if (regEquipType(batt.FBSDeviceId, "BTS9605")) {
|
list.group_online_vol = `组端:${this.inputs.group_vol.toFixed(2)}V`;
|
} else {
|
list.group_online_vol = `在线:${this.inputs.online_vol.toFixed(
|
2
|
)}V;组端:${this.inputs.group_vol.toFixed(2)}V`;
|
}
|
|
list.group_curr = this.inputs.group_curr.toFixed(2) + "A";
|
list.rec_datetime = this.inputs.rec_datetime;
|
list.batt_test_tlong = formatSeconds(this.inputs.batt_test_tlong);
|
|
list.batt_test_cap = this.inputs.batt_test_cap.toFixed(1) + "AH";
|
if (this.inputs.batt_state === 2) {
|
list.batt_syrl_cap = "---";
|
} else {
|
// 为0是不更新剩余容量
|
if(this.inputs.batt_rest_cap != 0) {
|
list.batt_syrl_cap = this.inputs.batt_rest_cap.toFixed(1)
|
}
|
}
|
if (this.inputs.batt_state === 3) {
|
// 为0是不更新续航时长
|
if(this.inputs.batt_rest_cap != 0) {
|
list.sysc = sethoubeiTime(
|
parseFloat(this.inputs.batt_rest_cap) /
|
parseFloat(this.inputs.group_curr)
|
);
|
}
|
} else {
|
list.sysc = "------";
|
}
|
|
// 如果当前为锂电池
|
let isLithium = regEquipType(batt.FBSDeviceId, ["lithium"]);
|
if (isLithium) {
|
list.batt_syrl_cap =
|
this.lithiumParams.analog.restCap.toFixed(1) + "AH";
|
}
|
return list;
|
},
|
showStateList() {
|
return this.stateList.filter((item) => {
|
if (item.show) {
|
return item;
|
}
|
});
|
},
|
showHistoryStateList() {
|
return this.historyStateList.filter((item) => {
|
if (item.show) {
|
return item;
|
}
|
});
|
},
|
dischargeDialogTitle() {
|
let batt = this.batt;
|
if (regEquipType(batt.FBSDeviceId, ["equip61850", "LD9"])) {
|
return "放电参数设置";
|
} else if (
|
regEquipType(batt.FBSDeviceId, [
|
"BTS",
|
"BTS9110",
|
"BTS9120",
|
"BTS9605",
|
"lithium",
|
])
|
) {
|
return "BTS设备放电参数设置";
|
} else if (regEquipType(batt.FBSDeviceId, ["BTS9611", "BTS9605"])) {
|
return "内阻测试";
|
} else {
|
return "未知设备(待开发)";
|
}
|
},
|
stateListState() {
|
return this.stateListShow && this.showStateList.length;
|
},
|
historyStateListState() {
|
return this.stateListShow && this.showHistoryStateList.length;
|
},
|
histroyDataTitle() {
|
return this.batt.StationName + "-历史实时数据";
|
},
|
fodShow() {
|
return this.fodHeaders.length === 1 || this.fodData.length === 0
|
? false
|
: true;
|
},
|
isNiBian() {
|
let batt = this.batt;
|
return regEquipType(batt.FBSDeviceId, "BTS9120");
|
},
|
isJhgd() {
|
let batt = this.batt;
|
return regEquipType(batt.FBSDeviceId, ["BTS9110", "equip61850", "BTS"]);
|
},
|
isSystemSet() {
|
let systemParams = this.control.data.setSystemParams.show;
|
let batt = this.batt;
|
return systemParams && regEquipType(batt.FBSDeviceId, ["equip61850"]);
|
},
|
isRestartCircle() {
|
let restartCircle = this.control.data.circleRestart.show;
|
let batt = this.batt;
|
return restartCircle && regEquipType(batt.FBSDeviceId, ["equip61850"]);
|
},
|
isLithium() {
|
// 锂电BTS
|
let batt = this.batt;
|
return regEquipType(batt.FBSDeviceId, ["lithium"]);
|
},
|
isLd9() {
|
// LD9BTS
|
let batt = this.batt;
|
return regEquipType(batt.FBSDeviceId, "LD9");
|
},
|
isShowJunHeng() {
|
let batt = this.batt;
|
let isLithium = regEquipType(batt.FBSDeviceId, ["lithium"]);
|
return !isLithium;
|
},
|
tabsConfig() {
|
let batt = this.batt;
|
let isLithium = regEquipType(batt.FBSDeviceId, ["lithium"]);
|
let vol = true;
|
let res = !isLithium;
|
let temp = true;
|
let conduct = !isLithium;
|
let curr = !isLithium;
|
let leakVol = !isLithium;
|
let dianchigaojing = !isLithium;
|
let monConnRes = !isLithium;
|
|
return {
|
vol: vol,
|
res: res,
|
temp: temp,
|
conduct: conduct,
|
curr: curr,
|
leakVol: leakVol,
|
dianchigaojing: dianchigaojing,
|
monConnRes: monConnRes,
|
};
|
},
|
isTestDev() {
|
let batt = this.batt;
|
let isFalseLoad = regEquipType(batt.FBSDeviceId, "BTS9110");
|
//return !isFalseLoad;
|
return true;
|
},
|
},
|
created() {
|
this.skinActive = localStorage.getItem("activeSkin");
|
window.parent.addEventListener("activeSkin", (e) => {
|
this.skinActive = e.newValue;
|
this.changeSkin();
|
});
|
this.changeSkin();
|
},
|
mounted() {
|
let BattGroupId = this.$route.params.BattGroupId;
|
if (BattGroupId) {
|
this.getBattGroupInfo(BattGroupId);
|
}
|
|
// 查询拓扑图状态的显示
|
this.searchStatus();
|
// 查询控制按钮的配置
|
this.searchControl();
|
// 初始化图表
|
this.initChart();
|
|
this.$nextTick(() => {
|
this.$G.chartManage.resize(this.acTabs);
|
});
|
|
// 屏幕缩放时触发
|
window.addEventListener("resize", this.resize);
|
|
// 监控是否已经切换到当前页面
|
this.monitorPage();
|
// 监听点击事件
|
// this.$G.chartManage.get("vol").getZr().on('contextmenu', params=>{
|
// let pointInPixel= [params.offsetX, params.offsetY];
|
// console.log(this.$G.chartManage.get("vol").containPixel('grid',pointInPixel));
|
// this.setRightMenuPos(params.event.clientX, params.event.clientY);
|
// });
|
},
|
destroyed() {
|
window.removeEventListener("resize", this.resize);
|
this.timer.stop();
|
},
|
};
|
</script>
|
|
<style scoped>
|
.page-real-time {
|
color: #ffffff;
|
}
|
|
.table-cell.text-right {
|
font-size: 14px;
|
}
|
|
.table-cell.text-right .iconfont {
|
margin-right: 4px;
|
}
|
|
.table-row.table-row-error {
|
color: #ff0000;
|
}
|
|
.table-row.table-row-warn {
|
color: #e6a23c;
|
}
|
|
.table-row .table-cell {
|
padding-top: 8px;
|
}
|
|
.page-content {
|
position: relative;
|
padding-top: 8px;
|
padding-bottom: 2px;
|
box-sizing: border-box;
|
height: 100%;
|
}
|
|
.box-tools {
|
line-height: 32px;
|
}
|
|
.box-tools .iconfont,
|
.box-tools .el-iconfont {
|
font-size: 24px;
|
}
|
|
.box-tools .iconfont:hover,
|
.box-tools .el-iconfont:hover {
|
cursor: pointer;
|
color: #cfcfcf;
|
}
|
|
.box-tools .iconfont:active,
|
.box-tools .el-iconfont:active {
|
color: #ff0000;
|
}
|
|
.page-content-tools {
|
position: absolute;
|
top: 14px;
|
right: 8px;
|
z-index: 99;
|
}
|
|
.hdw-btn {
|
display: inline-block;
|
color: #fff;
|
background-color: #409eff;
|
border-color: #409eff;
|
line-height: 1;
|
white-space: nowrap;
|
cursor: pointer;
|
-webkit-appearance: none;
|
text-align: center;
|
box-sizing: border-box;
|
outline: none;
|
margin: 0;
|
transition: 0.1s;
|
font-weight: 500;
|
-webkit-user-select: none;
|
-moz-user-select: none;
|
-ms-user-select: none;
|
user-select: none;
|
padding: 6px 10px;
|
font-size: 14px;
|
border-radius: 4px;
|
}
|
|
.hdw-btn:hover {
|
background-color: #3c91e6;
|
}
|
|
.hdw-menu-list {
|
border: 1px solid #409eff;
|
}
|
|
.hdw-menu-list .hdw-menu-item {
|
border-top: 1px solid #0e5194;
|
}
|
|
.hdw-menu-list .hdw-menu-item:first-child {
|
border-top: none;
|
}
|
|
.hdw-menu-item a {
|
display: block;
|
text-align: center;
|
padding: 8px;
|
color: #ffffff;
|
cursor: pointer;
|
background-color: rgba(30, 125, 219, 0.767);
|
}
|
|
.hdw-menu-item a:hover {
|
background-color: rgb(60, 135, 211);
|
}
|
|
.hdw-menu-item a:active {
|
background-color: rgb(34, 100, 167);
|
}
|
|
.hdw-state-list {
|
box-sizing: border-box;
|
font-size: 14px;
|
padding-bottom: 8px;
|
}
|
|
.table-info-list {
|
width: 100%;
|
font-size: 14px;
|
}
|
|
.table-info-list td {
|
padding: 4px;
|
text-align: center;
|
}
|
|
.noborder {
|
border: none;
|
}
|
|
.el-table-wrapper {
|
background-color: #052272;
|
}
|
|
.flex-box-list,
|
.flex-box-list-full {
|
display: flex;
|
flex-direction: row;
|
height: 50%;
|
box-sizing: border-box;
|
}
|
|
.flex-box-list-full {
|
height: 100%;
|
}
|
|
.flex-box-mgr {
|
margin: 16px;
|
}
|
|
.page-content .flex-box {
|
flex: 1;
|
overflow: hidden;
|
}
|
|
.dianchigaojing {
|
padding: 5px;
|
height: 100%;
|
}
|
|
.dianchigaojing .borderBox {
|
border: 1px solid #00fefe;
|
padding: 5px;
|
}
|
|
.dianchigaojing .borderBox.box1 {
|
margin-bottom: 5px;
|
height: 110px;
|
}
|
|
.dianchigaojing .borderBox.box2 {
|
height: calc(100% - 140px);
|
}
|
|
.lampImg {
|
height: 28px;
|
}
|
.box-header {
|
font-size: 14px;
|
padding: 0;
|
}
|
</style>
|