From d5d0d1c7a84b996b9bbcebfaf2c2c95f1a5a3678 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期五, 11 十月 2024 08:39:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UI-Project/src/views/Returns/returns.vue |  647 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 423 insertions(+), 224 deletions(-)

diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index dd2b52c..c5ffe12 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -5,6 +5,8 @@
 const router = useRouter()
 import type { TableColumnCtx } from 'element-plus'
 import { ElMessage, ElMessageBox } from 'element-plus'
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
 const dialogFormVisible = ref(false)
 const blind = ref(false)
 const blinda = ref(false)
@@ -13,21 +15,36 @@
 const adda = ref(false)
 const flake = ref(false)
 const flakea = ref(false)
-import { WebSocketHost } from '@/utils/constants'
+const flakeb = ref(false)
+const flakec = ref(false)
+const dialoglea = ref(false)
+const tableDatax = ref([])
+const user = ref('');
+const projectNo = ref('');
+const workstationId = ref('');
+const id = ref('');
+const patternHeight = ref('');
+const patternWidth = ref('');
+const filmsId = ref('');
+const patternThickness = ref('');
+const number = ref('');
+const canSelectProject = ref(true);
+const canStartLoading = ref(false);
+import { WebSocketHost ,host} from '@/utils/constants'
 import request from "@/utils/request"
 const ida = ref(null); 
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
 import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue";
-// 鍝嶅簲寮忔暟鎹�  
 const selectedProjectNo = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿  
 const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿  
 const selectedValue = ref(''); // 褰撳墠閫変腑鐨勫  
 const selectedValuea = ref('');  
 const selectedValueb = ref('');
 const selectedValuec = ref(''); 
-const upstatus = ref(''); // 鍋囪杩欎釜鐢ㄤ簬鏄剧ず鑷姩/鎵嬪姩鐘舵��  
+// const upstatus = ref('涓婄墖鏈烘墜鍔ㄧ姸鎬侊細'); // 鍋囪杩欎釜鐢ㄤ簬鏄剧ず鑷姩/鎵嬪姩鐘舵��  
+const upstatus = ref(t('basicData.machineaa'));
 const cuttingMachine = ref(''); // 鍋囪杩欎釜鐢ㄤ簬瀛樺偍鍚庣杩斿洖鐨勭姸鎬佸�硷紙0鎴�1锛�  
-const cuttingMachineStatusColor = ref(''); // 鐢ㄤ簬鍔ㄦ�佽缃甶鏍囩鐨勮儗鏅壊 
+const cuttingMachineStatusColor = ref('#911005'); // 鐢ㄤ簬鍔ㄦ�佽缃甶鏍囩鐨勮儗鏅壊 
 const inKageWord = ref(0); // 鐢ㄤ簬瀛樺偍瑕佷紶閫掔粰鎺ュ彛鐨刬nKageWord鍊� 
 const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
 const selectOptions = ref<Array<any>>([]); // 涓嬫媺閫夐�夐」鏁扮粍  
@@ -68,33 +85,110 @@
       label: thickness,  
     })); 
     } else {
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   } catch (error) {
     // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
     // ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
   }
 };
