whyczyk
2022-05-09 49a4938ad5b8feb2065d9e9ef74967cda23cc220
src/pages/monitoring/real-monitoring.vue
@@ -122,6 +122,7 @@
   searchBattInfo,
   getBattGroupInfo,
   realTimeAlarm,
   realTimePowerOff,
   realTimeSearch,
   realTimeGroup,
   JhStateActionSerchByCondition,
@@ -131,11 +132,20 @@
import progressBlockVerticalBar from "@/components/chart/progress-block-vertical-bar";
import getMarkLineData from "@/components/chart/js/getMarkLineData";
import getTblHeader from "@/pages/monitoring/js/getTblHeader";
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";
let vol, resChart, temp, conduct, currChart, leakVol;
export default {
   data() {
      let pageConfig = this.$store.getters["user/realTabsConfig"];
      let stateList = const_61850.stateList;
      let historyStateList = const_61850.historyStateList;
      let lastCapacityTest = const_61850.lastCapacityTest;
      return {
         stateList: stateList,
         historyStateList: historyStateList,
         lastCapacityTest: lastCapacityTest,
         showPopup: false,
         cascaderValue: '',
         fieldValue: '请选择站点',
@@ -475,6 +485,364 @@
         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);
               // 判断是否超时
               var nowTime = new Date(data.note).getTime(); //当前时间
               var record = new Date(data.record_datetime).getTime();
               if (Math.abs(nowTime - record) / 1000 > outTime) {
                  this.disconnect();
               } else {
                  // 未超时执行逻辑
                  let dev_id = batt.FBSDeviceId;
                  this.diagram.powerCut = 0;
                  // 设备为61850
                  if (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 || "";
            }
         }
      },
      // 9605设备
      setEquip9605(data) {
         let batt = this.batt;
         // 关闭遮罩层
         this.maskShow = false;
         //  电路图类型
         let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         let battstate = this.inputs.batt_state;
         let alarmstatus = data.dev_alarmstate;
         // 设置停电放电状态
         if (data.dev_onlinevollow) {
            this.inputs.batt_state = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.dev_res_test_state !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
            return;
         }
         // 判断workstatus
         switch (workstatus) {
            case 0:
               this.diagram.type = 0;
               //this.diagram.desc = '(开关闭合)';
               // 当前设备是BTS设备
               if (data.dev_res_test_state !== 0) {
                  this.diagram.type = 6;
                  this.diagram.desc += "(内阻测试)";
               }
               break;
            case 1:
               this.diagram.type = 1;
               //this.diagram.desc = '(开关断开)';
               break;
            case 2:
               this.diagram.type = 2;
               //this.diagram.desc = '(开关断开)';
               break;
            default:
               this.diagram.type = -1;
               this.maskShow = true;
               break;
         }
      },
      // BTS设备信息
      setEquipBTS(data) {
         let batt = this.batt;
         // 关闭遮罩层
         this.maskShow = false;
         //  电路图类型
         let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         let battstate = this.inputs.batt_state;
         let alarmstatus = data.dev_alarmstate;
         // 是否为锂电池
         let isLithium = this.$units.regEquipType(batt.FBSDeviceId, "lithium");
         // 设置停电放电状态
         if (data.dev_onlinevollow) {
            this.inputs.batt_state = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.dev_res_test_state !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
            // 锂电池详细描述为空
            if (isLithium) {
               this.diagram.desc = "";
            }
            return;
         }
         // 判断workstatus
         switch (workstatus) {
            case 0:
               this.diagram.type = 0;
               this.diagram.desc = "(开关闭合)";
               // 当前设备是BTS设备
               if (data.dev_res_test_state !== 0) {
                  this.diagram.desc += "(内阻测试)";
               }
               break;
            case 1:
               if (
                  data.dev_testgroupnum > 0 &&
                  data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1
               ) {
                  this.diagram.type = 1;
                  this.diagram.desc = "(开关断开)";
               } else {
                  if (battstate === 3) {
                     this.diagram.type = 1;
                     this.diagram.desc = "(开关断开)";
                  } else {
                     this.diagram.type = 0;
                     this.diagram.desc = "(开关闭合)";
                  }
               }
               // 当前设备是BTS设备
               if (data.dev_testtype == 209) {
                  this.diagram.desc += "(KD测试)";
                  this.diagram.type = 3;
               }
               break;
            case 2:
               //辨别当前电池组是否在充电
               if (
                  this.diagram.type == 2 ||
                  (data.dev_testgroupnum > 0 &&
                     data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1)
               ) {
                  //充电
                  if (
                     alarmstatus === 1 ||
                     alarmstatus === 2 ||
                     alarmstatus === 3 ||
                     alarmstatus === 4 ||
                     alarmstatus === 6
                  ) {
                     //限流充电      -->常闭接触器断开
                     this.diagram.type = 2;
                     this.diagram.desc = "(开关断开)";
                  } else {
                     //直流充电     -->常闭接触器闭合
                     this.diagram.type = 2;
                     this.diagram.desc = "(开关闭合)";
                  }
               } else {
                  this.diagram.type = 0;
                  this.diagram.desc = "(开关闭合)";
               }
               break;
            default:
               this.diagram.type = -1;
               this.maskShow = true;
               break;
         }
         // 锂电池详细描述为空
         if (isLithium) {
            this.diagram.desc = "";
         }
      },
      // 61850设备信息
      setEquip61850(data) {
         //  电路图类型
         let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
         this.diagram.desc = "";
         // 关闭遮罩层
         this.maskShow = false;
         // 设置停电放电状态
         if (data.dev_onlinevollow) {
            this.inputs.batt_state = 5;
            this.diagram.type = 5;
            this.diagram.desc = "(开关闭合)";
            this.diagram.powerCut = 1;
            // 当前设备是BTS设备
            if (workstatus === 0 && data.dev_res_test_state !== 0) {
               this.diagram.desc += "(内阻测试)";
            }
            return;
         }
         switch (workstatus) {
            case 0: //浮充状态拓扑图
               this.diagram.type = 0;
               this.diagram.desc = "(开关闭合)";
               break;
            case 4: //浮充状态(内阻测试)拓扑图
               this.diagram.type = 0;
               // 当前设备是否是内阻测试
               this.diagram.desc = "(开关闭合)";
               this.diagram.desc += "(内阻测试)";
               break;
            case 1: //充电状态拓扑图
               this.diagram.type = 2;
               this.diagram.desc = "(开关断开)";
               break;
            case 2: //放电状态拓扑图
               this.diagram.type = 1;
               this.diagram.desc = "(开关断开)";
               break;
            case 3: //放电状态拓扑图
               this.diagram.type = 5;
               break;
            case 5: //放电状态(KD测试)拓扑图
               this.diagram.type = 3;
               this.diagram.desc = "(开关断开)";
               this.diagram.desc += "(KD测试)";
               break;
            case 6: // 离线养护测试
               this.diagram.type = 4;
               this.diagram.desc = "离线养护测试";
               break;
            default:
               //未知
               this.diagram.type = -1;
               this.diagram.desc = "(未知)";
               this.maskShow = true;
               break;
         }
         // 设备工作状态
         let workStates = const_61850.workstates;
         this.setStateList("workState", workStates[data.dev_workstate]);
         // 核容终止原因
         // let stopReasons = const_61850.stopreasons;
         // if (data.dev_workstate == 2) {
         //   this.setStateList("stopReason", "未知");
         // } else {
         //   this.setStateList(
         //     "stopReason",
         //     stopReasons[data.dev_last_captest_stop_type]
         //   );
         // }
         // 操作失败原因
         let failReasons = const_61850.failreasons;
         this.setStateList("failReason", failReasons[data.dev_alarmstate]);
         // 告警信息
         let alarms = data.dev_61850alarms.split(",");
         // alarms = ['false', 'false', 'true', 'false', 'true'];
         // 通讯状态
         if (alarms[1] == "true") {
            this.setStateList("connect", "异常", "table-row-error");
         } else {
            this.setStateList("connect", "正常", "");
         }
         // 温度
         if (alarms[2] == "true") {
            this.setStateList("devTemp", "异常", "table-row-error");
         } else {
            this.setStateList("devTemp", "正常", "");
         }
         // 干接点
         if (alarms[4] == "true") {
            this.setStateList("contact", "异常", "table-row-error");
         } else {
            this.setStateList("contact", "正常", "");
         }
      },
      // 基础信息
      setEquipBase(data) {
         let groupIndex = this.batt.GroupIndexInFBSDevice;
         // 设备的温度
         this.diagram.temp = data.dev_temp;
         let contactRes = (groupIndex != 0
            ? data.dev_conresist1
            : data.dev_conresist
         ).toHold(2);
         let dropVol = (groupIndex != 0
            ? data.dev_condvoldp1
            : data.dev_condvoldp
         ).toHold(2);
         let alarms = data.dev_61850alarms.split(",");
         if (alarms.length) {
            this.diagram.contactRes = alarms[0] == "true" ? "k1异常" : contactRes;
            this.diagram.dropVol = alarms[3] == "true" ? "D1异常" : dropVol;
         } else {
            this.diagram.contactRes = contactRes;
            this.diagram.dropVol = dropVol;
         }
      },
      realTimeLd9Data() {