longyvfengyun
2024-08-14 a37c0febb90efd7aa25855f25cabf9ddc6a92c31
Merge branch 'master' of http://118.89.139.230:10101/r/fg-plus
7个文件已修改
4个文件已添加
2906 ■■■■ 已修改文件
src/assets/js/const/const_61590.js 513 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/DischargeDialogContent.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/DischargeParamsDyhr.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/acParams.vue 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/dcParams.vue 680 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/moduleParams.vue 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/components/switchControl.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/js/realTime.js 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/realTimeDyhr.vue 503 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/svg/svgDyhr.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/components/svg/svgInfo.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_61590.js
New file
@@ -0,0 +1,513 @@
export default {
  workstates: [
    "在线浮充",
    "预充电",
    "核容测试",
    "停电放电",
    "内阻测试",
    "K1/D1测试",
    "离线养护测试",
    "未知",
  ],
  cmd: {
    start: 81, // 启动测试
    stop: 83, // 停止测试
    set: 40, // 设置参数
    get: 41, // 获取参数
  },
  testType: [
    {
      label: "核容放电",
      value: 37,
    },
    {
      label: "内阻测试",
      value: 50,
    },
    {
      label: "K1/D1测试",
      value: 72,
    },
  ],
  acParamsRules: {
    // 交流过压告警值    V    U16    RW    2    范围220~300V,默认280V
    acOvervolCoeAc: {
      pattern: /^[0-9]{3}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 220,
      max: 300,
      msg: "取值范围220~300(保留两位小数)",
    },
    // 交流欠压告警值    V    U16    RW    2    范围140~200V,默认175V
    acUndervolCoeAc: {
      pattern: /^[0-9]{3}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 140,
      max: 200,
      msg: "取值范围140~200(保留两位小数)",
    },
    // 缺相告警点    V    U16    RW    2    范围40~140V,默认90V
    acLessvolCoeAc: {
      pattern: /^[0-9]{2,3}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 140,
      msg: "取值范围40~140(保留两位小数)",
    },
    // 交流过流告警值    A    U16    RW    2    范围0~99.9A
    acOvercurrCoeAc: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 0,
      max: 99.9,
      msg: "取值范围0~99.9(保留两位小数)",
    },
    // 频率高告警值    Hz    U16    RW    2    范围45~65Hz,默认52Hz
    freqHighCoeAc: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 45,
      max: 65,
      msg: "取值范围45~65(保留两位小数)",
    },
    // 频率低告警值    Hz    U16    RW    2    范围45~50Hz,默认48Hz
    freqLowCoeAc: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 45,
      max: 65,
      msg: "取值范围45~65(保留两位小数)",
    },
  },
  dcParamsRules: {
    // 系统限流值    A    U16    RW    1    5~2000
    sysCurrLimit: {
      pattern: /^[0-9]{1,4}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 5,
      max: 2000,
      msg: "取值范围5~2000(保留一位小数)",
    },
    // 负载过流值    A    U16    RW    1    5~2000
    loadOvercurr: {
      pattern: /^[0-9]{1,4}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 5,
      max: 2000,
      msg: "取值范围5~2000(保留一位小数)",
    },
    // 电池过流值    A    U16    RW    1    3~200
    battOvercurr: {
      pattern: /^[0-9]{1,3}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 3,
      max: 200,
      msg: "取值范围3~200(保留一位小数)",
    },
    // 过压告警值    V    U16    RW    2    50~62
    overvolCoe: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 50,
      max: 62,
      msg: "取值范围50~62(保留两位小数)",
    },
    // 欠压告警值    V    U16    RW    2    39~48
    undervolCoe: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 39,
      max: 48,
      msg: "取值范围39~48(保留两位小数)",
    },
    // LVD1脱离点    V    U16    RW    2    39~46
    lvd1BreakPoint: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 39,
      max: 46,
      msg: "取值范围39~46(保留两位小数)",
    },
    // LVD1恢复点    V    U16    RW    2    40~52
    lvd1RecoveryPoint: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 52,
      msg: "取值范围40~52(保留两位小数)",
    },
    // LVD2脱离点    V    U16    RW    2    39~46
    lvd2BreakPoint: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 39,
      max: 46,
      msg: "取值范围39~46(保留两位小数)",
    },
    // LVD2恢复点    V    U16    RW    2    40~52
    lvd2RecoveryPoint: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 52,
      msg: "取值范围40~52(保留两位小数)",
    },
    // 电池高温告警点    ℃    S16    RW    1    40~80
    battHightempCoe: {
      pattern: /^[0-9]{2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 40,
      max: 80,
      msg: "取值范围40~80(保留一位小数)",
    },
    // 电池低温告警点    ℃    S16    RW    1    -20~20
    battLowtempCoe: {
      pattern: /^\-?[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: -20,
      max: 20,
      msg: "取值范围-20~20(保留一位小数)",
    },
    // 环境高温告警点    ℃    S16    RW    1    30~80
    envirHightempCoe: {
      pattern: /^[0-9]{2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 30,
      max: 80,
      msg: "取值范围30~80(保留一位小数)",
    },
    // 环境低温告警点    ℃    S16    RW    1    -20~20
    envirLowtempCoe: {
      pattern: /^\-?[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: -20,
      max: 20,
      msg: "取值范围-20~20(保留一位小数)",
    },
    // 环境过湿告警点    %    S16    RW    1    0~99
    envirHighhumidCoe: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 0,
      max: 99,
      msg: "取值范围0~99(保留一位小数)",
    },
    // 环境低湿告警点    %    S16    RW    1    0~90
    envirLowhumidCoe: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 0,
      max: 99,
      msg: "取值范围0~99(保留一位小数)",
    },
    // 浮充电压    V    U16    RW    2    40~57
    floatChargeVol: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 57,
      msg: "取值范围40~57(保留两位小数)",
    },
    // 均充电压    V    U16    RW    2    40~58
    junChargeVol: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 58,
      msg: "取值范围40~58(保留两位小数)",
    },
    // 系统最低电压    V    U16    RW    2    39~52
    sysMinVol: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 39,
      max: 52,
      msg: "取值范围39~52(保留两位小数)",
    },
    // 温度补偿系数    mV/℃    U16    RW    0    0-600
    tempCompensateCoe: {
      pattern: /^[0-9]{1,3}$/,
      regVal: true,
      min: 0,
      max: 600,
      msg: "取值范围0~600(整数)",
    },
    // 周期均充间隔    day    U16    RW    0    2~150
    junChargeCycleInterval: {
      pattern: /^[0-9]{1,3}$/,
      regVal: true,
      min: 2,
      max: 150,
      msg: "取值范围2~150(整数)",
    },
    // 均充持续时间    min    U16    RW    0    180~6000
    junChargeCycleTime: {
      pattern: /^[0-9]{3,4}$/,
      regVal: true,
      min: 180,
      max: 6000,
      msg: "取值范围180~6000(整数)",
    },
    // 快充电压点    V    U16    RW    2    40至58
    fastChargeVolCoe: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 58,
      msg: "取值范围40~58(保留两位小数)",
    },
    // 快充时间限制    分    U16    RW    0    0至360
    fastChargeTimeLimit: {
      pattern: /^[0-9]{1,3}$/,
      regVal: true,
      min: 0,
      max: 360,
      msg: "取值范围0~360(整数)",
    },
    // 电池容量        U16    RW    0    10-999
    battCapSet: {
      pattern: /^[0-9]{2,3}$/,
      regVal: true,
      min: 10,
      max: 999,
      msg: "取值范围10~999(整数)",
    },
    // 均充转浮充系数    %    U16    RW    1    1~10%
    jun2floatChargeCoe: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 1,
      max: 10,
      msg: "取值范围1~10(保留一位小数)",
    },
    // 浮充转均充系数    %    U16    RW    1    1~50%
    float2junChargeCoe: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 1,
      max: 50,
      msg: "取值范围1~50(保留一位小数)",
    },
    // 电池充电限流点    %    U16    RW    1    1~50%
    battChargecurrLimit: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 1,
      max: 50,
      msg: "取值范围1~50(保留一位小数)",
    },
    // 电池测试起始电压    V    U16    RW    2    40至56
    battTestStartvol: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 56,
      msg: "取值范围40~56(保留两位小数)",
    },
    // 电池测试终止电压    V    U16    RW    2    40至56
    battTestEndvol: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 40,
      max: 56,
      msg: "取值范围40~56(保留两位小数)",
    },
    // 电池测试持续时间    min    U16    RW    0    0-600
    battTestTime: {
      pattern: /^[0-9]{1,3}$/,
      regVal: true,
      min: 0,
      max: 600,
      msg: "取值范围0~600(整数)",
    },
    // 手动均充电时间    H    U16    RW    1    0-600
    junChargeManualTime: {
      pattern: /^[0-9]{1,3}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 0,
      max: 600,
      msg: "取值范围0~600(保留一位小数)",
    },
    // // 负载1下电延时    min    U16    RW    0    0关闭, 1启动
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载1下电脱离点    V    U16    RW    2    39~49
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载1下电恢复点    V    U16    RW    2    40~52
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载2下电延时    min    U16    RW    0    0关闭, 1启动
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载2下电脱离点    V    U16    RW    2    39~49
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载2下电恢复点    V    U16    RW    2    40~52
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载3下电延时    min    U16    RW    0    0关闭, 1启动
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载3下电脱离点    V    U16    RW    2    39~49
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载3下电恢复点    V    U16    RW    2    40~52
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载4下电延时    min    U16    RW    0    0关闭, 1启动
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载4下电脱离点    V    U16    RW    2    39~49
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 负载4下电恢复点    V    U16    RW    2    40~52
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 直流输入过压告警值    V    U16    RW    2    范围80~400V,默认130V
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
    // // 直流输入欠压告警值    V    U16    RW    2    范围50~110V,默认90V
    // DisCurr: {
    //   pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
    //   regVal: true,
    //   min: 2,
    //   max: 50,
    //   msg: "取值范围2~50(保留一位小数)",
    // },
  },
  moduleParamsRules: {
    // 整流模块限流点    A    U16    RW    1    2至50
    rectifyCurrLimit: {
      pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 2,
      max: 50,
      msg: "取值范围2~50(保留一位小数)",
    },
    // 整流模块过压点    V    U16    RW    2    20至62
    rectifyOvervol: {
      pattern: /^[0-9]{2}(\.[0-9]{0,2})?$/,
      regVal: true,
      min: 20,
      max: 62,
      msg: "取值范围20~62(保留两位小数)",
    },
    // 模块休眠系数    %    U16    RW    0    20~80
    dormantRatio: {
      pattern: /^[0-9]{2}$/,
      regVal: true,
      min: 20,
      max: 80,
      msg: "取值范围20~80(整数)",
    },
    // 模块唤醒系数    %    U16    RW    0    20~80
    awakenRatio: {
      pattern: /^[0-9]{2}$/,
      regVal: true,
      min: 20,
      max: 80,
      msg: "取值范围20~80(整数)",
    },
    // 轮换周期    Hour    U16    RW    0    1~200
    rotationCycle: {
      pattern: /^[0-9]{1,3}$/,
      regVal: true,
      min: 1,
      max: 200,
      msg: "取值范围1~200(整数)",
    },
    // 模块基数设置        U16    RW    0    0~32
    modelBase: {
      pattern: /^[0-9]{1,2}$/,
      regVal: true,
      min: 0,
      max: 32,
      msg: "取值范围0~32(整数)",
    },
    // 整流模块额定数量        U16    RW    0    1~32
    modelRatedCnt: {
      pattern: /^[0-9]{1,2}$/,
      regVal: true,
      min: 1,
      max: 32,
      msg: "取值范围1~32(整数)",
    },
  },
  getItemByName(name, list) {
    let result = false;
    for (let i = 0; i < list.length; i++) {
      let item = list[i];
      if (item.name == name) {
        result = item;
        break;
      }
    }
    return result;
  },
};
src/views/dataTest/components/DischargeDialogContent.vue
@@ -8,7 +8,7 @@
      :is-request="isRequest"
      @close="close"
    ></discharge-params61850>
    <discharge-params-dyhr v-else-if="isDyhr" :batt="batt" @close="close"></discharge-params-dyhr>
    <!-- <discharge-params-dyhr v-else-if="isDyhr" :batt="batt" @close="close"></discharge-params-dyhr> -->
    <bts-discharge-params
      v-else-if="regBTS"
      :read-only="readOnly"
