longyvfengyun
2024-07-02 eb61309008f4de07f2afba9ab2f79b29364a73da
61852设备修改
4个文件已修改
4个文件已添加
649 ■■■■ 已修改文件
src/assets/js/config.module.js 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_61852.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataMager/battGroupMager.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/CircuitDiagram.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/DevAlarmParams.vue 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/js/devAlaramParams.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/realTime.vue 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
流程图/山西太原-远程核容放电-2024-03-14.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.module.js
@@ -1,85 +1,86 @@
module.exports = {
  logo: {
    label: '平台logo',
    des: '显示平台logo状态',
    fileName: 'gjdw',       // gjdw, nfdw, gjdx, qwh, gdnr
    label: "平台logo",
    des: "显示平台logo状态",
    fileName: "gjdw", // gjdw, nfdw, gjdx, qwh, gdnr
    value: true,
  },
  uKey: {
    label: 'uKey',
    label: "uKey",
    des: "用户需要通过插入uKey才可以登录",
    value: false,
  },
  face: {   // å¼€å¯äººè„¸è¯†åˆ«å¿…须要开启uKey
  face: {
    // å¼€å¯äººè„¸è¯†åˆ«å¿…须要开启uKey
    label: "人脸识别",
    des: "用户可以直接通过人脸识别登录",
    value: false,    // å¼€å¯è¿™ä¸ªåŒæ—¶éœ€è¦è¯¢é—®è¿ç»´äººå‘˜ï¼Œéœ€è¦ä¸éœ€è¦å¼€å¯åŠ¨æ”¾ç”µå’Œé‡å¯çš„äººè„¸
    value: false, // å¼€å¯è¿™ä¸ªåŒæ—¶éœ€è¦è¯¢é—®è¿ç»´äººå‘˜ï¼Œéœ€è¦ä¸éœ€è¦å¼€å¯åŠ¨æ”¾ç”µå’Œé‡å¯çš„äººè„¸
  },
  dischargeByFace: {
    label: '启动放电添加人脸识别',
    des: '启动充放电测试使用人脸识别',
    value: false
    label: "启动放电添加人脸识别",
    des: "启动充放电测试使用人脸识别",
    value: false,
  },
  setParamsByFace: {
    label: '设置放电参数添加人脸识别',
    des: '设置放电参数时需要进行人脸识别',
    value: false
    label: "设置放电参数添加人脸识别",
    des: "设置放电参数时需要进行人脸识别",
    value: false,
  },
  restartDevByFace: {
    label: '重启设备添加人脸识别',
    des: '开启后重启设备时需要进行人脸识别',
    value: false
    label: "重启设备添加人脸识别",
    des: "开启后重启设备时需要进行人脸识别",
    value: false,
  },
  autograph: {
    label: '签名',
    des: '电池信息配置中添加设备的签名,用于充放电测试时验证',
    label: "签名",
    des: "电池信息配置中添加设备的签名,用于充放电测试时验证",
    value: false,
  },
  changeIp: {
    label: '远程修改IP',
    des: '电池信息配置中点击编辑可以远程修改ip',
    label: "远程修改IP",
    des: "电池信息配置中点击编辑可以远程修改ip",
    value: false,
  },
  copyRight: {
    label: '版权声明',
    des: '显示版权信息',
    data: '版权所有:北京清网华科技股份有限公司 ç”µè¯ï¼š021-75498(路电)',
    label: "版权声明",
    des: "显示版权信息",
    data: "版权所有:北京清网华科技股份有限公司 ç”µè¯ï¼š021-75498(路电)",
    value: false,
  },
  weather: {
    label: '天气预报',
    des: '天气预报',
    label: "天气预报",
    des: "天气预报",
    value: false,
  },
  bigScreen: {
    label: '大屏数据展示',
    des: '首页显示大屏展示',
    label: "大屏数据展示",
    des: "首页显示大屏展示",
    value: false,
  },
  verifyCode: {
    label: '验证码',
    des: '登录是否启用验证码',
    label: "验证码",
    des: "登录是否启用验证码",
    value: true,
  },
  messageCode: {
    label: '短信验证码',
    des: '登录是否启用短信验证码',
    label: "短信验证码",
    des: "登录是否启用短信验证码",
    value: false,
  },
  autoExit: {
    label: "自动退出",
    des: "长时间不操作自动退出",
    value: false
    value: false,
  },
  logCap: {
    label: "审计容量",
    des: "显示审计容量的健康度",
    value: false
    value: false,
  },
  // å‘布的  å®¢æˆ·åç§°
  clientName: {
    label: '客户名称',
    des: '有自定义需求的客户名称',
    label: "客户名称",
    des: "有自定义需求的客户名称",
    /**
     * æ ‡å‡†ç‰ˆ: ''
     * æˆéƒ½çŸ³åŒ–: 'cdsh'
@@ -91,17 +92,17 @@
     * å—京测控: 'njck'
     * äº‘南昆明供电局:'ynkm'
     */
     // name: '',
    name: 'sxty',   // è¯·æŸ¥çœ‹alarmPopup是否开启,logo是否开启且为gjdw
    name: "",
    // name: 'sxty',   // è¯·æŸ¥çœ‹alarmPopup是否开启,logo是否开启且为gjdw
    // name: 'tydc',
    // name: 'njck',
    // name: 'ynkm',
    // name: "ynkm",
    //value: false,
  },
  // æ˜¯å¦è¦ï¼ˆåŠ éªŒç­¾ï¼‰ å®‰å…¨æ¨¡å¼
  safeMode: {
    label: '安全模式',
    des: '请求接口加验签',
    label: "安全模式",
    des: "请求接口加验签",
    value: false,
  },
  skin: {
@@ -115,23 +116,23 @@
    // themeName: "科技蓝",
    skinName: "science-green",
    themeName: "荧光绿",
    value: false
    value: false,
    // value: true
  },
  alarmPopup: {
    label: "告警弹出框",
    des: "登录平台后,右下方告警弹出框提示",
    // value: false
    value: true
    value: false,
    // value: true,
  },
  WHYC: {
    label: '自用',
    des: '内网自用时设为true, ç»™å®¢æˆ·ç”¨ä¸ºfalse',
    value: false
    label: "自用",
    des: "内网自用时设为true, ç»™å®¢æˆ·ç”¨ä¸ºfalse",
    value: false,
  },
  analogData: {
    label: '模拟数据',
    des: '开启数据模拟,实时监控显示为浮充状态',
    value: false
    label: "模拟数据",
    des: "开启数据模拟,实时监控显示为浮充状态",
    value: false,
  },
};
src/assets/js/const/const_61852.js
New file
@@ -0,0 +1,16 @@
export default {
  failreasons: {
    0x00: "无",
    0x03: "内部通信故障",
    0x04: "系统存在告警",
    0x05: "系统测试中",
    0x06: "输入电压过高",
    0x07: "输入电压多低",
    0x08: "负载功率太小",
    0x09: "两段直流母线压差大",
    0x0a: "两段电池组压差大",
    0x0b: "远程闭锁状态",
    0x0c: "急停状态",
    0x0f: "未知",
  },
};
src/views/dataMager/battGroupMager.vue
@@ -160,7 +160,9 @@
          round
          size="mini"
          icon="el-icon-wallet"
          @click="searchData(false, true)">导出</el-button>
          @click="searchData(false, true)"
          >导出</el-button
        >
      </div>
      <el-pagination
        size="mini"
@@ -305,7 +307,7 @@
import { isHasPermit } from "@/assets/js/tools";
import EditAutograph from "./components/EditAutograph";
import ChangeIpParams from "./components/ChangeIpParams";
import {const_61850, const_battery_type} from "@/assets/js/const";
import { const_61850, const_battery_type } from "@/assets/js/const";
import getItemByKey from "@/assets/js/tools/getItemByKey";
export default {
  name: "battGroupMager",
@@ -537,8 +539,8 @@
        {
          prop: "signTypeText",
          label: "验签格式",
          minWidth: 160
        }
          minWidth: 160,
        },
      ],
      tableData: [],
      addDialog: false,
