From ab308e37501bfcbe74a723b9b29007478536d5a0 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期三, 28 八月 2024 10:54:53 +0800
Subject: [PATCH] 掰片/识别和钢化模块新增按钮和按钮点击判断条件,更新算法

---
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue |  253 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 221 insertions(+), 32 deletions(-)

diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index 55be7f0..e6c9858 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -1,5 +1,5 @@
-<script setup>
-import {Search} from "@element-plus/icons-vue";
+<script setup lang="ts">
+import {Search ,Delete, Upload,Edit} from "@element-plus/icons-vue";
 import {reactive} from "vue";
 import request from "@/utils/request"
 import { ref, onMounted, onBeforeUnmount,nextTick  } from 'vue';  
@@ -21,6 +21,15 @@
 const dialogVisible = ref(false)
 const width = ref();
 const height = ref();
+const currentRect = ref(null);
+const canSelectProject1 = ref(true);
+const canSelectProject2 = ref(true);
+const canSelectProjecta = ref(true);
+const cantakea = ref(true);
+const cantakeb = ref(true);
+const canona = ref(true);
+const canonb = ref(true);
+const canSelectProjectb = ref(true);
 const adjustedRects1 = ref([]);
 const adjustedRects2 = ref([]);
 const adjustedRectsa = ref([]);
