Browse Source

兼容2018新定额

chenshilong 6 years ago
parent
commit
d13a5a1027
2 changed files with 126 additions and 118 deletions
  1. 65 61
      web/building_saas/main/js/models/calc_program.js
  2. 61 57
      web/over_write/js/chongqing_2018.js

+ 65 - 61
web/building_saas/main/js/models/calc_program.js

@@ -523,11 +523,11 @@ let calcTools = {
         if (treeNode.data.type != rationType.volumePrice && treeNode.data.type != rationType.gljRation) return;
         let result = 0, me = this;
         if (
-            (treeNode.data.subType === gljType.LABOUR && baseName === rationCalcBasesNameMap.DEJJRGF) ||
-            (baseMaterialTypes.includes(treeNode.data.subType) && baseName === rationCalcBasesNameMap.DEJJCLF) ||
-            (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === rationCalcBasesNameMap.DEJJJXF) ||
-            (treeNode.data.subType === gljType.MAIN_MATERIAL && baseName === rationCalcBasesNameMap.ZCF) ||
-            (treeNode.data.subType === gljType.EQUIPMENT && baseName === rationCalcBasesNameMap.SBF)) {
+            (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')) ||
+            (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)
@@ -535,7 +535,7 @@ let calcTools = {
                 // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
                 result = gljOprObj.getBasePrice(treeNode);
         }
-        else if (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === rationCalcBasesNameMap.DEJJJSRGF) {
+        else if (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JSRGF')) {
             let glj = {
                 'code': treeNode.data.code,
                 'name': treeNode.data.name,
@@ -548,11 +548,11 @@ let calcTools = {
         }
         else if (
             (treeNode.data.type == rationType.gljRation) &&
-            ((treeNode.data.subType === gljType.LABOUR && baseName === rationCalcBasesNameMap.RGFJC) ||
-                (baseMaterialTypes.includes(treeNode.data.subType) && baseName === rationCalcBasesNameMap.CLFJC) ||
-                (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === rationCalcBasesNameMap.JXFJC) ||
-                (treeNode.data.subType === gljType.MAIN_MATERIAL && baseName === rationCalcBasesNameMap.ZCFJC) ||
-                (treeNode.data.subType === gljType.EQUIPMENT && baseName === rationCalcBasesNameMap.SBFJC))
+            ((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);
@@ -571,26 +571,22 @@ let calcTools = {
             supplyT = [supplyType.JDYG];
 
         let gljT = [], compT = [];
-        if ([rationCalcBasesNameMap.JGDEJJRGF, rationCalcBasesNameMap.JDDEJJRGF].includes(baseName)){               // 甲供、甲定人工
+        if (calcTools.inBase(baseName, 'JG_RGF') || calcTools.inBase(baseName, 'JD_RGF')){
             gljT = [gljType.LABOUR];
         }
-        else if ([rationCalcBasesNameMap.JGDEJJCLF, rationCalcBasesNameMap.JDDEJJCLF].includes(baseName)){          // 甲供、甲定材料
+        else if (calcTools.inBase(baseName, 'JG_CLF') || calcTools.inBase(baseName, 'JD_CLF')){             // 甲供、甲定材料
             gljT = baseMaterialTypes;
             compT = compositionTypes;
         }
-        else if ([rationCalcBasesNameMap.JGDEJJJXF, rationCalcBasesNameMap.JDDEJJJXF].includes(baseName)){          // 甲供、甲定机械
+        else if (calcTools.inBase(baseName, 'JG_JXF') || calcTools.inBase(baseName, 'JD_JXF')) {            // 甲供、甲定机械
             gljT = baseMachineTypes;
-            compT = [gljType.GENERAL_MACHINE];
+            compT = [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED];              // 取并集,兼容重庆2018新定额
         }
-        else if ([rationCalcBasesNameMap.JGDESGJJF, rationCalcBasesNameMap.JDDESGJJF].includes(baseName)){          // 甲供、甲定机械(重庆2018新定额)
-            gljT = baseMachineTypes;
-            compT = baseMachineTypes_CQ_2018_JX;
-        }
-        else if ([rationCalcBasesNameMap.JGZCF, rationCalcBasesNameMap.JDZCF].includes(baseName)){                  // 甲供、甲定主材
+        else if (calcTools.inBase(baseName, 'JG_ZCF') || calcTools.inBase(baseName, 'JD_ZCF')) {            // 甲供、甲定主材
             gljT = [gljType.MAIN_MATERIAL];
             compT = [gljType.MAIN_MATERIAL];
         }
-        else if ([rationCalcBasesNameMap.JGSBF, rationCalcBasesNameMap.JDSBF].includes(baseName)){                  // 甲供、甲定设备
+        else if (calcTools.inBase(baseName, 'JG_SBF') || calcTools.inBase(baseName, 'JD_SBF')) {           // 甲供、甲定设备
             gljT = [gljType.EQUIPMENT];
         };
         // alert(JSON.stringify(projectGLJ.testGLJs()));
@@ -871,39 +867,47 @@ let calcTools = {
                   return o.value;
               }
         };
+    },
+    inBase(baseName, kindName){
+        return rationCalcBasesNameKinds[kindName].includes(baseName);
     }
 };
 
-let rationCalcBasesNameMap = {
-    DEJJRGF: '定额基价人工费',
-    DEJJCLF: '定额基价材料费',
-    DEJJJXF: '定额基价机械费',
-    DEJJJSRGF: '定额基价机上人工费',
-    RGFJC: '人工费价差',
-    CLFJC: '材料费价差',
-    JXFJC: '机械费价差',
-    ZCFJC: '主材费价差',
-    SBFJC: '设备费价差',
-    ZCF: '主材费',
-    SBF: '设备费',
-    RGGR: '人工工日',
-    JGDEJJRGF: '甲供定额基价人工费',
-    JGDEJJCLF: '甲供定额基价材料费',
-    JGDEJJJXF: '甲供定额基价机械费',
-    JGZCF: '甲供主材费',
-    JGSBF: '甲供设备费',
-    JDDEJJRGF: '甲定定额基价人工费',
-    JDDEJJCLF: '甲定定额基价材料费',
-    JDDEJJJXF: '甲定定额基价机械费',
-    JDZCF: '甲定主材费',
-    JDSBF: '甲定设备费',
-    ZGCLF: '暂估材料费',
-    FBDEJJRGF: '分包定额基价人工费',
-    FBDEJJCLF: '分包定额基价材料费',
-    FBDEJJJXF: '分包定额基价机械费',
-    FBZCF: '分包主材费',
-    FBSBF: '分包设备费',
-    FBRGGR: '分包人工工日'
+let rationCalcBasesNameKinds = {
+    RGF:        ['定额基价人工费', '定额人工费'],
+    CLF:        ['定额基价材料费', '定额材料费'],
+    QTCLF:      ['定额其他材料费'],
+    JXF:        ['定额基价机械费', '定额施工机具使用费'],
+    JSRGF:      ['定额基价机上人工费'],
+    ZCF:        ['主材费'],
+    SBF:        ['设备费'],
+    RGGR:       ['人工工日'],
+    ZGCLF:      ['暂估材料费'],
+
+    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 = {
@@ -944,34 +948,34 @@ let rationCalcBases = {
         return calcTools.labourDays(node, isTender);
     },
     '甲供定额基价人工费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGDEJJRGF, isTender);
+        return calcTools.partASupplyFee(node, '甲供定额基价人工费', isTender);
     },
     '甲供定额基价材料费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGDEJJCLF, isTender);
+        return calcTools.partASupplyFee(node, '甲供定额基价材料费', isTender);
     },
     '甲供定额基价机械费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGDEJJJXF, isTender);
+        return calcTools.partASupplyFee(node, '甲供定额基价机械费', isTender);
     },
     '甲供主材费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGZCF, isTender);
+        return calcTools.partASupplyFee(node, '甲供主材费', isTender);
     },
     '甲供设备费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGSBF, isTender);
+        return calcTools.partASupplyFee(node, '甲供设备费', isTender);
     },
     '甲定定额基价人工费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDDEJJRGF, isTender);
+        return calcTools.partASupplyFee(node, '甲定定额基价人工费', isTender);
     },
     '甲定定额基价材料费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDDEJJCLF, isTender);
+        return calcTools.partASupplyFee(node, '甲定定额基价材料费', isTender);
     },
     '甲定定额基价机械费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDDEJJJXF, isTender);
+        return calcTools.partASupplyFee(node, '甲定定额基价机械费', isTender);
     },
     '甲定主材费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDZCF, isTender);
+        return calcTools.partASupplyFee(node, '甲定主材费', isTender);
     },
     '甲定设备费': function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDSBF, isTender);
+        return calcTools.partASupplyFee(node, '甲定设备费', isTender);
     },
     '暂估材料费': function (node, isTender) {
         return calcTools.estimateFee(node, true, isTender);

+ 61 - 57
web/over_write/js/chongqing_2018.js

@@ -61,20 +61,34 @@ baseMachineTypes.push(gljType.INSTRUMENT, gljType.FUEL_POWER_FEE, gljType.DEPREC
 baseMachineMasterTypes.push(gljType.INSTRUMENT);
 
 if (rationCalcBases){
-    changePropNames(rationCalcBases,
-        ['定额基价人工费', '定额基价材料费', '甲供定额基价人工费', '甲供定额基价材料费', '甲定定额基价人工费', '甲定定额基价材料费', '分包定额基价人工费','分包定额基价材料费'],
-        ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']
-    );
-    deletePropNames(rationCalcBases, [
-        '定额基价机械费', '定额基价机上人工费', '机械费价差', '主材费价差', '设备费价差','甲供定额基价机械费','甲定定额基价机械费',
-        '设备费', '甲供设备费', '甲定设备费', '分包设备费', '分包定额基价机械费']);
+    for (let key in rationCalcBases) {
+        delete rationCalcBases[key];
+    };
 
+    rationCalcBases['定额人工费'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
+    };
+    rationCalcBases['定额材料费'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
+    };
     rationCalcBases['定额其他材料费'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.OTHER_MATERIAL], priceTypes.ptBasePrice, isTender);
-    },
+    };
     rationCalcBases['定额施工机具使用费'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, baseMachineTypes_CQ_2018_JX, priceTypes.ptBasePrice, isTender);
-    },
+    };
+    rationCalcBases['主材费(市场价)'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
+    };
+    rationCalcBases['人工工日'] = function (node, isTender) {
+        return calcTools.labourDays(node, isTender);
+    };
+    rationCalcBases['人工费价差'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptDiffPrice, isTender);
+    };
+    rationCalcBases['材料费价差'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptDiffPrice, isTender);
+    };
     rationCalcBases['计价材料价差'] = function (node, isTender) {
         let baseMaterialTypesWithoutOtherMaterial = [
             gljType.GENERAL_MATERIAL,
@@ -85,16 +99,16 @@ if (rationCalcBases){
             gljType.COMMERCIAL_MORTAR
         ];
         return calcTools.rationBaseFee(node, baseMaterialTypesWithoutOtherMaterial, priceTypes.ptDiffPrice, isTender);
-    },
+    };
     rationCalcBases['机上人工费价差'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
     };
