whychdw
2021-08-31 3b5fecb0599c6ddcf7d5a640c6c0de5edc003ba9
内容提交
5个文件已修改
768 ■■■■■ 已修改文件
src/assets/js/apis/system/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_system.js 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/GetMonomerCap.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/params/SystemParams.vue 662 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/dataTest/realTime.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/apis/system/index.js
@@ -1,7 +1,7 @@
import axios from 'axios'
import axios from 'axios';
import {
    const_system
} from '../../const'
} from '../../const';
export default {
    /**
src/assets/js/const/const_system.js
@@ -1,45 +1,59 @@
export default {
    cmd: {
        restart: 0x10,      // 重启设备
        set: 0x81,          // 设置参数
        get: 0x80,          //  获取参数
        clear: 0xB8,        // 清除告警
  cmd: {
    restart: 0x10,      // 重启设备
    set: 0x81,          // 设置参数
    get: 0x80,          //  获取参数
    clear: 0xB8,        // 清除告警
  },
  rules: {
    GroupVolSorce: {    // 在线电压低阀值
      pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 40,
      max: 57.4,
      msg: '取值范围40~57.4(保留一位小数)'
    },
    rules: {
        GroupVolSorce: {    // 在线电压低阀值
            pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
            regVal: true,
            min: 40,
            max: 57.4,
            msg: '取值范围40~57.4(保留一位小数)'
        },
        CurrentTyte: {      // 浮充电流阀值
            pattern: /^[0-9]+$/,
            regVal: true,
            min: 3,
            max: 20,
            msg: '取值范围3~20'
        },
        PowerBreakChargeCurr: {     // 电流异常阀值
            pattern: /^[0-9]+$/,
            regVal: true,
            min: 2,
            max: 5,
            msg: '取值范围2~5'
        },
        POF_BG_Boost_VolStop: {     // 电压过高阀值
            pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
            regVal: true,
            min: 40,
            max: 57.4,
            msg: '取值范围40~57.4(保留一位小数)'
        },
        POF_BG_Boost_VolStart: {        // 电压过低阀值
            pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
            regVal: true,
            min: 40,
            max: 57.4,
            msg: '取值范围40~57.4(保留一位小数)'
        },
    CurrentTyte: {      // 浮充电流阀值
      pattern: /^[0-9]+$/,
      regVal: true,
      min: 3,
      max: 20,
      msg: '取值范围3~20'
    },
    PowerBreakChargeCurr: {     // 电流异常阀值
      pattern: /^[0-9]+$/,
      regVal: true,
      min: 2,
      max: 5,
      msg: '取值范围2~5'
    },
    POF_BG_Boost_VolStop: {     // 电压过高阀值
      pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 40,
      max: 57.4,
      msg: '取值范围40~57.4(保留一位小数)'
    },
    POF_BG_Boost_VolStart: {        // 电压过低阀值
      pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 40,
      max: 57.4,
      msg: '取值范围40~57.4(保留一位小数)'
    },
    junHengStVol: {     // 均衡停止电压阀值
      pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 0,
      max: 20,
      msg: '取值范围0~20(保留一位小数)'
    },
    junHengStCurr: {    // 均衡停止电流阀值
      pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
      regVal: true,
      min: 0,
      max: 5,
      msg: '取值范围0~5(保留一位小数)'
    }
  },
};
src/assets/js/tools/GetMonomerCap.js
@@ -1,4 +1,4 @@
import N_TO_10H from './N_TO_10H'
import N_TO_10H from './N_TO_10H';
/**
 * 获取剩余容量/实际容量
src/components/params/SystemParams.vue
@@ -1,307 +1,417 @@
<template>
    <div class="params-container">
        <el-form
        ref="ruleForm"
        size="mini"
        label-position="top"
        :model="params"
        :rules="rules"
        class="params-dialog">
            <el-form-item label="电池组名称">
                <el-input v-model="otherParams.groupName" readonly></el-input>
  <div class="params-container">
    <el-form
      ref="ruleForm"
      size="mini"
      label-position="top"
      :model="params"
      :rules="rules"
      class="params-dialog"
    >
      <el-form-item label="电池组名称">
        <el-input v-model="otherParams.groupName" readonly></el-input>
      </el-form-item>
      <div class="table-layout">
        <div class="table-row">
          <div class="table-cell pr16">
            <el-form-item
              label="在线电压低阀值(40~57.4V)"
              prop="GroupVolSorce"
            >
              <el-input v-model="params.GroupVolSorce"></el-input>
            </el-form-item>
            <div class="table-layout">
                <div class="table-row">
                    <div class="table-cell pr16">
                        <el-form-item label="在线电压低阀值(40~57.4V)" prop="GroupVolSorce">
                            <el-input v-model="params.GroupVolSorce"></el-input>
                        </el-form-item>
                    </div>
                    <div class="table-cell">
                        <el-form-item label="浮充电流阀值(3~20A)" prop="CurrentTyte">
                            <el-input v-model="params.CurrentTyte"></el-input>
                        </el-form-item>
                    </div>
                </div>
                <div class="table-row">
                    <div class="table-cell pr16">
                        <el-form-item label="电流异常阀值(2~5A)" prop="PowerBreakChargeCurr">
                            <el-input v-model="params.PowerBreakChargeCurr" :readonly="readOnly"></el-input>
                        </el-form-item>
                    </div>
                    <div class="table-cell">
                        <el-form-item label="电压过高阀值(40~57.4V)" prop="POF_BG_Boost_VolStop">
                            <el-input v-model="params.POF_BG_Boost_VolStop" :readonly="readOnly"></el-input>
                        </el-form-item>
                    </div>
                </div>
                <div class="table-row">
                    <div class="table-cell pr16">
                        <el-form-item label="电压过低阀值(40~57.4V)" prop="POF_BG_Boost_VolStart">
                            <el-input v-model="params.POF_BG_Boost_VolStart" :readonly="readOnly"></el-input>
                        </el-form-item>
                    </div>
                    <div class="table-cell">
                        <el-form-item label="主从机设置">
                            <el-select v-model="params.MonomerOrder">
                                <el-option v-for="item in types" :key="item.value"
                                :value="item.value"
                                :label="item.label"></el-option>
                            </el-select>
                        </el-form-item>
                    </div>
                </div>
            </div>
            <div class="form-footer">
                <three-btn @click="getParams(true)">读取</three-btn>
                <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
            </div>
        </el-form>
    </div>
          </div>
          <div class="table-cell">
            <el-form-item label="浮充电流阀值(3~20A)" prop="CurrentTyte">
              <el-input v-model="params.CurrentTyte"></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="table-row">
          <div class="table-cell pr16">
            <el-form-item
              label="电流异常阀值(2~5A)"
              prop="PowerBreakChargeCurr"
            >
              <el-input
                v-model="params.PowerBreakChargeCurr"
                :readonly="readOnly"
              ></el-input>
            </el-form-item>
          </div>
          <div class="table-cell">
            <el-form-item
              label="电压过高阀值(40~57.4V)"
              prop="POF_BG_Boost_VolStop"
            >
              <el-input
                v-model="params.POF_BG_Boost_VolStop"
                :readonly="readOnly"
              ></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="table-row">
          <div class="table-cell pr16">
            <el-form-item
              label="电压过低阀值(40~57.4V)"
              prop="POF_BG_Boost_VolStart"
            >
              <el-input
                v-model="params.POF_BG_Boost_VolStart"
                :readonly="readOnly"
              ></el-input>
            </el-form-item>
          </div>
          <div class="table-cell">
            <el-form-item label="主从机设置">
              <el-select v-model="params.MonomerOrder">
                <el-option
                  v-for="item in types"
                  :key="item.value"
                  :value="item.value"
                  :label="item.label"
                ></el-option>
              </el-select>
            </el-form-item>
          </div>
        </div>
        <div class="table-row">
          <div class="table-cell pr16">
            <el-form-item label="均衡功能状态" prop="junHengEnabled">
              <el-select
                v-model="params.junHengEnabled"
                :disabled="!junhengState"
              >
                <el-option
                  v-for="item in junhengStateTypes"
                  :key="item.value"
                  :value="item.value"
                  :label="item.label"
                ></el-option>
              </el-select>
            </el-form-item>
          </div>
          <div class="table-cell">
            <el-form-item label="均衡停止电压阀值(0~20)" prop="junHengStVol">
              <el-input
                v-model="params.junHengStVol"
                :readonly="readOnly"
                :disabled="!junhengState"
              ></el-input>
            </el-form-item>
          </div>
        </div>
        <div class="table-row">
          <div class="table-cell pr16">
            <el-form-item label="均衡停止电流阀值(0~5)" prop="junHengStCurr">
              <el-input
                v-model="params.junHengStCurr"
                :readonly="readOnly"
                :disabled="!junhengState"
              ></el-input>
            </el-form-item>
          </div>
        </div>
      </div>
      <div class="form-footer">
        <three-btn @click="getParams(true)">读取</three-btn>
        <three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
      </div>
    </el-form>
  </div>
</template>
<script>
import { testVal } from "@/assets/js/tools";
import  {
    testVal
} from '../../assets/js/tools'
import {
    const_system
} from '../../assets/js/const'
import { const_system } from "@/assets/js/const";
export default {
    props: {
        batt: {
            type: Object,
            default() {
                return {}
            }
        }
  props: {
    batt: {
      type: Object,
      default() {
        return {};
      },
    },
    data() {
        let cmd = const_system.cmd;
        let rules = const_system.rules;
        return {
            cmd: cmd,
            setTestFlag: false,         // 设置参数的状态
            readOnly: false,
            params: {
                num: 0,
                dev_id: 0,     // 设备id
                GroupVolSorce: 0,      // 在线电压低阀值
                CurrentTyte: 0,        // 浮充电流阀值
                PowerBreakChargeCurr: 0,    // 电流异常阀值
                POF_BG_Boost_VolStop: 0,    // 电压过高阀值
                POF_BG_Boost_VolStart: 0,   // 电压过低阀值
                MonomerOrder: 0,        // 主从机设置
                LoaderCount: -1,        // 主从机使能
                DtCardCount: -1,        // 干接点使能
  },
  data() {
    let cmd = const_system.cmd;
    let rules = const_system.rules;
    return {
      cmd: cmd,
      setTestFlag: false, // 设置参数的状态
      readOnly: false,
      junhengState: false,
      params: {
        num: 0,
        dev_id: 0, // 设备id
        GroupVolSorce: 0, // 在线电压低阀值
        CurrentTyte: 0, // 浮充电流阀值
        PowerBreakChargeCurr: 0, // 电流异常阀值
        POF_BG_Boost_VolStop: 0, // 电压过高阀值
        POF_BG_Boost_VolStart: 0, // 电压过低阀值
        MonomerOrder: 0, // 主从机设置
        LoaderCount: -1, // 主从机使能
        DtCardCount: -1, // 干接点使能
        junHengEnabled: 0, // 均衡功能启用状态(1:启用;0:禁用)
        junHengStVol: 0, // 均衡停止电压阀值
        junHengStCurr: 0, // 均衡停止电流阀值
      },
      rules: {
        GroupVolSorce: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.GroupVolSorce);
            },
            rules: {
                GroupVolSorce: [{
                    validator(rule, value, callback) {
                        testVal(rule, value, callback, rules.GroupVolSorce)
                    },
                    trigger: 'change'
                }],
                CurrentTyte: [{
                    validator(rule, value, callback) {
                        testVal(rule, value, callback, rules.CurrentTyte)
                    },
                    trigger: 'change'
                }],
                PowerBreakChargeCurr: [{
                    validator(rule, value, callback) {
                        testVal(rule, value, callback, rules.PowerBreakChargeCurr)
                    },
                    trigger: 'change'
                }],
                POF_BG_Boost_VolStop: [{
                    validator(rule, value, callback) {
                        testVal(rule, value, callback, rules.POF_BG_Boost_VolStop)
                    },
                    trigger: 'change'
                }],
                POF_BG_Boost_VolStart: [{
                    validator(rule, value, callback) {
                        testVal(rule, value, callback, rules.POF_BG_Boost_VolStart)
                    },
                    trigger: 'change'
                }],
            trigger: "change",
          },
        ],
        CurrentTyte: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.CurrentTyte);
            },
            types: [
                {
                    label: '主机模式',
                    value: 0,
                },
                {
                    label: '从机模式',
                    value: 1,
                },
            ],
        }
            trigger: "change",
          },
        ],
        PowerBreakChargeCurr: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.PowerBreakChargeCurr);
            },
            trigger: "change",
          },
        ],
        POF_BG_Boost_VolStop: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.POF_BG_Boost_VolStop);
            },
            trigger: "change",
          },
        ],
        POF_BG_Boost_VolStart: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.POF_BG_Boost_VolStart);
            },
            trigger: "change",
          },
        ],
        junHengStVol: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.junHengStVol);
            },
            trigger: "change",
          },
        ],
        junHengStCurr: [
          {
            validator(rule, value, callback) {
              testVal(rule, value, callback, rules.junHengStCurr);
            },
            trigger: "change",
          },
        ],
      },
      types: [
        {
          label: "主机模式",
          value: 0,
        },
        {
          label: "从机模式",
          value: 1,
        },
      ],
      junhengStateTypes: [
        {
          label: "关闭",
          value: 0,
        },
        {
          label: "启用",
          value: 1,
        },
      ],
    };
  },
  methods: {
    initParams() {
      // 初始化参数
      this.params = {
        num: 0,
        dev_id: 0, // 设备id
        GroupVolSorce: 0, // 在线电压低阀值
        CurrentTyte: 0, // 浮充电流阀值
        PowerBreakChargeCurr: 0, // 电流异常阀值
        POF_BG_Boost_VolStop: 0, // 电压过高阀值
        POF_BG_Boost_VolStart: 0, // 电压过低阀值
        MonomerOrder: 0, // 主从机设置
        LoaderCount: 0, // 主从机使能
        DtCardCount: 0, // 干接点使能
        junHengEnabled: 0, // 均衡功能启用状态(1:启用;0:禁用)
        junHengStVol: 0, // 均衡停止电压阀值
        junHengStCurr: 0, // 均衡停止电流阀值
      };
    },
    methods: {
        initParams() {
            // 初始化参数
            this.params = {
                num: 0,
                dev_id: 0,     // 设备id
                GroupVolSorce: 0,      // 在线电压低阀值
                CurrentTyte: 0,        // 浮充电流阀值
                PowerBreakChargeCurr: 0,    // 电流异常阀值
                POF_BG_Boost_VolStop: 0,    // 电压过高阀值
                POF_BG_Boost_VolStart: 0,   // 电压过低阀值
                MonomerOrder: 0,        // 主从机设置
                LoaderCount: 0,        // 主从机使能
                DtCardCount: 0,        // 干接点使能
            };
        },
        // 获取参数
        getParams(showLoad) {
            // 定义等待框
            let loading;
            if(showLoad) {
                loading = this.$layer.loading(1);
            }
    // 获取参数
    getParams(showLoad) {
      // 定义等待框
      let loading;
      if (showLoad) {
        loading = this.$layer.loading(1);
      }
            // 查询后台
            this.$apis.system.getParams({
                num: this.cmd.get,
                dev_id: this.batt.FBSDeviceId
            }).then(res=>{
                let rs = JSON.parse(res.data.result);
                if(rs.code == 1) {
                    let data = rs.data[0];
                    // 遍历参数属性并赋值
                    for(let key in this.params) {
                        let value = data[key];
                        // 特殊值处理
                        if(key == 'GroupVolSorce' || key == "CurrentTyte") {
                            value = value/10;
                        }
                        this.params[key] = value;
                    }
                    // 设置的命令和dev_id
                    this.params.num = this.cmd.set;
                    this.params.dev_id = this.batt.FBSDeviceId;
                    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.setParams();
                }else {
                    this.$layer.msg('存在校验未通过的数据!');
                    return false;
                }
            });
        },
        // 设置参数
        setParams() {
            let params = {};
      // 查询后台
      this.$apis.system
        .getParams({
          num: this.cmd.get,
          dev_id: this.batt.FBSDeviceId,
        })
        .then((res) => {
          let rs = JSON.parse(res.data.result);
          if (rs.code == 1) {
            let data = rs.data[0];
            // 遍历参数属性并赋值
            for(let key in this.params) {
                let value = this.params[key];
            for (let key in this.params) {
              let value = data[key];
                // 特殊值处理
                if(key == 'GroupVolSorce' || key == "CurrentTyte") {
                    value = value*10;
                }
              // 特殊值处理
              if (key == "GroupVolSorce" || key == "CurrentTyte") {
                value = value / 10;
              }
                params[key] = value;
              this.params[key] = value;
            }
            console.log(params);
            // 等待框
            let loading = this.$layer.loading(1);
            // 请求后台
            this.$apis.system.setParams(params).then(res=>{
                let rs = JSON.parse(res.data.result);
                if(rs.code == 1) {
                    // 启动按钮可点击
                    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('设置失败,设置请求异常!');
            });
            // 设置均衡状态
            this.junhengState = this.params.junHengEnabled ? true : false;
            // 设置的命令和dev_id
            this.params.num = this.cmd.set;
            this.params.dev_id = this.batt.FBSDeviceId;
            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("读取失败,读取请求异常!");
        });
    },
    computed: {
        otherParams() {
            let batt = this.batt;
            let groupInfo = '单体数量:'+this.batt.MonCount+";电压(V):"
                            +this.batt.MonVolStd+";容量(AH):"+this.batt.MonCapStd;
            return {
                groupName: batt.StationName,
                FBSDeviceId: batt.FBSDeviceId,
                groupInfo: groupInfo,
                GroupIndexInFBSDevice: this.batt.GroupIndexInFBSDevice+1,
            }
    // 提交表单设置参数
    submitFrom() {
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          // 设置参数
          this.setParams();
        } else {
          this.$layer.msg("存在校验未通过的数据!");
          return false;
        }
      });
    },
    mounted() {
        // 获取参数
        this.getParams(true);
    // 设置参数
    setParams() {
      let params = {};
      // 遍历参数属性并赋值
      for (let key in this.params) {
        let value = this.params[key];
        // 特殊值处理
        if (key == "GroupVolSorce" || key == "CurrentTyte") {
          value = value * 10;
        }
        params[key] = value;
      }
      // 等待框
      let loading = this.$layer.loading(1);
      // 请求后台
      this.$apis.system
        .setParams(params)
        .then((res) => {
          let rs = JSON.parse(res.data.result);
          if (rs.code == 1) {
            // 启动按钮可点击
            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("设置失败,设置请求异常!");
        });
    },
}
  },
  computed: {
    otherParams() {
      let batt = this.batt;
      let groupInfo =
        "单体数量:" +
        this.batt.MonCount +
        ";电压(V):" +
        this.batt.MonVolStd +
        ";容量(AH):" +
        this.batt.MonCapStd;
      return {
        groupName: batt.StationName,
        FBSDeviceId: batt.FBSDeviceId,
        groupInfo: groupInfo,
        GroupIndexInFBSDevice: this.batt.GroupIndexInFBSDevice + 1,
      };
    },
  },
  mounted() {
    // 获取参数
    this.getParams(true);
  },
};
</script>
<style scoped>
.params-container {
    padding: 8px;
    background-color: #ececec;
  padding: 8px;
  background-color: #ececec;
}
.form-footer {
    margin-top: 16px;
    margin-bottom: 16px;
    text-align: right;
  margin-top: 16px;
  margin-bottom: 16px;
  text-align: right;
}
.form-footer .three-btn {
    margin-left: 12px;
  margin-left: 12px;
}
</style>
</style>
src/pages/dataTest/realTime.vue
@@ -333,7 +333,7 @@
    import CircuitDiagram from "./CircuitDiagram";
    import ScienceBox from "../../components/ScienceBox";
    import DischargeDialogContent from "../../components/params/DischargeDialogContent";
    import SystemParams from "../../components//params/SystemParams";
    import SystemParams from "@/components/params/SystemParams";
    import CuringParams from "@/components/params/CuringParams";
    import OutlineCuringParams from "@/components/params/OutlineCuringParams";
    import RestartPlanParams from "@/components/params/RestartPlanParams";
@@ -2251,7 +2251,7 @@
            },
            isJhgd() {
                let batt = this.batt;
                return regEquipType(batt.FBSDeviceId, 'BTS9110');
                return regEquipType(batt.FBSDeviceId, ['BTS9110', 'equip61850']);
            }
        },
        created() {