@@ -36,7 +36,7 @@
import LdNineParams from "./LdNineParams";
import LdSixParams from "@/views/dataTest/components/LdSixParams.vue";
import DischargeParams9612 from "@/views/dataTest/components/dischargeParams9612.vue";
import DischargeParamsDyhr from "./DischargeParamsDyhr";
// import DischargeParamsDyhr from "./DischargeParamsDyhr";
export default {
  components: {
      DischargeParams9612,
@@ -46,7 +46,7 @@
    BtsDischargeParams,
    ResTest,
    ResTest9611,
    DischargeParamsDyhr,
    // DischargeParamsDyhr,
  },
  props: {
    batt: {
src/views/dataTest/components/DischargeParamsDyhr.vue
@@ -187,6 +187,10 @@
        return {};
      },
    },
    groupIdx: {
      type: Number,
      required: true
    },
    // 只读模式 显示参数用
    pReadOnly: {
      type: Boolean,
@@ -231,7 +235,7 @@
    return {
      // 组号
      groupIdx: "",
      // groupIdx: "",
      layout: {
        gutter: 16,
        span: 12,
@@ -458,7 +462,7 @@
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      set61850Params(this.params)
      set61850Params({...this.params, battGroupNum: this.groupIdx})
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
@@ -611,6 +615,10 @@
</script>
<style scoped>
.params-dialog {
  padding: 8px;
  background: #f0f0f0;
}
.form-footer {
  margin-top: 16px;
  margin-bottom: 16px;
src/views/dataTest/components/acParams.vue
New file
@@ -0,0 +1,297 @@
<template>
  <el-form
    ref="ruleForm"
    size="mini"
    label-position="top"
    :model="params"
    :rules="rules"
    class="params-dialog"
  >
    <el-row :gutter="layout.gutter">
      <el-col :span="layout.span">
        <el-form-item label="交流过压告警值(V)" prop="acOvervolCoeAc">
          <el-input v-model="params.acOvervolCoeAc"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="交流欠压告警值(V)" prop="acUndervolCoeAc">
          <el-input v-model="params.acUndervolCoeAc"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="缺相告警点(V)" prop="acLessvolCoeAc">
          <el-input v-model="params.acLessvolCoeAc"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="交流过流告警值(A)" prop="acOvercurrCoeAc">
          <el-input v-model="params.acOvercurrCoeAc"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="频率高告警值(Hz)" prop="freqHighCoeAc">
          <el-input v-model="params.freqHighCoeAc"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="频率低告警值(Hz)" prop="freqLowCoeAc">
          <el-input v-model="params.freqLowCoeAc"></el-input>
        </el-form-item>
      </el-col>
    </el-row>
    <div class="form-footer">
      <template v-if="!pReadOnly">
        <three-btn @click="getParams()">读取</three-btn>
        <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
      </template>
      <three-btn v-else @click="$emit('close')">关闭</three-btn>
    </div>
    <el-dialog
      title="人脸校验"
      width="480px"
      :visible.sync="setFaceShow"
      :close-on-click-modal="false"
      top="0"
      :modal="false"
      class="dialog-center"
      :modal-append-to-body="false"
      :destroy-on-close="true"
    >
      <check-face
        v-if="setFaceShow"
        @checkSuccess="setFaceSuccess"
      ></check-face>
    </el-dialog>
  </el-form>
</template>
<script>
import const_61590 from "@/assets/js/const/const_61590";
import { testVal } from "@/assets/js/tools";
import CheckFace from "@/components/checkFace";
import config from "@/assets/js/config";
import {
  setDev6159ACParam,
  getDev6159ACParam,
} from "../js/realTime";
import { checkUserPwd } from "@/views/login/js/api";
export default {
  components: { CheckFace },
  props: {
    devId: {
      type: [String, Number],
      required: true,
    },
    // 只读模式 显示参数用
    pReadOnly: {
      type: Boolean,
      default: false,
    },
    paramData: {
      type: Object,
      default() {
        return {};
      },
    },
  },
  data() {
    let rules = const_61590.acParamsRules;
    function getRule(prop) {
      return [
        {
          validator(rule, value, callback) {
            testVal(rule, value, callback, rules[prop]);
          },
          trigger: "change",
        },
      ];
    }
    let rulesObj = {};
    [
      "acOvervolCoeAc",
      "acUndervolCoeAc",
      "acLessvolCoeAc",
      "acOvercurrCoeAc",
      "freqHighCoeAc",
      "freqLowCoeAc",
    ].forEach((v) => {
      rulesObj[v] = getRule(v);
    });
    return {
      // 组号
      groupIdx: "",
      layout: {
        gutter: 16,
        span: 12,
      },
      reason: "",
      setFaceShow: false,
      startFaceShow: false,
      setTestFlag: false, // 设置参数的状态
      readOnly: false,
      params: {
        acOvervolCoeAc: 0,
        acUndervolCoeAc: 0,
        acLessvolCoeAc: 0,
        acOvercurrCoeAc: 0,
        freqHighCoeAc: 0,
        freqLowCoeAc: 0,
        devId: this.devId,
      },
      rules: rulesObj,
    };
  },
  watch: {
  },
  methods: {
    initParams() {
      // 初始化参数
      this.params = {
        acOvervolCoeAc: 0,
        acUndervolCoeAc: 0,
        acLessvolCoeAc: 0,
        acOvercurrCoeAc: 0,
        freqHighCoeAc: 0,
        freqLowCoeAc: 0,
        devId: this.devId,
      };
    },
    // 获取参数
    getParams() {
      // 定义等待框
      let loading = this.$layer.loading(1);
      // 启动按钮不可点击
      this.startTestFlag = false;
      // 查询后台
      getDev6159ACParam(this.devId)
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            let fsparam = res.data2;
            // 遍历参数属性并赋值
            for (let key in this.params) {
              this.params[key] = fsparam[key];
            }
            if (res.data2) {
              this.$layer.msg("读取成功!");
              // 设置按钮可点击
              this.setTestFlag = true;
            }
          } else {
            // 初始化参数
            this.initParams();
            // 设置按钮不可点击
            this.setTestFlag = false;
            this.$layer.msg("读取失败!");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((error) => {
          console.log(error);
          // 初始化参数
          this.initParams();
          // 设置按钮不可点击
          this.setTestFlag = false;
          // 关闭等待框
          this.$layer.close(loading);
          this.$layer.msg("读取失败,读取请求异常!");
        });
    },
    // 提交表单设置参数
    submitFrom() {
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          // 设置参数
          this.setParamsCheck();
        } else {
          this.$layer.msg("存在校验未通过的数据!");
          return false;
        }
      });
    },
    setParamsCheck() {
      if (config.setParamsByFace.value) {
        this.setFaceShow = true;
      } else {
        this.setParams(true);
      }
    },
    // 设置参数
    setParams() {
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      setDev6159ACParam(this.params)
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            // 启动按钮可点击
            this.startTestFlag = true;
            // 提示信息
            this.$layer.msg("设置成功");
          } else {
            // 启动按钮不可点击
            this.startTestFlag = false;
            // 提示信息
            this.$layer.msg("设置失败!");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((error) => {
          console.log(error);
          // 关闭等待框
          this.$layer.close(loading);
          // 启动按钮不可点击
          this.startTestFlag = false;
          // 提示信息
          this.$layer.msg("设置失败,设置请求异常!");
        });
    },
    setFaceSuccess() {
      this.setFaceShow = false;
      this.setParams();
    },
  },
  computed: {
  },
  mounted() {
    // 获取数据
    if (this.pReadOnly) {
      this.initParams();
      this.params = {
        ...this.params,
        ...this.paramData,
      };
    } else {
      this.getParams();
    }
  },
};
</script>
<style scoped>
.params-dialog {
  background: #f0f0f0;
  padding: 20px 20px 1px;
  width: 600px;
}
.form-footer {
  margin-top: 16px;
  margin-bottom: 16px;
  text-align: right;
}
.form-footer .three-btn {
  margin-left: 12px;
}
</style>
src/views/dataTest/components/dcParams.vue
New file
@@ -0,0 +1,680 @@
<template>
  <el-form
    ref="ruleForm"
    size="mini"
    label-position="top"
    :model="params"
    :rules="rules"
    class="params-dialog"
  >
    <el-row :gutter="layout.gutter">
      <el-col :span="layout.span">
        <el-form-item label="系统限流值(A)" prop="sysCurrLimit">
          <el-input v-model="params.sysCurrLimit"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载过流值(A)" prop="loadOvercurr">
          <el-input v-model="params.loadOvercurr"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池过流值(A)" prop="battOvercurr">
          <el-input v-model="params.battOvercurr"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="过压告警值(V)" prop="overvolCoe">
          <el-input v-model="params.overvolCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="欠压告警值(V)" prop="undervolCoe">
          <el-input v-model="params.undervolCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="LVD1启动" prop="lvd1StartFun">
          <el-select
            v-model="params.lvd1StartFun"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="LVD1脱离点(V)" prop="lvd1BreakPoint">
          <el-input v-model="params.lvd1BreakPoint"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="LVD1恢复点(V)" prop="lvd1RecoveryPoint">
          <el-input v-model="params.lvd1RecoveryPoint"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="LVD2启动" prop="lvd2StartFun">
          <el-select
            v-model="params.lvd2StartFun"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="LVD2脱离点(V)" prop="lvd2BreakPoint">
          <el-input v-model="params.lvd2BreakPoint"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="LVD2恢复点(V)" prop="lvd2RecoveryPoint">
          <el-input v-model="params.lvd2RecoveryPoint"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池高温告警点(℃)" prop="battHightempCoe">
          <el-input v-model="params.battHightempCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池低温告警点(℃)" prop="battLowtempCoe">
          <el-input v-model="params.battLowtempCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="环境高温告警点(℃)" prop="envirHightempCoe">
          <el-input v-model="params.envirHightempCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="环境低温告警点(℃)" prop="envirLowtempCoe">
          <el-input v-model="params.envirLowtempCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="环境过湿告警点(%)" prop="envirHighhumidCoe">
          <el-input v-model="params.envirHighhumidCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="环境低湿告警点(%)" prop="envirLowhumidCoe">
          <el-input v-model="params.envirLowhumidCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="浮充电压(V)" prop="floatChargeVol">
          <el-input v-model="params.floatChargeVol"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="均充电压(V)" prop="junChargeVol">
          <el-input v-model="params.junChargeVol"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="系统最低电压(V)" prop="sysMinVol">
          <el-input v-model="params.sysMinVol"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="温度补偿启动" prop="tempCompensateFun">
          <el-select
            v-model="params.tempCompensateFun"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="温度补偿系数(mV/℃)" prop="tempCompensateCoe">
          <el-input v-model="params.tempCompensateCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="周期均充启动" prop="junChargeCycleFun">
          <el-select
            v-model="params.junChargeCycleFun"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="周期均充间隔(天)" prop="junChargeCycleInterval">
          <el-input v-model="params.junChargeCycleInterval"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="均充持续时间(分)" prop="junChargeCycleTime">
          <el-input v-model="params.junChargeCycleTime"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="快充启动" prop="fastChargeStart">
          <el-select
            v-model="params.fastChargeStart"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="停止" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="快充电压点(V)" prop="fastChargeVolCoe">
          <el-input v-model="params.fastChargeVolCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="快充时间限制(分)" prop="fastChargeTimeLimit">
          <el-input v-model="params.fastChargeTimeLimit"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池容量(Ah)" prop="battCapSet">
          <el-input v-model="params.battCapSet"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="均充转浮充系数(%)" prop="jun2floatChargeCoe">
          <el-input v-model="params.jun2floatChargeCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="浮充转均充系数(%)" prop="float2junChargeCoe">
          <el-input v-model="params.float2junChargeCoe"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池充电限流点(%)" prop="battChargecurrLimit">
          <el-input v-model="params.battChargecurrLimit"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池测试功能启动" prop="battTestFun">
          <el-select
            v-model="params.battTestFun"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池测试起始电压(V)" prop="battTestStartvol">
          <el-input v-model="params.battTestStartvol"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池测试终止电压(V)" prop="battTestEndvol">
          <el-input v-model="params.battTestEndvol"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="电池测试持续时间(分)" prop="battTestTime">
          <el-input v-model="params.battTestTime"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="手动均充启动" prop="junChargeManual">
          <el-select
            v-model="params.junChargeManual"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="手动均充电时间(时)" prop="junChargeManualTime">
          <el-input v-model="params.junChargeManualTime"></el-input>
        </el-form-item>
      </el-col>
      <!-- <el-col :span="layout.span">
        <el-form-item label="负载1下电延时(分)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载1下电脱离点(V)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载1下电恢复点(V)" prop="a">
          <el-input v-model="params.groupInfo" readonly></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载2下电延时(分)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载2下电脱离点(V)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载2下电恢复点(V)" prop="a">
          <el-input v-model="params.groupInfo" readonly></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载3下电延时(分)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载3下电脱离点(V)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载3下电恢复点(V)" prop="a">
          <el-input v-model="params.groupInfo" readonly></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载4下电延时(分)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载4下电脱离点(V)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="负载4下电恢复点(V)" prop="a">
          <el-input v-model="params.groupInfo" readonly></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="直流输入过压告警值(V)" prop="a">
          <el-input v-model="params.fbsdeviceId"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="直流输入欠压告警值(V)" prop="a">
          <el-input v-model="params.groupInfo" readonly></el-input>
        </el-form-item>
      </el-col> -->
    </el-row>
    <div class="form-footer">
      <template v-if="!pReadOnly">
        <three-btn @click="getParams()">读取</three-btn>
        <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
      </template>
      <three-btn v-else @click="$emit('close')">关闭</three-btn>
    </div>
    <el-dialog
      title="人脸校验"
      width="480px"
      :visible.sync="setFaceShow"
      :close-on-click-modal="false"
      top="0"
      :modal="false"
      class="dialog-center"
      :modal-append-to-body="false"
      :destroy-on-close="true"
    >
      <check-face
        v-if="setFaceShow"
        @checkSuccess="setFaceSuccess"
      ></check-face>
    </el-dialog>
    <el-dialog
      title="人脸校验"
      width="480px"
      :visible.sync="startFaceShow"
      :close-on-click-modal="false"
      top="0"
      :modal="false"
      class="dialog-center"
      :modal-append-to-body="false"
      :destroy-on-close="true"
    >
      <check-face
        v-if="startFaceShow"
        @checkSuccess="startFaceSuccess"
      ></check-face>
    </el-dialog>
  </el-form>
</template>
<script>
import const_61590 from "@/assets/js/const/const_61590";
import { testVal } from "@/assets/js/tools";
import CheckFace from "@/components/checkFace";
import config from "@/assets/js/config";
import { setDev6159DCParam, getDev6159DCParam } from "../js/realTime";
import { checkUserPwd } from "@/views/login/js/api";
export default {
  components: { CheckFace },
  props: {
    devId: {
      type: [String, Number],
      required: true,
    },
    // 只读模式 显示参数用
    pReadOnly: {
      type: Boolean,
      default: false,
    },
    isRequest: {
      type: Number,
      default: 0,
    },
    paramData: {
      type: Object,
      default() {
        return {};
      },
    },
  },
  data() {
    let rules = const_61590.dcParamsRules;
    function getRule(prop) {
      return [
        {
          validator(rule, value, callback) {
            testVal(rule, value, callback, rules[prop]);
          },
          trigger: "change",
        },
      ];
    }
    let rulesObj = {};
    [
      "sysCurrLimit",
      "loadOvercurr",
      "battOvercurr",
      "overvolCoe",
      "undervolCoe",
      "lvd1BreakPoint",
      "lvd1RecoveryPoint",
      "lvd2BreakPoint",
      "lvd2RecoveryPoint",
      "battHightempCoe",
      "battLowtempCoe",
      "envirHightempCoe",
      "envirLowtempCoe",
      "envirHighhumidCoe",
      "envirLowhumidCoe",
      "floatChargeVol",
      "junChargeVol",
      "sysMinVol",
      "tempCompensateCoe",
      "junChargeCycleInterval",
      "junChargeCycleTime",
      "fastChargeVolCoe",
      "fastChargeTimeLimit",
      "battCapSet",
      "jun2floatChargeCoe",
      "float2junChargeCoe",
      "battChargecurrLimit",
      "battTestStartvol",
      "battTestEndvol",
      "battTestTime",
      "junChargeManualTime",
    ].forEach((v) => {
      rulesObj[v] = getRule(v);
    });
    return {
      layout: {
        gutter: 16,
        span: 4,
      },
      reason: "",
      setFaceShow: false,
      startFaceShow: false,
      setTestFlag: false, // 设置参数的状态
      readOnly: false,
      params: {
        sysCurrLimit: 0,
        loadOvercurr: 0,
        battOvercurr: 0,
        overvolCoe: 0,
        undervolCoe: 0,
        lvd1BreakPoint: 0,
        lvd1RecoveryPoint: 0,
        lvd2BreakPoint: 0,
        lvd2RecoveryPoint: 0,
        battHightempCoe: 0,
        battLowtempCoe: 0,
        envirHightempCoe: 0,
        envirLowtempCoe: 0,
        envirHighhumidCoe: 0,
        envirLowhumidCoe: 0,
        floatChargeVol: 0,
        junChargeVol: 0,
        sysMinVol: 0,
        tempCompensateCoe: 0,
        junChargeCycleInterval: 0,
        junChargeCycleTime: 0,
        fastChargeVolCoe: 0,
        fastChargeTimeLimit: 0,
        battCapSet: 0,
        jun2floatChargeCoe: 0,
        float2junChargeCoe: 0,
        battChargecurrLimit: 0,
        battTestStartvol: 0,
        battTestEndvol: 0,
        battTestTime: 0,
        junChargeManualTime: 0,
        lvd1StartFun: 0,
        lvd2StartFun: 0,
        tempCompensateFun: 0,
        junChargeCycleFun: 0,
        fastChargeStart: 0,
        battTestFun: 0,
        junChargeManual: 0,
        devId: this.devId,
      },
      rules: rulesObj,
    };
  },
  watch: {
  },
  methods: {
    initParams() {
      // 初始化参数
      this.params = {
        sysCurrLimit: 0,
        loadOvercurr: 0,
        battOvercurr: 0,
        overvolCoe: 0,
        undervolCoe: 0,
        lvd1BreakPoint: 0,
        lvd1RecoveryPoint: 0,
        lvd2BreakPoint: 0,
        lvd2RecoveryPoint: 0,
        battHightempCoe: 0,
        battLowtempCoe: 0,
        envirHightempCoe: 0,
        envirLowtempCoe: 0,
        envirHighhumidCoe: 0,
        envirLowhumidCoe: 0,
        floatChargeVol: 0,
        junChargeVol: 0,
        sysMinVol: 0,
        tempCompensateCoe: 0,
        junChargeCycleInterval: 0,
        junChargeCycleTime: 0,
        fastChargeVolCoe: 0,
        fastChargeTimeLimit: 0,
        battCapSet: 0,
        jun2floatChargeCoe: 0,
        float2junChargeCoe: 0,
        battChargecurrLimit: 0,
        battTestStartvol: 0,
        battTestEndvol: 0,
        battTestTime: 0,
        junChargeManualTime: 0,
        lvd1StartFun: 0,
        lvd2StartFun: 0,
        tempCompensateFun: 0,
        junChargeCycleFun: 0,
        fastChargeStart: 0,
        battTestFun: 0,
        junChargeManual: 0,
        devId: this.devId,
      };
    },
       // 获取参数
       getParams() {
      // 定义等待框
      let loading = this.$layer.loading(1);
      // 启动按钮不可点击
      this.startTestFlag = false;
      // 查询后台
      getDev6159DCParam(this.devId)
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            let fsparam = res.data2;
            // 遍历参数属性并赋值
            for (let key in this.params) {
              this.params[key] = fsparam[key];
            }
            if (res.data2) {
              this.$layer.msg("读取成功!");
              // 设置按钮可点击
              this.setTestFlag = true;
            }
          } else {
            // 初始化参数
            this.initParams();
            // 设置按钮不可点击
            this.setTestFlag = false;
            this.$layer.msg("读取失败!");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((error) => {
          console.log(error);
          // 初始化参数
          this.initParams();
          // 设置按钮不可点击
          this.setTestFlag = false;
          // 关闭等待框
          this.$layer.close(loading);
          this.$layer.msg("读取失败,读取请求异常!");
        });
    },
    // 提交表单设置参数
    submitFrom() {
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          // 设置参数
          this.setParamsCheck();
        } else {
          this.$layer.msg("存在校验未通过的数据!");
          return false;
        }
      });
    },
    setParamsCheck() {
      if (config.setParamsByFace.value) {
        this.setFaceShow = true;
      } else {
        this.setParams(true);
      }
    },
    // 设置参数
    setParams() {
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      setDev6159DCParam(this.params)
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            // 启动按钮可点击
            this.startTestFlag = true;
            // 提示信息
            this.$layer.msg("设置成功");
          } else {
            // 启动按钮不可点击
            this.startTestFlag = false;
            // 提示信息
            this.$layer.msg("设置失败!");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((error) => {
          console.log(error);
          // 关闭等待框
          this.$layer.close(loading);
          // 启动按钮不可点击
          this.startTestFlag = false;
          // 提示信息
          this.$layer.msg("设置失败,设置请求异常!");
        });
    },
    setFaceSuccess() {
      this.setFaceShow = false;
      this.setParams();
    },
  },
  computed: {
  },
  mounted() {
    // 获取数据
    if (this.pReadOnly) {
      this.initParams();
      this.params = {
        ...this.params,
        ...this.paramData,
      };
    } else {
      this.getParams();
    }
  },
};
</script>
<style scoped>
.params-dialog {
  background: #f0f0f0;
  padding: 20px 20px 1px;
  width: 1200px;
}
.form-footer {
  margin-top: 16px;
  margin-bottom: 16px;
  text-align: right;
}
.form-footer .three-btn {
  margin-left: 12px;
}
</style>
src/views/dataTest/components/moduleParams.vue
New file
@@ -0,0 +1,345 @@
<template>
  <el-form
    ref="ruleForm"
    size="mini"
    label-position="top"
    :model="params"
    :rules="rules"
    class="params-dialog"
  >
    <el-row :gutter="layout.gutter">
      <el-col :span="layout.span">
        <el-form-item label="整流模块限流点(A)" prop="rectifyCurrLimit">
          <el-input v-model="params.rectifyCurrLimit"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="整流模块过压点(V)" prop="rectifyOvervol">
          <el-input v-model="params.rectifyOvervol"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="节能功能启动" prop="energyFunct">
          <el-select
            v-model="params.energyFunct"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="模块休眠系数(%)" prop="dormantRatio">
          <el-input v-model="params.dormantRatio"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="模块唤醒系数(%)" prop="awakenRatio">
          <el-input v-model="params.awakenRatio"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="轮换周期(时)" prop="rotationCycle">
          <el-input v-model="params.rotationCycle"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="模块基数设置" prop="modelBase">
          <el-input v-model="params.modelBase"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="节能测试功能启动" prop="energyTest">
          <el-select
            v-model="params.energyTest"
            :disabled="pReadOnly"
            placeholder="请选择"
          >
            <el-option label="关闭" :value="0"></el-option>
            <el-option label="启动" :value="1"></el-option>
          </el-select>
        </el-form-item>
      </el-col>
      <el-col :span="layout.span">
        <el-form-item label="整流模块额定数量" prop="modelRatedCnt">
          <el-input v-model="params.modelRatedCnt"></el-input>
        </el-form-item>
      </el-col>
    </el-row>
    <div class="form-footer">
      <template v-if="!pReadOnly">
        <three-btn @click="getParams()">读取</three-btn>
        <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
      </template>
      <three-btn v-else @click="$emit('close')">关闭</three-btn>
    </div>
    <el-dialog
      title="人脸校验"
      width="480px"
      :visible.sync="setFaceShow"
      :close-on-click-modal="false"
      top="0"
      :modal="false"
      class="dialog-center"
      :modal-append-to-body="false"
      :destroy-on-close="true"
    >
      <check-face
        v-if="setFaceShow"
        @checkSuccess="setFaceSuccess"
      ></check-face>
    </el-dialog>
    <el-dialog
      title="人脸校验"
      width="480px"
      :visible.sync="startFaceShow"
      :close-on-click-modal="false"
      top="0"
      :modal="false"
      class="dialog-center"
      :modal-append-to-body="false"
      :destroy-on-close="true"
    >
      <check-face
        v-if="startFaceShow"
        @checkSuccess="startFaceSuccess"
      ></check-face>
    </el-dialog>
  </el-form>
