he wei
2024-10-12 e29c68a157aa51ea7ec8b11d755216d8659a4c1c
U 测试过程中的修改
10个文件已修改
185 ■■■■ 已修改文件
src/views/datas/dataHis.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/api.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/index.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/jhyRtInfo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/paramContent.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/testBatch.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/testDetails.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/ytjRtInfo.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/test/ytjTestDetails.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datas/dataHis.vue
@@ -21,6 +21,10 @@
const monChart = ref();
const groupChart = ref();
const slideValue = ref(0);
const testDataFormated = reactive({
  labels: [],
  datas: [],
});
const testRecordList = ref([]);
const testDatas = ref([]);
@@ -131,8 +135,9 @@
    monBarVol.labels.push(monNum_text);
    monBarVol.datas.push(item.monVol);
  });
  groupChart.value.updateChart(labels, groupVols);
  testDataFormated.datas = monVols;
  testDataFormated.labels = labels;
  setBarChart(monVols);
}
// 根据百分比获取显示的数据的笔数
@@ -144,7 +149,8 @@
}
function handleSlider(params) {
  updateChart(testDatas.value);
  // updateChart(testDatas.value);
  setBarChart(testDataFormated.datas);
}
// 设置柱状图
@@ -228,6 +234,17 @@
    .catch((err) => {
      console.log(err);
    });
}
function formatTooltip(params) {
  let testTimeLong = testDataFormated.labels;
  let index = getDataIndex(testTimeLong.length, params);
  let test_long = formatSeconds(0);
  if (index != -1) {
    // test_long = formatSeconds(testTimeLong[index]);
    test_long = testTimeLong[index];
  }
  return test_long;
}
onMounted(() => {
@@ -332,7 +349,7 @@
          <el-slider
            class="slider"
            v-model="slideValue"
            :show-tooltip="false"
            :format-tooltip="formatTooltip"
            :disabled="!canSlide"
            @input="handleSlider"
          />
src/views/home/index.vue
@@ -70,7 +70,9 @@
        devTestByWeek: { actm, a200 },
      },
    } = JSON.parse(message.value);
    Object.keys(actm).forEach((v) => {
    Object.keys(actm).sort((a, b)=>{
      return new Date(a).getTime() - new Date(b).getTime();
    }).forEach((v) => {
      let item = actm[v];
      // 2 放电  3充电
      jhyData[0].data.push(item[3]);
@@ -78,7 +80,9 @@
      dates.push(v);
    });
    Object.keys(a200).forEach((v) => {
    Object.keys(a200).sort((a,b) => {
      return new Date(a).getTime() - new Date(b).getTime();
    }).forEach((v) => {
      let item = actm[v];
      // 2 放电  3充电
      ytjData[0].data.push(item[3]);
src/views/test/api.js
@@ -56,6 +56,17 @@
};
/**
 * 停止一体机
 */
export const stopA200 = (devId) => {
  return axios({
    method: "GET",
    url: "a200param/stopA200Param",
    params: { devId },
  });
};
/**
 * 批量启动一体机
 */
export const startA200ParamPl = (type, devIds) => {
@@ -67,6 +78,17 @@
  });
};
/**
 * 批量停止一体机
 */
export const stopA200ParamPl = (devIds) => {
  return axios({
    method: "POST",
    url: "a200param/stopA200ParamPl",
    data: devIds,
  });
};
// ====================
/**
src/views/test/index.vue
@@ -11,7 +11,7 @@
import jhParamContent from "./jhParamContent.vue";
import ytjRtInfo from "./ytjRtInfo.vue";
import jhyRtInfo from "./jhyRtInfo.vue";
import { controllerActmParam } from "./api";
import { controllerActmParam, stopA200 } from "./api";
import useElement from "@/hooks/useElement.js";
@@ -99,6 +99,28 @@
  }
});
function pauseYtj() {}
function stopYtj() {
  let loading = $loading();
  stopA200(currentDevId.value)
    .then((res) => {
      loading.close();
      let { code, data, msg } = res.data;
      if (200 == code) {
        $message.success("操作成功");
        console.log(data);
      } else {
        $message.error("操作失败:" + msg);
      }
    })
    .catch((err) => {
      loading.close();
      $message.error("操作失败:" + err);
      console.log(err);
    });
}
function chooseDev(params) {
  currentDevId.value = params.devId;
}
@@ -155,8 +177,24 @@
            size="small"
            :disabled="!currentDev.devOnline"
            class="btn-start"
            v-if="!currentDev.state?.isTesting"
            @click="test"
            >启动测试</el-button
          >
          <!-- <el-button
            size="small"
            :disabled="!currentDev.devOnline"
            class="btn-start"
            @click="pauseYtj"
            >暂停测试</el-button
          > -->
          <el-button
            size="small"
            :disabled="!currentDev.devOnline"
            v-else
            class="btn-start"
            @click="stopYtj"
            >停止测试</el-button
          >
        </template>
        <template v-else-if="currentDev.state">
@@ -263,7 +301,12 @@
      v-if="1 == devType"
      :devId="currentDevId"
    ></ytj-rt-info>
    <jhy-rt-info class="p-content" v-else :onlyOneGroup="onlyOneGroup" :devId="currentDevId"></jhy-rt-info>
    <jhy-rt-info
      class="p-content"
      v-else
      :onlyOneGroup="onlyOneGroup"
      :devId="currentDevId"
    ></jhy-rt-info>
    <!-- 弹窗 -->
    <el-dialog
      title="设置测试参数"
@@ -714,8 +757,6 @@
      }
    }
  }
}
.tab-container {
  height: 100%;
src/views/test/jhyRtInfo.vue
@@ -228,7 +228,7 @@
                  stripe
                  height="100%"
                  size="small"
                  :data="rtDatas['monStates0']"
                  :data="rtDatas['monStates' + idx]"
                  style="width: 100%"
                >
                  <el-table-column
src/views/test/paramContent.vue
@@ -286,7 +286,7 @@
function setParams() {
  let _params;
  // 判断测试类型 是充电还是放电
  if (params.testType == 0) {
  if (params.testType == 1) {
    _params = {
      nominalCapacity: 0,
      testType: 0,
@@ -468,7 +468,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="放电时间(m)" prop="dischargeTime">
          <el-form-item label="放电时间(s)" prop="dischargeTime">
            <el-input v-model="params.dischargeTime"></el-input>
          </el-form-item>
        </el-col>
@@ -535,7 +535,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="充电时间(m)" prop="chargeTime">
          <el-form-item label="充电时间(s)" prop="chargeTime">
            <el-input v-model="params.chargeTime"></el-input>
          </el-form-item>
        </el-col>
src/views/test/testBatch.vue
@@ -6,7 +6,10 @@
import jhParamContent from "./jhParamContent.vue";
import { useRoute, useRouter } from "vue-router";
import { cancelContPl, controllerActmParam } from "./api.js";
import { cancelContPl, controllerActmParam, stopA200ParamPl } from "./api.js";
import useElement from "@/hooks/useElement.js";
const { $alert, $loading, $message, $confirm } = useElement();
import useDevsRt from "@/hooks/useDevsRt";
const { list: devList } = useDevsRt();
@@ -167,6 +170,43 @@
  testVisible.value = true;
}
function stopTest(groupIdx) {
  let devIds = devs.value.map((v) => v.devId);
  let loading = $loading();
  stopA200ParamPl(devIds)
    .then((res) => {
      let { code, data, data2 } = res.data;
      loading.close();
      let failList = [];
      let successList = [];
      Object.keys(data2).forEach((v) => {
        if (200 == data2[v].code) {
          successList.push(v);
        } else {
          failList.push(v);
        }
      });
      if (code && data && successList.length) {
        $message.success("操作成功");
        if (failList.length) {
          let failNames = props.devs
            .filter((v) => failList.some((vv) => vv == v.devId))
            .map((v) => v.devIdcode);
          $alert(`操作失败的设备列表:${failNames.join(", ")}。`);
        }
        close();
      } else {
        $message.error("操作失败");
      }
    })
    .catch((err) => {
      loading.close();
      $message.error("操作失败");
      console.log(err);
    });
}
function controlTest(groupIdx, ctrlType) {
  //  * 2暂停 * 3继续 * 4 停止
  let loading = $loading();
@@ -188,13 +228,12 @@
    });
}
onMounted(() => {
  filterList();
});
onMounted(() => {});
onActivated(() => {
  if ($route.query.devType) {
    devType.value = $route.query.devType;
    devType.value = $route.query.devType * 1;
  }
  filterList();
});
</script>
@@ -274,6 +313,13 @@
            class="btn-start"
            @click="test"
            >启动测试</el-button
          >
          <el-button
            size="small"
            :disabled="!selectData[devType].length"
            class="btn-start"
            @click="stopTest"
            >停止测试</el-button
          >
        </template>
        <template v-else>
@@ -590,6 +636,9 @@
  .control-group {
    margin-top: 8px;
    margin-right: 8px;
    &.grp1 {
      margin-left: 8px;
    }
    cursor: pointer;
    & > :deep(span) {
      color: #000;
src/views/test/testDetails.vue
@@ -9,14 +9,16 @@
// const type = $route.query.type;
const type = computed(() => $route.query.type);
const devId = computed(() => $route.query.devId);
console.log("type", type, "=============");
// console.log("type", type, "=============");
onMounted(() => {});
</script>
<template>
  <template v-if="devId">
  <ytj-test-details :devId="devId" v-if="1 == type"></ytj-test-details>
  <jhy-test-details  :devId="devId" v-else></jhy-test-details>
</template>
</template>
<style scoped lang="less"></style>
src/views/test/ytjRtInfo.vue
@@ -194,14 +194,14 @@
          <div class="info">
            <div class="label">最大值</div>
            <div class="value max">
              {{ rtDatas.devStates.minBatteryVoltage }}V
              {{ rtDatas.devStates.maxBatteryVoltage }}V
            </div>
            <div class="label">最小值</div>
            <div class="value min">
              {{ rtDatas.devStates.minBatteryVoltage }}V
            </div>
            <div class="label">平均值</div>
            <div class="value">{{ rtDatas.devStates.minBatteryVoltage }}V</div>
            <div class="value">{{ rtDatas.devStates.avgMonVol }}V</div>
          </div>
          <div class="list-wrap posR">
            <div class="pos-full scroll">
@@ -215,7 +215,7 @@
                <div
                  :class="[
                    'value',
                    { max: 3 == item.monNum, min: 7 == item.monNum },
                    { max: rtDatas.devStates.maxBatteryVoltage == item.monVol, min: rtDatas.devStates.minBatteryVoltage == item.monVol },
                  ]"
                >
                  {{ item.monVol }} V
@@ -252,7 +252,7 @@
              <div class="card">
                <div class="row" v-for="row in item.list" :key="row.num">
                  <div class="time">{{ row.time }}</div>
                  <div class="content">充电开始</div>
                  <div class="content">{{ row.eventStr }}</div>
                </div>
              </div>
            </el-timeline-item>
src/views/test/ytjTestDetails.vue
@@ -132,13 +132,13 @@
          <div class="value">{{ formatMinutes(params.chargeTime) }}</div>
          <div class="label">预充容量限制</div>
          <div class="value">
            {{ ["关闭", "开启"][params.isChargeCapacityEnable] }}
            {{ ["关闭", "开启"][params.isChargeCapacityEnable * 1] }}
          </div>
          <div class="label">预充容量</div>
          <div class="value">{{ params.chargeCapacity }}AH</div>
          <div class="label">单串上限限制</div>
          <div class="value">
            {{ ["关闭", "开启"][params.isMaxBatteryVoltageEnable] }}
            {{ ["关闭", "开启"][params.isMaxBatteryVoltageEnable * 1] }}
          </div>
          <div class="label">单串上限</div>
          <div class="value">{{ params.maxBatteryVoltage }}V</div>