whyczyk
2022-05-09 49a4938ad5b8feb2065d9e9ef74967cda23cc220
src/pages/monitoring/real-monitoring.vue
@@ -10,7 +10,7 @@
            <div class="commonTitle">
               <div class="label">电池状态:</div>
               <div class="text">
                  {{backInputs.battState}}
                  {{backInputs.batt_state}}
               </div>
            </div>
            <div class="commonTitle">
@@ -22,25 +22,25 @@
            <div class="commonTitle">
               <div class="label">电池电流:</div>
               <div class="text">
                  {{backInputs.groupCurr}}
                  {{backInputs.group_curr}}
               </div>
            </div>
            <div class="commonTitle">
               <div class="label">更新日期:</div>
               <div class="text">
                  {{backInputs.recDatetime}}
                  {{backInputs.rec_datetime}}
               </div>
            </div>
            <div class="commonTitle">
               <div class="label">测试时长:</div>
               <div class="text">
                  {{backInputs.battTestTlong}}
                  {{backInputs.batt_test_tlong}}
               </div>
            </div>
            <div class="commonTitle">
               <div class="label">测试容量:</div>
               <div class="text">
                  {{backInputs.battTestCap}}
                  {{backInputs.batt_test_cap}}
               </div>
            </div>
            <div class="commonTitle">
