he wei
2025-04-23 077a05d485f31a2ccc17113a2a920810fde6ce9d
src/views/dataTest/components/DischargeParams.vue
@@ -14,7 +14,7 @@
      <div class="table-row">
        <div class="table-cell pr16">
          <el-form-item label="设备ID">
            <el-input v-model="otherParams.FBSDeviceId" readonly></el-input>
            <el-input v-model="otherParams.fbsdeviceId" readonly></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
@@ -27,14 +27,18 @@
        <div class="table-cell pr16">
          <el-form-item label="电池组号">
            <el-input
              v-model="otherParams.GroupIndexInFBSDevice"
              v-model="otherParams.groupIndexInFBSDevice"
              readonly
            ></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item label="测试类型">
            <el-select v-model="params.TestCmd" placeholder="请选择">
            <el-select
              v-model="params.testCmd"
              :disabled="pReadOnly"
              placeholder="请选择"
            >
              <el-option
                v-for="item in testType"
                :key="item.value"
@@ -47,48 +51,54 @@
      </div>
      <div class="table-row">
        <div class="table-cell pr16">
          <el-form-item label="核容电流(1~300A)" prop="DisCurr">
            <el-input v-model="params.DisCurr" :readonly="readOnly"></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item label="核容时长(1~10000分钟)" prop="DisTime">
            <el-input v-model="params.DisTime" :readonly="readOnly"></el-input>
          </el-form-item>
        </div>
      </div>
      <div class="table-row">
        <div class="table-cell pr16">
          <el-form-item label="核容容量(1~2000AH)" prop="DisCap">
            <el-input v-model="params.DisCap" :readonly="readOnly"></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item label="单体温度上限(10~60℃)" prop="MonomerTmp_High">
          <el-form-item :label="disCurrText" :prop="isCqdz ? 'disCurr1' : 'disCurr'">
            <el-input
              v-model="params.MonomerTmp_High"
              :readonly="readOnly"
              v-model="params.disCurr"
              :readonly="readOnly || pReadOnly || isCqdz"
            ></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item label="核容时长(1~10000分钟)" prop="disTime">
            <el-input
              v-model="params.disTime"
              :readonly="readOnly || pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
      </div>
      <div class="table-row">
        <div class="table-cell pr16">
          <el-form-item :label="rangeLabel.GroupVol_Low" prop="GroupVol_Low">
          <el-form-item label="核容容量(1~2000AH)" prop="disCap">
            <el-input
              v-model="params.GroupVol_Low"
              :readonly="readOnly"
              v-model="params.disCap"
              :readonly="readOnly || pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item
            :label="rangeLabel.MonomerVol_Low"
            prop="MonomerVol_Low"
          >
          <el-form-item label="单体温度上限(20~60℃)" prop="monomertmpHigh">
            <el-input
              v-model="params.MonomerVol_Low"
              :readonly="readOnly"
              v-model="params.monomertmpHigh"
              :readonly="readOnly || pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
      </div>
      <div class="table-row">
        <div class="table-cell pr16">
          <el-form-item :label="rangeLabel.groupvolLow" prop="groupvolLow">
            <el-input
              v-model="params.groupvolLow"
              :readonly="readOnly || pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item :label="rangeLabel.monomervolLow" prop="monomervolLow">
            <el-input
              v-model="params.monomervolLow"
              :readonly="readOnly || pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
