Bläddra i källkod

2018定额新基数计算。

chenshilong 6 år sedan
förälder
incheckning
957d0add22

+ 18 - 1
public/web/common_util.js

@@ -56,4 +56,21 @@ function customRowHeader(sheet, dataLength) {
     for (let i = 0; i < dataLength; i++) {
         sheet.setValue(i, 0, `F${i + 1}`, GC.Spread.Sheets.SheetArea.rowHeader);
     }
-}
+};
+
+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){
+        if (object[name]) delete object[name];
+    };
+};

+ 47 - 33
web/building_saas/main/js/models/calc_program.js

@@ -836,10 +836,30 @@ let calcTools = {
             return projectObj.project.projectGLJ.getDataByID(glj.projectGLJID);
         }
         else return null;
+    },
+    labourDays(node, isTender){
+        if (!node.data.gljList) return 0;
+        let rst = 0;
+        calcTools.uiNodeQty(node);
+        for (let glj of node.data.gljList) {
+            if (glj.type == gljType.LABOUR) {
+                let gljQ;
+                if (isTender){
+                    calcTools.calcGLJTenderQty(node, glj);
+                    gljQ = glj.tenderQuantity;
+                }
+                else
+                    gljQ = glj.quantity;
+
+                rst = rst + (gljQ * calcTools.uiNodeQty(node)).toDecimal(decimalObj.process);
+                rst = rst.toDecimal(decimalObj.process);
+            }
+        };
+        return rst.toDecimal(decimalObj.glj.quantity);
     }
 };
 
-const calcBaseNames = {
+let calcBaseNames = {
     DEJJRGF: '定额基价人工费',
     DEJJCLF: '定额基价材料费',
     DEJJJXF: '定额基价机械费',
@@ -871,7 +891,7 @@ const calcBaseNames = {
     FBRGGR: '分包人工工日'
 };
 
-const rationCalcBases = {
+let rationCalcBases = {
     '定额基价人工费': function (node, isTender) {
         return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
     },
@@ -906,25 +926,7 @@ const rationCalcBases = {
         return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
     },
     '人工工日': function (node, isTender) {
-        if (!node.data.gljList) return 0;
-        let rst = 0;
-
-        calcTools.uiNodeQty(node)
-        for (let glj of node.data.gljList) {
-            if (glj.type == gljType.LABOUR) {
-                let gljQ;
-                if (isTender){
-                    calcTools.calcGLJTenderQty(node, glj);
-                    gljQ = glj.tenderQuantity;
-                }
-                else
-                    gljQ = glj.quantity;
-
-                rst = rst + (gljQ * calcTools.uiNodeQty(node)).toDecimal(decimalObj.process);
-                rst = rst.toDecimal(decimalObj.process);
-            }
-        };
-        return rst.toDecimal(decimalObj.glj.quantity);
+        return calcTools.labourDays(node, isTender);
     },
     '甲供定额基价人工费': function (node, isTender) {
         return calcTools.partASupplyFee(node, calcBaseNames.JGDEJJRGF, isTender);
@@ -960,28 +962,40 @@ const rationCalcBases = {
         return calcTools.estimateFee(node, true, isTender);
     },
     '分包定额基价人工费': function (node, isTender) {
-        if (node.data.isSubcontract) return this.定额基价人工费(node, isTender)
-        else return 0;
+        if (node.data.isSubcontract)
+            return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender)
+        else
+            return 0;
     },
     '分包定额基价材料费': function (node, isTender) {
-        if (node.data.isSubcontract) return this.定额基价材料费(node, isTender)
-        else return 0;
+        if (node.data.isSubcontract)
+            return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender)
+        else
+            return 0;
     },
     '分包定额基价机械费': function (node, isTender) {
-        if (node.data.isSubcontract) return this.定额基价机械费(node, isTender)
-        else return 0;
+        if (node.data.isSubcontract)
+            return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE], priceTypes.ptBasePrice, isTender)
+        else
+            return 0;
     },
     '分包主材费': function (node, isTender) {
-        if (node.data.isSubcontract) return this.主材费(node, isTender)
-        else return 0;
+        if (node.data.isSubcontract)
+            return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptBasePrice, isTender)
+        else
+            return 0;
     },
     '分包设备费': function (node, isTender) {
-        if (node.data.isSubcontract) return this.设备费(node, isTender)
-        else return 0;
+        if (node.data.isSubcontract)
+            return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender)
+        else
+            return 0;
     },
     '分包人工工日': function (node, isTender) {
-        if (node.data.isSubcontract) return this.人工工日(node, isTender)
-        else return 0;
+        if (node.data.isSubcontract)
+            return calcTools.labourDays(node, isTender)
+        else
+            return 0;
     }
 };
 

+ 76 - 1
web/over_write/js/chongqing_2018.js

@@ -43,4 +43,79 @@ if(typeof materialAllowComponent !== 'undefined'){
 if(typeof materialComponent !== 'undefined'){
     //可以作为材料工料机组成物的工料机类型:普通材料
     materialComponent = [201];
-}
+}
+
+// CSL, 2018-08-21 计算程序、基数 的覆盖。
+if (rationCalcBases){
+    changePropNames(rationCalcBases,
+        ['定额基价人工费', '定额基价材料费', '甲供定额基价人工费', '甲供定额基价材料费', '甲定定额基价人工费', '甲定定额基价材料费', '分包定额基价人工费','分包定额基价材料费'],
+        ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']);
+    deletePropNames(rationCalcBases, [
+        '定额基价机械费', '定额基价机上人工费', '机械费价差', '主材费价差', '设备费价差','甲供定额基价机械费','甲定定额基价机械费',
+        '设备费', '甲供设备费', '甲定设备费', '分包设备费', '分包定额基价机械费']);
+
+    rationCalcBases['定额其他材料费'] = function () {
+        return 0;
+    };
+    rationCalcBases['定额施工机具使用费'] = function () {
+        return 0;
+    };
+    rationCalcBases['人工费价差'] = function () {
+        return 0;
+    };
+    rationCalcBases['材料费价差'] = function () {
+        return 0;
+    };
+    rationCalcBases['计价材料价差'] = function () {
+        return 0;
+    };
+    rationCalcBases['机上人工费价差'] = function () {
+        return 0;
+    };
+    rationCalcBases['机械燃料动力费价差'] = function () {
+        return 0;
+    };
+    rationCalcBases['机械折旧费'] = function () {
+        return 0;
+    };
+    rationCalcBases['特大机械检修费'] = function () {
+        return 0;
+    };
+    rationCalcBases['中小机械检修费'] = function () {
+        return 0;
+    };
+    rationCalcBases['特大机械维护费'] = function () {
+        return 0;
+    };
+    rationCalcBases['中小机械维护费'] = function () {
+        return 0;
+    };
+    rationCalcBases['机械安拆费及场外运输费'] = function () {
+        return 0;
+    };
+    rationCalcBases['机械燃料动力费'] = function () {
+        return 0;
+    };
+    rationCalcBases['定额仪器仪表费'] = function () {
+        return 0;
+    };
+    rationCalcBases['定额其他施工机具使用费'] = function () {
+        return 0;
+    };
+    rationCalcBases['甲供定额施工机具费'] = function () {
+        return 0;
+    };
+    rationCalcBases['分包定额施工机具费'] = function () {
+        return 0;
+    };
+    rationCalcBases['甲定定额施工机具费'] = function () {
+        return 0;
+    };
+
+}
+else {
+    let s = '加载超前,覆盖失败!';
+    console.log(s);
+    alert(s);
+}
+