testCalc.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. /**
  2. * Created by Tony on 2017/6/21.
  3. */
  4. var test = require('tape');
  5. var calcUtil = require('../../public/calc_util');
  6. let dummyFee = [
  7. {
  8. "ID" : 1,
  9. "ParentID" : null,
  10. "name" : "企业管理费",
  11. "rate" : null,
  12. "memo" : null
  13. },
  14. {
  15. "ID" : 2,
  16. "ParentID" : 1,
  17. "name" : "建筑工程",
  18. "rate" : null,
  19. "memo" : null
  20. },
  21. {
  22. "ID" : 3,
  23. "ParentID" : 2,
  24. "name" : "一类工程",
  25. "rate" : 16.03,
  26. "memo" : null
  27. },
  28. {
  29. "ID" : 4,
  30. "ParentID" : 2,
  31. "name" : "二类工程",
  32. "rate" : 14.95,
  33. "memo" : null
  34. },
  35. {
  36. "ID" : 5,
  37. "ParentID" : 2,
  38. "name" : "三类工程",
  39. "rate" : 12.47,
  40. "memo" : null
  41. },
  42. {
  43. "ID" : 6,
  44. "ParentID" : 2,
  45. "name" : "四类工程",
  46. "rate" : 9.3,
  47. "memo" : null
  48. },
  49. {
  50. "ID" : 7,
  51. "ParentID" : 1,
  52. "name" : "市政工程",
  53. "rate" : null,
  54. "memo" : null
  55. },
  56. {
  57. "ID" : 8,
  58. "ParentID" : 7,
  59. "name" : "一类工程",
  60. "rate" : 16.33,
  61. "memo" : null
  62. },
  63. {
  64. "ID" : 9,
  65. "ParentID" : 7,
  66. "name" : "二类工程",
  67. "rate" : 15,
  68. "memo" : null
  69. },
  70. {
  71. "ID" : 10,
  72. "ParentID" : 7,
  73. "name" : "三类工程",
  74. "rate" : 12.5,
  75. "memo" : null
  76. },
  77. {
  78. "ID" : 11,
  79. "ParentID" : 7,
  80. "name" : "四类工程",
  81. "rate" : 9.5,
  82. "memo" : null
  83. },
  84. {
  85. "ID" : 12,
  86. "ParentID" : 1,
  87. "name" : "机械土石方",
  88. "rate" : 15.5,
  89. "memo" : null
  90. },
  91. {
  92. "ID" : 13,
  93. "ParentID" : 1,
  94. "name" : "仿古建筑工程",
  95. "rate" : 12,
  96. "memo" : null
  97. },
  98. {
  99. "ID" : 14,
  100. "ParentID" : 1,
  101. "name" : "建筑修缮工程",
  102. "rate" : 12.47,
  103. "memo" : null
  104. },
  105. {
  106. "ID" : 15,
  107. "ParentID" : 1,
  108. "name" : "炉窑砌筑工程",
  109. "rate" : null,
  110. "memo" : null
  111. },
  112. {
  113. "ID" : 16,
  114. "ParentID" : 15,
  115. "name" : "一类工程",
  116. "rate" : 14.25,
  117. "memo" : null
  118. },
  119. {
  120. "ID" : 17,
  121. "ParentID" : 15,
  122. "name" : "二类工程",
  123. "rate" : 12.47,
  124. "memo" : null
  125. },
  126. {
  127. "ID" : 18,
  128. "ParentID" : 15,
  129. "name" : "三类工程",
  130. "rate" : 10.8,
  131. "memo" : null
  132. },
  133. {
  134. "ID" : 19,
  135. "ParentID" : 15,
  136. "name" : "四类工程",
  137. "rate" : null,
  138. "memo" : null
  139. },
  140. {
  141. "ID" : 20,
  142. "ParentID" : null,
  143. "name" : "规费",
  144. "rate" : null,
  145. "memo" : null
  146. },
  147. {
  148. "ID" : 21,
  149. "ParentID" : 20,
  150. "name" : "建筑工程",
  151. "rate" : 4.87,
  152. "memo" : null
  153. },
  154. {
  155. "ID" : 22,
  156. "ParentID" : 20,
  157. "name" : "市政工程",
  158. "rate" : 3.61,
  159. "memo" : null
  160. },
  161. {
  162. "ID" : 23,
  163. "ParentID" : 20,
  164. "name" : "机械土石方",
  165. "rate" : 2.15,
  166. "memo" : null
  167. },
  168. {
  169. "ID" : 24,
  170. "ParentID" : 20,
  171. "name" : "仿古建筑工程",
  172. "rate" : 2.84,
  173. "memo" : null
  174. },
  175. {
  176. "ID" : 25,
  177. "ParentID" : 20,
  178. "name" : "建筑修缮工程",
  179. "rate" : 2.84,
  180. "memo" : null
  181. },
  182. {
  183. "ID" : 26,
  184. "ParentID" : 20,
  185. "name" : "炉窑砌筑工程",
  186. "rate" : 3.61,
  187. "memo" : null
  188. },
  189. {
  190. "ID" : 27,
  191. "ParentID" : null,
  192. "name" : "利润",
  193. "rate" : null,
  194. "memo" : null
  195. },
  196. {
  197. "ID" : 28,
  198. "ParentID" : 27,
  199. "name" : "建筑工程",
  200. "rate" : null,
  201. "memo" : null
  202. },
  203. {
  204. "ID" : 29,
  205. "ParentID" : 28,
  206. "name" : "一类工程",
  207. "rate" : 8.73,
  208. "memo" : null
  209. },
  210. {
  211. "ID" : 30,
  212. "ParentID" : 28,
  213. "name" : "二类工程",
  214. "rate" : 6.94,
  215. "memo" : null
  216. }
  217. ]
  218. let dummyCalcTpl = {
  219. calType: 3,
  220. calTypeName: "测试用_重庆",
  221. compiledSeq: [],
  222. intermediateRst: [],
  223. calcItems: [{
  224. code: "1",
  225. name: "基价直接工程费",
  226. dispExpr: "1.1+1.2+1.3+1.4",
  227. expression: "@('1.1') + @('1.2') + @('1.3') + @('1.4')",
  228. compiledExpr: "",
  229. statement: "基价人工费+基价材料费+基价机械费+未计价材料费"
  230. },{
  231. code: "1.1",
  232. name: "基价人工费",
  233. dispExpr: "1.1.1+1.1.2",
  234. expression: "@('1.1.1') + @('1.1.2')",
  235. compiledExpr: "",
  236. statement: "定额基价人工费+定额人工单价(基价)调整"
  237. },{
  238. code: "1.1.1",
  239. name: "定额基价人工费",
  240. dispExpr: "定额基价人工费",
  241. expression: "base('定额基价人工费')",
  242. compiledExpr: "",
  243. statement: "定额基价人工费"
  244. },{
  245. code: "1.1.2",
  246. name: "定额人工单价(基价)调整",
  247. dispExpr: "1.1.1*[1.89-1]",
  248. expression: "@('1.1.1') * fee('1')",
  249. compiledExpr: "",
  250. statement: "定额基价人工费*[定额人工单价(基价)调整系数-1]"
  251. },{
  252. code: "1.2",
  253. name: "基价材料费",
  254. dispExpr: "定额基价材料费",
  255. expression: "base('定额基价材料费')",
  256. compiledExpr: "",
  257. statement: "定额基价材料费"
  258. },{
  259. code: "1.3",
  260. name: "基价机械费",
  261. dispExpr: "1.3.1+1.3.2",
  262. expression: "@('1.3.1') + @('1.3.2')",
  263. compiledExpr: "",
  264. statement: "定额基价机械费+定额机上人工单价(基价)调整"
  265. },{
  266. code: "1.3.1",
  267. name: "定额基价机械费",
  268. dispExpr: "定额基价机械费",
  269. expression: "base('定额基价机械费')",
  270. compiledExpr: "",
  271. statement: "定额基价机械费"
  272. },{
  273. code: "1.3.1.1",
  274. name: "其中:定额基价机上人工费",
  275. dispExpr: "定额基价机上人工费",
  276. expression: "base('定额基价机上人工费')",
  277. compiledExpr: "",
  278. statement: "定额基价机上人工费"
  279. },{
  280. code: "1.3.2",
  281. name: "定额人工单价(基价)调整",
  282. dispExpr: "1.3.1.1*[1.89-1]",
  283. expression: "@('1.3.1.1') * fee('1')",
  284. compiledExpr: "",
  285. statement: "定额基价人工费*[定额人工单价(基价)调整系数-1]"
  286. },{
  287. code: "1.4",
  288. name: "未计价材料费",
  289. dispExpr: "主材费+设备费",
  290. expression: "base('主材费') + base('设备费')",
  291. compiledExpr: "",
  292. statement: "主材费+设备费"
  293. },{
  294. code: "2",
  295. name: "企业管理费",
  296. dispExpr: "1.1.1",
  297. expression: "@('1.1.1')",
  298. compiledExpr: "",
  299. statement: "定额基价人工费"
  300. },{
  301. code: "3",
  302. name: "利润",
  303. dispExpr: "1.1.1",
  304. expression: "@('1.1.1')",
  305. compiledExpr: "",
  306. statement: "定额基价人工费"
  307. },{
  308. code: "4",
  309. name: "风险因素",
  310. dispExpr: "",
  311. expression: "0",
  312. compiledExpr: "",
  313. statement: ""
  314. },{
  315. code: "5",
  316. name: "人材机价差",
  317. dispExpr: "5.1+5.2+5.3",
  318. expression: "@('5.1') + @('5.2') + @('5.3')",
  319. compiledExpr: "",
  320. statement: "人工费价差+材料费价差+机械费价差"
  321. },{
  322. code: "5.1",
  323. name: "人工费价差",
  324. dispExpr: "信息价或市场价格-调整后的定额人工费(基价)",
  325. expression: "base('市场价格人工费') - base('定额基价人工费(调整后)')",
  326. compiledExpr: "",
  327. statement: "市场价格人工费-调整后的定额人工费(基价)"
  328. },{
  329. code: "5.2",
  330. name: "材料费价差",
  331. dispExpr: "信息价或市场价格-定额基价材料费",
  332. expression: "base('市场价格材料费') - base('定额基价材料费(调整后)')",
  333. compiledExpr: "",
  334. statement: "市场价格材料费-定额基价材料费"
  335. },{
  336. code: "5.3",
  337. name: "机械费价差",
  338. dispExpr: "信息价或市场价格-调整后的定额基价机械费(基价)",
  339. expression: "base('市场价格机械费') - base('定额基价机械费(调整后)')",
  340. compiledExpr: "",
  341. statement: "市场价格机械费-调整后的定额基价机械费(基价)"
  342. },{
  343. code: "6",
  344. name: "综合单价",
  345. dispExpr: "1+2+3+4+5",
  346. expression: "@('1') + @('2') + @('3') + @('4') + @('5')",
  347. compiledExpr: "",
  348. statement: "基价直接工程费+企业管理费+利润+风险因素+人材机价差"
  349. }
  350. ]
  351. };
  352. test('计算式测试', function(t){
  353. calcUtil.init(dummyCalcTpl, dummyFee);
  354. calcUtil.compile();
  355. calcUtil.calculate({});
  356. t.pass('just pass for calculation initialization!');
  357. t.end();
  358. })