longyvfengyun
2024-08-01 51b64e0927465d2f4903a9f402a47d90ebc1336a
续航修改
1个文件已添加
5个文件已修改
162 ■■■■■ 已修改文件
src/assets/js/config.module.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/GetMonomerCap.js 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/tools/getXuHang.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/history.vue 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataTest/realTime.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.module.js
@@ -8,28 +8,28 @@
  uKey: {
    label: "uKey",
    des: "用户需要通过插入uKey才可以登录",
    value: true,
    value: false,
  },
  face: {
    // 开启人脸识别必须要开启uKey
    label: "人脸识别",
    des: "用户可以直接通过人脸识别登录",
    value: true, // 开启这个同时需要询问运维人员,需要不需要开启动放电和重启的人脸
    value: false, // 开启这个同时需要询问运维人员,需要不需要开启动放电和重启的人脸
  },
  dischargeByFace: {
    label: "启动放电添加人脸识别",
    des: "启动充放电测试使用人脸识别",
    value: true,
    value: false,
  },
  setParamsByFace: {
    label: "设置放电参数添加人脸识别",
    des: "设置放电参数时需要进行人脸识别",
    value: true,
    value: false,
  },
  restartDevByFace: {
    label: "重启设备添加人脸识别",
    des: "开启后重启设备时需要进行人脸识别",
    value: true,
    value: false,
  },
  autograph: {
    label: "签名",
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";
/**
 * 获取剩余容量/实际容量
@@ -7,33 +7,34 @@
 * @param   {[Number]}  HourRate      放电小时率
 * @param   {[Number]}  SumAH         测试容量
 * @param   {[Number]}  MaxMonomerVol   单体电压最大值
 * @param   {[Number]}  MonomerVol      单体电压最大值
 * @param   {[Number]}  MonomerVol      单体电压最小值
 * @param   {[Number]}  MonomerVolType  电池标称电压
 * @param   {[Number]}  CapType         容量类型(定值是常量)(1:实际容量,0剩余容量)
 *
 * @return  {[Number]}                  [return description]
 */
function GetMonomerCap(STDAH, HourRate, SumAH, MaxMonomerVol, MonomerVol, MonomerVolType, CapType) {
    if ((MaxMonomerVol - MonomerVolType * 0.9) <= 0)
        return 0;
    if (SumAH < 0)
        SumAH *= (-1);
    let tmp_cap;
    tmp_cap = MonomerVol - MonomerVolType * 0.9;
    tmp_cap *= (STDAH - SumAH * N_TO_10H(HourRate));
    let dt_vol = MaxMonomerVol - MonomerVolType * 0.9;
    if (dt_vol < 0.01)
        dt_vol = 0.01;
    tmp_cap = tmp_cap / dt_vol;
    if (tmp_cap < 0)
        tmp_cap = 0;
function GetMonomerCap(
  STDAH,
  HourRate,
  SumAH,
  MaxMonomerVol,
  MonomerVol,
  MonomerVolType,
  CapType
) {
  if (MaxMonomerVol - MonomerVolType * 0.9 <= 0) return 0;
  if (SumAH < 0) SumAH *= -1;
  let tmp_cap;
  tmp_cap = MonomerVol - MonomerVolType * 0.9;
  tmp_cap *= STDAH - SumAH * N_TO_10H(HourRate);
  let dt_vol = MaxMonomerVol - MonomerVolType * 0.9;
  if (dt_vol < 0.01) dt_vol = 0.01;
  tmp_cap = tmp_cap / dt_vol;
  if (tmp_cap < 0) tmp_cap = 0;
    if (CapType == 0)
        return tmp_cap;
    else if (CapType == 1)
        return (tmp_cap + SumAH * N_TO_10H(HourRate));
    else
        return ((tmp_cap + SumAH * N_TO_10H(HourRate)) * 100 / STDAH);
  if (CapType == 0) return tmp_cap;
  else if (CapType == 1) return tmp_cap + SumAH * N_TO_10H(HourRate);
  else return ((tmp_cap + SumAH * N_TO_10H(HourRate)) * 100) / STDAH;
}
export default GetMonomerCap;
export default GetMonomerCap;
src/assets/js/tools/getXuHang.js
New file
@@ -0,0 +1,8 @@
function getXuHang(real_cap, loadCurr) {
  if (real_cap === 0 || loadCurr === 0) {
    return 0;
  } else {
    return real_cap / ((loadCurr + (loadCurr * 53.5) / 43.2) / 2);
  }
}
export default getXuHang;
src/views/dataTest/history.vue
@@ -41,10 +41,13 @@
          class="item"
          effect="dark"
          content="报表导出"
          placement="bottom">
          <i class="el-icon-printer"
             @click="showReportDialog"
             style="font-size: 22px"></i>
          placement="bottom"
        >
          <i
            class="el-icon-printer"
            @click="showReportDialog"
            style="font-size: 22px"
          ></i>
        </el-tooltip>
      </div>
      <div slot="box-tools" class="box-tools">
@@ -52,10 +55,13 @@
          class="item"
          effect="dark"
          content="数据导出"
          placement="bottom">
          <i class="iconfont el-icon-daochu"
          placement="bottom"
        >
          <i
            class="iconfont el-icon-daochu"
            @click="showDataDifferDialog"
            style="font-size: 24px"></i>
            style="font-size: 24px"
          ></i>
        </el-tooltip>
      </div>
      <div slot="box-tools" class="box-tools">
@@ -488,12 +494,15 @@
      :close-on-click-modal="false"
      top="0"
      class="dialog-center"
      :modal-append-to-body="false">
      :modal-append-to-body="false"
    >
      <report-params-setting
        :batt="batt" v-if="reportParamsDialog"
        :batt="batt"
        v-if="reportParamsDialog"
        @success="handleSuccessReport"
        :record-time="test_record.value"
        :visible.sync="reportParamsDialog"></report-params-setting>
        :visible.sync="reportParamsDialog"
      ></report-params-setting>
    </el-dialog>
  </flex-layout>
</template>
@@ -514,9 +523,10 @@
  searchBattTestData,
  searchHistory,
  addStandardLine,
  getTestParam, exportReport,
  getTestParam,
  exportReport,
} from "./js/history";
import { searchParam as searchParam1 } from "@/views/pageSetting/js/api"
import { searchParam as searchParam1 } from "@/views/pageSetting/js/api";
import {
  formatSeconds,
@@ -589,6 +599,7 @@
import ReportParamsSetting from "@/views/dataTest/components/reportParamsSetting.vue";
import interceptDataByTime from "@/assets/js/tools/interceptDataByTime";
import getExportExcelUrl from "@/assets/js/tools/getExportExcelUrl";
import getXuHang from "@/assets/js/tools/getXuHang";
const {
  cap: CAP,
  vol: VOL,
@@ -1481,7 +1492,9 @@
                let lastRecordT = data[data.length - 1].recordTime;
                let cutTime = this.cutTime * 60 * 1000;
                let cutStamp = new Date(lastRecordT).getTime() - cutTime;
                data = data.filter((v) => new Date(v.recordTime).getTime() < cutStamp);
                data = data.filter(
                  (v) => new Date(v.recordTime).getTime() < cutStamp
                );
              }
            }
            // console.log(data.length, '2');
@@ -1736,7 +1749,21 @@
          batt.monVolStd,
          1
        );
        let xuhang = batt.loadCurr ? real_cap / batt.loadCurr : 0;
        console.log(
          "实际容量:" +
            batt.monCapStd +
            "小时率:" +
            GetHourRate(batt.monCapStd, avg_curr) +
            "已测容量:" +
            list.testCap +
            "最大:" +
            batNum.max +
            "最小:" +
            batNum.min +
            "标称电压:" +
            batt.monVolStd
        );
        let xuhang = getXuHang(real_cap, batt.loadCurr);
        this.top.xuhang = xuhang ? sethoubeiTime(xuhang) : "---";
      }
    },
