Bläddra i källkod

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost into 1.0.0_online

zhongzewei 6 år sedan
förälder
incheckning
66d3c5e6fd

+ 7 - 5
modules/all_models/engineering_lib.js

@@ -59,12 +59,14 @@ let modelSchema = {
     valuationID:{type:String,index: true},
     //工程专业名称
     name:String,
+    //费用标准
+    feeName:String,
     //前端是否显示
-    visible:{
-        type: Boolean,
-        default: false
-    },
-    engineering:Number
+    visible:{type: Boolean, default: false},
+    //取费专业
+    engineering:Number,
+    //是否计算安装增加费
+    isInstall:{type: Boolean, default: false}
 };
 mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
 

+ 17 - 6
modules/main/facade/ration_facade.js

@@ -364,17 +364,21 @@ async function  updateRation(std,firstLibID,rationID,billsItemID,projectID,calQu
     else if(std.rationRepId === firstLibID && ration.from === 'cpt') {
         ration.prefix = '补';
     }
-    ration.programID = std.feeType;
+    if(std.feeType == undefined || std.feeType == null || std.feeType ==''){//定额取费专业为空的情况下,取项目属性中的定额取费专业ID
+        ration.programID = await getProgramForProject(projectID);
+    }else {
+        ration.programID = std.feeType;
+    }
     ration.rationAssList = createRationAss(std);//生成辅助定额
     if(calQuantity){
        await CalculateQuantity(ration,billsItemID,projectID);
     }
 
- let unsetObject = {
-     "marketUnitFee":1,
-     'marketTotalFee':1,
-     "maskName":1
- }
+     let unsetObject = {
+         "marketUnitFee":1,
+         'marketTotalFee':1,
+         "maskName":1
+     }
     let newRation = await ration_model.model.findOneAndUpdate({ID:rationID,projectID:projectID},{"$set":ration,"$unset":unsetObject},{new: true});//;
     return newRation;
 }
@@ -409,6 +413,7 @@ async function setEmptyRation(projectID,rationID){
     ration.quantityCoe = {};
     ration.rationQuantityCoe="";
     ration.tenderQuantity = "";
+    ration.programID = null;
     let newRation = await ration_model.model.findOneAndUpdate({ID:rationID,projectID:projectID},{"$set":ration},{new: true});//;
     return {ration:newRation,ration_gljs:[],ration_coes:[],ration_installs:[]};
 }
@@ -439,6 +444,12 @@ async function CalculateQuantity (ration,billsItemID,projectID) {
     ration.contain =  scMathUtil.roundForObj(ration.quantity/billsQuantity,6);
 };
 