@@ -726,8 +728,8 @@
        stationName2: filters.city, // å¸‚
        stationName5: filters.county, // åŒº/县
        stationName3: filters.home, // ç«™ç‚¹
        pageNum: isExportFile?1:page.pageCurr,
        pageSize: isExportFile?page.pageAll:page.pageSize,
        pageNum: isExportFile ? 1 : page.pageCurr,
        pageSize: isExportFile ? page.pageAll : page.pageSize,
      };
      // è¯·æ±‚后台
      search(searchParams)
@@ -744,8 +746,11 @@
                item.battGroupNum,
                const_battery_type.types
              );
              let signTypeItem = getItemByKey(item.signType, const_61850.signTypes);
              item.signTypeText = signTypeItem?signTypeItem.label:"未知";
              let signTypeItem = getItemByKey(
                item.signType,
                const_61850.signTypes
              );
              item.signTypeText = signTypeItem ? signTypeItem.label : "未知";
            });
            list = data.list;
            // è®¾ç½®æ•°æ®æ€»æ•°
@@ -754,9 +759,9 @@
            this.page.pageCurr = 1;
            this.page.pageAll = 0;
          }
          if(isExportFile) {
          if (isExportFile) {
            this.exportFile(list);
          }else {
          } else {
            // è®¾ç½®è¡¨æ ¼æ•°æ®
            this.tableData = list;
          }
@@ -865,7 +870,8 @@
          }
          console.log(list);
          this.recordDatas = list;
          this.recordTitle = rData.stationName + ' ' + rData.battGroupName + ' å˜æ›´è®°å½•';
          this.recordTitle =
            rData.stationName + " " + rData.battGroupName + " å˜æ›´è®°å½•";
          this.recordVisible = true;
          this.$layer.close(loading);
        })
