Browse Source

预装箱单第二版

fenghaifu 2 years ago
parent
commit
03172f4c17

+ 42 - 0
src/utils/myutil.js

@@ -33,4 +33,46 @@ export function myFormatDate(date, fmt) {
     }
   }
   return fmt;
+}
+
+/**
+ * 获取小数点配置:单价 4位,金额2位,重量 2位,体积 3位。
+ * 成衣 整数,面料2位,辅料待确认。PCS整数,M/KG 2
+ * 件数/箱 整数?
+ * masterMetering:单位
+ */
+export function getDotConfig(masterMetering){
+  var config = {
+    price : 4,    // 单价
+    money : 2,    // 金额
+    weight : 2,   // 重量
+    volume : 3,   // 体积
+    quantity : 0       // 数量
+  };
+  if (masterMetering =="PCS"){
+    config.quantity = 0;
+  }else if (masterMetering =="M/KG"){
+    config.quantity = 2;
+  }
+  
+  return config;
+}
+/**
+ * 获取小数点位数的正则表达式,支持0~4位小数
+ * dot 小数点位数
+ */
+export function getDotValidExpress(dot){
+  if (dot == 0){
+    return {pattern: /^[1-9]\d*$/, message: '请输入零以上的正整数' };
+  } else if (dot == 1){
+    return {pattern: /^\d+(\.\d{1})?$/, message: '小数点位数不能超过1位' };
+  } else if (dot == 2){
+    return {pattern: /^\d+(\.\d{1,2})?$/, message: '小数点位数不能超过2位' };
+  } else if (dot == 3){
+    return {pattern: /^\d+(\.\d{1,3})?$/, message: '小数点位数不能超过3位' };
+  } else if (dot == 4){
+    return {pattern: /^\d+(\.\d{1,4})?$/, message: '小数点位数不能超过4位' };
+  }
+  return {};
+
 }

+ 62 - 45
src/views/advance-packingList/addAdpackingDrawer.vue

@@ -185,6 +185,7 @@ import { addAdvPac } from '@api/document/advance-packingList.js'
 import { queryShippingDetails } from '@api/document/advance-packingList.js'
 import { JVXETypes } from '@/components/jeecg/JVxeTable'
 import { pushIfNotExist, randomNumber, randomUUID } from '@/utils/util'
