Bläddra i källkod

机械明细费基数。

chenshilong 7 år sedan
förälder
incheckning
c5416b331f

+ 17 - 6
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) &&
@@ -580,7 +584,7 @@ let calcTools = {
         }
         else if ([rationCalcBasesNameMap.JGDESGJJF, rationCalcBasesNameMap.JDDESGJJF].includes(baseName)){          // 甲供、甲定机械(重庆2018新定额)
             gljT = baseMachineTypes;
-            compT = [gljType.GENERAL_MACHINE];
+            compT = baseMachineTypes_CQ_2018_JX;
         }
         else if ([rationCalcBasesNameMap.JGZCF, rationCalcBasesNameMap.JDZCF].includes(baseName)){                  // 甲供、甲定主材
             gljT = [gljType.MAIN_MATERIAL];
@@ -860,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;
+              }
+        };
     }
 };
 
@@ -906,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);

+ 4 - 0
web/building_saas/main/js/models/main_consts.js

@@ -35,6 +35,10 @@ const baseMachineTypes = [
     gljType.MACHINE_LABOUR
 ];
 
+const baseMachineMasterTypes = [
+    gljType.GENERAL_MACHINE
+];
+
 // 全部材料类型。用于暂估等 (多了主材和设备)
 const allMaterialTypes = [
     gljType.GENERAL_MATERIAL,

+ 31 - 15
web/over_write/js/chongqing_2018.js

@@ -58,6 +58,7 @@ 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,
@@ -88,29 +89,39 @@ if (rationCalcBases){
     rationCalcBases['机上人工费价差'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
     };
-    rationCalcBases['机械燃料动力费价差'] = function () {
+    rationCalcBases['主材费(市场价)'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
+    };
+    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 () {
-        return 0;
+    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);
@@ -130,6 +141,9 @@ if (rationCalcBases){
         else
             return 0;
     };
+    rationCalcBases['建筑面积'] = function (node, isTender) {
+        return calcTools.getProjectFeatureProperty('buildingArea');
+    };
 };
 
 if (rationCalcBasesNameMap) {
@@ -156,6 +170,8 @@ if (rationCalcBasesNameMap) {
     rationCalcBasesNameMap.JGDESGJJF = '甲供定额施工机具费';
     rationCalcBasesNameMap.JDDESGJJF = '甲定定额施工机具费';
     rationCalcBasesNameMap.FGDESGJJF = '分包定额施工机具费';
+    rationCalcBasesNameMap.ZCF_SCJ = '主材费(市场价)';
+    rationCalcBasesNameMap.JZMJ = '建筑面积';
 };