src/views/dataTest/components/CircuitDiagram.vue
@@ -114,7 +114,8 @@
    :contact-res="contactRes"
    :load-curr="loadCurr"
    :bypass="bypass"
    :batt="batt"></normal9150>
    :batt="batt"
  ></normal9150>
  <!--  é€šç”¨ç”µè·¯å›¾  -->
  <normal-circuit-diagram
    v-else
@@ -233,19 +234,20 @@
    },
    // å·¥ä½œæ¨¡å¼ 0离线 1在线
    mode: {
      type: Number
      type: Number,
    },
    bypass: {   // æ—è·¯å¼€å…³
    bypass: {
      // æ—è·¯å¼€å…³
      type: Object,
      default() {
        return {
          drynodeCommst: 0xAAAA,   // å¹²æŽ¥ç‚¹é€šä¿¡çŠ¶æ€(0xAAAA-正常  0xBBBB-异常)
          k1CheckSt: 0xAAAA,     // æŽ¥è§¦å™¨k1检测状态(0xAAAA-正常  0xBBBB-异常)
          k1St: 0,           // æŽ¥è§¦å™¨k1状态(0-断开  1-闭合)
          urgentswitchSt: 0xAAAA, // æ€¥åœçŠ¶æ€(0xAAAA-未触发  0xBBBB-触发)
          bypassswitchSt: 0xAAAA // æ—è·¯çŠ¶æ€ï¼ˆ0xAAAA-未接入  0xBBBB-接入旁路)
        }
      }
          drynodeCommst: 0xaaaa, // å¹²æŽ¥ç‚¹é€šä¿¡çŠ¶æ€(0xAAAA-正常  0xBBBB-异常)
          k1CheckSt: 0xaaaa, // æŽ¥è§¦å™¨k1检测状态(0xAAAA-正常  0xBBBB-异常)
          k1St: 0, // æŽ¥è§¦å™¨k1状态(0-断开  1-闭合)
          urgentswitchSt: 0xaaaa, // æ€¥åœçŠ¶æ€(0xAAAA-未触发  0xBBBB-触发)
          bypassswitchSt: 0xaaaa, // æ—è·¯çŠ¶æ€ï¼ˆ0xAAAA-未接入  0xBBBB-接入旁路)
        };
      },
    },
    temp: {
      // æ¸©åº¦
@@ -263,6 +265,7 @@
      let rs = "normal";
      let batt = this.batt;
      let devId = batt.fbsdeviceId;
      let pattern61852 = /^61852/;
      // æ ¹æ®è®¾å¤‡çš„类型获取设备的信息
      if (regEquipType(devId, "BTS9110")) {
        // å‡è´Ÿè½½
@@ -273,7 +276,7 @@
        //   rs = "loadReverse";
        // }
        rs = "load";
      } else if (regEquipType(devId, "BTS9120")) {
      } else if (regEquipType(devId, "BTS9120") || pattern61852.test(devId)) {
        // äº¤æµç”µç½‘
        rs = "grid";
      } else if (regEquipType(devId, ["BTS9605", "BTS9611", "BTS9612"])) {
@@ -282,15 +285,15 @@
        rs = "lithium";
      } else if (regEquipType(devId, "LD9")) {
        rs = "ld9";
      } else if (regEquipType(devId, ["BTS9140", 'BTS9141'])) {
      } else if (regEquipType(devId, ["BTS9140", "BTS9141"])) {
        rs = "bts9140";
      } else if (regEquipType(devId, ["fbo4830", "fbo4815"])) {
        // rs = batt.cellShowType == 1 ? "lithium" : "normal";
        rs = "lithiumFbo";
      } else if (regEquipType(devId, 'fbo4831')) {
        rs = 'fbo4831';
      }else if(regEquipType(devId, 'BTS9150')) {
        rs = 'bts9150'
      } else if (regEquipType(devId, "fbo4831")) {
        rs = "fbo4831";
      } else if (regEquipType(devId, "BTS9150")) {
        rs = "bts9150";
      }
      return rs;
    },
