소스 검색

计算程序。

Chenshilong 8 년 전
부모
커밋
aa391b0af2

+ 4 - 4
test/calculation/test_ration_calc.js

@@ -2,7 +2,7 @@
  * Created by CSL on 2017/7/14.
  */
 var test = require('tape');
-var rationCalc = require('../../public/calc_util');
+var calcUtil = require('../../public/calc_util');
 
 let dummyFee = [
     {
@@ -428,9 +428,9 @@ let dummyRation = {
 
 //*
 test('计算式测试', function(t){
-    rationCalc.init(dummyCalcTpl, dummyFee);
-    rationCalc.compile();
-    rationCalc.calculate(dummyRation);
+    calcUtil.init(dummyCalcTpl, dummyFee);
+    calcUtil.compile();
+    calcUtil.calculate(dummyRation);
     for (let idx of dummyCalcTpl.compiledSeq) {
         let item = dummyCalcTpl.calcItems[idx];
         console.log('code: ' + item.code + ' | expression: ' + item.compiledExpr +  ' | result: ' + item.execRst);

+ 1 - 0
web/building_saas/main/html/main.html

@@ -491,6 +491,7 @@
     <script type="text/javascript" src="/public/web/id_tree.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/models/cache_tree.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/models/bills_calc.js"></script>
+    <script type="text/javascript" src="/web/building_saas/main/js/models/ration_calc.js"></script>
     <!-- Controller -->
     <script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_controller.js"></script>
     <script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_helper.js"></script>

+ 435 - 0
web/building_saas/main/js/models/ration_calc.js

@@ -0,0 +1,435 @@
+/**
+ * Created by CSL on 2017-07-19.
+ */
+
+let calcFeeRate = [
+    {
+        "ID" : 1,
+        "ParentID" : null,
+        "name" : "企业管理费",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 2,
+        "ParentID" : 1,
+        "name" : "建筑工程",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 3,
+        "ParentID" : 2,
+        "name" : "一类工程",
+        "rate" : 16.03,
+        "memo" : null
+    },
+    {
+        "ID" : 4,
+        "ParentID" : 2,
+        "name" : "二类工程",
+        "rate" : 14.95,
+        "memo" : null
+    },
+    {
+        "ID" : 5,
+        "ParentID" : 2,
+        "name" : "三类工程",
+        "rate" : 12.47,
+        "memo" : null
+    },
+    {
+        "ID" : 6,
+        "ParentID" : 2,
+        "name" : "四类工程",
+        "rate" : 9.3,
+        "memo" : null
+    },
+    {
+        "ID" : 7,
+        "ParentID" : 1,
+        "name" : "市政工程",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 8,
+        "ParentID" : 7,
+        "name" : "一类工程",
+        "rate" : 16.33,
+        "memo" : null
+    },
+    {
+        "ID" : 9,
+        "ParentID" : 7,
+        "name" : "二类工程",
+        "rate" : 15,
+        "memo" : null
+    },
+    {
+        "ID" : 10,
+        "ParentID" : 7,
+        "name" : "三类工程",
+        "rate" : 12.5,
+        "memo" : null
+    },
+    {
+        "ID" : 11,
+        "ParentID" : 7,
+        "name" : "四类工程",
+        "rate" : 9.5,
+        "memo" : null
+    },
+    {
+        "ID" : 12,
+        "ParentID" : 1,
+        "name" : "机械土石方",
+        "rate" : 15.5,
+        "memo" : null
+    },
+    {
+        "ID" : 13,
+        "ParentID" : 1,
+        "name" : "仿古建筑工程",
+        "rate" : 12,
+        "memo" : null
+    },
+    {
+        "ID" : 14,
+        "ParentID" : 1,
+        "name" : "建筑修缮工程",
+        "rate" : 12.47,
+        "memo" : null
+    },
+    {
+        "ID" : 15,
+        "ParentID" : 1,
+        "name" : "炉窑砌筑工程",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 16,
+        "ParentID" : 15,
+        "name" : "一类工程",
+        "rate" : 14.25,
+        "memo" : null
+    },
+    {
+        "ID" : 17,
+        "ParentID" : 15,
+        "name" : "二类工程",
+        "rate" : 12.47,
+        "memo" : null
+    },
+    {
+        "ID" : 18,
+        "ParentID" : 15,
+        "name" : "三类工程",
+        "rate" : 10.8,
+        "memo" : null
+    },
+    {
+        "ID" : 19,
+        "ParentID" : 15,
+        "name" : "四类工程",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 20,
+        "ParentID" : null,
+        "name" : "规费",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 21,
+        "ParentID" : 20,
+        "name" : "建筑工程",
+        "rate" : 4.87,
+        "memo" : null
+    },
+    {
+        "ID" : 22,
+        "ParentID" : 20,
+        "name" : "市政工程",
+        "rate" : 3.61,
+        "memo" : null
+    },
+    {
+        "ID" : 23,
+        "ParentID" : 20,
+        "name" : "机械土石方",
+        "rate" : 2.15,
+        "memo" : null
+    },
+    {
+        "ID" : 24,
+        "ParentID" : 20,
+        "name" : "仿古建筑工程",
+        "rate" : 2.84,
+        "memo" : null
+    },
+    {
+        "ID" : 25,
+        "ParentID" : 20,
+        "name" : "建筑修缮工程",
+        "rate" : 2.84,
+        "memo" : null
+    },
+    {
+        "ID" : 26,
+        "ParentID" : 20,
+        "name" : "炉窑砌筑工程",
+        "rate" : 3.61,
+        "memo" : null
+    },
+    {
+        "ID" : 27,
+        "ParentID" : null,
+        "name" : "利润",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 28,
+        "ParentID" : 27,
+        "name" : "建筑工程",
+        "rate" : null,
+        "memo" : null
+    },
+    {
+        "ID" : 29,
+        "ParentID" : 28,
+        "name" : "一类工程",
+        "rate" : 8.73,
+        "memo" : null
+    },
+    {
+        "ID" : 30,
+        "ParentID" : 28,
+        "name" : "二类工程",
+        "rate" : 6.94,
+        "memo" : null
+    }
+];
+
+let calcTemplate = {
+    calType: 3,
+    calTypeName: "测试用_重庆",
+    compiledSeq: [],
+    calcItems: [
+        {
+            code: "1",
+            name: "基价直接工程费",
+            dispExpr: "A2+A5+A6+A10",
+            expression: "A('2') + A('5') + A('6') + A('10')",
+            compiledExpr: "",
+            statement: "基价人工费+基价材料费+基价机械费+未计价材料费"
+        },
+        {
+            code: "2",
+            name: "基价人工费",
+            dispExpr: "A3+A4",
+            expression: "A('3') + A('4')",
+            compiledExpr: "",
+            statement: "定额基价人工费+定额人工单价(基价)调整"
+        },
+        {
+            code: "3",
+            name: "定额基价人工费",
+            dispExpr: "定额基价人工费",
+            expression: "base('定额基价人工费').toFixed(2)",
+            compiledExpr: "",
+            statement: "定额基价人工费"
+        },
+        {
+            code: "4",
+            name: "定额人工单价(基价)调整",
+            dispExpr: "A3*[1.89-1]",
+            expression: "A('3') * (1.89-1)",
+            compiledExpr: "",
+            statement: "定额基价人工费*[定额人工单价(基价)调整系数-1]"
+        },
+        {
+            code: "5",
+            name: "基价材料费",
+            dispExpr: "定额基价材料费",
+            expression: "base('定额基价材料费')",
+            compiledExpr: "",
+            statement: "定额基价材料费"
+        },
+        {
+            code: "6",
+            name: "基价机械费",
+            dispExpr: "A7+A9",
+            expression: "A('7') + A('9')",
+            compiledExpr: "",
+            statement: "定额基价机械费+定额机上人工单价(基价)调整"
+        },
+        {
+            code: "7",
+            name: "定额基价机械费",
+            dispExpr: "定额基价机械费",
+            expression: "base('定额基价机械费')",
+            compiledExpr: "",
+            statement: "定额基价机械费"
+        },
+        {
+            code: "8",
+            name: "其中:定额基价机上人工费",
+            dispExpr: "定额基价机上人工费",
+            expression: "base('定额基价机上人工费')",
+            compiledExpr: "",
+            statement: "定额基价机上人工费"
+        },
+        {
+            code: "9",
+            name: "定额机上人工单价(基价)调整",
+            dispExpr: "A8*[1.89-1]",
+            expression: "A('8') * (1.89-1)",
+            compiledExpr: "",
+            statement: "定额基价机上人工费*[定额机上人工单价(基价)调整系数-1]"
+        },
+        {
+            code: "10",
+            name: "未计价材料费",
+            dispExpr: "主材费+设备费",
+            expression: "base('主材费') + base('设备费')",
+            compiledExpr: "",
+            statement: "主材费+设备费"
+        },
+        {
+            code: "11",
+            name: "企业管理费",
+            dispExpr: "A3",
+            expression: "A('3')",
+            compiledExpr: "",
+            statement: "定额基价人工费"
+        },
+        {
+            code: "12",
+            name: "利润",
+            dispExpr: "A3",
+            expression: "A('3')",
+            compiledExpr: "",
+            statement: "定额基价人工费"
+        },
+        {
+            code: "13",
+            name: "风险因素",
+            dispExpr: "",
+            expression: "A('3')",
+            compiledExpr: "",
+            statement: "定额基价人工费"
+        },
+        {
+            code: "14",
+            name: "人材机价差",
+            dispExpr: "A15+A16+A17",
+            expression: "A('15') + A('16') + A('17')",
+            compiledExpr: "",
+            statement: "人工费价差+材料费价差+机械费价差"
+        },
+        {
+            code: "15",
+            name: "人工费价差",
+            dispExpr: "信息价或市场价格-调整后的定额人工费(基价)",
+            expression: "base('市场价格人工费') - base('定额基价人工费(调整后)')",
+            compiledExpr: "",
+            statement: "市场价格人工费-调整后的定额人工费(基价)"
+        },
+        {
+            code: "16",
+            name: "材料费价差",
+            dispExpr: "信息价或市场价格-定额基价材料费",
+            expression: "base('市场价格材料费') - base('定额基价材料费(调整后)')",
+            compiledExpr: "",
+            statement: "市场价格材料费-定额基价材料费"
+        },
+        {
+            code: "17",
+            name: "机械费价差",
+            dispExpr: "信息价或市场价格-调整后的定额基价机械费(基价)",
+            expression: "base('市场价格机械费') - base('定额基价机械费(调整后)')",
+            compiledExpr: "",
+            statement: "市场价格机械费-调整后的定额基价机械费(基价)"
+        },
+        {
+            code: "18",
+            name: "综合单价",
+            dispExpr: "A1+A11+A12+A13+A14",
+            expression: "A('1') + A('11') + A('12') + A('13') + A('14')",
+            compiledExpr: "",
+            statement: "基价直接工程费+企业管理费+利润+风险因素+人材机价差"
+        }
+    ]
+};
+
+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 rationCalcObj = {};
+
+calcUtil.init(dummyCalcTpl, dummyFee);
+calcUtil.compile();
+calcUtil.calculate(dummyRation);
+for (let idx of dummyCalcTpl.compiledSeq) {
+    let item = dummyCalcTpl.calcItems[idx];
+    console.log('code: ' + item.code + ' | expression: ' + item.compiledExpr +  ' | result: ' + item.execRst);
+};

+ 3 - 0
web/building_saas/main/js/views/project_view.js

@@ -51,6 +51,9 @@ var projectObj = {
 
                 that.mainController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, function (node) {
                     gljOprObj.showDataIfRationSelect(node);
+                    if(node.sourceType=="ration"){
+                        rationCalcView.showData(node);
+                    }
                 });
 
                 that.loadMainSpreadContextMenu();

+ 25 - 16
web/building_saas/main/js/views/ration_calc_view.js

@@ -2,30 +2,39 @@
  * Created by CSL on 2017-07-17.
  */
 
-var rationCalcOpr = {
+let rationCalcView = {
     sheet: null,
     libID: null,
     ration: null,
+    datas: [],
     setting: {
-        header:[
-            {headerName:"费用代号",headerWidth:80, dataCode:"code", dataType: "String", hAlign: "center"},
-            {headerName:"费用名称",headerWidth:180, dataCode:"name", dataType: "String"},
-            {headerName:"计算基数",headerWidth:180, dataCode:"dispExpr", dataType: "String"},
-            {headerName:"基数说明",headerWidth:180, dataCode:"dispExprMemo", dataType: "String"},
-            {headerName:"费率",headerWidth:80, dataCode:"feeRate", dataType: "Number"},   // precision: 3
-            {headerName:"单价",headerWidth:100, dataCode:"unitFee", dataType: "Number"},
-            {headerName:"合价",headerWidth:100,dataCode:"totalFee", dataType: "Number"},
-            {headerName:"备注",headerWidth:120, dataCode:"memo", dataType: "String"}
+        header: [
+            {headerName: "费用代号", headerWidth: 75, dataCode: "code", dataType: "String", formatter: "A"+"0", hAlign: "center"},
+            {headerName: "费用名称", headerWidth: 200, dataCode: "name", dataType: "String"},
+            {headerName: "计算基数", headerWidth: 180, dataCode: "dispExpr", dataType: "String"},
+            {headerName: "基数说明", headerWidth: 220, dataCode: "statement", dataType: "String"},
+            {headerName: "费率", headerWidth: 80, dataCode: "feeRate", dataType: "Number"},   // precision: 3
+            {headerName: "单价", headerWidth: 100, dataCode: "unitFee", dataType: "Number"},
+            {headerName: "合价", headerWidth: 100, dataCode: "totalFee", dataType: "Number"},
+            {headerName: "备注", headerWidth: 120, dataCode: "memo", dataType: "String"}
         ],
-        view:{
-            comboBox:[],
-            lockColumns:[1,2,3,4,5,6,7,8]
+        view: {
+            comboBox: [],
+            lockColumns: [0, 1, 2, 3, 5, 6, 7]
         }
     },
 
-    initSheet: function(sheet) {
+    initSheet: function (sheet) {
         var me = this;
         me.sheet = sheet;
-        sheetCommonObj.initSheet(me.sheet, me.setting, 20);
+        sheetCommonObj.initSheet(me.sheet, me.setting, 20);     // AAAAAAAAAAAA
+    },
+
+    showData: function (ration) {
+        var me = this;
+        me.ration = ration;  // AAAAAAA
+        me.datas = calcTemplate.calcItems;   // AAAAAAAAA
+        sheetCommonObj.showData(me.sheet, me.setting, me.datas);
     }
-}
+
+}

+ 2 - 2
web/building_saas/main/js/views/sub_view.js

@@ -46,8 +46,8 @@ $("#linkGCLMX").click(function(){
 
 $("#linkJSCX").click(function(){
     subSpread.setActiveSheetIndex(4);
-    rationCalcOpr.initSheet(subSpread.getSheet(4));
-    subSpread.getActiveSheet().setValue(0, 0, "计算程序");
+    rationCalcView.initSheet(subSpread.getSheet(4));
+    rationCalcView.showData();
 });
 
 $("#linkFXSM").click(function(){