From fe7095395f8454bdf5a817f7d5c612af5b83fbd9 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期二, 04 十一月 2025 13:05:38 +0800
Subject: [PATCH] 卧式理片模块新增报警,中空理片笼、钢化理片笼-理片笼详情改造

---
 UI-Project/src/views/Caching/cachingun.vue      |  139 ++++++++++
 UI-Project/src/views/Slicecage/slicecage.vue    |  153 ++++-------
 UI-Project/src/views/hollow/hollowslicecage.vue |  151 ++++-------
 UI-Project/src/views/User/alarmLog.vue          |  170 +++++++++++++
 UI-Project/src/views/Caching/cachingbefore.vue  |  142 ++++++++++
 UI-Project/src/lang/en.js                       |    3 
 UI-Project/src/lang/py.js                       |    3 
 UI-Project/src/lang/zh.js                       |    8 
 UI-Project/src/router/index.js                  |    5 
 UI-Project/src/lang/kr.js                       |    3 
 10 files changed, 590 insertions(+), 187 deletions(-)

diff --git a/UI-Project/src/lang/en.js b/UI-Project/src/lang/en.js
index abbd603..b8d5f71 100644
--- a/UI-Project/src/lang/en.js
+++ b/UI-Project/src/lang/en.js
@@ -812,6 +812,9 @@
         Content:'Content',
         idSame:'The glass ID for the entry task is the same',
         sizeSame:'There are glass pieces of the same specification inside the cage',
+        slotLess:'Insufficient remaining slots',
+        overSize:'There is glass in the straight-through feeder, end this feeding process.',
+        noGlass:'Glass information not found, please collect the project',
         projectMsg2:'Please select a label template',
         clickmakesure: 'Whether or not to confirm the click锛�',
         logarithm: 'logarithm锛�',
diff --git a/UI-Project/src/lang/kr.js b/UI-Project/src/lang/kr.js
index 770fcf0..b661dab 100644
--- a/UI-Project/src/lang/kr.js
+++ b/UI-Project/src/lang/kr.js
@@ -813,6 +813,9 @@
         content:'雮挫毄',
         idSame:'歆勳瀰 鞛戩梾 鞙犽Μ ID臧� 霃欖澕頃╇媹雼�.',
         sizeSame:'鞖半Μ 鞎堨棎 霃欖澕頃� 攴滉博鞚� 鞙犽Μ臧� 臁挫灛頃╇媹雼�.',
+        slotLess:'雮橂ǜ歆� 攴鸽Μ霌滉皜 攵�臁表暕雼堧嫟.',
+        overSize:'歆來喌 頂茧敥雽�鞐� 鞙犽Μ臧� 鞛堨柎 鞚措矆 頂茧敥鞚� 膦呺頃╇媹雼�',
+        noGlass:'鞙犽Μ 鞝曤炒毳� 彀眷潉 靾� 鞐嗢姷雼堧嫟. 瓿奠爼鞚� 氚涭溂靹胳殧.',
         clickmakesure: '韥措Ν 頇曥澑 鞐秬锛�',
         logarithm: '雽�靾橈細',
         totalPairQuantitya: '齑� 鞛勲 歆濎垬',
diff --git a/UI-Project/src/lang/py.js b/UI-Project/src/lang/py.js
index 125841f..ed67e7d 100644
--- a/UI-Project/src/lang/py.js
+++ b/UI-Project/src/lang/py.js
@@ -732,6 +732,9 @@
         content:'鍐呭',
         idSame:'杩涚墖浠诲姟鐜荤拑ID鐩稿悓',
         sizeSame:'绗煎唴瀛樺湪鐩稿悓瑙勬牸鐨勭幓鐠�',
+        slotLess:'鍓╀綑鏍煎瓙涓嶈冻',
+        overSize:'鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖',
+        noGlass:'鏈壘鍒扮幓鐠冧俊鎭紝璇烽鍙栧伐绋�',
         clickmakesure: '鏄惁纭鐐瑰嚮锛�',
         logarithm: '瀵规暟锛�',
         totalPairQuantitya: '浠诲姟鎬婚厤瀵规暟',
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index a6c60df..7a4d0e9 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -470,6 +470,11 @@
           prompt:'鎻愮ず',
       },
       delivery:{
+          alarmStartTime:'鎶ヨ寮�濮嬫椂闂�',
+          alarmEndTime:'鎶ヨ缁撴潫鏃堕棿',
+          equipment:'璁惧',
+          content:'鍐呭',
+          confirmer:'纭浜�',
           addrole:'娣诲姞瑙掕壊',
           editrole:'淇敼瑙掕壊',
           role :'瑙掕壊',
@@ -816,6 +821,9 @@
         content:'鍐呭',
         idSame:'杩涚墖浠诲姟鐜荤拑ID鐩稿悓',
         sizeSame:'绗煎唴瀛樺湪鐩稿悓瑙勬牸鐨勭幓鐠�',
+        slotLess:'鍓╀綑鏍煎瓙涓嶈冻',
+        overSize:'鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖',
+        noGlass:'鏈壘鍒扮幓鐠冧俊鎭紝璇烽鍙栧伐绋�',
         projectMsg2:'璇烽�夋嫨鏍囩妯℃澘',
         clickmakesure: '鏄惁纭鐐瑰嚮锛�',
         logarithm: '瀵规暟锛�',
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index 034f87c..2424e14 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -230,6 +230,11 @@
       path: '/User/userpageNo',
       name: 'userpageNo',
       component: () => import('../views/User/userpageNo.vue')
+    },
+    {
+      path: '/User/alarmLog',
+      name: 'alarmLog',
+      component: () => import('../views/User/alarmLog.vue')
     }
   ]
  },