src/views/dataTest/components/DevAlarmParams.vue
New file
@@ -0,0 +1,234 @@
<script>
import {
  getParamsApi,
  setParamsApi,
} from "@/views/dataTest/js/devAlaramParams";
export default {
  name: "DevAlarmParams",
  props: {
    batt: {
      type: Object,
      default() {
        return {};
      },
    },
    visible: {
      type: Boolean,
      default: false,
    },
  },
  data() {
    return {
      isCanSet: false,
      layout: {
        span: 12,
        gutter: 16,
      },
      params: {
        devId: 0, // è®¾å¤‡ID
        groupvolHighVal: 0, // ç»„端电压高阈值
        groupvolLowVal: 0, // ç»„端电压低阈值
        moncapHighVal: 0, // å•体容量高阈值
        moncapLowVal: 0, // å•体容量低阈值
        monresHighVal: 0, // å•体内阻高阈值
        monresLowVal: 0, // å•体内阻低阈值
        montmpHighVal: 0, // å•体温度高阈值
        montmpLowVal: 0, // å•体温度低阈值
        monvolHighVal: 0, // å•体电压高阈值
        monvolLowVal: 0, // å•体电压低阈值
        num: 0,
        opCmd: 0, // æ“ä½œå‘½ä»¤
      },
      rules: {},
    };
  },
  methods: {
    async getParams() {
      let batt = this.batt;
      this.isCanSet = false;
      let loading = this.$layer.loading();
      try {
        let res = await getParamsApi(batt.fbsdeviceId);
        this.$layer.close(loading);
        let rs = res.data;
        if (rs.code === 1 && rs.data) {
          this.isCanSet = true;
          this.$message.success("读取成功");
          this.params = rs.data2;
        } else {
          this.isCanSet = false;
          this.$message.warning("读取异常");
        }
      } catch (e) {
        this.$layer.close(loading);
        this.isCanSet = false;
        console.log(e);
        this.$message.error(e);
      }
    },
    async setParams() {
      let params = { ...this.params };
      let loading = this.$layer.loading();
      try {
        let res = await setParamsApi(params);
        this.$layer.close(loading);
        let rs = res.data;
        if (rs.code === 1 && rs.data) {
          this.$message.success("设置成功");
        } else {
          this.$message.warning("设置失败");
        }
      } catch (e) {
        this.$layer.close(loading);
        console.log(e);
        this.$message.error(e);
      }
    },
    close() {
      this.$emit("update:visible", false);
    },
  },
  mounted() {
    this.getParams();
  },
};
</script>
<template>
  <div class="dev-alarm-params">
    <el-form
      ref="ruleForm"
      size="mini"
      label-position="top"
      :model="params"
      :rules="rules"
      class="params-dialog"
    >
      <el-form-item label="机房名称" prop="stationName">
        <el-input
          placeholder="请输入机房名称"
          v-model="batt.stationName"
          readonly="readonly"
        >
        </el-input>
      </el-form-item>
      <el-row :gutter="layout.gutter">
        <el-col :span="layout.span">
          <el-form-item label="组端电压高阈值" prop="groupvolHighVal">
            <el-input
              placeholder="请输入组端电压高阈值"
              v-model="params.groupvolHighVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="组端电压低阈值" prop="groupvolLowVal">
            <el-input
              placeholder="请输入组端电压低阈值"
              v-model="params.groupvolLowVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体容量高阈值" prop="moncapHighVal">
            <el-input
              placeholder="请输入单体容量高阈值"
              v-model="params.moncapHighVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体容量低阈值" prop="moncapLowVal">
            <el-input
              placeholder="请输入单体容量低阈值"
              v-model="params.moncapLowVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体内阻高阈值" prop="monresHighVal">
            <el-input
              placeholder="请输入单体内阻高阈值"
              v-model="params.monresHighVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体内阻低阈值" prop="monresLowVal">
            <el-input
              placeholder="请输入单体内阻低阈值"
              v-model="params.monresLowVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体温度高阈值" prop="montmpHighVal">
            <el-input
              placeholder="请输入单体温度高阈值"
              v-model="params.montmpHighVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体温度低阈值" prop="montmpLowVal">
            <el-input
              placeholder="请输入单体温度低阈值"
              v-model="params.montmpLowVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体电压高阈值" prop="monvolHighVal">
            <el-input
              placeholder="请输入单体电压高阈值"
              v-model="params.monvolHighVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="单体电压低阈值" prop="monvolLowVal">
            <el-input
              placeholder="请输入单体电压低阈值"
              v-model="params.monvolLowVal"
            >
            </el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <div class="form-footer">
        <el-button type="primary" size="mini" @click="getParams"
          >读取
        </el-button>
        <el-button
          type="success"
          size="mini"
          :disabled="!isCanSet"
          @click="setParams"
          >设定
        </el-button>
      </div>
    </el-form>
  </div>