-request.get("/loadGlass/LoadGlass/list").then((res) => {
-      window.localStorage.setItem('patternWidth', res.data.patternWidth)
-      window.localStorage.setItem('workstationId', res.data.workstationId)
-          if (res.code == 200) {
-          console.log(res.data);
-          tableDataa.value = res.data
-          console.log(res.data.patternWidth);
-          
-      let workstationId = window.localStorage.getItem('workstationId')
-      let patternWidth = window.localStorage.getItem('patternWidth')
-      if (patternWidth !== '' || workstationId == '1') {
-      flake.value = true
-    } else if (patternWidth !== '' || workstationId == '2') {
-      flakea.value = true
+const handlezhiban = () => {
+  dialoglea.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+  fetchFlowCardId(); 
+};
+const selectproject = () => {
+  dialogFormVisible.value = true; 
+  selectgong(); 
+};
+// 鍊肩彮淇℃伅
+const fetchFlowCardId = async () => {
+  try  {
+    const response = await request.post('/loadGlass/work_assignment/selectWorkAssignment',{
+      line: 2001,
+      workingProcedure : '鍐峰姞宸�'
+    })
+    if (response.code == 200) {
+      ElMessage.success(response.message);
+      tableDatax.value = response.data;
+      console.log(tableDatax.value);
+      console
+    } else {
+      ElMessage.error(response.message);
     }
-          } else {
-          ElMessage.warning(res.msg)
-          // router.push("/login")
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+const handleConfirmb = async () => {
+  const response = await request.post("/loadGlass/work_assignment/updateWorkAssignment", tableDatax.value)
+  if (response.code === 200) {
+    ElMessage.success(response.message);
+    dialoglea.value = false;
+  } else {
+    ElMessage.error(response.message);
+  }
+};
+onMounted(() => {
+  list('');  
+  fetchOptions('');
+  socket = initializeWebSocket(socketUrl, handleMessage);
+});
+  onUnmounted(() => {
+    if (socket) {
+    closeWebSocket(socket);
+    }
+    });
+const list = async () => {  
+  try {  
+    const response = await request.get('/loadGlass/LoadGlass/list');  
+    if (response.code == 200) {  
+      tableDataa.value = response.data
+          if (tableDataa.value.length === 4) {
+          if (tableDataa.value[0].patternHeight > 0 && tableDataa.value[0].patternWidth > 0 && tableDataa.value[0].number > 0) {
+          flake.value = true;
           }
-          });
+         if (tableDataa.value[1].patternHeight > 0 && tableDataa.value[1].patternWidth > 0 && tableDataa.value[1].number > 0) {
+          flakea.value = true;
+          } 
+         if (tableDataa.value[2].patternHeight > 0 && tableDataa.value[2].patternWidth > 0 && tableDataa.value[2].number > 0) {
+          flakeb.value = true;
+          } 
+         if (tableDataa.value[3].patternHeight > 0 && tableDataa.value[3].patternWidth > 0 && tableDataa.value[3].number > 0) {
+          flakec.value = true;
+          } 
+           }
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+// 鍋囪杩欐槸鎮ㄧ殑鍝嶅簲澶勭悊鍑芥暟 
+// request.get("/loadGlass/LoadGlass/list").then((res) => {
+//       if (res.code == 200) {
+//           tableDataa.value = res.data
+//           if (tableDataa.value.length === 4) {
+//           if (tableDataa.value[0].patternHeight > 0) {
+//           flake.value = true;
+//           }
+//          if (tableDataa.value[1].patternHeight > 0) {
+//           flakea.value = true;
+//           } 
+//          if (tableDataa.value[2].patternHeight > 0) {
+//           flakeb.value = true;
+//           } 
+//          if (tableDataa.value[3].patternHeight > 0) {
+//           flakec.value = true;
+//           } 
+//            }
+//           } else {
+//           ElMessage.warning(res.message)
+//           // router.push("/login")
+//           }
+//           }); 
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
   processType: [],
@@ -102,19 +196,59 @@
 const titleSelectJsona = ref({
   processTypea: [],
 })
-const socketUrl = `ws://10.153.19.150:88/api/loadGlass/api/talk/loadGlass`;
+let socket = null;
+const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
-
+  if(data.prioritylist!=null){
   tableData.splice(0, tableData.length, ...data.prioritylist[0]);
+  }
+  if(data.list!=null){
   tableDataa.value = data.list[0]
- // console.log("鏇存柊鍚庢暟鎹�", tableData);
+  }
+  if(data.engineering ){
+    if ( Array.isArray(data.engineering) && data.engineering.length !== 0) {  
+    canSelectProject.value = false;
+    canStartLoading.value = true;
+  }else{
+      canSelectProject.value = true;
+      canStartLoading.value = false;
+  }
+}
+if (data.InkageStatus) {
+if(data.InkageStatus!=null){
+      const status = data.InkageStatus[0]; 
+      cuttingMachine.value = status; 
+            upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
+      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';  
+      inKageWord.value = status === '1' ? 0 : 1;  
+}
+}
 };
 const requestData = {  
   state: 100  
 };  
-// 璋冪敤鎺ュ彛鑾峰彇閫夐」鏁版嵁鐨勫嚱鏁�  
+
+
+
+
+const selectgong = async (queryString: string) => {
+  try  {
+    const response = await request.post('/loadGlass/optimizeProject/listByState',{
+      ...requestData,  
+      query: queryString
+    })
+    if (response.code == 200) {
+      titleSelectJson.value.processType = response.data;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
 const fetchOptions = async (queryString: string) => {  
   try {  
     // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
@@ -122,9 +256,8 @@
       ...requestData,  
       query: queryString // 灏嗘煡璇㈠瓧绗︿覆浣滀负鍙傛暟浼犻��  
     });  
-    
     if (response.code == 200) {  
-    titleSelectJson.value.processType = response.data;
+    // titleSelectJson.value.processType = response.data;
     console.log(response.data);
  
     } else {  
@@ -133,7 +266,7 @@
   } catch (error) {  
     console.error('Error fetching options:', error);  
   }  
-};  
+};
 // 澶勭悊鐢ㄦ埛杈撳叆鍙樺寲鐨勬柟娉�  
 const handleInputChange = async (value: string) => {  
   if (value) {  
@@ -150,36 +283,19 @@
     options.value = []; // 娓呯┖閫夐」鍒楄〃  
   }  
 };  
-// 鍒濆鍖栧姞杞芥暟鎹紙濡傛灉闇�瑕侊級  
-onMounted(() => {  
-  fetchOptions('');  
-  initializeWebSocket(socketUrl, handleMessage);
-});  
 onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
   closeWebSocket();
 });
-const user = ref('');
-const projectNo = ref('');
-const workstationId = ref('');
-const id = ref('');
-const patternHeight = ref('');
-const patternWidth = ref('');
-const filmsId = ref('');
-const patternThickness = ref('');
-const number = ref('');
 // 娣诲姞
 const handleBindRack = (row) => {
   workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
   ida.value = row.id;
-  console.log(ida.value);
   add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
 };
 // 娣诲姞
     const handleConfirm = async () => {
-  console.log(ida.value);
       // console.log('id.value:', id.value);
-  if ((ida.value === 2 || ida.value === 4) && (parseInt(patternHeight.value, 10) >= 2700 )) {  
+  if ((ida.value === 2 || ida.value === 4) && (parseInt(selectedValuea.value, 10) >= 2700 )) {  
     try {
     const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
       id: workstationId.value,
@@ -190,32 +306,50 @@
       patternThickness: selectedValuec.value,
       number: number.value
     }); 
+      // window.localStorage.setItem('workstationId', workstationId.value)
+      // window.localStorage.setItem('patternHeight', selectedValuea.value)
+      // window.localStorage.setItem('patternWidth', selectedValue.value)
+      // window.localStorage.setItem('number', number.value)
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       // window.location.reload() 
       add.value = false;
      tableDataa.value = response.data;
+      // let workstationId = window.localStorage.getItem('workstationId')
+      // let patternHeight = window.localStorage.getItem('patternHeight')
+      // let patternWidth = window.localStorage.getItem('patternWidth')
+      // let number = window.localStorage.getItem('number')
+      if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
+      flake.value = true
+    } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2'){
+      flakea.value = true
+    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3'){
+      flakeb.value = true
+    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4'){
+      flakec.value = true
+    }
+    //   if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '1') {
+    //   flake.value = true
+    // } else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '2'){
+    //   flakea.value = true
+    // }else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '3'){
+    //   flakeb.value = true
+    // }else if (patternHeight !== '0' && patternWidth !== '0' && number !== '0' && workstationId === '4'){
+    //   flakec.value = true
+    // }
       selectedValuea.value = '';
       selectedValue.value = '';
       selectedValueb.value = '';
       selectedValuec.value = '';
       number.value = '';
-      window.localStorage.setItem('workstationId', response.data.workstationId)
-      let workstationId = window.localStorage.getItem('workstationId')
-      if (workstationId == '1') {
-      flake.value = true
-    } else if (workstationId == '2'){
-      flakea.value = true
-    }
+        list()
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   } catch (error) {  
       // 澶勭悊璇锋眰閿欒  
-      console.error(error);  
-      alert('璇锋眰澶辫触锛岃绋嶅悗鍐嶈瘯锛�');  
     }  
   }  
   else if( ida.value === 1 || ida.value === 3){
@@ -235,35 +369,35 @@
       // window.location.reload() 
       add.value = false;
      tableDataa.value = response.data;
+      if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '1') {
+      flake.value = true
+    } else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '2'){
+      flakea.value = true
+    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '3'){
+      flakeb.value = true
+    }else if (selectedValuea.value !== '0' && selectedValue.value !== '0' && number.value !== '0' && workstationId.value === '4'){
+      flakec.value = true
+    }
       selectedValuea.value = '';
       selectedValue.value = '';
       selectedValueb.value = '';
       selectedValuec.value = '';
       number.value = '';
-      window.localStorage.setItem('workstationId', response.data.workstationId)
-      let workstationId = window.localStorage.getItem('workstationId')
-      if (workstationId == '1') {
-      flake.value = true
-    } else if (workstationId == '2'){
-      flakea.value = true
-    }
+      list()
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   } catch (error) {  
       // 澶勭悊璇锋眰閿欒  
-      console.error(error);  
-      alert('璇锋眰澶辫触锛岃绋嶅悗鍐嶈瘯锛�');  
     } 
     }
   else  {
       ElMessage({
         type: 'info',
-        message: '绗簩琛屽拰绗洓琛岀殑楂樺繀椤诲ぇ浜�2700鎵嶈兘淇濆瓨锛�',
+        message: t('basicData.pause'),
       })
     }
