From 85b89465f4de41f9a7fea136f2f0897b1da790fa Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期四, 08 一月 2026 19:57:22 +0800
Subject: [PATCH] 新增订单excel导入功能

---
 src/main/webapp/static/js/common.js |  252 +++++++++++++++++++++++++++-----------------------
 1 files changed, 135 insertions(+), 117 deletions(-)

diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 98b9937..b826257 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -6,7 +6,7 @@
 var detailWidth = '90%';
 
 // 闈炵┖鍒ゆ柇
-function isEmpty(obj){
+function isEmpty(obj) {
     return typeof obj == "undefined" || obj == null || obj === "";
 }
 
@@ -34,7 +34,7 @@
         if (p < 10) {
             p = "00" + p;
         }
-        if (p <  100) {
+        if (p < 100) {
             p = "0" + p;
         }
         return y + "-" + M + "-" + d + " " + h + ":" + m + ":" + s + "," + p;
@@ -54,7 +54,7 @@
 // 娓呯悊瀵硅薄null鍊�
 function reObject(data) {
     for (var obj in data) {
-        if (data[obj]===null){
+        if (data[obj] === null) {
             delete data[obj];
         }
     }
@@ -71,26 +71,26 @@
 }
 
 // 鏉冮檺
-function limit(child){
-    if (child == null){
+function limit(child) {
+    if (child == null) {
         child = false;
     }
-    var param = (child?parent.window:window).location.href.split("?")[1];
+    var param = (child ? parent.window : window).location.href.split("?")[1];
     if (null != param) {
         var resourceId = param.split("=")[1];
         $.ajax({
-            url: baseUrl+"/power/menu/"+resourceId+"/auth",
-            headers: {'token': localStorage.getItem('token')},
+            url: baseUrl + "/power/menu/" + resourceId + "/auth",
+            headers: { 'token': localStorage.getItem('token') },
             method: 'GET',
             async: false,
             success: function (res) {
-                if (res.code === 200){
-                    for(var i = 0, len = res.data.length; i < len; i++) {
-                        (child?parent:window).$('#'+res.data[i].code).css("display", "inline-block");
-                        (child?parent:window).$('.'+res.data[i].code).css("display", "inline-block");
+                if (res.code === 200) {
+                    for (var i = 0, len = res.data.length; i < len; i++) {
+                        (child ? parent : window).$('#' + res.data[i].code).css("display", "inline-block");
+                        (child ? parent : window).$('.' + res.data[i].code).css("display", "inline-block");
                     }
-                } else if (res.code === 403){
-                    top.location.href = baseUrl+"/";
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
                 } else {
                     layer.msg(res.msg)
                 }
@@ -113,15 +113,15 @@
                 url: url,
                 data: data,
                 dataType: 'json',
-                header: {'token': localStorage.getItem('token')},
+                header: { 'token': localStorage.getItem('token') },
                 timeout: 10000,
                 cache: false,
                 success: function (res) {
-                    if (res.code === 200){
+                    if (res.code === 200) {
                         callback(res);
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    }  else {
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
                         layer.msg(res.msg);
                     }
                 },
@@ -134,9 +134,9 @@
         post: function (url, param, callback, type) {
             var headerType;
             if (type === 'json') {
-                headerType = {'Content-Type': 'application/json'}
+                headerType = { 'Content-Type': 'application/json' }
             } else {
-                headerType = {'Content-Type': 'application/x-www-form-urlencoded'}
+                headerType = { 'Content-Type': 'application/x-www-form-urlencoded' }
             }
             headerType['token'] = localStorage.getItem('token');
             http.toAjax({
@@ -148,11 +148,11 @@
                 timeout: 10000,
                 cache: false,
                 success: function (res) {
-                    if (res.code === 200){
+                    if (res.code === 200) {
                         callback(res);
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    }  else {
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
                         layer.msg(res.msg);
                     }
                 },
@@ -172,126 +172,144 @@
 /*************************************************************************************************************/
 
 function arrRemove(arr, key, val) {
-    for(var i=arr.length-1; i>=0; i--){
-        if(arr[i][key] === val){
-            arr.splice(i,1);
+    for (var i = arr.length - 1; i >= 0; i--) {
+        if (arr[i][key] === val) {
+            arr.splice(i, 1);
         }
     }
 }
 
 var matCols = [
-    {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', width: 180}
+    { field: 'matnr', align: 'center', title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', width: 180 }
     // {field: 'id', align: 'center',title: 'ID'}
     // ,{field: 'uuid', align: 'center',title: '缂栧彿'}
-    ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', width: 200}
-    ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-    ,{field: 'safeQty', align: 'center',title: '褰掗浂闃�鍊�'}
-    ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
-    ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
-    ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
-    ,{field: 'upQty', align: 'center',title: '缁勬墭涓婇檺', hide: true}
-    ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false}
-    ,{field: 'price', align: 'center',title: '鍗曚环', hide: true}
-    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
-    ,{field: 'units', align: 'center',title: '鍗曚綅閲�', hide: true}
-    ,{field: 'barcode', align: 'center',title: '鏉$爜', hide: true}
-    ,{field: 'origin', align: 'center',title: '浜у湴', hide: true}
-    ,{field: 'manu', align: 'center',title: '鍘傚', hide: true}
-    ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡', hide: true}
-    ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�', hide: true}
-    ,{field: 'weight', align: 'center',title: '鍗曠鍑�閲�', hide: true}
-    ,{field: 'length', align: 'center',title: '鍗曠姣涢噸', hide: true}
-    ,{field: 'volume', align: 'center',title: '鍗曠浣撶Н', hide: true}
-    ,{field: 'threeCode', align: 'center',title: '绠卞瓙灏哄', hide: true}
-    ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
-    ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: true}
-    ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规', hide: true}
-    ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�', hide: true}
-    ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟', hide: true}
-    ,{field: 'source$', align: 'center',title: '鍒惰喘', hide: true}
-    ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true}
-    ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true}
+    , { field: 'maktx', align: 'center', title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', width: 200 }
+    , { field: 'specs', align: 'center', title: '瑙勬牸' }
+    , { field: 'safeQty', align: 'center', title: '褰掗浂闃�鍊�' , templet: function (d) {
+            var raw = d.safeQty; 
+            if (raw === null || raw === undefined) return '';
+            if (typeof raw === 'string' && raw.trim() === '') return '';
+            var num = Number(raw);
+            if (!isFinite(num)) return '';
+            return num.toFixed(2);
+        }}
+    , { field: 'model', align: 'center', title: '浠g爜', hide: true }
+    , { field: 'color', align: 'center', title: '棰滆壊', hide: true }
+    , { field: 'brand', align: 'center', title: '鍝佺墝', hide: true }
+    , { field: 'upQty', align: 'center', title: '缁勬墭涓婇檺', hide: true }
+    , { field: 'unit', align: 'center', title: '鍗曚綅', hide: false }
+    , { field: 'price', align: 'center', title: '鍗曚环', hide: true }
+    , { field: 'sku', align: 'center', title: 'sku', hide: true }
+    , { field: 'units', align: 'center', title: '鍗曚綅閲�', hide: true }
+    , { field: 'barcode', align: 'center', title: '鏉$爜', hide: true }
+    , { field: 'origin', align: 'center', title: '浜у湴', hide: true }
+    , { field: 'manu', align: 'center', title: '鍘傚', hide: true }
+    , { field: 'manuDate', align: 'center', title: '鐢熶骇鏃ユ湡', hide: true }
+    , { field: 'itemNum', align: 'center', title: '鍝侀」鏁�', hide: true }
+    , { field: 'weight', align: 'center', title: '鍗曠鍑�閲�', hide: true }
+    , { field: 'length', align: 'center', title: '鍗曠姣涢噸', hide: true }
+    , {
+        field: 'volume', align: 'center', title: 'kg/cm', templet: function (d) {
+            var raw = d.volume; 
+            if (raw === null || raw === undefined) return '';
+            if (typeof raw === 'string' && raw.trim() === '') return '';
+            var num = Number(raw);
+            if (!isFinite(num)) return '';
+            return num.toFixed(2);
+        }
+    }
+    , { field: 'threeCode', align: 'center', title: '绠卞瓙灏哄', hide: true }
+    , { field: 'supp', align: 'center', title: '渚涘簲鍟�', hide: true }
+    , { field: 'suppCode', align: 'center', title: '渚涘簲鍟嗙紪鐮�', hide: true }
+    , { field: 'beBatch$', align: 'center', title: '鏄惁鎵规', hide: true } 
+    , { field: 'deadTime', align: 'center', title: '淇濊川鏈�', hide: true }
+    , { field: 'deadWarn', align: 'center', title: '棰勮澶╂暟', hide: true }
+    , { field: 'source$', align: 'center', title: '鍒惰喘', hide: true }
+    , { field: 'check$', align: 'center', title: '瑕佹眰妫�楠�', hide: true }
+    , { field: 'danger$', align: 'center', title: '鍗遍櫓鍝�', hide: true }
     // ,{field: 'status$', align: 'center',title: '鐘舵��'}
     // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
     // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
-    ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳', hide: true}
-    ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿', hide: true}
-    ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
-
+    , { field: 'updateBy$', align: 'center', title: '淇敼浜哄憳', hide: true }
+    , { field: 'updateTime$', align: 'center', title: '淇敼鏃堕棿', hide: true }
+    , { field: 'memo', align: 'center', title: '澶囨敞', hide: true }
 ]
 
 var cacheCols = [
-    {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort:true}
-    ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort:true}
-    ,{field: 'anfme', align: 'center',title: '鏁伴噺', hide: false}
-    ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false}
-    ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
-    ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
-    ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
-    ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false}
-    ,{field: 'batch', align: 'center',title: '璐у搧鐗瑰緛', sort:true}
-    ,{field: 'frozen$', align: 'center',title: '鍐荤粨鍚�',hide: true,
-        templet: function(d) {
+    { field: 'matnr', align: 'center', title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort: true }
+    , { field: 'maktx', align: 'center', title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort: true }
+    , { field: 'anfme', align: 'center', title: '鏁伴噺', hide: false }
+    , { field: 'specs', align: 'center', title: '瑙勬牸', hide: false }
+    , { field: 'model', align: 'center', title: '浠g爜', hide: true }
+    , { field: 'color', align: 'center', title: '棰滆壊', hide: true }
+    , { field: 'brand', align: 'center', title: '鍝佺墝', hide: true }
+    , { field: 'unit', align: 'center', title: '鍗曚綅', hide: false }
+    , { field: 'batch', align: 'center', title: '璐у搧鐗瑰緛', sort: true }
+    , {
+        field: 'frozen$', align: 'center', title: '鍐荤粨鍚�', hide: true,
+        templet: function (d) {
             // 鏍规嵁鏉′欢鍒ゆ柇瀛椾綋棰滆壊
             if (d.frozen$ === '宸插喕缁�') {
-                return '<span style="color: #34a8de;">' +d.frozen$ + '</span>';
+                return '<span style="color: #34a8de;">' + d.frozen$ + '</span>';
             } else {
-                return '<span">' +d.frozen$ + '</span>';
+                return '<span">' + d.frozen$ + '</span>';
             }
-        }}
+        }
+    }
 ]
 
 var detlCols = [
-    {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort:true}
-    ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort:true}
-    ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
-    ,{field: 'batch', align: 'center',title: '璐у搧鐗瑰緛', sort:true}
-    ,{field: 'anfme', align: 'center',title: '鏁伴噺', hide: false}
-    ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false}
-    ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false}
-    ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
-    ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
-    ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
-    ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false}
-    ,{field: 'price', align: 'center',title: '鍗曚环', hide: true}
-    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
-    ,{field: 'units', align: 'center',title: '鍗曚綅閲�', hide: true}
-    ,{field: 'barcode', align: 'center',title: '鏉$爜', hide: true}
-    ,{field: 'origin', align: 'center',title: '浜у湴', hide: true}
-    ,{field: 'manu', align: 'center',title: '鍘傚', hide: true}
-    ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡', hide: true}
-    ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�', hide: true}
-    ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�', hide: true}
-    ,{field: 'weight', align: 'center',title: '鍗曠鍑�閲�', hide: true}
-    ,{field: 'length', align: 'center',title: '鍗曠姣涢噸', hide: true}
-    ,{field: 'volume', align: 'center',title: '鍗曠浣撶Н', hide: true}
-    ,{field: 'threeCode', align: 'center',title: '绠卞瓙灏哄', hide: true}
-    ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
-    ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: true}
-    ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规', hide: true}
-    ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�', hide: true}
-    ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟', hide: true}
-    ,{field: 'source$', align: 'center',title: '鍒惰喘', hide: true}
-    ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true}
-    ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true}
-    ,{field: 'frozen$', align: 'center',title: '鍐荤粨鍚�',hide: true,
-        templet: function(d) {
+    { field: 'matnr', align: 'center', title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort: true }
+    , { field: 'maktx', align: 'center', title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort: true }
+    , { field: 'orderNo', align: 'center', title: '鍗曟嵁缂栧彿', hide: false }
+    , { field: 'batch', align: 'center', title: '璐у搧鐗瑰緛', sort: true }
+    , { field: 'anfme', align: 'center', title: '鏁伴噺', hide: false }
+    , { field: 'zpallet', align: 'center', title: '鎵樼洏鏉$爜', hide: false }
+    , { field: 'specs', align: 'center', title: '瑙勬牸', hide: false }
+    , { field: 'model', align: 'center', title: '浠g爜', hide: true }
+    , { field: 'color', align: 'center', title: '棰滆壊', hide: true }
+    , { field: 'brand', align: 'center', title: '鍝佺墝', hide: true }
+    , { field: 'unit', align: 'center', title: '鍗曚綅', hide: false }
+    , { field: 'price', align: 'center', title: '鍗曚环', hide: true }
+    , { field: 'sku', align: 'center', title: 'sku', hide: true }
+    , { field: 'units', align: 'center', title: '鍗曚綅閲�', hide: true }
+    , { field: 'barcode', align: 'center', title: '鏉$爜', hide: true }
+    , { field: 'origin', align: 'center', title: '浜у湴', hide: true }
+    , { field: 'manu', align: 'center', title: '鍘傚', hide: true }
+    , { field: 'manuDate', align: 'center', title: '鐢熶骇鏃ユ湡', hide: true }
+    , { field: 'itemNum', align: 'center', title: '鍝侀」鏁�', hide: true }
+    , { field: 'safeQty', align: 'center', title: '瀹夊叏搴撳瓨閲�', hide: true }
+    , { field: 'weight', align: 'center', title: '鍗曠鍑�閲�', hide: true }
+    , { field: 'length', align: 'center', title: '鍗曠姣涢噸', hide: true }
+    , { field: 'volume', align: 'center', title: '鍗曠浣撶Н', hide: true }
+    , { field: 'threeCode', align: 'center', title: '绠卞瓙灏哄', hide: true }
+    , { field: 'supp', align: 'center', title: '渚涘簲鍟�', hide: true }
+    , { field: 'suppCode', align: 'center', title: '渚涘簲鍟嗙紪鐮�', hide: true }
+    , { field: 'beBatch$', align: 'center', title: '鏄惁鎵规', hide: true }
+    , { field: 'deadTime', align: 'center', title: '淇濊川鏈�', hide: true }
+    , { field: 'deadWarn', align: 'center', title: '棰勮澶╂暟', hide: true }
+    , { field: 'source$', align: 'center', title: '鍒惰喘', hide: true }
+    , { field: 'check$', align: 'center', title: '瑕佹眰妫�楠�', hide: true }
+    , { field: 'danger$', align: 'center', title: '鍗遍櫓鍝�', hide: true }
+    , {
+        field: 'frozen$', align: 'center', title: '鍐荤粨鍚�', hide: true,
+        templet: function (d) {
             // 鏍规嵁鏉′欢鍒ゆ柇瀛椾綋棰滆壊
             if (d.frozen$ === '宸插喕缁�') {
-                return '<span style="color: #34a8de;">' +d.frozen$ + '</span>';
+                return '<span style="color: #34a8de;">' + d.frozen$ + '</span>';
             } else {
-                return '<span">' +d.frozen$ + '</span>';
+                return '<span">' + d.frozen$ + '</span>';
             }
-        }}
+        }
+    }
 ]
 
-function getQueryVariable(variable)
-{
+function getQueryVariable(variable) {
     var query = window.location.search.substring(1);
     var vars = query.split("&");
-    for (var i=0;i<vars.length;i++) {
+    for (var i = 0; i < vars.length; i++) {
         var pair = vars[i].split("=");
-        if(pair[0] == variable){return pair[1];}
+        if (pair[0] == variable) { return pair[1]; }
     }
-    return(false);
+    return (false);
 }

--
Gitblit v1.9.1