whychdw
2020-10-19 cecaef14bbd8d4e1f63415b0aa5c53a9c6330e01
表格样式修改
18个文件已修改
2418 ■■■■ 已修改文件
package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/common.css 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/theme/science-blue.css 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/realTime.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmMager/batterypaSetting.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmMager/batteryrHistoryquery.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmMager/batteryrTimequery.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmMager/deviceHistoryquery.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmMager/deviceTimequery.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmMager/devicepaSetting.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/dataMager/btsStatus.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/dataMager/dischargeTest.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/dataMager/historyInfoMager.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/dataTest/realTime.vue 2317 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/jobManage/planManage.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/userMager/operationRecord.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/userMager/userInfo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目需求.md 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -1,6 +1,6 @@
{
  "name": "admin_manage",
  "version": "2.1.1",
  "version": "2.1.2",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve --mode dev",
src/assets/css/common.css
@@ -44,14 +44,14 @@
}
.filter-box-table {
    box-sizing: border-box;
    border-top: 1px solid #675e5e;
    border-right: 1px solid #675e5e;
    border-left: 1px solid #675e5e;
    border-top: 1px solid #4ba1fa;
    border-right: 1px solid #4ba1fa;
    border-left: 1px solid #4ba1fa;
}
.filter-box-table .table-cell {
    padding-top: 6px;
    padding-bottom: 6px;
    border-bottom: 1px solid #675e5e;
    border-bottom: 1px solid #4ba1fa;
}
.filter-box-table .table-cell {
    box-sizing: border-box;
src/assets/css/theme/science-blue.css
@@ -189,10 +189,11 @@
    background: none;
}
.el-science-blue .el-table th{
    background-image: linear-gradient(#62b0fa, #3497f3, #1660B9);
    background: none;
}
.el-science-blue .el-table thead {
    color: #FFFFFF;
    color: #d3ac6d;
    font-weight: bold;
}
.el-science-blue .el-table--enable-row-hover .el-table__body tr:hover>td,
.el-science-blue .el-table__body tr.hover-row>td {
@@ -201,7 +202,16 @@
.el-science-blue .el-table__fixed-right {
    background-color: #1d4a77;
}
.el-science-blue .el-table th.is-leaf {
    border-bottom: none;
}
.el-science-blue .el-table td {
    border-bottom: none;
    background: #0b388a;
}
.el-science-blue .el-table--striped .el-table__body tr.el-table__row--striped td {
    background: none;
}
/* el-popover */
.el-popover {
    padding: 0;
src/assets/js/realTime.js
@@ -179,4 +179,21 @@
        data: "json=" + JSON.stringify(searchParams)
    });
}
/**
 * èŽ·å–è®¾å¤‡çš„é€†å˜ä¿¡æ¯
 * @param dev_id    è®¾å¤‡id
 * @returns {AxiosPromise} è¿”回结果
 */
export const inversionInfo = (dev_id) => {
    // æž„造查询条件
    let params = {
        dev_id: dev_id,
    };
    // æŸ¥è¯¢åŽå°
    return axios({
        method: "post",
        url: "Fbs9100s_nibian_stateAction_action_serchByCondition",
        data: "json=" + JSON.stringify(params)
    });
}
src/pages/alarmMager/batterypaSetting.vue
@@ -1,7 +1,7 @@
<template>
    <flex-layout>
        <div class="table-layout filter-box-table flex-page-content">
            <el-table ref="tableBox" border size="mini" header-row-class-name="header-primary" height="100%" :data="userList"
            <el-table ref="tableBox" stripe size="mini" header-row-class-name="header-primary" height="100%" :data="userList"
             :style="{width: w}">
                <el-table-column prop="UDepartment" :width="80" align="center" label="编号"></el-table-column>
                <el-table-column prop="UName" :min-width="220" align="center" label="告警名称"></el-table-column>
src/pages/alarmMager/batteryrHistoryquery.vue
@@ -99,7 +99,7 @@
        <!-- è¡¨å• -->
        <div class="flex-page-content">
            <div class="batteryrHistoryquery" style="width: 100%;height: 100%;">
                <el-table border size="small" :data="table.datas" height="100%" class="tableCent" ref="goodsDetailTable">
                <el-table stripe size="small" :data="table.datas" height="100%" class="tableCent" ref="goodsDetailTable">
                    <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-column label="确认告警" width="86% " align="center">