-   
 };  
 // 鍒犻櫎
 const handleConfirma = async () => {
@@ -275,23 +409,27 @@
       filmsId: "",
       patternThickness: 0,
       number: 0
-    }); 
- 
+    });
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       adda.value = false;
      tableDataa.value = response.data;
-      window.localStorage.setItem('workstationId', response.data.workstationId)
-      let workstationId = window.localStorage.getItem('workstationId')
-      if (workstationId == '1') {
+      // window.localStorage.setItem('workstationId', response.data.workstationId)
+      // let workstationId = window.localStorage.getItem('workstationId')
+      if (workstationId.value == '1') {
       flake.value = false
-    } else if (workstationId == '2'){
+    } else if (workstationId.value == '2'){
       flakea.value = false
+    }else if (workstationId.value == '3'){
+      flakeb.value = false
+    }else if (workstationId.value == '4'){
+      flakec.value = false
     }
-    } else {
+        list()
+      } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   } catch (error) {
     // 澶勭悊閿欒
@@ -318,10 +456,9 @@
       const uniqueHeights = new Set(response.data.map(item => item.height));  
       const uniqueFilmsIds = new Set(response.data.map(item => item.filmsId));  
       const uniqueThicknesses = new Set(response.data.map(item => item.thickness));  
-  
       selectOptions.value = Array.from(uniqueWidths).map(width => ({ 
-      value: width, // 鍋囪杩欐槸浣犳兂瑕佷綔涓簐alue鐨勫睘鎬�  
-      label: width, // 鍋囪杩欐槸浣犳兂瑕佹樉绀虹殑label  
+      value: width, 
+      label: width, 
     }));  
       selectOptionsa.value = Array.from(uniqueHeights).map(height => ({ 
       value: height, 
@@ -337,7 +474,8 @@
     })); 
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
+      // ElMessage.error(response.msg);
     }
 }
 catch (error) {
@@ -347,12 +485,9 @@
 }
 // 寮�濮嬩笂鐗�
 const handle = async () => {
-  if (markingMachineStatus.value === 'green' && cuttingMachineStatus.value === 'green') {  
-      
+  if (markingMachineStatus.value === 'green' && cuttingMachineStatus.value === 'green') {
   try  {
   let engineeringId = window.localStorage.getItem('engineeringId')
-console.log(engineeringId);
-
   const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
     engineerId: engineeringId,
     state: 1,
@@ -362,10 +497,10 @@
       ElMessage.success(response.message);
       // window.location.reload() 
       blind.value = false;
-      selectedProjectNoa.value = ''
+      selectedProjectNoa.value = '';
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
 }
 catch (error) {
@@ -374,7 +509,7 @@
   }
     } else if (markingMachineStatus.value === '#911005' || cuttingMachineStatus.value === '#911005') {  
       // 鎻愮ず鐢ㄦ埛鎵撴爣鏈烘湭灏辩华  
-      ElMessage.warning('璇风‘璁ゆ墦鏍囨満鍜屽垏鍓叉満鐨勫氨缁姸鎬侊紒');  
+      ElMessage.warning(t('basicData.pausea'));  
     } 
 }
 // 鏆傚仠
@@ -390,16 +525,16 @@
     if (response.code == 200) {
       ElMessage.success(response.message);
       blinda.value = false;
-      tableData.splice([]);
+      // tableData.splice([]);
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   }
     else  {
       ElMessage({
         type: 'info',
-        message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
+        message: t('basicData.infonull'),
       })
     }
 }