</template>
<script>
import const_61590 from "@/assets/js/const/const_61590";
import { testVal } from "@/assets/js/tools";
import CheckFace from "@/components/checkFace";
import config from "@/assets/js/config";
import { setDev6159RectifierParam, getDev6159RectifierParam } from "../js/realTime";
import { checkUserPwd } from "@/views/login/js/api";
export default {
  components: { CheckFace },
  props: {
    devId: {
      type: [String, Number],
      required: true,
    },
    // 只读模式 显示参数用
    pReadOnly: {
      type: Boolean,
      default: false,
    },
    isRequest: {
      type: Number,
      default: 0,
    },
    paramData: {
      type: Object,
      default() {
        return {};
      },
    },
  },
  data() {
    let rules = const_61590.moduleParamsRules;
    function getRule(prop) {
      return [
        {
          validator(rule, value, callback) {
            testVal(rule, value, callback, rules[prop]);
          },
          trigger: "change",
        },
      ];
    }
    let rulesObj = {};
    [
      "rectifyCurrLimit",
      "rectifyOvervol",
      "dormantRatio",
      "awakenRatio",
      "rotationCycle",
      "modelBase",
      "modelRatedCnt",
    ].forEach((v) => {
      rulesObj[v] = getRule(v);
    });
    return {
      layout: {
        gutter: 16,
        span: 12,
      },
      reason: "",
      setFaceShow: false,
      startFaceShow: false,
      setTestFlag: false, // 设置参数的状态
      readOnly: false,
      params: {
        rectifyCurrLimit: 0,
        rectifyOvervol: 0,
        dormantRatio: 0,
        awakenRatio: 0,
        rotationCycle: 0,
        modelBase: 0,
        modelRatedCnt: 0,
        energyFunct: 0,
        energyTest: 0,
        devId: this.devId,
      },
      rules: rulesObj,
    };
  },
  watch: {
  },
  methods: {
    initParams() {
      // 初始化参数
      this.params = {
        rectifyCurrLimit: 0,
        rectifyOvervol: 0,
        dormantRatio: 0,
        awakenRatio: 0,
        rotationCycle: 0,
        modelBase: 0,
        modelRatedCnt: 0,
        energyFunct: 0,
        energyTest: 0,
        devId: this.devId,
      };
    },
    // 获取参数
    getParams() {
      // 定义等待框
      let loading = this.$layer.loading(1);
      // 启动按钮不可点击
      this.startTestFlag = false;
      // 查询后台
      getDev6159RectifierParam(this.devId)
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            let fsparam = res.data2;
            // 遍历参数属性并赋值
            for (let key in this.params) {
              this.params[key] = fsparam[key];
            }
            if (res.data2) {
              this.$layer.msg("读取成功!");
              // 设置按钮可点击
              this.setTestFlag = true;
            }
          } else {
            // 初始化参数
            this.initParams();
            // 设置按钮不可点击
            this.setTestFlag = false;
            this.$layer.msg("读取失败!");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((error) => {
          console.log(error);
          // 初始化参数
          this.initParams();
          // 设置按钮不可点击
          this.setTestFlag = false;
          // 关闭等待框
          this.$layer.close(loading);
          this.$layer.msg("读取失败,读取请求异常!");
        });
    },
    // 提交表单设置参数
    submitFrom() {
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          // 设置参数
          this.setParamsCheck();
        } else {
          this.$layer.msg("存在校验未通过的数据!");
          return false;
        }
      });
    },
    setParamsCheck() {
      if (config.setParamsByFace.value) {
        this.setFaceShow = true;
      } else {
        this.setParams(true);
      }
    },
    // 设置参数
    setParams() {
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      setDev6159RectifierParam(this.params)
        .then((res) => {
          res = res.data;
          if (res.code && res.data) {
            // 启动按钮可点击
            this.startTestFlag = true;
            // 提示信息
            this.$layer.msg("设置成功");
          } else {
            // 启动按钮不可点击
            this.startTestFlag = false;
            // 提示信息
            this.$layer.msg("设置失败!");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((error) => {
          console.log(error);
          // 关闭等待框
          this.$layer.close(loading);
          // 启动按钮不可点击
          this.startTestFlag = false;
          // 提示信息
          this.$layer.msg("设置失败,设置请求异常!");
        });
    },
    setFaceSuccess() {
      this.setFaceShow = false;
      this.setParams();
    },
  },
  computed: {},
  mounted() {
    // 获取数据
    if (this.pReadOnly) {
      this.initParams();
      this.params = {
        ...this.params,
        ...this.paramData,
      };
    } else {
      this.getParams();
    }
  },
};
</script>
<style scoped>
.params-dialog {
  background: #f0f0f0;
  padding: 20px 20px 1px;
  width: 600px;
}
.form-footer {
  margin-top: 16px;
  margin-bottom: 16px;
  text-align: right;
}
.form-footer .three-btn {
  margin-left: 12px;
}
</style>
src/views/dataTest/components/switchControl.vue
@@ -1,123 +1,72 @@
<template>
  <div class="main">
    <div class="switch-info">
      <div class="name">DK-11</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK11"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-12</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK12"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-13</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK13"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-14</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK14"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-15</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK15"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-16</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK16"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-17</div>
      <div class="state">
        <el-switch
          style="display: block"
          v-model="DK17"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
      <div class="name">DK-18</div>
      <div class="state">
        <el-switch
          v-model="DK18"
          active-color="#13ce66"
          inactive-color="#ccc"
          active-text="合闸"
          inactive-text="分闸"
        >
        </el-switch>
      </div>
    </div>
    <div class="footer">
      <three-btn @click="getParams()">读取</three-btn>
      <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
      <three-btn  @click="$emit('close')"
          >取消</three-btn
        >
    <div class="tbl-data-body">
      <el-table stripe size="small" :data="switchInfo">
        <el-table-column
          v-for="header in table.headers"
          :key="header.prop"
          :prop="header.prop"
          :label="header.label"
          align="center"
        ></el-table-column>
        <el-table-column label="操作" width="100">
          <template slot-scope="scope">
            <el-button
              v-if="!scope.row.state1"
              type="primary"
              size="mini"
              :disabled="scope.row.control1"
              @click="switchControl(scope.row, 1)"
              >合闸</el-button
            >
            <el-button
              v-else
              type="danger"
              :disabled="scope.row.control1"
              size="mini"
              @click="switchControl(scope.row, 0)"
              >分闸</el-button
            >
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>
<script>
import { setDev6159Swtich } from "../js/realTime";
export default {
  name: "",
  props: {
    devId: {
      type: [String, Number],
      required: true
      required: true,
    },
    switchInfo: {
      type: Array,
      required: true,
    },
  },
  data() {
    return {
      table: {
        headers: [
          {
            prop: "name",
            label: "开关名称",
          },
          {
            prop: "control",
            label: "控制方式",
          },
          {
            prop: "state",
            label: "状态",
          },
        ],
      },
      setTestFlag: false,
      DK11: false,
      DK12: false,
@@ -131,13 +80,27 @@
  },
  components: {},
  methods: {
    getParams(){
    getParams() {},
    switchControl(obj, state) {
      let loading = this.$layer.loading(1);
      setDev6159Swtich(this.devId, obj.ctrlName, !obj.state1 * 1)
        .then((res) => {
          let { code, data } = res.data;
          if (code && data) {
            // console.log(data);
            this.$layer.msg("操作成功");
          } else {
            this.$layer.msg("操作失败");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((err) => {
          console.log(err);
          // 关闭等待框
          this.$layer.close(loading);
        });
    },
    submitFrom() {
    },
  },
  mounted() {},
@@ -160,7 +123,7 @@
      font-weight: bold;
      color: #f7b33c;
      &::after {
        content: ':';
        content: ":";
      }
    }
    .state {
src/views/dataTest/js/realTime.js
@@ -249,16 +249,16 @@
 * @param battGroupNum
 * @return {AxiosPromise}
 */
export const startResTest = (devId, battGroupNum)=>{
export const startResTest = (devId, battGroupNum) => {
  return axios({
    method: "GET",
    url: "Fbs9100_setparamAction/serchbyDev_id_res",
    params: {
      devId,
      battGroupNum
      battGroupNum,
    },
  });
}
};
/**
 * 读取FBO_4830放电参数
 *  {
@@ -1007,29 +1007,29 @@
 * @param opCmd 读取命令
 * @return {AxiosPromise}
 */
export const get9612Params = (devId, opCmd)=>{
export const get9612Params = (devId, opCmd) => {
  return axios({
    method: "GET",
    url: "Fbs9100_setparamAction/searchFBS9612Param",
    params: {
      devId,
      opCmd
    }
      opCmd,
    },
  });
}
};
/**
 * 设置放电参数
 * @param data 放电参数
 * @return {AxiosPromise}
 */
export const set9612Params = (data)=>{
export const set9612Params = (data) => {
  return axios({
    method: "POST",
    url: "Fbs9100_setparamAction/updateFBS9612Param",
    data
    data,
  });
}
};
/**
 * 9162设备启停控制<br/>
@@ -1041,17 +1041,17 @@
 * @param testType 测试类型
 * @return {AxiosPromise}
 */
export const dev9612Control = (devId, opCmd, testType)=>{
export const dev9612Control = (devId, opCmd, testType) => {
  return axios({
    method: "GET",
    url: "Fbs9100_setparamAction/controllerFBS9612",
    params: {
      devId,
      opCmd,
      testType
    }
      testType,
    },
  });
}
};
/**
 * 更新设备的时间
@@ -1059,13 +1059,132 @@
 * @param syncTime  更新时间
 * @return {AxiosPromise}
 */
export const updateDevTimeApi = (devId, syncTime)=>{
export const updateDevTimeApi = (devId, syncTime) => {
  return axios({
    method: "GET",
    url: "Fbs9100_setparamAction/update61850SyncTime",
    params: {
      devId,
      syncTime
    }
      syncTime,
    },
  });
}
};
/**
 * 6159开关控制
 * @param devId  swtichName swtichState
 * @return {AxiosPromise}
 */
export const setDev6159Swtich = (devId, swtichName, swtichState) => {
  return axios({
    method: "GET",
    url: "dev6159Param/setDev6159Swtich",
    params: {
      devId,
      swtichName,
      swtichState,
    },
  });
};
/**
 * 整流模块控制
 * @param devId  ctlNum ctlState
 * @return {AxiosPromise}
 */
export const setDev6159RectifModel = (devId, ctlNum, ctlState) => {
  return axios({
    method: "GET",
    url: "dev6159Param/setDev6159RectifModel",
    params: {
      devId,
      ctlNum,
      ctlState,
    },
  });
};
/**
 * 读取6159交流配电参数
 * @param devId
 * @return {AxiosPromise}
 */
export const getDev6159ACParam = (devId) => {
  return axios({
    method: "GET",
    url: "dev6159Param/getDev6159ACParam",
    params: {
      devId
    },
  });
};
/**
 * 设置6159交流配电参数
 * @param {}
 * @return {AxiosPromise}
 */
export const setDev6159ACParam = (data) => {
  return axios({
    method: "POST",
    url: "dev6159Param/setDev6159ACParam",
    data
  });
};
/**
 * 读取6159直流配电参数
 * @param devId
 * @return {AxiosPromise}
 */
export const getDev6159DCParam = (devId) => {
  return axios({
    method: "GET",
    url: "dev6159Param/getDev6159DCParam",
    params: {
      devId
    },
  });
};
/**
 * 设置6159交流配电参数
 * @param {}
 * @return {AxiosPromise}
 */
export const setDev6159DCParam = (data) => {
  return axios({
    method: "POST",
    url: "dev6159Param/setDev6159DCParam",
    data
  });
};
/**
 * 读取6159整流模块参数
 * @param devId
 * @return {AxiosPromise}
 */
export const getDev6159RectifierParam = (devId) => {
  return axios({
    method: "GET",
    url: "dev6159Param/getDev6159RectifierParam",
    params: {
      devId
    },
  });
};
/**
 * 设置6159整流模块参数
 * @param {}
 * @return {AxiosPromise}
 */
export const setDev6159RectifierParam = (data) => {
  return axios({
    method: "POST",
    url: "dev6159Param/setDev6159RectifierParam",
    data
  });
};
src/views/dataTest/realTimeDyhr.vue
@@ -118,14 +118,14 @@
                  :disabled="true"
                ></el-input>
              </div>
              <div class="table-cell text-right w80">告警:</div>
              <!-- <div class="table-cell text-right w80">告警:</div>
              <div class="table-cell">
                <el-input
                  :value="alarmCount"
                  size="small"
                  :disabled="true"
                ></el-input>
              </div>
              </div> -->
            </div>
          </div>
        </div>
@@ -179,7 +179,7 @@
              name="eleLine"
              v-if="pageConfig.eleLine"
            >
              <svg-dyhr></svg-dyhr>
              <svg-dyhr v-if="rtInfo" :info="rtInfo"></svg-dyhr>
            </el-tab-pane>
            <el-tab-pane
              class="tab-power"
@@ -191,21 +191,28 @@
              <div class="ac-info">
                <card>
                  <big-screen-card title="交流配电">
                    <template #tools>
                      <div class="btn-grp">
                        <div class="btn" @click="acParamsVisible = true">
                          设置参数
                        </div>
                      </div>
                    </template>
                    <div class="g-content">
                      <div class="label">A相电压(V)</div>
                      <div class="value">205</div>
                      <div class="value">{{ rtInfo?.ycdata.acVolaCpss }}</div>
                      <div class="label">A相电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.acOutcurraCpss }}</div>
                      <div class="label">B相电压(V)</div>
                      <div class="value">205</div>
                      <div class="value">{{ rtInfo?.ycdata.acVolbCpss }}</div>
                      <div class="label">B相电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.acOutcurrbCpss }}</div>
                      <div class="label">C相电压(V)</div>
                      <div class="value">205</div>
                      <div class="value">{{ rtInfo?.ycdata.acVolcCpss }}</div>
                      <div class="label">C相电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.acOutcurrcCpss }}</div>
                      <div class="label">交流频率(Hz)</div>
                      <div class="value">50.00</div>
                      <div class="value">{{ rtInfo?.ycdata.acFreqAc }}</div>
                    </div>
                  </big-screen-card>
                </card>
