sichuan_2018.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. // 部颁2018计价标准
  2. function overwriteRationCalcBases() {
  3. if (typeof rationCalcBases == "undefined") return;
  4. for (let key in rationCalcBases) delete rationCalcBases[key];
  5. rationCalcBases["人工费"] = function (node, isTender) {
  6. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
  7. };
  8. rationCalcBases["材料费"] = function (node, isTender) {
  9. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
  10. };
  11. rationCalcBases["施工机械使用费"] = function (node, isTender) {
  12. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
  13. };
  14. rationCalcBases["施工机械人工费"] = function (node, isTender) {
  15. return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.MACHINE_LABOUR, isTender);
  16. };
  17. rationCalcBases["设备购置费"] = function (node, isTender) {
  18. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
  19. };
  20. rationCalcBases["定额人工费"] = function (node, isTender) {
  21. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
  22. };
  23. rationCalcBases["定额材料费"] = function (node, isTender) {
  24. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
  25. };
  26. rationCalcBases["定额施工机械使用费"] = function (node, isTender) {
  27. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
  28. };
  29. rationCalcBases["定额商品砼费"] = function (node, isTender) {
  30. return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
  31. };
  32. rationCalcBases["定额设备费"] = function (node, isTender) {
  33. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
  34. };
  35. rationCalcBases["定额外购砼构件费"] = function (node, isTender) {
  36. return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
  37. };
  38. rationCalcBases["定额绿化苗木费"] = function (node, isTender) {
  39. return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
  40. };
  41. }
  42. (function overwriteFeeTypes() {
  43. if (typeof cpFeeTypes == "undefined") return;
  44. cpFeeTypes = [
  45. {
  46. type: "marketLabour",
  47. name: "人工费",
  48. },
  49. {
  50. type: "marketMaterial",
  51. name: "材料费",
  52. },
  53. {
  54. type: "marketMachine",
  55. name: "施工机械使用费",
  56. },
  57. {
  58. type: "marketMachineLabour",
  59. name: "施工机械人工费",
  60. },
  61. {
  62. type: "marketEquipment",
  63. name: "设备购置费",
  64. },
  65. {
  66. type: "marketDirect",
  67. name: "直接费",
  68. },
  69. {
  70. type: "labour",
  71. name: "定额人工费",
  72. },
  73. {
  74. type: "material",
  75. name: "定额材料费",
  76. },
  77. {
  78. type: "machine",
  79. name: "定额施工机械使用费",
  80. },
  81. {
  82. type: "equipment",
  83. name: "定额设备费",
  84. },
  85. {
  86. type: "direct",
  87. name: "定额直接费",
  88. },
  89. {
  90. type: "measure",
  91. name: "措施费",
  92. },
  93. {
  94. type: "measure1",
  95. name: "措施费I",
  96. },
  97. {
  98. type: "measure2",
  99. name: "措施费II",
  100. },
  101. {
  102. type: "manage",
  103. name: "企业管理费",
  104. },
  105. {
  106. type: "force",
  107. name: "规费",
  108. },
  109. {
  110. type: "profit",
  111. name: "利润",
  112. },
  113. {
  114. type: "tax",
  115. name: "税金",
  116. },
  117. {
  118. type: "common",
  119. name: "建安费",
  120. },
  121. {
  122. type: "rationCommon",
  123. name: "定额建安费",
  124. },
  125. ];
  126. })();
  127. // 在新建分段的时候需要隐藏养护类别和费用标准
  128. if (typeof $ !== "undefined") {
  129. // 后端也有引用这个文件,后端引用时$没有定义会报错
  130. $(document).ready(function () {
  131. $("#tender-engineering-group").hide();
  132. $("#tender-feeStandard-group").hide();
  133. });
  134. }
  135. //全国工地转移、综合里程费率值修改特殊处理
  136. if (typeof feeRateObject !== "undefined") {
  137. feeRateObject.feeRateSpecialHandle = function (subRate, value) {
  138. let result = {};
  139. if (subRate.name == "工地转移(km)" && value && value < 50) {
  140. //工地转移50km以内按50km算
  141. result.valueKey = "50";
  142. result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
  143. }
  144. if (subRate.name == "综合里程(km)" && value && value < 3) {
  145. //综合里程3km以内按3km算
  146. result.valueKey = "3";
  147. result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
  148. }
  149. return result;
  150. };
  151. }
  152. // 清单基数
  153. const progression = ["施工场地建设费", "养护单位(业主)管理费", "建设项目信息化费", "工程监理费", "设计文件审查费", "前期工作费", "设计文件审查费(两阶段设计)"];
  154. const deficiency = { 设计文件审查费: 2000, "设计文件审查费(两阶段设计)": 2000, 工程勘察费: 5000, 设计费: 5000, 招标费: 5000 };
  155. if (typeof baseFigureMap !== "undefined") {
  156. const { fixedFlag } = commonConstants;
  157. baseFigureMap.boq = {
  158. // 取清单固定类别是“建筑安装工程费”的定额建安费(其中定额设备费按40%计算+全额设备税金)。除清单固定类别是“建筑安装工程费”的以外部分可显示。
  159. 定额建筑安装工程费: {
  160. base: "DEJZAZGCFSBSS",
  161. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  162. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  163. pick: false,
  164. },
  165. // 取清单固定类别是“建筑安装工程费”的金额,扣除设备购置。仅固定类别为“保险费”可显示。
  166. "建筑安装工程费(不含设备费)": {
  167. base: "JZAZGCFBHSB",
  168. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  169. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  170. pick: true,
  171. },
  172. 各章清单合计: {
  173. base: "GZQDHJ",
  174. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  175. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  176. pick: false,
  177. },
  178. /*
  179. * 清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
  180. * 因此{100章以外合计}不设置关联的清单固定行
  181. * */
  182. // 仅允许用于固定类别为“100章清单”引用
  183. "100章以外清单合计": {
  184. base: "YBZYHQDHJ",
  185. fixedFlag: null,
  186. filter: [fixedFlag.ONE_HUNDRED_BILLS],
  187. pick: true,
  188. },
  189. // 显示:仅清单固定类别是“工程建设其他费”部分可显示
  190. "养护单位(业主)管理费": {
  191. isProgressive: true,
  192. base: "JSDWYZGLF",
  193. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  194. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  195. pick: true,
  196. },
  197. // 显示:仅清单固定类别是“工程建设其他费”部分可显示
  198. 建设项目信息化费: {
  199. isProgressive: true,
  200. base: "JSXMXXHF",
  201. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  202. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  203. pick: true,
  204. },
  205. // 显示:仅清单固定类别是“工程建设其他费”部分可显示
  206. 工程监理费: {
  207. isProgressive: true,
  208. base: "GCJLF",
  209. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  210. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  211. pick: true,
  212. },
  213. // 显示:仅清单固定类别是“工程建设其他费”部分可显示
  214. 设计文件审查费: {
  215. isProgressive: true,
  216. base: "SJWJSCF",
  217. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  218. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  219. pick: true,
  220. },
  221. "设计文件审查费(两阶段设计)": {
  222. isProgressive: true,
  223. base: "SJWJSCFLJDSJ",
  224. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  225. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  226. pick: true,
  227. },
  228. 工程勘察费: {
  229. isProgressive: true,
  230. base: "GCKCF",
  231. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  232. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  233. pick: true,
  234. },
  235. 设计费: {
  236. isProgressive: true,
  237. base: "SJF",
  238. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  239. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  240. pick: true,
  241. },
  242. 招标费: {
  243. isProgressive: true,
  244. base: "ZBF",
  245. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  246. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  247. pick: true,
  248. },
  249. "设计费(两阶段)": {
  250. isProgressive: true,
  251. base: "SJFLJD",
  252. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  253. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  254. pick: true,
  255. },
  256. "设计费(独立立项进行维修、加固的桥隧工程)": {
  257. isProgressive: true,
  258. base: "SJFDLLX",
  259. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  260. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  261. pick: true,
  262. },
  263. "设计费(机电工程)": {
  264. isProgressive: true,
  265. base: "SJFJDGC",
  266. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  267. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  268. pick: true,
  269. },
  270. "设计费(应急抢险工程)": {
  271. isProgressive: true,
  272. base: "SJFYJQXGC",
  273. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  274. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  275. pick: true,
  276. },
  277. // 显示:仅清单固定类别是“工程建设其他费”部分可显示
  278. // 前期工作费: {
  279. // isProgressive: true,
  280. // base: "QQGZF",
  281. // fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  282. // filter: [fixedFlag.MAINTENANCE_EXPENSES],
  283. // pick: true,
  284. // },
  285. };
  286. }
  287. if (typeof baseFigureTemplate !== "undefined") {
  288. const { fixedFlag } = commonConstants;
  289. baseFigureTemplate.boq = {
  290. // 定额建筑安装工程费 算法:取“定额建筑安装工程费”的金额
  291. DEJZAZGCF(tender) {
  292. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
  293. },
  294. // 建设安装工程费 算法:取“建筑安装工程费”的金额
  295. JZAZGCF(tender) {
  296. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  297. },
  298. DEJZAZGCFSBSS(tender) {
  299. let baseFee = this["DEJZAZGCF"](tender);
  300. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  301. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  302. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  303. return baseFee.toDecimal(decimalObj.bills.totalPrice);
  304. },
  305. JZAZGCFBHSB(tender) {
  306. let baseFee = this["JZAZGCF"](tender);
  307. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  308. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender);
  309. baseFee = (baseFee - equipmentFee).toDecimal(decimalObj.process);
  310. return baseFee.toDecimal(decimalObj.bills.totalPrice);
  311. },
  312. //{各章清单合计}
  313. // 取清单固定类别是“第100章至700章清单”的金额
  314. GZQDHJ: function (tender) {
  315. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  316. },
  317. //{100章以外清单合计}
  318. // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
  319. // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
  320. YBZYHQDHJ: function (tender) {
  321. let oneToSeven = cbTools.findNodeByFlag(fixedFlag.CONSTRUCTION_INSTALL_FEE);
  322. if (!oneToSeven) {
  323. return 0;
  324. }
  325. //100-700章固定节点的所有子节点
  326. let allChildren = [];
  327. function getChildren(nodes) {
  328. allChildren = allChildren.concat(nodes);
  329. for (let node of nodes) {
  330. if (node.children.length > 0) {
  331. getChildren(node.children);
  332. }
  333. }
  334. }
  335. getChildren(oneToSeven.children);
  336. //扣除的节点:100章的节点[100-200)
  337. let deductNodes = allChildren.filter(cbTools.withingOneHundred);
  338. //计算金额
  339. let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
  340. return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  341. },
  342. // 养护单位(业主)管理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  343. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  344. JSDWYZGLF(tender) {
  345. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  346. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  347. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  348. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  349. if (!tender) {
  350. calcBase.baseProgressiveFee = baseFee;
  351. }
  352. return calculateUtil.getProgressiveFee(
  353. baseFee,
  354. "养护单位(业主)管理费",
  355. projectObj.project.property.progressiveInterval,
  356. decimalObj.bills.totalPrice,
  357. deficiency
  358. );
  359. },
  360. // 建设项目信息化费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  361. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  362. JSXMXXHF(tender) {
  363. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  364. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  365. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  366. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  367. if (!tender) {
  368. calcBase.baseProgressiveFee = baseFee;
  369. }
  370. return calculateUtil.getProgressiveFee(
  371. baseFee,
  372. "建设项目信息化费",
  373. projectObj.project.property.progressiveInterval,
  374. decimalObj.bills.totalPrice,
  375. deficiency
  376. );
  377. },
  378. // 工程监理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  379. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  380. GCJLF(tender) {
  381. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  382. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  383. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  384. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  385. if (!tender) {
  386. calcBase.baseProgressiveFee = baseFee;
  387. }
  388. return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  389. },
  390. // 设计文件审查费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  391. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  392. SJWJSCF(tender) {
  393. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  394. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  395. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  396. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  397. if (!tender) {
  398. calcBase.baseProgressiveFee = baseFee;
  399. }
  400. return calculateUtil.getProgressiveFee(
  401. baseFee,
  402. "设计文件审查费",
  403. projectObj.project.property.progressiveInterval,
  404. decimalObj.bills.totalPrice,
  405. deficiency
  406. );
  407. },
  408. SJWJSCFLJDSJ(tender) {
  409. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  410. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  411. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  412. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  413. if (!tender) {
  414. calcBase.baseProgressiveFee = baseFee;
  415. }
  416. return calculateUtil.getProgressiveFee(
  417. baseFee,
  418. "设计文件审查费(两阶段设计)",
  419. projectObj.project.property.progressiveInterval,
  420. decimalObj.bills.totalPrice,
  421. deficiency
  422. );
  423. },
  424. GCKCF(tender) {
  425. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  426. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  427. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  428. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  429. if (!tender) {
  430. calcBase.baseProgressiveFee = baseFee;
  431. }
  432. return calculateUtil.getProgressiveFee(baseFee, "工程勘察费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  433. },
  434. SJF(tender) {
  435. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  436. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  437. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  438. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  439. if (!tender) {
  440. calcBase.baseProgressiveFee = baseFee;
  441. }
  442. return calculateUtil.getProgressiveFee(baseFee, "设计费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  443. },
  444. ZBF(tender) {
  445. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  446. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  447. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  448. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  449. if (!tender) {
  450. calcBase.baseProgressiveFee = baseFee;
  451. }
  452. return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  453. },
  454. SJFLJD(tender) {
  455. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  456. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  457. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  458. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  459. if (!tender) {
  460. calcBase.baseProgressiveFee = baseFee;
  461. }
  462. return calculateUtil.getProgressiveFee(
  463. baseFee,
  464. "设计费(两阶段)",
  465. projectObj.project.property.progressiveInterval,
  466. decimalObj.bills.totalPrice,
  467. deficiency
  468. );
  469. },
  470. SJFDLLX(tender) {
  471. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  472. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  473. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  474. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  475. if (!tender) {
  476. calcBase.baseProgressiveFee = baseFee;
  477. }
  478. return calculateUtil.getProgressiveFee(
  479. baseFee,
  480. "设计费(独立立项进行维修、加固的桥隧工程)",
  481. projectObj.project.property.progressiveInterval,
  482. decimalObj.bills.totalPrice,
  483. deficiency
  484. );
  485. },
  486. SJFJDGC(tender) {
  487. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  488. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  489. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  490. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  491. if (!tender) {
  492. calcBase.baseProgressiveFee = baseFee;
  493. }
  494. return calculateUtil.getProgressiveFee(
  495. baseFee,
  496. "设计费(机电工程)",
  497. projectObj.project.property.progressiveInterval,
  498. decimalObj.bills.totalPrice,
  499. deficiency
  500. );
  501. },
  502. SJFYJQXGC(tender) {
  503. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  504. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  505. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  506. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  507. if (!tender) {
  508. calcBase.baseProgressiveFee = baseFee;
  509. }
  510. return calculateUtil.getProgressiveFee(
  511. baseFee,
  512. "设计费(应急抢险工程)",
  513. projectObj.project.property.progressiveInterval,
  514. decimalObj.bills.totalPrice,
  515. deficiency
  516. );
  517. },
  518. // 前期工作费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  519. // 变更:【算法】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  520. QQGZF(tender) {
  521. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  522. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  523. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  524. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  525. if (!tender) {
  526. calcBase.baseProgressiveFee = baseFee;
  527. }
  528. return calculateUtil.getProgressiveFee(baseFee, "前期工作费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  529. },
  530. };
  531. }
  532. if (typeof projectObj !== "undefined") {
  533. projectObj.isInsertEquipmentVisable = function (selected) {
  534. return true; //全国不管是预算或者工程量清单,都是显示
  535. };
  536. projectObj.getSaveProductionCostCode = function () {
  537. //公路云里18的清单范本安全生产费是102-3的;养护云里浙江养护的安全生产费是102-4。
  538. return "102-3";
  539. };
  540. }
  541. const defaultCalcMode = 1;
  542. if (typeof module !== "undefined" && !module.nodeType) {
  543. module.exports = {
  544. progression,
  545. defaultCalcMode,
  546. deficiency,
  547. };
  548. }