Selaa lähdekoodia

公路云、广西养护(2020)、甘肃养护(2021)、河南养护(2022)、河南日常养护(2022)、湖南农村养护(2020) 新增清单基数“定额建筑安装工程费"。

chenshilong 3 vuotta sitten
vanhempi
commit
292b763abc

+ 7 - 19
web/building_saas/main/js/models/calc_base.js

@@ -834,25 +834,13 @@ let baseFigureTemplate = {
       let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
       return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
     },
-    // {定额建安费(不含定额设备购置费)} 
-    DEJAFBHDESBGZF: function (tender) {
-      // 旧:汇总定额的定额建安费(不含设备类型的定额、不含工料机定额、不含量x价清单)。因缺少量x价清单的定额建安费,新版本不再使用。
-      if (isLowVer(historyVer1)) {
-        const feeField = "rationCommon";
-        const subFeeField = tender ? "tenderTotalFee" : "totalFee";
-        let rations = projectObj.project.Ration.datas.filter((ration) => !(ration.type === rationType.gljRation && ration.subType === gljType.EQUIPMENT));
-        const summaryFee = rations.reduce((total, ration) => {
-          const fee = cbTools.getFee(ration, feeField, subFeeField);
-          return (total += fee);
-        }, 0);
-        return summaryFee.toDecimal(decimalObj.bills.totalPrice);
-      } else {
-        // 新:根结点的定额建安费(含 量x价清单的定额建安费),扣除定额设备费+税金。其中,设备费:传入rationCommon时,表示定额设备费+税金。传入equipment表示定额设备费
-        const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
-        const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
-        const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
-        return (baseFee - equipmentTaxFee).toDecimal(decimalObj.bills.totalPrice);
-      }
+    // 清单项目基数:{定额建筑安装工程费} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费按40%计算,税金是全额计算。公路云默认要使用此算法)。
+    // 显示:只有清单固定类别是“第100章清单总则”的部分可显示。
+    DEJZAZGCF(tender) {
+      const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
+      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
+      return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
     },
   },
 };

+ 55 - 24
web/over_write/js/chongqing_2018.js

@@ -2,39 +2,70 @@
  * Created by zhang on 2018/8/14.
  */
 
-
 //重庆综合里程、工地转移费率值修改特殊处理
 
-if (typeof feeRateObject !== 'undefined') {
-    feeRateObject.feeRateSpecialHandle = function (subRate, value) {
-        let result = {};
-        if (subRate.name == "工地转移(km)" && value && value < 50) {//工地转移50km以内按50km算
-            result.valueKey = "50";
-            result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));//设置显示的节点值
-        }
-        if (subRate.name == "综合里程(km)" && value && value < 3) {//综合里程3km以内按3km算
-            result.valueKey = "3";
-            result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));//设置显示的节点值
-        }
-        return result;
+if (typeof feeRateObject !== "undefined") {
+  feeRateObject.feeRateSpecialHandle = function (subRate, value) {
+    let result = {};
+    if (subRate.name == "工地转移(km)" && value && value < 50) {
+      //工地转移50km以内按50km算
+      result.valueKey = "50";
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
+    }
+    if (subRate.name == "综合里程(km)" && value && value < 3) {
+      //综合里程3km以内按3km算
+      result.valueKey = "3";
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
     }
+    return result;
+  };
 }
 
 // 累进的基数名称
 const progression = [
-    '施工场地建设费', '养护单位(业主)管理费', '信息化费', '路线工程监理费', '独立桥梁隧道工程监理费',
-    '设计文件审查费', '路线勘察设计费', '独立桥梁隧道维修加固勘察设计费', '招标代理及标底(最高投标限价)编制费'
+  "施工场地建设费",
+  "养护单位(业主)管理费",
+  "信息化费",
+  "路线工程监理费",
+  "独立桥梁隧道工程监理费",
+  "设计文件审查费",
+  "路线勘察设计费",
+  "独立桥梁隧道维修加固勘察设计费",
+  "招标代理及标底(最高投标限价)编制费",
 ];
 // 累进计算金额不足时的处理映射
 const deficiency = {
-    '路线工程监理费': 20000, // 不足2万按2万
-    '独立桥梁隧道工程监理费': 20000,
-    '设计文件审查费': 3000
+  路线工程监理费: 20000, // 不足2万按2万
+  独立桥梁隧道工程监理费: 20000,
+  设计文件审查费: 3000,
 };
 
