From 106374208e6e7265db3c00ddfa948c39b7c252ea Mon Sep 17 00:00:00 2001
From: he wei <858544502@qq.com>
Date: 星期五, 08 十一月 2024 11:19:26 +0800
Subject: [PATCH] U 修改批量操作

---
 src/views/test/ytjRtInfo.vue    |   82 ++++++++++---
 src/views/test/testBatch.vue    |  190 ++++++++++++++++++++++++-------
 src/views/login/index.vue       |    2 
 src/views/test/devCard.vue      |   35 +++--
 src/hooks/useElement.js         |    1 
 src/views/test/paramContent.vue |   14 +-
 6 files changed, 237 insertions(+), 87 deletions(-)

diff --git a/src/hooks/useElement.js b/src/hooks/useElement.js
index ca3bcbc..9ff5857 100644
--- a/src/hooks/useElement.js
+++ b/src/hooks/useElement.js
@@ -7,6 +7,7 @@
     ElMessageBox.confirm(title, "绯荤粺鎻愮ず", {
       confirmButtonText: "纭畾",
       type: "warning",
+      showCancelButton: false,
       center: true,
     })
       .then(() => {
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 5e974d0..c5d0eb3 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -79,7 +79,7 @@
           setId(res.data2.uid);
           setName(res.data2.uname);
 
-          // TODO 瀵嗙爜瑕佸姞瀵� 鍙栧嚭鍚庡啀瑙e瘑
+          // 鏄惁璁颁綇瀵嗙爜
           if (remember.value) {
             add();
           } else {
diff --git a/src/views/test/devCard.vue b/src/views/test/devCard.vue
index a86dc3a..18bdf4b 100644
--- a/src/views/test/devCard.vue
+++ b/src/views/test/devCard.vue
@@ -3,6 +3,10 @@
 import { ref, computed } from "vue";
 import formatSeconds from "@/assets/js/tools/formatSeconds";
 
+import toFixed from "@/assets/js/tools/toFixed.js";
+import const_digits from "@/assets/js/const/const_digits";
+const { VOL, GROUPVOL, CURR_YT, CURR_JH } = const_digits;
+
 const props = defineProps({
   devIdcode: {
     type: [String, Number],
@@ -17,20 +21,25 @@
   info: {
     type: Object,
     required: true,
-  }
+  },
 });
 
 const testStates = computed(() => {
   if (1 == props.devType) {
-    return ["--", "鏀剧數娴嬭瘯", "鍏呯數娴嬭瘯"][props.info.state?.testType];
+    if (props.info.state.testPause) {
+      return "鏆傚仠涓�";
+    } else if (props.info.state.isTesting) {
+      return ["--", "鏀剧數娴嬭瘯", "鍏呯數娴嬭瘯"][props.info.state?.testType];
+    } else {
+      return "--";
+    }
   } else {
-    let states = ["鍏呯數", "鏀剧數", "鍧囪 "];
-    let [res1, res2] = [0, 1].map((v) =>
-      props.info.state
-        ? states[props.info.state[v].workMode] || "--"
-        : "--"
-    );
-    return `缁�1:${res1}, 缁�2: ${res2}`;
+    // let states = ["鍏呯數", "鏀剧數", "鍧囪 "];
+    // let [res1, res2] = [0, 1].map((v) =>
+    //   props.info.state ? states[props.info.state[v].workMode] || "--" : "--"
+    // );
+    let [res1, res2] = [0, 1].map((v) => props.info.state[v].moduleStatus);
+  return `缁�1:${res1}, 缁�2: ${res2}`;
   }
 });
 </script>
@@ -59,11 +68,11 @@
         <div class="info">
           <template v-if="1 == props.devType">
             <div class="item">
-              {{ info.state.storageVoltage }}V
+              {{ toFixed(info.state.storageVoltage, GROUPVOL) }}V
               <div class="link"></div>
             </div>
             <div class="item">
-             {{ info.state.testCurrent }}A
+              {{ toFixed(info.state.testCurrent, CURR_YT) }}A
               <div class="link"></div>
             </div>
             <div class="item">
@@ -104,7 +113,9 @@
         {{ onLine ? "鍦ㄧ嚎" : "绂荤嚎" }}
       </div>
       <div class="wrap" v-else>
-        <div class="workstate">{{ info.state.isTesting ? testStates : '--' }}</div>
+        <div class="workstate">
+          {{ testStates }}
+        </div>
         <icon-arrow-right class="icon"></icon-arrow-right>
       </div>
     </div>
diff --git a/src/views/test/paramContent.vue b/src/views/test/paramContent.vue
index 5d13399..9e4388e 100644
--- a/src/views/test/paramContent.vue
+++ b/src/views/test/paramContent.vue
@@ -392,13 +392,13 @@
         }
       });
       if (code && data && successList.length) {
-        console.log(
-          "failList",
-          failList,
-          "successList",
-          successList,
-          "============="
-        );
+        // console.log(
+        //   "failList",
+        //   failList,
+        //   "successList",
+        //   successList,
+        //   "============="
+        // );
         list.successList = successList;
         $message.success("鎿嶄綔鎴愬姛");
         if (failList.length) {
diff --git a/src/views/test/testBatch.vue b/src/views/test/testBatch.vue
index 923d9ef..e17ce52 100644
--- a/src/views/test/testBatch.vue
+++ b/src/views/test/testBatch.vue
@@ -7,7 +7,12 @@
 import { useRoute, useRouter } from "vue-router";
 import battCountContent from "./battCountContent.vue";
 
-import { cancelContPl, controllerActmParam, stopA200ParamPl, pauseA200ParamPl } from "./api.js";
+import {
+  cancelContPl,
+  controllerActmParam,
+  stopA200ParamPl,
+  pauseA200ParamPl,
+} from "./api.js";
 
 import useElement from "@/hooks/useElement.js";
 const { $alert, $loading, $message, $confirm } = useElement();
@@ -38,6 +43,80 @@
     2: getItem(2),
   };
 });