+import { getDotConfig, getDotValidExpress } from '@/utils/myutil'
 
 export default {
   name: 'AddAdvancePacking', // 新增预装箱单
@@ -261,6 +262,7 @@ export default {
           key: 'startingBoxNumber',
           width: 120,
           type: JVXETypes.input ,
+          validateRules:[{ required: true, message: '${title}不能为空' }],
         },
 
         {
@@ -268,6 +270,7 @@ export default {
           key: 'endCaseNumber',
           width: 140,
           type: JVXETypes.input ,
+          validateRules:[{ required: true, message: '${title}不能为空' }],
         },
 
         {
@@ -292,7 +295,9 @@ export default {
           title: '箱数',
           key: 'boxNumber',
           width: 140,
-          type: JVXETypes.normal ,
+          type: JVXETypes.inputNumber ,
+          validateRules:[{ required: true, message: '${title}不能为空' },
+            {pattern: /^[1-9]\d*$/, message: '请输入零以上的正整数' }],
         },
 
         {
@@ -306,7 +311,8 @@ export default {
           key: 'netWeight',
           width: 90,
           type: JVXETypes.inputNumber,
-          validateRules: [{ required: true, message: '${title}不能为空' }]
+          validateRules: [{ required: true, message: '${title}不能为空' },
+            {pattern: /^\d+(\.\d{1,2})?$/, message: '小数点位数不能超过2位' }]
         },
         {
           title: '总净重',
@@ -320,7 +326,8 @@ export default {
           key: 'grossWeight',
           width: 120,
           type: JVXETypes.inputNumber,
-          validateRules: [{ required: true, message: '${title}不能为空' }]
+          validateRules: [{ required: true, message: '${title}不能为空' },
+            {pattern: /^\d+(\.\d{1,2})?$/, message: '小数点位数不能超过2位' }]
         },
         {
           title: '总毛重',
@@ -333,7 +340,8 @@ export default {
           key: 'outerBoxLength',
           width: 120,
           type: JVXETypes.inputNumber,
-          validateRules: [{ required: true, message: '${title}不能为空' }]
+          validateRules: [{ required: true, message: '${title}不能为空' },
+            {pattern: /^\d+(\.\d{1})?$/, message: '小数点位数不能超过1位' }]
         },
 
         {
@@ -341,13 +349,15 @@ export default {
           key: 'outerBoxWidth',
           width: 140,
           type: JVXETypes.inputNumber,
-          validateRules: [{ required: true, message: '${title}不能为空' }]
+          validateRules: [{ required: true, message: '${title}不能为空' },
+            {pattern: /^\d+(\.\d{1})?$/, message: '小数点位数不能超过1位' }]
         },
         {
           title: '外箱高度',
           key: 'outerBoxHeight',
           type: JVXETypes.inputNumber ,
-          validateRules: [{ required: true, message: '${title}不能为空' }],
+          validateRules: [{ required: true, message: '${title}不能为空' },
+            {pattern: /^\d+(\.\d{1})?$/, message: '小数点位数不能超过1位' }],
           width: 140,
         },
 
@@ -362,7 +372,9 @@ export default {
           title: '净净重',
           key: 'netWeightToo',
           width: 120,
-          type: JVXETypes.normal,
+          type: JVXETypes.inputNumber,
+          validateRules: [{ required: true, message: '${title}不能为空' },
+            {pattern: /^\d+(\.\d{1,2})?$/, message: '小数点位数不能超过2位' }],
         },
         {
           title: '单价',
@@ -406,6 +418,7 @@ export default {
       //   name: [{ required: true, message: '品名不能为空', trigger: 'blur' }]
       // },
       sizeFields:[], // 尺码字段
+      dotConfig:{}, // 小数点配置
     }
   },
   // 接收父组件查询方法
@@ -435,6 +448,9 @@ export default {
             var newColums = this.columns.filter(item=>{
               return item.isSize != true;
             });
+            // 放在前面,有小数位数设置
+            this.setHeadData(val[0], res.result);
+
             this.sizeFields = [];
             var sizeTable = res.result.sizeTables;
             if (sizeTable != null){
@@ -448,19 +464,22 @@ export default {
               // 插入数据
               for (var j=0;j<sizeTable.length;j++){
                 this.sizeFields.push('size-'+sizeTable[j].size);
-                newColums.splice(i+1+j,0,{
+                var validExpress = getDotValidExpress(this.dotConfig.quantity);
+                var field = {
                     title: sizeTable[j].size,
                     key: 'size-'+sizeTable[j].size,
                     type: JVXETypes.inputNumber ,
                     width: 80,
-                    isSize:true
-                });
+                    isSize:true,
+                    validateRules: [validExpress]
+                };
+                
+                newColums.splice(i+1+j,0,field);
               }
             }
             
-            this.columns = newColums;
+            this.columns = newColums;            
             
-            this.setHeadData(val[0], res.result);
             var changedData = this.changeData(val[0], res.result);
             this.addAdpacking.syPreAssembledPackingListItemList.push(changedData);
 
@@ -478,7 +497,7 @@ export default {
 
     //  保存
     saveAdd() {
-      var newObj = JSON.parse(JSON.stringify(this.addAdpacking));
+      var newObj = this.addAdpacking;
       if (this.sizeFields.length == 0){
         this.$message.error('当前记录没有尺码字段,无法保存');
         return;
@@ -487,8 +506,6 @@ export default {
         this.$message.error('总箱数为0,无法保存');
         return;
       }
-      // 尺码二维表分成多条记录
-      var subList = [];
       var sort = 0;
       for (var i=0; i<newObj.syPreAssembledPackingListItemList.length;i++){
         var tableRow = newObj.syPreAssembledPackingListItemList[i];
@@ -505,6 +522,10 @@ export default {
           this.$message.error('第'+(i+1)+'行结束箱号未填,无法保存');
           return;
         }
+        if (tableRow.boxNumber == "" || tableRow.boxNumber == 0){
+          this.$message.error('第'+(i+1)+'行箱数,无法保存');
+          return;
+        }
         if (tableRow.netWeight == null || tableRow.netWeight == "" || tableRow.netWeight == undefined){
           this.$message.error('第'+(i+1)+'行净重/箱未填,无法保存');
           return;
@@ -529,25 +550,17 @@ export default {
           this.$message.error('第'+(i+1)+'行外箱高度未填,无法保存');
           return;
         }
-
-        for (var j=0; j<this.sizeFields.length;j++){
-          var sizeField = this.sizeFields[j];
-          var rowData = JSON.parse(JSON.stringify(tableRow));
-          rowData.size = sizeField.substr(5);    // 'size-'+
-          if (rowData[sizeField] == undefined || rowData[sizeField] == null || rowData[sizeField] == ""){
-            continue;
-          }
-          rowData.boxNumber = rowData[sizeField]; // 箱数
-          rowData.total = rowData.boxNumber*rowData.piecesBox;  //件数
-          rowData.totalNetWeight = rowData.boxNumber*rowData.netWeight;  // 总净重
-          rowData.totalGrossWeight = rowData.boxNumber*rowData.grossWeight;  // 总毛重
-          rowData.totalVolume = rowData.boxNumber*rowData.outerBoxLength*rowData.outerBoxWidth*rowData.outerBoxHeight;  // 总体积
-          rowData.totalPrice = rowData.total*rowData.unitPrice; // 总价
-          rowData.sort = ++sort;
-          subList.push(rowData);
+        if (tableRow.netWeightToo == null || tableRow.netWeightToo == "" || tableRow.netWeightToo == undefined){
+          this.$message.error('第'+(i+1)+'行净净重未填,无法保存');
+          return;
+        }
+        for (var j=0; j<tableRow.sizeTables.length; j++){
+          var sizeTable = tableRow.sizeTables[j];
+          var field = 'size-'+sizeTable.size;
+          tableRow.sizeTables[j].quantity = tableRow[field];
         }
+        tableRow.sort = ++sort;
       }
-      newObj.syPreAssembledPackingListItemList = subList;
       addAdvPac(newObj).then(res => {
         if (res.success) {
           this.$message.success('新增成功')
@@ -556,6 +569,8 @@ export default {
           newObj = {syPreAssembledPackingListItemList:[]};
           this.fatherList() // 调用父组件 查询方法
           // this.msgFormSon = {}  清空子表信息
+        }else{
+          this.$message.error(res.message)
         }
       })
       
@@ -575,6 +590,8 @@ export default {
       if (mData.syPreAssembledPackingListItemList != null && mData.syPreAssembledPackingListItemList.size>0){
         itemData = mData.syPreAssembledPackingListItemList[0];
       }
+      // 设置件数小数位数
+      this.dotConfig = getDotConfig(itemData.masterMetering);
 
       this.addAdpacking.syDeclarationElementsId = mData.syDeclarationElementsId;      
       this.addAdpacking.itemNumber = referData.itemNumber;
@@ -612,7 +629,7 @@ export default {
         endCaseNumber: '',
         colour: itemData.colour,
         withCode: itemData.withCode,
-        piecesBox: itemData.piecesBox,
+        piecesBox: 0,
         boxNumber: '',
         total: '',
         netWeight: '',
@@ -631,6 +648,7 @@ export default {
         spurOrSubOrder:referData.purOrSubOrder,
         factoryUnitPrice:referData.factoryUnitPrice,
         customerAbbreviation:referData.customerAbbreviation,
+        sizeTables : itemData.sizeTables,
       }
       return addrow;
     },
@@ -665,21 +683,21 @@ export default {
     // 表格字段值变动时触发
     handleValueChange(event) {
       var allSizeSum = this.getAllSizeSum(event.row);
-      event.row.boxNumber = allSizeSum;
-      event.row.total = allSizeSum*event.row.piecesBox;
+      event.row.piecesBox = allSizeSum.toFixed(this.dotConfig.quantity);
+      event.row.total = (event.row.piecesBox*event.row.boxNumber).toFixed(this.dotConfig.quantity);
       if (event.row.unitPrice != undefined && event.row.unitPrice != ""){
-        event.row.totalPrice = event.row.unitPrice*event.row.total;
+        event.row.totalPrice = (event.row.unitPrice*event.row.total).toFixed(this.dotConfig.money);
       }
       if (event.row.netWeight != "" && event.row.netWeight != undefined){
-        event.row.totalNetWeight = event.row.netWeight * allSizeSum;
+        event.row.totalNetWeight = event.row.netWeight * event.row.boxNumber;
       }
       if (event.row.grossWeight != "" && event.row.grossWeight != undefined){
-        event.row.totalGrossWeight = event.row.grossWeight * allSizeSum;
+        event.row.totalGrossWeight = event.row.grossWeight * event.row.boxNumber;
       }
       if (event.row.outerBoxLength != "" && event.row.outerBoxLength != undefined &&
       event.row.outerBoxWidth != "" && event.row.outerBoxWidth != undefined &&
       event.row.outerBoxHeight != "" && event.row.outerBoxHeight != undefined){
-        event.row.totalVolume = event.row.outerBoxLength * event.row.outerBoxWidth * event.row.outerBoxHeight * allSizeSum;
+        event.row.totalVolume = (event.row.outerBoxLength * event.row.outerBoxWidth * event.row.outerBoxHeight * event.row.boxNumber).toFixed(this.dotConfig.volume);
       }
       this.setHeadCalField();
       },
@@ -704,19 +722,18 @@ export default {
 
       for (var i=0; i<headData.syPreAssembledPackingListItemList.length; i++){
         var rowData = headData.syPreAssembledPackingListItemList[i];
-        var allSizeSum = this.getAllSizeSum(rowData);
-        totalBoxes += allSizeSum;
+        totalBoxes += rowData.boxNumber;
         if (rowData.totalNetWeight != undefined && rowData.totalNetWeight != ""){
-          totalNetWeight += rowData.totalNetWeight;
+          totalNetWeight += rowData.totalNetWeight*1;
         }
         if (rowData.totalGrossWeight != undefined && rowData.totalGrossWeight != ""){
-          totalGrossWeight += rowData.totalGrossWeight;
+          totalGrossWeight += rowData.totalGrossWeight*1;
         }
         if (rowData.totalVolume != undefined && rowData.totalVolume != ""){
-          totalVolume += rowData.totalVolume;
+          totalVolume += rowData.totalVolume*1;
         }
         if (rowData.totalPrice != undefined && rowData.totalPrice != ""){
-          totalPrice += rowData.totalPrice;
+          totalPrice += rowData.totalPrice*1;
         }
       }
       headData.totalBoxes = totalBoxes;

+ 1 - 1
src/views/order/orderList.vue

@@ -224,7 +224,7 @@ export default {
         // total: '',
         // current: 0,
         // pageSize: 0
-      }
+      },
     }
   },