Parcourir la source

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuCost

Tony Kang il y a 2 ans
Parent
commit
6820aa9fa2
3 fichiers modifiés avec 81 ajouts et 315 suppressions
  1. 10 7
      modules/pm/facade/pm_facade.js
  2. 57 21
      web/over_write/js/neimeng_2022.js
  3. 14 287
      web/over_write/js/sichuan_2018.js

+ 10 - 7
modules/pm/facade/pm_facade.js

@@ -1238,14 +1238,17 @@ function getCommonTotalFee(bills) {
 function summarizeToParent(parent, child, flagFieldMapping) {
     const decimal = -2;
     let costFields = [];
-    for (let flag in flagFieldMapping) {
-        let costItems = flagFieldMapping[flag];
-        for (let costItem of costItems) {
-            costFields.push(costItem.name);
+    //删除相关的逻辑或哪里有bug出现parent被删除,child还没有被标记为删除状态,这时,parent会为undefine 这时就会报错
+    if(parent && child){
+        for (let flag in flagFieldMapping) {
+            let costItems = flagFieldMapping[flag];
+            for (let costItem of costItems) {
+                costFields.push(costItem.name);
+            }
+        }
+        for (let field of costFields) {
+            parent[field] = scMathUtil.roundTo(parseFloat(parent[field]) + parseFloat(child[field]), decimal);
         }
-    }
-    for (let field of costFields) {
-        parent[field] = scMathUtil.roundTo(parseFloat(parent[field]) + parseFloat(child[field]), decimal);
     }
 }
 

+ 57 - 21
web/over_write/js/neimeng_2022.js

@@ -15,6 +15,9 @@ function overwriteRationCalcBases() {
   rationCalcBases["施工机械使用费"] = function (node, isTender) {
     return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
   };
+  rationCalcBases["施工机械人工费"] = function (node, isTender) {
+    return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.MACHINE_LABOUR, isTender);
+  };
   rationCalcBases["设备购置费"] = function (node, isTender) {
     return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
   };
@@ -48,6 +51,7 @@ function overwriteRationCalcBases() {
     { type: "marketLabour", name: "人工费" },
     { type: "marketMaterial", name: "材料费" },
     { type: "marketMachine", name: "施工机械使用费" },
+    { type: "marketMachineLabour", name: "施工机械人工费" },
     { type: "marketEquipment", name: "设备购置费" },
 
     { type: "labour", name: "定额人工费" },
@@ -107,7 +111,8 @@ if (typeof baseFigureMap !== "undefined") {
     },
     // 清单固定类别是“建筑安装工程费”的以外部分可显示。(定额设备购置费按40%计)
     定额建筑安装工程费: {
-      base: "DEJZAZGCFSBSS",
+      // base: "DEJZAZGCFSBSS",
+      base: "DEJZAZGCF",
       fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
       filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
       pick: false,
@@ -297,29 +302,34 @@ if (typeof baseFigureTemplate !== "undefined") {
     JZAZGCF(tender) {
       return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
     },
-    // 定额建筑安装工程费
+
+    // 定额建筑安装工程费(定额设备购置费按40%计): 算法1:直接减去设备购置的60%,其它全部在(全额设备税金)
     DEJZAZGCF(tender) {
-      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
+      const feeField = "rationCommon";
+      const baseFee = cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, feeField);
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
+      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
+      return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
     },
-    // 定额建筑安装工程费(定额设备购置费按40%计)
+    // 定额建筑安装工程费(定额设备购置费按40%计): 算法2:有“定额设备购置费”的清单,取其40%
     DEJZAZGCFSBSS(tender) {
       const feeField = "rationCommon";
-      const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
       //建安费扣除定额设备购置费
-      const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
+      const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, feeField, false);
       //定额设备购置费
-      const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
+      const equipmentAcFee = cbTools.getBaseFee(fixedFlag.EQUIPMENT_ACQUISITION_FEE, tender, feeField);
       return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
     },
     // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
+    // JZAZGCFBHSB(tender) {
+    //   //建安费扣除设备费
+    //   return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
+    // },
     JZAZGCFBHSB(tender) {
-      //建安费扣除设备费
-      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
-    },
-    // 定额建筑安装工程费(不含设备费)
-    DEJZAZGCFBHSB(tender) {
-      //建安费扣除设备费
-      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "rationCommon");
+      const baseFee = cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
+      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "common");
+      return (baseFee - equipmentFee).toDecimal(decimalObj.bills.totalPrice);
     },
     // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
     TDSYJCQBCF(tender) {
@@ -375,10 +385,14 @@ if (typeof baseFigureTemplate !== "undefined") {
       return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
     },
     // 定额建筑安装工程费(不含专项费用)
+    // DEJZAZGCFBHZXF(tender) {
+    //   const baseFee = this["DEJZAZGCF"](tender);
+    //   const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
+    //   return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
+    // },
     DEJZAZGCFBHZXF(tender) {
-      const baseFee = this["DEJZAZGCF"](tender);
-      const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
-      return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
+      // 定额建筑安装工程费(不含专项费用)
+      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, "rationCommon", true);
     },
     // {建筑安装工程费(不含安全生产费)}
     JZAZGCFBHAQSCF(tender) {
@@ -490,7 +504,7 @@ if (typeof baseFigureTemplate !== "undefined") {
       );
     },
     GCBXF(tender) {
-      return (this.DEJZAZGCFBHSB(tender) * 0.4).toDecimal(decimalObj.bills.totalPrice);
+      return (this.JZAZGCFBHSB(tender) * 0.004).toDecimal(decimalObj.bills.totalPrice);
     },
   };
 
@@ -553,17 +567,39 @@ if (typeof feeRateObject !== "undefined") {
   feeRateObject.feeRateSpecialHandle = function (subRate, value) {
     let result = {};
     if (subRate.name == "施工进出场(km)" && value && value < 5) {
-      //输入的数值(公里数)< 5时,该项费用不计取。
-      result.valueKey = "0";
-      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
+      result.valueKey = "5"; // 5km 内按 5km 计。
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));
     }
     return result;
   };
 }
 
 if (typeof module !== "undefined") {
+  const defaultDecimal = {
+    bills: { unitPrice: 2, totalPrice: 0 },
+    ration: { quantity: 3, unitPrice: 2, totalPrice: 0 },
+    glj: { quantity: 3, unitPriceHasMix: 2, unitPrice: 2 },
+    feeRate: 4,
+    quantity_detail: 4,
+    material: 5,
+    process: 6,
+    marketPriceProcess: 2,
+    temProcess: 6,
+  };
+
   module.exports = {
     progression,
     deficiency,
+    defaultDecimal,
+  };
+}
+
+if (typeof projectObj !== "undefined") {
+  projectObj.isInsertEquipmentVisable = function (selected) {
+    // if (projectObj.project.property.valuationType !== "ration") {
+    //   //预算项目中,右键“插入设备”,仅在第一部分中显示。
+    //   return projectObj.project.Bills.isConstructionInstall(selected);
+    // }
+    return true;
   };
 }

