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/testBatch.vue |  190 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 144 insertions(+), 46 deletions(-)

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>

--
Gitblit v1.9.1