Forráskód Böngészése

关联人工系数ID,取值同步。

Chenshilong 7 éve
szülő
commit
f2fa75917f
2 módosított fájl, 369 hozzáadás és 220 törlés
  1. 40 25
      public/calc_util.js
  2. 329 195
      web/building_saas/main/js/models/ration_program.js

+ 40 - 25
public/calc_util.js

@@ -32,23 +32,23 @@ let executeObj = {
             rst = tmpSum;
         };
         return rst;
-    },
-    factor: function(factorCode) {
+    }
+/*    factor: function(factorID) {
         let me = executeObj;
-        let rst = 0.89; //暂时固定输出,测试用
+        let rst = 7.77;
         return rst;
-    }
+    }*/
 };
 
 class Calculation {
-/*    init(calcTemplate, feeRates){
+/*    init(template, feeRates){
         let me = this;
-        me.calcTemplate = calcTemplate;
+        me.template = template;
         me.feeRates = feeRates;
         me.hasCompiled = false;
     };*/
 
-    compile(calcTemplate, feeRates){
+    compile(template, feeRates, labourCoes){
         let me = this;
         me.hasCompiled = false;
         me.errs = [];
@@ -96,25 +96,30 @@ class Calculation {
                 }
                 idx = item.expression.indexOf('@(', idx + ID.length + 3);
             }
-            if (calcTemplate.compiledSeq.indexOf(itemIdx) < 0) {
-                calcTemplate.compiledSeq.push(itemIdx);
+            if (template.compiledSeq.indexOf(itemIdx) < 0) {
+                template.compiledSeq.push(itemIdx);
             }
         };
         let private_setup_seq = function(item, itemIdx){
-            if (calcTemplate.compiledSeq.indexOf(itemIdx) < 0) {
+            if (template.compiledSeq.indexOf(itemIdx) < 0) {
                 private_parse_ref(item, itemIdx);
             }
         };
         let private_compile_items = function() {
-            for (let idx of calcTemplate.compiledSeq) {
-                let item = calcTemplate.calcItems[idx];
+            for (let idx of template.compiledSeq) {
+                let item = template.calcItems[idx];
                 item.compiledExpr = item.expression.split('@(').join('$CE.at(');
                 item.compiledExpr = item.compiledExpr.split('base(').join('$CE.base(');
                 //item.compiledExpr = item.compiledExpr.split('rate(').join('$CE.rate(');
-                item.compiledExpr = item.compiledExpr.split('factor(').join('$CE.factor(');
+                //item.compiledExpr = item.compiledExpr.split('factor(').join('$CE.factor(');
+                if (item.labourCoeID){
+                    let lc = me.compiledLabourCoes["LabourCoe_" + item.labourCoeID].coe;
+                    item.dispExpr = item.dispExpr.replace(/L/gi, lc.toString());
+                    item.compiledExpr = item.compiledExpr.replace(/L/gi, lc.toString());
+                }
             }
         };
-        let private_comile_feeFile = function() {
+        let private_compile_feeFile = function() {
             if (feeRates) {
                 me.compiledFeeRate = {};
                 for (let rate of feeRates) {
@@ -123,19 +128,29 @@ class Calculation {
             }
         };
 
-        if (calcTemplate && calcTemplate.calcItems && calcTemplate.calcItems.length > 0) {
-            calcTemplate.compiledSeq = [];
+        let private_compile_labourCoeFile = function() {
+            if (labourCoes) {
+                me.compiledLabourCoes = {};
+                for (let coe of labourCoes) {
+                    me.compiledLabourCoes["LabourCoe_" + coe.ID] = coe;
+                }
+            }
+        };
+
+        if (template && template.calcItems && template.calcItems.length > 0) {
+            template.compiledSeq = [];
             me.compileAssistantObj = {};
             //1. first round -> prepare
-            private_comile_feeFile();
-            for (let i = 0; i < calcTemplate.calcItems.length; i++) {
-                let item = calcTemplate.calcItems[i];
+            private_compile_feeFile();
+            private_compile_labourCoeFile();
+            for (let i = 0; i < template.calcItems.length; i++) {
+                let item = template.calcItems[i];
                 me.compileAssistantObj[item.ID] = item;
                 me.compileAssistantObj[item.ID + "_idx"] = i;
             }
             //2. second round -> go!
-            for (let i = 0; i < calcTemplate.calcItems.length; i++) {
-                private_setup_seq(calcTemplate.calcItems[i], i);
+            for (let i = 0; i < template.calcItems.length; i++) {
+                private_setup_seq(template.calcItems[i], i);
             }
             if (me.errs.length == 0) {
                 private_compile_items();
@@ -157,10 +172,10 @@ class Calculation {
                 $RATION.feesIndex = {};
             };
 
-            //let calcTemplate = getCalcTemplate($RATION.CalcTemplateID);   // AAAAAA 通过定额获取计算规则
-            let calcTemplate = calcTemplates[0];
-            for (let idx of calcTemplate.compiledSeq) {
-                let calcItem = calcTemplate.calcItems[idx];
+            //let template = getCalcTemplate($RATION.CalcTemplateID);   // AAAAAA 通过定额获取计算规则
+            let template = calcTemplates[0];
+            for (let idx of template.compiledSeq) {
+                let calcItem = template.calcItems[idx];
 
                 let feeRate = 100;    // 100%
                 // 下面三项用于界面显示。

+ 329 - 195
web/building_saas/main/js/models/ration_program.js

@@ -2,6 +2,207 @@
  * Created by CSL on 2017-07-19.
  */
 
+// dispExpr: F8*(L-1); expression: "@('8') * (L-1)";
+// 说明:F后跟行号,L替换人工系数值,@后跟ID。用到L的规则必须有labourCoeID属性(反过来不要求),
+// 用到费率的规则必须有feeRateID属性,当有该属性时,会自动显示费率值。
+let calcTemplates = [
+    {
+        ID: 1,
+        name: "重庆2015",
+        compiledSeq: [],
+        calcItems: [
+            {
+                ID: "1",
+                code: "1",
+                name: "基价直接工程费",
+                fieldName: "baseDirect",
+                dispExpr: "F2+F5+F6+F10",
+                expression: "@('2') + @('5') + @('6') + @('10')",
+                compiledExpr: "",
+                statement: "基价人工费+基价材料费+基价机械费+未计价材料费"
+            },
+            {
+                ID: "2",
+                code: "1.1",
+                name: "基价人工费",
+                fieldName: "baseLabour",
+                dispExpr: "F3+F4",
+                expression: "@('3') + @('4')",
+                compiledExpr: "",
+                statement: "定额基价人工费+定额人工单价(基价)调整"
+            },
+            {
+                ID: "3",
+                code: "1.1.1",
+                name: "定额基价人工费",
+                fieldName: "rationBaseLabour",
+                dispExpr: "[定额基价人工费]",
+                expression: "base('定额基价人工费').toFixed(2)",
+                compiledExpr: "",
+                statement: "定额基价人工费"
+            },
+            {
+                ID: "4",
+                code: "1.1.2",
+                name: "定额人工单价(基价)调整",
+                fieldName: "rationLabourFixed",
+                dispExpr: "F3*(L-1)",
+                expression: "@('3') * (L-1)",
+                labourCoeID: 2,
+                compiledExpr: "",
+                statement: "定额基价人工费*[定额人工单价(基价)调整系数-1]",
+                memo: "渝建发(2013)51"
+            },
+            {
+                ID: "5",
+                code: "1.2",
+                name: "基价材料费",
+                fieldName: "baseMaterial",
+                dispExpr: "[定额基价材料费]",
+                expression: "base('定额基价材料费')",
+                compiledExpr: "",
+                statement: "定额基价材料费"
+            },
+            {
+                ID: "6",
+                code: "1.3",
+                name: "基价机械费",
+                fieldName: "baseMachine",
+                dispExpr: "F7+F9",
+                expression: "@('7') + @('9')",
+                compiledExpr: "",
+                statement: "定额基价机械费+定额机上人工单价(基价)调整"
+            },
+            {
+                ID: "7",
+                code: "1.3.1",
+                name: "定额基价机械费",
+                fieldName: "rationBaseMachine",
+                dispExpr: "[定额基价机械费]",
+                expression: "base('定额基价机械费')",
+                compiledExpr: "",
+                statement: "定额基价机械费"
+            },
+            {
+                ID: "8",
+                code: "1.3.1.1",
+                name: "其中:定额基价机上人工费",
+                fieldName: "rationBaseMachineLabour",
+                dispExpr: "[定额基价机上人工费]",
+                expression: "base('定额基价机上人工费')",
+                compiledExpr: "",
+                statement: "定额基价机上人工费"
+            },
+            {
+                ID: "9",
+                code: "1.3.2",
+                name: "定额机上人工单价(基价)调整",
+                fieldName: "rationBaseMachineLabourFixed",
+                dispExpr: "F8*(L-1)",
+                expression: "@('8') * (L-1)",
+                labourCoeID: 11,
+                compiledExpr: "",
+                statement: "定额基价机上人工费*[定额机上人工单价(基价)调整系数-1]"
+            },
+            {
+                ID: "10",
+                code: "1.4",
+                name: "未计价材料费",
+                fieldName: "unPriceMaterial",
+                dispExpr: "[主材费]+[设备费]",
+                expression: "base('主材费') + base('设备费')",
+                compiledExpr: "",
+                statement: "主材费+设备费"
+            },
+            {
+                ID: "11",
+                code: "2",
+                name: "企业管理费",
+                fieldName: "manageFee",
+                dispExpr: "F3",
+                feeRateID: 3,
+                expression: "@('3')",
+                compiledExpr: "",
+                statement: "定额基价人工费",
+                memo: "渝建发[2014]27号"
+            },
+            {
+                ID: "12",
+                code: "3",
+                name: "利润",
+                fieldName: "profit",
+                dispExpr: "F3",
+                feeRateID: 4,
+                expression: "@('3')",
+                compiledExpr: "",
+                statement: "定额基价人工费"
+            },
+            {
+                ID: "13",
+                code: "4",
+                name: "风险因素",
+                fieldName: "risk",
+                dispExpr: "F3",
+                feeRateID: 5,
+                expression: "@('3')",
+                compiledExpr: "",
+                statement: "定额基价人工费",
+                memo: "同定额包干费"
+            },
+            {
+                ID: "14",
+                code: "5",
+                name: "人材机价差",
+                fieldName: "lmmDiff",
+                dispExpr: "F15+F16+F17",
+                expression: "@('15') + @('16') + @('17')",
+                compiledExpr: "",
+                statement: "人工费价差+材料费价差+机械费价差"
+            },
+            {
+                ID: "15",
+                code: "5.1",
+                name: "人工费价差",
+                fieldName: "labourDiff",
+                dispExpr: "[人工费价差]",
+                expression: "base('市场价格人工费') - base('定额基价人工费(调整后)')",
+                compiledExpr: "",
+                statement: "市场价格人工费-调整后的定额人工费(基价)"
+            },
+            {
+                ID: "16",
+                code: "5.2",
+                name: "材料费价差",
+                fieldName: "materialDiff",
+                dispExpr: "[材料费价差]",
+                expression: "base('市场价格材料费') - base('定额基价材料费(调整后)')",
+                compiledExpr: "",
+                statement: "市场价格材料费-定额基价材料费"
+            },
+            {
+                ID: "17",
+                code: "5.3",
+                name: "机械费价差",
+                fieldName: "machineDiff",
+                dispExpr: "[机械费价差]",
+                expression: "base('市场价格机械费') - base('定额基价机械费(调整后)')",
+                compiledExpr: "",
+                statement: "市场价格机械费-调整后的定额基价机械费(基价)"
+            },
+            {
+                ID: "18",
+                code: "6",
+                name: "综合单价",
+                fieldName: "common",
+                dispExpr: "F1+F11+F12+F13+F14",
+                expression: "@('1') + @('11') + @('12') + @('13') + @('14')",
+                compiledExpr: "",
+                statement: "基价直接工程费+企业管理费+利润+风险因素+人材机价差"
+            }
+        ]
+    }
+];
+
 let calcFeeRates = [
     {
         "ID" : 1,
@@ -215,199 +416,132 @@ let calcFeeRates = [
     }
 ];
 
-let calcTemplates = [
+let calcLabourCoes = [
     {
-        ID: 1,
-        name: "重庆2015",
-        compiledSeq: [],
-        calcItems: [
-            {
-                ID: "1",
-                code: "1",
-                name: "基价直接工程费",
-                fieldName: "baseDirect",
-                dispExpr: "F2+F5+F6+F10",
-                expression: "@('2') + @('5') + @('6') + @('10')",
-                compiledExpr: "",
-                statement: "基价人工费+基价材料费+基价机械费+未计价材料费"
-            },
-            {
-                ID: "2",
-                code: "1.1",
-                name: "基价人工费",
-                fieldName: "baseLabour",
-                dispExpr: "F3+F4",
-                expression: "@('3') + @('4')",
-                compiledExpr: "",
-                statement: "定额基价人工费+定额人工单价(基价)调整"
-            },
-            {
-                ID: "3",
-                code: "1.1.1",
-                name: "定额基价人工费",
-                fieldName: "rationBaseLabour",
-                dispExpr: "[定额基价人工费]",
-                expression: "base('定额基价人工费').toFixed(2)",
-                compiledExpr: "",
-                statement: "定额基价人工费"
-            },
-            {
-                ID: "4",
-                code: "1.1.2",
-                name: "定额人工单价(基价)调整",
-                fieldName: "rationLabourFixed",
-                dispExpr: "F3*(1.89-1)",
-                expression: "@('3') * (1.89-1)",
-                compiledExpr: "",
-                statement: "定额基价人工费*[定额人工单价(基价)调整系数-1]",
-                memo: "渝建发(2013)51"
-            },
-            {
-                ID: "5",
-                code: "1.2",
-                name: "基价材料费",
-                fieldName: "baseMaterial",
-                dispExpr: "[定额基价材料费]",
-                expression: "base('定额基价材料费')",
-                compiledExpr: "",
-                statement: "定额基价材料费"
-            },
-            {
-                ID: "6",
-                code: "1.3",
-                name: "基价机械费",
-                fieldName: "baseMachine",
-                dispExpr: "F7+F9",
-                expression: "@('7') + @('9')",
-                compiledExpr: "",
-                statement: "定额基价机械费+定额机上人工单价(基价)调整"
-            },
-            {
-                ID: "7",
-                code: "1.3.1",
-                name: "定额基价机械费",
-                fieldName: "rationBaseMachine",
-                dispExpr: "[定额基价机械费]",
-                expression: "base('定额基价机械费')",
-                compiledExpr: "",
-                statement: "定额基价机械费"
-            },
-            {
-                ID: "8",
-                code: "1.3.1.1",
-                name: "其中:定额基价机上人工费",
-                fieldName: "rationBaseMachineLabour",
-                dispExpr: "[定额基价机上人工费]",
-                expression: "base('定额基价机上人工费')",
-                compiledExpr: "",
-                statement: "定额基价机上人工费"
-            },
-            {
-                ID: "9",
-                code: "1.3.2",
-                name: "定额机上人工单价(基价)调整",
-                fieldName: "rationBaseMachineLabourFixed",
-                dispExpr: "F8*(1.89-1)",
-                expression: "@('8') * (1.89-1)",
-                compiledExpr: "",
-                statement: "定额基价机上人工费*[定额机上人工单价(基价)调整系数-1]"
-            },
-            {
-                ID: "10",
-                code: "1.4",
-                name: "未计价材料费",
-                fieldName: "unPriceMaterial",
-                dispExpr: "[主材费]+[设备费]",
-                expression: "base('主材费') + base('设备费')",
-                compiledExpr: "",
-                statement: "主材费+设备费"
-            },
-            {
-                ID: "11",
-                code: "2",
-                name: "企业管理费",
-                fieldName: "manageFee",
-                dispExpr: "F3",
-                feeRateID: 3,
-                expression: "@('3')",
-                compiledExpr: "",
-                statement: "定额基价人工费",
-                memo: "渝建发[2014]27号"
-            },
-            {
-                ID: "12",
-                code: "3",
-                name: "利润",
-                fieldName: "profit",
-                dispExpr: "F3",
-                feeRateID: 4,
-                expression: "@('3')",
-                compiledExpr: "",
-                statement: "定额基价人工费"
-            },
-            {
-                ID: "13",
-                code: "4",
-                name: "风险因素",
-                fieldName: "risk",
-                dispExpr: "F3",
-                feeRateID: 5,
-                expression: "@('3')",
-                compiledExpr: "",
-                statement: "定额基价人工费",
-                memo: "同定额包干费"
-            },
-            {
-                ID: "14",
-                code: "5",
-                name: "人材机价差",
-                fieldName: "lmmDiff",
-                dispExpr: "F15+F16+F17",
-                expression: "@('15') + @('16') + @('17')",
-                compiledExpr: "",
-                statement: "人工费价差+材料费价差+机械费价差"
-            },
-            {
-                ID: "15",
-                code: "5.1",
-                name: "人工费价差",
-                fieldName: "labourDiff",
-                dispExpr: "[人工费价差]",
-                expression: "base('市场价格人工费') - base('定额基价人工费(调整后)')",
-                compiledExpr: "",
-                statement: "市场价格人工费-调整后的定额人工费(基价)"
-            },
-            {
-                ID: "16",
-                code: "5.2",
-                name: "材料费价差",
-                fieldName: "materialDiff",
-                dispExpr: "[材料费价差]",
-                expression: "base('市场价格材料费') - base('定额基价材料费(调整后)')",
-                compiledExpr: "",
-                statement: "市场价格材料费-定额基价材料费"
-            },
-            {
-                ID: "17",
-                code: "5.3",
-                name: "机械费价差",
-                fieldName: "machineDiff",
-                dispExpr: "[机械费价差]",
-                expression: "base('市场价格机械费') - base('定额基价机械费(调整后)')",
-                compiledExpr: "",
-                statement: "市场价格机械费-调整后的定额基价机械费(基价)"
-            },
-            {
-                ID: "18",
-                code: "6",
-                name: "综合单价",
-                fieldName: "common",
-                dispExpr: "F1+F11+F12+F13+F14",
-                expression: "@('1') + @('11') + @('12') + @('13') + @('14')",
-                compiledExpr: "",
-                statement: "基价直接工程费+企业管理费+利润+风险因素+人材机价差"
-            }
-        ]
+        "ID" : 1,
+        "ParentID" : null,
+        "name" : "2006概算定额",
+        "coe" : null
+    },
+    {
+        "ID" : 2,
+        "ParentID" : 1,
+        "name" : "土石方人工",
+        "coe" : 2.94
+    },
+    {
+        "ID" : 3,
+        "ParentID" : 1,
+        "name" : "建筑、市政、维修人工",
+        "coe" : 2.84
+    },
+    {
+        "ID" : 4,
+        "ParentID" : 1,
+        "name" : "装饰人工",
+        "coe" : 1
+    },
+    {
+        "ID" : 5,
+        "ParentID" : 1,
+        "name" : "安装、机械人工",
+        "coe" :2.58
+    },
+    {
+        "ID" : 6,
+        "ParentID" : 1,
+        "name" : "仿古、园林绿化人工",
+        "coe" :1
+    },
+    {
+        "ID" : 7,
+        "ParentID" : 1,
+        "name" : "盾构用工",
+        "coe" :1
+    },
+    {
+        "ID" : 8,
+        "ParentID" : null,
+        "name" : "2008计价定额",
+        "coe" :null
+    },
+    {
+        "ID" : 9,
+        "ParentID" : 8,
+        "name" : "土石方人工",
+        "coe" : 2.41
+    },
+    {
+        "ID" : 10,
+        "ParentID" : 8,
+        "name" : "建筑、市政、维修人工",
+        "coe" : 2.48
+    },
+    {
+        "ID" : 11,
+        "ParentID" : 8,
+        "name" : "装饰人工",
+        "coe" : 3.04
+    },
+    {
+        "ID" : 12,
+        "ParentID" : 8,
+        "name" : "安装、机械人工",
+        "coe" :2.39
+    },
+    {
+        "ID" : 13,
+        "ParentID" : 8,
+        "name" : "仿古、园林绿化人工",
+        "coe" :2.39
+    },
+    {
+        "ID" : 14,
+        "ParentID" : 8,
+        "name" : "盾构用工",
+        "coe" :1
+    },
+    {
+        "ID" : 15,
+        "ParentID" : null,
+        "name" : "2011轨道定额",
+        "coe" :null
+    },
+    {
+        "ID" : 16,
+        "ParentID" : 15,
+        "name" : "土石方人工",
+        "coe" : 1.51
+    },
+    {
+        "ID" : 17,
+        "ParentID" : 15,
+        "name" : "建筑、市政、维修人工",
+        "coe" : 1.55
+    },
+    {
+        "ID" : 18,
+        "ParentID" : 15,
+        "name" : "装饰人工",
+        "coe" : 1
+    },
+    {
+        "ID" : 19,
+        "ParentID" : 15,
+        "name" : "安装、机械人工",
+        "coe" :1.49
+    },
+    {
+        "ID" : 20,
+        "ParentID" : 15,
+        "name" : "仿古、园林绿化人工",
+        "coe" :1
+    },
+    {
+        "ID" : 21,
+        "ParentID" : 15,
+        "name" : "盾构用工",
+        "coe" :1.49
     }
 ];
 
@@ -418,13 +552,13 @@ class RationProgram {
     };
 
     compileAllTemps(){
-       for (let ct of calcTemplates){
-           this.calc.compile(ct, calcFeeRates);
+       for (let calcTemplate of calcTemplates){
+           this.calc.compile(calcTemplate, calcFeeRates, calcLabourCoes);
        };
     };
 
     compile(calcTemplate){
-       this.calc.compile(calcTemplate, calcFeeRates);
+       this.calc.compile(calcTemplate, calcFeeRates, calcLabourCoes);
     };
 
     calculate(ration){