</template>
<style scoped>
.dev-alarm-params {
  width: 560px;
  background-color: #ffffff;
  padding: 8px;
}
.form-footer {
  text-align: right;
  margin-bottom: 0;
}
</style>
src/views/dataTest/js/devAlaramParams.js
New file
@@ -0,0 +1,25 @@
import axios from "axios";
/**
 * æ ¹æ®æœºæˆ¿çš„设备id获取告警参数
 * @param devId
 * @return {AxiosPromise}
 */
export const getParamsApi = (devId) => {
  console.log(devId);
  return axios({
    method: "GET",
    url: "dev6185Almparam/get6185Alarm",
    params: {
      devId,
    },
  });
};
export const setParamsApi = (data) => {
  return axios({
    method: "POST",
    url: "dev6185Almparam/set6185Alarm",
    data,
  });
};
src/views/dataTest/realTime.vue
@@ -242,10 +242,14 @@
              <div class="hdw-menu-list">
                <ul>
                  <li class="hdw-menu-item" v-if="control.data.startTest.show">
                    <a @click="startTest" href="javascript:void(0);">启动核容测试</a>
                    <a @click="startTest" href="javascript:void(0);"
                      >启动核容测试</a
                    >
                  </li>
                  <li class="hdw-menu-item" v-if="isSxty">
                    <a @click="confirmStartResTest" href="javascript:void(0);">启动内阻测试</a>
                    <a @click="confirmStartResTest" 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>
@@ -332,10 +336,19 @@
                    >
                  </li>
                  <li class="hdw-menu-item" v-if="isCanUpdateTime">
                    <a @click="updateDevTime" href="javascript:void(0);">同步设备时间</a>
                    <a @click="updateDevTime" href="javascript:void(0);"
                      >同步设备时间</a
                    >
                  </li>
                  <li class="hdw-menu-item">
                    <a @click="regularTestRes" href="javascript:void(0);">周期内阻测试设置</a>
                    <a @click="regularTestRes" href="javascript:void(0);"
                      >周期内阻测试设置
                    </a>
                  </li>
                  <li class="hdw-menu-item">
                    <a @click="alarmParamsShow" href="javascript:void(0);"
                      >告警参数设置
                    </a>
                  </li>
                </ul>
              </div>
@@ -623,7 +636,7 @@
                :show-tools="true"
                @right-click="chartRightCLick"
              ></bar-chart>
                <!-- max-color="red"
              <!-- max-color="red"
                min-color="green" -->
            </el-tab-pane>
            <el-tab-pane
@@ -639,7 +652,7 @@
                :show-tools="true"
                @right-click="chartRightCLick"
              ></bar-chart>
                <!-- max-color="red"
              <!-- max-color="red"
                min-color="green" -->
            </el-tab-pane>
            <el-tab-pane
@@ -933,18 +946,23 @@
    >
      <stop-curing v-if="stopCuringDialog.show" :batt="batt"></stop-curing>
    </el-dialog>
<!--    <el-dialog-->
<!--      title="视频监控"-->
<!--      width="600px"-->
<!--      :visible.sync="esVideoDialog"-->
<!--      :close-on-click-modal="false"-->
<!--      top="0"-->
<!--      class="dialog-center"-->
<!--      :modal-append-to-body="false"-->
<!--    >-->
<!--      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>-->
<!--    </el-dialog>-->
    <modal name="videoModal" :draggable="true" height="auto" :clickToClose="false">
    <!--    <el-dialog-->
    <!--      title="视频监控"-->
    <!--      width="600px"-->
    <!--      :visible.sync="esVideoDialog"-->
    <!--      :close-on-click-modal="false"-->
    <!--      top="0"-->
    <!--      class="dialog-center"-->
    <!--      :modal-append-to-body="false"-->
    <!--    >-->
    <!--      <ez-video v-if="esVideoDialog" :sn="esVideoSn"></ez-video>-->
    <!--    </el-dialog>-->
    <modal
      name="videoModal"
      :draggable="true"
      height="auto"
      :clickToClose="false"
    >
      <div class="modal-title-wrapper">
        <div class="modal-title-content">视频监控</div>
        <div class="modal-title-tools">
