Chenshilong 7 anni fa
parent
commit
9f4122f6f3

+ 23 - 18
public/calc_util.js

@@ -1,16 +1,17 @@
 /**
  * Created by Tony on 2017/6/21.
  */
-let calcBaseCodeCollection = ["定额基价人工费", "定额基价材料费", "定额基价机械费"
+/*let calcBaseCodeCollection = ["定额基价人工费", "定额基价材料费", "定额基价机械费"
     , "定额基价人工费(调整后)", "定额基价材料费(调整后)", "定额基价机械费(调整后)"
     , "市场价格人工费", "市场价格材料费", "市场价格机械费"
     , "定额基价机上人工费", "主材费", "设备费"
 ];
+
 let dummyCalcBaseCodeTypeCollection = [[2], [6], [64]
     , [], [], []
     , [], [], []
     , [], [], []
-];
+];*/
 
 let executeObj = {
     currentTpl : null,
@@ -23,23 +24,24 @@ let executeObj = {
         rst = parseFloat(rst);
         return rst;
     },
-    base: function(calcBaseCode) {
+    base: function(calcBaseName) {
         let me = executeObj, rst = 0,
-            idx = calcBaseCodeCollection.indexOf(calcBaseCode);
-        if (idx >= 0) {
-            if (dummyCalcBaseCodeTypeCollection[idx].length > 0) {
-                let tmpSum = 0;
-                for (let glj of me.currentRationItem.data.gljList) {
-                    if (dummyCalcBaseCodeTypeCollection[idx].indexOf(glj["type"]) >= 0) {
-                        tmpSum += glj["basePrice"] * glj["quantity"];
-                    }
-                }
-                rst = tmpSum;
-            } else {
-                //rst = 10 + idx; //随便给个数
-            }
-        }
-        //rst = idx; //暂时返回值,测试用
+            base = getRationCalcBase(calcBaseName);
+
+        if (base != null) {
+            let price = 0, tmpSum = 0;
+            for (let glj of me.currentRationItem.data.gljList) {
+                if (base.gljTypes.indexOf(glj.type) >= 0) {
+                    if (base.calcType == baseCalc){ price = glj["basePrice"];}
+                    else if (base.calcType == adjustCalc){price = glj["adjustPrice"];}
+                    else if (base.calcType == budgetCalc){price = glj["marketPrice"];}
+                    else if (base.calcType == diffCalc){price = glj["marketPrice"] - glj["adjustPrice"];};
+                };
+                tmpSum = tmpSum + glj["quantity"] * price;
+                glj = null;
+            };
+            rst = tmpSum;
+        };
         return rst;
     },
     fee: function(feeID) {
@@ -184,6 +186,9 @@ class calculation {
                 let item = me.calcTpl.calcItems[idx];
                 item.unitFee = eval(item.compiledExpr);
                 item.totalFee = item.unitFee * 3;     // AAAAA 5为测试值 $RATION.data.Quantity
+                // 费用同步到定额
+                $RATION.feesIndex[item.type].unitFee = item.unitFee;
+                $RATION.feesIndex[item.type].totalFee = item.totalFee;
             }
         }
     }

+ 9 - 0
test/tmp_data/test_ration_calc/ration_calc_base.js

@@ -84,3 +84,12 @@ let rationCalcBase = [
         'gljTypes': [gljType.EQUIPMENT]
     }
 ];
+
+function getRationCalcBase(dispName){
+    let rst = null;
+    for (let base of rationCalcBase) {
+       if (base.dispName == dispName)
+          rst = base;
+    }
+    return rst;
+};

+ 26 - 4
web/building_saas/main/js/models/ration_calc.js

@@ -224,6 +224,7 @@ let calcTemplate = {
             ID: "1",
             code: "1",
             name: "基价直接工程费",
+            type: "rationBaseLabour",
             dispExpr: "F2+F5+F6+F10",
             expression: "@('2') + @('5') + @('6') + @('10')",
             compiledExpr: "",
@@ -233,6 +234,7 @@ let calcTemplate = {
             ID: "2",
             code: "1.1",
             name: "基价人工费",
+            type: "rationBaseLabour",
             dispExpr: "F3+F4",
             expression: "@('3') + @('4')",
             compiledExpr: "",
@@ -242,6 +244,7 @@ let calcTemplate = {
             ID: "3",
             code: "1.1.1",
             name: "定额基价人工费",
+            type: "rationBaseLabour",
             dispExpr: "[定额基价人工费]",
             expression: "base('定额基价人工费').toFixed(2)",
             compiledExpr: "",
@@ -250,7 +253,8 @@ let calcTemplate = {
         {
             ID: "4",
             code: "1.1.2",
-            name: "[定额人工单价(基价)调整]",
+            name: "定额人工单价(基价)调整",
+            type: "rationBaseLabour",
             dispExpr: "F3*(1.89-1)",
             expression: "@('3') * (1.89-1)",
             compiledExpr: "",
@@ -261,6 +265,7 @@ let calcTemplate = {
             ID: "5",
             code: "1.2",
             name: "基价材料费",
+            type: "rationBaseLabour",
             dispExpr: "[定额基价材料费]",
             expression: "base('定额基价材料费')",
             compiledExpr: "",
@@ -270,6 +275,7 @@ let calcTemplate = {
             ID: "6",
             code: "1.3",
             name: "基价机械费",
+            type: "rationBaseLabour",
             dispExpr: "F7+F9",
             expression: "@('7') + @('9')",
             compiledExpr: "",
@@ -279,6 +285,7 @@ let calcTemplate = {
             ID: "7",
             code: "1.3.1",
             name: "定额基价机械费",
+            type: "rationBaseLabour",
             dispExpr: "[定额基价机械费]",
             expression: "base('定额基价机械费')",
             compiledExpr: "",
@@ -288,6 +295,7 @@ let calcTemplate = {
             ID: "8",
             code: "1.3.1.1",
             name: "其中:定额基价机上人工费",
+            type: "rationBaseLabour",
             dispExpr: "[定额基价机上人工费]",
             expression: "base('定额基价机上人工费')",
             compiledExpr: "",
@@ -297,6 +305,7 @@ let calcTemplate = {
             ID: "9",
             code: "1.3.2",
             name: "定额机上人工单价(基价)调整",
+            type: "rationBaseLabour",
             dispExpr: "F8*(1.89-1)",
             expression: "@('8') * (1.89-1)",
             compiledExpr: "",
@@ -306,6 +315,7 @@ let calcTemplate = {
             ID: "10",
             code: "1.4",
             name: "未计价材料费",
+            type: "rationBaseLabour",
             dispExpr: "[主材费]+[设备费]",
             expression: "base('主材费') + base('设备费')",
             compiledExpr: "",
@@ -315,7 +325,9 @@ let calcTemplate = {
             ID: "11",
             code: "2",
             name: "企业管理费",
+            type: "rationBaseLabour",
             dispExpr: "F3",
+            feeRate: 8.21,
             expression: "@('3')*8.21 / 100",
             compiledExpr: "",
             statement: "定额基价人工费",
@@ -325,7 +337,9 @@ let calcTemplate = {
             ID: "12",
             code: "3",
             name: "利润",
+            type: "rationBaseLabour",
             dispExpr: "F3",
+            feeRate: 6.5,
             expression: "@('3')*6.5 / 100",
             compiledExpr: "",
             statement: "定额基价人工费"
@@ -334,7 +348,9 @@ let calcTemplate = {
             ID: "13",
             code: "4",
             name: "风险因素",
+            type: "rationBaseLabour",
             dispExpr: "F3",
+            feeRate: 3,
             expression: "@('3')*3 / 100",
             compiledExpr: "",
             statement: "定额基价人工费",
@@ -344,6 +360,7 @@ let calcTemplate = {
             ID: "14",
             code: "5",
             name: "人材机价差",
+            type: "rationBaseLabour",
             dispExpr: "F15+F16+F17",
             expression: "@('15') + @('16') + @('17')",
             compiledExpr: "",
@@ -353,7 +370,8 @@ let calcTemplate = {
             ID: "15",
             code: "5.1",
             name: "人工费价差",
-            dispExpr: "[市场价格人工费]-[调整后的定额人工费(基价)]",
+            type: "rationBaseLabour",
+            dispExpr: "[人工费价差]",
             expression: "base('市场价格人工费') - base('定额基价人工费(调整后)')",
             compiledExpr: "",
             statement: "市场价格人工费-调整后的定额人工费(基价)"
@@ -362,7 +380,8 @@ let calcTemplate = {
             ID: "16",
             code: "5.2",
             name: "材料费价差",
-            dispExpr: "[市场价格材料费]-[定额基价材料费]",
+            type: "rationBaseLabour",
+            dispExpr: "[材料费价差]",
             expression: "base('市场价格材料费') - base('定额基价材料费(调整后)')",
             compiledExpr: "",
             statement: "市场价格材料费-定额基价材料费"
@@ -371,7 +390,8 @@ let calcTemplate = {
             ID: "17",
             code: "5.3",
             name: "机械费价差",
-            dispExpr: "[市场价格机械费]-[调整后的定额基价机械费(基价)]",
+            type: "rationBaseLabour",
+            dispExpr: "[机械费价差]",
             expression: "base('市场价格机械费') - base('定额基价机械费(调整后)')",
             compiledExpr: "",
             statement: "市场价格机械费-调整后的定额基价机械费(基价)"
@@ -380,6 +400,7 @@ let calcTemplate = {
             ID: "18",
             code: "6",
             name: "综合单价",
+            type: "rationBaseLabour",
             dispExpr: "F1+F11+F12+F13+F14",
             expression: "@('1') + @('11') + @('12') + @('13') + @('14')",
             compiledExpr: "",
@@ -397,6 +418,7 @@ class RationCalc {
         let calc = new calculation();
         calc.init(calcTemplate, calcFeeRate);
         calc.compile();
+        calcFees.checkFields(ration, rationCalcFields);  // AAAAAAAAAA calcFeeRate
         ration.data.gljList = projectObj.project.ration_glj.getGljArrByRation(ration.data.ID);
         calc.calculate(ration);
     };

+ 5 - 63
web/building_saas/main/js/views/ration_calc_view.js

@@ -1,63 +1,6 @@
 /**
  * Created by CSL on 2017-07-17.
  */
-//for test AAAAAAAAAAAAA
-let calcRation = {
-    "sectionId" : 76,
-    "ID" : 15,
-    "code" : "AA0001",
-    "name" : "人工挖土方",
-    "unit" : "100m3",
-    "basePrice" : 840.84,
-    "caption" : "人工挖土方",
-    "feeType" : 2,
-    "rationGljList" : [
-        {
-            "glj" : {
-                "repositoryId" : 3,
-                "ID" : 17,
-                "code" : "00010201",
-                "name" : "土石方综合工日",
-                "specs" : null,
-                "unit" : "工日",
-                "basePrice" : 22,
-                "gljDistType" : "人工",
-                "gljType" : 2
-            },
-            "consumeAmt" : 38.22,
-            "proportion" : 0
-        },{
-            "glj": {
-                "repositoryId" : 3,
-                "ID" : 68,
-                "code" : "85030207",
-                "name" : "履带式起重机",
-                "specs" : "50t",
-                "unit" : "台班",
-                "basePrice" : 1194.05,
-                "gljDistType" : "机械",
-                "gljType" : 64
-            },
-            "consumeAmt" : 1.22,
-            "proportion" : 0
-        },{
-            "glj": {
-                "repositoryId" : 3,
-                "ID" : 200,
-                "code" : "36290101",
-                "name" : "水",
-                "specs" : "",
-                "unit" : "m3",
-                "basePrice" : 2,
-                "gljDistType" : "材料",
-                "gljType" : 6
-            },
-            "consumeAmt" : 9.2,
-            "proportion" : 0
-        }
-    ],
-    "rationRepId" : 3
-};
 
 let rationCalcView = {
     sheet: null,
@@ -67,8 +10,8 @@ let rationCalcView = {
         header: [
             {headerName: "费用代号", headerWidth: 75, dataCode: "code", dataType: "String", hAlign: "left"},
             {headerName: "费用名称", headerWidth: 200, dataCode: "name", dataType: "String"},
-            {headerName: "计算基数", headerWidth: 280, dataCode: "dispExpr", dataType: "String"},
-            {headerName: "基数说明", headerWidth: 220, dataCode: "statement", dataType: "String"},
+            {headerName: "计算基数", headerWidth: 200, dataCode: "dispExpr", dataType: "String"},
+            {headerName: "基数说明", headerWidth: 400, dataCode: "statement", dataType: "String"},
             {headerName: "费率", headerWidth: 80, dataCode: "feeRate", dataType: "Number"},   // precision: 3
             {headerName: "单价", headerWidth: 100, dataCode: "unitFee", dataType: "Number"},  // execRst
             {headerName: "合价", headerWidth: 100, dataCode: "totalFee", dataType: "Number"},
@@ -76,20 +19,19 @@ let rationCalcView = {
         ],
         view: {
             comboBox: [],
-            lockColumns: [0, 1, 2, 3, 5, 6, 7]
+            lockColumns: [0, 1, 2, 3, 4, 5, 6, 7]
         }
     },
 
     initSheet: function (sheet) {
         var me = this;
         me.sheet = sheet;
-        sheetCommonObj.initSheet(me.sheet, me.setting, 20);     // AAAAAAAA
+        sheetCommonObj.initSheet(me.sheet, me.setting, 20);
     },
 
     showData: function (ration) {
         var me = this;
-        me.ration = ration;  // AAAAAAA
-        //me.ration = calcRation;
+        me.ration = ration;
         let rationCalc = new RationCalc(projectObj.project);
         rationCalc.calculate(me.ration);