|
|
@@ -18,8 +18,9 @@ if (typeof feeRateObject !== 'undefined') {
|
|
|
}
|
|
|
|
|
|
// 清单基数
|
|
|
-const progression = ['养护单位(业主)管理费', '养护单位(业主)管理费(未单独设置)', '养护工程监理费(路线工程)', '养护工程监理费(桥梁及隧道工程)', '设计文件审查费', '养护工程设计费(路线工程)', '养护工程设计费(独立桥梁、隧道工程)', '施工场地建设费'];
|
|
|
-const deficiency = {};
|
|
|
+const littleFixNames = ['小修', '养护检查预算', '日常养护预算'];
|
|
|
+const progression = ['养护单位(业主)管理费', '养护单位(业主)管理费(未单独设置)', '养护工程监理费', '养护工程监理费(路线工程)', '养护工程监理费(桥梁及隧道工程)', '设计文件审查费', '养护工程设计费(路线工程)', '养护工程设计费(独立桥梁、隧道工程)', '施工场地建设费'];
|
|
|
+const deficiency = { '养护工程监理费': 10000, '设计文件审查费': 10000 };
|
|
|
if (typeof baseFigureMap !== 'undefined') {
|
|
|
const { fixedFlag } = commonConstants;
|
|
|
const budgetMap = {
|
|
|
@@ -86,6 +87,15 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
},
|
|
|
+ // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。 仅小修保养类别可以显示
|
|
|
+ '养护工程监理费': {
|
|
|
+ isProgressive: true,
|
|
|
+ base: 'YHGCJLF',
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ engineeringList: littleFixNames,
|
|
|
+ },
|
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'养护工程监理费(路线工程)': {
|
|
|
isProgressive: true,
|
|
|
@@ -93,6 +103,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
+ engineeringList: ['大修', '中修'],
|
|
|
},
|
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'养护工程监理费(桥梁及隧道工程)': {
|
|
|
@@ -101,6 +112,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
+ engineeringList: ['大修', '中修'],
|
|
|
},
|
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'设计文件审查费': {
|
|
|
@@ -109,6 +121,13 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
+ engineeringList: ['大修', '中修']
|
|
|
+ },
|
|
|
+ '养护项目信息化费': {
|
|
|
+ base: 'YHXMXXHF',
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
},
|
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'养护工程设计费(路线工程)': {
|
|
|
@@ -117,6 +136,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
+ engineeringList: ['大修', '中修']
|
|
|
},
|
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'养护工程设计费(独立桥梁、隧道工程)': {
|
|
|
@@ -125,6 +145,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
+ engineeringList: ['大修', '中修']
|
|
|
},
|
|
|
'施工场地建设费': {
|
|
|
isProgressive: true,
|
|
|
@@ -172,6 +193,11 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
baseFigureMap.boq = boqMap;
|
|
|
}
|
|
|
|
|
|
+// 是否是小修
|
|
|
+const isLittleFix = (engName) => {
|
|
|
+ return littleFixNames.some(name => new RegExp(name).test(engName));
|
|
|
+}
|
|
|
+
|
|
|
if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
const { fixedFlag } = commonConstants;
|
|
|
baseFigureTemplate.budget = {
|
|
|
@@ -181,17 +207,36 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
},
|
|
|
// 建筑安装工程费(不含设备费)算法:取清单固定类别是“建筑安装工程费”的金额 - {设备费}。
|
|
|
JZAZGCFBHSB(tender) {
|
|
|
- return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, 'common');
|
|
|
+ const engName = projectObj.project.property.engineeringName;
|
|
|
+ if (isLittleFix(engName)) {
|
|
|
+ // 小修的没有设备购置固定行
|
|
|
+ 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);
|
|
|
+ } else {
|
|
|
+ return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, 'common');
|
|
|
+ }
|
|
|
},
|
|
|
// 定额建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的定额建安费(其中定额设备费按40%计算)。
|
|
|
DEJZAZGCF(tender) {
|
|
|
+ const engName = projectObj.project.property.engineeringName;
|
|
|
const feeField = 'rationCommon';
|
|
|
- const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
|
|
|
- //建安费扣除定额设备购置费
|
|
|
- const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
|
|
|
- //定额设备购置费
|
|
|
- const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
|
|
|
- return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ if (isLittleFix(engName)) {
|
|
|
+ // 小修的没有设备购置固定行
|
|
|
+ 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);
|
|
|
+ } else {
|
|
|
+ const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
|
|
|
+ //建安费扣除定额设备购置费
|
|
|
+ const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
|
|
|
+ //定额设备购置费
|
|
|
+ const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, 'equipment');
|
|
|
+ const equipmentAcTaxFee = cbTools.getBaseFee(deductFlags[0], tender, 'tax');
|
|
|
+ return (afterDeductFee + equipmentAcFee * 0.4 + equipmentAcTaxFee).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ }
|
|
|
},
|
|
|
// 设备费 算法:取清单固定类别是“设备购置”的建安费
|
|
|
SBF(tender) {
|
|
|
@@ -207,13 +252,23 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
},
|
|
|
// 定额养护工程费 算法:取清单固定类别是“养护工程费”的定额建安费(其中定额设备费按40%计算)。
|
|
|
DEYHGCF(tender) {
|
|
|
+ const engName = projectObj.project.property.engineeringName;
|
|
|
const feeField = 'rationCommon';
|
|
|
- const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
|
|
|
- //建安费扣除定额设备购置费
|
|
|
- const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.MAINTENANCE_FEE, deductFlags, tender, feeField, false);
|
|
|
- //定额设备购置费
|
|
|
- const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
|
|
|
- return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ if (isLittleFix(engName)) {
|
|
|
+ // 小修的没有设备购置固定行
|
|
|
+ const baseFee = cbTools.getBaseFee(fixedFlag.MAINTENANCE_FEE, tender, feeField);
|
|
|
+ const fixedNode = projectObj.project.mainTree.items.find(node => node.getFlag() === fixedFlag.MAINTENANCE_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'equipment');
|
|
|
+ return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ } else {
|
|
|
+ const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
|
|
|
+ //建安费扣除定额设备购置费
|
|
|
+ const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.MAINTENANCE_FEE, deductFlags, tender, feeField, false);
|
|
|
+ //定额设备购置费
|
|
|
+ const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, 'equipment');
|
|
|
+ const equipmentAcTaxFee = cbTools.getBaseFee(deductFlags[0], tender, 'tax');
|
|
|
+ return (afterDeductFee + equipmentAcFee * 0.4 + equipmentAcTaxFee).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ }
|
|
|
},
|
|
|
// 养护单位(业主)管理费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。。
|
|
|
YHDWYZGLF(tender) {
|
|
|
@@ -231,6 +286,14 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '养护单位(业主)管理费(未单独设置)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
+ // 养护工程监理费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
|
|
|
+ YHGCJLF(tender) {
|
|
|
+ const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '养护工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
+ },
|
|
|
// 养护工程监理费(路线工程) 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
|
|
|
YHGCJLFLXGC(tender) {
|
|
|
const baseFee = this['DEJZAZGCF'](tender);
|
|
|
@@ -255,6 +318,19 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
+ // 养护项目信息化费 (大中修):取清单固定类别是“建筑安装工程费”的定额建安费(其中定额设备费按40%计算)*0.32%计算。不足10000取10000
|
|
|
+ // 养护项目信息化费 (小修):算法:取清单固定类别是“建筑安装工程费”的定额建安费(其中定额设备费按40%计算)*0.2%计算。信息化管理费不足5000元时按5000元计取。
|
|
|
+ YHXMXXHF(tender) {
|
|
|
+ const engName = projectObj.project.property.engineeringName;
|
|
|
+ const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ if (isLittleFix(engName)) {
|
|
|
+ const fee = (baseFee * 0.002).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ return fee > 0 && fee < 5000 ? 5000 : fee;
|
|
|
+ } else {
|
|
|
+ const fee = (baseFee * 0.0032).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ return fee > 0 && fee < 10000 ? 10000 : fee;
|
|
|
+ }
|
|
|
+ },
|
|
|
// 养护工程设计费(路线工程) 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
|
|
|
YHGCSJFLXGC(tender) {
|
|
|
const baseFee = this['DEJZAZGCF'](tender);
|
|
|
@@ -271,9 +347,14 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '养护工程设计费(独立桥梁、隧道工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
- // 施工场地建设费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算
|
|
|
- SGCDJSG(tender) {
|
|
|
- const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ // 施工场地建设费 算法:以{定额养护工程费}为基数,采用累进办法计算
|
|
|
+ SGCDJSF(tender) {
|
|
|
+ const baseFee = this['DEYHGCF'](tender);
|
|
|
+ // 小修保养类别,施工场地建设费的计算基数定额建筑安装工程费超过30000000元时,不进行累进计算,直接按500000元计取。
|
|
|
+ const engName = projectObj.project.property.engineeringName;
|
|
|
+ if (isLittleFix(engName) && baseFee > 30000000) {
|
|
|
+ return 500000;
|
|
|
+ }
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
|
@@ -341,10 +422,45 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
}
|
|
|
|
|
|
if (typeof module !== 'undefined') {
|
|
|
+ // 甘肃养护,项目属性-小数位数,费率小数位数默认为2。
|
|
|
+ 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
|
|
|
};
|
|
|
}
|
|
|
// 不显示但可的基数
|
|
|
-const invisibleBases = ['设备费', '定额设备费'];
|
|
|
+const invisibleBases = ['设备费', '定额设备费'];
|
|
|
+
|
|
|
+if (typeof projectObj !== 'undefined') {
|
|
|
+ projectObj.isInsertEquipmentVisable = function (selected) {
|
|
|
+ if(projectObj.project.property.valuationType !=='ration' ){//属于预算项目的情况下,在固定清单可见
|
|
|
+ const engName = projectObj.project.property.engineeringName;
|
|
|
+ //属于的固定清单
|
|
|
+ const belongFlag = cbTools.getBelongFlag(selected);
|
|
|
+ if (isLittleFix(engName)) {
|
|
|
+ if (belongFlag && belongFlag === fixedFlag.MAINTENANCE_FEE) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (belongFlag && belongFlag === fixedFlag.EQUIPMENT_ACQUISITION_FEE) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+}
|