he wei
2024-11-09 5cc9eb2d302ffe6218221208a28b60f91b57e41e
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([]);
@@ -45,6 +49,8 @@
function chooseDev(params) {
  currentDevId.value = params.devId;
  testRecordCode.value = undefined;
  testDatas.value = [];
  updateChart([]);
  getList();
}
@@ -70,20 +76,57 @@
          let type = "";
          switch (v) {
            case "chr":
              type = "充电测试";
              type = devType.value == 1 ? "充电测试" : "充电";
              break;
            case "dis":
              type = "放电测试";
              type = devType.value == 1 ? "放电测试" : "放电";
              break;
            case "jun":
              type = "均衡";
              break;
          }
          let label = type;
          let value = v;
          let children = arr.map((vv) => ({
            ...vv,
            label: vv.testStarttime,
            value: vv.testRecordCount,
          }));
          return { label, value, disabled: !arr.length, children };
          let children = [];
          let count = arr.length;
          if (devType.value == 1) {
            children = arr.map((vv) => ({
              ...vv,
              label: vv.testStarttime,
              value: vv.testRecordCount,
            }));
          } else {
            // 添加一级 区分是组1还是组2
            let _obj = {};
            for (let i = arr.length; i--; ) {
              let item = arr[i];
              let idx = item.battIdx;
              _obj[idx] = _obj[idx] || [];
              _obj[idx].push(item);
            }
            Object.keys(_obj).forEach((vv) => {
              let item = _obj[vv];
              let idx = `组${vv * 1 + 1}`;
              let _count = item.length;
              children.push({
                label: idx,
                  count: _count,
                value: `group_${vv}`,
                children: item.map((vvv) => ({
                  ...vvv,
                  label: vvv.testStarttime,
                  value: vvv.testRecordCount,
                })),
              });
            });
            // children = arr.map((vv) => ({
            //   ...vv,
            //   label: vv.testStarttime,
            //   value: vv.testRecordCount,
            // }));
          }
          return { label, value, count, disabled: !arr.length, children };
        });
      }
      testRecordList.value = _list;
@@ -95,13 +138,13 @@
const canSlide = computed(() => !!testDatas.value.length);
const testInf = computed(() => {
  if (testDatas.value.length) {
    return testDatas.value[0];
  } else {
    return {};
  }
});
// const testInf = computed(() => {
//   if (testDatas.value.length) {
//     return testDatas.value[0];
//   } else {
//     return {};
//   }
// });
function updateChart(data) {
  let labels = [],
@@ -131,8 +174,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,14 +188,15 @@
}
function handleSlider(params) {
  updateChart(testDatas.value);
  // updateChart(testDatas.value);
  setBarChart(testDataFormated.datas);
}
// 设置柱状图
function setBarChart(dataList) {
  if (!dataList.length) {
    return false;
  }
  // if (!dataList.length) {
  //   return false;
  // }
  let unit = "V";
  let fixed = 3;
@@ -160,7 +205,7 @@
  let index = getDataIndex(dataList.length, slideValue.value);
  let labels = [],
    datas = [];
  if (index != -1) {
  if (dataList.length && index != -1) {
    let data = dataList[index];
    let batNum = getBarNum(data);
    title =
@@ -180,8 +225,8 @@
}
function selectRecord() {
  let res = testRecordCode.value[1];
  console.log("res", res, "=============");
  let res = testRecordCode.value[testRecordCode.value.length - 1];
  // console.log("res", res, "=============");
  getRecordInf(currentDevId.value, res)
    .then((res) => {
@@ -230,6 +275,17 @@
    });
}
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(() => {
  if (resList.length) {
    typeChange();
@@ -258,7 +314,7 @@
          size="default"
          is-button
        >
          <el-radio-button :value="1">充放电一体机</el-radio-button>
          <el-radio-button :value="1">充放电测试仪</el-radio-button>
          <el-radio-button :value="2">均衡测试仪</el-radio-button>
        </el-radio-group>
      </div>
@@ -284,7 +340,7 @@
          @change="selectRecord"
          ><template #default="{ node, data }">
            <span>{{ data.label }}</span>
            <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
            <span v-if="!node.isLeaf"> ({{ data.count }}) </span>
          </template></el-cascader
        >
        <div class="info-title">
@@ -298,13 +354,17 @@
        </div>
        <div class="info">
          <div class="label">测试时间</div>
          <div class="content">{{ testInf.testStarttime }}</div>
          <div class="content">{{ testObj.testStarttime }}</div>
          <div class="label">测试时长</div>
          <div class="content">{{ formatSeconds(testObj.testTimelong) }}</div>
          <div class="label">数据类型</div>
          <div class="content">
            {{ { 2: "放电数据", 3: "充电数据" }[testInf.testType] }}
            {{
              { 2: "充电数据", 3: "放电数据", 4: "均衡数据" }[testObj.testType]
            }}
          </div>
          <div class="label">停止原因</div>
          <div class="content">{{ testObj.stopTypeReason }}</div>
          <!-- <div class="label">标称容量</div>
          <div class="content">4444444</div>
          <div class="label">单体数量</div>
@@ -332,7 +392,7 @@
          <el-slider
            class="slider"
            v-model="slideValue"
            :show-tooltip="false"
            :format-tooltip="formatTooltip"
            :disabled="!canSlide"
            @input="handleSlider"
          />
@@ -350,7 +410,7 @@
  .p-left {
    width: 340px;
    background: #1a585d;
    background: radial-gradient(#1a585d10, #1a585d80);
    display: flex;
    flex-direction: column;
    .filter {
@@ -472,7 +532,7 @@
    }
    .item {
      // background: #000;
      background: #1a585d;
      background: radial-gradient(#1a585d10, #1a585d80);
    }
    .card-content {
      height: 100%;