@@ -214,41 +221,58 @@
              <div class="dc-info">
                <card>
                  <big-screen-card title="直流配电">
                    <template #tools>
                      <div class="btn-grp">
                        <div class="btn" @click="dcParamsVisible = true">
                          设置参数
                        </div>
                      </div>
                    </template>
                    <div class="g-content">
                      <div class="label">母排电压(V)</div>
                      <div class="value">50</div>
                      <div class="value">{{ rtInfo?.ycdata.dcout1VolDc }}</div>
                      <div class="label">直流输入电压(V)</div>
                      <div class="value">50</div>
                      <div class="value">{{ rtInfo?.ycdata.dcin1VolDc }}</div>
                      <div class="label">电池电流1(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.batt1Curr }}</div>
                      <div class="label">电池电流2(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.batt2Curr }}</div>
                      <div class="label">模块总电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">
                        {{ rtInfo?.ycdata.modelTotalCurr }}
                      </div>
                      <div class="label">负载总电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.loadCurrCpss }}</div>
                      <div class="label">电池温度(℃)</div>
                      <div class="value">25</div>
                      <div class="value">{{ rtInfo?.ycdata.battTemp }}</div>
                      <div class="label">环境温度(℃)</div>
                      <div class="value">25</div>
                      <div class="value">{{ rtInfo?.ycdata.envirTemp }}</div>
                      <div class="label">扩展温度(℃)</div>
                      <div class="value">25</div>
                      <div class="value">{{ rtInfo?.ycdata.extendTemp }}</div>
                      <div class="label">环境湿度(%)</div>
                      <div class="value">2.5</div>
                      <div class="value">{{ rtInfo?.ycdata.envirHumid }}</div>
                      <div class="label">电池状态</div>
                      <div class="value">浮充</div>
                      <div class="value">
                        {{
                          ["均充", "浮充", "快充", "测试", "放电"][
                            rtInfo?.yxdata.battState
                          ]
                        }}
                      </div>
                      <div class="label">电池容量(%)</div>
                      <div class="value">100</div>
                      <div class="value">{{ rtInfo?.ycdata.battCap }}</div>
                      <div class="label">负载1电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.load1Curr }}</div>
                      <div class="label">负载2电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.load2Curr }}</div>
                      <div class="label">负载3电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.load3Curr }}</div>
                      <div class="label">负载4电流(A)</div>
                      <div class="value">1.98</div>
                      <div class="value">{{ rtInfo?.ycdata.load4Curr }}</div>
                      <div class="label">负载一次下电</div>
                      <div class="value">--</div>
                      <div class="value">
                        {{ rtInfo?.other.loadPowerdownSt }}
                      </div>
                    </div>
                  </big-screen-card>
                </card>