@@ -85,6 +94,7 @@
 };  
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
 const handleMessage = (data) => {  
+  // 杩涚倝涓彸
   if (data.intoGlass2 && data.intoGlass2.length > 0) {  
     // 鎻愬彇鏂扮殑鐭╁舰ID  
     const newGlassIds = new Set(data.intoGlass2[0].map(rect => rect.glassId));  
@@ -138,14 +148,12 @@
   else if (data.intoGlass2 == null) {
     adjustedRects2.value = []
   }
+  // 杩涚倝涓乏
   if (data.intoGlass && data.intoGlass.length > 0) {  
-    // 鎻愬彇鏂扮殑鐭╁舰ID  
     const newGlassIds = new Set(data.intoGlass[0].map(rect => rect.glassId));  
-    // 杩囨护鍑哄凡瀛樺湪鐨勭煩褰�  
     const existingRects = adjustedRects1.value.filter(rect => newGlassIds.has(rect.glassId));  
-    // 璁$畻鏂扮殑鐭╁舰  
     const newRects = data.intoGlass[0].map(rect => {  
-      const scaleFactor =  794.67/5087; 
+      const scaleFactor =  810.89/5087; 
       const scaleFactorY =  430/2800; 
       let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;;
       let newX = rect.yCoordinate; 
@@ -192,11 +200,8 @@
     adjustedRects1.value = []
   }
   if (data.waitingGlass && data.waitingGlass.length > 0) {  
-    // 鎻愬彇鏂扮殑鐭╁舰ID  
     const newGlassIds = new Set(data.waitingGlass[0].map(rect => rect.glassId));  
-    // 杩囨护鍑哄凡瀛樺湪鐨勭煩褰�  
     const existingRects = adjustedRectsa.value.filter(rect => newGlassIds.has(rect.glassId));  
-    // 璁$畻鏂扮殑鐭╁舰  
     const newRects = data.waitingGlass[0].map(rect => {  
       const scaleFactor =  1390/5190; 
       const scaleFactorY =  750/2800; 
@@ -304,20 +309,48 @@
 onMounted(() => {
   initializeWebSocket(socketUrl, handleMessage);
 });
-function updateRectColorsa() {  
+function updateRectColorsa() {
   adjustedRectsa.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
       rect.state = 8;
     }
   });  
 }  
-function updateRectColorsb() {  
+function updateoutColorsa() {
+  adjustedRectsa.value.forEach(rect => {  
+    if (rect.glassId === glassId) {  
+      rect.state = 9;
+    }
+  });  
+}  
+function updateonColorsa() {
+  adjustedRectsa.value.forEach(rect => {  
+    if (rect.glassId === glassId) {  
+      rect.state = 1;
+    }
+  });  
+}  
+function updateRectColorsb() {
   adjustedRectsb.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
       rect.state = 8;
     }
   });  
 }  
+function updateoutColorsb() {
+  adjustedRectsb.value.forEach(rect => {  
+    if (rect.glassId === glassId) {  
+      rect.state = 9;
+    }
+  });  
+} 
+function updateonColorsb() {
+  adjustedRectsb.value.forEach(rect => {  
+    if (rect.glassId === glassId) {  
+      rect.state = 3;
+    }
+  });  
+} 
 function updateRectColors1() {  
   adjustedRects1.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
@@ -335,13 +368,15 @@
 function getRectColora(state) {  
   switch (state) {  
     case 0:  
-      return '#7AC5CD';  
-    case 1:  
+      return '#7AC5CD';
+    case 1:
       return '#95d475';
-    case -1:  
-      return '#CDAF95';  
-    case 8:  
-      return '#911005';  
+    case -1:
+      return '#CDAF95';
+    case 8:
+      return '#911005';
+    case 9:
+      return '#4682B4';
   }
 }
 function getRectColorb(state) {  
@@ -351,7 +386,9 @@
     case 4:  
       return '#CD6090';
     case 8:  
-      return '#911005';  
+      return '#911005'; 
+    case 9:
+      return '#4682B4'; 
   }  
 }
 function showDialog1(rect) {
@@ -362,6 +399,12 @@
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
   blind1.value = true;  
+  currentRect.value = rect;
+  if (currentRect.value.state == 8) {
+    canSelectProject1.value = false;
+  } else if (currentRect.value.state !== 8) {
+    canSelectProject1.value = true;
+  }
 } 
 function showDialog2(rect) {
   const index = adjustedRects2.value.findIndex(r => r.glassId === rect.glassId);  
@@ -371,6 +414,12 @@
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
   blind2.value = true;  
+  currentRect.value = rect;
+  if (currentRect.value.state == 8) {
+    canSelectProject2.value = false;
+  } else if (currentRect.value.state !== 8) {
+    canSelectProject2.value = true;
+  }
 } 
 function showDialoga(rect) {
   const index = adjustedRectsa.value.findIndex(r => r.glassId === rect.glassId);  
@@ -379,7 +428,23 @@
   }  
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
-  blinda.value = true;  
+  blinda.value = true; 
+  currentRect.value = rect;
+  if (currentRect.value.state == 8) {
+    canSelectProjecta.value = false;
+  } else if (currentRect.value.state !== 8) {
+    canSelectProjecta.value = true;
+  } 
+  if (currentRect.value.state == 9) {
+    cantakea.value = false;
+  } else if (currentRect.value.state !== 9) {
+    cantakea.value = true;
+  } 
+  if (currentRect.value.state == 1) {
+    canona.value = false;
+  } else if (currentRect.value.state == 0) {
+    canona.value = true;
+  } 
 } 
 function showDialogb(rect) {
   const index = adjustedRectsb.value.findIndex(r => r.glassId === rect.glassId);  
@@ -389,6 +454,22 @@
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
   blindb.value = true;  
+  currentRect.value = rect;
+  if (currentRect.value.state == 8) {
+    canSelectProjectb.value = false;
+  } else if (currentRect.value.state !== 8) {
+    canSelectProjectb.value = true;
+  }
+  if (currentRect.value.state == 9) {
+    cantakeb.value = false;
+  } else if (currentRect.value.state !== 9) {
+    cantakeb.value = true;
+  } 
+  if (currentRect.value.state == 3) {
+    canonb.value = false;
+  } else if (currentRect.value.state !== 3) {
+    canonb.value = true;
+  } 
 } 
   const handleDialogClose1 = () => {  
   adjustedRects1.value.forEach(rect => {  
@@ -425,7 +506,7 @@
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
-      ElMessage.success(response.message);
+      ElMessage.success('鎴愬姛锛�');
       blind1.value = false;
       updateRectColors1();
     } else {
@@ -442,13 +523,12 @@
   try  {
   const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
     glassId: currentGlassId.value,
-    // temperingFeedSequence: currenttemperingFeedSequence.value,
     line: 4001,
     status: 8,
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
-      ElMessage.success(response.message);
+      ElMessage.success('鎴愬姛锛�');
       blind2.value = false;
       updateRectColors2();
     } else {
@@ -461,17 +541,17 @@
     console.error(error);
   }
 }
+// 杩涚倝鍓嶇牬鎹�
 const handleDamagea = async () => {
   try  {
   const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
     glassId: currentGlassId.value,
-    // temperingFeedSequence: currenttemperingFeedSequence.value,
     line: 4001,
     status: 8,
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
-      ElMessage.success(response.message);
+      ElMessage.success('鎴愬姛锛�');
       blinda.value = false;
       updateRectColorsa();
     } else {
@@ -484,19 +564,111 @@
     console.error(error);
   }
 }
+// 杩涚倝鍓嶄汉宸ユ嬁璧�
+const takeouta = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
+    glassId: currentGlassId.value,
+    line: 4001,
+    status: 9,
+    workingProcedure: '閽㈠寲',
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blinda.value = false;
+      updateoutColorsa();
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// 杩涚倝鍓嶆斁鍥�
+const takeona = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
+    glassId: currentGlassId.value,
+    line: 4001,
+    status: 1,
+    workingProcedure: '閽㈠寲',
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blinda.value = false;
+      updateonColorsa();
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// 宸插嚭鐐夌牬鎹�
 const handleDamageb = async () => {
   try  {
   const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
     glassId: currentGlassId.value,
-    // temperingFeedSequence: currenttemperingFeedSequence.value,
     line: 4001,
     status: 8,
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
-      ElMessage.success(response.message);
+      ElMessage.success('鎴愬姛锛�');
       blindb.value = false;
       updateRectColorsb();
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    // console.error(error);
+  }
+}
+// 宸插嚭鐐変汉宸ユ嬁璧�
+const takeoutb = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
+    glassId: currentGlassId.value,
+    line: 4001,
+    status: 9,
+    workingProcedure: '閽㈠寲',
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blindb.value = false;
+      updateoutColorsb();
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    // console.error(error);
+  }
+}
+// 宸插嚭鐐夋斁鍥�
+const takeonb = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', {
+    glassId: currentGlassId.value,
+    line: 4001,
+    status: 3,
+    workingProcedure: '閽㈠寲',
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blindb.value = false;
+      updateonColorsb();
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
@@ -659,25 +831,42 @@
       </el-card>
    </el-card>
 </div>
+<!-- 杩涚倝涓� -->
 <el-dialog v-model="blind1" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose1">
-        <el-button type="warning" plain :icon="Delete" @click="handleDamage1"  style="width: 140px;margin-left: 10px;">
+        <el-button :disabled="!canSelectProject1" type="warning" plain :icon="Delete" @click="handleDamage1"  style="width: 150px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
   </el-dialog>  
 <el-dialog v-model="blind2" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose2">
-        <el-button type="warning" plain :icon="Delete" @click="handleDamage2"  style="width: 140px;margin-left: 10px;">
+        <el-button :disabled="!canSelectProject2" type="warning" plain :icon="Delete" @click="handleDamage2"  style="width: 150px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
   </el-dialog>  
+  <!-- 杩涚倝鍓� -->
 <el-dialog v-model="blinda" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClosea">
-        <el-button type="warning" plain :icon="Delete" @click="handleDamagea"  style="width: 140px;margin-left: 10px;">
+  <el-button type="warning" plain :icon="Delete" @click="handleDamagea" :disabled="!canSelectProjecta" style="width: 150px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
+        </el-button>
+        <el-button :disabled="!cantakea" type="danger" plain @click="takeouta"  style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          <el-icon class="el-icon--right"><Upload /></el-icon>
+          {{ $t('order.takeaway') }}
+        </el-button>
+        <el-button type="success" plain :icon="Edit" @click="takeona" :disabled="!canona" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('order.takeon') }}
         </el-button>
   </el-dialog>  
