liulijun
2026-03-05 98a69d51981ee6a49136024c8b005f134d3313cd
ÏîÄ¿´úÂë/WMS/WMSClient/src/extension/stock/ProStockView.js
@@ -19,6 +19,13 @@
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      // åˆå§‹åŒ–空托检查定时器
      // è®¾ç½®å®šæ—¶å™¨ï¼Œæ¯60秒检查一次
      this.checkEmptyPalletTimer = setInterval(() => {
        this.checkEmptyPalletWarning();
      }, 10000); // æ¯10秒检查一次
      // åŽŸæœ‰ä»£ç ...
      // 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; // æ¯æ¡ç©ºæ‰˜è®°å½•代表1个空托
              // ä¿å­˜åˆ°row对象,方便后续checkEmptyPalletWarning方法使用
              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; // æ¯æ¡ç©ºæ‰˜è®°å½•代表1个空托
              // ä¿å­˜åˆ°row对象,方便后续checkEmptyPalletWarning方法使用
              row.emptyPalletCount = emptyPalletCount;
              return '<span style="color: #F56C6C">' + emptyPalletCount + "个" + '</span>';
            }
          }
@@ -128,6 +149,104 @@
      //(3)this.editFormFields.字段='xxx';
      //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看:console.log(this.editFormOptions)
    },
    // æ£€æŸ¥ç©ºæ‰˜æ•°é‡
    checkEmptyPalletWarning() {
      // èŽ·å–å…¨å±€å¯¹è±¡å’Œstore,检查是否存在相同的警告消息
      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 || [];
      // è®¡ç®—空托总数量:只计算proStockAttribute为5的记录
      let totalEmptyPalletCount = 0;
      // éåŽ†æ‰€æœ‰åº“å­˜è®°å½•ï¼Œç´¯åŠ ç©ºæ‰˜æ•°é‡
      stockData.forEach(stock => {
        const proStockAttribute = stock.proStockAttribute || stock.ProStockAttribute || 0;
        if (proStockAttribute === 5) {
          // è§£æž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
        }
      };
      // èŽ·å–å…¨å±€å¯¹è±¡å’Œstore
      const globalObj = this.$global || window.$global || {};
      const store = this.$store || window.$store;
      // æ·»åŠ æ¶ˆæ¯åˆ°store
      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;
    }
  }
};