@@ -96,23 +106,45 @@
      <div class="table-row">
        <div class="table-cell pr16">
          <el-form-item label="升压上限(V)">
            <el-input v-model="params.DCVolHighLimit"></el-input>
            <el-input
              v-model="params.dcvolHighLimit"
              :readonly="pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
        <div class="table-cell">
          <el-form-item label="充电电流(A)">
            <el-input v-model="params.ChargeCurrSet"></el-input>
            <el-input
              v-model="params.chargeCurrSet"
              :readonly="pReadOnly"
            ></el-input>
          </el-form-item>
        </div>
      </div>
    </div>
    <el-form-item v-if="1 == isRequest" label="申请原因" required>
      <el-input type="textarea" :rows="2" v-model="reason"></el-input>
    </el-form-item>
    <div class="form-footer">
      <!-- <three-btn>清除告警</three-btn> -->
      <three-btn :disabled="!startTestFlag" @click="startTestCheck"
        >启动测试</three-btn
      >
      <three-btn @click="getParams(true)">读取</three-btn>
      <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
      <template v-if="!pReadOnly">
        <!-- 申请放电 -->
        <three-btn v-if="1 == isRequest" @click="sendRequest"
          >放电申请</three-btn
        >
        <!--  -->
        <template v-else>
          <three-btn :disabled="!startTestFlag" @click="startTestCheck"
            >启动测试</three-btn
          >
          <three-btn @click="getParams()">读取</three-btn>
          <three-btn :disabled="!setTestFlag" @click="submitFrom"
            >设定</three-btn
          >
        </template>
      </template>
      <three-btn v-else @click="$emit('close')">关闭</three-btn>
      <!--      <three-btn @click="submitFrom">设定</three-btn>-->
    </div>
    <el-dialog
      title="人脸校验"
@@ -156,11 +188,34 @@
import CheckFace from "@/components/checkFace";
import config from "@/assets/js/config";
import {
  btsControl as getParams,
  btsControl as start,
  set61850Params,
  addWorkMain,
  searchTemp,
} from "../js/realTime";
import { checkUserPwd } from "@/views/login/js/api";
export default {
  components: { CheckFace },
  props: {
    batt: {
      type: Object,
      default() {
        return {};
      },
    },
    // 只读模式 显示参数用
    pReadOnly: {
      type: Boolean,
      default: false,
    },
    isRequest: {
      type: Number,
      default: 0,
    },
    paramData: {
      type: Object,
      default() {
        return {};
@@ -174,8 +229,8 @@
    let batt = this.batt;
    // 修改组端下限的取值范围
    rules.GroupVol_Low.min = (batt.MonCount * batt.MonVolStd * 0.875).toHold(1);
    rules.GroupVol_Low.max = (batt.MonCount * batt.MonVolStd * 1.125).toHold(1);
    rules.GroupVol_Low.min = (batt.monCount * batt.monVolStd * 0.875).toHold(1);
    rules.GroupVol_Low.max = (batt.monCount * batt.monVolStd * 1.125).toHold(1);
    rules.GroupVol_Low.msg =
      "取值范围" +
      rules.GroupVol_Low.min +
@@ -184,16 +239,17 @@
      "(保留一位小数)";
    // 修改电池单体下限的取值范围
    rules.MonomerVol_Low.min = (batt.MonVolStd * 0.9).toHold(1);
    rules.MonomerVol_Low.max = (batt.MonVolStd * 1.2).toHold(1);
    rules.MonomerVol_Low.min = (batt.monVolStd * 0.9).toHold(1);
    rules.MonomerVol_Low.max = (batt.monVolStd * 1.2).toHold(1);
    rules.MonomerVol_Low.msg =
      "取值范围" +
      rules.MonomerVol_Low.min +
      "~" +
      rules.MonomerVol_Low.max +
      "(保留一位小数)";
      "(保留三位小数)";
    return {
      reason: "",
      setFaceShow: false,
      startFaceShow: false,
      cmd: cmd, // 操作命令
@@ -202,13 +258,13 @@
      setTestFlag: false, // 设置参数的状态
      readOnly: false,
      ranges: {
        GroupVol_Low: {
        groupvolLow: {
          name: "组端电压下限",
          unit: "V",
          min: rules.GroupVol_Low.min,
          max: rules.GroupVol_Low.max,
        },
        MonomerVol_Low: {
        monomervolLow: {
          name: "单体电压下限",
          unit: "V",
          min: rules.MonomerVol_Low.min,
@@ -217,19 +273,20 @@
      },
      params: {
        num: 0,
        dev_id: 0, // 设备id
        TestCmd: 37, // 测试类型
        DisCap: 0, // 核容容量
        DisCurr: 0, // 核容电流
        DisTime: 0, // 核容时长
        GroupVol_Low: 0, // 组端电压下限
        MonomerVol_Low: 0, // 单体电压下限
        MonomerTmp_High: 0, // 单体温度上限
        DCVolHighLimit: 0, // 升压上限
        ChargeCurrSet: 0, // 充电电流
        battGroupId: 0,
        devId: 0, // 设备id
        testCmd: 37, // 测试类型
        disCap: 0, // 核容容量
        disCurr: 0, // 核容电流
        disTime: 0, // 核容时长
        groupvolLow: 0, // 组端电压下限
        monomervolLow: 0, // 单体电压下限
        monomertmpHigh: 0, // 单体温度上限
        dcvolHighLimit: 0, // 升压上限
        chargeCurrSet: 0, // 充电电流
      },
      rules: {
        DisCap: [
        disCap: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.DisCap);
@@ -237,7 +294,7 @@
            trigger: "change",
          },
        ],
        DisCurr: [
        disCurr: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.DisCurr);
@@ -245,7 +302,7 @@
            trigger: "change",
          },
        ],
        DisTime: [
        disTime: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.DisTime);
@@ -253,7 +310,7 @@
            trigger: "change",
          },
        ],
        GroupVol_Low: [
        groupvolLow: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.GroupVol_Low);
@@ -261,7 +318,7 @@
            trigger: "change",
          },
        ],
        MonomerVol_Low: [
        monomervolLow: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.MonomerVol_Low);
@@ -269,7 +326,7 @@
            trigger: "change",
          },
        ],
        MonomerTmp_High: [
        monomertmpHigh: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.MonomerTmp_High);