@@ -1143,8 +1161,13 @@
      width="auto"
      top="0"
      class="dialog-center"
      :modal-append-to-body="false">
      <regular-test-res-params v-if="regularTestResInfo.visible" :batt="batt" :visible.sync="regularTestResInfo.visible"></regular-test-res-params>
      :modal-append-to-body="false"
    >
      <regular-test-res-params
        v-if="regularTestResInfo.visible"
        :batt="batt"
        :visible.sync="regularTestResInfo.visible"
      ></regular-test-res-params>
    </el-dialog>
    <!--  é‡å¯è®¾å¤‡ä½¿ç”¨äººè„¸è¯†åˆ«  -->
    <el-dialog
@@ -1156,11 +1179,28 @@
      :modal="false"
      class="dialog-center"
      :modal-append-to-body="false"
      :destroy-on-close="true">
      :destroy-on-close="true"
    >
      <check-face
        v-if="restartFaceShow"
        @checkSuccess="restartFaceSuccess"
      ></check-face>
    </el-dialog>
    <!-- è®¾å¤‡å‘Šè­¦å‚数设置 -->
    <el-dialog
      title="设备告警参数设置"
      :visible.sync="alarmParamsInfo.visible"
      width="auto"
      top="0"
      class="dialog-center"
      :close-on-press-escape="false"
      :modal-append-to-body="false"
    >
      <dev-alarm-params
        v-if="alarmParamsInfo.visible"
        :batt="batt"
        :visible.sync="alarmParamsInfo.visible"
      ></dev-alarm-params>
    </el-dialog>
  </flex-layout>
