From 98a69d51981ee6a49136024c8b005f134d3313cd Mon Sep 17 00:00:00 2001
From: liulijun <liulijun@hnkhzn.com>
Date: 星期四, 05 三月 2026 17:29:34 +0800
Subject: [PATCH] 增加任务异常提示和空托数量预警

---
 项目代码/WMS/WMSClient/src/extension/stock/ProStockView.js |  123 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 121 insertions(+), 2 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/stock/ProStockView.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/stock/ProStockView.js"
index 92ad623..7fecdb4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/stock/ProStockView.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/extension/stock/ProStockView.js"
@@ -19,6 +19,13 @@
   methods: {
     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
     onInit() {
+      // 鍒濆鍖栫┖鎵樻鏌ュ畾鏃跺櫒
+      // 璁剧疆瀹氭椂鍣紝姣�60绉掓鏌ヤ竴娆�
+      this.checkEmptyPalletTimer = setInterval(() => {
+        this.checkEmptyPalletWarning();
+      }, 10000); // 姣�10绉掓鏌ヤ竴娆�
+
+      // 鍘熸湁浠g爜...
       // let InOrder = this.buttons.find(x => x.value == 'StockOutbound');
       // if (InOrder) {
       //   InOrder.onClick = function () {
@@ -73,7 +80,14 @@
               const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24)));
               return '<span style="color: #F56C6C">' + daysSinceClosest + "澶�" + '</span>';
             } else {
-              return '<span style="color: #F56C6C">' + "鏃犱繚璐ㄦ湡" + '</span>';
+              // 绌烘墭璁板綍浼氳繘鍏ヨ繖涓垎鏀紝杩斿洖"1涓�"鎴�"10涓�"杩欐牱鐨勫瓧绗︿覆
+              // 鍦ㄨ繖閲岃褰曠┖鎵樻暟閲�
+              const emptyPalletCount = 1; // 姣忔潯绌烘墭璁板綍浠h〃1涓┖鎵�
+              
+              // 淇濆瓨鍒皉ow瀵硅薄锛屾柟渚垮悗缁璫heckEmptyPalletWarning鏂规硶浣跨敤
+              row.emptyPalletCount = emptyPalletCount;
+              
+              return '<span style="color: #F56C6C">' + emptyPalletCount + "涓�" + '</span>';
             }
 
           }
@@ -88,7 +102,14 @@
                 })
               return '<span style="color: #F56C6C">' + sum + row.details[0].unit + '</span>';
             } else {
-              return '<span style="color: #F56C6C">' + "1涓�" + '</span>';
+              // 绌烘墭璁板綍浼氳繘鍏ヨ繖涓垎鏀紝杩斿洖"1涓�"鎴�"10涓�"杩欐牱鐨勫瓧绗︿覆
+              // 鍦ㄨ繖閲岃褰曠┖鎵樻暟閲�
+              const emptyPalletCount = 1; // 姣忔潯绌烘墭璁板綍浠h〃1涓┖鎵�
+              
+              // 淇濆瓨鍒皉ow瀵硅薄锛屾柟渚垮悗缁璫heckEmptyPalletWarning鏂规硶浣跨敤
+              row.emptyPalletCount = emptyPalletCount;
+              
+              return '<span style="color: #F56C6C">' + emptyPalletCount + "涓�" + '</span>';
             }
 
           }
@@ -128,6 +149,104 @@
       //(3)this.editFormFields.瀛楁='xxx';
       //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
       //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    },