@@ -283,7 +340,7 @@
  watch: {
    params: {
      handler(params) {
        if (params.TestCmd == 72 || params.TestCmd == 50) {
        if (params.testCmd == 72 || params.testCmd == 50) {
          this.readOnly = true;
        } else {
          this.readOnly = false;
@@ -294,56 +351,94 @@
    },
  },
  methods: {
    // 放电申请
    sendRequest() {
      if ("" == this.reason.trim()) {
        this.$message.error("请填写申请原因");
        return false;
      }
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          this.addWorkMain();
        } else {
          this.$layer.msg("存在校验未通过的数据!");
          return false;
        }
      });
    },
    addWorkMain() {
      let param = { ...this.params, reason: this.reason };
      // 等待框
      let loading = this.$layer.loading(1);
      addWorkMain(param)
        .then((res) => {
          let { code, data, msg } = res.data;
          if (code && data) {
            // 提示信息
            this.$layer.msg("申请已提交");
            this.$emit("close");
          } else {
            this.$layer.msg(msg);
          }
          // 关闭等待框
          this.$layer.close(loading);
        })
        .catch((err) => {
          this.$layer.close(loading);
          console.log(err);
        });
    },
    initParams() {
      // 初始化参数
      this.params = {
        num: 0,
        dev_id: 0, // 设备id
        TestCmd: 37, // 测试类型
        DisCap: 0, // 核容容量
        DisCurr: 0, // 核容电流
        DisTime: 0, // 核容时长
        GroupVol_Low: 0, // 组端电压下限
        MonomerVol_Low: 0, // 单体电压下限
        MonomerTmp_High: 0, // 单体温度上限
        DCVolHighLimit: 0, // 升压上限
        ChargeCurrSet: 0, // 充电电流
        battGroupId: 0,
        devId: 0, // 设备id
        testCmd: 37, // 测试类型
        disCap: 0, // 核容容量
        disCurr: 0, // 核容电流
        disTime: 0, // 核容时长
        groupvolLow: 0, // 组端电压下限
        monomervolLow: 0, // 单体电压下限
        monomertmpHigh: 0, // 单体温度上限
        dcvolHighLimit: 0, // 升压上限
        chargeCurrSet: 0, // 充电电流
      };
    },
    // 获取参数
    getParams(showLoad) {
    getParams(useParam) {
      // 定义等待框
      let loading;
      if (showLoad) {
        loading = this.$layer.loading(1);
      }
      let loading = this.$layer.loading(1);
      // 启动按钮不可点击
      this.startTestFlag = false;
      // 查询后台
      this.$apis.dischargeTest.e61850
        .getParams({
          num: this.cmd.get,
          dev_id: this.batt.FBSDeviceId,
        })
      getParams({
        num: this.cmd.get,
        devId: this.batt.fbsdeviceId,
        battGroupNum: this.batt.groupIndexInFBSDevice + 1,
      })
        .then((res) => {
          let rs = JSON.parse(res.data.result);
          if (rs.code == 1) {
            let fsparam = rs.data[0].fsparam;
          res = res.data;
          if (useParam || (res.code && res.data2)) {
            let fsparam = res.data;
            // 遍历参数属性并赋值
            for (let key in this.params) {
              if (key === "TestCmd") {
                this.params.TestCmd = 37;
              if (key === "testCmd") {
                this.params.testCmd = 37;
              } else {
                this.params[key] = fsparam[key];
              }
            }
            // 设置的命令和dev_id
            // 设置的命令和devId
            this.params.num = this.cmd.set;
            this.params.dev_id = this.batt.FBSDeviceId;
            this.$layer.msg("读取成功!");
            // 设置按钮可点击
            this.setTestFlag = true;
            this.params.devId = this.batt.fbsdeviceId;
            if (res.data2) {
              this.$layer.msg("读取成功!");
              // 设置按钮可点击
              this.setTestFlag = true;
            }
          } else {
            // 初始化参数
            this.initParams();
@@ -370,16 +465,32 @@
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          let batt = this.batt;
          let params = this.params;
          let disCurr = params.disCurr; // 核容电流
          let disCap = params.disCap; // 核容容量
          let disTime = params.disTime; // 核容时长
          let realTestTime = 0;
          if (disCurr > batt.loadCurr) {
            realTestTime = batt.loadCurr
              ? Math.ceil(disCap / batt.loadCurr) * 60
              : 0;
          }
          let msg = "确认修改参数";
          if (realTestTime > disTime) {
            msg =
              "核容时长可能无法满足核容" +
              disCap +
              "AH,建议核容时长:" +
              realTestTime +
              "分钟";
          }
          // 设置参数
          this.$layer.confirm(
            "确认修改参数",
            { icon: 3, title: "系统提示" },
            (index) => {
              // 关闭确认框
              this.$layer.close(index);
              this.setParamsCheck();
            }
          );
          this.$layer.confirm(msg, { icon: 3, title: "系统提示" }, (index) => {
            // 关闭确认框
            this.$layer.close(index);
            this.setParamsCheck();
          });
        } else {
          this.$layer.msg("存在校验未通过的数据!");
          return false;
@@ -387,7 +498,7 @@
      });
    },
    setParamsCheck() {
      if (config.dischargeByFace.value) {
      if (config.setParamsByFace.value) {
        this.setFaceShow = true;
      } else {
        this.setParams(true);
@@ -398,11 +509,10 @@
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      this.$apis.dischargeTest.e61850
        .setParams(this.params)
      set61850Params(this.params)
        .then((res) => {
          let rs = JSON.parse(res.data.result);
          if (rs.code == 1) {
          res = res.data;
          if (res.code && res.data) {
            // 启动按钮可点击
            this.startTestFlag = true;
            // 提示信息
@@ -443,11 +553,10 @@
        },
        (pass, index) => {
          // 请求后台校验密码
          this.$apis.login
            .checkUserPwd(pass)
          checkUserPwd(pass)
            .then((res) => {
              let rs = JSON.parse(res.data.result);
              if (rs.code == 1) {
              res = res.data;
              if (res.code) {
                // 关闭弹出框
                this.$layer.close(index);
                this.$layer.msg("密码检测通过,启动测试");
@@ -469,15 +578,14 @@
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      this.$apis.dischargeTest.e61850
        .start({
          num: this.cmd.start,
          dev_id: this.batt.FBSDeviceId,
          BattGroupNum: this.batt.GroupIndexInFBSDevice + 1,
        })
      start({
        num: this.cmd.start,
        devId: this.batt.fbsdeviceId,
        battGroupNum: this.batt.groupIndexInFBSDevice + 1,
      })
        .then((res) => {
          let rs = JSON.parse(res.data.result);
          if (rs.code == 1) {
          res = res.data;
          if (res.code && res.data2) {
            // 提示信息
            this.$layer.msg("启动测试成功");
            this.$emit("close");
@@ -498,11 +606,57 @@
    },
    setFaceSuccess() {
      this.setFaceShow = false;
      this.setParams();
      this.$nextTick(() => {
        this.setParams();
      });
    },
    startFaceSuccess() {
      this.startFaceShow = false;
      this.startTest();
      this.$nextTick(() => {
        this.startTest();
      });
    },
    searchTemp() {
      let loading = this.$layer.loading(1);
      searchTemp(this.batt.battGroupId)
        .then((res) => {
          let { code, data, data2 } = res.data;
          if (code && data) {
            let fsparam = data2;
            // 遍历参数属性并赋值
            for (let key in this.params) {
              if (key === "testCmd") {
                this.params.testCmd = 37;
              } else {
                this.params[key] = fsparam[key];
              }
            }
            // 设置的命令和devId
            this.params.num = this.cmd.set;
            this.params.devId = this.batt.fbsdeviceId;
            // 设置按钮可点击
            this.setTestFlag = true;
            this.$layer.close(loading);
          } else {
            // 初始化参数
            this.initParams();
            // 设置按钮不可点击
            this.setTestFlag = false;
            // 关闭等待框
            this.$layer.close(loading);
            this.$layer.msg("读取失败,读取请求异常!");
          }
        })
        .catch((err) => {
          console.log(err);
          // 初始化参数
          this.initParams();
          // 设置按钮不可点击
          this.setTestFlag = false;
          // 关闭等待框
          this.$layer.close(loading);
          this.$layer.msg("读取失败,读取请求异常!");
        });
    },
  },
  computed: {
@@ -510,17 +664,20 @@
      let batt = this.batt;
      let groupInfo =
        "单体数量:" +
        this.batt.MonCount +
        this.batt.monCount +
        ";电压(V):" +
        this.batt.MonVolStd +
        this.batt.monVolStd +
        ";容量(AH):" +
        this.batt.MonCapStd;
        this.batt.monCapStd;
      return {
        groupName: batt.StationName + "-" + batt.BattGroupName,
        FBSDeviceId: batt.FBSDeviceId,
        groupName: batt.stationName + "-" + batt.battGroupName,
        fbsdeviceId: batt.fbsdeviceId,
        groupInfo: groupInfo,
        GroupIndexInFBSDevice: this.batt.GroupIndexInFBSDevice + 1,
        groupIndexInFBSDevice: this.batt.groupIndexInFBSDevice + 1,
      };
    },
    isCqdz() {
      return this.$CFG.clientName.name === "cqdz";
    },
    rangeLabel() {
      let ranges = this.ranges;
@@ -532,10 +689,38 @@
      }
      return result;
    },
    disCurrText() {
      let batt = this.batt;
      if (this.isCqdz) {
        return "核容电流(A)";
      }
      return "核容电流(1~300A)" + " 实际负载电流:" + batt.loadCurr + "A";
    },
  },
  mounted() {
    // 获取数据
    this.getParams(true);
    if (this.pReadOnly) {
      this.initParams();
      this.params = {
        ...this.params,
        ...this.paramData,
      };
    } else {
      console.log(this.isRequest, "??");
      switch (this.isRequest) {
        case 1:
          this.getParams(true);
          break;
        case 2:
          this.searchTemp();
          break;
        default:
          this.getParams();
          break;
      }
    }
    // console.log(this.batt);
  },
};
</script>
@@ -551,5 +736,3 @@
  margin-left: 12px;
}
</style>