From 1e6d58b2f620f96f2e2dbff01413a9c2967ede13 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期四, 26 十二月 2024 15:56:45 +0800
Subject: [PATCH] 掰片模块三个页面及功能

---
 UI-Project/src/views/Identify/identifwu.vue |  196 ++++++++----------------------------------------
 1 files changed, 34 insertions(+), 162 deletions(-)

diff --git a/UI-Project/src/views/Identify/identifwu.vue b/UI-Project/src/views/Identify/identifwu.vue
index 5b4b87a..8aeb441 100644
--- a/UI-Project/src/views/Identify/identifwu.vue
+++ b/UI-Project/src/views/Identify/identifwu.vue
@@ -1,47 +1,30 @@
 <template>
   <div style="height: 500px;">
-    <div style="display: flex;">
-      <el-input v-model="inputValue" style="margin-left: 15px;margin-top: 10px;width: 240px" placeholder="璇疯緭鍏ュ伐绋嬪彿"
-                @blur="handleBlur"/>
-      <el-pagination
-          v-model:current-page="currentPage"
-          :page-size="pageSize"
-          :size="size"
-          :disabled="disabled"
-          layout="prev, pager, next, jumper"
-          :total="totalPages"
-          @current-change="handleCurrentChange"
-      />
-    </div>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 800px;" v-loading="loading">
       <el-scrollbar height="750px" width="1400px" style="background-color: #e9e9eb;">
         <div style="position: relative;">
           <div
               v-for="(rect, index) in adjustedRects"
-              :key="rect.glass_id"
+              :key="rect.glassId"
               class="rect"
-              @click="showDialog(rect.glass_id)"
+              @click="showDialog(rect.glassId)"
               :style="{ position: 'absolute',