+    
+    // 妫�鏌ョ┖鎵樻暟閲�
+    checkEmptyPalletWarning() {
+      // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore锛屾鏌ユ槸鍚﹀瓨鍦ㄧ浉鍚岀殑璀﹀憡娑堟伅
+      const globalObj = this.$global || window.$global || {};
+      const store = this.$store || window.$store;
+      const globalMessageList = globalObj.messageList || [];
+      const storeMessageList = store?.state?.messageList || [];
+      
+      // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄦ湭娓呴櫎鐨勭┖鎵橀璀︽秷鎭�
+      const hasExistingWarning = [...globalMessageList, ...storeMessageList].some(msg => 
+        msg.businessType === 'pallet_warning' && msg.type === 'warning'
+      );
+      
+      if (hasExistingWarning) return;
+      
+      // 鑾峰彇褰撳墠鎵�鏈夊簱瀛樻暟鎹�
+      const stockData = this.$refs.table?.rowData || this.$refs.table?.tableData || [];
+      
+      // 璁$畻绌烘墭鎬绘暟閲忥細鍙绠梡roStockAttribute涓�5鐨勮褰�
+      let totalEmptyPalletCount = 0;
+      
+      // 閬嶅巻鎵�鏈夊簱瀛樿褰曪紝绱姞绌烘墭鏁伴噺
+      stockData.forEach(stock => {
+        const proStockAttribute = stock.proStockAttribute || stock.ProStockAttribute || 0;
+        if (proStockAttribute === 5) {
+          // 瑙f瀽sumStock鐨勫�硷紝鎻愬彇鏁板瓧閮ㄥ垎
+          const sumStocks = stock.sumStocks || stock.sumStock || 0;
+          const stockQuantity = typeof sumStocks === 'string' 
+            ? parseInt(sumStocks.match(/\d+/)?.[0] || 0) 
+            : parseInt(sumStocks || 0);
+          totalEmptyPalletCount += stockQuantity;
+        }
+      });
+      
+      // 绌烘墭棰勮闃堝�间负50涓�
+      const warningThreshold = 50;
+      
+      // 濡傛灉绌烘墭鎬绘暟閲忓皬浜庨槇鍊硷紝鍙戦�佽鍛婃秷鎭�
+      if (totalEmptyPalletCount < warningThreshold) {
+        this.sendPalletWarningMessage(totalEmptyPalletCount, warningThreshold);
+      }
+    },
+    
+    // 鍙戦�佺┖鎵樿鍛婃秷鎭�
+    sendPalletWarningMessage(emptyPalletCount, warningThreshold) {
+      // 鍒涘缓璀﹀憡娑堟伅
+      const warningMessage = {
+        id: Date.now(),
+        title: '绌烘墭鏁伴噺棰勮',
+        message: `鎴愬搧搴撶┖鎵樻暟閲忎笉瓒筹紝褰撳墠鎬绘暟閲忥細${emptyPalletCount}锛屼綆浜庨璀﹂槇鍊硷細${warningThreshold}锛屽缓璁強鏃惰ˉ鍏咃紒`,
+        type: 'warning',
+        businessType: 'pallet_warning',
+        createTime: new Date().toLocaleString(),
+        relatedData: {
+          EmptyPalletCount: emptyPalletCount,
+          Threshold: warningThreshold
+        }
+      };
+      
+      // 鑾峰彇鍏ㄥ眬瀵硅薄鍜宻tore
+      const globalObj = this.$global || window.$global || {};
+      const store = this.$store || window.$store;
+      
+      // 娣诲姞娑堟伅鍒皊tore
+      if (store) {
+        store.commit('addMessage', warningMessage);
+      }
+      
+      // 娣诲姞娑堟伅鍒板叏灞�娑堟伅鍒楄〃锛岀‘淇濆垪琛ㄥ瓨鍦�
+      if (!globalObj.messageList) {
+        globalObj.messageList = [];
+      }
+      globalObj.messageList.push(warningMessage);
+      
+      // 鏄剧ず鎻愮ず妗�
+      // const $alert = this.$alert;
+      // const $message = this.$message;
+      
+      // if ($alert) {
+      //   $alert(warningMessage.message, warningMessage.title, {
+      //     confirmButtonText: '纭畾',
+      //     type: warningMessage.type,
+      //     closeOnClickModal: false,
+      //     closeOnPressEscape: false,
+      //     showCancelButton: false
+      //   });
+      // } else if ($message) {
+      //   $message.warning(warningMessage.message);
+      // } else {
+      //   alert(`${warningMessage.title}: ${warningMessage.message}`);
+      // }
+    },
+    
+    // 鍦ㄦ煡璇㈠悗澶勭悊鏁版嵁
+    searchAfter(result) {
+      return true;
     }
   }
 };

--
Gitblit v1.9.3