diff --git a/UI-Project/src/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
index 4cbd384..f5939fa 100644
--- a/UI-Project/src/views/Caching/cachingbefore.vue
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -17,14 +17,50 @@
 const adjustedRects = ref([]);
 const selectValuesa = reactive([]);
 const timeRange = ref([])
+const tableDataAlert = ref([])
 const taskState = ref('')
 const taskStat = ref('')
 const taskType = ref('')
 const glassId = ref('')
+const alertText = ref('')
+const alertMessage = ref('')
+const alarmData = ref('')
+// const alarmData = ref<any>(null)
+const showAlert = ref(false)
+const showModal = ref(false)
 const blindb = ref(false)
 let socket = null;
 const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassOne`;
 const handleMessage = (data) => {
+    // 鎶ヨ淇℃伅
+if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) {
+  const alert = data.alarmInfo[0];
+  const { id, alarmMessage, ...rest } = alert[0];
+  alertMessage.value = `${alarmMessage}`;
+  alertMessage.value = `${alert[0].alarmMessage}`;
+  if (alert[0].alarmCode === 'sizeSame') {
+    alertText.value = t('hellow.sizeSame');
+  } else if (alert[0].alarmCode === 'idSame') {
+    alertText.value = t('hellow.idSame');
+  } else if (alert[0].alarmCode === 'slotLess') {
+    alertText.value = t('hellow.slotLess');
+  } else if (alert[0].alarmCode === 'overSize') {
+    alertText.value = t('hellow.overSize');
+  } else if (alert[0].alarmCode === 'noGlass') {
+    alertText.value = t('hellow.noGlass');
+  } else {
+    alertText.value = t('hellow.unknownAlert');
+  }
+    alarmData.value = data; // 瀛樺偍瀹屾暣鏁版嵁鐢ㄤ簬寮圭獥
+    showAlert.value = true;
+}
+  const formattedData = data.alarmInfo[0].map(record => ({
+     ...record,
+     formattedCreateTime: formatTimestamp(record.createTime),
+     alarmCode: record.alarmCode,
+     alarmMessage: record.alarmMessage
+   }));
+    tableDataAlert.value = formattedData;
   const cageInfo = data.taskMessage[0];
   if (cageInfo && cageInfo.createTime) {
     cageInfo.formattedCreateTime = formatTimestamp(cageInfo.createTime);
@@ -226,7 +262,53 @@
     }  
   } catch (error) {
   }  
-}; 
+};  
+// 璀︽姤纭
+const handleSure = async (row) => {
+  try {
+    const confirmResult = await ElMessageBox.confirm(
+      t('hellow.clickmakesure'),
+      t('productStock.prompt'),
+      {
+        confirmButtonText: t('productStock.yes'),
+        cancelButtonText: t('productStock.cancel'),
+        type: 'warning',
+      }
+    );
+    if (confirmResult === 'confirm') {
+      const response = await request.post('/hollowGlass/productAlarmInfo/updateAlarmInfo', {
+        id: row.id
+      })
+      if (response.code === 200) {
+        showModal.value = false;
+        showAlert.value = false;
+
+        ElMessage.success(response.message);
+      } else {
+        ElMessage.error(response.msg);
+      }
+    }
+  } catch (error) {
+    console.error('鍙戠敓閿欒:', error);
+  }
+};
+
+// 璀︽姤鍙屽嚮寮圭獥
+const handleDoubleClick = () => {
+  showModal.value = true;
+};
+const getAlertText = (alarmCode) => {
+  const codeMap = {
+    sizeSame: 'hellow.sizeSame',
+    idSame: 'hellow.idSame',
+    slotLess: 'hellow.slotLess',
+    overSize: 'hellow.overSize',
+    noGlass: 'hellow.noGlass'
+  };
+  return alarmCode in codeMap 
+    ? t(codeMap[alarmCode]) 
+    : t('hellow.unknownAlert');
+};
 const rowClassName = ({ row }) => {
   // 鏍规嵁 enableState 璁剧疆琛岀殑 CSS 绫�
   return row.slot % 2 === 0 ? 'success-row' : '';
@@ -324,6 +406,15 @@
 </script>
 <template>
   <div style="height: 500px;">
+    <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick">
+    <div class="alert-content">
+      <el-icon><WarnTriangleFilled /></el-icon>
+      <span class="alert-text">
+        {{ alertText }} (id:{{ alertMessage }})
+      </span>
+    </div>
+    <button @click="showAlert = false" class="close-btn">脳</button>
+  </div>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;">
     <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handlehistorical" type="primary">{{ $t('searchOrder.historicaltasks') }}</el-button>
     <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handleptask()" type="warning">{{ $t('searchOrder.partask') }}</el-button>
@@ -449,6 +540,40 @@
      frameborder="0"
      ></iframe>
   </el-dialog>
+  <!-- 鎶ヨ寮圭獥 -->
+  <el-dialog
+    v-model="showModal"
+    width="40%"
+    center
+  >
+      <el-table 
+      ref="table"
+      border
+      :data="tableDataAlert" 
+      max-height="calc(500px - 35px)"
+      style="width: 100%;"
+    >
+      <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" />
+      <el-table-column 
+       :label="$t('hellow.content')" 
+       align="center" 
+       min-width="220"
+     >
+       <template #default="scope">
+           <span>
+             {{ getAlertText(scope.row.alarmCode) }} 
+             (id:{{ scope.row.alarmMessage }})
+           </span>
+       </template>
+     </el-table-column>
+      <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100">
+        <template #default="scope">
+          <el-button type="text" plain
+            @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </el-dialog>
 <!-- <el-dialog v-model="blindb" top="10vh" width="90%">
   <div style="display: flex;">
     <el-input v-model="glassId" style="margin-left: 10px;margin-bottom: 10px;width: 270px;" :placeholder="$t('searchOrder.inglassID')" />
@@ -546,4 +671,19 @@
   max-width: 100%;
   margin-left: 10%
 }
+.global-alert-bar {
+  position: fixed;
+  top: 0;
+  left: 50%; /* 姘村钩灞呬腑鍏抽敭 */
+  transform: translateX(-50%); /* 姘村钩灞呬腑鍏抽敭 */
+  padding: 12px 20px;
+  background-color: #dbdbd7;
+  box-shadow: 0 2px 10px rgba(0,0,0,0.2);
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  z-index: 9999;
+  max-width: 80%; /* 闃叉灏忓睆骞曟孩鍑� */
+  min-width: 400px; /* 鏈�灏忓搴︿繚璇� */
+}
 </style>
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index 128830a..57c72c1 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -17,13 +17,48 @@
 const adjustedRects = ref([]);
 const selectValuesa = reactive([]);
 const timeRange = ref([])
+const tableDataAlert = ref([])
 const taskState = ref('')
 const taskType = ref('')
 const glassId = ref('')
+const alertText = ref('')
+const alertMessage = ref('')
+const alarmData = ref('')
+const showAlert = ref(false)
+const showModal = ref(false)
 const blindb = ref(false)
 let socket = null;
 const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassTwo`;
 const handleMessage = (data) => {
+    // 鎶ヨ淇℃伅
+if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) {
+  const alert = data.alarmInfo[0];
+  const { id, alarmMessage, ...rest } = alert[0];
+  alertMessage.value = `${alarmMessage}`;
+  alertMessage.value = `${alert[0].alarmMessage}`;
+  if (alert[0].alarmCode === 'sizeSame') {
+    alertText.value = t('hellow.sizeSame');
+  } else if (alert[0].alarmCode === 'idSame') {
+    alertText.value = t('hellow.idSame');
+  } else if (alert[0].alarmCode === 'slotLess') {
+    alertText.value = t('hellow.slotLess');
+  } else if (alert[0].alarmCode === 'overSize') {
+    alertText.value = t('hellow.overSize');
+  } else if (alert[0].alarmCode === 'noGlass') {
+    alertText.value = t('hellow.noGlass');
+  } else {
+    alertText.value = t('hellow.unknownAlert');
+  }
+    alarmData.value = data; // 瀛樺偍瀹屾暣鏁版嵁鐢ㄤ簬寮圭獥
+    showAlert.value = true;
+}
+  const formattedData = data.alarmInfo[0].map(record => ({
+     ...record,
+     formattedCreateTime: formatTimestamp(record.createTime),
+     alarmCode: record.alarmCode,
+     alarmMessage: record.alarmMessage
+   }));
+    tableDataAlert.value = formattedData;
   const cageInfo = data.taskMessage[0];
   if (cageInfo && cageInfo.createTime) {
     cageInfo.formattedCreateTime = formatTimestamp(cageInfo.createTime);
@@ -209,6 +244,52 @@
   } catch (error) {
   }  
 }; 
