|
@@ -3,7 +3,7 @@
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
let isAH2019 = true;
|
|
let isAH2019 = true;
|
|
|
-
|
|
|
|
|
|
|
+const { fixedFlag } = commonConstants;
|
|
|
function overwriteRationCalcBases() {
|
|
function overwriteRationCalcBases() {
|
|
|
if (typeof rationCalcBases == 'undefined') return;
|
|
if (typeof rationCalcBases == 'undefined') return;
|
|
|
for (let key in rationCalcBases) delete rationCalcBases[key];
|
|
for (let key in rationCalcBases) delete rationCalcBases[key];
|
|
@@ -33,18 +33,18 @@ function overwriteRationCalcBases() {
|
|
|
rationCalcBases['定额施工机械使用费'] = function (node, isTender) {
|
|
rationCalcBases['定额施工机械使用费'] = function (node, isTender) {
|
|
|
return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, 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.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
|
|
|
|
|
+ };
|
|
|
rationCalcBases['定额设备费'] = function (node, isTender) {
|
|
rationCalcBases['定额设备费'] = function (node, isTender) {
|
|
|
return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
|
|
return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
|
|
|
};
|
|
};
|
|
|
rationCalcBases['定额外购砼构件费'] = function (node, 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);
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ 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() {
|
|
(function overwriteFeeTypes() {
|
|
@@ -54,13 +54,13 @@ function overwriteRationCalcBases() {
|
|
|
{ type: 'marketMaterial', name: '材料费' },
|
|
{ type: 'marketMaterial', name: '材料费' },
|
|
|
{ type: 'marketMachine', name: '施工机械使用费' },
|
|
{ type: 'marketMachine', name: '施工机械使用费' },
|
|
|
{ type: 'marketMachineLabour', name: '施工机械人工费' },
|
|
{ type: 'marketMachineLabour', name: '施工机械人工费' },
|
|
|
- {type: 'marketEquipment', name: '设备购置费'},
|
|
|
|
|
|
|
+ { type: 'marketEquipment', name: '设备购置费' },
|
|
|
{ type: 'marketDirect', name: '直接费' },
|
|
{ type: 'marketDirect', name: '直接费' },
|
|
|
|
|
|
|
|
{ type: 'labour', name: '定额人工费' },
|
|
{ type: 'labour', name: '定额人工费' },
|
|
|
{ type: 'material', name: '定额材料费' },
|
|
{ type: 'material', name: '定额材料费' },
|
|
|
{ type: 'machine', name: '定额施工机械使用费' },
|
|
{ type: 'machine', name: '定额施工机械使用费' },
|
|
|
- {type: 'equipment', name: '定额设备费'},
|
|
|
|
|
|
|
+ { type: 'equipment', name: '定额设备费' },
|
|
|
{ type: 'direct', name: '定额直接费' },
|
|
{ type: 'direct', name: '定额直接费' },
|
|
|
|
|
|
|
|
{ type: 'measure', name: '措施费' },
|
|
{ type: 'measure', name: '措施费' },
|
|
@@ -75,8 +75,11 @@ function overwriteRationCalcBases() {
|
|
|
})();
|
|
})();
|
|
|
|
|
|
|
|
// 清单基数
|
|
// 清单基数
|
|
|
|
|
+const progression = [];
|
|
|
|
|
+const deficiency = {};
|
|
|
if (typeof baseFigureMap !== 'undefined') {
|
|
if (typeof baseFigureMap !== 'undefined') {
|
|
|
- baseFigureMap.budget = {
|
|
|
|
|
|
|
+ const { fixedFlag } = commonConstants;
|
|
|
|
|
+ const budgetMap = {
|
|
|
// 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示。
|
|
// 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示。
|
|
|
'建筑安装工程费': {
|
|
'建筑安装工程费': {
|
|
|
base: 'JZAZGCF',
|
|
base: 'JZAZGCF',
|
|
@@ -135,6 +138,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
},
|
|
},
|
|
|
// 显示:仅清单固定类别是“施工场地建设费”的可显示。
|
|
// 显示:仅清单固定类别是“施工场地建设费”的可显示。
|
|
|
'施工场地建设费': {
|
|
'施工场地建设费': {
|
|
|
|
|
+ isProgressive: true,
|
|
|
base: 'SGCDJSF',
|
|
base: 'SGCDJSF',
|
|
|
fixedFlag: null,
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
|
|
filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
|
|
@@ -142,6 +146,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
},
|
|
},
|
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'养护单位管理费': {
|
|
'养护单位管理费': {
|
|
|
|
|
+ isProgressive: true,
|
|
|
base: 'YHDWGLF',
|
|
base: 'YHDWGLF',
|
|
|
fixedFlag: null,
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
@@ -149,6 +154,8 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
},
|
|
},
|
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'养护项目信息化费': {
|
|
'养护项目信息化费': {
|
|
|
|
|
+ isProgressive: true,
|
|
|
|
|
+ deficiency: 20000,
|
|
|
base: 'YHXMXXHF',
|
|
base: 'YHXMXXHF',
|
|
|
fixedFlag: null,
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
@@ -156,6 +163,8 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
},
|
|
},
|
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
// 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'工程监理费': {
|
|
'工程监理费': {
|
|
|
|
|
+ isProgressive: true,
|
|
|
|
|
+ deficiency: 20000,
|
|
|
base: 'GCJLF',
|
|
base: 'GCJLF',
|
|
|
fixedFlag: null,
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
@@ -163,6 +172,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
},
|
|
},
|
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'设计文件审查费': {
|
|
'设计文件审查费': {
|
|
|
|
|
+ isProgressive: true,
|
|
|
base: 'SJWJSCF',
|
|
base: 'SJWJSCF',
|
|
|
fixedFlag: null,
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
@@ -170,6 +180,8 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
},
|
|
},
|
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
// 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
|
|
|
'前期工作费': {
|
|
'前期工作费': {
|
|
|
|
|
+ isProgressive: true,
|
|
|
|
|
+ deficiency: 30000,
|
|
|
base: 'QQGZF',
|
|
base: 'QQGZF',
|
|
|
fixedFlag: null,
|
|
fixedFlag: null,
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
@@ -183,8 +195,7 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
pick: true,
|
|
pick: true,
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
- baseFigureMap.boq = {
|
|
|
|
|
|
|
+ const boqMap = {
|
|
|
//仅允许用于固定类别是“第100章至700章清单”以外的清单
|
|
//仅允许用于固定类别是“第100章至700章清单”以外的清单
|
|
|
'各章清单合计': {
|
|
'各章清单合计': {
|
|
|
base: 'GZQDHJ',
|
|
base: 'GZQDHJ',
|
|
@@ -211,9 +222,21 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
pick: true
|
|
pick: true
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
+ for (const name in budgetMap) {
|
|
|
|
|
+ const item = budgetMap[name];
|
|
|
|
|
+ if (item.isProgressive) {
|
|
|
|
|
+ progression.push(item.progressiveName || name);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (item.deficiency) {
|
|
|
|
|
+ deficiency[item.progressiveName || name] = item.deficiency;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ baseFigureMap.budget = budgetMap;
|
|
|
|
|
+ baseFigureMap.boq = boqMap;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (typeof baseFigureTemplate !== 'undefined') {
|
|
if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
|
|
+ const { fixedFlag } = commonConstants;
|
|
|
baseFigureTemplate.budget = {
|
|
baseFigureTemplate.budget = {
|
|
|
// 建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
|
|
// 建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
|
|
|
JZAZGCF(tender) {
|
|
JZAZGCF(tender) {
|
|
@@ -271,7 +294,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
if (!tender) {
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
}
|
|
|
- return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
|
|
|
|
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
},
|
|
|
// 养护单位管理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
|
|
// 养护单位管理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
|
|
|
YHDWGLF(tender) {
|
|
YHDWGLF(tender) {
|
|
@@ -279,7 +302,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
if (!tender) {
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
}
|
|
|
- return calculateUtil.getProgressiveFee(baseFee, '养护单位管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
|
|
|
|
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '养护单位管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
},
|
|
|
// 养护项目信息化费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。(不足20000元时按20000元计算)
|
|
// 养护项目信息化费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。(不足20000元时按20000元计算)
|
|
|
YHXMXXHF(tender) {
|
|
YHXMXXHF(tender) {
|
|
@@ -287,8 +310,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
if (!tender) {
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
}
|
|
|
- const fee = calculateUtil.getProgressiveFee(baseFee, '养护项目信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
|
|
|
|
|
- return fee > 0 && fee < 20000 ? 20000 : fee;
|
|
|
|
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '养护项目信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
},
|
|
|
// 工程监理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足20000元时按20000元计算)
|
|
// 工程监理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足20000元时按20000元计算)
|
|
|
GCJLF(tender) {
|
|
GCJLF(tender) {
|
|
@@ -296,8 +318,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
if (!tender) {
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
}
|
|
|
- const fee = calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
|
|
|
|
|
- return fee > 0 && fee < 20000 ? 20000 : fee;
|
|
|
|
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
},
|
|
|
// 设计文件审查费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
|
|
// 设计文件审查费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
|
|
|
SJWJSCF(tender) {
|
|
SJWJSCF(tender) {
|
|
@@ -305,7 +326,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
if (!tender) {
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
}
|
|
|
- return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
|
|
|
|
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
},
|
|
|
// 前期工作费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足30000元时按30000元计算)
|
|
// 前期工作费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足30000元时按30000元计算)
|
|
|
QQGZF(tender) {
|
|
QQGZF(tender) {
|
|
@@ -313,8 +334,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
if (!tender) {
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
}
|
|
|
- const fee = calculateUtil.getProgressiveFee(baseFee, '前期工作费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
|
|
|
|
|
- return fee > 0 && fee < 30000 ? 30000 : fee;
|
|
|
|
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, '前期工作费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
},
|
|
|
/* 价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
|
|
/* 价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
|
|
|
价差预备费 P * [(1+i)^(n-1) -1]
|
|
价差预备费 P * [(1+i)^(n-1) -1]
|
|
@@ -326,12 +346,12 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
//建筑安装工程费作为基数
|
|
//建筑安装工程费作为基数
|
|
|
const installFee = this['JZAZGCF'](tender);
|
|
const installFee = this['JZAZGCF'](tender);
|
|
|
//年造价增涨
|
|
//年造价增涨
|
|
|
- const costGrowthRate = calcBase.project.property.costGrowthRate
|
|
|
|
|
- ? calcBase.project.property.costGrowthRate
|
|
|
|
|
|
|
+ const costGrowthRate = calcBase.project.property.costGrowthRate
|
|
|
|
|
+ ? calcBase.project.property.costGrowthRate
|
|
|
: 0;
|
|
: 0;
|
|
|
//增涨计费年限
|
|
//增涨计费年限
|
|
|
- const growthPeriod = projectObj.project.property.growthPeriod
|
|
|
|
|
- ? calcBase.project.property.growthPeriod
|
|
|
|
|
|
|
+ const growthPeriod = projectObj.project.property.growthPeriod
|
|
|
|
|
+ ? calcBase.project.property.growthPeriod
|
|
|
: 0;
|
|
: 0;
|
|
|
//= P * [(1+i)^(n-1) -1]
|
|
//= P * [(1+i)^(n-1) -1]
|
|
|
return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
|
|
return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
|
|
@@ -396,8 +416,15 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
|
|
|
|
|
// 安徽养护在新建分段的时候需要隐藏养护类别和费用标准
|
|
// 安徽养护在新建分段的时候需要隐藏养护类别和费用标准
|
|
|
if (typeof $ !== 'undefined') { // 后端也有引用这个文件,后端引用时$没有定义会报错
|
|
if (typeof $ !== 'undefined') { // 后端也有引用这个文件,后端引用时$没有定义会报错
|
|
|
- $(document).ready(function() {
|
|
|
|
|
|
|
+ $(document).ready(function () {
|
|
|
$('#tender-engineering-group').hide();
|
|
$('#tender-engineering-group').hide();
|
|
|
$('#tender-feeStandard-group').hide();
|
|
$('#tender-feeStandard-group').hide();
|
|
|
});
|
|
});
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+if (typeof module !== 'undefined') {
|
|
|
|
|
+ module.exports = {
|
|
|
|
|
+ progression,
|
|
|
|
|
+ deficiency
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|