|
@@ -0,0 +1,441 @@
|
|
|
|
+/**
|
|
|
|
+ * Created by CSL on 2017/7/14.
|
|
|
|
+ */
|
|
|
|
+var test = require('tape');
|
|
|
|
+var rationCalc = require('../../public/calc_util');
|
|
|
|
+
|
|
|
|
+let dummyFee = [
|
|
|
|
+ {
|
|
|
|
+ "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 dummyCalcTpl = {
|
|
|
|
+ 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 dummyRation = {
|
|
|
|
+ "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
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//*
|
|
|
|
+test('计算式测试', function(t){
|
|
|
|
+ rationCalc.init(dummyCalcTpl, dummyFee);
|
|
|
|
+ rationCalc.compile();
|
|
|
|
+ rationCalc.calculate(dummyRation);
|
|
|
|
+ for (let idx of dummyCalcTpl.compiledSeq) {
|
|
|
|
+ let item = dummyCalcTpl.calcItems[idx];
|
|
|
|
+ console.log('code: ' + item.code + ' | expression: ' + item.compiledExpr + ' | result: ' + item.execRst);
|
|
|
|
+ }
|
|
|
|
+ t.pass('just pass for calculation initialization!');
|
|
|
|
+ t.end();
|
|
|
|
+})
|
|
|
|
+
|