+  <!-- 宸插嚭鐐� -->
 <el-dialog v-model="blindb" top="30vh" width="15%" style="text-align: center;" @close="handleDialogCloseb">
-        <el-button type="warning" plain :icon="Delete" @click="handleDamageb"  style="width: 140px;margin-left: 10px;">
+        <el-button :disabled="!canSelectProjectb" type="warning" plain :icon="Delete" @click="handleDamageb"  style="width: 150px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
+        <el-button :disabled="!cantakeb" type="danger" plain @click="takeoutb"  style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          <el-icon class="el-icon--right"><Upload /></el-icon>
+          {{ $t('order.takeaway') }}
+        </el-button>
+        <!-- <el-button type="success" plain :icon="Edit" @click="takeonb" :disabled="!canonb" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('order.takeon') }}
+        </el-button> -->
   </el-dialog> 
   <el-dialog  
       v-model="dialogVisible"
@@ -728,7 +917,7 @@
   border: 1px solid black;
   background-color:  #337ecc;
   display:flex;
-    align-items:center;
+    align-items:center; 
     justify-content:center;
 }
 #home-card {
@@ -771,7 +960,7 @@
   }
   .rect {  
   border: 1px solid black; /* 璁剧疆鐭╁舰鐨勮竟妗� */  
-  background-color: lightblue; /* 璁剧疆鐭╁舰鐨勮儗鏅壊 */  
+  /* background-color: lightblue; 璁剧疆鐭╁舰鐨勮儗鏅壊   */
 } 
 #rect {  
   position: relative; /* 纭繚绠ご鍙互鐩稿浜庣煩褰㈠畾浣� */  

--
Gitblit v1.8.0