+// 璀︽姤纭
+const handleSure = async (row) => {
+  try {
+    const confirmResult = await ElMessageBox.confirm(
+      t('hellow.clickmakesure'),
+      t('productStock.prompt'),
+      {
+        confirmButtonText: t('productStock.yes'),
+        cancelButtonText: t('productStock.cancel'),
+        type: 'warning',
+      }
+    );
+    if (confirmResult === 'confirm') {
+      const response = await request.post('/hollowGlass/productAlarmInfo/updateAlarmInfo', {
+        id: row.id
+      })
+      if (response.code === 200) {
+        showModal.value = false;
+        showAlert.value = false;
+
+        ElMessage.success(response.message);
+      } else {
+        ElMessage.error(response.msg);
+      }
+    }
+  } catch (error) {
+    console.error('鍙戠敓閿欒:', error);
+  }
+};
+
+// 璀︽姤鍙屽嚮寮圭獥
+const handleDoubleClick = () => {
+  showModal.value = true;
+};
+const getAlertText = (alarmCode) => {
+  const codeMap = {
+    sizeSame: 'hellow.sizeSame',
+    idSame: 'hellow.idSame',
+    slotLess: 'hellow.slotLess',
+    overSize: 'hellow.overSize',
+    noGlass: 'hellow.noGlass'
+  };
+  return alarmCode in codeMap 
+    ? t(codeMap[alarmCode]) 
+    : t('hellow.unknownAlert');
+};
 const rowClassName = ({ row }) => {
   // 鏍规嵁 enableState 璁剧疆琛岀殑 CSS 绫�
   return row.slot % 2 === 0 ? 'success-row' : '';
@@ -306,6 +387,15 @@
 </script>
 <template>
   <div style="height: 500px;">
+    <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick">
+    <div class="alert-content">
+      <el-icon><WarnTriangleFilled /></el-icon>
+      <span class="alert-text">
+        {{ alertText }} (id:{{ alertMessage }})
+      </span>
+    </div>
+    <button @click="showAlert = false" class="close-btn">脳</button>
+  </div>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;">
     <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handlehistorical" type="primary">{{ $t('searchOrder.historicaltasks') }}</el-button>
     <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handleptask()" type="warning">{{ $t('searchOrder.partask') }}</el-button>
@@ -431,6 +521,40 @@
      frameborder="0"
      ></iframe>
   </el-dialog>
+  <!-- 鎶ヨ寮圭獥 -->
+  <el-dialog
+    v-model="showModal"
+    width="40%"
+    center
+  >
+      <el-table 
+      ref="table"
+      border
+      :data="tableDataAlert" 
+      max-height="calc(500px - 35px)"
+      style="width: 100%;"
+    >
+      <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" />
+      <el-table-column 
+       :label="$t('hellow.content')" 
+       align="center" 
+       min-width="220"
+     >
+       <template #default="scope">
+           <span>
+             {{ getAlertText(scope.row.alarmCode) }} 
+             (id:{{ scope.row.alarmMessage }})
+           </span>
+       </template>
+     </el-table-column>
+      <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100">
+        <template #default="scope">
+          <el-button type="text" plain
+            @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </el-dialog>
 </template>
 <style scoped>
 #dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
@@ -454,4 +578,19 @@
   max-width: 100%;
   margin-left: 10%
 }
