sichuan_2018.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  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.INSURANCE_FEE],
  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. DEJZAZGCFSBSS(tender) {
  295. let baseFee = this["DEJZAZGCF"](tender);
  296. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  297. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  298. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  299. return baseFee.toDecimal(decimalObj.bills.totalPrice);
  300. },
  301. JZAZGCFBHSB(tender) {
  302. let baseFee = this["JZAZGCF"](tender);
  303. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  304. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender);
  305. baseFee = (baseFee - equipmentFee).toDecimal(decimalObj.process);
  306. return baseFee.toDecimal(decimalObj.bills.totalPrice);
  307. },
  308. //{各章清单合计}
  309. // 取清单固定类别是“第100章至700章清单”的金额
  310. GZQDHJ: function (tender) {
  311. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  312. },
  313. //{100章以外清单合计}
  314. // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
  315. // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
  316. YBZYHQDHJ: function (tender) {
  317. let oneToSeven = cbTools.findNodeByFlag(fixedFlag.CONSTRUCTION_INSTALL_FEE);
  318. if (!oneToSeven) {
  319. return 0;
  320. }
  321. //100-700章固定节点的所有子节点
  322. let allChildren = [];
  323. function getChildren(nodes) {
  324. allChildren = allChildren.concat(nodes);
  325. for (let node of nodes) {
  326. if (node.children.length > 0) {
  327. getChildren(node.children);
  328. }
  329. }
  330. }
  331. getChildren(oneToSeven.children);
  332. //扣除的节点:100章的节点[100-200)
  333. let deductNodes = allChildren.filter(cbTools.withingOneHundred);
  334. //计算金额
  335. let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
  336. return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  337. },
  338. // 养护单位(业主)管理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  339. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  340. JSDWYZGLF(tender) {
  341. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  342. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  343. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  344. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  345. if (!tender) {
  346. calcBase.baseProgressiveFee = baseFee;
  347. }
  348. return calculateUtil.getProgressiveFee(
  349. baseFee,
  350. "养护单位(业主)管理费",
  351. projectObj.project.property.progressiveInterval,
  352. decimalObj.bills.totalPrice,
  353. deficiency
  354. );
  355. },
  356. // 建设项目信息化费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  357. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  358. JSXMXXHF(tender) {
  359. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  360. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  361. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  362. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  363. if (!tender) {
  364. calcBase.baseProgressiveFee = baseFee;
  365. }
  366. return calculateUtil.getProgressiveFee(
  367. baseFee,
  368. "建设项目信息化费",
  369. projectObj.project.property.progressiveInterval,
  370. decimalObj.bills.totalPrice,
  371. deficiency
  372. );
  373. },
  374. // 工程监理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  375. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  376. GCJLF(tender) {
  377. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  378. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  379. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  380. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  381. if (!tender) {
  382. calcBase.baseProgressiveFee = baseFee;
  383. }
  384. return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  385. },
  386. // 设计文件审查费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  387. // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  388. SJWJSCF(tender) {
  389. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  390. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  391. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  392. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  393. if (!tender) {
  394. calcBase.baseProgressiveFee = baseFee;
  395. }
  396. return calculateUtil.getProgressiveFee(
  397. baseFee,
  398. "设计文件审查费",
  399. projectObj.project.property.progressiveInterval,
  400. decimalObj.bills.totalPrice,
  401. deficiency
  402. );
  403. },
  404. SJWJSCFLJD(tender) {
  405. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  406. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  407. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  408. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  409. if (!tender) {
  410. calcBase.baseProgressiveFee = baseFee;
  411. }
  412. return calculateUtil.getProgressiveFee(
  413. baseFee,
  414. "设计文件审查费(两阶段设计)",
  415. projectObj.project.property.progressiveInterval,
  416. decimalObj.bills.totalPrice,
  417. deficiency
  418. );
  419. },
  420. GCKCF(tender) {
  421. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  422. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  423. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  424. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  425. if (!tender) {
  426. calcBase.baseProgressiveFee = baseFee;
  427. }
  428. return calculateUtil.getProgressiveFee(baseFee, "工程勘察费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  429. },
  430. SJF(tender) {
  431. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  432. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  433. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  434. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  435. if (!tender) {
  436. calcBase.baseProgressiveFee = baseFee;
  437. }
  438. return calculateUtil.getProgressiveFee(baseFee, "设计费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  439. },
  440. ZBF(tender) {
  441. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  442. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  443. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  444. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  445. if (!tender) {
  446. calcBase.baseProgressiveFee = baseFee;
  447. }
  448. return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  449. },
  450. SJFLJD(tender) {
  451. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  452. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  453. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  454. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  455. if (!tender) {
  456. calcBase.baseProgressiveFee = baseFee;
  457. }
  458. return calculateUtil.getProgressiveFee(
  459. baseFee,
  460. "设计费(两阶段)",
  461. projectObj.project.property.progressiveInterval,
  462. decimalObj.bills.totalPrice,
  463. deficiency
  464. );
  465. },
  466. SJFDLLX(tender) {
  467. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  468. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  469. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  470. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  471. if (!tender) {
  472. calcBase.baseProgressiveFee = baseFee;
  473. }
  474. return calculateUtil.getProgressiveFee(
  475. baseFee,
  476. "设计费(独立立项进行维修、加固的桥隧工程)",
  477. projectObj.project.property.progressiveInterval,
  478. decimalObj.bills.totalPrice,
  479. deficiency
  480. );
  481. },
  482. SJFJDGC(tender) {
  483. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  484. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  485. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  486. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  487. if (!tender) {
  488. calcBase.baseProgressiveFee = baseFee;
  489. }
  490. return calculateUtil.getProgressiveFee(
  491. baseFee,
  492. "设计费(机电工程)",
  493. projectObj.project.property.progressiveInterval,
  494. decimalObj.bills.totalPrice,
  495. deficiency
  496. );
  497. },
  498. SJFYJQXGC(tender) {
  499. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  500. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  501. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  502. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  503. if (!tender) {
  504. calcBase.baseProgressiveFee = baseFee;
  505. }
  506. return calculateUtil.getProgressiveFee(
  507. baseFee,
  508. "设计费(应急抢险工程)",
  509. projectObj.project.property.progressiveInterval,
  510. decimalObj.bills.totalPrice,
  511. deficiency
  512. );
  513. },
  514. // 前期工作费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
  515. // 变更:【算法】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
  516. QQGZF(tender) {
  517. let baseFee = baseFigureTemplate.boq["DEJZAZGCF"](tender);
  518. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  519. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  520. baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
  521. if (!tender) {
  522. calcBase.baseProgressiveFee = baseFee;
  523. }
  524. return calculateUtil.getProgressiveFee(baseFee, "前期工作费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  525. },
  526. };
  527. }
  528. if (typeof projectObj !== "undefined") {
  529. projectObj.isInsertEquipmentVisable = function (selected) {
  530. return true; //全国不管是预算或者工程量清单,都是显示
  531. };
  532. projectObj.getSaveProductionCostCode = function () {
  533. //公路云里18的清单范本安全生产费是102-3的;养护云里浙江养护的安全生产费是102-4。
  534. return "102-3";
  535. };
  536. }
  537. const defaultCalcMode = 1;
  538. if (typeof module !== "undefined" && !module.nodeType) {
  539. module.exports = {
  540. progression,
  541. defaultCalcMode,
  542. deficiency,
  543. };
  544. }