@@ -257,27 +281,42 @@
              <div class="module-info">
                <card>
                  <big-screen-card title="整流模块">
                    <template #tools>
                      <div class="btn-grp">
                        <div class="btn" @click="moduleParamsVisible = true">
                          设置参数
                        </div>
                      </div>
                    </template>
                    <div class="g-content">
                      <div class="label">模块在线数</div>
                      <div class="value">10</div>
                      <div class="label">模块限流点(A)</div>
                      <div class="value">51.98</div>
                      <div class="value">
                        {{ rtInfo?.ycdata.modelOnlineCnt }}
                      </div>
                      <!-- <div class="label">模块限流点(A)</div>
                      <div class="value">
                        {{ rtInfo?.ycdata.modelLimitcurr }}
                      </div>
                      <div class="label">模块过压点(V)</div>
                      <div class="value">58.00</div>
                      <div class="value">{{ rtInfo?.ycdata.modelOvervol }}</div>
                      <div class="label">节能功能</div>
                      <div class="value">关闭</div>
                      <div class="value">{{ rtInfo?.ycdata.energyFunct }}</div>
                      <div class="label">休眠系数(%)</div>
                      <div class="value">30.0</div>
                      <div class="value">{{ rtInfo?.ycdata.dormantRatio }}</div>
                      <div class="label">唤醒系数(%)</div>
                      <div class="value">800.0</div>
                      <div class="label">输换周期(H)</div>
                      <div class="value">24</div>
                      <div class="value">{{ rtInfo?.ycdata.awakenRatio }}</div>
                      <div class="label">轮换周期(H)</div>
                      <div class="value">
                        {{ rtInfo?.ycdata.rotationCycle }}
                      </div>
                      <div class="label">模块基数</div>
                      <div class="value">0</div>
                      <div class="value">{{ rtInfo?.ycdata.modelBase }}</div>
                      <div class="label">节能测试</div>
                      <div class="value">关闭</div>
                      <div class="value">{{ rtInfo?.ycdata.energyTest }}</div>
                      <div class="label">模块额定数量</div>
                      <div class="value">0</div>
                      <div class="value">
                        {{ rtInfo?.ycdata.modelRatedCnt }}
                      </div> -->
                    </div>
                    <div class="table-module">
                      <div class="tbl-data-body">