-      top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px`,
-      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.glass_state)
-       }"
-          >
-            <!-- 绠ご -->
-            <!-- <div id="arrow"></div>
-            <div id="line"></div>   -->
+              top: `${rect.yAxis}px`, left: `${rect.xAxis}px`, width: `${rect.width}px`, height: `${rect.height}px`,
+              backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.state)
+               }">
             <div class="centered-text">
-              <div>{{ rect.glass_id }}</div>
+              <div>{{ rect.glassId }}</div>
               <div>{{ rect.widtha }}*{{ rect.heighta }}</div>
             </div>
           </div>
         </div>
       </el-scrollbar>
       <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose">
-        <el-button :disabled="currentGlassRect?.glass_state === 8 || currentGlassRect?.glass_state === 9" type="warning"
+        <el-button :disabled="currentGlassRect?.state === 8 || currentGlassRect?.state === 9" type="warning"
                    plain :icon="Delete" @click="handleDamage(currentGlassId)" style="width: 140px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
-        <el-button :disabled="currentGlassRect?.glass_state === 9 || currentGlassRect?.glass_state === 8" type="danger"
+        <el-button :disabled="currentGlassRect?.state === 9 || currentGlassRect?.state === 8" type="danger"
                    plain @click="handleManualTake(currentGlassId)" style="width: 140px;margin-top: 10px;">
           <el-icon class="el-icon--right">
             <Upload/>
@@ -54,40 +37,25 @@
 </template>
 <script setup lang="ts">
 import {ElMessage} from 'element-plus'
-import {computed, onMounted, onUnmounted, ref} from 'vue';
+import {onBeforeUnmount, computed, onMounted, onUnmounted, ref} from 'vue';
 import request from "@/utils/request"
 import {host, WebSocketHost} from '@/utils/constants'
+import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService';
 import {useI18n} from 'vue-i18n'
 const {t} = useI18n()
 let language = ref(localStorage.getItem('lang') || 'zh')
 const blind = ref(false)
-const olWidth = ref();
-const olHeight = ref();
-const glass_id = ref();
-const inputValue = ref('');
-const currentGlassId = ref(null); // 瀛樺偍褰撳墠鐐瑰嚮鐭╁舰鐨� glass_id  
-const currentstate = ref(null);
+const currentGlassId = ref(null);
 const adjustedRects = ref([]);
-const raw = ref([]);
-let webSocket: WebSocket | null = null;
-const totalPages = ref(0);
-const pageSize = ref(1);
-const currentPage = ref('');
-const disabled = false;
-const size = 'small';
-const rawData = ref([]);
-// const handleBind = (row) => {
-//   blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
-// };
-// 鏄剧ず瀵硅瘽妗嗗苟璁剧疆褰撳墠 glass_id  
+let socket = null;
 const currentGlassRect = computed(() => {
-  return adjustedRects.value.find(rect => rect.glass_id === currentGlassId.value);
+  return adjustedRects.value.find(rect => rect.glassId === currentGlassId.value);
 });
 function showDialog(glassId: number) {
   currentGlassId.value = glassId;
   blind.value = true;
   adjustedRects.value = adjustedRects.value.map(rect =>
-      rect.glass_id === glassId ? {...rect, isActive: true} : rect
+      rect.glassId === glassId ? {...rect, isActive: true} : rect
   );
 }
 const handleDialogClose = () => {
@@ -102,111 +70,42 @@
     const response = await request.post('/cacheGlass/taskCache/identControls', {
       glassId: currentGlassId.value,
       state: 8,
-      line: 1001,
+      line: 1,
+      remark: '鎺扮墖',
       workingProcedure: '鍒囧壊',
     })
     if (response.code == 200) {
       ElMessage.success(response.message);
-      // window.location.reload() 
       blind.value = false;
       updateRectStatus(currentGlassId.value, 8);
-      findEngineering()
     } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
     }
   } catch (error) {
-    // 澶勭悊閿欒
     console.error(error);
   }
 }
 // 浜哄伐鎷胯蛋
 const handleManualTake = async () => {
   try {
-    // var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
-    //   console.log(url);
-    //   const response = await request.post(url)
     const response = await request.post('/cacheGlass/taskCache/identControls', {
       glassId: currentGlassId.value,
       state: 9,
-      line: 1001,
+      line: 1,
       workingProcedure: '鍒囧壊',
+      remark: '鎺扮墖',
     })
     if (response.code == 200) {
-      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
-      // window.location.reload() 
       blind.value = false;
       updateRectStatus(currentGlassId.value, 9);
-      findEngineering()
     } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
     }
   } catch (error) {
-    // 澶勭悊閿欒
     console.error(error);
   }
 }
-const handleBlur = async () => {
-  if (inputValue.value) {
-    var url = "/cacheGlass/taskCache/cutTerritory?current=" + inputValue.value;
-    const response = await request.post(url)
-    if (response.code === 200) {
-      const rawRects = response.data[0];
-      rawData.value = response.data;
-      totalPages.value = rawData.value.length;
-      const scaleFactor = 1621.78 / 6000;
-      const scaleFactory = 750 / 3300;
-      adjustedRects.value = rawRects.map(rect => ({
-        ...rect,
-        x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,
-        y_axis: rect.y_axis * scaleFactory,
-        width: rect.width * scaleFactor,
-        widtha: rect.width,
-        heighta: rect.height,
-        height: rect.height * scaleFactory,
-        glass_state: rect.glass_state
-      }));
-      // 濡傛灉WebSocket宸茶繛鎺ワ紝鍒欏叧闂�  
-      if (webSocket) {
-        webSocket.close();
-        webSocket = null;
-      }
-      currentPage.value = 1;
-    }
-  } else {
-    connectWebSocket();
-  }
-};
-const findEngineering = async () => {
-  if (inputValue.value) {
-    var url = "/cacheGlass/taskCache/cutTerritory?current=" + inputValue.value;
-    const response = await request.post(url)
-    if (response.code === 200) {
-      rawData.value = response.data;
-    }
-  } else {
-  }
-};
-const handleCurrentChange = (val: number) => {
-  currentPage.value = val;
-  // window.localStorage.setItem('pagenumber', currentPage.value).
-  const page = currentPage.value - 1
-  const scaleFactor = 1621.78 / 6000;
-  const scaleFactory = 750 / 3300;
-  adjustedRects.value = rawData.value[page]?.map(rect => ({
-    // adjustedRects.value = rawRects.map(rect => ({
-    ...rect,
-    x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,
-    y_axis: rect.y_axis * scaleFactory,
-    width: rect.width * scaleFactor,
-    widtha: rect.width,
-    heighta: rect.height,
-    height: rect.height * scaleFactory,
-    glass_state: rect.glass_state
-  }));
-};
 function getRectColor(state: number): string {
   switch (state) {
     case 0:
@@ -226,47 +125,43 @@
 // 鏇存柊鐭╁舰鐘舵��
 function updateRectStatus(glassId: string, status: number) {
   adjustedRects.value.forEach(rect => {
-    if (rect.glass_id === glassId) {
-      rect.glass_state = status; // 鏇存柊鐭╁舰鐨勭姸鎬�  
+    if (rect.glassId === glassId) {
+      rect.state = status; // 鏇存柊鐭╁舰鐨勭姸鎬�  
     }
   });
 }
-const connectWebSocket = () => {
-  if (!webSocket) {
-    const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
-    webSocket = new WebSocket(socketUrl);
-    webSocket.onmessage = (event) => {
-      const data = JSON.parse(event.data);
+const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/currentCutDrawingOne`;
+const handleMessage = (data: any) => {
       const scaleFactor = 1621.78 / 6000;
       const scaleFactory = 750 / 3300;
       if (data.currentCutTerritory && data.currentCutTerritory.length > 0) {
         const newRects = data.currentCutTerritory[0].map(rect => {
-          const existingRect = adjustedRects.value.find(r => r.glass_id === rect.glass_id);
+          const existingRect = adjustedRects.value.find(r => r.glassId === rect.glassId);
           if (existingRect) {
             return {
               ...existingRect,
-              x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,
-              y_axis: rect.y_axis * scaleFactory,
+              xAxis: (6000 - (rect.xAxis + rect.width)) * scaleFactor,
+              yAxis: rect.yAxis * scaleFactory,
               width: rect.width * scaleFactor,
               height: rect.height * scaleFactory,
               widtha: rect.width,
               heighta: rect.height,
-              glass_state: rect.glass_state,
+              state: rect.state,
               // 淇濇寔 isActive 鐘舵�佷笉鍙�
             };
           } else {
             // 濡傛灉涓嶅瓨鍦紝鍒欐坊鍔犳柊鐭╁舰锛岄粯璁� isActive 涓� false
             return {
               ...rect,
-              x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,
-              y_axis: rect.y_axis * scaleFactory,
+              xAxis: (6000 - (rect.xAxis + rect.width)) * scaleFactor,
+              yAxis: rect.yAxis * scaleFactory,
               width: rect.width * scaleFactor,
               height: rect.height * scaleFactory,
               widtha: rect.width,
               heighta: rect.height,
-              glass_state: rect.glass_state,
+              state: rect.state,
               isActive: false,
-              glass_id: rect.glass_id,
+              glassId: rect.glassId,
             };
           }
         });
@@ -274,19 +169,12 @@
       } else if (data.currentCutTerritory == '') {
         adjustedRects.value = [];
       }
-    };
-  }
-};
+}
 onMounted(() => {
-  // 鍒濆鏃讹紝濡傛灉杈撳叆妗嗕负绌猴紝鍒欒繛鎺ebSocket  
-  if (!inputValue.value) {
-    connectWebSocket();
-  }
+  socket = initializeWebSocket(socketUrl, handleMessage);
 });