+
+async function getProgramForProject(projectID){
+    let project = await projectModel.findOne({ID:projectID});
+    return project.property.engineering;
+}
+
 function FilterNumberFromUnit (unit) {
     let reg = new RegExp('^[0-9]+');
     if (reg.test(unit)) {

+ 1 - 1
modules/pm/models/project_model.js

@@ -175,7 +175,7 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     //计算选项
                     data.updateData.property.calcOptions = calcOptions;
                     //安装增加费
-                    if(parseInt(data.updateData.property.engineering)==4){
+                    if(data.updateData.property.isInstall == true || data.updateData.property.isInstall=='true'){//判断是否安装工程
                         await installationFacade.copyInstallationFeeFromLib(data.updateData.ID,data.updateData.property.engineering_id);
                     }
                     //锁定清单

+ 1 - 1
public/scHintBox.html

@@ -170,7 +170,7 @@
     };
 
     $('#hintBox_form').on('hide.bs.modal', function() {
-        $.bootstrapLoading.end();
+        if($.bootstrapLoading) $.bootstrapLoading.end();
         return;
     });
 </script>

+ 10 - 0
public/web/common_util.js

@@ -73,6 +73,16 @@ function changePropNames(object, oldNames, newNames) {
     }
 };
 
+function changePropNames(object, oldNames, newNames) {
+    if (!object) return;
+    for (let i = 0; i < oldNames.length; i++) {
+        if (object[oldNames[i]]){
+            object[newNames[i]] = object[oldNames[i]];
+            delete object[oldNames[i]];
+        };
+    }
+};
+
 function deletePropNames(object, namesArr) {
     if (!object) return;
     for (let name of namesArr){

+ 1 - 1
web/building_saas/main/js/controllers/block_controller.js

@@ -244,7 +244,7 @@ let BlockController = {
                 let billsQuantity = scMathUtil.roundForObj(parent.data.quantity,getDecimal("quantity",parent));
                 this.calcRationQuantityAndContain(billsQuantity,d);
                 //如果粘贴位置不属于分部分项工程,或者不是安装工程,则把安装增加费内容置空
-                if(!Bills.isFBFX(parent)|| projectInfoObj.projectInfo.property.engineering!=engineeringType.BUILD_IN){
+                if(!Bills.isFBFX(parent)|| !project.isInstall()){
                     d.ration_installations = [];
                 }
             }

+ 28 - 13
web/building_saas/main/js/models/calc_program.js

@@ -347,11 +347,15 @@ let calcTools = {
 
         return result;
     },
-    machineLabourFee: function (treeNode, gljArr, isTender) {
+    // masterTypeFilter 过滤机械机型:[]全部, [1,2]特大机械  [3,4]中小机械。  detailType 如机上人工费、机械折旧费等
+    machineDetailFee: function (treeNode, gljArr, masterTypeFilter, detailType, isTender) {
         if (!gljArr) return 0;
         let result = 0;
         for (let glj of gljArr) {
-            if (glj.type == gljType.GENERAL_MACHINE) {
+            if (baseMachineMasterTypes.includes(glj.type)){
+                // 机型不符
+                if ((masterTypeFilter.length > 0) && (glj.model && !masterTypeFilter.includes(glj.model))) break;
+
                 let gljQ;
                 if (isTender){
                     calcTools.calcGLJTenderQty(treeNode, glj);
@@ -364,7 +368,7 @@ let calcTools = {
                 if (!mds) mds = [];
                 let mdSum = 0;
                 for (let md of mds) {
-                    if (md.type == gljType.MACHINE_LABOUR) {
+                    if (md.type == detailType) {
                         let q = md["consumption"] ? md["consumption"] : 0;
                         let p = md["basePrice"] ? md["basePrice"] : 0;
                         mdSum = mdSum + (q * p).toDecimal(decimalObj.glj.unitPriceHasMix);
@@ -540,7 +544,7 @@ let calcTools = {
                 'quantity': 1,
                 'type': treeNode.data.subType      // 注意:这里要取subType
             };
-            result = me.machineLabourFee(treeNode, [glj], isTender);
+            result = me.machineDetailFee(treeNode, [glj], [], gljType.MACHINE_LABOUR, isTender);
         }
         else if (
             (treeNode.data.type == rationType.gljRation) &&
@@ -567,22 +571,26 @@ let calcTools = {
             supplyT = [supplyType.JDYG];
 
         let gljT = [], compT = [];
-        if (baseName == rationCalcBasesNameMap.JGDEJJRGF || baseName == rationCalcBasesNameMap.JDDEJJRGF){
+        if ([rationCalcBasesNameMap.JGDEJJRGF, rationCalcBasesNameMap.JDDEJJRGF].includes(baseName)){               // 甲供、甲定人工
             gljT = [gljType.LABOUR];
         }
-        else if (baseName == rationCalcBasesNameMap.JGDEJJCLF || baseName == rationCalcBasesNameMap.JDDEJJCLF){
+        else if ([rationCalcBasesNameMap.JGDEJJCLF, rationCalcBasesNameMap.JDDEJJCLF].includes(baseName)){          // 甲供、甲定材料
             gljT = baseMaterialTypes;
             compT = compositionTypes;
         }
-        else if (baseName == rationCalcBasesNameMap.JGDEJJJXF || baseName == rationCalcBasesNameMap.JDDEJJJXF){
+        else if ([rationCalcBasesNameMap.JGDEJJJXF, rationCalcBasesNameMap.JDDEJJJXF].includes(baseName)){          // 甲供、甲定机械
             gljT = baseMachineTypes;
             compT = [gljType.GENERAL_MACHINE];
         }
-        else if (baseName == rationCalcBasesNameMap.JGZCF || baseName == rationCalcBasesNameMap.JDZCF){
+        else if ([rationCalcBasesNameMap.JGDESGJJF, rationCalcBasesNameMap.JDDESGJJF].includes(baseName)){          // 甲供、甲定机械(重庆2018新定额)
+            gljT = baseMachineTypes;
+            compT = baseMachineTypes_CQ_2018_JX;
+        }
+        else if ([rationCalcBasesNameMap.JGZCF, rationCalcBasesNameMap.JDZCF].includes(baseName)){                  // 甲供、甲定主材
             gljT = [gljType.MAIN_MATERIAL];
             compT = [gljType.MAIN_MATERIAL];
         }
-        else if (baseName == rationCalcBasesNameMap.JGSBF || baseName == rationCalcBasesNameMap.JDSBF){
+        else if ([rationCalcBasesNameMap.JGSBF, rationCalcBasesNameMap.JDSBF].includes(baseName)){                  // 甲供、甲定设备
             gljT = [gljType.EQUIPMENT];
         };
         // alert(JSON.stringify(projectGLJ.testGLJs()));
@@ -856,6 +864,13 @@ let calcTools = {
             }
         };
         return rst.toDecimal(decimalObj.glj.quantity);
+    },
+    getProjectFeatureProperty(propertyKey){
+        for (let o of projectObj.project.property.projectFeature){
+              if (o.key == propertyKey){
+                  return o.value;
+              }
+        };
     }
 };
 
@@ -902,7 +917,7 @@ let rationCalcBases = {
         return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE], priceTypes.ptBasePrice, isTender);
     },
     '定额基价机上人工费': function (node, isTender) {
-        return calcTools.machineLabourFee(node, node.data.gljList, isTender);
+        return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.MACHINE_LABOUR, isTender);
     },
     '人工费价差': function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptDiffPrice, isTender);
@@ -1773,12 +1788,12 @@ class CalcProgram {
                     } ;
                 };
             };
-
-            if (treeNode.data.programID == undefined) treeNode.data.programID = projectInfoObj.projectInfo.property.engineering;
+            // 2018-08-27   zhang  插入空定额的时候,取费专业也为空
+           // if (treeNode.data.programID == undefined) treeNode.data.programID = projectInfoObj.projectInfo.property.engineering;
             let template = me.compiledTemplates[treeNode.data.programID];
             treeNode.data.calcTemplate = template;
 
-            if (treeNode && template.hasCompiled) {
+            if (treeNode && template && template.hasCompiled) {//2018-08-27 空行的时候,取费专业为空,template也为空,加入template非空判断
                 let $CE = executeObj;
                 $CE.treeNode = treeNode;
                 $CE.template = template;

+ 1 - 1
web/building_saas/main/js/models/installation_fee.js

@@ -235,7 +235,7 @@ var installation_fee = {
             let FBMap = {};//保存分部下对应的补项
             let usedBXMap = {};//有使用到的补项
             let startTime =  +new Date();
-            if(engineering!=engineeringType.BUILD_IN){//如果不是安装工程,则不用计算
+            if(!projectObj.project.isInstall()){//如果不是安装工程,则不用计算
                 if(callback) callback(false);
                 return;
             }

+ 8 - 3
web/building_saas/main/js/models/main_consts.js

@@ -34,6 +34,11 @@ const baseMachineTypes = [
     gljType.MACHINE_COMPOSITION,
     gljType.MACHINE_LABOUR
 ];
+
+const baseMachineMasterTypes = [
+    gljType.GENERAL_MACHINE
+];
+
 // 全部材料类型。用于暂估等 (多了主材和设备)
 const allMaterialTypes = [
     gljType.GENERAL_MATERIAL,
@@ -297,8 +302,8 @@ const cpFeeTypes = [
     // {type: 'fee9', name: '费用9'}
 
 ];
-
-const engineeringType = {
+//8-27 zhang 这个已经不能用来判断工程类型了
+/*const engineeringType = {
     // 建筑工程
     ARCHITECTURE: 1,
     // 装饰工程
@@ -327,7 +332,7 @@ const engineeringType = {
     BUILDING_REPAIR: 13,
     // 安装修缮工程
     BUILD_IN_REPAIR: 14
-};
+};*/
 const blockType ={
     RATION:1,//定额
     FB:2,//分部

+ 5 - 0
web/building_saas/main/js/models/project.js

@@ -400,6 +400,11 @@ var PROJECT = {
                 }
             })
         };
+        //判断项目是否安装工程
+        project.prototype.isInstall = function () {
+            return projectInfoObj.projectInfo.property.isInstall?true:false;//如果是undefinded 就也返回false
+        };
+
         /*        project.prototype.setBillsCalcMode = function (calcMode) {
                     this.property.billsCalcMode = calcMode;
                     this.initCalcFields();

+ 7 - 7
web/building_saas/main/js/models/ration.js

@@ -114,11 +114,11 @@ var Ration = {
             newData['type'] = rType;
             if (rType == rationType.volumePrice){
                 newData['subType'] = gljType.GENERAL_MATERIAL;   // 默认的量价类型为材料
-                newData['programID'] = projectInfoObj.projectInfo.property.engineering;
+                //newData['programID'] = projectInfoObj.projectInfo.property.engineering;
             };
-            if(rType == rationType.install){//是安装增加费生成的定额
+           /* if(rType == rationType.install){//是安装增加费生成的定额
                 newData['programID'] = projectInfoObj.projectInfo.property.engineering;
-            }
+            }*/
             return newData;
         };
 
@@ -395,7 +395,7 @@ var Ration = {
             }
             for(let r of recodes){
                 let needInstall = false;
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     needInstall = project.Bills.isFBFX(r.node);
                 }
                 r.value===null||r.value===undefined?"":r.value = r.value.replace(/[\s\r\n]/g, "");//去掉空格回车换行等字符
@@ -470,7 +470,7 @@ var Ration = {
             };
             if(billItemID){
                 let calQuantity = optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     let billsNode = project.mainTree.getNodeByID(billItemID);
                     needInstall = project.Bills.isFBFX(billsNode);//在分部分项插入的定额才需要定额安装增加费
                 }
@@ -588,7 +588,7 @@ var Ration = {
                         brUpdate.push({projectID:newData.projectID,ID:br[i].ID,serialNo:br[i].serialNo});
                     }
                 }
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     let billsNode = project.mainTree.getNodeByID(billItemID);
                     needInstall = project.Bills.isFBFX(billsNode);//在分部分项插入的定额才需要定额安装增加费
                 }
@@ -667,7 +667,7 @@ var Ration = {
                         brUpdate.push({projectID:newData.projectID,ID:br[i].ID,serialNo:br[i].serialNo});
                     }
                 }
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     let billsNode = project.mainTree.getNodeByID(billItemID);
                 }
                 $.bootstrapLoading.start();

+ 2 - 6
web/building_saas/main/js/views/installation_fee_view.js

@@ -225,11 +225,7 @@ let installationFeeObj={
         $("#calc_installation_fee").modal({show:true});
     },
     engineeringTypeChecking:function () {
-        let property = projectInfoObj.projectInfo.property;
-        let engineering = property.engineering;
-        if(engineering==engineeringType.BUILD_IN){//如果是安装工程,则显示
-            $('#AZZJF_div').show();
-        }
+        if(projectObj.project.isInstall()) $('#AZZJF_div').show();//如果是安装工程,则显示
     },
     initInstallationFeeSpread:function(){
         //初始化费用项表格
@@ -1248,7 +1244,7 @@ let installationFeeObj={
         let installSetting = projectInfoObj.projectInfo.property.installSetting;
         let install_fee = projectObj.project.installation_fee;
         let autoCreate = false;
-        if(engineering!=engineeringType.BUILD_IN){//如果不是安装工程,则不用计算
+        if(!projectObj.project.isInstall()){//如果不是安装工程,则不用计算
             return;
         }
         //可执行检查

+ 1 - 2
web/building_saas/main/js/views/project_view.js

@@ -1277,8 +1277,7 @@ var projectObj = {
                         installationFeeObj.showCalcInstallSettingDiv();
                     },
                     visible: function(key, opt){
-                        let engineering = projectInfoObj.projectInfo.property.engineering;
-                        return engineering==engineeringType.BUILD_IN;
+                        return projectObj.project.isInstall();
                     }
                 },
                 "delete": {

+ 87 - 40
web/over_write/js/chongqing_2018.js

@@ -45,18 +45,26 @@ if(typeof materialComponent !== 'undefined'){
     materialComponent = [201];
 }
 
-// CSL, 2018-08-21 计算程序、基数 的覆盖。
-if (rationCalcBases){
-    baseMaterialTypes.push(gljType.OTHER_MATERIAL);
-    allMaterialTypes.delete(gljType.EQUIPMENT);
-    baseMachineTypes.delete(gljType.MACHINE_COMPOSITION);
-    baseMachineTypes.push(gljType.INSTRUMENT, gljType.FUEL_POWER_FEE, gljType.DEPRECIATION_FEE,
-        gljType.INSPECTION_FEE, gljType.MAINTENANCE, gljType.DISMANTLING_FREIGHT_FEE,
-        gljType.VERIFICATION_FEE, gljType.OTHER_FEE, gljType.OTHER_MACHINE_USED);
+// CSL, 2018-08-21 计算程序、基数 的覆盖。---------------------------------------------------------------------------------
+const baseMachineTypes_CQ_2018_JX = [           // 重庆2018新定额施工机具之三大机械类型
+    gljType.GENERAL_MACHINE,
+    gljType.INSTRUMENT,
+    gljType.OTHER_MACHINE_USED
+];
+
+baseMaterialTypes.push(gljType.OTHER_MATERIAL);
+allMaterialTypes.delete(gljType.EQUIPMENT);
+baseMachineTypes.delete(gljType.MACHINE_COMPOSITION);
+baseMachineTypes.push(gljType.INSTRUMENT, gljType.FUEL_POWER_FEE, gljType.DEPRECIATION_FEE,
+    gljType.INSPECTION_FEE, gljType.MAINTENANCE, gljType.DISMANTLING_FREIGHT_FEE,
+    gljType.VERIFICATION_FEE, gljType.OTHER_FEE, gljType.OTHER_MACHINE_USED);
+baseMachineMasterTypes.push(gljType.INSTRUMENT);
 
+if (rationCalcBases){
     changePropNames(rationCalcBases,
         ['定额基价人工费', '定额基价材料费', '甲供定额基价人工费', '甲供定额基价材料费', '甲定定额基价人工费', '甲定定额基价材料费', '分包定额基价人工费','分包定额基价材料费'],
-        ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']);
+        ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']
+    );
     deletePropNames(rationCalcBases, [
         '定额基价机械费', '定额基价机上人工费', '机械费价差', '主材费价差', '设备费价差','甲供定额基价机械费','甲定定额基价机械费',
         '设备费', '甲供设备费', '甲定设备费', '分包设备费', '分包定额基价机械费']);
@@ -65,7 +73,7 @@ if (rationCalcBases){
         return calcTools.rationBaseFee(node, [gljType.OTHER_MATERIAL], priceTypes.ptBasePrice, isTender);
     },
     rationCalcBases['定额施工机具使用费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
+        return calcTools.rationBaseFee(node, baseMachineTypes_CQ_2018_JX, priceTypes.ptBasePrice, isTender);
     },
     rationCalcBases['计价材料价差'] = function (node, isTender) {
         let baseMaterialTypesWithoutOtherMaterial = [
@@ -78,32 +86,42 @@ if (rationCalcBases){
         ];
         return calcTools.rationBaseFee(node, baseMaterialTypesWithoutOtherMaterial, priceTypes.ptDiffPrice, isTender);
     },
-    rationCalcBases['机上人工费价差'] = function () {
-        return 0;
+    rationCalcBases['机上人工费价差'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
     };
-    rationCalcBases['机械燃料动力费价差'] = function () {
-        return 0;
+    rationCalcBases['主材费(市场价)'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
     };
-    rationCalcBases['机械折旧费'] = function () {
-        return 0;
+    rationCalcBases['机械燃料动力费价差'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.FUEL_POWER_FEE], priceTypes.ptDiffPrice, isTender);
     };
-    rationCalcBases['特大机械检修费'] = function () {
-        return 0;
+    rationCalcBases['机械折旧费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
+            gljType.DEPRECIATION_FEE, isTender);
     };
-    rationCalcBases['中小机械检修费'] = function () {
-        return 0;
+    rationCalcBases['特大机械检修费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], baseMachineMasterTypes,
+            gljType.INSPECTION_FEE, isTender);
     };
-    rationCalcBases['特大机械维护费'] = function () {
-        return 0;
+    rationCalcBases['中小机械检修费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], baseMachineMasterTypes,
+            gljType.INSPECTION_FEE, isTender);
     };
-    rationCalcBases['中小机械维护费'] = function () {
-        return 0;
+    rationCalcBases['特大机械维护费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], baseMachineMasterTypes,
+            gljType.MAINTENANCE, isTender);
     };
-    rationCalcBases['机械安拆费及场外运输费'] = function () {
-        return 0;
+    rationCalcBases['中小机械维护费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], baseMachineMasterTypes,
+            gljType.MAINTENANCE, isTender);
     };
-    rationCalcBases['机械燃料动力费'] = function () {
-        return 0;
+    rationCalcBases['机械安拆费及场外运输费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
+            gljType.DISMANTLING_FREIGHT_FEE, isTender);
+    };
+    rationCalcBases['机械燃料动力费'] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
+            gljType.FUEL_POWER_FEE, isTender);
     };
     rationCalcBases['定额仪器仪表费'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.INSTRUMENT], priceTypes.ptBasePrice, isTender);
@@ -111,22 +129,51 @@ if (rationCalcBases){
     rationCalcBases['定额其他施工机具使用费'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
     },
-    rationCalcBases['甲供定额施工机具费'] = function () {
-        return 0;
+    rationCalcBases['甲供定额施工机具费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGDESGJJF, isTender);
+    };
+    rationCalcBases['甲定定额施工机具费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDDESGJJF, isTender);
     };
-    rationCalcBases['分包定额施工机具费'] = function () {
-        return 0;
+    rationCalcBases['分包定额施工机具费'] = function (node, isTender) {
+        if (node.data.isSubcontract)
+            return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender)
+        else
+            return 0;
     };
-    rationCalcBases['甲定定额施工机具费'] = function () {
-        return 0;
+    rationCalcBases['建筑面积'] = function (node, isTender) {
+        return calcTools.getProjectFeatureProperty('buildingArea');
     };
+};
+
+if (rationCalcBasesNameMap) {
+    let str = '基价';
+    for (let pn in rationCalcBasesNameMap){
+        if (rationCalcBasesNameMap[pn].includes(str))
+            rationCalcBasesNameMap[pn] = rationCalcBasesNameMap[pn].replace(new RegExp(str, "g"), '');
+    };
+
+    rationCalcBasesNameMap.DEQTCLF = '定额其他材料费';
+    rationCalcBasesNameMap.DESGJJSYF = '定额施工机具使用费';
+    rationCalcBasesNameMap.JJCLJC = '计价材料价差';
+    rationCalcBasesNameMap.JSRGFJC = '机上人工费价差';
+    rationCalcBasesNameMap.JXRLDLFJC = '机械燃料动力费价差';
+    rationCalcBasesNameMap.JXZJF = '机械折旧费';
+    rationCalcBasesNameMap.TDJXJXF = '特大机械检修费';
+    rationCalcBasesNameMap.ZXJXJXF = '中小机械检修费';
+    rationCalcBasesNameMap.TDJXWHF = '特大机械维护费';
+    rationCalcBasesNameMap.ZXJXWHF = '中小机械维护费';
+    rationCalcBasesNameMap.XXACJCWYSF = '机械安拆费及场外运输费';
+    rationCalcBasesNameMap.JXRLDLF = '机械燃料动力费';
+    rationCalcBasesNameMap.DEYQYBF = '定额仪器仪表费';
+    rationCalcBasesNameMap.DEQTSGJJSYF = '定额其他施工机具使用费';
+    rationCalcBasesNameMap.JGDESGJJF = '甲供定额施工机具费';
+    rationCalcBasesNameMap.JDDESGJJF = '甲定定额施工机具费';
+    rationCalcBasesNameMap.FGDESGJJF = '分包定额施工机具费';
+    rationCalcBasesNameMap.ZCF_SCJ = '主材费(市场价)';
+    rationCalcBasesNameMap.JZMJ = '建筑面积';
+};
 
-}
-else {
-    let s = '加载超前,覆盖失败!';
-    console.log(s);
-    alert(s);
-}
 
 //清单计算基数相关
 if(typeof baseFigureMap !== 'undefined'){