@@ -560,7 +560,7 @@
    /* æ¡ä»¶é€‰æ‹© */
    .condiOpt {
        width: 100%;
        border: 1px solid #675e5e;
        border: 1px solid #4ba1fa;
        .trTitle {
            height: 35px;
src/pages/alarmMager/batteryrTimequery.vue
@@ -118,7 +118,7 @@
        </div>
        <!-- è¡¨å• -->
        <div class="flex-page-content">
            <el-table border size="small" :data="table.datas" height="100%" class="tableCent">
            <el-table stripe size="small" :data="table.datas" height="100%" class="tableCent">
                <el-table-column v-for="header in table.headers" :key="header.prop" :prop="header.prop" :label="header.label"
                 :width="header.width" :min-width="header.minWidth" align="center"></el-table-column>
                <el-table-column label="确认告警" align="center" :width="80">
@@ -622,7 +622,7 @@
    .condiOpt {
        width: 100%;
        border: 1px solid #675e5e;
        border: 1px solid #4ba1fa;
        .trTitle {
            height: 35px;
src/pages/alarmMager/deviceHistoryquery.vue
@@ -9,6 +9,7 @@
            @change="changeSelect1"
            :placeholder="this.selectPlace1"
            class="weihu"
            size="small"
          >
            <el-option
              v-for="item in devss"
@@ -20,7 +21,7 @@
        </div>
        <div class="table-cell text-right">机房名称:</div>
        <div class="table-cell">
            <el-select v-model="selectValue2"  class="rooms" @change="alramData">
            <el-select v-model="selectValue2"  class="rooms" @change="alramData" size="small">
              <el-option
                  v-for="item in opt"
                  :key="item.value"
@@ -38,7 +39,7 @@
    </div>
    <!-- è¡¨å• -->
    <div class="flex-page-content">
      <el-table border size="small" :data="table.datas" height="100%" class="tableCent">
      <el-table stripe size="small" :data="table.datas" height="100%" class="tableCent">
        <el-table-column
          v-for="header in table.headers"
          :key="header.prop"
src/pages/alarmMager/deviceTimequery.vue
@@ -9,6 +9,7 @@
              @change="changeSelect1"
              :placeholder="this.selectPlace1"
              class="weihu"
              size="small"
            >
              <el-option
                v-for="item in newDevie"
@@ -20,7 +21,7 @@
          </div>
          <div class="table-cell text-right">机房名称:</div>
          <div class="table-cell">
              <el-select v-model="selectValue2" @change="alarmDev" class="rooms">
              <el-select v-model="selectValue2" @change="alarmDev" class="rooms" size="small">
                <el-option
                    v-for="item in sesionsNews"
                    :key="item.value"
@@ -31,7 +32,7 @@
          </div>
          <div class="table-cell text-right">告警类型:</div>
          <div class="table-cell">
              <el-select placeholder="全部" class="dainchi" v-model="value">
              <el-select placeholder="全部" class="dainchi" v-model="value" size="small">
                <el-option
                    v-for="item in options"
                    :key="item.value"
@@ -44,7 +45,7 @@
    </div>
    <!-- è¡¨å• -->
    <div class="flex-page-content">
      <el-table border size="small" :data="table.datas" height="100%">
      <el-table stripe size="small" :data="table.datas" height="100%">
        <el-table-column
          v-for="header in table.headers"
          :key="header.prop"
src/pages/alarmMager/devicepaSetting.vue
@@ -6,13 +6,13 @@
                <div class="table-row">
                    <div class="table-cell text-right">设备</div>
                    <div class="table-cell">
                        <el-select :placeholder="selectPlace1" class="rooms" v-model="selectValue1" @change="sears">
                        <el-select :placeholder="selectPlace1" class="rooms" v-model="selectValue1" @change="sears" size="small">
                            <el-option v-for="item in sesionsNews" :key="item.value" :label="item.label" :value="item.id"></el-option>
                        </el-select>
                    </div>
                    <div class="table-cell text-right">告警名称</div>
                    <div class="table-cell">
                        <el-select placeholder="全部(共9种)" class="dainchi" v-model="valueAlam" @change="sears">
                        <el-select placeholder="全部(共9种)" class="dainchi" v-model="valueAlam" @change="sears" size="small">
                            <el-option v-for="item in devAranam" :key="item.value" :label="item.label" :value="item.value"></el-option>
                        </el-select>
                    </div>
@@ -22,7 +22,7 @@
        <!-- å†…容 -->
        <div class="flex-page-content aa">
            <el-table ref="tableBox" border size="mini" header-row-class-name="header-primary" height="100%" :data="userList"
            <el-table ref="tableBox" stripe size="mini" header-row-class-name="header-primary" height="100%" :data="userList"
             :style="{width: w}">
                <el-table-column prop="UDepartment" :min-width="240" align="center" label="设备"></el-table-column>
                <el-table-column prop="UName" :min-width="220" align="center" label="告警名称"></el-table-column>
src/pages/dataMager/btsStatus.vue
@@ -32,7 +32,7 @@
      </div>
      <div class="flex-page-content">
          <!-- è¡¨å• -->
          <el-table border size="small" :data="dataList" height="100%" class="tableCent">
          <el-table stripe size="small" :data="dataList" height="100%" class="tableCent">
            <el-table-column prop="stationName" align="center" label="机房名称"></el-table-column>
            <el-table-column prop="dev_id" align="center" label="设备ID"></el-table-column>
            <el-table-column prop="deviceName" align="center" label="设备名称"></el-table-column>
src/pages/dataMager/dischargeTest.vue
@@ -48,15 +48,14 @@
        </table>
      </div>
      <!-- è¡¨å• -->
      <el-table border size="small" :data="table.datas" height="82%" class="tableCent">
      <el-table stripe size="small" :data="table.datas" height="82%" class="tableCent">
        <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>
          align="center"></el-table-column>
      </el-table>
      <!-- åº•部 -->
src/pages/dataMager/historyInfoMager.vue
@@ -68,7 +68,7 @@
      </div>
      <div class="flex-page-content">
          <!-- è¡¨å• -->
          <el-table border size="small" :data="table.datas" height="100%" class="tableCent">
          <el-table stripe size="small" :data="table.datas" height="100%" class="tableCent">
            <el-table-column
              v-for="header in table.headers"
              :key="header.prop"
@@ -150,7 +150,7 @@
                {
                    prop: "StationName",
                    label: "机房名称",
                    width: "200"
                    width: "360"
                },
                {
                    prop: "BattGroupName",
@@ -160,7 +160,7 @@
                {
                    prop: "test_starttime",
                    label: "测试日期",
                    width: "100"
                    width: "150"
                },
                {
                    prop: "test_starttypeHex",
src/pages/dataTest/realTime.vue
@@ -1,1206 +1,1215 @@
<template>
    <flex-layout direction="row" class="page-real-time">
        <home-list 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>
            <flex-layout>
                <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">
                        <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="control.data.setSystemParams.show">
                                        <a @click="systemDialog.show = 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 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);">停止离线养护</a>
                                    </li>
                                    <li class="hdw-menu-item" v-if="control.data.circleRestart.show">
                                        <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);">重启设备</a>
                                    </li>
                                </ul>
                            </div>
                            <button class="hdw-btn transparentBtn" slot="reference">
                                <span>远程管理</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 label="电路拓扑图" name="eleLine">
                            <science-box :top="8" :left="8" no-header v-show="stateListState">
                                <div class="hdw-state-list table-layout">
                                    <div v-for="state in showStateList" :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>
                            <circuit-diagram :online-vol="inputs.online_vol" :group-vol="inputs.group_vol" :batt-curr="inputs.group_curr"
                             :dev-temp="diagram.temp" :type="diagram.type"></circuit-diagram>
                        </el-tab-pane>
                        <el-tab-pane label="电压" name="vol">
                            <bar-chart ref="vol" id="vol" unit="V"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="内阻" name="res">
                            <bar-chart ref="res" id="res" unit="mΩ" max-color="red" min-color="green"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="温度" name="temp">
                            <bar-chart ref="temp" id="temp" unit="℃" max-color="red" min-color="green"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="电导" name="conduct">
                            <bar-chart ref="conduct" id="conduct"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="均衡电流" name="curr">
                            <bar-chart ref="curr" id="curr" unit="A"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="数据表格" name="tblData">
                            <el-table border 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-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"></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>
    </flex-layout>
    <flex-layout direction="row" class="page-real-time">
        <home-list 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>
            <flex-layout>
                <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">
                        <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="control.data.setSystemParams.show">
                                        <a @click="systemDialog.show = 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 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);">停止离线养护</a>
                                    </li>
                                    <li class="hdw-menu-item" v-if="control.data.circleRestart.show">
                                        <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);">重启设备</a>
                                    </li>
                                </ul>
                            </div>
                            <button class="hdw-btn transparentBtn" slot="reference">
                                <span>远程管理</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 label="电路拓扑图" name="eleLine">
                            <science-box :top="8" :left="8" no-header v-show="stateListState">
                                <div class="hdw-state-list table-layout">
                                    <div v-for="state in showStateList" :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>
                            <circuit-diagram :online-vol="inputs.online_vol" :group-vol="inputs.group_vol" :batt-curr="inputs.group_curr"
                                             :dev-temp="diagram.temp" :type="diagram.type"></circuit-diagram>
                        </el-tab-pane>
                        <el-tab-pane label="电压" name="vol">
                            <bar-chart ref="vol" id="vol" unit="V"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="内阻" name="res">
                            <bar-chart ref="res" id="res" unit="mΩ" max-color="red" min-color="green"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="温度" name="temp">
                            <bar-chart ref="temp" id="temp" unit="℃" max-color="red" min-color="green"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="电导" name="conduct">
                            <bar-chart ref="conduct" id="conduct"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="均衡电流" name="curr">
                            <bar-chart ref="curr" id="curr" unit="A"></bar-chart>
                        </el-tab-pane>
                        <el-tab-pane label="数据表格" name="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-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"></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>
    </flex-layout>
</template>
<script>
    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 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 {
        realTimeSearch,
        realTimeGroup,
        realTimeAlarm,
        realTimePowerOff,
        realTimeStateList
    } from "../../assets/js/realTime";
    import {
        formatSeconds,
        sethoubeiTime,
        Timeout,
        regEquipType,
        getBarNum
    } from "../../assets/js/tools";
import {
    realTimeSearch,
    realTimeGroup,
    realTimeAlarm,
    realTimePowerOff,
    realTimeStateList
} from "../../assets/js/realTime";
import {
    formatSeconds,
    sethoubeiTime,
    Timeout,
    regEquipType,
    getBarNum
} from "../../assets/js/tools";
    import {
        const_61850
    } from "../../assets/js/const";
    /* import moment from "moment"; */
    let vol, resChart, temp, conduct, currChart;
    export default {
        components: {
            ContentBox,
            HomeList,
            BarChart,
            CircuitDiagram,
            ScienceBox,
            DischargeDialogContent,
            SystemParams,
            CuringParams,
            OutlineCuringParams,
            RestartPlanParams
        },
        data() {
            return {
                username: sessionStorage.getItem('username'),
                /* ç”µæ± çŠ¶æ€ æ¨¡å— ç»„端展示 */
                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 /* ç”µæ± çŠ¶æ€ */
                },
                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: "curr1",
                            label: "均衡电流(A)",
                            width: ""
                        }
                    ],
                    datas: [{
                        num1: 0,
                        vol1: 0,
                        res1: 0,
                        temp1: 0,
                        conduct1: 0,
                        curr1: 0
                    }]
                },
                batt: {},
                stateListShow: true,
                stateList: [{
                        id: 1,
                        name: "workState",
                        type: "",
                        icon: "",
                        text: "设备工作状态:",
                        value: "在线浮充",
                        show: false
                    },
                    {
                        id: 2,
                        name: "connect",
                        type: "",
                        icon: "el-icon-tongxun",
                        text: "设备通讯:",
                        value: "正常",
                        show: false
                    },
                    {
                        id: 3,
                        name: "devTemp",
                        type: "",
                        icon: "el-icon-wendu",
                        text: "设备温度:",
                        value: "正常",
                        show: false
                    },
                    {
                        id: 4,
                        name: "contact",
                        type: "",
                        icon: "el-icon-fenxiang",
                        text: "干接点:",
                        value: "正常",
                        show: false
                    },
                    {
                        id: 5,
                        name: "stopReason",
                        type: "",
                        icon: "",
                        text: "核容终止原因:",
                        value: "未知",
                        show: false
                    },
                    {
                        id: 6,
                        name: "failReason",
                        type: "",
                        icon: "",
                        text: "操作失败原因:",
                        value: "未知",
                        show: false
                    },
                    {
                        id: 7,
                        name: "resDay",
                        type: "",
                        icon: "",
                        text: "剩余天数:",
                        value: "0",
                        show: false
                    },
                    {
                        id: 8,
                        name: "workMode",
                        type: "",
                        icon: "",
                        text: "工作模式:",
                        value: "停止",
                        show: false
                    },
                    {
                        id: 9,
                        name: "groupVol",
                        type: "",
                        icon: "",
                        text: "组端电压:",
                        value: "0",
                        unit: "V",
                        show: false
                    },
                    {
                        id: 10,
                        name: "peakVol",
                        type: "",
                        icon: "",
                        text: "峰值电压:",
                        value: "0",
                        unit: "V",
                        show: false
                    }
                ],
                timer: new Timeout('realTime'),
                diagram: {
                    type: -1,
                    desc: "",
                    temp: 0 // è®¾å¤‡æ¸©åº¦
                },
                dischargeDialog: {
                    show: false
                },
                systemDialog: {
                    show: false,
                },
                curingDialog: {
                    show: false,
                },
                outlineCuringDialog: {
                    show: false
                },
                restartPlanDialog: {
                    show: false,
                },
                control: {
                    show: false,
                    data: {
                        startTest: { // å¯åŠ¨æ ¸å®¹æµ‹è¯•
                            show: true,
                            id: 11,
                        },
                        stopTest: { // åœæ­¢æµ‹è¯•
                            show: true,
                            id: 12
                        },
                        setSystemParams: { // ç³»ç»Ÿå‚数设置
                            show: true,
                            id: 13
                        },
                        clearWarn: { // æ¸…理告警
                            show: true,
                            id: 14
                        },
                        startYH: { // å¯åŠ¨å…»æŠ¤/除硫
                            show: true,
                            id: 15
                        },
                        stopYH: { // åœæ­¢å…»æŠ¤/除硫
                            show: true,
                            id: 16
                        },
                        startOutlineYH: { // å¯åŠ¨ç¦»çº¿å…»æŠ¤/除硫
                            show: true,
                            id: 17
                        },
                        stopOutlineYH: { // åœæ­¢ç¦»çº¿å…»æŠ¤/除硫
                            show: true,
                            id: 18
                        },
                        circleRestart: { // å®šæœŸé‡å¯
                            show: true,
                            id: 19
                        },
                        restart: { // é‡å¯
                            show: true,
                            id: 20
                        },
                    }
                }
            };
        },
        methods: {
            tabClick(tab) {
                this.$nextTick(() => {
                    this.$G.chartManage.resize(tab.name);
                });
            },
            toggleChange() {
                this.resize();
            },
            resize() {
                this.$G.chartManage.resize(this.acTabs);
            },
            initChart() {
                // ç”µåŽ‹
                vol = {
                    title: {
                        show: true,
                        text: "最大值=0V;最小值=0V;平均值=0V",
                        x: "center",
                        textStyle: {
                            fontSize: "14"
                        }
                    },
                    series: [{
                        name: "电压",
                        type: "bar",
                        data: []
                    }]
                };
import {
    const_61850
} from "../../assets/js/const";
/* import moment from "moment"; */
let vol, resChart, temp, conduct, currChart;
export default {
    components: {
        ContentBox,
        HomeList,
        BarChart,
        CircuitDiagram,
        ScienceBox,
        DischargeDialogContent,
        SystemParams,
        CuringParams,
        OutlineCuringParams,
        RestartPlanParams
    },
    data() {
        return {
            username: sessionStorage.getItem('username'),
            /* ç”µæ± çŠ¶æ€ æ¨¡å— ç»„端展示 */
            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 /* ç”µæ± çŠ¶æ€ */
            },
            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: "curr1",
                        label: "均衡电流(A)",
                        width: ""
                    }
                ],
                datas: [{
                    num1: 0,
                    vol1: 0,
                    res1: 0,
                    temp1: 0,
                    conduct1: 0,
                    curr1: 0
                }]
            },
            batt: {},
            stateListShow: true,
            stateList: [{
                id: 1,
                name: "workState",
                type: "",
                icon: "",
                text: "设备工作状态:",
                value: "在线浮充",
                show: false
            },
                {
                    id: 2,
                    name: "connect",
                    type: "",
                    icon: "el-icon-tongxun",
                    text: "设备通讯:",
                    value: "正常",
                    show: false
                },
                {
                    id: 3,
                    name: "devTemp",
                    type: "",
                    icon: "el-icon-wendu",
                    text: "设备温度:",
                    value: "正常",
                    show: false
                },
                {
                    id: 4,
                    name: "contact",
                    type: "",
                    icon: "el-icon-fenxiang",
                    text: "干接点:",
                    value: "正常",
                    show: false
                },
                {
                    id: 5,
                    name: "stopReason",
                    type: "",
                    icon: "",
                    text: "核容终止原因:",
                    value: "未知",
                    show: false
                },
                {
                    id: 6,
                    name: "failReason",
                    type: "",
                    icon: "",
                    text: "操作失败原因:",
                    value: "未知",
                    show: false
                },
                {
                    id: 7,
                    name: "resDay",
                    type: "",
                    icon: "",
                    text: "剩余天数:",
                    value: "0",
                    show: false
                },
                {
                    id: 8,
                    name: "workMode",
                    type: "",
                    icon: "",
                    text: "工作模式:",
                    value: "停止",
                    show: false
                },
                {
                    id: 9,
                    name: "groupVol",
                    type: "",
                    icon: "",
                    text: "组端电压:",
                    value: "0",
                    unit: "V",
                    show: false
                },
                {
                    id: 10,
                    name: "peakVol",
                    type: "",
                    icon: "",
                    text: "峰值电压:",
                    value: "0",
                    unit: "V",
                    show: false
                }
            ],
            timer: new Timeout('realTime'),
            diagram: {
                type: -1,
                desc: "",
                temp: 0 // è®¾å¤‡æ¸©åº¦
            },
            dischargeDialog: {
                show: false
            },
            systemDialog: {
                show: false,
            },
            curingDialog: {
                show: false,
            },
            outlineCuringDialog: {
                show: false
            },
            restartPlanDialog: {
                show: false,
            },
            control: {
                show: false,
                data: {
                    startTest: { // å¯åŠ¨æ ¸å®¹æµ‹è¯•
                        show: true,
                        id: 11,
                    },
                    stopTest: { // åœæ­¢æµ‹è¯•
                        show: true,
                        id: 12
                    },
                    setSystemParams: { // ç³»ç»Ÿå‚数设置
                        show: true,
                        id: 13
                    },
                    clearWarn: { // æ¸…理告警
                        show: true,
                        id: 14
                    },
                    startYH: { // å¯åŠ¨å…»æŠ¤/除硫
                        show: true,
                        id: 15
                    },
                    stopYH: { // åœæ­¢å…»æŠ¤/除硫
                        show: true,
                        id: 16
                    },
                    startOutlineYH: { // å¯åŠ¨ç¦»çº¿å…»æŠ¤/除硫
                        show: true,
                        id: 17
                    },
                    stopOutlineYH: { // åœæ­¢ç¦»çº¿å…»æŠ¤/除硫
                        show: true,
                        id: 18
                    },
                    circleRestart: { // å®šæœŸé‡å¯
                        show: true,
                        id: 19
                    },
                    restart: { // é‡å¯
                        show: true,
                        id: 20
                    },
                }
            }
        };
    },
    methods: {
        tabClick(tab) {
            this.$nextTick(() => {
                this.$G.chartManage.resize(tab.name);
            });
        },
        toggleChange() {
            this.resize();
        },
        resize() {
            this.$G.chartManage.resize(this.acTabs);
        },
        initChart() {
            // ç”µåŽ‹
            vol = {
                title: {
                    show: true,
                    text: "最大值=0V;最小值=0V;平均值=0V",
                    x: "center",
                    textStyle: {
                        fontSize: "14"
                    }
                },
                series: [{
                    name: "电压",
                    type: "bar",
                    data: []
                }]
            };
                // å†…阻
                resChart = {
                    title: {
                        show: true,
                        text: "最大值=0mΩ;最小值=mΩ;平均值=0mΩ",
                        x: "center",
                        textStyle: {
                            fontSize: "14"
                        }
                    },
                    series: [{
                        name: "内阻",
                        type: "bar",
                        data: []
                    }]
                };
            // å†…阻
            resChart = {
                title: {
                    show: true,
                    text: "最大值=0mΩ;最小值=mΩ;平均值=0mΩ",
                    x: "center",
                    textStyle: {
                        fontSize: "14"
                    }
                },
                series: [{
                    name: "内阻",
                    type: "bar",
                    data: []
                }]
            };
                // æ¸©åº¦
                temp = {
                    title: {
                        show: true,
                        text: "最大值=0℃;最小值=0℃;平均值=0℃",
                        x: "center",
                        textStyle: {
                            fontSize: "14"
                        }
                    },
                    series: [{
                        name: "温度",
                        type: "bar",
                        data: []
                    }]
                };
            // æ¸©åº¦
            temp = {
                title: {
                    show: true,
                    text: "最大值=0℃;最小值=0℃;平均值=0℃",
                    x: "center",
                    textStyle: {
                        fontSize: "14"
                    }
                },
                series: [{
                    name: "温度",
                    type: "bar",
                    data: []
                }]
            };
                // ç”µå¯¼
                conduct = {
                    title: {
                        show: true,
                        text: "最大值=0;最小值=0;平均值=0",
                        x: "center",
                        textStyle: {
                            fontSize: "14"
                        }
                    },
                    series: [{
                        name: "电导",
                        type: "bar",
                        data: []
                    }]
                };
                // å‡è¡¡ç”µæµ
                currChart = {
                    title: {
                        show: true,
                        text: "最大值=0mA;最小值=0mA;平均值=0mA",
                        x: "center",
                        textStyle: {
                            fontSize: "14"
                        }
                    },
                    series: [{
                        name: "均衡电流",
                        type: "bar",
                        data: []
                    }]
                };
                // è®¾ç½®é…ç½®é¡¹
                this.setChart();
            },
            setChart() {
                this.$refs.vol.setOption(vol);
                this.$refs.res.setOption(resChart);
                this.$refs.temp.setOption(temp);
                this.$refs.conduct.setOption(conduct);
                this.$refs.curr.setOption(currChart);
            },
            startTimer() {
                this.timer.start(() => {
                    this.$axios
                        .all([
                            this.realTimeSearch(),
                            this.realTimeGroupss(),
                            this.realTimePowerOffs(),
                            this.realTimeStateList(),
                        ])
                        .then(() => {
                            this.timer.open();
                        })
                        .catch(() => {
                            this.timer.open();
                        });
                }, 3000);
            },
            leafClick(data) {
                this.batt = data;
                this.realTimeAlarmss();
                // å¼€å¯å¾ªçŽ¯è¯·æ±‚
                this.startTimer();
            },
            /* æŸ¥è¯¢ç”µæ± å‘Šè­¦å‚æ•° */
            realTimeAlarmss() {
                var batt = this.batt;
                realTimeAlarm({
                    dev_id: batt.FBSDeviceId
                }).then(res => {
                    let rsccc = JSON.parse(res.data.result);
                });
            },
            /* å®žæ—¶ç»„端信息 */
            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];
                    }
                });
            },
            /* æŸ¥è¯¢ç”µè·¯å›¾å¼€å…³çŠ¶æ€å’Œä¿¡æ¯ */
            realTimePowerOffs() {
                let batt = this.batt;
                // è®¾å¤‡ä¸º61850显示右侧的面板
                if (regEquipType(batt.FBSDeviceId, "equip61850")) {
                    this.stateListShow = true;
                } else {
                    this.stateListShow = false;
                }
            // ç”µå¯¼
            conduct = {
                title: {
                    show: true,
                    text: "最大值=0;最小值=0;平均值=0",
                    x: "center",
                    textStyle: {
                        fontSize: "14"
                    }
                },
                series: [{
                    name: "电导",
                    type: "bar",
                    data: []
                }]
            };
            // å‡è¡¡ç”µæµ
            currChart = {
                title: {
                    show: true,
                    text: "最大值=0mA;最小值=0mA;平均值=0mA",
                    x: "center",
                    textStyle: {
                        fontSize: "14"
                    }
                },
                series: [{
                    name: "均衡电流",
                    type: "bar",
                    data: []
                }]
            };
            // è®¾ç½®é…ç½®é¡¹
            this.setChart();
        },
        setChart() {
            this.$refs.vol.setOption(vol);
            this.$refs.res.setOption(resChart);
            this.$refs.temp.setOption(temp);
            this.$refs.conduct.setOption(conduct);
            this.$refs.curr.setOption(currChart);
        },
        startTimer() {
            this.timer.start(() => {
                this.$axios
                    .all([
                        this.realTimeSearch(),
                        this.realTimeGroupss(),
                        this.realTimePowerOffs(),
                        this.realTimeStateList(),
                    ])
                    .then(() => {
                        this.timer.open();
                    })
                    .catch(() => {
                        this.timer.open();
                    });
            }, 3000);
        },
        leafClick(data) {
            this.batt = data;
            this.realTimeAlarmss();
            // å¼€å¯å¾ªçŽ¯è¯·æ±‚
            this.startTimer();
        },
        /* æŸ¥è¯¢ç”µæ± å‘Šè­¦å‚æ•° */
        realTimeAlarmss() {
            var batt = this.batt;
            realTimeAlarm({
                dev_id: batt.FBSDeviceId
            }).then(res => {
                let rsccc = JSON.parse(res.data.result);
            });
        },
        /* å®žæ—¶ç»„端信息 */
        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];
                }
            });
        },
        /* æŸ¥è¯¢ç”µè·¯å›¾å¼€å…³çŠ¶æ€å’Œä¿¡æ¯ */
        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.setEquipBase(data);
            // æŸ¥è¯¢åŽå°æ•°æ®
            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.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 {
                            // æœªè¶…时执行逻辑
                            // è®¾å¤‡ä¸º61850
                            if (regEquipType(batt.FBSDeviceId, "equip61850")) {
                                this.setEquip61850(data);
                            }
                        }
                    } else {
                        // è®¾å¤‡å¤„于未连接
                        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", "未知");
            },
            // åŸºç¡€ä¿¡æ¯
            setEquipBase(data) {
                // è®¾å¤‡çš„æ¸©åº¦
                this.diagram.temp = data.dev_temp;
            },
            // 61850设备信息
            setEquip61850(data) {
                //  ç”µè·¯å›¾ç±»åž‹
                let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
                this.diagram.desc = "";
                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 = 7;
                        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 = "(未知)";
                        break;
                }
                    // åˆ¤æ–­æ˜¯å¦è¶…æ—¶
                    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 {
                        // æœªè¶…时执行逻辑
                        // è®¾å¤‡ä¸º61850
                        if (regEquipType(batt.FBSDeviceId, "equip61850")) {
                            this.setEquip61850(data);
                        }
                    }
                } else {
                    // è®¾å¤‡å¤„于未连接
                    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", "未知");
        },
        // åŸºç¡€ä¿¡æ¯
        setEquipBase(data) {
            // è®¾å¤‡çš„æ¸©åº¦
            this.diagram.temp = data.dev_temp;
        },
        // 61850设备信息
        setEquip61850(data) {
            //  ç”µè·¯å›¾ç±»åž‹
            let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
            this.diagram.desc = "";
            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 = 7;
                    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 = "(未知)";
                    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 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 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", "正常", "");
                }
            // å‘Šè­¦ä¿¡æ¯
            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[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", "正常", "");
                }
            },
            // è®¾ç½®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 : "";
                    }
                }
            },
            /* echars图表 */
            realTimeSearch() {
                var batt = this.batt;
                realTimeSearch({
                    BattGroupId: batt.BattGroupId
                }).then(res => {
                    let rs = JSON.parse(res.data.result);
                    if (rs.code == 1) {
                        this.vovo = 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
                            };
                        });
                    }
                    this.table.datas = this.vovo;
            // å¹²æŽ¥ç‚¹
            if (alarms[4] == "true") {
                this.setStateList("contact", "异常", "table-row-error");
            } else {
                this.setStateList("contact", "正常", "");
            }
        },
        // è®¾ç½®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 : "";
                }
            }
        },
        /* echars图表 */
        realTimeSearch() {
            var batt = this.batt;
            realTimeSearch({
                BattGroupId: batt.BattGroupId
            }).then(res => {
                let rs = JSON.parse(res.data.result);
                if (rs.code == 1) {
                    this.vovo = 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
                        };
                    });
                }
                this.table.datas = this.vovo;
                    // ç”µåދ值
                    let volTempVol = [];
                    if (rs.code == 1) {
                        volTempVol = rs.data.map(item => {
                            return ["#" + item.mon_num, item.mon_vol];
                        });
                    }
                    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 volTempVol = [];
                if (rs.code == 1) {
                    volTempVol = rs.data.map(item => {
                        return ["#" + item.mon_num, item.mon_vol];
                    });
                }
                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 => {
                            return ["#" + item.mon_num, item.mon_res];
                        });
                    }
                    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 volTempres = [];
                if (rs.code == 1) {
                    volTempres = rs.data.map(item => {
                        return ["#" + item.mon_num, item.mon_res];
                    });
                }
                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 => {
                            return ["#" + item.mon_num, item.mon_tmp];
                        });
                    }
                    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 volTempte = [];
                if (rs.code == 1) {
                    volTempte = rs.data.map(item => {
                        return ["#" + item.mon_num, item.mon_tmp];
                    });
                }
                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 => {
                            return ["#" + item.mon_num, item.mon_res ? (1 / item.mon_res * 1000).toFixed(0) : 0];
                        });
                    }
                    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 conductTemp = [];
                if (rs.code == 1) {
                    conductTemp = rs.data.map(item => {
                        return ["#" + item.mon_num, item.mon_res ? (1 / item.mon_res * 1000).toFixed(0) : 0];
                    });
                }
                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 => {
                            return ["#" + item.mon_num, item.mon_JH_curr];
                        });
                    }
                    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 currTemp = [];
                if (rs.code == 1) {
                    currTemp = rs.data.map(item => {
                        return ["#" + item.mon_num, item.mon_JH_curr];
                    });
                }
                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;
                    // æ›´æ–°ç”µåŽ‹å›¾è¡¨
                    this.setChart();
                });
            },
            // å‘父级发送同步页面的指令
            syncPage() {
                let batt = this.batt;
                let search =
                    "?province=" +
                    batt.StationName1 +
                    "&city=" +
                    batt.StationName2 +
                    "&county=" +
                    batt.StationName5 +
                    "&home=" +
                    batt.StationName3 +
                    "&batt=" +
                    batt.BattGroupId;
                window.parent.postMessage({
                        cmd: "syncPage",
                        params: {
                            pageInfo: {
                                label: "历史数据",
                                name: "history",
                                src: "#/history" + search,
                                closable: true
                            }
                        }
                    },
                    "*"
                );
            },
            // åœæ­¢æµ‹è¯•
            stopTest() {
                this.$layer.confirm('停止测试', {
                    icon: 3
                }, (index) => {
                    // å…³é—­è¯¢é—®å±‚
                    this.$layer.close(index);
                    // æ ¹æ®è®¾å¤‡id进行停止
                    if (regEquipType(this.batt.FBSDeviceId, 'equip61850')) {
                        // åœæ­¢è®¾å¤‡
                        this.stop61850Test();
                    } else {
                        // æç¤ºä¿¡æ¯
                        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('停止测试失败,停止测试请求异常!');
                });
            },
            // æŸ¥è¯¢æ‹“扑图状态的显示
            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);
                        });
                    }
                }).catch(error => {
                    console.log(error);
                });
            },
            // æŸ¥è¯¢æŽ§åˆ¶æŒ‰é’®çš„内容
            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.setChart();
            });
        },
        // å‘父级发送同步页面的指令
        syncPage() {
            let batt = this.batt;
            let search =
                "?province=" +
                batt.StationName1 +
                "&city=" +
                batt.StationName2 +
                "&county=" +
                batt.StationName5 +
                "&home=" +
                batt.StationName3 +
                "&batt=" +
                batt.BattGroupId;
            window.parent.postMessage({
                    cmd: "syncPage",
                    params: {
                        pageInfo: {
                            label: "历史数据",
                            name: "history",
                            src: "#/history" + search,
                            closable: true
                        }
                    }
                },
                "*"
            );
        },
        // åœæ­¢æµ‹è¯•
        stopTest() {
            this.$layer.confirm('停止测试', {
                icon: 3
            }, (index) => {
                // å…³é—­è¯¢é—®å±‚
                this.$layer.close(index);
                // æ ¹æ®è®¾å¤‡id进行停止
                if (regEquipType(this.batt.FBSDeviceId, 'equip61850')) {
                    // åœæ­¢è®¾å¤‡
                    this.stop61850Test();
                } else {
                    // æç¤ºä¿¡æ¯
                    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('停止测试失败,停止测试请求异常!');
            });
        },
        // æŸ¥è¯¢æ‹“扑图状态的显示
        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);
                    });
                }
            }).catch(error => {
                console.log(error);
            });
        },
        // æŸ¥è¯¢æŽ§åˆ¶æŒ‰é’®çš„内容
        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 = false;
                for (let i = 0; i < list.length; i++) {
                    let item = list[i];
                    if (id == item.id) {
                        result = item.status ? true : false;
                        break;
                    }
                }
                return result;
            },
            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;
                realTimeStateList(batt.FbsDeviceIp).then(res => {
                    let rs = JSON.parse(res.data.result);
                    //console.log(rs);
                }).catch(error => {
                    console.log(error);
                });
            }
        },
        computed: {
            battFullName() {
                let batt = this.batt;
                if (batt.StationName && batt.BattGroupName) {
                    return batt.StationName + "-" + batt.BattGroupName;
                }
                return "电池组全称";
            },
            backInputs() {
                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;
                }
                list.batt_state = obj[this.inputs.batt_state];
                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);
                }
                this.control.show = control; // è®¾ç½®æ•´ä½“显示的状态
            }).catch(error => {
                console.log(error);
            });
        },
        getStateById(id, list) {
            let result = false;
            for (let i = 0; i < list.length; i++) {
                let item = list[i];
                if (id == item.id) {
                    result = item.status ? true : false;
                    break;
                }
            }
            return result;
        },
        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;
            realTimeStateList(batt.FbsDeviceIp).then(res => {
                let rs = JSON.parse(res.data.result);
                //console.log(rs);
            }).catch(error => {
                console.log(error);
            });
        }
    },
    computed: {
        battFullName() {
            let batt = this.batt;
            if (batt.StationName && batt.BattGroupName) {
                return batt.StationName + "-" + batt.BattGroupName;
            }
            return "电池组全称";
        },
        backInputs() {
            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;
            }
            list.batt_state = obj[this.inputs.batt_state];
            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 {
                    list.batt_syrl_cap = this.inputs.batt_rest_cap.toFixed(1) + "AH";
                }
                if (this.inputs.batt_state === 3) {
                    list.sysc = sethoubeiTime(
                        parseFloat(this.inputs.batt_rest_cap) /
                        parseFloat(this.inputs.group_curr)
                    );
                } else {
                    list.sysc = "------";
                }
                return list;
            },
            showStateList() {
                return this.stateList.filter(item => {
                    if (item.show) {
                        return item;
                    }
                });
            },
            dischargeDialogTitle() {
                let batt = this.batt;
                if (regEquipType(batt.FBSDeviceId, "equip61850")) {
                    return "61850放电参数设置";
                } else {
                    return "未知设备(待开发)"
                }
            },
            stateListState() {
                return this.stateListShow && this.showStateList.length;
            }
        },
        mounted() {
            // æŸ¥è¯¢æ‹“扑图状态的显示
            this.searchStatus();
            // æŸ¥è¯¢æŽ§åˆ¶æŒ‰é’®çš„配置
            this.searchControl();
            // åˆå§‹åŒ–图表
            this.initChart();
            list.batt_test_cap = this.inputs.batt_test_cap.toFixed(1) + "AH";
            if (this.inputs.batt_state === 2) {
                list.batt_syrl_cap = "---";
            } else {
                list.batt_syrl_cap = this.inputs.batt_rest_cap.toFixed(1) + "AH";
            }
            if (this.inputs.batt_state === 3) {
                list.sysc = sethoubeiTime(
                    parseFloat(this.inputs.batt_rest_cap) /
                    parseFloat(this.inputs.group_curr)
                );
            } else {
                list.sysc = "------";
            }
            return list;
        },
        showStateList() {
            return this.stateList.filter(item => {
                if (item.show) {
                    return item;
                }
            });
        },
        dischargeDialogTitle() {
            let batt = this.batt;
            if (regEquipType(batt.FBSDeviceId, "equip61850")) {
                return "61850放电参数设置";
            } else {
                return "未知设备(待开发)"
            }
        },
        stateListState() {
            return this.stateListShow && this.showStateList.length;
        }
    },
    mounted() {
        // æŸ¥è¯¢æ‹“扑图状态的显示
        this.searchStatus();
        // æŸ¥è¯¢æŽ§åˆ¶æŒ‰é’®çš„配置
        this.searchControl();
        // åˆå§‹åŒ–图表
        this.initChart();
            this.$nextTick(() => {
                this.$G.chartManage.resize(this.acTabs);
            });
        this.$nextTick(() => {
            this.$G.chartManage.resize(this.acTabs);
        });
            // å±å¹•缩放时触发
            window.addEventListener("resize", () => {
                this.resize();
            });
        },
        destroyed() {
            this.timer.stop();
        }
    };
        // å±å¹•缩放时触发
        window.addEventListener("resize", () => {
            this.resize();
        });
    },
    destroyed() {
        this.timer.stop();
    }
};
</script>
<style scoped>
    .page-real-time {
        color: #ffffff;
    }
