Browse Source

父项输入下浮系数,批量填写子项:批量子项计算汇总、效率优化等。

chenshilong 3 years ago
parent
commit
40dd2815ec

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

@@ -1990,9 +1990,9 @@ class CalcProgram {
           buf = (btf / bq).toDecimal(decimalObj.bills.unitPrice);
           buf = me.billFloatUnitPrice(buf, treeNode);
           btuf = (bttf / btq).toDecimal(decimalObj.bills.unitPrice);
+          btuf = me.billFloatUnitPrice(btuf, treeNode);
         }
 
-        // debugger;
         if (me.project.property.billsCalcMode == leafBillGetFeeType.rationPriceConverse && ["common", "rationCommon", "indexCommon"].includes(ft.type)) {
           // 招投标项目, 还要反算
           // 9-24 新需求 开放正算反算选项,按选项判断
@@ -2021,6 +2021,7 @@ class CalcProgram {
   billFloatUnitPrice(orgUnitPrice, treeNode) {
     if (compilationName === "四川养护(2013)" || compilationName === "部颁2018计价标准") {
       let coe = treeNode.data.unitPriceCoe || 1; // 单价浮动系数。只有叶子清单层的浮动系数生效
+      if (coe === "0") coe = 1;
       return (orgUnitPrice * coe).toDecimal(decimalObj.bills.unitPrice);
     } else return orgUnitPrice;
   }
@@ -2040,6 +2041,7 @@ class CalcProgram {
     let uf = (tf / q).toDecimal(decimalObj.bills.unitPrice);
     uf = me.billFloatUnitPrice(uf, treeNode);
     let tuf = (ttf / tq).toDecimal(decimalObj.bills.unitPrice);
+    tuf = me.billFloatUnitPrice(tuf, treeNode);
     if (calcTools.isBillProject()) {
       tf = (uf * q).toDecimal(decimalObj.bills.totalPrice);
       ttf = (tuf * q).toDecimal(decimalObj.bills.totalPrice);
@@ -2660,8 +2662,8 @@ class CalcProgram {
 
           if (calcTools.hasTargetTotalFee(child)) {
             child.data.tender_activeTarget = child.data.targetTotalFee;
-            console.log(treeNode.data.tender_activeTotal);
-            console.log(child.data.tender_activeTotal);
+            // console.log(treeNode.data.tender_activeTotal);
+            // console.log(child.data.tender_activeTotal);
             treeNode.data.tender_activeTotal = treeNode.data.tender_activeTotal - child.data.tender_activeTotal;
             treeNode.data.tender_activeTarget = treeNode.data.tender_activeTarget - child.data.tender_activeTarget;
           }

+ 24 - 0
web/building_saas/main/js/views/project_view.js

@@ -475,6 +475,30 @@ var projectObj = {
       projectObj.updateNodeField(node, value, "remark");
     } else if (fieldName === "feeRate" && value == null) {
       project.FeeRate.cleanFeeRateID(node);
+    } else if (fieldName === "unitPriceCoe") {
+      //同步设置所有子项, 子项不包括定额
+      function setChildren(treeNode, value, fieldName) {
+        if (!(treeNode && treeNode.sourceType === ModuleNames.bills)) return;
+        treeNode.updateData[fieldName] = value;
+        treeNode.changed = true;
+
+        if (treeNode.children.length > 0) {
+          setChildren(treeNode.children[0], value, fieldName);
+        }
+        if (treeNode.nextSibling) {
+          setChildren(treeNode.nextSibling, value, fieldName);
+        }
+      }
+
+      if (node.sourceType === ModuleNames.bills) {
+        node.updateData[fieldName] = value;
+        node.changed = true;
+        if (node.children.length > 0) {
+          setChildren(node.children[0], value, fieldName);
+        }
+        project.calcProgram.calcAllNodesAndSave();
+        return;
+      }
     } else if (value !== calcFees.getFee(node.data, fieldName) || fieldName == "quantity") {
       //工程量需要进行转换,所以做特殊处理
       if (fieldName === "code" && value != "" && !calcTools.isVolumePrice(node)) {