Browse Source

砼的计算程序。

chenshilong 7 years ago
parent
commit
b125e6a48b

+ 5 - 8
web/building_saas/main/js/models/calc_program.js

@@ -382,12 +382,12 @@ let executeObj = {
                 };
                 return result;
             };
-            // 量价。没有具体的工料机类型,但仍然要用定额的计算程序,所以要给计算基数直接指定
-            function volumePriceFee() {
+            // 量价、工料机形式的定额, 要把自己的市场单价用于计算程序中的基数
+            function marketPriceToBase() {
                 let result = 0;
                 if (
                     ( me.treeNode.data.subType === gljType.LABOUR && base.dispName === '定额基价人工费') ||
-                    ( me.treeNode.data.subType === gljType.GENERAL_MATERIAL && base.dispName === '定额基价材料费') ||
+                    ( materialTypes.includes(me.treeNode.data.subType) && base.dispName === '定额基价材料费') ||
                     ( me.treeNode.data.subType === gljType.GENERAL_MACHINE && base.dispName === '定额基价机械费') ||
                     ( me.treeNode.data.subType === gljType.MAIN_MATERIAL && base.dispName === '主材费') ||
                     ( me.treeNode.data.subType === gljType.EQUIPMENT && base.dispName === '设备费')
@@ -397,7 +397,7 @@ let executeObj = {
             };
 
             if (me.treeNode.data.type == rationType.volumePrice || me.treeNode.data.type == rationType.gljRation){
-                rst = volumePriceFee();
+                rst = marketPriceToBase();
             }
             else{
                 if (isSubset(base.gljTypes, [gljType.MACHINE_LABOUR]))
@@ -1088,10 +1088,7 @@ class CalcProgram {
 
                 for (let idx of template.compiledSeq) {
                     let calcItem = template.calcItems[idx];
-
-                    let feeRate = calcItem.feeRate;
-                    if (!feeRate) feeRate = 100;    // 100%
-                    feeRate = parseFloatPlus(feeRate).toDecimal(decimalObj.feeRate);
+                    let feeRate = parseFloatPlus(calcItem.feeRate) ? parseFloatPlus(calcItem.feeRate).toDecimal(decimalObj.feeRate) : 100;  // 100%
                     calcItem.unitFee = (eval(calcItem.compiledExpr) * feeRate * 0.01).toDecimal(decimalObj.decimal('unitPrice', treeNode));   // 如果eval()对清单树有影响,就换成小麦的Expression对象再试
 
                     let q = treeNodeTools.uiQuantity(treeNode) ? treeNodeTools.uiQuantity(treeNode) : 0;

+ 9 - 0
web/building_saas/main/js/models/main_consts.js

@@ -46,6 +46,15 @@ const gljType = {
     EQUIPMENT: 5
 };
 
+const materialTypes = [
+    gljType.GENERAL_MATERIAL,
+    gljType.CONCRETE,
+    gljType.MORTAR,
+    gljType.MIX_RATIO,
+    gljType.COMMERCIAL_CONCRETE,
+    gljType.COMMERCIAL_MORTAR
+];
+
 const notEditType = [
     gljType.CONCRETE,
     gljType.MORTAR,