</template>
@@ -1210,9 +1250,13 @@
  setGuidesData,
  startResTest,
  stopLd6,
  updateDevTimeApi
  updateDevTimeApi,
} from "./js/realTime";
import {getBattGroupInfo, getBattRecords, getStationBattInfo,} from "../dataMager/js/battGroupMager";
import {
  getBattGroupInfo,
  getBattRecords,
  getStationBattInfo,
} from "../dataMager/js/battGroupMager";
import {
  formatSeconds,
  getBarNum,
@@ -1226,7 +1270,12 @@
  sethoubeiTime,
} from "@/assets/js/tools";
import {const_61850, const_9100, const_ld_nine, const_system,} from "@/assets/js/const";
import {
  const_61850,
  const_9100,
  const_ld_nine,
  const_system,
} from "@/assets/js/const";
import getMarkLineData from "@/components/chart/js/getMarkLineDataPlus";
import getTblHeader from "./js/getTblHeader";
@@ -1235,18 +1284,20 @@
import createWs from "@/assets/js/websocket";
import HomeImageList from "@/components/homeImageList";
import JcParams from "@/views/dataTest/components/JcParams";
import {ExportFile} from "@/assets/js/tools/exportFile";
import { ExportFile } from "@/assets/js/tools/exportFile";
import const_digit from "@/assets/js/const/const_digit";
import FlexBox from "@/components/FlexBox.vue";
import BattAssetInfo from "@/views/dataMager/components/battAssetInfo.vue";
import {checkUserPwd} from "@/views/login/js/api";
import { checkUserPwd } from "@/views/login/js/api";
import BattGroupAlarm from "@/views/dataTest/components/battGroupAlarm.vue";
import BattGroupAlarm9612 from "@/views/dataTest/components/battGroupAlarm9612.vue";
import {getBit} from "@/assets/js/const/const_storage";
import { getBit } from "@/assets/js/const/const_storage";
import getItemByKey from "@/assets/js/tools/getItemByKey";
import const_9612 from "@/assets/js/const/const_9612";
import RegularTestResParams from "@/views/dataTest/components/RegularTestResParams.vue";
import CheckFace from "@/components/checkFace.vue";
import const_61852 from "@/assets/js/const/const_61852";
import DevAlarmParams from "@/views/dataTest/components/DevAlarmParams.vue";
const WSMixin = createWs("RealTime");
@@ -1267,6 +1318,7 @@
  name: "movingRingSysteRrealTime",
  mixins: [WSMixin],
  components: {
    DevAlarmParams,
    CheckFace,
    RegularTestResParams,
    BattGroupAlarm9612,
@@ -1343,6 +1395,9 @@
      updateDevTimeInfo: {
        visible: false,
        date: "2020-10-01 00:00:00",
      },
      alarmParamsInfo: {
        visible: false,
      },
      // isRequest: 0,
      testNumber: 0,
@@ -1527,14 +1582,14 @@
        dropVol: 0, // å¯¼é€šåŽ‹é™
        devType: 0, // è®¾å¤‡ç±»åž‹
        bypass: {
          drynodeCommst: 0xAAAA,   // å¹²æŽ¥ç‚¹é€šä¿¡çŠ¶æ€(0xAAAA-正常  0xBBBB-异常)
          k1CheckSt: 0xAAAA,     // æŽ¥è§¦å™¨k1检测状态(0xAAAA-正常  0xBBBB-异常)
          k1St: 0xAAAA,           // æŽ¥è§¦å™¨k1状态(0-断开  1-闭合)
          urgentswitchSt: 0xAAAA, // æ€¥åœçŠ¶æ€(0xAAAA-未触发  0xBBBB-触发)
          bypassswitchSt: 0xAAAA // æ—è·¯çŠ¶æ€ï¼ˆ0xAAAA-未接入  0xBBBB-接入旁路)
          drynodeCommst: 0xaaaa, // å¹²æŽ¥ç‚¹é€šä¿¡çŠ¶æ€(0xAAAA-正常  0xBBBB-异常)
          k1CheckSt: 0xaaaa, // æŽ¥è§¦å™¨k1检测状态(0xAAAA-正常  0xBBBB-异常)
          k1St: 0xaaaa, // æŽ¥è§¦å™¨k1状态(0-断开  1-闭合)
          urgentswitchSt: 0xaaaa, // æ€¥åœçŠ¶æ€(0xAAAA-未触发  0xBBBB-触发)
          bypassswitchSt: 0xaaaa, // æ—è·¯çŠ¶æ€ï¼ˆ0xAAAA-未接入  0xBBBB-接入旁路)
        },
        devHumidity: 0,   // æ¹¿åº¦
        devTemperature: 0,  // æ¸©åº¦
        devHumidity: 0, // æ¹¿åº¦
        devTemperature: 0, // æ¸©åº¦
      },
      dischargeDialog: {
        show: false,
@@ -1911,15 +1966,15 @@
  },
  methods: {
    showEsVideoDialog() {
      this.esVideoDialog  = true;
      this.$nextTick(()=>{
      this.esVideoDialog = true;
      this.$nextTick(() => {
        this.$modal.show("videoModal");
      });
    },
    closeEsVideoDialog() {
      this.$modal.hide("videoModal");
      this.$nextTick(()=>{
        this.esVideoDialog  = false;
      this.$nextTick(() => {
        this.esVideoDialog = false;
      });
    },
    // æˆéƒ½çŸ³åŒ–判断
@@ -2447,7 +2502,7 @@
              // å•位内阻告警基准值从电池信息中取标称内阻值来计算  20240428
              // let std_mon_res =
              //   (1 * (batt.monVolStd / 2)) / (batt.monCapStd / 100);
               let std_mon_res = batt.monResStd;
              let std_mon_res = batt.monResStd;
              high = parseFloat(std_mon_res * item.almHighCoe).toHold(RES);
              highHigh = parseFloat(std_mon_res * item.almHighCoeUpper).toHold(
                RES
@@ -2501,10 +2556,10 @@
          }
          // å•体电压柱状图添加标称电压横线
          if(name === 'Voltage') {
          if (name === "Voltage") {
            chartData.series[0].markLine.data.push({
              name: '浮充电压',
              yAxis: batt.monVolStd/2*2.25,
              name: "浮充电压",
              yAxis: (batt.monVolStd / 2) * 2.25,
              lineStyle: {
                width: 2,
                color: "#073ff6",
@@ -2513,7 +2568,7 @@
                color: "#ffffff",
                fontSize: 16,
                formatter: "{b}:{c}V",
                position: 'insideEndTop',
                position: "insideEndTop",
                padding: [6, 4, 2, 4],
                backgroundColor: "#073ff680",
                borderWidth: 2,
@@ -2727,7 +2782,7 @@
                "lithiumPack",
                "BTS9140",
                "equip4016",
                "BTS9150"
                "BTS9150",
              ])
            ) {
              this.setEquipBTS(data);
@@ -2747,26 +2802,25 @@
    },
    setBts9150Dev(res) {
      // éž9150设备直接返回不进行处理
      if(!res) {
      if (!res) {
        return;
      }
      let index = Number(this.batt.groupIndexInFBSDevice);
      if(res.code === 1 && res.data) {
      if (res.code === 1 && res.data) {
        this.diagram.bypass = res.data2;
        if(index === 1) {
        if (index === 1) {
          this.diagram.bypass.k1St = res.data2.k2St;
          this.diagram.bypass.k1CheckSt = res.data2.k2CheckSt;
        }
      }else {
      } else {
        this.diagram.bypass = {
          drynodeCommst: 0xAAAA,   // å¹²æŽ¥ç‚¹é€šä¿¡çŠ¶æ€(0xAAAA-正常  0xBBBB-异常)
          k1CheckSt: 0xAAAA,     // æŽ¥è§¦å™¨k1检测状态(0xAAAA-正常  0xBBBB-异常)
          k1St: 0,           // æŽ¥è§¦å™¨k1状态(0-断开  1-闭合)
          urgentswitchSt: 0xAAAA, // æ€¥åœçŠ¶æ€(0xAAAA-未触发  0xBBBB-触发)
          bypassswitchSt: 0xAAAA // æ—è·¯çŠ¶æ€ï¼ˆ0xAAAA-未接入  0xBBBB-接入旁路)
          drynodeCommst: 0xaaaa, // å¹²æŽ¥ç‚¹é€šä¿¡çŠ¶æ€(0xAAAA-正常  0xBBBB-异常)
          k1CheckSt: 0xaaaa, // æŽ¥è§¦å™¨k1检测状态(0xAAAA-正常  0xBBBB-异常)
          k1St: 0, // æŽ¥è§¦å™¨k1状态(0-断开  1-闭合)
          urgentswitchSt: 0xaaaa, // æ€¥åœçŠ¶æ€(0xAAAA-未触发  0xBBBB-触发)
          bypassswitchSt: 0xaaaa, // æ—è·¯çŠ¶æ€ï¼ˆ0xAAAA-未接入  0xBBBB-接入旁路)
        };
      }
    },
    disconnect() {
      // è®¾å¤‡æœªè¿žæŽ¥
@@ -2794,7 +2848,6 @@
    },
    // åŸºç¡€ä¿¡æ¯
    setEquipBase(data) {
      console.log(data);
      let groupIndex = this.batt.groupIndexInFBSDevice;
      // è®¾å¤‡çš„æ¸©åº¦
      this.diagram.temp = data.devTemp;
@@ -2987,7 +3040,6 @@
      this.setStateList("workState", workStates[data.devWorkstate]);
      // æ ¸å®¹ç»ˆæ­¢åŽŸå› 
      let stopReasons = const_61850.stopreasons;
      console.log(data);
      if (data.devWorkstate == 2) {
        this.setStateList("stopReasonIm", "未知");
      } else {
@@ -2999,6 +3051,11 @@
      // æ“ä½œå¤±è´¥åŽŸå› 
      let failReasons = const_61850.failreasons;
      // æ ¡éªŒ61852设备
      let pattern = /^61852/;
      if (pattern.test(data.devId)) {
        failReasons = const_61852.failreasons;
      }
      this.setStateList("failReason", failReasons[data.devAlarmstate]);
      // å‘Šè­¦ä¿¡æ¯
@@ -3411,7 +3468,7 @@
              "lithiumPack",
              "BTS9611",
              "equip4016",
              "BTS9150"
              "BTS9150",
            ])
          ) {
            // åœæ­¢è®¾å¤‡
@@ -3832,21 +3889,23 @@
      this.dischargeDialog.show = false;
    },
    restartSystem() {
      if(sysConfig.restartDevByFace.value) {
      if (sysConfig.restartDevByFace.value) {
        this.restartFaceShow = true;
      }else {
      } else {
        let resetPwd = "restart123456";
        this.$prompt("请输入重启密码", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          inputType: "password",
        }).then(({ value }) => {
          if (value == resetPwd) {
            this.restartSystemReq();
          } else {
            this.$layer.msg("密码不正确");
          }
        }).catch(() => {});
        })
          .then(({ value }) => {
            if (value == resetPwd) {
              this.restartSystemReq();
            } else {
              this.$layer.msg("密码不正确");
            }
          })
          .catch(() => {});
      }
    },
    restartFaceSuccess() {
@@ -3859,15 +3918,17 @@
      restart({
        devId: batt.fbsdeviceId,
        opCmd: 16,
      }).then((res) => {
        res = res.data;
        if (res.code && res.data) {
          this.$alert("发送重启命令成功", "系统提示");
        } else {
          this.$alert("发送重启命令失败!", "系统提示");
        }
        this.$layer.close(loading);
      }).catch((error) => {});
      })
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            this.$alert("发送重启命令成功", "系统提示");
          } else {
            this.$alert("发送重启命令失败!", "系统提示");
          }
          this.$layer.close(loading);
        })
        .catch((error) => {});
    },
    getLastCapacityTest(res) {
      if (res) {
@@ -3935,6 +3996,9 @@
    regularTestRes() {
      this.regularTestResInfo.visible = true;
    },
    alarmParamsShow() {
      this.alarmParamsInfo.visible = true;
    },
    confirmUpdateDevTime() {
      this.$confirm("确定更新设备时间?", "提示", {
        confirmButtonText: "确定",
Á÷³Ìͼ/ɽÎ÷̫ԭ-Ô¶³ÌºËÈݷŵç-2024-03-14.png