Browse Source

人材机单价的小数位数新规则。

chenshilong 7 years ago
parent
commit
ebb04ffedd
1 changed files with 18 additions and 9 deletions
  1. 18 9
      web/building_saas/main/js/models/calc_program.js

+ 18 - 9
web/building_saas/main/js/models/calc_program.js

@@ -272,8 +272,8 @@ let calcTools = {
                     calcTools.calcGLJTenderQty(treeNode, glj);
                 };
                 let qty = isTender ? me.uiGLJQty(glj["tenderQuantity"]) : me.uiGLJQty(glj["quantity"]);
-                let mprice = isTender ? me.uiGLJPrice(glj["tenderPrice"]) : me.uiGLJPrice(glj["marketPrice"]);
-                let aprice = calcTools.hasAdjustPrice() ? me.uiGLJPrice(glj["adjustPrice"]) : me.uiGLJPrice(glj["basePrice"]);
+                let mprice = isTender ? me.uiGLJPrice(glj["tenderPrice"], glj) : me.uiGLJPrice(glj["marketPrice"], glj);
+                let aprice = calcTools.hasAdjustPrice() ? me.uiGLJPrice(glj["adjustPrice"], glj) : me.uiGLJPrice(glj["basePrice"], glj);
 
                 if (priceType == priceTypes.ptDiffPrice){
                     if (aprice != mprice){
@@ -282,7 +282,7 @@ let calcTools = {
                     }
                 }
                 else {
-                    if (priceType == priceTypes.ptBasePrice){ price = me.uiGLJPrice(glj["basePrice"]);}
+                    if (priceType == priceTypes.ptBasePrice){ price = me.uiGLJPrice(glj["basePrice"], glj);}
                     else if (priceType == priceTypes.ptAdjustPrice){price = aprice;}
                     else if (priceType == priceTypes.ptMarketPrice){price = mprice;}
                     temp = (qty * price).toDecimal(decimalObj.process);
@@ -378,7 +378,7 @@ let calcTools = {
 
             let rst = 0;
             for (let obj of GLJObjs){
-                let tp = (me.uiGLJQty(obj.quantity) * me.uiGLJPrice(obj.marketPrice)).toDecimal(decimalObj.bills.totalPrice);
+                let tp = (me.uiGLJQty(obj.quantity) * me.uiGLJPrice(obj.marketPrice, obj)).toDecimal(decimalObj.bills.totalPrice);
                 rst = (rst + tp).toDecimal(decimalObj.bills.totalPrice);
             };
             return rst;
@@ -401,7 +401,7 @@ let calcTools = {
             for (let glj of treeNode.data.gljList) {
                 if (!allMaterialTypes.includes(glj.type)) continue;
                 if (glj.isEstimate){
-                    rst = rst + (me.uiGLJQty(glj.quantity) * me.uiGLJPrice(glj.marketPrice)).toDecimal(decimalObj.process);
+                    rst = rst + (me.uiGLJQty(glj.quantity) * me.uiGLJPrice(glj.marketPrice, glj)).toDecimal(decimalObj.process);
                     rst = rst.toDecimal(decimalObj.process);
                 }
                 else{   // 组成物
@@ -725,14 +725,17 @@ let calcTools = {
                 pCoe = projectObj.project.property.tenderSetting.gljPriceTenderCoe;
             glj.tenderPrice = (glj.marketPrice * pCoe).toDecimal(decimalObj.glj.unitPrice);
         }else{
-            let projGLJ = projectObj.project.projectGLJ.getDataByID(glj.projectGLJID);
+            let projGLJ = calcTools.getProjectGLJ(glj);
             glj.tenderPrice = projectObj.project.projectGLJ.getTenderMarketPrice(projGLJ);
         };
     },
     // 界面显示的工料机价格,包括定额价、市场价等。参数 price 传入一个普通的价格数值即可。
-    uiGLJPrice: function (price){
-        if (price)
-            return parseFloat(price).toDecimal(decimalObj.glj.unitPrice)
+    uiGLJPrice: function (price, glj){
+        if (price){
+            let projGLJ = glj ? calcTools.getProjectGLJ(glj) : null;
+            let d = (projGLJ.ratio_data.length > 0) ? decimalObj.glj.unitPriceHasMix : decimalObj.glj.unitPrice;
+            return parseFloat(price).toDecimal(d);
+        }
         else return 0;
     },
     // 界面显示的工料机数量。参数 quantity 传入一个普通的数量数值即可。
@@ -780,6 +783,12 @@ let calcTools = {
                 discreteNodes.push(node);
         };
         return discreteNodes;
+    },
+    getProjectGLJ(glj){
+        if (glj.projectGLJID){
+            return projectObj.project.projectGLJ.getDataByID(glj.projectGLJID);
+        }
+        else return null;
     }
 };