From dc06f58d8ed537555fd529551180f43a0586ec3f Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期日, 22 六月 2025 11:44:43 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js |  286 +++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 169 insertions(+), 117 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js"
index a009b54..b8c502e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js"
@@ -1,123 +1,175 @@
 
 //姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
 
-let extension = {
-    components: {
-      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
-      gridHeader: '',
-      gridBody: '',
-      gridFooter: '',
-      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
-      modelHeader: '',
-      modelBody: '',
-      modelFooter: ''
-    },
-    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
-    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
-    methods: {
-       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
-      onInit() {  
-        // let InOrder = this.buttons.find(x => x.value == 'StockOutbound');
-        // if (InOrder) {
-        //   InOrder.onClick = function () {
-        //     let rows = this.$refs.table.getSelected();
-        //     if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
-        //     if (rows.length > 1) return this.$error("璇烽�夋嫨鍗曟潯鏁版嵁!");
-        //     var keys = rows.map(x => { return x.stockId });
-        //     this.http
-        //       .post("api/Task/Outbound?id="+keys[0], null, "鏁版嵁澶勭悊涓�")
-        //       .then((x) => {
-        //         if (!x.status) return this.$message.error(x.message);
-        //         this.$message.success("鎿嶄綔鎴愬姛");
-        //         this.refresh();
-        //       });
-        //   }
-        // }
-        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; 
-            }
-          }
-          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; 
-            }
-          }
-          if (column.field == 'materielInfo') {
-            const today = new Date()
-            column.formatter = (row) => {
-              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;
+import { el } from "element-plus/es/locales.mjs";
 
-              const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24)));
-              return '<span style="color: #F56C6C">'+ daysSinceClosest+"澶�"+'</span>';
-            }
-          }
-          if (column.field == 'sumStock') {
-            column.formatter = (row) => {
-              var sum=0;
-              const closestDate = row.details
-              .map(x => {
-                sum+=(x.stockQuantity)
-              })
-              return '<span style="color: #F56C6C">'+ sum+row.details[0].unit+'</span>';
-            }
-          }
-        })
-      },
-      onInited() {
-        //妗嗘灦鍒濆鍖栭厤缃悗
-        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
-        //this.detailOptions.columns.forEach(column=>{ });
-      },
-      searchBefore(param) {
-        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
-        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
-        return true;
-      },
-      searchAfter(result) {
-        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
-        return true;
-      },
-      addBefore(formData) {
-        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
-        return true;
-      },
-      updateBefore(formData) {
-        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
-        return true;
-      },
-      rowClick({ row, column, event }) {
-        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
-        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
-      },
-      modelOpenAfter(row) {
-        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
-        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
-        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
-        //(3)this.editFormFields.瀛楁='xxx';
-        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
-        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      
+      let SelectTake = this.buttons.find(x => x.value == 'SelectStockTake');
+      if (SelectTake) {
+        SelectTake.onClick = function () {
+          let stockViews = this.$refs.table.getSelected();
+          this.http
+            .post("api/Task/TakeOutbound",stockViews, "鏁版嵁澶勭悊涓�")
+            .then((x) => {
+              if (!x.status) return this.$message.error(x.message);
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.refresh();
+            });
+        }
       }
+      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((date - today) / (1000 * 60 * 60 * 24)); // 鏀逛负璁$畻鍓╀綑澶╂暟
+                    return { date, diffInDays };
+                })
+                .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest))
+                .date;
+
+            const daysRemaining = Math.ceil((closestDate - today) / (1000 * 60 * 60 * 24));
+            
+            row.expiryDays = daysRemaining; 
+            
+            if (daysRemaining <= 0) {
+                return '<span style="color:rgb(30, 27, 27)">鏃犱繚璐ㄦ湡</span>';
+            } else {
+                return '<span style="color: #F56C6C">' + daysRemaining + "澶�" + '</span>';
+            }
+        } else {
+            row.expiryDays = null;
+            return '<span style="color:rgb(24, 18, 18)">鏃犱繚璐ㄦ湡</span>';
+        }
     }
-  };
-  export default extension;
-  
\ No newline at end of file
+
+          
+        }
+        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.toFixed(3) + row.details[0].unit + '</span>';
+            } else {
+              return '<span style="color: #F56C6C">' + "1涓�" + '</span>';
+            }
+
+          }
+        }
+      })
+      this.columns.forEach((column) => {
+        column.cellStyle = (row) => {
+        // 鍙鐞嗘湁淇濊川鏈熸暟鎹殑鎯呭喌
+        if (row.expiryDays !== null && row.expiryDays !== undefined) {
+            if (row.expiryDays <= 0) {
+                return { background: 'red' }; // 绾㈣壊鑳屾櫙锛堝凡杩囨湡锛�
+            } else if (row.expiryDays <= 30) {
+                return { background: 'yellow' }; // 榛勮壊鑳屾櫙锛堜复鏈燂級
+            }
+        }
+        return {}; // 榛樿鏃犺儗鏅壊
+    };
+
+
+    
+    
+        //濡傛灉鏍规嵁琛岀殑鏌愪釜鍊艰缃暣琛岄鑹�
+        //璁剧疆鏁磋鑳屾櫙棰滆壊
+        // x.cellStyle = (row, rowIndex, columnIndex) => {
+        //   if (row.ProductCode == '10044464880643') {
+        //     return { background: '#ddecfd' };
+        //   } 
+        // };
+        });
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+      this.detailOptions.summary = true;
+        this.detailOptions.columns.forEach(x => {
+          if (x.field == 'stockQuantity') {
+              x.summary = true;
+              //璁$畻骞冲潎鍊�
+              // x.summary = 'avg';//2023.05.03鏇存柊voltable鏂囦欢鍚庢墠鑳戒娇鐢�
+              //璁剧疆灏忔暟鏄剧ず浣嶆暟(榛樿2浣�)
+              // x.numberLength = 4;
+          }
+        });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;

--
Gitblit v1.9.3