he wei
2024-11-08 106374208e6e7265db3c00ddfa948c39b7c252ea
src/views/test/ytjRtInfo.vue
@@ -1,5 +1,5 @@
<script setup>
import { ref, computed, watch, onMounted } from "vue";
import { ref, computed, watch, onMounted, onActivated } from "vue";
import ycCard from "@/components/ycCard.vue";
import useWebSocket from "@/hooks/useWebSocket.js";
import bar from "@/components/echarts/bar2.vue";
@@ -8,6 +8,7 @@
import getPowerByUI from "@/assets/js/tools/getPowerByUI.js";
import toFixed from "@/assets/js/tools/toFixed.js";
import const_digits from "@/assets/js/const/const_digits";
import IconAvg from "@/components/icons/IconAvg.vue";
const { VOL, GROUPVOL, CURR_YT, CURR_JH } = const_digits;
const infoTab = ref(0);
@@ -84,6 +85,13 @@
  battVolChart.value?.updateChart(mons, vols);
}
onActivated(() => {
  let reg = /^1/;
  if (reg.test(props.devId)) {
    sendData(JSON.stringify({ devId: props.devId, devType: 1 }));
  }
});
onMounted(() => {
  // sendData(JSON.stringify({ devId: props.devId, devType: 1 }));
});
@@ -108,14 +116,35 @@
      <transition-group :duration="300" name="slide-left">
        <div class="tab-content test-content" v-if="infoTab == 0">
          <div class="state" v-if="rtDatas.devStates.isTesting">
            <div :class="['item', { active: rtDatas.devStates.isTesting && 2 == rtDatas.devStates.testType }]">
            <div
              :class="[
                'item',
                {
                  active:
                    rtDatas.devStates.isTesting &&
                    2 == rtDatas.devStates.testType,
                },
              ]"
            >
              充电测试
            </div>
            <div :class="['item', { active: rtDatas.devStates.isTesting && 1 == rtDatas.devStates.testType }]">
            <div
              :class="[
                'item',
                {
                  active:
                    rtDatas.devStates.isTesting &&
                    1 == rtDatas.devStates.testType,
                },
              ]"
            >
              放电测试
            </div>
          </div>
          <div class="stop-reason" v-else><span class="label">停止原因:</span>{{ rtDatas.devStates.stopReason }}</div>
          <div class="stop-reason" v-else>
            <span class="label">停止原因:</span
            >{{ rtDatas.devStates.stopReason }}
          </div>
          <div class="content">
            <div class="item item1">
              <div class="label">Umax</div>
@@ -130,11 +159,15 @@
              </div>
            </div>
            <div class="item">
              <div class="label">ΔU</div>
              <div class="value">{{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V</div>
              <div class="label">
                <el-icon><icon-avg class="avg-icon" /></el-icon>U
              </div>
              <div class="value">
                {{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V
              </div>
            </div>
            <div class="item-big">
              {{ toFixed(rtDatas.devStates.storageVoltage, VOL) }}
              {{ toFixed(rtDatas.devStates.storageVoltage, GROUPVOL) }}
              <div class="unit">V</div>
            </div>
@@ -152,6 +185,12 @@
              <div class="value">
                {{ rtDatas.devStates.testCapacity }}
                <div class="unit">AH</div>
              </div>
            </div>
            <div class="border border-center">
              <div class="i label">电芯压差</div>
              <div class="value">
                {{ rtDatas.devStates.diffBatteryVoltage }} mV
              </div>
            </div>
@@ -187,7 +226,9 @@
              </div>
            </div>
            <div class="item">
              <div class="label">ΔT</div>
              <div class="label">
                <el-icon><icon-avg class="avg-icon" /></el-icon>T
              </div>
              <div class="value">{{ rtDatas.devStates.avgMonTmp }}℃</div>
            </div>
          </div>
@@ -204,7 +245,9 @@
              {{ toFixed(rtDatas.devStates.minBatteryVoltage, VOL) }}V
            </div>
            <div class="label">平均值</div>
            <div class="value">{{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V</div>
            <div class="value">
              {{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V
            </div>
          </div>
          <div class="list-wrap posR">
            <div class="pos-full scroll">
@@ -241,7 +284,9 @@
              {{ toFixed(rtDatas.devStates.minBatteryVoltage, VOL) }}V
            </div>
            <div class="label">平均值</div>
            <div class="value">{{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V</div>
            <div class="value">
              {{ toFixed(rtDatas.devStates.avgMonVol, VOL) }}V
            </div>
          </div>
          <div class="chart-wrap">
            <bar ref="battVolChart" unit="V"></bar>
@@ -339,10 +384,10 @@
        text-align: center;
        background: #02a7f0;
        &.max {
          background: #d9001b;
          background: #438d29;
        }
        &.min {
          background: #f59a23;
          background: #dbd608;
        }
      }
    }
@@ -376,10 +421,10 @@
        text-align: center;
        background: #02a7f0;
        &.max {
          background: #d9001b;
          background: #438d29;
        }
        &.min {
          background: #f59a23;
          background: #dbd608;
        }
      }
    }
@@ -411,10 +456,10 @@
            padding: 2px 10px;
            border-radius: 6px;
            &.max {
              background: #d9001b;
              background: #438d29;
            }
            &.min {
              background: #f59a23;
              background: #dbd608;
            }
          }
        }
@@ -445,7 +490,8 @@
    .stop-reason {
      // margin-left: 4em;
      text-align: center;
      color: #0ff;
      /* 定义动画名称和持续时间 */
      animation: colorChange 3s infinite;
      font-weight: bold;
      .label {
        margin-right: 0.4em;
@@ -536,8 +582,15 @@
        &.border2 {
          grid-column: 4 e("/") 5;
        }
        &.border-center {
          grid-column: 3 e("/") 4;
          width: 9em;
        }
        .i {
          margin-top: 0.2em;
          &.label {
            font-size: 16px;
          }
        }
      }
      .center {
@@ -546,7 +599,7 @@
        justify-content: center;
        align-items: center;
        place-self: stretch;
        grid-area: 1 e("/") 3 e("/") 6 e("/") 4;
        grid-area: 1 e("/") 3 e("/") 5 e("/") 4;
        .i {
          height: 150px;
          width: 100%;
@@ -617,4 +670,15 @@
    transform: translateX(0);
  }
}
/* 使用@keyframes定义动画 */
@keyframes colorChange {
  0%,
  100% {
    color: red;
  } /* 开始和结束时的颜色 */
  50% {
    color: #0ff;
  } /* 中间状态的颜色 */
}
</style>