@@ -118,14 +118,16 @@
<script>
import {
   getAllStations,
   getBattList,
   searchStation,
   searchBattInfo,
   getBattGroupInfo,
   realTimeAlarm,
   realTimePowerOff,
   realTimeSearch,
   realTimeGroup,
   JhStateActionSerchByCondition,
   realTimeLd9Data,
} from "@/pages/monitoring/js/api"
import createWs from "@/assets/js/websocket";
const WSMixin = createWs("RealTime");
import BarChart from "@/components/chart/BarChart";
import progressBlockVerticalBar from "@/components/chart/progress-block-vertical-bar";
import getMarkLineData from "@/components/chart/js/getMarkLineData";
@@ -133,10 +135,8 @@
import const_61850 from "@/assets/js/const/const_61850";
import const_9100 from "@/assets/js/const/const_9100";
import const_ld_nine from "@/assets/js/const/const_ld_nine";
import { number } from 'echarts/lib/export';
let vol, resChart, temp, conduct, currChart, leakVol, monConnRes;
let vol, resChart, temp, conduct, currChart, leakVol;
export default {
   mixins: [WSMixin],
   data() {
      let pageConfig = this.$store.getters["user/realTabsConfig"];
      let stateList = const_61850.stateList;
@@ -153,16 +153,17 @@
         options: [],
         /* 电池状态 模块 组端展示 */
         inputs: {
            groupVol: 0 /* 端电压-组端电压 */,
            onlineVol: 0 /* 端电压-在线电压 */,
            groupCurr: 0 /* 电池电流 */,
            battTestTlong: "0:00:00" /* 测试时长 */,
            recDatetime: "1982-01-01 00:00:00" /* 更新日期 */,
            battTestCap: 0 /* 测试容量 */,
            battRestCap: 0, // 剩余容量
            battState: 0 /* 电池状态 */
            group_vol: 0 /* 端电压-组端电压 */,
            online_vol: 0 /* 端电压-在线电压 */,
            group_curr: 0 /* 电池电流 */,
            batt_test_tlong: "0:00:00" /* 测试时长 */,
            rec_datetime: "1982-01-01 00:00:00" /* 更新日期 */,
            batt_test_cap: 0 /* 测试容量 */,
            batt_rest_cap: 0, // 剩余容量
            batt_state: 0 /* 电池状态 */
         },
         batt: {},
         timer: new this.$units.Timeout(),
         totolTable: [
            {
               key: "input_vol_total",
@@ -327,8 +328,6 @@
            dropVol: 0, // 导通压降
            devType: 0, // 设备类型
         },
         fodHeaders: [],
         fodData: [],
      }
   },
   components: {
@@ -337,75 +336,45 @@
   },
   computed: {
      backInputs() {
         let batt = this.batt;
         let isLd9 = this.isLd9;
         const obj = {
         let obj = {
            0: "未知",
            1: "浮充",
            2: "充电",
            3: "放电",
            4: "均充",
            5: "内阻测试",
         },
            list = {
               battState: "未知",
               group_online_vol: "在线:0.00V;组端:0.00V",
               groupCurr: "0.00A",
               recDatetime: "1982-01-01 00:00:00",
               battTestTlong: this.$units.formatSeconds(0),
               battTestCap: "0Ah",
               batt_syrl_cap: "---",
               sysc: "------",
            };
         if (this.diagram.type == -1) {
            return list;
         }
         let batt_state_text =
            this.diagram.powerCut && !isLd9
               ? "停电放电"
               : obj[this.inputs.battState];
         list.battState = batt_state_text + this.diagram.desc;
         if (this.$units.regEquipType(batt.fbsdeviceId, "BTS9605")) {
            list.group_online_vol = `组端:${this.inputs.groupVol.toFixed(2)}V`;
         } else {
            list.group_online_vol = `在线:${this.inputs.onlineVol.toFixed(
         };
         let 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: this.$units.formatSeconds(0),
            batt_test_cap: "0Ah",
            batt_syrl_cap: "---",
            sysc: "------"
         };
         list.batt_state = obj[this.inputs.batt_state];
         list.group_online_vol =
            `在线:${this.inputs.online_vol.toFixed(
               2
            )}V;组端:${this.inputs.groupVol.toFixed(2)}V`;
         }
            )}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 = this.$units.formatSeconds(this.inputs.batt_test_tlong);
         list.groupCurr = this.inputs.groupCurr.toFixed(2) + "A";
         list.recDatetime = this.inputs.recDatetime;
         list.battTestTlong = this.$units.formatSeconds(this.inputs.battTestTlong);
         list.battTestCap = this.inputs.battTestCap.toFixed(1) + "AH";
         if (this.inputs.battState === 2) {
         list.batt_test_cap = this.inputs.batt_test_cap.toFixed(1) + "AH";
         if (this.inputs.batt_state === 2) {
            list.batt_syrl_cap = "---";
         } else {
            // 为0是不更新剩余容量
            if (this.inputs.battRestCap != 0) {
               list.batt_syrl_cap = this.inputs.battRestCap.toFixed(1);
            }
            list.batt_syrl_cap = this.inputs.batt_rest_cap.toFixed(1) + "AH";
         }
         if (this.inputs.battState === 3) {
            // 为0是不更新续航时长
            if (this.inputs.battRestCap != 0) {
               list.sysc = this.$units.sethoubeiTime(
                  parseFloat(this.inputs.battRestCap) /
                  parseFloat(this.inputs.groupCurr)
               );
            }
         if (this.inputs.batt_state === 3) {
            list.sysc = this.$units.sethoubeiTime(
               parseFloat(this.inputs.batt_rest_cap) /
               parseFloat(this.inputs.group_curr)
            );
         } else {
            list.sysc = "------";
         }
         // 如果当前为锂电池
         let isLithium = this.$units.regEquipType(batt.fbsdeviceId, [
            "lithium",
            "lithiumPack",
         ]);
         if (isLithium) {
            list.batt_syrl_cap =
               this.lithiumParams.analog.restCap.toFixed(1) + "AH";
         }
         return list;
      },
@@ -413,82 +382,241 @@
         let headers = this.table.headers;
         let tabConfig = this.pageConfig;
         let batt = this.batt;
         return headers.filter((item) => {
         return headers.filter(item => {
            let isShow = item.key1 ? tabConfig[item.key1] : true;
            if (item.type) {
               isShow = this.$units.regEquipType(batt.fbsdeviceId, item.type);
               isShow = this.$units.regEquipType(batt.FBSDeviceId, item.type);
            }
            return isShow;
         });
      },
      }
   },
   methods: {
      realTimeLd9Data(res) {
         if (res) {
            // res = res.data;
            if (res.code && res.data) {
               let data = res.data2;
      //定时器
      startTimer() {
         this.timer.start(() => {
            this.$axios
               .all([
                  this.realTimeSearch(),
                  this.realTimeGroupss(),
                  this.realStateTimeData(),
                  this.search(),
               ])
               .then(() => {
                  this.timer.open();
               })
               .catch(() => {
                  this.timer.open();
               });
         }, 3000);
      },
      search() {
         JhStateActionSerchByCondition({
            dev_id: this.batt.FBSDeviceId,
         })
            .then((res) => {
               let resData = JSON.parse(res.data.result);
               if (resData.code == 1) {
                  let dataObj = resData.data[0];
                  for (let key in dataObj) {
                     this.totolTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                     this.volTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                     this.eleTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                     this.otherTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                  }
               }
               // 设置输出电压柱状图
               // this.$refs.outputVolList.setData({
               //    title: {
               //       show: true,
               //       text: "输出电压",
               //       x: "center",
               //       textStyle: {
               //          fontSize: "14",
               //          color: '#323233'
               //       }
               //    },
               //    name: "输出电压",
               //    list: this.volTable,
               // });
            })
            .catch((err) => {
               console.log(err);
            });
      },
      //查询电池组信息
      getBattGroupInfo(BattGroupId) {
         getBattGroupInfo(BattGroupId).then(res => {
            let rs = JSON.parse(res.data.result);
            if (rs.code == 1) {
               this.leafClick(rs.data[0]);
            } else {
               this.$toast('未获取到电池组的信息');
            }
         }).catch(error => {
            console.log(error);
         });
      },
      leafClick(data) {
         this.batt = data;
         this.realTimeAlarmss();
         this.table.headers = getTblHeader(data.FBSDeviceId);
         this.table.show = false;
         // 开启循环请求
         this.startTimer();
      },
      realStateTimeData() {
         let batt = this.batt;
         if (this.$units.regEquipType(batt.FBSDeviceId, ["LD9"])) {
            this.realTimeLd9Data();
         } else {
            this.realTimePowerOffs();
         }
      },
      /* 查询电路图开关状态和信息 */
      realTimePowerOffs() {
         let batt = this.batt;
         // 设备为61850显示右侧的面板
         if (this.$units.regEquipType(batt.FBSDeviceId, ["equip61850"])) {
            this.stateListShow = true;
         } else {
            this.stateListShow = false;
         }
         // 查询后台数据
         realTimePowerOff({
            dev_id: batt.FBSDeviceId,
         }).then((res) => {
            let rs = JSON.parse(res.data.result);
            let outTime = 2 * 60; //设备超时时间(2分钟)
            let isOutTime = true; //通讯中断        判断设备是否通讯中断    true:中断    false:正常
            if (rs.code == 1) {
               let data = rs.data[0];
               // 设置版本号
               this.dev_version = data.dev_version;
               // 基础信息
               this.setEquipBase(data);
               // 判断是否超时
               let outTime = 2 * 60; //设备超时时间(2分钟)
               var nowTime = new Date(data.note).getTime(); //当前时间
               var record = new Date(data.recordDatetime).getTime();
               var record = new Date(data.record_datetime).getTime();
               if (Math.abs(nowTime - record) / 1000 > outTime) {
                  this.disconnect();
               } else {
                  this.diagram.desc = "";
                  // 0-在线监测,1-核容测试,2-测试状态状态停止,3-内阻测试
                  switch (data.sys_state) {
                     case 0:
                        this.diagram.type = 0;
                        break;
                     case 1:
                        let chargeMon = this.chargeMon;
                        let dischargeMon = this.dischargeMon;
                        // 存在放电和充电单体
                        if (dischargeMon != "" && chargeMon != "") {
                           this.diagram.type = 6;
                        } else if (chargeMon != "") {
                           // 存在充电单体
                           this.diagram.type = 2;
                        } else {
                           this.diagram.type = 1;
                        }
                        break;
                     case 2:
                        this.diagram.type = 0;
                        break;
                     case 3:
                        this.diagram.type = 3;
                        this.diagram.desc = "(内阻测试)";
                        break;
                  // 未超时执行逻辑
                  let dev_id = batt.FBSDeviceId;
                  this.diagram.powerCut = 0;
                  // 设备为61850
                  if (this.$units.regEquipType(dev_id, "equip61850")) {
                     this.setEquip61850(data);
                  } else if (
                     this.$units.regEquipType(dev_id, ["BTS", "BTS9110", "BTS9120", "lithium", "LD9"])
                  ) {
                     this.setEquipBTS(data);
                  } else if (this.$units.regEquipType(dev_id, ["BTS9605", "BTS9611"])) {
                     this.setEquip9605(data);
                  } else {
                     this.disconnect();
                  }
               }
            } else {
               // 设置版本号
               this.dev_version = "";
               // 设备处于未连接
               this.disconnect();
            }
         });
      },
      // 设置stateList的值
      setStateList(name, value, type) {
         let stateList = this.stateList;
         for (let i = 0; i < stateList.length; i++) {
            let state = stateList[i];
            if (state.name == name) {
               state.value = value;
               state.type = type ? type : "";
            }
         }
         let historyStateList = this.historyStateList;
         for (let i = 0; i < historyStateList.length; i++) {
            let state = historyStateList[i];
            if (state.name == name) {
               state.value = value;
               state.type = type ? type : "";
            }
         }
         for (let i = 0, list = this.lastCapacityTest, j = list.length; i < j; i++) {
            let state = list[i];
            if (state.name == name) {
               state.value = value;
               state.type = type || "";
            }
         }
      },
      disconnect() {
         // 设备未连接
         this.diagram.type = -1;
         this.setStateList("workState", "未连接");
         this.diagram.temp = 0;
         // 通讯状态
         this.setStateList("connect", "异常", "table-row-error");
         // 温度
         this.setStateList("devTemp", "未知", "table-row-warn");
         // 干接点
         this.setStateList("contact", "未知", "table-row-warn");
         // 核容终止原因
         // this.setStateList("stopReason", "未知");
         // 操作失败原因
         this.setStateList("failReason", "未知");
         // 预估续航时长
         //this.setStateList("xuHang", "???");
      // 9605设备
      setEquip9605(data) {
         let batt = this.batt;
         // 关闭遮罩层
         this.maskShow = false;
         //  电路图类型
         let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         let battstate = this.inputs.batt_state;
         let alarmstatus = data.dev_alarmstate;
         // 显示遮罩层
         this.maskShow = true;
         // 设置停电放电状态
         if (data.dev_onlinevollow) {
            this.inputs.batt_state = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.dev_res_test_state !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
            return;
         }
         // 判断workstatus
         switch (workstatus) {
            case 0:
               this.diagram.type = 0;
               //this.diagram.desc = '(开关闭合)';
               // 当前设备是BTS设备
               if (data.dev_res_test_state !== 0) {
                  this.diagram.type = 6;
                  this.diagram.desc += "(内阻测试)";
               }
               break;
            case 1:
               this.diagram.type = 1;
               //this.diagram.desc = '(开关断开)';
               break;
            case 2:
               this.diagram.type = 2;
               //this.diagram.desc = '(开关断开)';
               break;
            default:
               this.diagram.type = -1;
               this.maskShow = true;
               break;
         }
      },
      // BTS设备信息
      setEquipBTS(data) {
@@ -496,22 +624,22 @@
         // 关闭遮罩层
         this.maskShow = false;
         //  电路图类型
         let workstatus = parseInt(data.devWorkstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         let battstate = this.inputs.battState;
         let alarmstatus = data.devAlarmstate;
         let battstate = this.inputs.batt_state;
         let alarmstatus = data.dev_alarmstate;
         // 是否为锂电池
         let isLithium = this.$units.regEquipType(batt.fbsdeviceId, "lithium");
         let isLithium = this.$units.regEquipType(batt.FBSDeviceId, "lithium");
         // 设置停电放电状态
         if (data.devOnlinevollow) {
            this.inputs.battState = 5;
         if (data.dev_onlinevollow) {
            this.inputs.batt_state = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.devResTestState !== 0) {
            if (workstatus === 0 && data.dev_res_test_state !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
@@ -528,14 +656,14 @@
               this.diagram.type = 0;
               this.diagram.desc = "(开关闭合)";
               // 当前设备是BTS设备
               if (data.devResTestState !== 0) {
               if (data.dev_res_test_state !== 0) {
                  this.diagram.desc += "(内阻测试)";
               }
               break;
            case 1:
               if (
                  data.devTestgroupnum > 0 &&
                  data.devTestgroupnum === batt.groupIndexInFBSDevice + 1
                  data.dev_testgroupnum > 0 &&
                  data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1
               ) {
                  this.diagram.type = 1;
                  this.diagram.desc = "(开关断开)";
@@ -550,7 +678,7 @@
               }
               // 当前设备是BTS设备
               if (data.devTesttype == 209) {
               if (data.dev_testtype == 209) {
                  this.diagram.desc += "(KD测试)";
                  this.diagram.type = 3;
               }
@@ -559,8 +687,8 @@
               //辨别当前电池组是否在充电
               if (
                  this.diagram.type == 2 ||
                  (data.devTestgroupnum > 0 &&
                     data.devTestgroupnum === batt.groupIndexInFBSDevice + 1)
                  (data.dev_testgroupnum > 0 &&
                     data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1)
               ) {
                  //充电
                  if (
@@ -597,18 +725,18 @@
      // 61850设备信息
      setEquip61850(data) {
         //  电路图类型
         let workstatus = parseInt(data.devWorkstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         // 关闭遮罩层
         this.maskShow = false;
         // 设置停电放电状态
         if (data.devOnlinevollow) {
            this.inputs.battState = 5;
         if (data.dev_onlinevollow) {
            this.inputs.batt_state = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.devResTestState !== 0) {
            if (workstatus === 0 && data.dev_res_test_state !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
            return;
@@ -655,10 +783,10 @@
         // 设备工作状态
         let workStates = const_61850.workstates;
         this.setStateList("workState", workStates[data.devWorkstate]);
         this.setStateList("workState", workStates[data.dev_workstate]);
         // 核容终止原因
         // let stopReasons = const_61850.stopreasons;
         // if (data.devWorkstate == 2) {
         // if (data.dev_workstate == 2) {
         //   this.setStateList("stopReason", "未知");
         // } else {
         //   this.setStateList(
@@ -669,10 +797,10 @@
         // 操作失败原因
         let failReasons = const_61850.failreasons;
         this.setStateList("failReason", failReasons[data.devAlarmstate]);
         this.setStateList("failReason", failReasons[data.dev_alarmstate]);
         // 告警信息
         let alarms = data.dev61850alarms.split(",");
         let alarms = data.dev_61850alarms.split(",");
         // alarms = ['false', 'false', 'true', 'false', 'true'];
         // 通讯状态
         if (alarms[1] == "true") {
@@ -695,443 +823,20 @@
            this.setStateList("contact", "正常", "");
         }
      },
      // 9605设备
      setEquip9605(data) {
         let batt = this.batt;
         // 关闭遮罩层
         this.maskShow = false;
         //  电路图类型
         let workstatus = parseInt(data.devWorkstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         let battstate = this.inputs.battState;
         let alarmstatus = data.devAlarmstate;
         // 设置停电放电状态
         if (data.devOnlinevollow) {
            this.inputs.battState = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.devResTestState !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
            return;
         }
         // 判断workstatus
         switch (workstatus) {
            case 0:
               this.diagram.type = 0;
               //this.diagram.desc = '(开关闭合)';
               // 当前设备是BTS设备
               if (data.devResTestState !== 0) {
                  this.diagram.type = 6;
                  this.diagram.desc += "(内阻测试)";
               }
               break;
            case 1:
               this.diagram.type = 1;
               //this.diagram.desc = '(开关断开)';
               break;
            case 2:
               this.diagram.type = 2;
               //this.diagram.desc = '(开关断开)';
               break;
            default:
               this.diagram.type = -1;
               this.maskShow = true;
               break;
         }
      },
      /* echars图表 */
      realTimeSearch(res) {
         if (res) {
            let diagramType = this.diagram.type;
            // res = res.data;
            let data = [];
            let chargeMon = "";
            let dischargeMon = "";
            if (res.code && res.data && diagramType != -1) {
               data = res.data2.list.map((item) => {
                  if (item.monState == 1) {
                     dischargeMon += (dischargeMon == "" ? "#" : ",#") + item.monNum;
                  } else if (item.monState == 2) {
                     chargeMon += (chargeMon == "" ? "#" : ",#") + item.monNum;
                  }
                  return {
                     num1: "#" + item.monNum,
                     vol1: item.monVol,
                     res1: item.monRes,
                     temp1: item.monTmp,
                     conduct1: item.monRes ? ((1 / item.monRes) * 1000).toFixed(0) : 0,
                     curr1: item.monJhCurr,
                     leakVol1: item.monLyVol,
                     monConnRes: item.monConnRes,
                     monCap: item.mon_cap,
                     monTestCap:
                        diagramType == 1 || diagramType == 2 || diagramType == 6
                           ? item.monTestCap
                           : "---",
                     monResCap:
                        diagramType == 1 || diagramType == 2 || diagramType == 6
                           ? item.monRestCap
                           : "---",
                     monDisTimeLong:
                        diagramType == 1 || diagramType == 2 || diagramType == 6
                           ? Math.floor(item.monDisTimeLong / 60) +
                           "时" +
                           (item.monDisTimeLong % 60) +
                           "分"
                           : "---",
                     monState: item.monState,
                  };
               });
            }
            // 添加正在测试的单体
            this.chargeMon = chargeMon;
            this.dischargeMon = dischargeMon;
            // 更新表格
            this.table.datas = data;
            this.table.show = true;
            // 电压值
            let volTempVol = [];
            if (res.code && res.data) {
               volTempVol = res.data2.list.map((item) => {
                  let value = diagramType == -1 ? 0 : item.monVol.toFixed(3);
                  return ["#" + item.monNum, value];
               });
            }
            // 设置电压值
            this.monVols = volTempVol.map((item) => {
               return item[1];
            });
            let volBarNum = this.$units.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 (res.code && res.data) {
               volTempres = res.data2.list.map((item) => {
                  let value = diagramType == -1 ? 0 : item.monRes;
                  return ["#" + item.monNum, value];
               });
            }
            let resBarNum = this.$units.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 (res.code && res.data) {
               volTempte = res.data2.list.map((item) => {
                  let value = diagramType == -1 ? 0 : item.monTmp;
                  return ["#" + item.monNum, value];
               });
            }
            this.monTemps = volTempte.map((item) => {
               return item[1];
            });
            let tempBarNum = this.$units.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 (res.code && res.data) {
               conductTemp = res.data2.list.map((item) => {
                  let value =
                     diagramType == -1 ? 0 : this.$units.getConduct(item.monRes, item.monVol);
                  return ["#" + item.monNum, value];
               });
            }
            let conductBarNum = this.$units.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 (res.code && res.data) {
               currTemp = res.data2.list.map((item) => {
                  let value = diagramType == -1 ? 0 : item.monJhCurr;
                  return ["#" + item.monNum, value];
               });
            }
            let currBarNum = this.$units.getBarNum(currTemp);
            currChart.title.text =
               "最大值=" +
               currBarNum.max.toFixed(1) +
               "mA;最小值=" +
               currBarNum.min.toFixed(1) +
               "mA;平均值=" +
               currBarNum.avg.toFixed(1) +
               "mA";
            currChart.series[0].data = currTemp;
            // 漏液电压
            let leakVolTemp = [];
            if (res.code && res.data) {
               leakVolTemp = res.data2.list.map((item) => {
                  let value = diagramType == -1 ? 0 : item.monLyVol;
                  return ["#" + item.monNum, value];
               });
            }
            let leakVolNum = this.$units.getBarNum(leakVolTemp);
            leakVol.title.text =
               "最大值=" +
               leakVolNum.max.toFixed(1) +
               "V;最小值=" +
               leakVolNum.min.toFixed(1) +
               "V;平均值=" +
               leakVolNum.avg.toFixed(1) +
               "V";
            leakVol.series[0].data = leakVolTemp;
            // 链接条阻值
            let monConnResData = [];
            if (res.code && res.data) {
               monConnResData = res.data2.list.map((item) => {
                  let value = diagramType == -1 ? 0 : item.monConnRes;
                  return ["#" + item.monNum, value];
               });
            }
            let connResBarNum = this.$units.getBarNum(monConnResData);
            monConnRes.title.text =
               "最大值=" +
               connResBarNum.max.toFixed(1) +
               "mΩ;最小值=" +
               connResBarNum.min.toFixed(1) +
               "mΩ;平均值=" +
               connResBarNum.avg.toFixed(1) +
               "mΩ";
            monConnRes.series[0].data = monConnResData;
            // 更新电压图表
            this.setChart();
         }
      },
      onWSOpen() {
         this.sendMessage();
      },
      sendMessage() {
         let batt = this.batt;
         if (!batt.battGroupId) {
            return false;
         }
         let params = {
            battGroupId: batt.battGroupId,
            devId: batt.fbsdeviceId,
            powerDeviceId: 0,
            groupNum: batt.groupIndexInFBSDevice,
            pageType: "standard",
         };
         // console.log("====", params, JSON.stringify(params));
         this.SOCKET.send(JSON.stringify(params));
      },
      onWSMessage(res) {
         res = JSON.parse(res.data);
         let data = res.data.data;
         // console.log(data, "=====data");
         this.realTimeLd9Data(data.ld9);
         this.realTimePowerOffs(data.f9100state);
         this.realTimeSearch(data.rtdata);
         this.realTimeGroupss(data.rtstate);
         this.realTimeStateList(data.fod);
         this.loadDevAla(data.rtalarm, data.rsalarm);
         this.getLithiumAnalog(data.li9130); // 锂电池模拟量
         this.inversionData(data.fbs9100sBuscoupleState);
         this.dataChangeFlag = Math.random(); // 数据更新
      },
      search() {
         JhStateActionSerchByCondition({
            dev_id: this.batt.fbsdeviceId,
         })
            .then((res) => {
               let resData = res.data;
               if (resData.code == 1) {
                  let dataObj = resData.data[0];
                  for (let key in dataObj) {
                     this.totolTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                     this.volTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                     this.eleTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                     this.otherTable.map((item) => {
                        if (item.key == key) {
                           item.value = dataObj[key];
                        }
                     });
                  }
               }
            })
            .catch((err) => {
               console.log(err);
            });
      },
      //查询电池组信息
      getBattGroupInfo(battGroupId) {
         getBattGroupInfo(battGroupId).then(res => {
            let rs = res.data;
            if (rs.code == 1) {
               this.leafClick(rs.data[0]);
            } else {
               this.$toast('未获取到电池组的信息');
            }
         }).catch(error => {
            console.log(error);
         });
      },
      leafClick(data) {
         this.batt = data;
         this.realTimeAlarmss();
         this.table.headers = getTblHeader(data.fbsdeviceId);
         this.table.show = false;
         // 开启循环请求
         // this.startTimer();
         this.$nextTick(() => {
            // 开启循环请求
            this.sendMessage();
         });
      },
      /* 查询电路图开关状态和信息 */
      realTimePowerOffs(res) {
         let batt = this.batt;
         // 设备为61850显示右侧的面板
         if (this.$units.regEquipType(batt.fbsdeviceId, ["equip61850"])) {
            this.stateListShow = true;
         } else {
            this.stateListShow = false;
         }
         // 查询后台数据
         if (res) {
            // res = res.data;
            let outTime = 2 * 60; //设备超时时间(2分钟)
            if (res.code && res.data) {
               let data = res.data2;
               // 设置版本号
               this.devVersion = data.devVersion;
               // 基础信息
               this.setEquipBase(data);
               // 判断是否超时
               var nowTime = new Date(data.note).getTime(); //当前时间
               var record = new Date(data.recordDatetime).getTime();
               if (Math.abs(nowTime - record) / 1000 > outTime) {
                  this.disconnect();
               } else {
                  // 未超时执行逻辑
                  let devId = batt.fbsdeviceId;
                  this.diagram.powerCut = 0;
                  // 设备为61850
                  if (this.$units.regEquipType(devId, "equip61850")) {
                     this.setEquip61850(data);
                  } else if (
                     this.$units.regEquipType(devId, [
                        "BTS",
                        "BTS9110",
                        "BTS9120",
                        "lithium",
                        "LD9",
                        "lithiumPack",
                     ])
                  ) {
                     this.setEquipBTS(data);
                  } else if (this.$units.regEquipType(devId, ["BTS9605", "BTS9611"])) {
                     this.setEquip9605(data);
                  } else {
                     this.disconnect();
                  }
               }
            } else {
               // 设置版本号
               this.devVersion = "";
               // 设备处于未连接
               this.disconnect();
            }
         }
      },
      // 设置stateList的值
      setStateList(name, value, type) {
         let stateList = this.stateList;
         for (let i = 0; i < stateList.length; i++) {
            let state = stateList[i];
            if (state.name == name) {
               state.value = value;
               state.type = type ? type : "";
            }
         }
         let historyStateList = this.historyStateList;
         for (let i = 0; i < historyStateList.length; i++) {
            let state = historyStateList[i];
            if (state.name == name) {
               state.value = value;
               state.type = type ? type : "";
            }
         }
         for (let i = 0, list = this.lastCapacityTest, j = list.length; i < j; i++) {
            let state = list[i];
            if (state.name == name) {
               state.value = value;
               state.type = type || "";
            }
         }
      },
      // 基础信息
      setEquipBase(data) {
         let groupIndex = this.batt.groupIndexInFBSDevice;
         let groupIndex = this.batt.GroupIndexInFBSDevice;
         // 设备的温度
         this.diagram.temp = data.devTemp;
         let contactRes = (
            groupIndex != 0 ? data.devConresist1 : data.devConresist
         this.diagram.temp = data.dev_temp;
         let contactRes = (groupIndex != 0
            ? data.dev_conresist1
            : data.dev_conresist
         ).toHold(2);
         let dropVol = (
            groupIndex != 0 ? data.devCondvoldp1 : data.devCondvoldp
         let dropVol = (groupIndex != 0
            ? data.dev_condvoldp1
            : data.dev_condvoldp
         ).toHold(2);
         let alarms = data.dev61850alarms.split(",");
         let alarms = data.dev_61850alarms.split(",");
         if (alarms.length) {
            this.diagram.contactRes = alarms[0] == "true" ? "k1异常" : contactRes;
            this.diagram.dropVol = alarms[3] == "true" ? "D1异常" : dropVol;
@@ -1140,86 +845,101 @@
            this.diagram.dropVol = dropVol;
         }
      },
      realTimeLd9Data() {
         let batt = this.batt;
         realTimeLd9Data({
            dev_id: batt.FBSDeviceId,
         }).then(res => {
            let rs = JSON.parse(res.data.result);
            if (rs.code == 1) {
               let data = rs.data[0];
               // 判断是否超时
               let outTime = 2 * 60; //设备超时时间(2分钟)
               let nowTime = new Date(data.note).getTime(); //当前时间
               let record = new Date(data.record_datetime).getTime();
               if (Math.abs(nowTime - record) / 1000 > outTime) {
                  this.disconnect();
               } else {
                  this.diagram.desc = "";
                  // 0-在线监测,1-核容测试,2-测试状态状态停止,3-内阻测试
                  switch (data.sys_state) {
                     case 0:
                        this.diagram.type = 0;
                        break;
                     case 1:
                        this.diagram.type = 1;
                        break;
                     case 2:
                        this.diagram.type = 2;
                        break;
                     case 3:
                        this.diagram.type = 3;
                        this.diagram.desc = "(内阻测试)";
                        break;
                  }
               }
            } else {
               this.disconnect();
            }
         }).catch(error => {
            console.log(error);
            this.disconnect();
         });
      },
      disconnect() {
         // 设备未连接
         this.diagram.type = -1;
      },
      /* 查询电池告警参数 */
      realTimeAlarmss() {
         var batt = this.batt;
         realTimeAlarm({
            devId: batt.fbsdeviceId,
         }).then((res) => {
            res = res.data;
            if (res.code) {
               let list = res.data.list;
            dev_id: batt.FBSDeviceId
         }).then(res => {
            let rs = JSON.parse(res.data.result);
            if (rs.code == 1) {
               let list = rs.data;
               // 单体电压
               this.setChartMarkLine(vol, "Voltage", "Batt_Alarm_Type_MonVol", list);
               // 单体温度
               this.setChartMarkLine(
                  temp,
                  "Temperature",
                  "Batt_Alarm_Type_MonTmp",
                  list
               );
               this.setChartMarkLine(temp, "Temperature", "Batt_Alarm_Type_MonTmp", list);
               // 单体内阻
               this.setChartMarkLine(
                  resChart,
                  "Resistance",
                  "Batt_Alarm_Type_MonRes",
                  list
               );
               this.setChartMarkLine(resChart, "Resistance", "Batt_Alarm_Type_MonRes", list);
               // 单体电导
               this.setChartMarkLine(
                  conduct,
                  "Conductance",
                  "Batt_Alarm_Type_MonRes",
                  list
               );
               // 漏液电压
               this.setChartMarkLine(
                  leakVol,
                  "leakVol",
                  "Batt_Alarm_Type_MonLYVol",
                  list
               );
               this.setChartMarkLine(conduct, "Conductance", "Batt_Alarm_Type_MonRes", list);
            }
         });
      },
      setChartMarkLine(chartData, name, almName, list) {
      setChartMarkLine(chartData, name, alm_name, list) {
         let batt = this.batt;
         // 遍历list
         for (let i = 0; i < list.length; i++) {
            let item = list[i];
            if (item.almName == almName) {
            if (item.alm_name == alm_name) {
               let high = 0;
               let low = 0;
               switch (name) {
                  case "Voltage": // 电压告警
                  case "Voltage":      // 电压告警
                     //单体电压
                     let std_mon_vol = batt.monVolStd;
                     high = parseFloat(std_mon_vol * item.almHighCoe).toHold(3);
                     low = parseFloat(std_mon_vol * item.almLowCoe).toHold(3);
                     let std_mon_vol = batt.MonVolStd;
                     high = parseFloat(std_mon_vol * item.alm_high_coe).toHold(3);
                     low = parseFloat(std_mon_vol * item.alm_low_coe).toHold(3);
                     break;
                  case "Temperature":
                     //单体温度
                     let std_mon_tmp = 25;
                     high = parseFloat(std_mon_tmp * item.almHighCoe).toHold(1);
                     low = parseFloat(std_mon_tmp * item.almLowCoe).toHold(1);
                     high = parseFloat(std_mon_tmp * item.alm_high_coe).toHold(1);
                     low = parseFloat(std_mon_tmp * item.alm_low_coe).toHold(1);
                     break;
                  case "Resistance":
                     let std_mon_res =
                        (1 * (batt.monVolStd / 2)) / (batt.monCapStd / 100);
                     high = parseFloat(std_mon_res * item.almHighCoe).toHold(3);
                     low = parseFloat(std_mon_res * item.almLowCoe).toHold(3);
                     let std_mon_res = (1 * (batt.MonVolStd / 2)) / (batt.MonCapStd / 100);
                     high = parseFloat(std_mon_res * item.alm_high_coe).toHold(3);
                     low = parseFloat(std_mon_res * item.alm_low_coe).toHold(3);
                     break;
                  case "Conductance":
                     let std_mon_ser = batt.monSerStd;
                     high = parseFloat(std_mon_ser * item.almHighCoe).toHold(0);
                     low = parseFloat(std_mon_ser * item.almLowCoe).toHold(0);
                     break;
                  case "leakVol":
                     high = parseFloat(item.almHighCoe);
                     low = parseFloat(item.almLowCoe);
                     let std_mon_ser = batt.MonSerStd;
                     high = parseFloat(std_mon_ser * item.alm_high_coe).toHold(0);
                     low = parseFloat(std_mon_ser * item.alm_low_coe).toHold(0);
                     break;
               }
               // 低告警
@@ -1230,7 +950,113 @@
            }
         }
      },
      /* echars图表 */
      realTimeSearch() {
         var batt = this.batt;
         realTimeSearch({
            BattGroupId: batt.BattGroupId
         }).then(res => {
            let diagramType = this.diagram.type;
            let rs = JSON.parse(res.data.result);
            let data = [];
            if (rs.code == 1 && diagramType != -1) {
               data = rs.data.map(item => {
                  return {
                     num1: "#" + item.mon_num,
                     vol1: item.mon_vol,
                     res1: item.mon_res,
                     temp1: item.mon_tmp,
                     conduct1: item.mon_res
                        ? ((1 / item.mon_res) * 1000).toFixed(0)
                        : 0,
                     curr1: item.mon_JH_curr,
                     leakVol1: item.mon_LY_vol,
                     monConnRes: item.mon_conn_res,
                     monCap: item.mon_cap,
                     monTestCap: diagramType == 1 ? item.monTestCap : "---",
                     monResCap: diagramType == 1 ? item.monRestCap : "---",
                     monDisTimeLong: diagramType == 1 ? Math.floor(item.monDisTimeLong / 60) + "时" + (item.monDisTimeLong % 60) + "分" : "---",
                     monState: item.monState,
                  };
               });
            }
            // 更新表格
            this.table.datas = data;
            this.table.show = true;
            // 电压值
            let volTempVol = [];
            if (rs.code == 1) {
               volTempVol = rs.data.map(item => {
                  return ["#" + item.mon_num, item.mon_vol];
               });
            }
            let volBarNum = this.$units.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 = this.$units.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 = this.$units.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 = this.$units.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 = this.$units.getBarNum(currTemp);
            currChart.title.text = "最大值=" + currBarNum.max.toFixed(1) + "mA;最小值=" + currBarNum.min.toFixed(1) + "mA;平均值=" +
               currBarNum.avg.toFixed(1) + "mA";
            currChart.series[0].data = currTemp;
            // 漏液电压
            let leakVolTemp = [];
            if (rs.code == 1) {
               leakVolTemp = rs.data.map(item => {
                  return ["#" + item.mon_num, item.mon_LY_vol];
               });
            }
            let leakVolNum = this.$units.getBarNum(leakVolTemp);
            leakVol.title.text = "最大值=" + leakVolNum.max.toFixed(1) + "V;最小值=" + leakVolNum.min.toFixed(1) + "V;平均值=" +
               leakVolNum.avg.toFixed(1) + 'V';
            leakVol.series[0].data = leakVolTemp;
            // 更新电压图表
            this.setChart();
         });
      },
      initChart() {
         // 电压
         vol = {
@@ -1240,18 +1066,17 @@
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
                  color: '#323233'
               }
            },
            series: [
               {
                  name: "电压",
                  type: "bar",
                  data: [],
                  markLine: {
                     data: getMarkLineData(),
                  },
            series: [{
               name: "电压",
               type: "bar",
               data: [],
               markLine: {
                  data: getMarkLineData(),
               },
            ],
            }]
         };
         // 漏液电压
         leakVol = {
@@ -1261,18 +1086,14 @@
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
                  color: '#323233'
               }
            },
            series: [
               {
                  name: "漏液电压",
                  type: "bar",
                  data: [],
                  markLine: {
                     data: getMarkLineData(),
                  },
               },
            ],
            series: [{
               name: "漏液电压",
               type: "bar",
               data: [],
            }]
         };
         // 内阻
@@ -1283,18 +1104,17 @@
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
                  color: '#323233'
               }
            },
            series: [
               {
                  name: "内阻",
                  type: "bar",
                  data: [],
                  markLine: {
                     data: getMarkLineData(),
                  },
            series: [{
               name: "内阻",
               type: "bar",
               data: [],
               markLine: {
                  data: getMarkLineData(),
               },
            ],
            }]
         };
         // 温度
@@ -1305,20 +1125,18 @@
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
                  color: '#323233'
               }
            },
            series: [
               {
                  name: "温度",
                  type: "bar",
                  data: [],
                  markLine: {
                     data: getMarkLineData(),
                  },
            series: [{
               name: "温度",
               type: "bar",
               data: [],
               markLine: {
                  data: getMarkLineData(),
               },
            ],
            }]
         };
         // 电导
         conduct = {
            title: {
@@ -1327,18 +1145,17 @@
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
                  color: '#323233'
               }
            },
            series: [
               {
                  name: "电导",
                  type: "bar",
                  data: [],
                  markLine: {
                     data: getMarkLineData(),
                  },
            series: [{
               name: "电导",
               type: "bar",
               data: [],
               markLine: {
                  data: getMarkLineData(),
               },
            ],
            }]
         };
         // 均衡电流
         currChart = {
@@ -1348,34 +1165,14 @@
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
                  color: '#323233'
               }
            },
            series: [
               {
                  name: "均衡电流",
                  type: "bar",
                  data: [],
               },
            ],
         };
         // 链接条阻值
         monConnRes = {
            title: {
               show: true,
               text: "最大值=0mΩ;最小值=0mΩ;平均值=0mΩ",
               x: "center",
               textStyle: {
                  fontSize: "14",
               },
            },
            series: [
               {
                  name: "链接条阻值",
                  type: "bar",
                  data: [],
               },
            ],
            series: [{
               name: "均衡电流",
               type: "bar",
               data: []
            }]
         };
         // 设置配置项
         this.setChart();
@@ -1389,111 +1186,16 @@
         this.$refs.leakVol.setOption(leakVol);
      },
      /* 实时组端信息 */
      realTimeGroupss(res) {
         if (res) {
            // res = res.data;
            if (res.code && res.data) {
               this.inputs = res.data2;
      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];
            }
         }
      },
      realTimeStateList(res) {
         // 获取剩余天数,工作模式,组端电压,峰值电压
         // let batt = this.batt;
         // 仅有编号不做任何操作
         if (this.fodHeaders.length == 1) {
            return;
         }
         if (res) {
            // res = res.data;
            let data = [];
            if (res.code && res.data) {
               let rsData = res.data2;
               let workModels = ["停止", "养护", "除硫"];
               let list = ["One", "Two", "Three", "Four", "Five"];
               let fodHeaders = this.fodHeaders;
               data = list.map((item, index) => {
                  let workModel = rsData["workstate" + item];
                  return fodHeaders.map((fod) => {
                     if (fod.prop == "num") {
                        return index + 1;
                     } else if (fod.prop == "workstate") {
                        return workModels[workModel];
                     } else {
                        return rsData[fod.prop + item];
                     }
                  });
                  //return [index+1, rsData['RestTime_'+item], workModels[workModel], rsData['vgroupvol'+item], rsData['vpeakvol'+item]]
               });
               this.fodData = data;
            }
         }
      },
      loadDevAla(rtalarm, rsalarm) {
         if (rtalarm) {
            let res = rtalarm;
            let list = [];
            if (res.code && res.data) {
               list = res.data2.list;
            }
            // this.table2.datas = list;
         }
         if (rsalarm) {
            let res = rsalarm;
            let list = [];
            if (res.code && res.data) {
               list = res.data2.list;
            }
            // this.table1.datas = list;
         }
      },
      /**
       * 读取锂电池信息 暂定读取组一的
       */
      getLithiumAnalog(res) {
         if (res) {
            // res = res.data;
            if (res.code && res.data) {
               // 剩余容量进行累加
               let restCap = 0;
               let packVols = [];
               let packCurrs = [];
               res.data2.map((item) => {
                  restCap += item.restCap;
                  packVols.push(item.sumVol);
                  packCurrs.push(item.current);
               });
               this.packVols = packVols;
               this.packCurrs = packCurrs;
               let data = res.data2[0];
               data.restCap = restCap;
               this.lithiumParams.analog = data;
            } else {
               this.lithiumParams.analog = lithiumInfo.analog().params;
            }
         }
      },
      inversionData(res) {
         // 是逆变的设备
         if (res && this.$units.regEquipType(this.batt.fbsdeviceId, "BTS9120")) {
            // res = res.data;
            let data = {
               commustate: -1, // 通讯状态
               fanglei_state: -1, // 防雷状态
               rlayworkmode: -1, // 空开状态
            };
            if (res.code) {
               data = res.data;
            }
            if (data.rlayworkmode == 1 || data.rlayworkmode == 3) {
               this.buscoupleSwitch = 1;
            } else {
               this.buscoupleSwitch = 0;
            }
         } else {
            this.buscoupleSwitch = 0;
         }
         }).catch(err => {
            console.log(err)
         });
      },
      // 全部选项选择完毕后,会触发 finish 事件
      onFinish({ selectedOptions }) {
@@ -1505,13 +1207,18 @@
      onChange(select) {
         if (select.tabIndex == 3) {
            let objs = select.selectedOptions[select.selectedOptions.length - 1];
            getBattList(objs.data.stationId).then((res) => {
               let rs = res.data;
            searchBattInfo({
               StationName1: objs.data.StationName1,
               StationName2: objs.data.StationName2,
               StationName5: objs.data.StationName5,
               StationName3: objs.data.StationName3
            }).then((res) => {
               let rs = JSON.parse(res.data.result);
               if (rs.code == 1) {
                  let data = rs.data;
                  data.map(item => {
                     item.text = item.stationName4 + '-' + item.battGroupName
                     item.value = item.battGroupId
                     item.text = item.StationName4 + '-' + item.BattGroupName
                     item.value = item.BattGroupId
                  })
                  this.options.map(item => {
                     item?.children.map(jtem => {
@@ -1531,13 +1238,13 @@
         }
      },
      //查询站点信息
      getAllStations() {
         getAllStations({
            stationName1: "",
            stationName2: "",
            stationName5: "",
      searchStation() {
         searchStation({
            StationName1: "",
            StationName2: "",
            StationName5: "",
         }).then((res) => {
            let rs = res.data;
            let rs = JSON.parse(res.data.result);
            let data = [];
            if (rs.code == 1) {
               data = rs.data;
@@ -1554,13 +1261,13 @@
         // 遍历数据构造树状
         data.forEach(item => {
            // 省
            let provice = this.addData(result, item.stationName1);
            let provice = this.addData(result, item.StationName1);
            // 市
            let city = this.addData(provice.children, item.stationName2, provice);
            let city = this.addData(provice.children, item.StationName2, provice);
            // 区县
            let county = this.addData(city.children, item.stationName5, city);
            let county = this.addData(city.children, item.StationName5, city);
            // 机房
            let home = this.addData(county.children, item.stationName3, county, item);
            let home = this.addData(county.children, item.StationName3, county, item);
         });
         // 设置树状列表
         this.options = result;
@@ -1608,13 +1315,12 @@
      },
   },
   mounted() {
      this.searchStation();
      // 初始化图表
      this.initChart();
      this.getAllStations();
   },
   destroyed() {
      this.timer.stop();
   }
}
</script>