-onUnmounted(() => {
-  if (webSocket) {
-    webSocket.close();
-  }
+onBeforeUnmount(() => {
+  closeWebSocket();
 });
 </script>
 <style scoped>
@@ -301,22 +189,6 @@
   align-items: center;
   height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */
   font-size: small;
-}
-#rect {
-  position: relative; /* 纭繚绠ご鍙互鐩稿浜庣煩褰㈠畾浣� */
-  /* 鍏朵粬鏍峰紡 */
-}
-#arrow {
-  position: absolute;
-  top: 70%; /* 绠ご浣嶄簬鐭╁舰涓棿 */
-  left: 200px; /* 绠ご鍦ㄧ煩褰㈠乏渚т竴浜涜窛绂� */
-  transform: translateY(-50%); /* 鍨傜洿灞呬腑 */
-  width: 0;
-  height: 0;
-  border-top: 10px solid transparent; /* 涓婅竟妗� */
-  border-bottom: 10px solid transparent; /* 涓嬭竟妗� */
-  border-right: 20px solid #911005; /* 鍙宠竟妗嗭紝褰㈡垚绠ご */
-  /* 鏍规嵁闇�瑕佽皟鏁磋竟妗嗗ぇ灏忓拰棰滆壊 */
 }
 #line {
   position: absolute;

--
Gitblit v1.8.0