@@ -285,6 +324,7 @@
                          stripe
                          size="small"
                          :data="table_module.datas"
                          ref="table_module"
                          height="100%"
                        >
                          <el-table-column
@@ -295,6 +335,30 @@
                            align="center"
                          ></el-table-column>
                          <!-- :width="header.width" -->
                          <el-table-column
                            prop="operate"
                            fixed="right"
                            width="80px"
                            align="center"
                            label="控制"
                          >
                            <template slot-scope="scope">
                              <el-button
                                v-if="!scope.row.moduleState1"
                                type="primary"
                                size="mini"
                                @click="moduleControl(scope.row, 1)"
                                >开机</el-button
                              >
                              <el-button
                                v-else
                                type="danger"
                                size="mini"
                                @click="moduleControl(scope.row, 0)"
                                >关机</el-button
                              >
                            </template>
                          </el-table-column>
                        </el-table>
                      </div>
                    </div>
@@ -431,12 +495,13 @@
      class="dialog-center"
      :modal-append-to-body="false"
    >
      <discharge-dialog-content
    <discharge-params-dyhr v-if="dischargeDialog.show" :groupIdx="currIdx" :batt="currBatt" @close="closeDisChargeDialog"></discharge-params-dyhr>
      <!-- <discharge-dialog-content
        v-if="dischargeDialog.show"
        :batt="currBatt"
        @close="closeDisChargeDialog"
      >
      </discharge-dialog-content>
      </discharge-dialog-content> -->
    </el-dialog>
    <el-dialog
      title="选择要操作的电池组"
@@ -468,9 +533,46 @@
    >
      <switch-control
        :devId="devId"
        :switchInfo="switchInfo"
        @close="switchControlVisible = false"
        v-if="switchControlVisible"
      ></switch-control>
    </el-dialog>
    <!-- 交流配电参数 -->
    <el-dialog
      title="交流配电参数"
      :visible.sync="acParamsVisible"
      width="auto"
      top="0"
      class="dialog-center"
      :close-on-click-modal="false"
      :modal-append-to-body="false"
    >
      <ac-params :devId="devId" v-if="acParamsVisible"></ac-params>
    </el-dialog>
    <!-- 直流配电参数 -->
    <el-dialog
      title="直流配电参数"
      :visible.sync="dcParamsVisible"
      width="auto"
      top="0"
      class="dialog-center"
      :close-on-click-modal="false"
      :modal-append-to-body="false"
    >
      <dc-params  :devId="devId" v-if="dcParamsVisible"></dc-params>
    </el-dialog>
    <!-- 整流模块参数 -->
    <el-dialog
      title="整流模块参数"
      :visible.sync="moduleParamsVisible"
      width="auto"
      top="0"
      class="dialog-center"
      :close-on-click-modal="false"
      :modal-append-to-body="false"
    >
      <module-params  :devId="devId" v-if="moduleParamsVisible"></module-params>
    </el-dialog>
    <!-- 系统参数设置 -->
    <el-dialog