@@ -426,13 +561,13 @@
       tableData.splice([]);
 
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   }
     else  {
       ElMessage({
         type: 'info',
-        message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
+        message: t('basicData.infonull'),
       })
     }
 }
@@ -445,13 +580,13 @@
 function getStatusText(state: number) {
   switch (state) {
     case 0:  
-      return '绛夊緟涓�';  
+      return t('basicData.waiting');
     case 1:  
-      return '涓婄墖涓�';  
+      return t('basicData.up');
     case 2:  
-      return '涓婄墖涓�';  
+    return t('basicData.up');
     case 100:  
-      return '宸插畬鎴�';  
+    return t('basicData.finish');
   }  
 }  
 function getStatusType(state: number) {  
@@ -494,50 +629,67 @@
 const confirmCuttingMachine = () => {  
   cuttingMachineStatus.value = 'green';  
 }; 
-
-
-
-const wsUrl = 'ws://10.153.19.150:88/api/loadGlass/api/talk/loadGlass'; 
-const ws = new WebSocket(wsUrl);  
-ws.onopen = () => {  
-  console.log('WebSocket杩炴帴宸叉墦寮�');  
-};  
-  
-// 鐩戝惉WebSocket鐨勯敊璇簨浠�  
-ws.onerror = (error) => {  
-  console.error('WebSocket鍙戠敓閿欒:', error);  
-};  
-  
-// 鐩戝惉WebSocket鐨勫叧闂簨浠�  
-ws.onclose = (event) => {  
-  if (event.wasClean) {  
-    console.log('WebSocket杩炴帴宸叉甯稿叧闂�');  
-  } else {  
-    console.error('WebSocket杩炴帴寮傚父鍏抽棴');  
+const toggleEnableState = async (row: any) => {  
+  // 妫�鏌� id 鏄惁涓虹┖  
+  if (!row.id) {  
+    ElMessage.error(t('basicData.updatanull'));  
+    return; // 濡傛灉 id 涓虹┖锛屽垯涓嶆墽琛屽悗缁搷浣�  
   }  
-};  
-  
-// 鐩戝惉WebSocket鐨勬秷鎭簨浠�  
-ws.onmessage = (event) => {  
-  // 鍋囪鏈嶅姟鍣ㄥ彂閫佺殑鏄疛SON鏍煎紡鐨勫瓧绗︿覆  
+  const newState = row.state === 100 ? 0 : 100;  
   try {  
-    const data = JSON.parse(event.data); // 瑙f瀽娑堟伅涓篔SON  
-  
-    // 鍋囪鏈嶅姟鍣ㄥ彂閫佺殑鏁版嵁缁撴瀯鏄� { InkageStatus: ["1"] }  
-    if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {  
-      const status = data.InkageStatus[0]; 
-      cuttingMachine.value = status; 
-      upstatus.value = status === '1' ? '涓婄墖鏈鸿仈鏈虹姸鎬侊細' : '涓婄墖鏈烘墜鍔ㄧ姸鎬侊細';
-      cuttingMachineStatusColor.value = status === '1' ? '#911005' : 'green';  
-      inKageWord.value = status === '1' ? 0 : 1;  
+    // 鍙戦�佽姹傚埌鍚庣鏇存柊鐘舵��  
+    const response = await request.post('/loadGlass/up-patten-usage/updateGlassState', { id: row.id, state: newState });  
+    if (response.code === 200) {  
+      ElMessage.success(response.message);  
+      row.state = newState;  
     } else {  
-      // 澶勭悊閿欒鎯呭喌鎴栨棤鏁堟暟鎹�  
-      console.error('鎺ユ敹鍒扮殑鏁版嵁鏃犳晥', data);  
+      ElMessage.error(response.message);  
     }  
   } catch (error) {  
-    console.error('瑙f瀽WebSocket娑堟伅鏃跺彂鐢熼敊璇�', error);  
+    // 澶勭悊璇锋眰閿欒  
+    ElMessage.error(t('basicData.glassnull'));   
   }  
 };  
+// 涓婄墖鏈鸿仈鏈虹姸鎬�
+// const wsUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`;
+// const ws = new WebSocket(wsUrl);  
+// ws.onopen = () => {  
+//   console.log('WebSocket杩炴帴宸叉墦寮�');  
+// };  
+  
+// // 鐩戝惉WebSocket鐨勯敊璇簨浠�  
+// ws.onerror = (error) => {  
+//   console.error('WebSocket鍙戠敓閿欒:', error);  
+// };  
+  
+// // 鐩戝惉WebSocket鐨勫叧闂簨浠�  
+// ws.onclose = (event) => {  
+//   if (event.wasClean) {  
+//     console.log('WebSocket杩炴帴宸叉甯稿叧闂�');  
+//   } else {  
+//     console.error('WebSocket杩炴帴寮傚父鍏抽棴');  
+//   }  
+// };  
+// // 鐩戝惉WebSocket鐨勬秷鎭簨浠�  
+// ws.onmessage = (event) => {  
+//   try {   
+//     const data = JSON.parse(event.data.replace('<END>', '')); // 瑙f瀽娑堟伅涓篔SON  
+//     if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {  
+// if(data.InkageStatus!=null){
+//       const status = data.InkageStatus[0]; 
+//       cuttingMachine.value = status; 
+//             upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
+//       cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';  
+//       inKageWord.value = status === '1' ? 0 : 1;  
+// }
+//     } else {  
+//       // 澶勭悊閿欒鎯呭喌鎴栨棤鏁堟暟鎹�  
+//       // console.error('鎺ユ敹鍒扮殑鏁版嵁鏃犳晥', data);  
+//     }  
+//   } catch (error) {  
+//     // console.error('瑙f瀽WebSocket娑堟伅鏃跺彂鐢熼敊璇�', error);  
+//   }  
+// };  
 const confirmCutting = async () => {  
   try {  
     const response = await request.post('/loadGlass/LoadGlass/updateMesInkageLoad', 
@@ -545,8 +697,8 @@
   );  
     if (response.code == 200) {  
       const status = response.data.status; 
-      upstatus.value = status === '1' ? '涓婄墖鏈鸿仈鏈虹姸鎬侊細' : '涓婄墖鏈烘墜鍔ㄧ姸鎬侊細';  
-      cuttingMachineStatusColor.value = status === '1' ? '#911005' : 'green';  
+      upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
+      cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';  
       // 鏄剧ず鎴愬姛娑堟伅  
       ElMessage.success(response.message);  
     } else {  
@@ -558,61 +710,48 @@
     ElMessage.error('璇锋眰鏃跺彂鐢熼敊璇�');  
   }  
 };
-// const confirmCutting = async () => {
-//   try  {
-//   const response = await request.post('/loadGlass/LoadGlass/updateMesInkageLoad', {
-//     inKageWord: inKageWord.value
-//     })
-//     if (response.code == 200) {
-//       inKageWord == '1' ? '涓婄墖鏈鸿仈鏈虹姸鎬侊細' : '涓婄墖鏈烘墜鍔ㄧ姸鎬侊細';
-//       inKageWord.value == '1' ? '#911005' : 'green';  
-//       ElMessage.success(response.message);
-//     } else {
-//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-//       ElMessage.error(response.msg);
-//     }
-// }
-// catch (error) {
-//     // 澶勭悊閿欒
-//     console.error(error);
-//   }
-// }
 </script>
- 
 <template>
   <div>
     <div id="dotClass">
-      <div>鎵撴爣鏈哄氨缁姸鎬侊細</div>  
+      <div>{{ $t('basicData.laserprinting') }}</div>  
     <i :style="{ marginTop: '2px', backgroundColor: markingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>  
-    <el-button @click="confirmMarkingMachine" style="margin-left: 30px;margin-top: -3px;">纭</el-button>
-    <div style="margin-left: 70px;">鍒囧壊鏈哄氨缁姸鎬侊細</div>
+    <el-button @click="confirmMarkingMachine" style="margin-left: 30px;margin-top: -3px;">{{ $t('basicData.yes') }}</el-button>
+    <div style="margin-left: 70px;">{{ $t('basicData.cuttingmachine') }}</div>
     <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatus, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>  
-    <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;" >纭</el-button>
+    <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;" >{{ $t('basicData.yes') }}</el-button>
     <div style="margin-left: 70px;">{{ upstatus  }} </div>
     <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i>  
-    <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;" >纭</el-button>
+    <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;" >{{ $t('basicData.change') }}</el-button>
    
   </div>
-    <el-button style="margin-top: 5px;margin-left: 15px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">閫夋嫨宸ョ▼</el-button>
-    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="primary" @click="handleBind">寮�濮嬩笂鐗�</el-button>
-    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">鏆傚仠</el-button>
-    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" @click="handleBindb">鍋滄浠诲姟</el-button>
+    <el-button :disabled="!canSelectProject" style="margin-top: 5px;margin-left: 15px;"  type="primary" @click="selectproject">{{ $t('basicData.selectproject') }}</el-button>
+    <el-button :disabled="!canSelectProject" :style="{ backgroundColor: canStartLoading ? 'green' : 'initial',color: canStartLoading ? 'white' : 'black', }" style="margin-top: 5px;margin-left: 20px;"  @click="handleBind">{{ $t('basicData.startloading') }}</el-button>
+    <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="warning" @click="handleBinda">{{ $t('basicData.stop') }}</el-button>
+    <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button>
+    <!-- <el-button style="margin-top: 5px;margin-left: 20px;"  id="searchButton" type="danger" @click="handleBindb">鍋滄浠诲姟</el-button> -->
     
     <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
     <el-table
-    height="150"
+    height="350"
      ref="table" 
      :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
       :data="tableData"
     >
-    <el-table-column prop="engineeringId" label="宸ョ▼鍙�" width="200" align="center"/>
-      <el-table-column prop="width" label="鍘熺墖瀹�" align="center"/>
-      <el-table-column prop="height" label="鍘熺墖楂�" align="center"/>
-      <el-table-column prop="filmsId" label="鑶滅郴" align="center"/>
-      <el-table-column prop="layoutSequence" label="鏁伴噺" align="center"/>
-      <el-table-column prop="thickness" label="鍘氬害" align="center"/>
-      <el-table-column
+      <el-table-column prop="layoutSequence" :label="$t('basicData.layoutSequence')" width="100" align="center"/>
+      <el-table-column prop="engineeringId" :label="$t('basicData.projectnumber')" width="200" align="center"/>
+      <el-table-column prop="width" :label="$t('basicData.glasswidth')" align="center"/>
+      <el-table-column prop="height" :label="$t('basicData.glassheight')" align="center"/>
+      <el-table-column prop="filmsId" :label="$t('basicData.coatingtypes')" align="center"/>
+      <el-table-column :label="$t('basicData.quantity')" align="center">  
+      <template #default="{ row }">  
+        <!-- 杩欓噷鎬绘槸鏄剧ず 1 -->  
+        <span>{{ 1 }}</span>  
+      </template>  
+    </el-table-column>  
+      <el-table-column prop="thickness" :label="$t('basicData.thickness')" align="center"/>
+      <!-- <el-table-column
             align="center"
             label="鐘舵��"
             min-width="80"
@@ -622,32 +761,72 @@
         <el-tag :type="getStatusType(scope.row.state)">  
           {{ getStatusText(scope.row.state) }}  
         </el-tag>  
-      </template> 
+      </template>  -->
+      <el-table-column
+          align="center"
+            :label="$t('basicData.startstatus')"
+            min-width="80"
+            prop="state"
+          >
+          <template #default="scope">  
+          <el-tag  
+            :type="scope.row.state === 100 ? 'success' : 'warning'"  
+            @click="toggleEnableState(scope.row)"  
+          >  
+            {{ scope.row.state === 100 ? $t('basicData.pass') : $t('basicData.waiting') }}
+          </el-tag>  
+        </template> 
           </el-table-column>
     </el-table>
       </div>
     </el-card>
-  <el-dialog v-model="blind" top="30vh" width="25%" title="鏄惁寮�濮嬩笂鐗�?" >
+  <el-dialog v-model="blind" top="30vh" width="25%" :title="$t('basicData.startfilm')">
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handle">
-          纭
+          {{ $t('basicData.confirm') }}
         </el-button>
-        <el-button @click="blind = false">鍙栨秷</el-button>
+        <el-button @click="blind = false">{{ $t('basicData.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog>
-  <el-dialog v-model="blinda" top="30vh" width="25%" title="鏄惁鏆傚仠?" >
+  
+<el-dialog v-model="dialoglea" top="15vh" width="70%" :title="$t('searchOrder.dutyinformation')">
+    <el-table  ref="table" style="margin-top: 20px;height: 300px;"
+        :data="tableDatax" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="line" fixed align="center" :label="$t('searchOrder.line')"/>
+          <el-table-column prop="workProcesses" fixed align="center" :label="$t('searchOrder.process')" />
+          <el-table-column prop="teamsGroupsName" align="center" :label="$t('searchOrder.team')">
+        <template #default="{ row }">  
+          <el-input v-model="row.teamsGroupsName" autocomplete="off" min-width="150"/>  
+        </template>  
+      </el-table-column>
+          <el-table-column prop="deviceName" align="center" :label="$t('searchOrder.basic')">
+            <template #default="{ row }">  
+          <el-input v-model="row.deviceName" autocomplete="off" min-width="150"/>  
+        </template>
+        </el-table-column>
+        </el-table>
+        <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handleConfirm">
+          {{ $t('searchOrder.add') }}
+        </el-button>
+        <el-button @click="dialoglea = false">{{ $t('searchOrder.cancel') }}</el-button>
+      </div>
+    </template>
+</el-dialog>
+  <el-dialog v-model="blinda" top="30vh" width="25%" :title="$t('basicData.whetherpause')">
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handlea">
-          纭
+          {{ $t('basicData.confirm') }}
         </el-button>
-        <el-button @click="blinda = false">鍙栨秷</el-button>
+        <el-button @click="blinda = false">{{ $t('basicData.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog>
-  <el-dialog v-model="blindb" top="30vh" width="25%" title="鏄惁鍋滄浠诲姟?" >
+  <!-- <el-dialog v-model="blindb" top="30vh" width="25%" title="鏄惁鍋滄浠诲姟?" >
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handleb">
@@ -656,31 +835,33 @@
         <el-button @click="blindb = false">鍙栨秷</el-button>
       </div>
     </template>
-  </el-dialog>
+  </el-dialog> -->
       <div id="parent">
-        <img src="../../assets/shangpianji.png" alt="" style="max-width: 20%;max-height: 20%;margin-top: 20px;margin-left: 500px;">
+        <img src="../../assets/shangpian.png" alt="" style="max-width: 40%;max-height: 40%;margin-top: 20px;margin-left: 340px;">
         <div id="overlay" v-show="flake"></div>
         <div id="overlaya" v-show="flakea"></div>
+        <div id="overlayb" v-show="flakeb"></div>
+        <div id="overlayc" v-show="flakec"></div>
       </div>
-      <div style="margin-top: -350px;margin-left: 650px;">
-        <el-table :data="tableDataa" border style="width: 70%"
+      <div style="margin-top: -300px;margin-left: 680px;">
+        <el-table :data="tableDataa" border style="width: 85%"
      :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
         >
-          <el-table-column prop="workstationId" align="center" label="宸ヤ綅" min-width="50" />
-          <el-table-column prop="patternWidth" align="center" label="瀹�" min-width="80" />
-          <el-table-column prop="patternHeight" align="center" label="楂�" min-width="80" />
-          <el-table-column prop="filmsId" align="center" label="鑶滅郴" min-width="80" />
-          <el-table-column prop="number" align="center" label="鏁伴噺" min-width="80" />
-          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="150">
+          <el-table-column prop="workstationId" align="center" :label="$t('basicData.station')" min-width="60" />
+          <el-table-column prop="patternWidth" align="center" :label="$t('basicData.width')" min-width="80" />
+          <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80" />
+          <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80" />
+          <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80" />
+          <el-table-column fixed="right" :label="$t('basicData.operate')" align="center" width="150">
             <template #default="scope">
-              <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">娣诲姞</el-button>
-              <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">鍒犻櫎</el-button>
+              <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">{{ $t('basicData.add') }}</el-button>
+              <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">{{ $t('basicData.delete') }}</el-button>
             </template>
         </el-table-column>
         </el-table>
     </div>
     
-  <el-dialog v-model="add" top="23vh" width="45%" title="娣诲姞鍘熺墖" >
+  <el-dialog v-model="add" top="23vh" width="45%" :title="$t('basicData.addglass')" >
     <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
             <el-form  size="mini" label-width="150px">
       <el-form label-width="70px" label-position="right">
@@ -688,12 +869,12 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-              <el-form-item label="瀹斤細" :required="true" style="width: 14vw">
+              <el-form-item :label="$t('basicData.widtha')" :required="true" style="width: 14vw">
                <el-select  
                       v-model="selectedValue"  
                       filterable  
                       clearable  
-                      placeholder="璇烽�夋嫨瀹�"  
+                      :placeholder="$t('basicData.selectwidth')"
                       style="width: 220px"  
                       @input="handleInputChangea"  
                     >  
@@ -710,12 +891,12 @@
           <el-col :span="9">
             <div id="dta" style="font-size: 15px;">
         <div>
-          <el-form-item label="楂橈細" :required="true" style="width: 14vw">
+          <el-form-item :label="$t('basicData.heighta')" :required="true" style="width: 14vw">
             <el-select  
                       v-model="selectedValuea"  
                       filterable  
                       clearable  
-                      placeholder="璇烽�夋嫨楂�"  
+                      :placeholder="$t('basicData.selectheight')" 
                       style="width: 220px"  
                       @input="handleInputChangea"  
                     >  
@@ -734,12 +915,12 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-              <el-form-item label="鑶滅郴锛�" :required="true" style="width: 14vw;">
+              <el-form-item :label="$t('basicData.coatingtypesa')"  :required="true" style="width: 14vw;">
                 <el-select  
                       v-model="selectedValueb"  
                       filterable  
                       clearable  
-                      placeholder="璇烽�夋嫨鑶滅郴"  
+                      :placeholder="$t('basicData.selectcoatingtypes')"
                       style="width: 220px"  
                       @input="handleInputChangea"  
                     >  
@@ -755,12 +936,12 @@
           <el-col :span="9">
             <div id="dta" style="font-size: 15px;">
         <div>
-              <el-form-item label="鍘氬害锛�" :required="true" style="width: 14vw">
+              <el-form-item :label="$t('basicData.thicknessa')" :required="true" style="width: 14vw">
                 <el-select  
                       v-model="selectedValuec"  
                       filterable  
                       clearable  
-                      placeholder="璇烽�夋嫨鍘氬害"  
+                      :placeholder="$t('basicData.selectthickness')"
                       style="width: 220px"  
                       @input="handleInputChangea"  
                     >  
@@ -779,8 +960,8 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-              <el-form-item label="鏁伴噺锛�" :required="true" style="width: 14vw;">
-                <el-input  v-model="number" autocomplete="off" />
+              <el-form-item :label="$t('basicData.quantitya')" :required="true" style="width: 14vw;">
+                <el-input :placeholder="$t('basicData.selectquantity')" v-model="number" autocomplete="off" />
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -790,31 +971,31 @@
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handleConfirm">
-          纭
+          {{ $t('basicData.confirm') }}
         </el-button>
-        <el-button @click="add = false">鍙栨秷</el-button>
+        <el-button @click="add = false">{{ $t('basicData.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog>
-  <el-dialog v-model="adda" top="30vh" width="25%" title="鏄惁鍒犻櫎璇ユ潯淇℃伅?" >
+  <el-dialog v-model="adda" top="30vh" width="25%" :title="$t('basicData.deletemessage')">
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handleConfirma">
-          纭
+          {{ $t('basicData.confirm') }}
         </el-button>
-        <el-button @click="adda = false">鍙栨秷</el-button>
+        <el-button @click="adda = false">{{ $t('basicData.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog>
         </div>
-  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" title="宸ョ▼" >
+  <el-dialog v-model="dialogFormVisible" top="24vh" width="30%" :title="$t('basicData.project')" >
     <div style="margin-left: 50px;margin-bottom: 10px;">
-      <el-form-item label="宸ョ▼鍙凤細" :required="true">
+      <el-form-item :label="$t('basicData.projectnumber')" :required="true">
         <el-select  
            v-model="selectedProjectNo"  
            filterable  
            clearable  
-           placeholder="璇烽�夋嫨宸ョ▼"  
+           :placeholder="$t('basicData.plselectproject')"
            style="width: 220px"  
            @input="handleInputChange"  
          >  
@@ -830,9 +1011,9 @@
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handleup">
-          纭
+          {{ $t('basicData.confirm') }}
         </el-button>
-        <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
+        <el-button @click="dialogFormVisible = false">{{ $t('basicData.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog>
@@ -858,23 +1039,41 @@
   width: 1500px;
   margin-left: -300px
 }
+#overlayb{
+  position: absolute;
+  z-index: 1;
+  width: 228px;
+  height: 16px;
+  background-color: #529b2e;
+  margin-top: -303px;
+  margin-left: 355px;
+}
+#overlayc{
+  position: absolute;
+  z-index: 1;
+  width: 228px;
+  height: 16px;
+  background-color: #529b2e;
+  margin-top: -303px;
+  margin-left:703px;
+}
 #overlay{
   position: absolute;
   z-index: 1;
-  width: 212px;
-  height: 15px;
+  width: 228px;
+  height: 16px;
   background-color: #529b2e;
-  margin-top: -404px;
-  margin-left: 542px;
+  margin-top: -45px;
+  margin-left: 355px;
 }
 #overlaya{
   position: absolute;
   z-index: 1;
-  width: 212px;
-  height: 15px;
+  width: 228px;
+  height: 16px;
   background-color: #529b2e;
-  margin-top: -38px;
-  margin-left: 537px;
+  margin-top: -45px;
+  margin-left: 703px;
 }
  
 </style>
\ No newline at end of file

--
Gitblit v1.8.0