.page-real-time {
    color: #ffffff;
}
    .table-cell.text-right {
        font-size: 14px;
    }
.table-cell.text-right {
    font-size: 14px;
}
    .table-cell.text-right .iconfont {
        margin-right: 4px;
    }
.table-cell.text-right .iconfont {
    margin-right: 4px;
}
    .table-row.table-row-error {
        color: #ff0000;
    }
.table-row.table-row-error {
    color: #ff0000;
}
    .table-row.table-row-warn {
        color: #e6a23c;
    }
.table-row.table-row-warn {
    color: #e6a23c;
}
    .table-row .table-cell {
        padding-top: 12px;
    }
.table-row .table-cell {
    padding-top: 12px;
}
    .page-content {
        position: relative;
        padding-top: 8px;
        padding-bottom: 2px;
        box-sizing: border-box;
        height: 100%;
    }
.page-content {
    position: relative;
    padding-top: 8px;
    padding-bottom: 2px;
    box-sizing: border-box;
    height: 100%;
}
    .box-tools {
        line-height: 32px;
    }
.box-tools {
    line-height: 32px;
}
    .box-tools .iconfont {
        font-size: 20px;
    }
.box-tools .iconfont {
    font-size: 20px;
}
    .box-tools .iconfont:hover {
        cursor: pointer;
        color: #cfcfcf;
    }