-    rationCalcBases['主材费(市场价)'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
-    };
-    rationCalcBases['机械燃料动力费价差'] = function (node, isTender) {
+    rationCalcBases['燃料动力费价差'] = function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.FUEL_POWER_FEE], priceTypes.ptDiffPrice, isTender);
     };
+    rationCalcBases['定额其他施工机具使用费'] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
+    };
     rationCalcBases['机械折旧费'] = function (node, isTender) {
         return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
             gljType.DEPRECIATION_FEE, isTender);
@@ -115,63 +129,53 @@ if (rationCalcBases){
         return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], baseMachineMasterTypes,
             gljType.MAINTENANCE, isTender);
     };
-    rationCalcBases['机械安拆费及场外运输费'] = function (node, isTender) {
+    rationCalcBases['安拆费及场外运输费'] = function (node, isTender) {
         return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
             gljType.DISMANTLING_FREIGHT_FEE, isTender);
     };
-    rationCalcBases['机械燃料动力费'] = function (node, 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);
-    },
-    rationCalcBases['定额其他施工机具使用费'] = function (node, isTender) {
-        return calcTools.rationBaseFee(node, [gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
-    },
+    };
+    rationCalcBases['建筑面积'] = function (node, isTender) {
+        return calcTools.getProjectFeatureProperty('buildingArea');
+    };
+    rationCalcBases['甲供定额人工费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供定额人工费', isTender);
+    };
+    rationCalcBases['甲供定额材料费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供定额材料费', isTender);
+    };
     rationCalcBases['甲供定额施工机具费'] = function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGDESGJJF, isTender);