@@ -617,7 +719,8 @@
import stopOutlineCuring from "./components/stopOutlineCuring";
// import HomeList from "./components/HomeList";
import HomeList from "./movingRingSystem/HomeList";
import DischargeDialogContent from "./components/DischargeDialogContent";
// import DischargeDialogContent from "./components/DischargeDialogContent";
import DischargeParamsDyhr from "./components/DischargeParamsDyhr";
import SystemParams from "./components/SystemParams";
import CuringParams from "./components/CuringParams";
import OutlineCuringParams from "./components/OutlineCuringParams";
@@ -655,6 +758,7 @@
  startResTest,
  stopLd6,
  updateDevTimeApi,
  setDev6159RectifModel,
} from "./js/realTime";
import { getBattList } from "@/assets/js/api";
import {
@@ -698,7 +802,7 @@
import BattGroupAlarm9612 from "@/views/dataTest/components/battGroupAlarm9612.vue";
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 const_61590 from "@/assets/js/const/const_61590";
import RegularTestResParams from "@/views/dataTest/components/RegularTestResParams.vue";
import CheckFace from "@/components/checkFace.vue";
import const_61852 from "@/assets/js/const/const_61852";
@@ -706,6 +810,10 @@
import BigScreenCard from "@/components/bigScreenPage/big_screen_card.vue";
import card from "@/views/home/components/card-corner";
import switchControl from "./components/switchControl.vue";
import acParams from "./components/acParams.vue";
import dcParams from "./components/dcParams.vue";
import moduleParams from "./components/moduleParams.vue";
import getBinaryDigits from "@/assets/js/tools/getBinaryDigits";
const WSMixin = createWs("RealTime");
@@ -744,7 +852,7 @@
    BarChart,
    CircuitDiagram,
    ScienceBox,
    DischargeDialogContent,
    DischargeParamsDyhr,
    SystemParams,
    CuringParams,
    OutlineCuringParams,
@@ -765,6 +873,9 @@
    BigScreenCard,
    card,
    switchControl,
    acParams,
    dcParams,
    moduleParams,
  },
  watch: {
    "$route.params.BattGroupId"(battGroupId) {
@@ -794,166 +905,56 @@
    );
    let pageConfig = this.$store.getters["user/realTabsConfig"];
    return {
      currIdx: 1,
      switchInfo: [],
      rtInfo: null,
      acParamsVisible: false,
      dcParamsVisible: false,
      moduleParamsVisible: false,
      viewGroupIdx: 0,
      chooseBattGroupVisible: false,
      switchControlVisible: false,
      // 柱状图显示的电池组号
      chartGroupIdx: 0,
      table_module: {
        datas: [
          {
            a: "模块1",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块2",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块3",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块4",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块5",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块6",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块7",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块8",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块9",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
          {
            a: "模块10",
            b: "离线",
            c: 53.58,
            a0: 5.44,
            a1: 1900,
            a2: 0,
            a3: 0,
            a4: "--",
            a5: "开机",
          },
        ],
        datas: [],
        headers: [
          {
            prop: "a",
            prop: "moduleName",
            label: "模块名称",
          },
          {
            prop: "b",
            prop: "moduleOnline",
            label: "在线状态",
            width: 100,
          },
          {
            prop: "c",
            prop: "moduleVol",
            label: "输出电压(V)",
            width: 100,
          },
          {
            prop: "a0",
            prop: "moduleCurr",
            label: "输出电流(A)",
            width: 100,
          },
          {
            prop: "a1",
            prop: "fan1",
            label: "风扇1转速",
            width: 100,
          },
          {
            prop: "a2",
            prop: "fan2",
            label: "风扇2转速",
            width: 100,
          },
          {
            prop: "a3",
            prop: "temp",
            label: "模块温度(℃)",
            width: 100,
          },
          {
            prop: "a4",
            label: "整流器告警",
            width: 100,
          },
          {
            prop: "a5",
            prop: "moduleState",
            label: "开关机状态",
            width: 100,
          },
@@ -1280,6 +1281,11 @@
      // 根据tab更新电路图
      if (this.acTabs === "eleLine") {
        this.diagram.update = true;
      } else if ("power" == this.acTabs) {
        console.log("power", "=============");
        this.$nextTick(() => {
          this.$refs.table_module.doLayout();
        });
      } else {
        this.diagram.update = false;
      }
@@ -1512,6 +1518,7 @@
      this.updateGroup(rtstate);
      // 单体信息
      this.realTimeSearch(rtdata);
      this.formatRtInfo(data);
      // this.realTimeLd9Data(data.ld9);
@@ -1523,7 +1530,118 @@
      // this.getLastCapacityTest(data.tinfdata);
      this.dataChangeFlag = Math.random(); // 数据更新
    },
    // 给拓普图的数据 格式化
    formatRtInfo(obj) {
      let rtInfo = {};
      rtInfo["other"] = {};
      // 模块个数
      let len = 0;
      let module_states = [];
      const { binf, f9100state, rtdata, rtstate, ycdata, yxdata } = obj;
      const { workstates } = const_61590;
      if (f9100state.code && f9100state.data) {
        let _data2 = f9100state.data2;
      }
      let workState = ["浮充", "放电", "充电", 'K1/D1'];
      if (rtstate.code && rtstate.data) {
        let _data2 = rtstate.data2;
        rtInfo["other"].batt1State = workState[_data2[0].battAlmState] || "未知";
        rtInfo["other"].batt2State = workState[_data2[1].battAlmState] || "未知";
        rtInfo["rtstate"] = _data2;
      }
      if (ycdata.code && ycdata.data) {
        rtInfo["ycdata"] = ycdata.data2;
        // 模块个数
        len = ycdata.data2.modelOnlineCnt;
      }
      if (yxdata.code && yxdata.data) {
        let _data2 = yxdata.data2;
        rtInfo["yxdata"] = _data2;
        // ats 开关状态 两个点位 第一个点位为1表示ac2接入
        let acin = _data2.acin1TripCpss == 0 ? 0 : 1;
        rtInfo["other"].powerWorkState =
          ["均充", "浮充", "快充", "测试", "放电"][
            _data2.battChardisStateCpss
          ] || "未知";
        rtInfo["switchState"] = {
          acin,
          k1: !!_data2.k1State,
          k2: !!_data2.k2State,
          kc1: !!_data2.kc1State,
          kd1: !!_data2.kd1State,
          kd2: !!_data2.kd2State,
          kb: !!_data2.kbState,
          kc: !!_data2.kcState,
          kd: !!_data2.kdState,
        };
        // 合闸开关个数
        let switchOnCount = 0,
          switchOffCount = 0;
        let switchInfo = [];
        for (let i = 0; i < 8; i++) {
          let idx = i + 11;
          let flag = _data2[`k${idx}State`];
          if (flag) {
            switchOnCount++;
          } else {
            switchOffCount++;
          }
          switchInfo.push({
            name: `DK-${idx}`,
            control1: !_data2[`dk${idx}AllowCtl`],
            control: _data2[`dk${idx}AllowCtl`] ? "远程" : "手动",
            state: flag ? "合闸" : "分闸",
            state1: flag,
            ctrlName: `dk${idx}_ctl`,
          });
          this.switchInfo = switchInfo;
        }
        this.switchOnCount = switchOnCount;
        this.switchOffCount = switchOffCount;
        let arr = [];
        for (let i = 0; i < 4; i++) {
          let flag = this.getBit(_data2.loadPowerdownSt, i);
          if (flag) {
            arr.push(`负载${i + 1}一次正电`);
          }
        }
        rtInfo["other"].loadPowerdownSt = arr.join(",") || "--";
        this.powerState = _data2.powerState ? "故障" : "正常";
        // 模块开关机状态  modClose1Cpss modClose2Cpss
        let _low = getBinaryDigits(_data2.modClose1Cpss);
        let _hight = getBinaryDigits(_data2.modClose2Cpss, 7);
        module_states = [..._low, ..._hight];
      }
      let tableData = [];
      for (let i = 0; i < len; i++) {
        let idx = i + 1;
        tableData.push({
          moduleName: `模块${idx}`,
          idx,
          moduleOnline: rtInfo.ycdata[`m${idx}OnlineSt`] ? '离线' : '在线',
          moduleVol: rtInfo.ycdata[`m${idx}Outvol`],
          moduleCurr: rtInfo.ycdata[`m${idx}OutcurrCpss`],
          fan1: rtInfo.ycdata[`m${idx}Fan1Speed`],
          fan2: rtInfo.ycdata[`m${idx}Fan2Speed`],
          temp: rtInfo.ycdata[`m${idx}ModelTemp`],
          moduleState: module_states[i] ? "开机" : "关机",
          moduleState1: module_states[i],
        });
      }
      this.table_module.datas = tableData;
      this.rtInfo = rtInfo;
    },
    //
    getBit(num, bit) {
      return (num >> bit) & 1;
    },
    getStation(obj) {
      let { code, data, data2 } = obj;
      if (code && data) {
@@ -1540,11 +1658,11 @@
    updateGroup(obj) {
      const { code, data, data2 } = obj;
      // 电池组状态
      const workState = ["未知", "浮充", "充电", "放电", "均充", "内阻测试"];
      const workState = ["浮充", "放电", "充电", 'K1/D1'];
      // battState
      if (code && data) {
        this.battState0 = workState[data2[0].battState];
        this.battState1 = workState[data2[1].battState];
        this.battState0 = workState[data2[0].battAlmState];
        this.battState1 = workState[data2[1].battAlmState];
      }
    },
    // 查询控制按钮的内容
@@ -1589,6 +1707,7 @@
        this.getStationPic();
      });
    },
    setAcParams() {},
    getStationBattInfo(id) {
      getStationBattInfo(id).then((res) => {
        res = res.data;
@@ -1978,6 +2097,28 @@
        this.diagram.contactRes = contactRes;
        this.diagram.dropVol = dropVol;
      }
    },
    // 模块开关机
    moduleControl(obj, state) {
      // console.log("obj", obj, state, "state=============");
      let loading = this.$layer.loading(1);
      setDev6159RectifModel(this.devId, obj.idx, state)
        .then((res) => {
          let { code, data } = res.data;
          if (code && data) {
            // console.log(data);
            this.$layer.msg("操作成功");
          } else {
            this.$layer.msg("操作失败");
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((err) => {
          console.log(err);
          // 关闭等待框
          this.$layer.close(loading);
        });
    },
    // 61850设备信息
    setEquip61850(data) {
@@ -2663,6 +2804,7 @@
    },
    startTest(idx) {
      this.currBatt = this.battList[idx];
      this.currIdx = idx + 1;
      this.dischargeDialog.show = true;
    },
    confirmStartResTest() {
@@ -3124,6 +3266,20 @@
    }
  }
}
.btn-grp {
  display: flex;
  .btn {
    cursor: pointer;
    background: #0ff;
    font-size: 12px;
    color: #000;
    border-radius: 6px;
    padding: 4px 6px;
    & ~ .btn {
      margin-left: 0.8em;
    }
  }
}
.select-group {
  position: absolute;
  top: 6px;
@@ -3138,4 +3294,7 @@
  padding: 20px;
  text-align: center;
}
/deep/ .el-table__fixed-right.el-table__fixed-right {
  background: transparent;
}
</style>
src/views/home/components/svg/svgDyhr.vue
@@ -13,7 +13,7 @@
      fontSize="20"
      color="#4afd88"
      textAnchor="middle"
      text="工作状态"
      :text="info.other.powerWorkState"
    ></svg-text>
    <svg-line
      :points="[
@@ -49,34 +49,42 @@
          <div class="g-name">交流进线1</div>
          <div class="g-content">
            <div class="label">电源频率(Hz)</div>
            <div class="value">50.0</div>
            <div class="value">{{ info.ycdata.acPowerFreq1Ac }}</div>
            <div class="label">A相电压(V)</div>
            <div class="value">213</div>
            <div class="value">{{ info.ycdata.acin1VolaAc }}</div>
            <div class="label">B相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acin1VolbAc }}</div>
            <div class="label">C相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acin1VolcAc }}</div>
            <div class="label">防雷器</div>
            <div class="value">正常</div>
            <div class="value">
              {{ info.ycdata.acin1ThunderFaultAc ? "故障" : "正常" }}
            </div>
            <div class="label">防雷器空开</div>
            <div class="value">正常</div>
            <div class="value">
              {{ info.ycdata.acin1ThunderSwitchAc ? "故障" : "正常" }}
            </div>
          </div>
        </div>
        <div class="group">
          <div class="g-name">交流进线2</div>
          <div class="g-content">
            <div class="label">电源频率(Hz)</div>
            <div class="value">50.0</div>
            <div class="value">{{ info.ycdata.acPowerFreq2Ac }}</div>
            <div class="label">A相电压(V)</div>
            <div class="value">213</div>
            <div class="value">{{ info.ycdata.acin2VolaAc }}</div>
            <div class="label">B相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acin2VolbAc }}</div>
            <div class="label">C相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acin2VolcAc }}</div>
            <div class="label">防雷器</div>
            <div class="value">正常</div>
            <div class="value">
              {{ info.ycdata.acin2ThunderFaultAc ? "故障" : "正常" }}
            </div>
            <div class="label">防雷器空开</div>
            <div class="value">正常</div>
            <div class="value">
              {{ info.ycdata.acin2ThunderSwitchAc ? "故障" : "正常" }}
            </div>
          </div>
        </div>
      </div>