+ 14 - 287
web/over_write/js/sichuan_2018.js

@@ -1,7 +1,5 @@
 // 部颁2018计价标准
 
-let isQG2018 = true;
-
 function overwriteRationCalcBases() {
   if (typeof rationCalcBases == "undefined") return;
   for (let key in rationCalcBases) delete rationCalcBases[key];
@@ -165,112 +163,7 @@ const progression = ["施工场地建设费", "养护单位(业主)管理费", "
 const deficiency = {};
 if (typeof baseFigureMap !== "undefined") {
   const { fixedFlag } = commonConstants;
-  const budgetMap = {
-    // 显示:除清单固定类别是“建筑安装工程费”部分可显示
-    建筑安装工程费: {
-      base: "JZAZGCF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
-      pick: false,
-    },
-    // 显示:除清单固定类别是“建筑安装工程费”部分可显示
-    定额建筑安装工程费: {
-      base: "DEJZAZGCF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [
-        /* fixedFlag.CONSTRUCTION_INSTALL_FEE */
-      ],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“安全生产费”行可显示
-    "建筑安装工程费(不含安全生产费)": {
-      base: "JZAZGCFBHSC",
-      fixedFlag: null, // 防止触发循环计算
-      filter: [fixedFlag.SAFE_COST],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    "建筑安装工程费(不含设备费)": {
-      base: "JZAZGCFBHSB",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    "定额建筑安装工程费(含定额设备购置费*40%)": {
-      base: "DEJZAZGCFSBSS",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”可显示
-    "定额建筑安装工程费(不含定额设备购置费、专项费用)": {
-      base: "DEJZAZGCFBHSBZX",
-      fixedFlag: null,
-      filter: [
-        /* fixedFlag.MAINTENANCE_EXPENSES */
-      ],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“施工场地建设费”的可显示
-    施工场地建设费: {
-      isProgressive: true,
-      base: "SGCDJSF",
-      // 虽然用到了定额建筑安装工程费一部分费用baseFee,但是是扣除了专项费用的。施工场地建设费清单为专项费用清单子项。
-      // 当施工场地建设费清单使用此基数时,该清单的费用不会汇总到baseFee里,因此不会造成循环计算。如果fixedFlag设置成fixedFlag.CONSTRUCTION_INSTALL_FEE,则会造成循环计算
-      fixedFlag: null,
-      filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    "养护单位(业主)管理费": {
-      isProgressive: true,
-      base: "JSDWYZGLF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    建设项目信息化费: {
-      isProgressive: true,
-      base: "JSXMXXHF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    工程监理费: {
-      isProgressive: true,
-      base: "GCJLF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    设计文件审查费: {
-      isProgressive: true,
-      base: "SJWJSCF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅清单固定类别是“工程建设其他费”部分可显示
-    前期工作费: {
-      isProgressive: true,
-      base: "QQGZF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.MAINTENANCE_EXPENSES],
-      pick: true,
-    },
-    // 显示:仅“价差预备费”可显示
-    价差预备费: {
-      base: "JCYBF",
-      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [fixedFlag.SPREAD_BUDGET_FEE],
-      pick: true,
-    },
-  };
-  const boqMap = {
+  baseFigureMap.boq = {
     // 取清单固定类别是“建筑安装工程费”的定额建安费(其中定额设备费按40%计算+全额设备税金)。除清单固定类别是“建筑安装工程费”的以外部分可显示。
     定额建筑安装工程费: {
       base: "DEJZAZGCFSBSS",
@@ -283,21 +176,14 @@ if (typeof baseFigureMap !== "undefined") {
     "建筑安装工程费(不含设备费)": {
       base: "JZAZGCFBHSB",
       fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-      filter: [INSURANCE_FEE],
+      filter: [fixedFlag.INSURANCE_FEE],
       pick: true,
     },
-    // 仅允许用于固定类别是“第100章至700章清单”以外的清单
+
     各章清单合计: {
       base: "GZQDHJ",
-      fixedFlag: fixedFlag.ONE_SEVEN_BILLS,
-      filter: [fixedFlag.ONE_SEVEN_BILLS],
-      pick: false,
-    },
-    // 仅允许用于固定类别是“第100章至700章清单”以外的清单
-    专项暂定合计: {
-      base: "ZXZDHJ",
-      fixedFlag: null,
-      filter: [fixedFlag.ONE_SEVEN_BILLS],
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
       pick: false,
     },
     /*
@@ -352,170 +238,16 @@ if (typeof baseFigureMap !== "undefined") {
       pick: true,
     },
   };
-  baseFigureMap.budget = budgetMap;
-  baseFigureMap.boq = boqMap;
 }
 
 if (typeof baseFigureTemplate !== "undefined") {
   const { fixedFlag } = commonConstants;
-  baseFigureTemplate.budget = {
-    // 建设安装工程费 算法:取“建筑安装工程费”的金额
-    JZAZGCF(tender) {
-      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
-    },
+
+  baseFigureTemplate.boq = {
     // 定额建筑安装工程费 算法:取“定额建筑安装工程费”的金额
     DEJZAZGCF(tender) {
       return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
     },
-    // 建筑安装工程费(不含安全生产费) 算法:取固定类别是“建筑安装工程费”的“建安费”,扣除固定类别是“安全生产费”的“建安费”
-    JZAZGCFBHSC(tender) {
-      let baseFee = this["JZAZGCF"](tender);
-      const safeFee = cbTools.getBaseFee(fixedFlag.SAFE_COST, tender, "common");
-      return (baseFee - safeFee).toDecimal(decimalObj.bills.totalPrice);
-    },
-    // 建设安装工程费(不含设备费) 算法:取固定类别是“建筑安装工程费”的建安费。扣除设备的定额设备费。(全国造价云版中,没有固定的设备购置行,需要扣除所有类别是“设备”的金额,仅指设备行,不包括定额工料机的设备)
-    JZAZGCFBHSB(tender) {
-      let baseFee = this["JZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender);
-      baseFee = (baseFee - equipmentFee).toDecimal(decimalObj.process);
-      return baseFee.toDecimal(decimalObj.bills.totalPrice);
-    },
-    // 定额建筑安装工程费(含定额设备购置费*40%) 取固定类别是“建筑安装工程费”的定额建安费,扣除定额设备购置费*60%的定额设备费。
-    DEJZAZGCFSBSS(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      return baseFee.toDecimal(decimalObj.bills.totalPrice);
-    },
-    // 定额建筑安装工程费(不含定额设备购置费、专项费用) 算法:取固定类别是“建筑安装工程费”的定额建安费,扣除定额设备购置费和专项费用的建安费
-    DEJZAZGCFBHSBZX(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      const specialFee = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
-      const diffFee = (equipmentFee + specialFee).toDecimal(decimalObj.process);
-      baseFee = (baseFee - diffFee).toDecimal(decimalObj.process);
-      return baseFee.toDecimal(decimalObj.bills.totalPrice);
-    },
-    // 施工场地建设费 算法:按“定额建筑安装工程费”扣除专项费为基数,以累进办法计算
-    // 【变更】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除固定类别是“专项费用”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算
-    SGCDJSF(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const specialFee = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
-      baseFee = (baseFee - specialFee).toDecimal(decimalObj.process);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      if (!tender) {
-        calcBase.baseProgressiveFee = baseFee;
-      }
-      return calculateUtil.getProgressiveFee(
-        baseFee,
-        "施工场地建设费",
-        projectObj.project.property.progressiveInterval,
-        decimalObj.bills.totalPrice,
-        deficiency
-      );
-    },
-    // 养护单位(业主)管理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
-    // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
-    JSDWYZGLF(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      if (!tender) {
-        calcBase.baseProgressiveFee = baseFee;
-      }
-      return calculateUtil.getProgressiveFee(
-        baseFee,
-        "养护单位(业主)管理费",
-        projectObj.project.property.progressiveInterval,
-        decimalObj.bills.totalPrice,
-        deficiency
-      );
-    },
-    // 建设项目信息化费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
-    // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
-    JSXMXXHF(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      if (!tender) {
-        calcBase.baseProgressiveFee = baseFee;
-      }
-      return calculateUtil.getProgressiveFee(
-        baseFee,
-        "建设项目信息化费",
-        projectObj.project.property.progressiveInterval,
-        decimalObj.bills.totalPrice,
-        deficiency
-      );
-    },
-    // 工程监理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
-    // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
-    GCJLF(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      if (!tender) {
-        calcBase.baseProgressiveFee = baseFee;
-      }
-      return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-    },
-    // 设计文件审查费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
-    // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
-    SJWJSCF(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      if (!tender) {
-        calcBase.baseProgressiveFee = baseFee;
-      }
-      return calculateUtil.getProgressiveFee(
-        baseFee,
-        "设计文件审查费",
-        projectObj.project.property.progressiveInterval,
-        decimalObj.bills.totalPrice,
-        deficiency
-      );
-    },
-    // 前期工作费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
-    // 变更:【算法】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
-    QQGZF(tender) {
-      let baseFee = this["DEJZAZGCF"](tender);
-      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
-      baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
-      if (!tender) {
-        calcBase.baseProgressiveFee = baseFee;
-      }
-      return calculateUtil.getProgressiveFee(baseFee, "前期工作费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-    },
-    /*  价差预备费 算法:价差预备费以“建筑安装工程费”总额为基数,按设计文件编制年始至工程竣工年终的年数和年工程造价增涨费率计算
-        价差预备费 P * [(1+i)^(n-1) -1]
-        P——建筑安装工程费总额(元);
-        i——年工程造价增涨率(%);
-        n——设计文件编制年至养护项目开工年+养护项目建设期限(年)。
-    */
-    JCYBF(tender) {
-      // 建筑安装工程费作为基数
-      const installFee = this["JZAZGCF"](tender);
-      // 年造价增涨
-      const costGrowthRate = calcBase.project.property.costGrowthRate ? calcBase.project.property.costGrowthRate : 0;
-      // 增涨计费年限
-      const growthPeriod = projectObj.project.property.growthPeriod ? calcBase.project.property.growthPeriod : 0;
-      // = P * [(1+i)^(n-1) -1]
-      return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
-    },
-  };
-
-  baseFigureTemplate.boq = {
     DEJZAZGCFSBSS(tender) {
       let baseFee = this["DEJZAZGCF"](tender);
       const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
@@ -533,18 +265,13 @@ if (typeof baseFigureTemplate !== "undefined") {
     //{各章清单合计}
     // 取清单固定类别是“第100章至700章清单”的金额
     GZQDHJ: function (tender) {
-      return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "common");
-    },
-    //{专项暂定合计}
-    // 第100章至700章清单行的暂估合价
-    ZXZDHJ: function (tender) {
-      return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "estimate");
+      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
     },
     //{100章以外清单合计}
     // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
     // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
     YBZYHQDHJ: function (tender) {
-      let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
+      let oneToSeven = cbTools.findNodeByFlag(fixedFlag.CONSTRUCTION_INSTALL_FEE);
       if (!oneToSeven) {
         return 0;
       }
@@ -568,7 +295,7 @@ if (typeof baseFigureTemplate !== "undefined") {
     // 养护单位(业主)管理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
     // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
     JSDWYZGLF(tender) {
-      let baseFee = baseFigureTemplate.budget["DEJZAZGCF"](tender);
+      let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
       const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
       const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
       baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
@@ -586,7 +313,7 @@ if (typeof baseFigureTemplate !== "undefined") {
     // 建设项目信息化费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
     // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
     JSXMXXHF(tender) {
-      let baseFee = baseFigureTemplate.budget["DEJZAZGCF"](tender);
+      let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
       const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
       const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
       baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
@@ -604,7 +331,7 @@ if (typeof baseFigureTemplate !== "undefined") {
     // 工程监理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
     // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
     GCJLF(tender) {
-      let baseFee = baseFigureTemplate.budget["DEJZAZGCF"](tender);
+      let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
       const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
       const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
       baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
@@ -616,7 +343,7 @@ if (typeof baseFigureTemplate !== "undefined") {
     // 设计文件审查费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
     // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
     SJWJSCF(tender) {
-      let baseFee = baseFigureTemplate.budget["DEJZAZGCF"](tender);
+      let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
       const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
       const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
       baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
@@ -634,7 +361,7 @@ if (typeof baseFigureTemplate !== "undefined") {
     // 前期工作费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
     // 变更:【算法】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
     QQGZF(tender) {
-      let baseFee = baseFigureTemplate.budget["DEJZAZGCF"](tender);
+      let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
       const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
       const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
       baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);