+
+// TODO  鍧囪 浠湁鍑犵粍  鍙栭�変腑鍒楄〃涓涓�鍙板湪绾跨殑璁惧鐨勬暟鎹�
+const onlyOneGroup = computed(() => {
+  if (
+    selectData.value[2].length == 0 ||
+    !selectData.value[2].filter((v) => v.devOnline == 1).length
+  ) {
+    return true;
+  }
+  return (
+    selectData.value[2].filter((v) => v.devOnline == 1)[0].state[0]
+      .batteryCount == 1
+  );
+});
+
+// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鍏叡鏂规硶
+function computeYT(someFn) {
+  return computed(() => {
+    let _type = devType.value;
+    if (
+      1 != _type ||
+      !selectData.value[1].filter((v) => v.devOnline == 1).length
+    ) {
+      return false;
+    } else {
+      return selectData.value[1]
+        .filter((v) => v.devOnline == 1)
+        .some(someFn);
+    }
+  });
+}
+// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鍚姩
+const canStartYT = computeYT((v) => v.state.isTesting == 0);
+// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鏆傚仠
+const canPauseYT = computeYT((v) => v.state.isTesting == 1 && v.state.testPause == 0);
+// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 缁х画
+const canContinueYT = computeYT((v) => v.state.testPause == 1);
+// 涓�浣撴満 鎸夐挳鍙敤鎺у埗 鍋滄
+const canStopYT = computeYT((v) => v.state.isTesting == 1);
+
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍏叡鏂规硶
+function computeJH(someFn) {
+  return computed(() => {
+    let _type = devType.value;
+    if (
+      2 != _type ||
+      !selectData.value[2].filter((v) => v.devOnline == 1).length
+    ) {
+      return false;
+    } else {
+      return selectData.value[2]
+        .filter((v) => v.devOnline == 1)
+        .some(someFn);
+    }
+  });
+}
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍚姩缁�1
+const canStartJH1 = computeJH((v) => v.state[0].isTesting == 0);
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍚姩缁�2
+const canStartJH2 = computeJH((v) => v.state[1].isTesting == 0);
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鏆傚仠缁�1
+const canPauseJH1 = computeJH((v) => v.state[0].isTesting == 1 && v.state[0].isTestPause == 0);
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鏆傚仠缁�2
+const canPauseJH2 = computeJH((v) => v.state[1].isTesting == 1 && v.state[1].isTestPause == 0);
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 缁х画缁�1
+const canContinueJH1 = computeJH((v) => v.state[0].isTestPause == 1);
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 缁х画缁�2
+const canContinueJH2 = computeJH((v) => v.state[1].isTestPause == 1);
+
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍋滄缁�1
+const canStopJH1 = computeJH((v) => v.state[0].isTesting == 1);
+// 鍧囪 浠� 鎸夐挳鍙敤鎺у埗 鍋滄缁�2
+const canStopJH2 = computeJH((v) => v.state[1].isTesting == 1);
+
 watch(devList, (val, old) => {
   // console.log("val ch", val, old, "=============");
   if ((val[1].length || val[2].length) && !(old[1].length || old[2].length)) {
@@ -152,7 +231,7 @@
 }
 
 const devs = computed(() => {
-  return selectData.value[devType.value];
+  return selectData.value[devType.value].filter((v) => v.devOnline == 1);
 });
 
 function goDetails(dev) {
@@ -173,7 +252,9 @@
 }
 
 function stopTest(groupIdx) {
-  let devIds = devs.value.map((v) => v.devId);
+  let devIds = devs.value
+    .filter((v) => v.devOnline == 1 && v.state.isTesting == 1)
+    .map((v) => v.devId);
   let loading = $loading();
   stopA200ParamPl(devIds)
     .then((res) => {
@@ -235,7 +316,14 @@
 }
 
 function pauseYtj(type) {
-  let devIds = devs.value.map((v) => v.devId);
+  let devIds = devs.value;
+  if (type == 1) {
+    devIds = devIds.filter(
+      (v) => v.devOnline == 1 && v.state.isTesting == 1 && v.state.testPause == 0
+    ).map((v) => v.devId);
+  } else {
+    devIds = devIds.filter((v) => v.devOnline == 1 && v.state.testPause == 1).map((v) => v.devId);
+  }
   let loading = $loading();
   pauseA200ParamPl(devIds, type)
     .then((res) => {
@@ -271,7 +359,10 @@
     });
 }
 
-onMounted(() => {});
+onMounted(() => {
+  // $alert("璇风‘璁ゅ弬涓庢壒閲忔祴璇曠殑璁惧涓庣數姹犻�傚悎鎵归噺娴嬭瘯");
+  $alert("璇风‘璁ゅ弬涓庢壒閲忔祴璇曡澶囩殑娴嬭瘯鍙傛暟涓庣數姹犺鏍煎尮閰�");
+});
 onActivated(() => {
   if ($route.query.devType) {
     devType.value = $route.query.devType * 1;
@@ -352,20 +443,28 @@
           >
           <el-button
             size="small"
-            :disabled="!selectData[devType].length"
+            :disabled="!canStartYT"
             class="btn-start"
             @click="test"
             >鍚姩娴嬭瘯</el-button
           >
-          <el-button size="small" class="btn-start" @click="pauseYtj(1)"
+          <el-button
+            size="small"
+            class="btn-start"
+            @click="pauseYtj(1)"
+            :disabled="!canPauseYT"
             >鏆傚仠娴嬭瘯</el-button
           >
-          <el-button size="small" class="btn-start" @click="pauseYtj(2)"
+          <el-button
+            size="small"
+            class="btn-start"
+            @click="pauseYtj(2)"
+            :disabled="!canContinueYT"
             >缁х画娴嬭瘯</el-button
           >
           <el-button
             size="small"
-            :disabled="!selectData[devType].length"
+            :disabled="!canStopYT"
             class="btn-start"
             @click="stopTest"
             >鍋滄娴嬭瘯</el-button
@@ -375,6 +474,9 @@
           <el-button
             size="small"
             class="btn-start btn-grp1"
+            :disabled="
+              !selectData[devType].filter((v) => v.devOnline == 1).length
+            "
             @click="setBattCount"
             >璁剧疆缁勬暟</el-button
           >
@@ -389,74 +491,65 @@
           <el-dropdown
             class="control-group grp1"
             type="primary"
+            :disabled="!selectData[devType].length"
             trigger="click"
           >
             缁�1鎺у埗
             <template #dropdown>
               <el-dropdown-menu>
-                <el-dropdown-item @click="test(0)">鍚姩缁�1</el-dropdown-item>
-                <el-dropdown-item @click="controlTest(0, 2)"
+                <el-dropdown-item @click="test(0)" :disabled="!canStartJH1"
+                  >鍚姩缁�1</el-dropdown-item
+                >
+                <el-dropdown-item
+                  @click="controlTest(0, 2)"
+                  :disabled="!canPauseJH1"
                   >鏆傚仠缁�1</el-dropdown-item
                 >
-                <el-dropdown-item @click="controlTest(0, 3)"
+                <el-dropdown-item
+                  @click="controlTest(0, 3)"
+                  :disabled="!canContinueJH1"
                   >缁х画缁�1</el-dropdown-item
                 >
-                <el-dropdown-item @click="controlTest(0, 4)"
+                <el-dropdown-item
+                  @click="controlTest(0, 4)"
+                  :disabled="!canStopJH1"
                   >鍋滄缁�1</el-dropdown-item
                 >
               </el-dropdown-menu>
             </template>
           </el-dropdown>
-          <!-- <el-button
-            size="small"
-            :disabled="!selectData[devType].length"
-            class="btn-start btn-grp1"
-            @click="test(0)"
-            >鍚姩缁�1</el-button
-          >
-          <el-button
-            size="small"
-            :disabled="!selectData[devType].length"
-            class="btn-start btn-grp1"
-            @click="test(0)"
-            >鏆傚仠缁�1</el-button
-          > -->
           <!-- 缁�2鎺у埗 -->
           <el-dropdown
             class="control-group grp2"
             type="primary"
+            :disabled="!selectData[devType].length"
+            v-if="!onlyOneGroup"
             trigger="click"
           >
             缁�2鎺у埗
             <template #dropdown>
               <el-dropdown-menu>
-                <el-dropdown-item @click="test(1)">鍚姩缁�2</el-dropdown-item>
-                <el-dropdown-item @click="controlTest(1, 2)"
+                <el-dropdown-item @click="test(1)" :disabled="!canStartJH2"
+                  >鍚姩缁�2</el-dropdown-item
+                >
+                <el-dropdown-item
+                  @click="controlTest(1, 2)"
+                  :disabled="!canPauseJH2"
                   >鏆傚仠缁�2</el-dropdown-item
                 >
-                <el-dropdown-item @click="controlTest(1, 3)"
+                <el-dropdown-item
+                  @click="controlTest(1, 3)"
+                  :disabled="!canContinueJH2"
                   >缁х画缁�2</el-dropdown-item
                 >
-                <el-dropdown-item @click="controlTest(1, 4)"
+                <el-dropdown-item
+                  @click="controlTest(1, 4)"
+                  :disabled="!canStopJH2"
                   >鍋滄缁�2</el-dropdown-item
                 >
               </el-dropdown-menu>
             </template>
           </el-dropdown>
-          <!-- <el-button
-            size="small"
-            :disabled="!selectData[devType].length"
-            class="btn-start btn-grp2"
-            @click="test(1)"
-            >鍚姩缁�2</el-button
-          >
-          <el-button
-            size="small"
-            :disabled="!selectData[devType].length"
-            class="btn-start btn-grp2"
-            @click="test(1)"
-            >鍋滄缁�2</el-button
-          > -->
         </template>
       </template>
       <div class="card-content">
@@ -711,7 +804,7 @@
     &.grp1 {
       margin-left: 8px;
     }
-    cursor: pointer;
+    // cursor: pointer;
     & > :deep(span) {
       color: #000;
       display: inline-block;
@@ -724,6 +817,11 @@
         background: rgb(0, 231, 112);
       }
     }
+    &.is-disabled {
+      & > :deep(span) {
+        background: #ccc;
+      }
+    }
   }
 }
 </style>
diff --git a/src/views/test/ytjRtInfo.vue b/src/views/test/ytjRtInfo.vue
index 80be170..9e2e04f 100644
--- a/src/views/test/ytjRtInfo.vue
+++ b/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";
@@ -41,7 +41,6 @@
     return { monStates: [], devStates: {}, eventList: [] };
   }
 });
-
 
 const logList = computed(() => {
   let _list = rtDatas.value.eventList;
@@ -86,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 }));
 });
