|
@@ -7,7 +7,60 @@
|
|
|
* @date 2019/1/16
|
|
|
* @version
|
|
|
*/
|
|
|
-
|
|
|
+// 编号排序,多重判断
|
|
|
+function sortByCode(a, b) {
|
|
|
+ let code1 = a.code.split('-');
|
|
|
+ let code2 = b.code.split('-');
|
|
|
+ let code1length = code1.length;
|
|
|
+ let code2length = code2.length;
|
|
|
+ for (let i = 0; i < code1length; i ++) {
|
|
|
+ if (i+1 <= code2length) {
|
|
|
+ if (code1[i] != code2[i]) {
|
|
|
+ if (/^\d+$/.test(code1[i]) && /^\d+$/.test(code2[i])) {
|
|
|
+ return parseInt(code1[i]) - parseInt(code2[i]);
|
|
|
+ } else if (!/^\d+$/.test(code1[i]) && /^\d+$/.test(code2[i])) {
|
|
|
+ return 1;
|
|
|
+ } else if (/^\d+$/.test(code1[i]) && !/^\d+$/.test(code2[i])) {
|
|
|
+ return -1;
|
|
|
+ } else {
|
|
|
+ const str1length = code1[i].length;
|
|
|
+ const str2length = code2[i].length;
|
|
|
+ for (let j = 0; j < str1length; j++) {
|
|
|
+ if (j+1 <= str2length) {
|
|
|
+ if (code1[i].charAt(j) != code2[i].charAt(j)) {
|
|
|
+ return code1[i].charAt(j).charCodeAt() - code2[i].charAt(j).charCodeAt();
|
|
|
+ } else if (j+1 == str1length && code1[i].charAt(j) == code2[i].charAt(j)) {
|
|
|
+ if (str1length == str2length) {
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ return str1length - str2length;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (j+1 >= str1length) {
|
|
|
+ return 1;
|
|
|
+ } else {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (i+1 == code1length && code1[i] == code2[i]) {
|
|
|
+ if (code1length == code2length) {
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ return code1length - code2length;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (i+1 >= code1length) {
|
|
|
+ return 1;
|
|
|
+ } else {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
function loadUpdateMaterials(newMaterial, fields) {
|
|
|
const newMaterials = newMaterial instanceof Array ? newMaterial : [newMaterial];
|
|
|
for (const nm of newMaterials) {
|
|
@@ -1414,7 +1467,8 @@ $(document).ready(() => {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- SpreadJsObj.loadSheetData(materialSourceSpread.getActiveSheet(), SpreadJsObj.DataType.Data, showSourceList);
|
|
|
+ // 按清单编号排序
|
|
|
+ SpreadJsObj.loadSheetData(materialSourceSpread.getActiveSheet(), SpreadJsObj.DataType.Data, showSourceList.sort(sortByCode));
|
|
|
}
|
|
|
|
|
|
function calcQty(info) {
|