+        return calcTools.partASupplyFee(node, '甲供定额施工机具费', isTender);
     };
-    rationCalcBases['甲定定额施工机具费'] = function (node, isTender) {
-        return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDDESGJJF, isTender);
+    rationCalcBases['甲供主材费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供主材费', isTender);
     };
-    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 (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定定额人工费', isTender);
     };
-    rationCalcBases['建筑面积'] = function (node, isTender) {
-        return calcTools.getProjectFeatureProperty('buildingArea');
+    rationCalcBases['甲定定额材料费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定定额材料费', isTender);
     };
-};
-
-if (rationCalcBasesNameMap) {
-    let str = '基价';
-    for (let pn in rationCalcBasesNameMap){
-        if (rationCalcBasesNameMap[pn].includes(str))
-            rationCalcBasesNameMap[pn] = rationCalcBasesNameMap[pn].replace(new RegExp(str, "g"), '');
+    rationCalcBases['甲定定额施工机具费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定定额施工机具费', isTender);
     };
-
-    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 = '建筑面积';
+    rationCalcBases['甲定主材费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定主材费', isTender);
+    };
+    rationCalcBases['暂估材料费'] = function (node, isTender) {
+        return calcTools.estimateFee(node, true, isTender);
+    };
+    // 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;
+    // };
 };
 
 var cpFeeTypes2018 = [