@@ -86,34 +94,34 @@
        <div class="group">
          <div class="g-content">
            <div class="label">充放电状态</div>
            <div class="value">浮充</div>
            <div class="value">{{ info.other.powerWorkState }}</div>
            <div class="label">母排电压(V)</div>
            <div class="value">53.82</div>
            <div class="value">{{ info.ycdata.dcout1VolDc }}</div>
            <div class="label">电池电流(A)</div>
            <div class="value">1.98</div>
            <div class="value">{{ info.ycdata.battChargecurrCpss }}</div>
            <div class="label">模块电流(A)</div>
            <div class="value">2.98</div>
            <div class="value">{{ info.ycdata.modelCurrCpss }}</div>
            <div class="label">负载电流(A)</div>
            <div class="value">1.98</div>
            <div class="value">{{ info.ycdata.loadCurrCpss }}</div>
            <div class="label">A相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acVolaCpss }}</div>
            <div class="label">A相电流(A)</div>
            <div class="value">1.98</div>
            <div class="value">{{ info.ycdata.acOutcurraCpss }}</div>
            <div class="label">B相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acVolbCpss }}</div>
            <div class="label">B相电流(A)</div>
            <div class="value">1.98</div>
            <div class="value">{{ info.ycdata.acOutcurrbCpss }}</div>
            <div class="label">C相电压(V)</div>
            <div class="value">205</div>
            <div class="value">{{ info.ycdata.acVolcCpss }}</div>
            <div class="label">C相电流(A)</div>
            <div class="value">1.98</div>
            <div class="value">{{ info.ycdata.acOutcurrcCpss }}</div>
          </div>
        </div>
      </div>
    </svg-panel>
    <svg-switch3
      :offset="[324, 160]"
      :state="switchState.acin"
      :state="info.switchState.acin"
      :color="lineColor"
    ></svg-switch3>
    <svg-text
@@ -166,16 +174,16 @@
    ></svg-line>
    <svg-info :offset="[1260, 110]">
      <div class="label">电流</div>
      <div class="value">2.9A</div>
      <div class="value">{{ info.ycdata.powerCurr1 }}A</div>
    </svg-info>
    <svg-info :offset="[1460, 110]">
      <div class="label">电流</div>
      <div class="value">49.0A</div>
      <div class="value">{{ info.ycdata.powerCurr2 }}A</div>
    </svg-info>
    <!-- kc -->
    <svg-switch
      :offset="[1695, 160]"
      :state="switchState.kc"
      :state="info.switchState.kc"
      :color="lineColor"
    ></svg-switch>
    <svg-panel
@@ -186,21 +194,37 @@
    >
      <div class="switch-info">
        <div class="name">DK-11</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k11State }]">
          {{ info.yxdata.k11State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-12</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k12State }]">
          {{ info.yxdata.k12State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-13</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k13State }]">
          {{ info.yxdata.k13State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-14</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k14State }]">
          {{ info.yxdata.k14State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-15</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k15State }]">
          {{ info.yxdata.k15State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-16</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k16State }]">
          {{ info.yxdata.k16State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-17</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k17State }]">
          {{ info.yxdata.k17State ? "合闸" : "分闸" }}
        </div>
        <div class="name">DK-18</div>
        <div class="state">分闸</div>
        <div :class="['state', { alarm: !info.yxdata.k18State }]">
          {{ info.yxdata.k18State ? "合闸" : "分闸" }}
        </div>
      </div>
    </svg-panel>
    <svg-text
@@ -230,7 +254,7 @@
    <!-- k1 -->
    <svg-switch
      :offset="[820, 280]"
      :state="switchState.k1"
      :state="info.switchState.k1"
      :color="lineColor"
    ></svg-switch>
    <svg-text
@@ -285,22 +309,22 @@
          <div class="g-name">蓄电池组1</div>
          <div class="g-content">
            <div class="label">状态</div>
            <div class="value">放电</div>
            <div class="value">{{ info.other.batt1State }}</div>
            <div class="label">组端电压</div>
            <div class="value">47.4</div>
            <div class="value">{{ info.rtstate[0].groupVol }}</div>
            <div class="label">组端电流</div>
            <div class="value">10.0</div>
            <div class="value">{{ info.rtstate[0].groupCurr }}</div>
          </div>
        </div>
        <div class="group">
          <div class="g-name">蓄电池组2</div>
          <div class="g-content">
            <div class="label">状态</div>
            <div class="value">放电</div>
            <div class="value">{{ info.other.batt2State }}</div>
            <div class="label">组端电压</div>
            <div class="value">47.4</div>
            <div class="value">{{ info.rtstate[1].groupVol }}</div>
            <div class="label">组端电流</div>
            <div class="value">10.0</div>
            <div class="value">{{ info.rtstate[1].groupCurr }}</div>
          </div>
        </div>
      </div>
@@ -313,7 +337,17 @@
      :color="lineColor"
      :currColor="currColor"
    ></svg-line>
    <svg-bg-text :offset="[1275, 280]"></svg-bg-text>
    <svg-bg-text
      :offset="[1275, 280]"
      :color="info.yxdata.batt1FuseCpss ? '#f59a23' : '#0ff'"
    ></svg-bg-text>
    <svg-info
      :width="80"
      :alarm="!!info.yxdata.batt1FuseCpss"
      :offset="[1275, 216]"
    >
      <div class="value">{{ info.yxdata.batt1FuseCpss ? "失效" : "正常" }}</div>
    </svg-info>
    <svg-line
      :points="[
        [1355, 280],
@@ -334,7 +368,7 @@
    <!-- k2 -->
    <svg-switch
      :offset="[820, 680]"
      :state="switchState.k2"
      :state="info.switchState.k2"
      :color="lineColor"
    ></svg-switch>
    <svg-text
@@ -386,7 +420,17 @@
      :color="lineColor"
      :currColor="currColor"
    ></svg-line>
    <svg-bg-text :offset="[1275, 680]" color="#f59a23"></svg-bg-text>
    <svg-bg-text
      :offset="[1275, 680]"
      :color="info.yxdata.batt2FuseCpss ? '#f59a23' : '#0ff'"
    ></svg-bg-text>
    <svg-info
      :width="80"
      :alarm="!!info.yxdata.batt2FuseCpss"
      :offset="[1275, 706]"
    >
      <div class="value">{{ info.yxdata.batt2FuseCpss ? "失效" : "正常" }}</div>
    </svg-info>
    <svg-line
      :points="[
        [820, 680],
@@ -406,7 +450,7 @@
      :currColor="currColor"
    ></svg-line>
    <svg-switch
      :state="switchState.kc1"
      :state="info.switchState.kc1"
      :offset="[755, 480]"
      :color="lineColor"
    ></svg-switch>
@@ -448,7 +492,7 @@
    ></svg-line>
    <!-- KD1 -->
    <svg-switch
      :state="switchState.kd1"
      :state="info.switchState.kd1"
      isVertical
      :offset="[1035, 360]"
      :color="lineColor"
@@ -469,7 +513,7 @@
    ></svg-line>
    <!-- KD2 -->
    <svg-switch
      :state="switchState.kd2"
      :state="info.switchState.kd2"
      isVertical
      :offset="[1035, 540]"
      :color="lineColor"
@@ -500,7 +544,7 @@
    ></svg-line>
    <!-- KD -->
    <svg-switch
      :state="switchState.kd"
      :state="info.switchState.kd"
      :offset="[1695, 600]"
      :color="lineColor"
    ></svg-switch>
@@ -529,7 +573,7 @@
    ></svg-line>
    <!-- KB -->
    <svg-switch
      :state="switchState.kb"
      :state="info.switchState.kb"
      isVertical
      :offset="[1415, 190]"
      :color="lineColor"
@@ -563,7 +607,12 @@
import HdwLight from "@/components/HdwLight";
export default {
  name: "",
  props: {
    info: {
      type: Object,
      required: true,
    },
  },
  data() {
    return {
      lineColor: "#00f7f9",
@@ -585,26 +634,11 @@
      status_L10: 0,
      status_L11: 0,
      status_L12: 0,
      switchState: {
        acin: 0,
        k1: true,
        k2: true,
        kc1: true,
        kd1: true,
        kd2: true,
        kb: true,
        kc: true,
        kd: true,
      },
      list_pdg: [],
      list_gp: [],
      list_hr: [],
      list_batt: [],
      workState: "",
      timeout_pdg: false,
      timeout_hr: false,
      timeout_gp: false,
      timeout_batt: false,
    };
  },
  computed: {},
@@ -626,23 +660,6 @@
    svgInfo,
  },
  methods: {
    update(data) {
      // console.log('data', data, '=============');
      let { ac, dc, gp, hr, batt } = data;
      this.list_batt = batt;
      this.list_gp = gp;
      this.list_hr = hr;
      this.list_pdg = [...ac, ...dc];
    },
    // 设置连接状态
    setConnect(obj) {
      let { hr, pdg, gp, batt } = obj;
      this.timeout_hr = hr != 0;
      this.timeout_pdg = pdg != 0;
      this.timeout_gp = gp != 0;
      this.timeout_batt = batt != 0;
    },
    // 设置工作状态
    setWorkstate(type) {
      this.workState =
@@ -820,6 +837,10 @@
    color: #ffea70;
    border-radius: 4px;
    background: #000;
    &.alarm {
      text-indent: 2em;
      color: rgb(255, 0, 0);
    }
  }
}
/deep/ .g-rect-fill {
src/views/home/components/svg/svgInfo.vue
@@ -5,7 +5,7 @@
    :height="height"
  >
    <!-- foreignObject元素用于包裹非SVG元素 -->
    <div class="bg">
    <div :class="['bg', {alarm}]" :style="{'--bgColor': alarmColor, '--textColor': alarmTextColor}">
        <slot></slot>
    </div>
    <!-- 这里放入了HTML标签 -->
@@ -34,6 +34,18 @@
      type: String,
      default: "",
    },
    alarmColor: {
      type: String,
      default: '#FD865B'
    },
    alarmTextColor: {
      type: String,
      default: '#FFE871'
    },
    alarm: {
      type: Boolean,
      default: false
    },
  },
  data() {
    return {
@@ -46,7 +58,7 @@
};
</script>
<style scoped>
<style scoped lang="less">
.bg {
  height: 100%;
  box-sizing: border-box;
@@ -57,5 +69,10 @@
  display: flex;
  justify-content: center;
  align-items: center;
  &.alarm {
    background: var(--bgColor);
    border-color: var(--bgColor);
    color: var(--textColor);
  }
}
</style>