+.global-alert-bar {
+  position: fixed;
+  top: 0;
+  left: 50%; /* 姘村钩灞呬腑鍏抽敭 */
+  transform: translateX(-50%); /* 姘村钩灞呬腑鍏抽敭 */
+  padding: 12px 20px;
+  background-color: #dbdbd7;
+  box-shadow: 0 2px 10px rgba(0,0,0,0.2);
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  z-index: 9999;
+  max-width: 80%; /* 闃叉灏忓睆骞曟孩鍑� */
+  min-width: 400px; /* 鏈�灏忓搴︿繚璇� */
+}
 </style>
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 5d4d162..84d93f7 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -41,6 +41,7 @@
 const selectValuesa = reactive([]);
 const carPosition = ref([])
 const ganghua = ref('')
+const engineerId = ref('')
 const diaodu = ref('')
 const flowCardId = ref('')
 const filmsId = ref('')
@@ -540,7 +541,10 @@
 const getAlertText = (alarmCode) => {
   const codeMap = {
     sizeSame: 'hellow.sizeSame',
-    idSame: 'hellow.idSame'
+    idSame: 'hellow.idSame',
+    slotLess: 'hellow.slotLess',
+    overSize: 'hellow.overSize',
+    noGlass: 'hellow.noGlass'
   };
   return alarmCode in codeMap 
     ? t(codeMap[alarmCode]) 
@@ -564,10 +568,13 @@
 const fetchxiang = async () => {
     isLoading.value = true;
   try {
-    const response = await request.post('/cacheVerticalGlass/bigStorageCage/querybigStorageCageDetail',{
+    const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/queryVerticalSheetCageDetailsList',{
         // deviceId: page,
+        engineerId: engineerId.value,
         filmsId: filmsId.value,
         flowCardId: flowCardId.value,
+        glassId: glassId.value,
+        thickness: -1,
     })
     // 妯℃嫙鏈�灏忓姞杞芥椂闂�
     await new Promise(resolve => setTimeout(resolve, 300));
@@ -586,10 +593,13 @@
 const fetchxianga = async () => {
   let page = window.localStorage.getItem('pagenumber')
   try {     
-    const response = await request.post('/cacheVerticalGlass/bigStorageCage/querybigStorageCageDetail',{
+    const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/queryVerticalSheetCageDetailsList',{
         deviceId: page,
+        engineerId: engineerId.value,
         filmsId: filmsId.value,
         flowCardId: flowCardId.value,
+        glassId: glassId.value,
+        thickness: thickness.value ? thickness.value : -1,
     })
     if (response.code === 200) {  
       ElMessage.success(response.message);
@@ -773,18 +783,27 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`;
 const handleMessage = (data) => {
   // 鎶ヨ淇℃伅
-  if (data.alarmInfo[0] !=null && data.alarmInfo[0].length > 0) {
-    const alert = data.alarmInfo[0]
-    const { id,alarmMessage, ...rest } = alert[0];
-    alertMessage.value = `${alarmMessage}`;
-    alertMessage.value = `${alert[0].alarmMessage}`;
-    // 鍔ㄦ�佺炕璇戦�昏緫锛氭牴鎹產larmCode閫夋嫨缈昏瘧閿�
-    alertText.value = alert[0].alarmCode === 'sizeSame' 
-      ? t('hellow.sizeSame') 
-      : t('hellow.idSame');
+if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) {
+  const alert = data.alarmInfo[0];
+  const { id, alarmMessage, ...rest } = alert[0];
+  alertMessage.value = `${alarmMessage}`;
+  alertMessage.value = `${alert[0].alarmMessage}`;
+  if (alert[0].alarmCode === 'sizeSame') {
+    alertText.value = t('hellow.sizeSame');
+  } else if (alert[0].alarmCode === 'idSame') {
+    alertText.value = t('hellow.idSame');
+  } else if (alert[0].alarmCode === 'slotLess') {
+    alertText.value = t('hellow.slotLess');
+  } else if (alert[0].alarmCode === 'overSize') {
+    alertText.value = t('hellow.overSize');
+  } else if (alert[0].alarmCode === 'noGlass') {
+    alertText.value = t('hellow.noGlass');
+  } else {
+    alertText.value = t('hellow.unknownAlert');
+  }
     alarmData.value = data; // 瀛樺偍瀹屾暣鏁版嵁鐢ㄤ簬寮圭獥
     showAlert.value = true;
-  }
+}
    const formattedData = data.alarmInfo[0].map(record => ({
      ...record,
      formattedCreateTime: formatTimestamp(record.createTime),
@@ -1055,22 +1074,6 @@
     closeWebSocket(socket);
     }
     });
-function getStatusType(enableState: number) {  
-  switch (enableState) {  
-    case 100:
-      return 'success';  
-    case 102: 
-      return 'warning';  
-  }  
-}  
-function getStatusText(enableState: number) {
-  switch (enableState) {
-    case 100:  
-      return t('searchOrder.zailong');
-    case 102:  
-      return t('searchOrder.rengongxp'); 
-  }  
-}
 function getStatusTypea(ishorizontal: number) {  
   switch (ishorizontal) {  
     case 0:
@@ -1415,71 +1418,18 @@
   :title="$t('searchOrder.cageinformation')">
   <div v-loading="isLoading" class="loading-container" :element-loading-text="$t('searchOrder.loadingText')" >
   <div style="display: flex;">
+    <el-input v-model="engineerId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('processCard.projectnumber')"/>
+    <el-input v-model="glassId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inglassID')"/>
     <el-input v-model="flowCardId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.incardnumber')" />
     <el-input v-model="filmsId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('film.infilms')"/>
+    <el-input v-model="thickness" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inthickness')"/>
     <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="fetchxianga">
       {{$t('reportmanage.inquire')}}</el-button>
   </div>
-    <el-table  
-          :data="tableDataa" 
-          @row-click="handleRowClick" 
-          height="700"
-          @expand-change="handleExpandChange"  
-          row-key="id" 
-          default-expand-all
-          :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
-        >  
-          <el-table-column type="expand">  
-            <template #default="props">  
-              <div v-if="props.row.bigStorageCageDetails && props.row.bigStorageCageDetails.length">  
-                <el-table  
-                  :data="props.row.bigStorageCageDetails"  
-                  border
-                  style="width: 98%;margin-left: 20px;"  
-                  row-key="id"  
-                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
-                >  
-          <!-- <el-table-column prop="menuName" label="浜岀骇鑿滃崟鏍�" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/>   -->
-          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="120"/>
-          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" />
-          <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" />
-          <!-- <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="80" /> -->
-          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" />
-          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
-          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" />
-          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" />
-          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" />
-          <el-table-column
-            align="center"
-            :label="$t('searchOrder.startstatus')"
-            min-width="80"
-            prop="state"
-          >
-          <template #default="scope">  
-        <el-tag :type="getStatusType(scope.row.state)">  
-          {{ getStatusText(scope.row.state) }}  
-        </el-tag>  
-      </template> 
-          </el-table-column>
-          <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" />
-           <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center"  min-width="220">
-            <template #default="scope">
-              <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button>
-              <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button>
-              <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button>
-              <el-button type="text" 
-              :disabled="!((props.row.bigStorageCageDetails[0].state !== 102 && scope.$index == 0 ) || (props.row.bigStorageCageDetails[(scope.$index - 1)<0?0:scope.$index-1].state==102)&&(scope.row.state!=102))"
-               plain @click="outfil(scope.row)">
-               {{ $t('searchOrder.outfilm') }}
-              </el-button>
-            </template>
-        </el-table-column>
-                </el-table>
-              </div>  
-            </template>  
-          </el-table-column>  
-          <el-table-column prop="id" :label="$t('searchOrder.cagetableID')" align="center" min-width="90"/>  
+    <el-table ref="table" style="margin-top: 20px;height: 700px;width: 1770px;" :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
           <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.cagenumber')" min-width="100" />
+          <el-table-column prop="engineerId" align="center" :label="$t('searchOrder.projectnumber')" min-width="100" />
+          <el-table-column prop="layer" align="center" :label="$t('processCard.layer')" min-width="50" />
           <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="150" />
           <el-table-column
           align="center"
@@ -1497,12 +1447,27 @@
         </template> 
           </el-table-column>
           <el-table-column prop="remainWidth" align="center" :label="$t('searchOrder.remainingwidth')" min-width="120" />
-          
-       <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center">
-            <template #default="scope">
-              <el-button type="text" plain  @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button>
-            </template>
-        </el-table-column>
+          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="120"/>
+          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" />
+          <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" />
+          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" />
+          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
+          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" />
+          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" />
+          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" />
+          <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="240">
+              <template #default="scope">
+              <!-- <el-button type="text" plain @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button> -->
+              <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button>
+              <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button>
+              <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button>
+              <!-- <el-button type="text" 
+              :disabled="!((props.row.bigStorageCageDetails[0].state !== 102 && scope.$index == 0 ) || (props.row.bigStorageCageDetails[(scope.$index - 1)<0?0:scope.$index-1].state==102)&&(scope.row.state!=102))"
+               plain @click="outfil(scope.row)">
+               {{ $t('searchOrder.outfilm') }}
+              </el-button> -->
+                </template>
+              </el-table-column>
         </el-table>
         <div>
     <!-- <div style="margin-top: 20px;margin-left: 40%;">
diff --git a/UI-Project/src/views/User/alarmLog.vue b/UI-Project/src/views/User/alarmLog.vue
new file mode 100644
index 0000000..f1f09fb
--- /dev/null
+++ b/UI-Project/src/views/User/alarmLog.vue
@@ -0,0 +1,170 @@
+<script setup>
+import request from "@/utils/request"
+import { Search } from "@element-plus/icons-vue"
+import { ref, onMounted, reactive, computed } from "vue"
+import { useRouter } from "vue-router"
+import { useI18n } from 'vue-i18n'
+import { ElMessage, ElMessageBox } from 'element-plus'
+let language = ref(localStorage.getItem('lang') || 'zh')
+const { t } = useI18n()
+const router = useRouter()
+const showAlert = ref(true)
+const showModal = ref(false)
+// const tableData = ref([])
+const tableData = [
+  {
+    alarmStartTime: '2025-11-03 8:25:05',//鎶ヨ寮�濮嬫椂闂�
+    alarmEndTime: '2025-11-03 9:25:05',//鎶ヨ缁撴潫鏃堕棿
+    equipment: '涓婄墖1鍙锋満',//璁惧
+    content: '鏈敹鍒拌姹�',//鍐呭
+    confirmer: 'admin',//纭浜�
+  },
+  {
+    alarmStartTime: '2025-11-03 10:05:05',
+    alarmEndTime: '2025-11-03 10:08:05',
+    equipment: '鍗у紡鐞嗙墖绗�',
+    content: '鏈幏鍙栧埌鐜荤拑瀵瑰簲灏哄淇℃伅',
+    confirmer: 'admin',
+  },
+  {
+    alarmStartTime: '2025-11-03 16:30:15',
+    alarmEndTime: '2025-11-03 16:35:05',
+    equipment: '閽㈠寲澶х悊鐗囩',
+    content: '杩涚墖鐜荤拑ID涓庣鍐呯幓鐠僆D鐩稿悓',
+    confirmer: 'admin',
+  },
+  {
+    alarmStartTime: '2025-11-03 20:30:15',
+    alarmEndTime: '2025-11-03 22:30:15',
+    equipment: '涓┖澶х悊鐗囩',
+    content: '绗煎唴瀛樺湪鐩稿悓瑙勬牸鐨勭幓鐠�',
+    confirmer: 'admin',
+  },
+]
+const tableDataAlert = [
+  {
+    formattedCreateTime: '2025-11-03 8:25:05',
+  },
+]
+// 璀︽姤鍙屽嚮寮圭獥
+const handleDoubleClick = () => {
+  showModal.value = true;
+};
+const handleSure = async (row) => {
+  try {
+    const confirmResult = await ElMessageBox.confirm(
+      t('hellow.clickmakesure'),
+      t('productStock.prompt'),
+      {
+        confirmButtonText: t('productStock.yes'),
+        cancelButtonText: t('productStock.cancel'),
+        type: 'warning',
+      }
+    );
+    if (confirmResult === 'confirm') {
+        showModal.value = false;
+        showAlert.value = false;
+
+        ElMessage.success();
+    }
+  } catch (error) {
+    console.error('鍙戠敓閿欒:', error);
+  }
+};
+onMounted(() => {
+}); 
+</script>
+<template>
+  <div>
+    <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick">
+    <div class="alert-content">
+      <el-icon><WarnTriangleFilled /></el-icon>
+      <span class="alert-text">
+        绗煎唴瀛樺湪鐩稿悓瑙勬牸鐨勭幓鐠� (id:25103114002002)
+      </span>
+    </div>
+    <button @click="showAlert = false" class="close-btn">脳</button>
+  </div>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="780" ref="table"
+        :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="alarmStartTime" align="center" :label="$t('delivery.alarmStartTime')" min-width="180" />
+          <el-table-column prop="alarmEndTime" align="center" :label="$t('delivery.alarmEndTime')" min-width="180" />
+          <el-table-column prop="equipment" align="center" :label="$t('delivery.equipment')" min-width="180" />
+          <el-table-column prop="content" align="center" :label="$t('delivery.content')" min-width="180" />
+          <el-table-column prop="confirmer" align="center" :label="$t('delivery.confirmer')" min-width="180" />
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+  
+  <el-dialog
+    v-model="showModal"
+    width="40%"
+    center
+  >
+      <el-table 
+      ref="table"
+      border
+      :data="tableDataAlert" 
+      max-height="calc(500px - 35px)"
+      style="width: 100%;"
+    >
+      <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" />
+      <el-table-column 
+       :label="$t('hellow.content')" 
+       align="center" 
+       min-width="220"
+     >
+       <template #default="scope">
+           <span>
+        绗煎唴瀛樺湪鐩稿悓瑙勬牸鐨勭幓鐠� (id:25103114002002)
+           </span>
+       </template>
+     </el-table-column>
+      <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100">
+        <template #default="scope">
+          <el-button type="text" plain
+            @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+  </el-dialog>
+</template>
+<style scoped>
+#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
+#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
+#message{
+  text-align: center;
+  align-items: center;
+  color: black;
+   width: 200px;
+   height: 100px;
+   background-color: #337ecc;
+   margin-left: 28%;
+}
+#awatch{
+  height: 460px;
+}
+
+.global-alert-bar {
+  position: fixed;
+  top: 0;
+  left: 50%; /* 姘村钩灞呬腑鍏抽敭 */
+  transform: translateX(-50%); /* 姘村钩灞呬腑鍏抽敭 */
+  padding: 12px 20px;
+  background-color: #dbdbd7;
+  box-shadow: 0 2px 10px rgba(0,0,0,0.2);
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  z-index: 9999;
+  max-width: 80%; /* 闃叉灏忓睆骞曟孩鍑� */
+  min-width: 400px; /* 鏈�灏忓搴︿繚璇� */
+}
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/hollow/hollowslicecage.vue b/UI-Project/src/views/hollow/hollowslicecage.vue
index 6c1b644..7578b56 100644
--- a/UI-Project/src/views/hollow/hollowslicecage.vue
+++ b/UI-Project/src/views/hollow/hollowslicecage.vue
@@ -38,7 +38,7 @@
 const currentAlarm = ref<any>(null)
 const tableDataAlert = ref([])
 const alertText = ref('')
-
+const engineerId = ref('')
 const ganghua = ref('')
 const diaodu = ref('')
 const hollowPriority = ref('')
@@ -46,6 +46,7 @@
 const glassType = ref('')
 const layer = ref('')
 const filmsId = ref('')
+const thickness = ref('')
 const adjust = ref([]);
 const adjusta = ref([]);
 const adjustedRects = ref([]);
@@ -414,10 +415,13 @@
 // 鐞嗙墖绗间俊鎭�
 const fetchxiang = async () => {
   try {     
-    const response = await request.post('/hollowGlass/hollowBigStorageCage/queryHollowBigStorageCageDetail',{
+    const response = await request.post('/hollowGlass/hollowBigStorageCageDetails/queryVerticalSheetCageDetailsList',{
         // deviceId: page,
+        engineerId: engineerId.value,
         filmsId: filmsId.value,
         flowCardId: flowCardId.value,
+        glassId: glassId.value,
+        thickness: -1,
     })
     if (response.code === 200) {  
       ElMessage.success(response.message);
@@ -431,10 +435,13 @@
 const fetchxianga = async () => {
   let page = window.localStorage.getItem('pagenumber')
   try {     
-    const response = await request.post('/hollowGlass/hollowBigStorageCage/queryHollowBigStorageCageDetail',{
+    const response = await request.post('/hollowGlass/hollowBigStorageCageDetails/queryVerticalSheetCageDetailsList',{
         deviceId: page,
+        engineerId: engineerId.value,
         filmsId: filmsId.value,
         flowCardId: flowCardId.value,
+        glassId: glassId.value,
+        thickness: thickness.value ? thickness.value : -1,
     })
     if (response.code === 200) {  
       ElMessage.success(response.message);
@@ -513,18 +520,27 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/hollowGlassMessage`;
 const handleMessage = (data) => {
   // 鎶ヨ淇℃伅
-  if (data.alarmInfo[0] !=null && data.alarmInfo[0].length > 0) {
-    const alert = data.alarmInfo[0]
-    const { id,alarmMessage, ...rest } = alert[0];
-    alertMessage.value = `${alarmMessage}`;
-    alertMessage.value = `${alert[0].alarmMessage}`;
-    // 鍔ㄦ�佺炕璇戦�昏緫锛氭牴鎹產larmCode閫夋嫨缈昏瘧閿�
-    alertText.value = alert[0].alarmCode === 'sizeSame' 
-      ? t('hellow.sizeSame') 
-      : t('hellow.idSame');
+if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) {
+  const alert = data.alarmInfo[0];
+  const { id, alarmMessage, ...rest } = alert[0];
+  alertMessage.value = `${alarmMessage}`;
+  alertMessage.value = `${alert[0].alarmMessage}`;
+  if (alert[0].alarmCode === 'sizeSame') {
+    alertText.value = t('hellow.sizeSame');
+  } else if (alert[0].alarmCode === 'idSame') {
+    alertText.value = t('hellow.idSame');
+  } else if (alert[0].alarmCode === 'slotLess') {
+    alertText.value = t('hellow.slotLess');
+  } else if (alert[0].alarmCode === 'overSize') {
+    alertText.value = t('hellow.overSize');
+  } else if (alert[0].alarmCode === 'noGlass') {
+    alertText.value = t('hellow.noGlass');
+  } else {
+    alertText.value = t('hellow.unknownAlert');
+  }
     alarmData.value = data; // 瀛樺偍瀹屾暣鏁版嵁鐢ㄤ簬寮圭獥
     showAlert.value = true;
-  }
+}
    const formattedData = data.alarmInfo[0].map(record => ({
      ...record,
      formattedCreateTime: formatTimestamp(record.createTime),
@@ -656,7 +672,10 @@
 const getAlertText = (alarmCode) => {
   const codeMap = {
     sizeSame: 'hellow.sizeSame',
-    idSame: 'hellow.idSame'
+    idSame: 'hellow.idSame',
+    slotLess: 'hellow.slotLess',
+    overSize: 'hellow.overSize',
+    noGlass: 'hellow.noGlass'
   };
   return alarmCode in codeMap 
     ? t(codeMap[alarmCode]) 
@@ -854,22 +873,6 @@
 const minutes = String(date.getMinutes()).padStart(2, '0'); // 琛ラ浂锛堝鏋滈渶瑕佹樉绀烘椂闂达級
 const seconds = String(date.getSeconds()).padStart(2, '0'); // 琛ラ浂锛堝鏋滈渶瑕佹樉绀烘椂闂达級
 return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
-}
-function getStatusType(enableState: number) {  
-  switch (enableState) {  
-    case 100:
-      return 'success';  
-    case 102: 
-      return 'warning';  
-  }  
-}  
-function getStatusText(enableState: number) {
-  switch (enableState) {
-    case 100:  
-      return t('searchOrder.zailong');
-    case 102:  
-      return t('searchOrder.rengongxp'); 
-  }  
 }
 function getcasOnea(isSame) {  
   switch (isSame) {  
@@ -1200,66 +1203,19 @@
   <!-- 鐞嗙墖绗间俊鎭� -->
 <el-dialog v-model="dialogFormVisiblea" top="2vh" width="97%" :title="$t('searchOrder.cageinformation')">
   <div style="display: flex;">
-    <el-input v-model="flowCardId" style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.incardnumber')" />
-    <el-input v-model="filmsId" style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('film.infilms')"/>
+    <el-input v-model="engineerId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('processCard.projectnumber')"/>
+    <el-input v-model="glassId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inglassID')"/>
+    <el-input v-model="flowCardId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.incardnumber')" />
+    <el-input v-model="filmsId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('film.infilms')"/>
+    <el-input v-model="thickness" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inthickness')"/>
     <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="fetchxianga">
       {{$t('reportmanage.inquire')}}</el-button>
   </div>
-    <el-table  
-          :data="tableDataa" 
-          @row-click="handleRowClick" 
-          height="700"
-          row-key="id" 
-          default-expand-all
-          :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
-        >  
-          <el-table-column type="expand">  
-            <template #default="props">  
-              <div v-if="props.row.hollowBigStorageCageDetails && props.row.hollowBigStorageCageDetails.length">  
-                <el-table  
-                  :data="props.row.hollowBigStorageCageDetails"  
-                  border
-                  style="width: 98%;margin-left: 20px;"  
-                  row-key="id"  
-                  :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
-                >  
-          <!-- <el-table-column prop="menuName" label="浜岀骇鑿滃崟鏍�" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/>   -->
-          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="130"/>
-          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" />
-          <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" />
-          <!-- <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="80" /> -->
-          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" />
-          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
-          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" />
-          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" />
-          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" />
-          <el-table-column
-            align="center"
-            :label="$t('searchOrder.startstatus')"
-            min-width="80"
-            prop="state"
-          >
-          <template #default="scope">  
-        <el-tag :type="getStatusType(scope.row.state)">  
-          {{ getStatusText(scope.row.state) }}  
-        </el-tag>  
-      </template> 
-          </el-table-column>
-          <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" />
-           <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center"  min-width="220">
-            <template #default="scope">
-              <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button>
-              <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button>
-              <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button>
-            </template>
-        </el-table-column>
-                </el-table>
-              </div>  
-            </template>  
-          </el-table-column>  
-          <el-table-column prop="id" :label="$t('searchOrder.cagetableID')" align="center" min-width="100"/>  
+  <el-table ref="table" style="margin-top: 20px;height: 700px;width: 1770px;" :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
           <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.cagenumber')" min-width="150" />
-          <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="150" />
+          <el-table-column prop="engineerId" align="center" :label="$t('searchOrder.projectnumber')" min-width="100" />
+          <el-table-column prop="layer" align="center" :label="$t('processCard.layer')" min-width="80" />
+          <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="120" />
           <el-table-column
           align="center"
             :label="$t('searchOrder.startstatus')"
@@ -1276,12 +1232,23 @@
         </template> 
           </el-table-column>
           <el-table-column prop="remainWidth" align="center" :label="$t('searchOrder.remainingwidth')" min-width="120" />
-          
-       <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center">
-            <template #default="scope">
-              <el-button type="text" plain  @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button>
-            </template>
-        </el-table-column>
+          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="130"/>
+          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" />
+          <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" />
+          <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" />
+          <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
+          <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" />
+          <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" />
+          <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" />
+          <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" />
+          <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="240">
+              <template #default="scope">
+              <!-- <el-button type="text" plain  @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button> -->
+              <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button>
+              <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button>
+              <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button>
+                </template>
+              </el-table-column>
         </el-table>
         <div>
   </div>

--
Gitblit v1.8.0