@@ -1812,24 +1839,29 @@
      this.reportParamsDialog = true;
    },
    async handleSuccessReport(params) {
      let data = {...params};
      let data = { ...params };
      let dataList = allData.dataList;
      console.log(dataList);
      let list = interceptDataByTime(params.dataCollectionInterval*3600, dataList);
      let list = interceptDataByTime(
        params.dataCollectionInterval * 3600,
        dataList
      );
      console.log(list);
      data.testRecordCount = list[0].testRecordCount;
      data.recordNums = list.map(item=>{
        return item.recordNum;
      }).join(',');
      data.headName = data.headName.join(',');
      data.groupPeoples = data.groupPeoples.join(',');
      data.recordNums = list
        .map((item) => {
          return item.recordNum;
        })
        .join(",");
      data.headName = data.headName.join(",");
      data.groupPeoples = data.groupPeoples.join(",");
      const loading = this.$layer.loading();
      try{
      try {
        let res = await exportReport(data);
        this.$layer.close(loading);
        this.reportParamsDialog = false;
        const nameList = res.headers["content-disposition"];
        const fileName = nameList.split('=')[1];
        const fileName = nameList.split("=")[1];
        let blob = res.data;
        let url = window.URL.createObjectURL(blob);
        let a = document.createElement("a");
@@ -1837,7 +1869,7 @@
        a.download = decodeURIComponent(fileName);
        a.click();
        window.URL.revokeObjectURL(url);
      }catch (e) {
      } catch (e) {
        this.$layer.close(loading);
        this.$layer.msg("导出失败");
        console.log(e);
@@ -2520,8 +2552,16 @@
        const h = this.$createElement;
        this.$confirm(
          h("div", null, [
            h("p", null, "标称容量:" + searchParams.moncapstd.toHold(CAP) + "AH"),
            h("p", null, "标称电压:" + searchParams.monvolstd.toHold(VOL) + "V"),
            h(
              "p",
              null,
              "标称容量:" + searchParams.moncapstd.toHold(CAP) + "AH"
            ),
            h(
              "p",
              null,
              "标称电压:" + searchParams.monvolstd.toHold(VOL) + "V"
            ),
            h("p", null, "电池品牌:" + searchParams.battproducer),
            h("p", null, "电池型号:" + searchParams.battmodel),
            h("p", null, "小时率:" + searchParams.note),
src/views/dataTest/realTime.vue
@@ -1298,6 +1298,7 @@
import CheckFace from "@/components/checkFace.vue";
import const_61852 from "@/assets/js/const/const_61852";
import DevAlarmParams from "@/views/dataTest/components/DevAlarmParams.vue";
import getXuHang from "@/assets/js/tools/getXuHang";
const WSMixin = createWs("RealTime");
@@ -3972,7 +3973,7 @@
            batt.monVolStd,
            1
          );
          let xuHang = batt.loadCurr ? real_cap / batt.loadCurr : 0;
          let xuHang = getXuHang(real_cap, batt.loadCurr);
          this.lastTimeTestInfo.realCap = real_cap.toHold(CAP) + "Ah";
          this.lastTimeTestInfo.xuHang = xuHang ? sethoubeiTime(xuHang) : "---";
          // 剩余容量
vue.config.js
@@ -39,7 +39,7 @@
    },
  },
  devServer: {
    https: true,
    https: false,
  },
  chainWebpack(config) {
    // it can improve the speed of the first screen, it is recommended to turn on preload