-if (typeof module !== 'undefined') {
-    module.exports = {
-        progression,
-        deficiency
-    };
-}
+if (typeof module !== "undefined") {
+  module.exports = {
+    progression,
+    deficiency,
+  };
+}
+
+// {定额建安费(不含定额设备购置费)}
+if (typeof baseFigureTemplate !== "undefined") {
+  baseFigureTemplate.boq.DEJAFBHDESBGZF = function (tender) {
+    // 旧:汇总定额的定额建安费(不含设备类型的定额、不含工料机定额、不含量x价清单)。因缺少量x价清单的定额建安费,新版本不再使用。
+    if (isLowVer(historyVer1)) {
+      const feeField = "rationCommon";
+      const subFeeField = tender ? "tenderTotalFee" : "totalFee";
+      let rations = projectObj.project.Ration.datas.filter((ration) => !(ration.type === rationType.gljRation && ration.subType === gljType.EQUIPMENT));
+      const summaryFee = rations.reduce((total, ration) => {
+        const fee = cbTools.getFee(ration, feeField, subFeeField);
+        return (total += fee);
+      }, 0);
+      return summaryFee.toDecimal(decimalObj.bills.totalPrice);
+    } else {
+      // 新:根结点的定额建安费(含 量x价清单的定额建安费),扣除定额设备费+税金。其中,设备费:传入rationCommon时,表示定额设备费+税金。传入equipment表示定额设备费
+      const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
+      const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
+      return (baseFee - equipmentTaxFee).toDecimal(decimalObj.bills.totalPrice);
+    }
+  };
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 537 - 461
web/over_write/js/gansu_2021.js


+ 496 - 433
web/over_write/js/guangxi_2021.js

@@ -1,473 +1,536 @@
 // 清单基数
 const progression = [
-  '施工场地建设费',
-  '养护管理单位项目管理费',
-  '项目信息化费',
-  '工程监理费',
-  '设计文件审查费(一阶段)',
-  '设计文件审查费(二阶段)',
-  '采用一阶段设计的工程设计费',
-  '采用二阶段设计的工程设计费',
-  '独立立项进行维修、加固的一般桥梁工程设计费',
-  '独立立项进行维修、加固的技术复杂大桥工程设计费',
-  '独立立项进行维修、加固的隧道工程设计费',
-  '招标费',
+  "施工场地建设费",
+  "养护管理单位项目管理费",
+  "项目信息化费",
+  "工程监理费",
+  "设计文件审查费(一阶段)",
+  "设计文件审查费(二阶段)",
+  "采用一阶段设计的工程设计费",
+  "采用二阶段设计的工程设计费",
+  "独立立项进行维修、加固的一般桥梁工程设计费",
+  "独立立项进行维修、加固的技术复杂大桥工程设计费",
+  "独立立项进行维修、加固的隧道工程设计费",
+  "招标费",
 ];
 const deficiency = {
-  '设计文件审查费(一阶段)': 4000,
-  '设计文件审查费(二阶段)': 4000,
+  "设计文件审查费(一阶段)": 4000,
+  "设计文件审查费(二阶段)": 4000,
 };
-if (typeof baseFigureMap !== 'undefined') {
+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: false,
-      },
-      // 显示:除“建筑安装工程费”以外部分可显示。
-      '建筑安装工程费(不含设备费)': {
-          base: 'JZAZGCFBHSB',
-          fixedFlag: null,
-          filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
-          pick: false,
-      },
-      // 显示:仅清单固定类别是“专项费用”可显示
-      '定额建筑安装工程费(不含专项费用)': {
-          base: 'DEJZAZGCFBHZX',
-          fixedFlag: null,
-          filter: [fixedFlag.SPECIAL_COST],
-          pick: true,
-      },
-      // 显示:仅清单固定类别是“安全生产费”可显示。
-      '建筑安装工程费(不含安全生产费)': {
-          base: 'JZAZGCFBHSC',
-          fixedFlag: null,
-          filter: [fixedFlag.SAFE_COST],
-          pick: true
-      },
-      // 显示:仅清单固定类别是“专项费用”可显示。
-      '施工场地建设费': {
-        isProgressive: true,
-          base: 'SGCDJSF',
-          fixedFlag: null,
-          filter: [fixedFlag.SPECIAL_COST],
-          pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '养护管理单位项目管理费': {
-        isProgressive: true,
-        base: 'YHGLDWXMGLF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '项目信息化费': {
-        isProgressive: true,
-        base: 'XMXXHF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '工程监理费': {
-        isProgressive: true,
-        base: 'GCJLF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '设计文件审查费(一阶段)': {
-        isProgressive: true,
-        deficiency: 4000,
-        base: 'SJWJSCFYJD',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '设计文件审查费(二阶段)': {
-        isProgressive: true,
-        deficiency: 4000,
-        base: 'SJWJSCFEJD',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '采用一阶段设计的工程设计费': {
-        isProgressive: true,
-        base: 'CQYJDSJDGCSJF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '采用二阶段设计的工程设计费': {
-        isProgressive: true,
-        base: 'CQEJDSJDGCSJF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '独立立项进行维修、加固的一般桥梁工程设计费': {
-        isProgressive: true,
-        base: 'DLLXJXWXJGDYBQLGCSJF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '独立立项进行维修、加固的技术复杂大桥工程设计费': {
-        isProgressive: true,
-        base: 'DLLXJXWXJGDJSFZDQGCSJF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '独立立项进行维修、加固的隧道工程设计费': {
-        isProgressive: true,
-        base: 'DLLXJXWXJGDSDGCSJF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-      '招标费': {
-        isProgressive: true,
-        base: 'ZBF',
-        fixedFlag: null,
-        filter: [fixedFlag.MAINTENANCE_EXPENSES],
-        pick: true,
-      },
-      // 显示:仅“价差预备费”可显示
-      '价差预备费': {
-        base: 'JCYBF',
-        fixedFlag: null,
-        filter: [fixedFlag.SPREAD_BUDGET_FEE],
-        pick: true,
-      },
+    // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示。
+    建筑安装工程费: {
+      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: false,
+    },
+    // 显示:除“建筑安装工程费”以外部分可显示。
+    "建筑安装工程费(不含设备费)": {
+      base: "JZAZGCFBHSB",
+      fixedFlag: null,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
+      pick: false,
+    },
+    // 显示:仅清单固定类别是“专项费用”可显示
+    "定额建筑安装工程费(不含专项费用)": {
+      base: "DEJZAZGCFBHZX",
+      fixedFlag: null,
+      filter: [fixedFlag.SPECIAL_COST],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“安全生产费”可显示。
+    "建筑安装工程费(不含安全生产费)": {
+      base: "JZAZGCFBHSC",
+      fixedFlag: null,
+      filter: [fixedFlag.SAFE_COST],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“专项费用”可显示。
+    施工场地建设费: {
+      isProgressive: true,
+      base: "SGCDJSF",
+      fixedFlag: null,
+      filter: [fixedFlag.SPECIAL_COST],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    养护管理单位项目管理费: {
+      isProgressive: true,
+      base: "YHGLDWXMGLF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    项目信息化费: {
+      isProgressive: true,
+      base: "XMXXHF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    工程监理费: {
+      isProgressive: true,
+      base: "GCJLF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    "设计文件审查费(一阶段)": {
+      isProgressive: true,
+      deficiency: 4000,
+      base: "SJWJSCFYJD",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    "设计文件审查费(二阶段)": {
+      isProgressive: true,
+      deficiency: 4000,
+      base: "SJWJSCFEJD",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    采用一阶段设计的工程设计费: {
+      isProgressive: true,
+      base: "CQYJDSJDGCSJF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    采用二阶段设计的工程设计费: {
+      isProgressive: true,
+      base: "CQEJDSJDGCSJF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    "独立立项进行维修、加固的一般桥梁工程设计费": {
+      isProgressive: true,
+      base: "DLLXJXWXJGDYBQLGCSJF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    "独立立项进行维修、加固的技术复杂大桥工程设计费": {
+      isProgressive: true,
+      base: "DLLXJXWXJGDJSFZDQGCSJF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    "独立立项进行维修、加固的隧道工程设计费": {
+      isProgressive: true,
+      base: "DLLXJXWXJGDSDGCSJF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    招标费: {
+      isProgressive: true,
+      base: "ZBF",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅“价差预备费”可显示
+    价差预备费: {
+      base: "JCYBF",
+      fixedFlag: null,
+      filter: [fixedFlag.SPREAD_BUDGET_FEE],
+      pick: true,
+    },
   };
   const boqMap = {
-      //仅允许用于固定类别是“第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],
-          pick: false
-      },
-      /*
-      *  清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
-      *  因此{100章以外合计}不设置关联的清单固定行
-      * */
-      //仅允许用于固定类别为“100章清单”引用
-      '100章以外清单合计': {
-          base: 'YBZYWQDHJ',
-          fixedFlag: null,
-          filter: [fixedFlag.ONE_HUNDRED_BILLS],
-          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],
+      pick: false,
+    },
+    /*
+     *  清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
+     *  因此{100章以外合计}不设置关联的清单固定行
+     * */
+    //仅允许用于固定类别为“100章清单”引用
+    "100章以外清单合计": {
+      base: "YBZYWQDHJ",
+      fixedFlag: null,
+      filter: [fixedFlag.ONE_HUNDRED_BILLS],
+      pick: true,
+    },
+    定额建筑安装工程费: {
+      base: "DEJZAZGCF",
+      fixedFlag: null,
+      filter: [fixedFlag.ONE_HUNDRED_BILLS],
+      pick: true,
+    },
   };
   baseFigureMap.budget = budgetMap;
   baseFigureMap.boq = boqMap;
 }
 
-if (typeof baseFigureTemplate !== 'undefined') {
+if (typeof baseFigureTemplate !== "undefined") {
   const { fixedFlag } = commonConstants;
   baseFigureTemplate.budget = {
-      // 建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
-      JZAZGCF(tender) {
-          return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, 'common');
-      },
-      // 定额建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的定额建安费。
-      DEJZAZGCF(tender) {
-          return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, 'rationCommon');
-      },
-      // 建筑安装工程费(不含设备费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除设备购置。
-      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);
-      },
-      // 定额建筑安装工程费(不含专项费用) 算法:取清单固定类别是“建筑安装工程费”的定额建安费,扣除“专项费用”行的定额建安费。
-      DEJZAZGCFBHZX(tender) {
-          return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, 'rationCommon');
-      },
-      // 建筑安装工程费(不含安全生产费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除“安全生产费”的金额。
-      JZAZGCFBHSC(tender) {
-          return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, 'common');
-      },
-      // 施工场地建设费 算法:按“定额建筑安装工程费(不含专项费用)”为基数,以累进办法计算。
-      SGCDJSF(tender) {
-          const baseFee = this['DEJZAZGCFBHZX'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 养护管理单位项目管理费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      YHGLDWXMGLF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '养护管理单位项目管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 项目信息化费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      XMXXHF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '项目信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 工程监理费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      GCJLF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 设计文件审查费(一阶段) 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      SJWJSCFYJD(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费(一阶段)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 设计文件审查费(二阶段) 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      SJWJSCFEJD(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费(二阶段)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 采用一阶段设计的工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      CQYJDSJDGCSJF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '采用一阶段设计的工程设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 采用二阶段设计的工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      CQEJDSJDGCSJF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '采用二阶段设计的工程设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 独立立项进行维修、加固的一般桥梁工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      DLLXJXWXJGDYBQLGCSJF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '独立立项进行维修、加固的一般桥梁工程设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 独立立项进行维修、加固的技术复杂大桥工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      DLLXJXWXJGDJSFZDQGCSJF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '独立立项进行维修、加固的技术复杂大桥工程设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 独立立项进行维修、加固的隧道工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
-      DLLXJXWXJGDSDGCSJF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '独立立项进行维修、加固的隧道工程设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      // 招标费 算法:按“指标建筑安装工程费”为基数,以累进办法计算。
-      ZBF(tender) {
-          const baseFee = this['DEJZAZGCF'](tender);
-          if (!tender) {
-              calcBase.baseProgressiveFee = baseFee;
-          }
-          return calculateUtil.getProgressiveFee(baseFee, '招标费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-      },
-      /*  价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
+    // 建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
+    JZAZGCF(tender) {
+      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
+    },
+    // 定额建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的定额建安费。
+    DEJZAZGCF(tender) {
+      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
+    },
+    // 建筑安装工程费(不含设备费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除设备购置。
+    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);
+    },
+    // 定额建筑安装工程费(不含专项费用) 算法:取清单固定类别是“建筑安装工程费”的定额建安费,扣除“专项费用”行的定额建安费。
+    DEJZAZGCFBHZX(tender) {
+      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, "rationCommon");
+    },
+    // 建筑安装工程费(不含安全生产费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除“安全生产费”的金额。
+    JZAZGCFBHSC(tender) {
+      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
+    },
+    // 施工场地建设费 算法:按“定额建筑安装工程费(不含专项费用)”为基数,以累进办法计算。
+    SGCDJSF(tender) {
+      const baseFee = this["DEJZAZGCFBHZX"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "施工场地建设费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 养护管理单位项目管理费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    YHGLDWXMGLF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "养护管理单位项目管理费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 项目信息化费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    XMXXHF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, "项目信息化费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 工程监理费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    GCJLF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 设计文件审查费(一阶段) 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    SJWJSCFYJD(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "设计文件审查费(一阶段)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 设计文件审查费(二阶段) 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    SJWJSCFEJD(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "设计文件审查费(二阶段)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 采用一阶段设计的工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    CQYJDSJDGCSJF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "采用一阶段设计的工程设计费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 采用二阶段设计的工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    CQEJDSJDGCSJF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "采用二阶段设计的工程设计费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 独立立项进行维修、加固的一般桥梁工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    DLLXJXWXJGDYBQLGCSJF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "独立立项进行维修、加固的一般桥梁工程设计费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 独立立项进行维修、加固的技术复杂大桥工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    DLLXJXWXJGDJSFZDQGCSJF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "独立立项进行维修、加固的技术复杂大桥工程设计费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 独立立项进行维修、加固的隧道工程设计费 算法:按“定额建筑安装工程费”为基数,以累进办法计算。
+    DLLXJXWXJGDSDGCSJF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "独立立项进行维修、加固的隧道工程设计费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 招标费 算法:按“指标建筑安装工程费”为基数,以累进办法计算。
+    ZBF(tender) {
+      const baseFee = this["DEJZAZGCF"](tender);
+      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);
-      }
-
+    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 = {
-      //{各章清单合计}
-      // 取清单固定类别是“第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');
-      },
-      //{100章以外清单合计}
-      // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
-      // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
-      'YBZYWQDHJ': function (tender) {
-          let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
-          if (!oneToSeven) {
-              return 0;
-          }
-          //100-700章固定节点的所有子节点
-          let allChildren = [];
-          function getChildren(nodes) {
-              allChildren = allChildren.concat(nodes);
-              for (let node of nodes) {
-                  if (node.children.length > 0) {
-                      getChildren(node.children);
-                  }
-              }
+    //{各章清单合计}
+    // 取清单固定类别是“第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");
+    },
+    //{100章以外清单合计}
+    // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
+    // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
+    YBZYWQDHJ: function (tender) {
+      let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
+      if (!oneToSeven) {
+        return 0;
+      }
+      //100-700章固定节点的所有子节点
+      let allChildren = [];
+      function getChildren(nodes) {
+        allChildren = allChildren.concat(nodes);
+        for (let node of nodes) {
+          if (node.children.length > 0) {
+            getChildren(node.children);
           }
-          getChildren(oneToSeven.children);
-          //扣除的节点:100章的节点[100-200)
-          let deductNodes = allChildren.filter(cbTools.withingOneHundred);
-          //计算金额
-          let fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
-          return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
+        }
       }
+      getChildren(oneToSeven.children);
+      //扣除的节点:100章的节点[100-200)
+      let deductNodes = allChildren.filter(cbTools.withingOneHundred);
+      //计算金额
+      let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
+      return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
+    },
+    // 清单项目基数:{定额建筑安装工程费} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费按40%计算,税金是全额计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
+    DEJZAZGCF(tender) {
+      const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
+      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
+      return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
+    },
   };
 }
 
 function overwriteRationCalcBases() {
-    if (typeof rationCalcBases == 'undefined') return;
-    for (let key in rationCalcBases) delete rationCalcBases[key];
-
-    rationCalcBases['人工费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
-    };
-    rationCalcBases['材料费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
-    };
-    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);
-    };
-    rationCalcBases['定额人工费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额材料费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额施工机械使用费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额商品砼费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额设备购置费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额外购砼构件费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额绿化苗木费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
-    };
-};
+  if (typeof rationCalcBases == "undefined") return;
+  for (let key in rationCalcBases) delete rationCalcBases[key];
 
-if (typeof projectObj !== 'undefined') {
-    projectObj.isInsertEquipmentVisable = function (selected) {
-        return true;   //广西不管是预算或者工程量清单,都是显示
-    }
-  }
+  rationCalcBases["人工费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
+  };
+  rationCalcBases["材料费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
+  };
+  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);
+  };
+  rationCalcBases["定额人工费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额材料费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额施工机械使用费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额商品砼费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额设备购置费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额外购砼构件费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额绿化苗木费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
+  };
+}
 
+if (typeof projectObj !== "undefined") {
+  projectObj.isInsertEquipmentVisable = function (selected) {
+    return true; //广西不管是预算或者工程量清单,都是显示
+  };
+}
 
-if (typeof feeRateObject !== 'undefined') {
-    feeRateObject.feeRateSpecialHandle = function (subRate, value) {
-        let result = {};
-        if (subRate.name == "工地转移(km)" && value && value < 50) {//工地转移50km以内按50km算
-            result.valueKey = "50";
-            result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));//设置显示的节点值
-        }
-        if (subRate.name == "综合里程(km)" && value && value < 3) {//综合里程3km以内按3km算
-            result.valueKey = "3";
-            result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));//设置显示的节点值
-        }
-        if (subRate.name == "施工进出场(km)" && value && value < 5) {//施工进出场5km以内按3km算
-            result.valueKey = "5";
-            result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));//设置显示的节点值
-        }
-        return result;
+if (typeof feeRateObject !== "undefined") {
+  feeRateObject.feeRateSpecialHandle = function (subRate, value) {
+    let result = {};
+    if (subRate.name == "工地转移(km)" && value && value < 50) {
+      //工地转移50km以内按50km算
+      result.valueKey = "50";
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
+    }
+    if (subRate.name == "综合里程(km)" && value && value < 3) {
+      //综合里程3km以内按3km算
+      result.valueKey = "3";
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
     }
+    if (subRate.name == "施工进出场(km)" && value && value < 5) {
+      //施工进出场5km以内按3km算
+      result.valueKey = "5";
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
+    }
+    return result;
+  };
 }
 
-
 (function overwriteFeeTypes() {
-    if (typeof cpFeeTypes == 'undefined') return;
-    cpFeeTypes = [
-        { type: 'marketDirect', name: '直接费' },
-        { type: 'marketLabour', name: '人工费' },
-        { type: 'marketMaterial', name: '材料费' },
-        { type: 'marketMachine', name: '施工机械使用费' },
-        { type: 'marketMachineLabour', name: '施工机械人工费' },
-        { type: 'marketEquipment', name: '设备购置费' },
+  if (typeof cpFeeTypes == "undefined") return;
+  cpFeeTypes = [
+    { type: "marketDirect", name: "直接费" },
+    { type: "marketLabour", name: "人工费" },
+    { type: "marketMaterial", name: "材料费" },
+    { type: "marketMachine", name: "施工机械使用费" },
+    { type: "marketMachineLabour", name: "施工机械人工费" },
+    { type: "marketEquipment", name: "设备购置费" },
 
-        { type: 'labour', name: '定额人工费' },
-        { type: 'material', name: '定额材料费' },
-        { type: 'machine', name: '定额施工机械使用费' },
-        { type: 'equipment', name: '定额设备购置费' },
-        { type: 'direct', name: '定额直接费' },
+    { type: "labour", name: "定额人工费" },
+    { type: "material", name: "定额材料费" },
+    { type: "machine", name: "定额施工机械使用费" },
+    { type: "equipment", name: "定额设备购置费" },
+    { type: "direct", name: "定额直接费" },
 
-        { type: 'measure', name: '措施费' },
-        { type: 'manage', name: '企业管理费' },
-        { type: 'force', name: '规费' },
-        { type: 'profit', name: '利润' },
-        { type: 'tax', name: '税金' },
-        { type: 'common', name: '建安费' },
-        { type: 'rationCommon', name: '定额建安费' }
-    ];
+    { type: "measure", name: "措施费" },
+    { type: "manage", name: "企业管理费" },
+    { type: "force", name: "规费" },
+    { type: "profit", name: "利润" },
+    { type: "tax", name: "税金" },
+    { type: "common", name: "建安费" },
+    { type: "rationCommon", name: "定额建安费" },
+  ];
 })();

+ 13 - 0
web/over_write/js/henan_richang_2022.js

@@ -132,6 +132,12 @@ if (typeof baseFigureMap !== "undefined") {
       filter: [fixedFlag.ONE_HUNDRED_BILLS],
       pick: true,
     },
+    定额建筑安装工程费: {
+      base: "DEJZAZGCF",
+      fixedFlag: null,
+      filter: [fixedFlag.ONE_HUNDRED_BILLS],
+      pick: true,
+    },
   };
   baseFigureMap.budget = budgetMap;
   baseFigureMap.boq = boqMap;
@@ -483,6 +489,13 @@ if (typeof baseFigureTemplate !== "undefined") {
       let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
       return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
     },
+    // 清单项目基数:{定额建筑安装工程费} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费按40%计算,税金是全额计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
+    DEJZAZGCF(tender) {
+      const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
+      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
+      return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
+    },
   };
 }
 

+ 449 - 397
web/over_write/js/hunan_2020.js

@@ -6,434 +6,486 @@ let isHN2020 = true;
 
 // 一般计税取不含税市场价、不含税定额价。简易计税取含税市场价、含税定额价。打开项目时,4个价格根据计税类型只载入其二,所以这里可不作区分。
 function overwriteRationCalcBases(taxType) {
-    if (typeof rationCalcBases == 'undefined') return;
-    for (let key in rationCalcBases) delete rationCalcBases[key];
-    // let isJY = taxType == '2';
+  if (typeof rationCalcBases == "undefined") return;
+  for (let key in rationCalcBases) delete rationCalcBases[key];
+  // let isJY = taxType == '2';
 
-    rationCalcBases['人工费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
-    };
-    rationCalcBases['材料费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
-    };
-    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);
-    };
-    rationCalcBases['定额人工费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额材料费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额施工机械使用费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额商品砼费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额设备费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额外购砼构件费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
-    };
-    rationCalcBases['定额绿化苗木费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
-    }
-};
+  rationCalcBases["人工费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
+  };
+  rationCalcBases["材料费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
+  };
+  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);
+  };
+  rationCalcBases["定额人工费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额材料费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额施工机械使用费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额商品砼费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额设备费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额外购砼构件费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
+  };
+  rationCalcBases["定额绿化苗木费"] = function (node, isTender) {
+    return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
+  };
+}
 
 (function overwriteFeeTypes() {
-    if (typeof cpFeeTypes == 'undefined') return;
-    cpFeeTypes = [
-        { type: 'marketLabour', name: '人工费' },
-        { type: 'marketMaterial', name: '材料费' },
-        { type: 'marketMachine', name: '施工机械使用费' },
-        { type: 'marketMachineLabour', name: '施工机械人工费' },
-        { type: 'marketEquipment', name: '设备购置费' },
-        { type: 'marketDirect', name: '直接费' },
+  if (typeof cpFeeTypes == "undefined") return;
+  cpFeeTypes = [
+    { type: "marketLabour", name: "人工费" },
+    { type: "marketMaterial", name: "材料费" },
+    { type: "marketMachine", name: "施工机械使用费" },
+    { type: "marketMachineLabour", name: "施工机械人工费" },
+    { type: "marketEquipment", name: "设备购置费" },
+    { type: "marketDirect", name: "直接费" },
 
-        { type: 'labour', name: '定额人工费' },
-        { type: 'material', name: '定额材料费' },
-        { type: 'machine', name: '定额施工机械使用费' },
-        { type: 'equipment', name: '定额设备费' },
-        { type: 'direct', name: '定额直接费' },
+    { type: "labour", name: "定额人工费" },
+    { type: "material", name: "定额材料费" },
+    { type: "machine", name: "定额施工机械使用费" },
+    { type: "equipment", name: "定额设备费" },
+    { type: "direct", name: "定额直接费" },
 
-        { type: 'measure', name: '措施费' },
-        { type: 'measure1', name: '措施费I' },
-        { type: 'measure2', name: '措施费II' },
-        { type: 'manage', name: '企业管理费' },
-        { type: 'force', name: '规费' },
-        { type: 'profit', name: '利润' },
-        { type: 'tax', name: '税金' },
-        { type: 'common', name: '建安费' },
-        { type: 'rationCommon', name: '定额建安费' }
-    ];
+    { type: "measure", name: "措施费" },
+    { type: "measure1", name: "措施费I" },
+    { type: "measure2", name: "措施费II" },
+    { type: "manage", name: "企业管理费" },
+    { type: "force", name: "规费" },
+    { type: "profit", name: "利润" },
+    { type: "tax", name: "税金" },
+    { type: "common", name: "建安费" },
+    { type: "rationCommon", name: "定额建安费" },
+  ];
 })();
 
 // 清单基数
-const progression = ['施工场地建设费', '养护单位项目管理费', '养护单位项目管理费(未单独设置项目部)', '工程监理费', '工程监理费(未实行社会监理)', '设计文件审查费', '工程设计费'];
+const progression = [
+  "施工场地建设费",
+  "养护单位项目管理费",
+  "养护单位项目管理费(未单独设置项目部)",
+  "工程监理费",
+  "工程监理费(未实行社会监理)",
+  "设计文件审查费",
+  "工程设计费",
+];
 const deficiency = {};
-if (typeof baseFigureMap !== 'undefined') {
-    const { fixedFlag } = commonConstants;
-    const budgetMap = {
-        // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示
-        '养护工程费': {
-            base: 'YHGCF',
-            fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-            filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
-            pick: false,
-        },
-        // 显示:仅清单固定类别是“安全生产费”的可显示
-        '养护工程费(不含安全生产费)': {
-            base: 'YHGCFBHSC',
-            fixedFlag: null,
-            filter: [fixedFlag.SAFE_COST],
-            pick: true
-        },
-        // 显示:仅清单固定类别是“养护工程其他费用”部分可显示
-        '养护工程费(不含设备费)': {
-            base: 'YHGCFBHSB',
-            fixedFlag: null,
-            filter: [fixedFlag.MAINTENANCE_EXPENSES],
-            pick: true
-        },
-        // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示
-        '定额养护工程费': {
-            base: 'DEYHGCF',
-            fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-            filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
-            pick: false
-        },
-        // 显示:仅清单固定类别是“养护工程其他费用”、“施工场地建设费”的可显示
-        '定额养护工程费(不含专项费用)': {
-            base: 'DEYHGCFBHZXFY',
-            fixedFlag: null,
-            filter: [fixedFlag.MAINTENANCE_EXPENSES, fixedFlag.CONSTRUCTION_PLANT_COST],
-            pick: true,
-        },
-        // 显示:除清单固定类别是“建筑安装工程费”、“土地使用及拆迁补偿费”的以外部分可显示
-        '土地使用及拆迁补偿费': {
-            base: 'TDSYJCQBCF',
-            fixedFlag: fixedFlag.LAND_USED_DEMOLITION,
-            filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION],
-            pick: false,
-        },
-        // 显示:除清单固定类别是“建筑安装工程费”、“土地使用及拆迁补偿费”、“工程建设其他费用”的以外部分可显示。
-        '工程建设其他费用': {
-            base: 'GCJSQTFY',
-            fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
-            filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
-            pick: false,
-        },
-        // 显示:仅清单固定类别是“施工场地建设费”的可显示。
-        '施工场地建设费': {
-            isProgressive: true,
-            base: 'SGCDJSF',
-            fixedFlag: null,
-            filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
-            pick: true,
-        },
-        // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-        '养护单位项目管理费': {
-            isProgressive: true,
-            base: 'YHDWXMGLF',
-            fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
-            filter: [fixedFlag.MAINTENANCE_EXPENSES],
-            pick: true,
-        },
-        // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
-        '养护单位项目管理费(未单独设置项目部)': {
-            isProgressive: true,
-            base: 'YHDWXMGLFWSXMB',
-            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: 'GCJLFWSXSHJL',
-            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: 'GCSJF',
-            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 = {
-        //仅允许用于固定类别是“第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],
-            pick: false
-        },
-        /*
-        *  清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
-        *  因此{100章以外合计}不设置关联的清单固定行
-        * */
-        //仅允许用于固定类别为“100章清单”引用
-        '100章以外清单合计': {
-            base: 'YBZYHQDHJ',
-            fixedFlag: null,
-            filter: [fixedFlag.ONE_HUNDRED_BILLS],
-            pick: true
-        }
-    };
-    baseFigureMap.budget = budgetMap;
-    baseFigureMap.boq = boqMap;
+if (typeof baseFigureMap !== "undefined") {
+  const { fixedFlag } = commonConstants;
+  const budgetMap = {
+    // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示
+    养护工程费: {
+      base: "YHGCF",
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
+      pick: false,
+    },
+    // 显示:仅清单固定类别是“安全生产费”的可显示
+    "养护工程费(不含安全生产费)": {
+      base: "YHGCFBHSC",
+      fixedFlag: null,
+      filter: [fixedFlag.SAFE_COST],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示
+    "养护工程费(不含设备费)": {
+      base: "YHGCFBHSB",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示
+    定额养护工程费: {
+      base: "DEYHGCF",
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
+      pick: false,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”、“施工场地建设费”的可显示
+    "定额养护工程费(不含专项费用)": {
+      base: "DEYHGCFBHZXFY",
+      fixedFlag: null,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES, fixedFlag.CONSTRUCTION_PLANT_COST],
+      pick: true,
+    },
+    // 显示:除清单固定类别是“建筑安装工程费”、“土地使用及拆迁补偿费”的以外部分可显示
+    土地使用及拆迁补偿费: {
+      base: "TDSYJCQBCF",
+      fixedFlag: fixedFlag.LAND_USED_DEMOLITION,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION],
+      pick: false,
+    },
+    // 显示:除清单固定类别是“建筑安装工程费”、“土地使用及拆迁补偿费”、“工程建设其他费用”的以外部分可显示。
+    工程建设其他费用: {
+      base: "GCJSQTFY",
+      fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
+      pick: false,
+    },
+    // 显示:仅清单固定类别是“施工场地建设费”的可显示。
+    施工场地建设费: {
+      isProgressive: true,
+      base: "SGCDJSF",
+      fixedFlag: null,
+      filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    养护单位项目管理费: {
+      isProgressive: true,
+      base: "YHDWXMGLF",
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+    "养护单位项目管理费(未单独设置项目部)": {
+      isProgressive: true,
+      base: "YHDWXMGLFWSXMB",
+      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: "GCJLFWSXSHJL",
+      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: "GCSJF",
+      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 = {
+    //仅允许用于固定类别是“第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],
+      pick: false,
+    },
+    /*
+     *  清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
+     *  因此{100章以外合计}不设置关联的清单固定行
+     * */
+    //仅允许用于固定类别为“100章清单”引用
+    "100章以外清单合计": {
+      base: "YBZYHQDHJ",
+      fixedFlag: null,
+      filter: [fixedFlag.ONE_HUNDRED_BILLS],
+      pick: true,
+    },
+    定额建筑安装工程费: {
+      base: "DEJZAZGCF",
+      fixedFlag: null,
+      filter: [fixedFlag.ONE_HUNDRED_BILLS],
+      pick: true,
+    },
+  };
+  baseFigureMap.budget = budgetMap;
+  baseFigureMap.boq = boqMap;
 }
 
-if (typeof baseFigureTemplate !== 'undefined') {
-    const { fixedFlag } = commonConstants;
-    baseFigureTemplate.budget = {
-        // 养护工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
-        YHGCF(tender) {
-            return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, 'common');
-        },
-        // 养护工程费(不含安全生产费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除“安全生产费”的金额。
-        YHGCFBHSC(tender) {
-            return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, 'common');
-        },
-        // 养护工程费(不含设备费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除设备的金额(所有设备类型的人材机型定额)。
-        YHGCFBHSB(tender) {
-            let baseFee = this['YHGCF'](tender);
-            const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
-            const allSubNodes = [];
-            projectObj.project.mainTree.getAllSubNode(fixedNode, allSubNodes);
-            const equipmentNodes = allSubNodes.filter(node => node.data.type === rationType.gljRation && node.data.subType === gljType.EQUIPMENT);
-            const feeField = 'common';
-            const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
-            for (const node of equipmentNodes) {
-                const data = node.data;
-                if (cbTools.isUnDef(data.feesIndex) || _.isEmpty(data.feesIndex) ||
-                    cbTools.isUnDef(data.feesIndex[feeField]) || cbTools.isUnDef(data.feesIndex[feeField][subFeeField])) {
-                    continue;
-                }
-                baseFee -= data.feesIndex[feeField][subFeeField];
-            }
-            return baseFee.toDecimal(decimalObj.bills.totalPrice);
-        },
-        // 定额养护工程费 取清单固定类别是“建筑安装工程费”的定额建安费。
-        DEYHGCF(tender) {
-            return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, 'rationCommon');
-        },
-        // 定额养护工程费(不含专项费用) 算法:取清单固定类别是“建筑安装工程费”的“定额建安费”,扣除“专项费用”的“定额建安费”。
-        DEYHGCFBHZXFY(tender) {
-            return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, 'rationCommon');
-        },
-        // 土地使用及拆迁补偿费 算法:取清单固定类别是“土地使用及拆迁补偿费”的金额。
-        TDSYJCQBCF(tender) {
-            return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, 'common');
-        },
-        // 工程建设其他费用 算法:取清单固定类别是“养护工程其他费用”的金额。
-        GCJSQTFY(tender) {
-            return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, 'common');
-        },
-        // 施工场地建设费 算法:以{定额养护工程费(不含专项费用)}为基数,采用累进办法计算。
-        SGCDJSF(tender) {
-            const baseFee = this['DEYHGCFBHZXFY'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        // 养护单位项目管理费 算法:以{定额养护工程费}为基数,采用累进办法计算。
-        YHDWXMGLF(tender) {
-            const baseFee = this['DEYHGCF'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '养护单位项目管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        // 养护单位项目管理费(未单独设置项目部) 算法:以{定额养护工程费}为基数,采用累进办法计算。
-        YHDWXMGLFWSXMB(tender) {
-            const baseFee = this['DEYHGCF'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '养护单位项目管理费(未单独设置项目部)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        // 工程监理费 算法:以{定额养护工程费}为基数,采用累进办法计算。
-        GCJLF(tender) {
-            const baseFee = this['DEYHGCF'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        // 工程监理费(未实行社会监理) 算法:以{定额养护工程费}为基数,采用累进办法计算。
-        GCJLFWSXSHJL(tender) {
-            const baseFee = this['DEYHGCF'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '工程监理费(未实行社会监理)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        // 设计文件审查费 算法:以{定额养护工程费}为基数,采用累进办法计算。
-        SJWJSCF(tender) {
-            const baseFee = this['DEYHGCF'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        // 工程设计费 算法:以{定额养护工程费}为基数,采用累进办法计算。
-        GCSJF(tender) {
-            const baseFee = this['DEYHGCF'](tender);
-            if (!tender) {
-                calcBase.baseProgressiveFee = baseFee;
-            }
-            return calculateUtil.getProgressiveFee(baseFee, '工程设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
-        },
-        /*  价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
+if (typeof baseFigureTemplate !== "undefined") {
+  const { fixedFlag } = commonConstants;
+  baseFigureTemplate.budget = {
+    // 养护工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
+    YHGCF(tender) {
+      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
+    },
+    // 养护工程费(不含安全生产费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除“安全生产费”的金额。
+    YHGCFBHSC(tender) {
+      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
+    },
+    // 养护工程费(不含设备费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除设备的金额(所有设备类型的人材机型定额)。
+    YHGCFBHSB(tender) {
+      let baseFee = this["YHGCF"](tender);
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
+      const allSubNodes = [];
+      projectObj.project.mainTree.getAllSubNode(fixedNode, allSubNodes);
+      const equipmentNodes = allSubNodes.filter((node) => node.data.type === rationType.gljRation && node.data.subType === gljType.EQUIPMENT);
+      const feeField = "common";
+      const subFeeField = tender ? "tenderTotalFee" : "totalFee";
+      for (const node of equipmentNodes) {
+        const data = node.data;
+        if (
+          cbTools.isUnDef(data.feesIndex) ||
+          _.isEmpty(data.feesIndex) ||
+          cbTools.isUnDef(data.feesIndex[feeField]) ||
+          cbTools.isUnDef(data.feesIndex[feeField][subFeeField])
+        ) {
+          continue;
+        }
+        baseFee -= data.feesIndex[feeField][subFeeField];
+      }
+      return baseFee.toDecimal(decimalObj.bills.totalPrice);
+    },
+    // 定额养护工程费 取清单固定类别是“建筑安装工程费”的定额建安费。
+    DEYHGCF(tender) {
+      return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
+    },
+    // 定额养护工程费(不含专项费用) 算法:取清单固定类别是“建筑安装工程费”的“定额建安费”,扣除“专项费用”的“定额建安费”。
+    DEYHGCFBHZXFY(tender) {
+      return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, "rationCommon");
+    },
+    // 土地使用及拆迁补偿费 算法:取清单固定类别是“土地使用及拆迁补偿费”的金额。
+    TDSYJCQBCF(tender) {
+      return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, "common");
+    },
+    // 工程建设其他费用 算法:取清单固定类别是“养护工程其他费用”的金额。
+    GCJSQTFY(tender) {
+      return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, "common");
+    },
+    // 施工场地建设费 算法:以{定额养护工程费(不含专项费用)}为基数,采用累进办法计算。
+    SGCDJSF(tender) {
+      const baseFee = this["DEYHGCFBHZXFY"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "施工场地建设费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 养护单位项目管理费 算法:以{定额养护工程费}为基数,采用累进办法计算。
+    YHDWXMGLF(tender) {
+      const baseFee = this["DEYHGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "养护单位项目管理费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 养护单位项目管理费(未单独设置项目部) 算法:以{定额养护工程费}为基数,采用累进办法计算。
+    YHDWXMGLFWSXMB(tender) {
+      const baseFee = this["DEYHGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "养护单位项目管理费(未单独设置项目部)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 工程监理费 算法:以{定额养护工程费}为基数,采用累进办法计算。
+    GCJLF(tender) {
+      const baseFee = this["DEYHGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 工程监理费(未实行社会监理) 算法:以{定额养护工程费}为基数,采用累进办法计算。
+    GCJLFWSXSHJL(tender) {
+      const baseFee = this["DEYHGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "工程监理费(未实行社会监理)",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 设计文件审查费 算法:以{定额养护工程费}为基数,采用累进办法计算。
+    SJWJSCF(tender) {
+      const baseFee = this["DEYHGCF"](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(
+        baseFee,
+        "设计文件审查费",
+        projectObj.project.property.progressiveInterval,
+        decimalObj.bills.totalPrice,
+        deficiency
+      );
+    },
+    // 工程设计费 算法:以{定额养护工程费}为基数,采用累进办法计算。
+    GCSJF(tender) {
+      const baseFee = this["DEYHGCF"](tender);
+      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['YHGCF'](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);
-        }
+    JCYBF(tender) {
+      //建筑安装工程费作为基数
+      const installFee = this["YHGCF"](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 = {
-        //{各章清单合计}
-        // 取清单固定类别是“第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');
-        },
-        //{100章以外清单合计}
-        // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
-        // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
-        'YBZYHQDHJ': function (tender) {
-            let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
-            if (!oneToSeven) {
-                return 0;
-            }
-            //100-700章固定节点的所有子节点
-            let allChildren = [];
-            function getChildren(nodes) {
-                allChildren = allChildren.concat(nodes);
-                for (let node of nodes) {
-                    if (node.children.length > 0) {
-                        getChildren(node.children);
-                    }
-                }
-            }
-            getChildren(oneToSeven.children);
-            //扣除的节点:100章的节点[100-200)
-            let deductNodes = allChildren.filter(cbTools.withingOneHundred);
-            //计算金额
-            let fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
-            return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
+  baseFigureTemplate.boq = {
+    //{各章清单合计}
+    // 取清单固定类别是“第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");
+    },
+    //{100章以外清单合计}
+    // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
+    // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
+    YBZYHQDHJ: function (tender) {
+      let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
+      if (!oneToSeven) {
+        return 0;
+      }
+      //100-700章固定节点的所有子节点
+      let allChildren = [];
+      function getChildren(nodes) {
+        allChildren = allChildren.concat(nodes);
+        for (let node of nodes) {
+          if (node.children.length > 0) {
+            getChildren(node.children);
+          }
         }
-    };
+      }
+      getChildren(oneToSeven.children);
+      //扣除的节点:100章的节点[100-200)
+      let deductNodes = allChildren.filter(cbTools.withingOneHundred);
+      //计算金额
+      let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
+      return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
+    },
+    // 清单项目基数:{定额建筑安装工程费} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费按40%计算,税金是全额计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
+    DEJZAZGCF(tender) {
+      const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
+      const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
+      const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
+      return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
+    },
+  };
 }
 
-if (typeof projectObj !== 'undefined') {
-    projectObj.isInsertEquipmentVisable = function (selected) {
-        if (projectObj.project.property.valuationType !== 'ration') {//预算项目中,右键“插入设备”,仅在第一部分中显示。
-            return projectObj.project.Bills.isConstructionInstall(selected);
-        }
-        return true;   //湖南不管是预算或者工程量清单,都显示   
+if (typeof projectObj !== "undefined") {
+  projectObj.isInsertEquipmentVisable = function (selected) {
+    if (projectObj.project.property.valuationType !== "ration") {
+      //预算项目中,右键“插入设备”,仅在第一部分中显示。
+      return projectObj.project.Bills.isConstructionInstall(selected);
     }
+    return true; //湖南不管是预算或者工程量清单,都显示
+  };
 }
 
 //湖南工地转移费率值修改特殊处理
-if (typeof feeRateObject !== 'undefined') {
-    feeRateObject.feeRateSpecialHandle = function (subRate, value) {
-        let result = {};
-        if (subRate.name == "工地转移(km)" && value && value < 50) {//工地转移50km以内按50km算
-            result.valueKey = "50";
-            result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));//设置显示的节点值
-        }
-        return result;
+if (typeof feeRateObject !== "undefined") {
+  feeRateObject.feeRateSpecialHandle = function (subRate, value) {
+    let result = {};
+    if (subRate.name == "工地转移(km)" && value && value < 50) {
+      //工地转移50km以内按50km算
+      result.valueKey = "50";
+      result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
     }
+    return result;
+  };
 }
 
-if (typeof electrovalenceObj !== 'undefined') {
-    electrovalenceObj.options = [
-        { code: "3005003", name: "电网电", specs: "", unit: "kW·h", type: "201" },
-        { code: "8017001", name: "15kW以内柴油发电机组", specs: "12GF1", unit: "台班", type: "301" },
-        { code: "8017002", name: "30kW以内柴油发电机组", specs: "30GFY-2", unit: "台班", type: "301" },
-        { code: "8017003", name: "50kW以内柴油发电机组", specs: "50GFY-2", unit: "台班", type: "301" }
-    ]
+if (typeof electrovalenceObj !== "undefined") {
+  electrovalenceObj.options = [
+    { code: "3005003", name: "电网电", specs: "", unit: "kW·h", type: "201" },
+    { code: "8017001", name: "15kW以内柴油发电机组", specs: "12GF1", unit: "台班", type: "301" },
+    { code: "8017002", name: "30kW以内柴油发电机组", specs: "30GFY-2", unit: "台班", type: "301" },
+    { code: "8017003", name: "50kW以内柴油发电机组", specs: "50GFY-2", unit: "台班", type: "301" },
+  ];
 }
 
 // 在新建分段的时候需要隐藏养护类别和费用标准
-if (typeof $ !== 'undefined') { // 后端也有引用这个文件,后端引用时$没有定义会报错
-    $(document).ready(function () {
-        $('#tender-engineering-group').hide();
-        $('#tender-feeStandard-group').hide();
-    });
+if (typeof $ !== "undefined") {
+  // 后端也有引用这个文件,后端引用时$没有定义会报错
+  $(document).ready(function () {
+    $("#tender-engineering-group").hide();
+    $("#tender-feeStandard-group").hide();
+  });
 }
 
 // CommonJS module
-if (typeof module !== 'undefined' && !module.nodeType) { // 防止module是前端的一个html标签
-    module.exports = {
-        progression,
-        deficiency
-    };
+if (typeof module !== "undefined" && !module.nodeType) {
+  // 防止module是前端的一个html标签
+  module.exports = {
+    progression,
+    deficiency,
+  };
 }
-
-

+ 5 - 5
web/over_write/js/neimeng_2019.js

@@ -333,11 +333,11 @@ if (typeof baseFigureTemplate !== 'undefined') {
         },
         // 清单项目基数:{定额建筑安装工程费(定额设备购置费按40%计)} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费+设备税金之和按40%计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
         DEJZAZGCF(tender) {
-        const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
-        const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
-        const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
-        return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
-      },
+            const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
+            const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
+            const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
+            return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice); 
+        },
     };
 }