浏览代码

2018新定额基数及计算

chenshilong 6 年之前
父节点
当前提交
90e044c3a7

+ 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){

+ 9 - 5
web/building_saas/main/js/models/calc_program.js

@@ -567,22 +567,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 = [gljType.GENERAL_MACHINE];
+        }
+        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()));

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

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

+ 56 - 25
web/over_write/js/chongqing_2018.js

@@ -45,18 +45,25 @@ 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);
 
+if (rationCalcBases){
     changePropNames(rationCalcBases,
         ['定额基价人工费', '定额基价材料费', '甲供定额基价人工费', '甲供定额基价材料费', '甲定定额基价人工费', '甲定定额基价材料费', '分包定额基价人工费','分包定额基价材料费'],
-        ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']);
+        ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']
+    );
     deletePropNames(rationCalcBases, [
         '定额基价机械费', '定额基价机上人工费', '机械费价差', '主材费价差', '设备费价差','甲供定额基价机械费','甲定定额基价机械费',
         '设备费', '甲供设备费', '甲定设备费', '分包设备费', '分包定额基价机械费']);
@@ -65,7 +72,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,11 +85,11 @@ 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;
+        return calcTools.rationBaseFee(node, [gljType.FUEL_POWER_FEE], priceTypes.ptDiffPrice, isTender);
     };
     rationCalcBases['机械折旧费'] = function () {
         return 0;
@@ -111,20 +118,44 @@ 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 () {
-        return 0;
+    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;
     };
+};
+
+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 = '分包定额施工机具费';
+};
 
-}
-else {
-    let s = '加载超前,覆盖失败!';
-    console.log(s);
-    alert(s);
-}