@@ -110,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>
@@ -132,8 +159,12 @@
               </div>
             </div>
             <div class="item">
-              <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 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, GROUPVOL) }}
@@ -157,9 +188,7 @@
               </div>
             </div>
             <div class="border border-center">
-              <div class="i label">
-                鐢佃姱鍘嬪樊 
-              </div>
+              <div class="i label">鐢佃姱鍘嬪樊</div>
               <div class="value">
                 {{ rtDatas.devStates.diffBatteryVoltage }} mV
               </div>
@@ -197,7 +226,9 @@
               </div>
             </div>
             <div class="item">
-              <div class="label"><el-icon><icon-avg class="avg-icon" /></el-icon>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>
@@ -214,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">
@@ -251,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>
@@ -349,10 +384,10 @@
         text-align: center;
         background: #02a7f0;
         &.max {
-          background: #438D29;
+          background: #438d29;
         }
         &.min {
-          background: #DBD608;
+          background: #dbd608;
         }
       }
     }
@@ -386,10 +421,10 @@
         text-align: center;
         background: #02a7f0;
         &.max {
-          background: #438D29;
+          background: #438d29;
         }
         &.min {
-          background: #DBD608;
+          background: #dbd608;
         }
       }
     }
@@ -421,10 +456,10 @@
             padding: 2px 10px;
             border-radius: 6px;
             &.max {
-              background: #438D29;
+              background: #438d29;
             }
             &.min {
-              background: #DBD608;
+              background: #dbd608;
             }
           }
         }
@@ -638,7 +673,12 @@
 
 /* 浣跨敤@keyframes瀹氫箟鍔ㄧ敾 */
 @keyframes colorChange {
-  0%, 100% { color: red; }  /* 寮�濮嬪拰缁撴潫鏃剁殑棰滆壊 */
-  50% { color: #0ff; }      /* 涓棿鐘舵�佺殑棰滆壊 */
+  0%,
+  100% {
+    color: red;
+  } /* 寮�濮嬪拰缁撴潫鏃剁殑棰滆壊 */
+  50% {
+    color: #0ff;
+  } /* 涓棿鐘舵�佺殑棰滆壊 */
 }
 </style>

--
Gitblit v1.9.1