From f29f358f589f5b1c2589c07b65845650be7aafef Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期一, 08 十二月 2025 21:21:08 +0800
Subject: [PATCH] 代码优化

---
 项目代码/WIDESEA_WMSClient/src/extension/stock/stockView.js |  164 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 108 insertions(+), 56 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockView.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockView.js"
index 047c354..6e73be0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockView.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/stock/stockView.js"
@@ -31,65 +31,117 @@
       //       });
       //   }
       // }
-      // this.columns.forEach(column => {
-      //   if (column.field == 'materielCode') {
-      //     column.formatter = (row) => {
-      //       var str = '';
-      //       var list = row.materielCode.split(',');
-      //       for (let index = 0; index < list.length; index++) {
-      //         str += list[index] + '<br>';
-      //       }
-      //       return str = list[0] == "" ? "绌虹" : str;
-      //     }
-      //   }
-      //   if (column.field == 'batchNo') {
-      //     column.formatter = (row) => {
-      //       var str = '';
-      //       var list = row.batchNo.split(',');
-      //       for (let index = 0; index < list.length; index++) {
-      //         str += list[index] + '<br>';
-      //       }
-      //       return str = list[0] == "" ? "鏃�" : str;
-      //     }
-      //   }
-      //   if (column.field == 'materielInfo') {
-      //     const today = new Date()
-      //     column.formatter = (row) => {
-      //       if (row.details.length > 0) {
-      //         const today = new Date();
-      //         const closestDate = row.details
-      //           .map(x => {
-      //             const date = new Date(x.effectiveDate);
-      //             const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24)));
-      //             return { date, diffInDays };
-      //           })
-      //           .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest))
-      //           .date;
+      this.columns.forEach(column => {
+        // if (column.field == 'materielCode') {
+        //   column.formatter = (row) => {
+        //     var str = '';
+        //     var list = row.materielCode.split(',');
+        //     for (let index = 0; index < list.length; index++) {
+        //       str += list[index] + '<br>';
+        //     }
+        //     return str = list[0] == "" ? "绌虹" : str;
+        //   }
+        // }
+        // if (column.field == 'batchNo') {
+        //   column.formatter = (row) => {
+        //     var str = '';
+        //     var list = row.batchNo.split(',');
+        //     for (let index = 0; index < list.length; index++) {
+        //       str += list[index] + '<br>';
+        //     }
+        //     return str = list[0] == "" ? "鏃�" : str;
+        //   }
+        // }
+        // if (column.field == 'materielInfo') {
+        //   const today = new Date()
+        //   column.formatter = (row) => {
+        //     if (row.details.length > 0) {
+        //       const today = new Date();
+        //       const closestDate = row.details
+        //         .map(x => {
+        //           const date = new Date(x.effectiveDate);
+        //           const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24)));
+        //           return { date, diffInDays };
+        //         })
+        //         .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest))
+        //         .date;
 
-      //         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>';
-      //       }
+        //       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>';
+        //     }
 
-      //     }
-      //   }
-      //   if (column.field == 'sumStock') {
-      //     column.formatter = (row) => {
-      //       if (row.details.length > 0) {
-      //         var sum = 0;
-      //         const closestDate = row.details
-      //           .map(x => {
-      //             sum += (x.stockQuantity)
-      //           })
-      //         return '<span style="color: #F56C6C">' + sum + row.details[0].unit + '</span>';
-      //       } else {
-      //         return '<span style="color: #F56C6C">' + "1涓�" + '</span>';
-      //       }
+        //   }
+        // }
+        if (column.field == 'sumStock') {
+          column.formatter = (row) => {
+            if (row.details.length > 0) {
+              var sum = 0;
+              const closestDate = row.details
+                .map(x => {
+                  sum += (x.stockQuantity)
+                })
+              return '<span style="color: #F56C6C">' + sum + row.details[0].unit + '</span>';
+            } else {
+              return '<span style="color: #F56C6C">' + "1涓�" + '</span>';
+            }
 
-      //     }
-      //   }
-      // })
+          }
+        }
+        if (column.field === 'orderStatistics') {
+          column.formatter = (row) => {
+            // 鏍¢獙details鏄惁瀛樺湪涓旀湁鏁版嵁
+            if (row.details && row.details.length > 0) {
+              // 鎸塵aterielCode鍒嗙粍缁熻stockQuantity鎬诲拰锛屽苟璁板綍鍗曚綅锛堝彇绗竴涓潪绌哄崟浣嶏級
+              const materielSumMap = row.details.reduce((acc, item) => {
+                const materielCode = item.materielCode || '鏈煡鐗╂枡';
+                const quantity = Number(item.stockQuantity) || 0;
+                const unit = item.unit || ''; // 鑾峰彇鍗曚綅锛屾棤鍒欎负绌�
+
+                // 绱姞鏁伴噺
+                acc[materielCode] = {
+                  total: (acc[materielCode]?.total || 0) + quantity,
+                  unit: acc[materielCode]?.unit || unit // 淇濈暀绗竴涓潪绌哄崟浣�
+                };
+                return acc;
+              }, {});
+
+              // 姣忎釜鐗╂枡椤圭敓鎴愮嫭绔媎iv锛岃法琛屾樉绀猴紙鍖呭惈鍗曚綅锛�
+              const displayItems = Object.entries(materielSumMap).map(([code, data]) => {
+                // 澶勭悊鍗曚綅鏄剧ず锛氭湁鍗曚綅鍒欏姞绌烘牸鏄剧ず锛屾棤鍒欎笉鏄剧ず
+                const unitText = data.unit ? ` ${data.unit}` : '';
+                return `<div style="line-height: 1.5; white-space: normal;">${code}锛�${data.total}${unitText}</div>`;
+              });
+              const displayContent = displayItems.join('');
+              return `<div style="color: #F56C6C; white-space: normal; word-break: break-all;">${displayContent}</div>`;
+            } else {
+              return '<span style="color: #F56C6C">绌虹</span>';
+            }
+          };
+        }
+        if (column.field == 'stockOrderNo') {
+          column.formatter = (row) => {
+            // 鏈夋槑缁嗘暟鎹椂澶勭悊
+            if (row.details && row.details.length > 0) {
+              // 鎻愬彇鎵�鏈夐潪绌虹殑orderNO骞跺幓閲�
+              const uniqueOrderNOs = [...new Set(
+                row.details.map(item => item.orderNo).filter(no => no) // 杩囨护绌哄崟鎹彿
+              )];
+
+              // 鏈夋湁鏁堝崟鎹彿鍒欐崲琛屾樉绀猴紝鍚﹀垯鏄剧ず榛樿鏂囨湰
+              if (uniqueOrderNOs.length > 0) {
+                return `<span style="color: #F56C6C">${uniqueOrderNOs.join('<br>')}</span>`;
+              } else {
+                return '<span style="color: #F56C6C">鏆傛棤鍗曟嵁</span>';
+              }
+            } else {
+              // 鏃犳槑缁嗘暟鎹椂鏄剧ず榛樿鏂囨湰
+              return '<span style="color: #F56C6C">鏆傛棤鍗曟嵁</span>';
+            }
+          }
+        }
+      })
     },
     onInited() {
       //妗嗘灦鍒濆鍖栭厤缃悗

--
Gitblit v1.9.3