.box-tools .iconfont:hover {
    cursor: pointer;
    color: #cfcfcf;
}
    .box-tools .iconfont:active {
        color: #ff0000;
    }
.box-tools .iconfont:active {
    color: #ff0000;
}
    .page-content-tools {
        position: absolute;
        top: 14px;
        right: 8px;
        z-index: 99;
    }
.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 {
    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-btn:hover {
    background-color: #3c91e6;
}
    .hdw-menu-list {
        border: 1px solid #409eff;
    }
.hdw-menu-list {
    border: 1px solid #409eff;
}
    .hdw-menu-list .hdw-menu-item {
        border-top: 1px solid #0e5194;
    }
.hdw-menu-list .hdw-menu-item {
    border-top: 1px solid #0e5194;
}
    .hdw-menu-list .hdw-menu-item:first-child {
        border-top: none;
    }
.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 {
    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:hover {
    background-color: rgb(60, 135, 211);
}
    .hdw-menu-item a:active {
        background-color: rgb(34, 100, 167);
    }
.hdw-menu-item a:active {
    background-color: rgb(34, 100, 167);
}
    .hdw-state-list {
        box-sizing: border-box;
        font-size: 14px;
        padding-bottom: 8px;
    }
.hdw-state-list {
    box-sizing: border-box;
    font-size: 14px;
    padding-bottom: 8px;
}
    .noborder {
        border: none;
        border-top: 1px solid #00FEFF;
    }
.noborder {
    border: none;
    border-top: 1px solid #00FEFF;
}
    .transparentBtn {
        background-color: transparent;
        border-color: transparent;
        color: #4ba1fa;
    }
.transparentBtn {
    background-color: transparent;
    border-color: transparent;
    color: #4ba1fa;
}
    .transparentBtn:hover {
        background-color: transparent;
        border-color: transparent;
        color: #00FEFF;
    }
</style>
.transparentBtn:hover {
    background-color: transparent;
    border-color: transparent;
    color: #00FEFF;
}
</style>
src/pages/jobManage/planManage.vue
@@ -64,7 +64,7 @@
        <div class="flex-page-content">
            <div class="contentBox">
                <div class="tableBox">
                    <el-table ref="multipleTable" border size="small" :data="dataList" height="100%" @selection-change="handleSelectionChange" class="tableCent">
                    <el-table ref="multipleTable" stripe size="small" :data="dataList" height="100%" @selection-change="handleSelectionChange" class="tableCent">
                        <el-table-column align="center" width="55" type="selection" label="批量操作"></el-table-column>
                        <el-table-column prop="StationName1" width="120" align="center" label="维护区"></el-table-column>
                        <el-table-column prop="StationName" width="120" align="center" label="机房名称"></el-table-column>
@@ -98,12 +98,11 @@
                        <el-table-column prop="chargecurrset" width="120" align="center" label="充电电流(A)"></el-table-column>
                        <el-table-column prop="plan_circle" width="120" align="center" label="单次周期(天)"></el-table-column>
                        <el-table-column prop="plan_rate" width="120" align="center" label="执行次数"></el-table-column>
                        <el-table-column prop="plan_rate" fixed="right" width="420" align="center" label="操作">
                        <el-table-column prop="plan_rate" fixed="right" width="240" align="center" label="操作">
                            <template slot-scope="scope">
                                <el-button type="primary" @click="consoleLog(scope.row)" size="mini">启用计划</el-button>
                                <el-button type="info" size="mini">取消计划</el-button>
                                <el-button type="warning" size="mini" @click="clearSelect">取消选择</el-button>
                                <el-button type="danger" size="mini">删除计划</el-button>
                                <el-button type="primary" @click="consoleLog(scope.row)" size="mini">启用</el-button>
                                <el-button type="info" size="mini">取消</el-button>
                                <el-button type="danger" size="mini">删除</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
src/pages/userMager/operationRecord.vue
@@ -34,7 +34,7 @@
            </div>
        </div>
        <div class="flex-page-content">
            <el-table border size="mini" header-row-class-name="header-primary" height="100%" :data="userList">
            <el-table stripe size="mini" header-row-class-name="header-primary" height="100%" :data="userList">
                <el-table-column prop="uId" align="center" label="用户ID"></el-table-column>
                <el-table-column prop="UName" align="center" label="操作人姓名"></el-table-column>
                <el-table-column prop="uOprateType" align="center" label="操作类型"></el-table-column>
src/pages/userMager/userInfo.vue
@@ -2,7 +2,7 @@
    <!-- ç”¨æˆ·ä¿¡æ¯ -->
    <flex-layout>
        <div class="flex-page-content">
                <el-table ref="tableBox" border size="mini" header-row-class-name="header-primary" height="100%"  :data="userList">
                <el-table ref="tableBox" stripe size="mini" header-row-class-name="header-primary" height="100%"  :data="userList">
                    <el-table-column prop="UDepartment" width="60px"  align="center"  label="维护区"></el-table-column>
                    <el-table-column prop="UName" width="90px" align="center"  label="姓名"></el-table-column>
                    <el-table-column prop="UShenFenId"  width="90px" align="center"  label="身份证号"></el-table-column>
ÏîÄ¿ÐèÇó.md
@@ -18,7 +18,7 @@
1.修改色调
2.表格线条颜色修改
3.百度地图淡化,右下角添加图标标识,去除右侧的饼状图。引入inmap框架(重要)
4.实时数据tab切换最后位置添加逆变信息,最前方添加电源信息(重要)
4.实时数据tab切换最后位置添加逆变信息,最前方添加电源信息,默认显示电路拓扑图(重要)
5.历史数据 åœ¨çº¿å’Œç»„端电压位置调整 æ·»åŠ å¯¼å‡ºæ•°æ®åŠŸèƒ½å’Œä¸¤æ¬¡åŽ†å²è®°å½•å¯¹æ¯”åŠŸèƒ½
6.添加卡片实现1班,2班,3班管理
7.头部卡片在机房停电停电数后添加电源告警数