|
|
@@ -594,49 +594,50 @@ let calcTools = {
|
|
|
if (treeNode.data.type != rationType.volumePrice && treeNode.data.type != rationType.gljRation) return;
|
|
|
let result = 0, me = this;
|
|
|
|
|
|
- let rcj = (treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'RGF')) ||
|
|
|
- (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'CLF')) ||
|
|
|
- (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JXF'));
|
|
|
-
|
|
|
- if (typeof isJX2017 != 'undefined') {
|
|
|
- rcj = rcj || (treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'SC_RGF')) ||
|
|
|
- (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'SC_CLF')) ||
|
|
|
- (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'SC_JXF'))
|
|
|
- };
|
|
|
-
|
|
|
- if (rcj ||
|
|
|
- (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF')) ||
|
|
|
- (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SBF'))) {
|
|
|
- if (treeNode.data.type == rationType.volumePrice)
|
|
|
- result = treeNode.data.marketUnitFee ? parseFloat(treeNode.data.marketUnitFee).toDecimal(decimalObj.ration.unitPrice) : 0
|
|
|
- else if (treeNode.data.type == rationType.gljRation)
|
|
|
- // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
|
|
|
- // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
|
|
|
- result = gljOprObj.getBasePrice(treeNode);
|
|
|
+ function isRCJZC(treeNode, baseName) { // 基数名称中是否包含人材机主设,且树结点类型要匹配一致
|
|
|
+ let rst = (treeNode.data.subType === gljType.LABOUR && baseName.includes('人工')) || // 人工费、市场人工费
|
|
|
+ (baseMaterialTypes.includes(treeNode.data.subType) && baseName.includes('材料')) ||
|
|
|
+ (treeNode.data.subType === gljType.GENERAL_MACHINE && (baseName.includes('机械') || baseName.includes('机具'))) ||
|
|
|
+ (treeNode.data.subType === gljType.MAIN_MATERIAL && baseName.includes('主材')) ||
|
|
|
+ (treeNode.data.subType === gljType.EQUIPMENT && baseName.includes('设备'));
|
|
|
+ return rst;
|
|
|
}
|
|
|
- else if (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JSRGF')) {
|
|
|
- let glj = {
|
|
|
- 'code': treeNode.data.code,
|
|
|
- 'name': treeNode.data.name,
|
|
|
- 'specs': treeNode.data.specs,
|
|
|
- 'unit': treeNode.data.unit,
|
|
|
- 'quantity': 1,
|
|
|
- 'type': treeNode.data.subType // 注意:这里要取subType
|
|
|
- };
|
|
|
- result = me.machineDetailFee(treeNode, [glj], [], gljType.MACHINE_LABOUR, isTender);
|
|
|
+
|
|
|
+ if (baseName.includes('甲供') || baseName.includes('甲定') || baseName.includes('分包')) {
|
|
|
+ result = 0;
|
|
|
+ }
|
|
|
+ else if (baseName.includes('价差')) {
|
|
|
+ if (treeNode.data.type == rationType.gljRation) {
|
|
|
+ if (isRCJZC(treeNode, baseName)) {
|
|
|
+ let aprice = me.uiGLJPrice(treeNode.data.basePrice); // 量价虚拟的工料机不可能有发文,这里直接取定额价。
|
|
|
+ let mprice = me.uiGLJPrice(treeNode.data.marketUnitFee);
|
|
|
+ result = (mprice - aprice).toDecimal(decimalObj.ration.unitPrice);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- else if (
|
|
|
- (treeNode.data.type == rationType.gljRation) &&
|
|
|
- ((treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'JC_RGF')) ||
|
|
|
- (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'JC_CLF')) ||
|
|
|
- (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JC_JXF')) ||
|
|
|
- (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'JC_ZCF')) ||
|
|
|
- (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'JC_SBF')))
|
|
|
- ) {
|
|
|
- let aprice = me.uiGLJPrice(treeNode.data.basePrice); // 量价虚拟的工料机不可能有发文,这里直接取定额价。
|
|
|
- let mprice = me.uiGLJPrice(treeNode.data.marketUnitFee);
|
|
|
- result = (mprice - aprice).toDecimal(decimalObj.ration.unitPrice);
|
|
|
+ else if (baseName.includes('机上人工')) {
|
|
|
+ if (treeNode.data.subType === gljType.GENERAL_MACHINE) {
|
|
|
+ let glj = {
|
|
|
+ 'code': treeNode.data.code,
|
|
|
+ 'name': treeNode.data.name,
|
|
|
+ 'specs': treeNode.data.specs,
|
|
|
+ 'unit': treeNode.data.unit,
|
|
|
+ 'quantity': 1,
|
|
|
+ 'type': treeNode.data.subType // 注意:这里要取subType
|
|
|
+ };
|
|
|
+ result = me.machineDetailFee(treeNode, [glj], [], gljType.MACHINE_LABOUR, isTender);
|
|
|
+ }
|
|
|
}
|
|
|
+ else {
|
|
|
+ if (isRCJZC(treeNode, baseName)) {
|
|
|
+ if (treeNode.data.type == rationType.volumePrice)
|
|
|
+ result = treeNode.data.marketUnitFee ? parseFloat(treeNode.data.marketUnitFee).toDecimal(decimalObj.ration.unitPrice) : 0
|
|
|
+ else if (treeNode.data.type == rationType.gljRation)
|
|
|
+ // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
|
|
|
+ // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
|
|
|
+ result = gljOprObj.getBasePrice(treeNode);
|
|
|
+ }
|
|
|
+ };
|
|
|
return result;
|
|
|
},
|
|
|
partASupplyFee: function (treeNode, baseName, isTender, isRationPirce = true) {
|
|
|
@@ -650,22 +651,20 @@ let calcTools = {
|
|
|
supplyT = [supplyType.JDYG];
|
|
|
|
|
|
let gljT = [], compT = [];
|
|
|
- if (calcTools.inBase(baseName, 'JG_RGF') || calcTools.inBase(baseName, 'JD_RGF')){
|
|
|
- gljT = [gljType.LABOUR];
|
|
|
- }
|
|
|
- else if (calcTools.inBase(baseName, 'JG_CLF') || calcTools.inBase(baseName, 'JD_CLF')){ // 甲供、甲定材料
|
|
|
+ if (baseName.includes('人工')) gljT = [gljType.LABOUR]; // 含人工的:如甲供人工、甲定人工
|
|
|
+ else if (baseName.includes('材料')){
|
|
|
gljT = baseMaterialTypes;
|
|
|
compT = compositionTypes;
|
|
|
}
|
|
|
- else if (calcTools.inBase(baseName, 'JG_JXF') || calcTools.inBase(baseName, 'JD_JXF')) { // 甲供、甲定机械
|
|
|
+ else if (baseName.includes('机械') || baseName.includes('机具')) {
|
|
|
gljT = baseMachineTypes;
|
|
|
compT = [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED]; // 取并集,兼容重庆2018新定额
|
|
|
}
|
|
|
- else if (calcTools.inBase(baseName, 'JG_ZCF') || calcTools.inBase(baseName, 'JD_ZCF')) { // 甲供、甲定主材
|
|
|
+ else if (baseName.includes('主材')) {
|
|
|
gljT = [gljType.MAIN_MATERIAL];
|
|
|
compT = [gljType.MAIN_MATERIAL];
|
|
|
}
|
|
|
- else if (calcTools.inBase(baseName, 'JG_SBF') || calcTools.inBase(baseName, 'JD_SBF')) { // 甲供、甲定设备
|
|
|
+ else if (baseName.includes('设备')) {
|
|
|
gljT = [gljType.EQUIPMENT];
|
|
|
};
|
|
|
// alert(JSON.stringify(projectGLJ.testGLJs()));
|
|
|
@@ -951,52 +950,7 @@ let calcTools = {
|
|
|
return o.value;
|
|
|
}
|
|
|
};
|
|
|
- },
|
|
|
- inBase(baseName, kindName){
|
|
|
- return rationCalcBasesNameKinds[kindName].includes(baseName);
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-let rationCalcBasesNameKinds = {
|
|
|
- RGF: ['定额基价人工费', '定额人工费'],
|
|
|
- CLF: ['定额基价材料费', '定额材料费'],
|
|
|
- QTCLF: ['定额其他材料费'],
|
|
|
- JXF: ['定额基价机械费', '定额机械费', '定额施工机具使用费'],
|
|
|
- JSRGF: ['定额基价机上人工费'],
|
|
|
- ZCF: ['主材费', '市场价主材费'],
|
|
|
- SBF: ['设备费'],
|
|
|
- RGGR: ['人工工日'],
|
|
|
- ZGCLF: ['暂估材料费'],
|
|
|
-
|
|
|
- // 市场价人工费、市场价材料费、市场价机械费。江西用,跟重庆区分开,概念上不太统一,这里要注意区分。
|
|
|
- SC_RGF: ['人工费'],
|
|
|
- SC_CLF: ['材料费'],
|
|
|
- SC_JXF: ['机械费'],
|
|
|
-
|
|
|
- JC_RGF: ['人工费价差'],
|
|
|
- JC_CLF: ['材料费价差'],
|
|
|
- JC_JXF: ['机械费价差'],
|
|
|
- JC_ZCF: ['主材费价差'],
|
|
|
- JC_SBF: ['设备费价差'],
|
|
|
-
|
|
|
- JG_RGF: ['甲供定额基价人工费', '甲供定额人工费', '甲供人工费'],
|
|
|
- JG_CLF: ['甲供定额基价材料费', '甲供定额材料费', '甲供材料费'],
|
|
|
- JG_JXF: ['甲供定额基价机械费', '甲供定额机械费', '甲供机械费', '甲供定额施工机具费'],
|
|
|
- JG_ZCF: ['甲供主材费'],
|
|
|
- JG_SBF: ['甲供设备费'],
|
|
|
-
|
|
|
- JD_RGF: ['甲定定额基价人工费', '甲定定额人工费', '甲定人工费'],
|
|
|
- JD_CLF: ['甲定定额基价材料费', '甲定定额材料费', '甲定材料费'],
|
|
|
- JD_JXF: ['甲定定额基价机械费', '甲定定额机械费', '甲定机械费', '甲定定额施工机具费'],
|
|
|
- JD_ZCF: ['甲定主材费'],
|
|
|
- JD_SBF: ['甲定设备费'],
|
|
|
-
|
|
|
- FB_RGF: ['分包定额基价人工费', '分包人工费'],
|
|
|
- FB_CLF: ['分包定额基价材料费', '分包材料费'],
|
|
|
- FB_JXF: ['分包定额基价机械费', '分包机械费'],
|
|
|
- FB_ZCF: ['分包主材费'],
|
|
|
- FB_SBF: ['分包设备费'],
|
|
|
- FB_RGGR: ['分包人工工日']
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
let rationCalcBases = {
|