ソースを参照

feat: 单位转换考虑100t,1000t的情况

zhangweicheng 4 年 前
コミット
29d51b54e9

+ 4 - 4
modules/main/facade/ration_facade.js

@@ -1217,14 +1217,14 @@ async function CalculateQuantity (ration,billsItemID,projectID) {
     let b_unit = pbill.unit?pbill.unit:"";
     ration.quantityEXP="QDL";
     if((/.*kg$/i).test(b_unit)){
-      if((/t/i).test(t_unit)) {
+      if((/.*t$/i).test(t_unit)) {
         rationTimes = 1000;//如 kg 转 t 时是1000
         ration.quantityEXP="QDL*0.001"
       }
-      if((/10t/i).test(t_unit)){
+     /*  if((/10t/i).test(t_unit)){ 兼容 100t 1000t 的情况,统一都乘0.001 再除单位前的数字
         rationTimes = 10000;//如 kg 转 10t 时是1000
         ration.quantityEXP="QDL*0.0001"
-      } 
+      }  */
     }
     
    /* let  t_unit = ration.unit?ration.unit.replace(/^\d+/,""):""; 2019-02-01 养护去掉清单与定额单位的这个判断
@@ -1233,7 +1233,7 @@ async function CalculateQuantity (ration,billsItemID,projectID) {
     }*/
     let billsQuantity = pbill.quantity ? pbill.quantity : 0;
     let bill_decimal = await decimal_facade.getBillsQuantityDecimal(projectID,pbill.unit,project);
-    let ftimes = rationTimes == 1?FilterNumberFromUnit(ration.unit):rationTimes;
+    let ftimes = rationTimes * FilterNumberFromUnit(ration.unit) //rationTimes == 1?FilterNumberFromUnit(ration.unit):rationTimes;
     billsQuantity=scMathUtil.roundForObj(billsQuantity,bill_decimal);
     ration.quantity = scMathUtil.roundForObj(billsQuantity / ftimes ,quantity_decimal);//不管是否打勾都做转换
     ration.contain =  scMathUtil.roundForObj(ration.quantity/billsQuantity,6);

+ 8 - 1
web/building_saas/main/js/models/ration.js

@@ -797,12 +797,19 @@ var Ration = {
             node.updateData.contain = contain;
             node.updateData.quantityEXP="QDL*"+contain;
             node.updateData.quantity=scMathUtil.roundForObj(billQuantity*contain,getDecimal("quantity",node));
-            if(!gljUtil.isKGtoT(billNode.data.unit,node.data.unit)){
+           /*  if(!gljUtil.isKGtoT(billNode.data.unit,node.data.unit)){
               let times = parseInt(node.data.unit);
               if (!isNaN(times)) {
                   node.updateData.quantityEXP+='*'+times;
               }
+            }   兼容100和,1000t的问题 
+            */
+
+            let times = parseInt(node.data.unit);
+            if (!isNaN(times)) {
+                node.updateData.quantityEXP+='*'+times;
             }
+
             //  node.data.quantity = projectObj.project.quantity_detail.autoTransformQuantity(node.data.quantity,node);//按单位做转换
             node.changed = true;
             project.calcProgram.calcAndSave(node, function () {