소스 검색

发运明细-表格排序问题

jingbb 9 달 전
부모
커밋
c5f7926c97
1개의 변경된 파일36개의 추가작업 그리고 14개의 파일을 삭제
  1. 36 14
      src/views/shipment-details/shipmentList.vue

+ 36 - 14
src/views/shipment-details/shipmentList.vue

@@ -1146,20 +1146,42 @@ export default {
       })
     },
     sortChange(params) {
-                this.shipmentListData.sort((a, b) => {
-                  for (var key in params) {
-                   if(params[key]){
-                    if (params[key] === "asc") {
-                            return a[key] - b[key];
-                        } else if (params[key] === "desc") {
-                            return b[key] - a[key];
-                        } else {
-                            return 0;
-                        }
-                   }
-                  }
-                });
-            },
+      this.shipmentListData.sort((a, b) => {
+        for (var key in params) {
+          if(params[key]){
+            if (params[key] === "asc") {
+              if (!isNaN(a[key]) && !isNaN(b[key])) {
+                // 如果都是数字,按数字排序
+                return a[key] - b[key];
+              } else if (!isNaN(a[key]) || !isNaN(b[key])) {
+                // 如果一个是数字一个是字母,数字排在后面
+                return isNaN(a[key]) ? 1 : -1;
+              } else {
+                const nameA = a[key].toUpperCase(); // 转换为大写以便统一处理数字和字母
+                const nameB = b[key].toUpperCase();
+                // 都是字母,按字母排序
+                return nameA.localeCompare(nameB);
+              }
+            } else if (params[key] === "desc") {
+              if (!isNaN(a[key]) && !isNaN(b[key])) {
+                // 如果都是数字,按数字排序
+                return b[key] - a[key]
+              } else if (!isNaN(a[key]) || !isNaN(b[key])) {
+                // 如果一个是数字一个是字母,数字排在前面
+                return isNaN(a[key]) ? -1 : 1;
+              } else {
+                const nameA = a[key].toUpperCase(); // 转换为大写以便统一处理数字和字母
+                const nameB = b[key].toUpperCase();
+                // 都是字母,按字母排序
+                return nameB.localeCompare(nameA);
+              }
+            } else {
+              return 0;
+             }
+          }
+        }
+      });
+  },
 
 
     //  推送