neimeng_2022.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. /**
  2. * Created by CSL on 2022/12/19. 内蒙古高速养护(2022)。
  3. */
  4. function overwriteRationCalcBases() {
  5. if (typeof rationCalcBases == "undefined") return;
  6. for (let key in rationCalcBases) delete rationCalcBases[key];
  7. rationCalcBases["人工费"] = function (node, isTender) {
  8. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
  9. };
  10. rationCalcBases["材料费"] = function (node, isTender) {
  11. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
  12. };
  13. rationCalcBases["施工机械使用费"] = function (node, isTender) {
  14. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
  15. };
  16. rationCalcBases["设备购置费"] = function (node, isTender) {
  17. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
  18. };
  19. rationCalcBases["定额人工费"] = function (node, isTender) {
  20. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
  21. };
  22. rationCalcBases["定额材料费"] = function (node, isTender) {
  23. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
  24. };
  25. rationCalcBases["定额施工机械使用费"] = function (node, isTender) {
  26. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
  27. };
  28. rationCalcBases["定额商品砼费"] = function (node, isTender) {
  29. return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
  30. };
  31. rationCalcBases["定额设备费"] = function (node, isTender) {
  32. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
  33. };
  34. rationCalcBases["定额外购砼构件费"] = function (node, isTender) {
  35. return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
  36. };
  37. rationCalcBases["定额绿化苗木费"] = function (node, isTender) {
  38. return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
  39. };
  40. }
  41. (function overwriteFeeTypes() {
  42. if (typeof cpFeeTypes == "undefined") return;
  43. cpFeeTypes = [
  44. { type: "marketDirect", name: "直接费" },
  45. { type: "marketLabour", name: "人工费" },
  46. { type: "marketMaterial", name: "材料费" },
  47. { type: "marketMachine", name: "施工机械使用费" },
  48. { type: "marketEquipment", name: "设备购置费" },
  49. { type: "labour", name: "定额人工费" },
  50. { type: "material", name: "定额材料费" },
  51. { type: "machine", name: "定额施工机械使用费" },
  52. { type: "equipment", name: "定额设备购置费" },
  53. { type: "direct", name: "定额直接费" },
  54. { type: "measure", name: "措施费" },
  55. { type: "manage", name: "企业管理费" },
  56. { type: "force", name: "规费" },
  57. { type: "profit", name: "利润" },
  58. { type: "tax", name: "税金" },
  59. { type: "common", name: "建安费" },
  60. { type: "rationCommon", name: "定额建安费" },
  61. ];
  62. })();
  63. // 清单基数
  64. const progression = [
  65. "养护单位项目管理费",
  66. "养护项目信息化费",
  67. "工程监理费",
  68. "工程设计费",
  69. "设计文件审查费(一阶段)",
  70. "设计文件审查费(二阶段)",
  71. "采用一阶段施工图设计的养护工程项目前期工作费",
  72. "采用一阶段技术(方案)设计的养护工程项目前期工作费",
  73. "独立进行维修、加固的一般桥梁工程设计费",
  74. "独立进行维修、加固的技术复杂大桥工程设计费",
  75. "独立进行维修、加固的隧道工程设计费",
  76. "招标费",
  77. ];
  78. const deficiency = {
  79. 设计文件审查费: 3000,
  80. 工程设计费: 5000,
  81. "设计文件审查费(一阶段)": 3000,
  82. "设计文件审查费(二阶段)": 3000,
  83. 采用一阶段施工图设计的养护工程项目前期工作费: 5000,
  84. "采用一阶段技术(方案)设计的养护工程项目前期工作费": 5000,
  85. "独立进行维修、加固的一般桥梁工程设计费": 5000,
  86. "独立进行维修、加固的技术复杂大桥工程设计费": 5000,
  87. "独立进行维修、加固的隧道工程设计费": 5000,
  88. 招标费: 5000,
  89. };
  90. if (typeof baseFigureMap !== "undefined") {
  91. const { fixedFlag } = commonConstants;
  92. const budgetMap = {
  93. // 清单固定类别是“建筑安装工程费”的以外部分可显示:取清单固定类别是“建筑安装工程”的金额
  94. 建筑安装工程费: {
  95. base: "JZAZGCF",
  96. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  97. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  98. pick: false,
  99. },
  100. // 清单固定类别是“建筑安装工程费”的以外部分可显示。(定额设备购置费按40%计)
  101. 定额建筑安装工程费: {
  102. base: "DEJZAZGCFSBSS",
  103. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  104. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  105. pick: false,
  106. },
  107. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  108. "建筑安装工程费(不含设备费)": {
  109. base: "JZAZGCFBHSB",
  110. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  111. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  112. pick: false,
  113. },
  114. "定额建筑安装工程费(不含专项费用)": {
  115. base: "DEJZAZGCFBHZXF",
  116. fixedFlag: null,
  117. filter: [fixedFlag.SPECIAL_COST],
  118. pick: true,
  119. },
  120. "建筑安装工程费(不含安全生产费)": {
  121. base: "JZAZGCFBHAQSCF",
  122. // fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  123. fixedFlag: null,
  124. filter: [fixedFlag.SAFE_COST],
  125. pick: true,
  126. },
  127. // 取清单固定类别是“养护工程其他费”的金额。“建筑安装工程费”、“养护工程其他费”以外部分可显示。
  128. 养护工程其他费: {
  129. base: "YHGCQTFY",
  130. fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
  131. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
  132. pick: false,
  133. },
  134. // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  135. 养护管理单位项目管理费: {
  136. isProgressive: true,
  137. base: "YHDWXMGLF",
  138. fixedFlag: null,
  139. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  140. pick: true,
  141. },
  142. // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  143. 养护项目信息化费: {
  144. isProgressive: true,
  145. base: "XXHF",
  146. fixedFlag: null,
  147. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  148. pick: true,
  149. },
  150. // 工程监理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  151. 工程监理费: {
  152. isProgressive: true,
  153. base: "GCJLF",
  154. fixedFlag: null,
  155. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  156. pick: true,
  157. },
  158. // 工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示。不足5000元,按5000元计取。
  159. 工程设计费: {
  160. isProgressive: true,
  161. deficiency: 5000,
  162. base: "GCSJF",
  163. fixedFlag: null,
  164. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  165. pick: true,
  166. },
  167. // 设计文件审查费(一阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
  168. "设计文件审查费(一阶段)": {
  169. isProgressive: true,
  170. deficiency: 3000,
  171. base: "SJWJSCFYJD",
  172. fixedFlag: null,
  173. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  174. pick: true,
  175. },
  176. // 设计文件审查费(二阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
  177. "设计文件审查费(二阶段)": {
  178. isProgressive: true,
  179. deficiency: 3000,
  180. base: "SJWJSCFEJD",
  181. fixedFlag: null,
  182. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  183. pick: true,
  184. },
  185. // 采用一阶段施工图设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  186. 采用一阶段施工图设计的养护工程项目前期工作费: {
  187. isProgressive: true,
  188. deficiency: 5000,
  189. base: "SGTSJQQGZF",
  190. fixedFlag: null,
  191. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  192. pick: true,
  193. },
  194. // 采用一阶段技术(方案)设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  195. "采用一阶段技术(方案)设计的养护工程项目前期工作费": {
  196. isProgressive: true,
  197. deficiency: 5000,
  198. base: "JSFASJQQGZF",
  199. fixedFlag: null,
  200. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  201. pick: true,
  202. },
  203. // 独立进行维修、加固的一般桥梁工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  204. "独立进行维修、加固的一般桥梁工程设计费": {
  205. isProgressive: true,
  206. deficiency: 5000,
  207. base: "DLLXJXWXJGDYBQLGCSJF",
  208. fixedFlag: null,
  209. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  210. pick: true,
  211. },
  212. // 独立进行维修、加固的技术复杂大桥工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  213. "独立进行维修、加固的技术复杂大桥工程设计费": {
  214. isProgressive: true,
  215. deficiency: 5000,
  216. base: "DLLXJXWXJGDJSFZDQGCSJF",
  217. fixedFlag: null,
  218. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  219. pick: true,
  220. },
  221. // 独立进行维修、加固的隧道工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  222. "独立进行维修、加固的隧道工程设计费": {
  223. isProgressive: true,
  224. deficiency: 5000,
  225. base: "DLLXJXWXJGDSDGCSJF",
  226. fixedFlag: null,
  227. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  228. pick: true,
  229. },
  230. // 招标费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  231. 招标费: {
  232. isProgressive: true,
  233. deficiency: 5000,
  234. base: "ZBF",
  235. fixedFlag: null,
  236. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  237. pick: true,
  238. },
  239. // 工程保险费: 按“定额建筑安装工程费(不含设备费)”为基数,以0.4费率计算。仅清单固定类别是“养护工程其他费”可显示。
  240. 工程保险费: {
  241. base: "GCBXF",
  242. fixedFlag: null,
  243. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  244. pick: true,
  245. },
  246. 价差预备费: {
  247. base: "JCYBF",
  248. fixedFlag: null,
  249. filter: [fixedFlag.SPREAD_BUDGET_FEE],
  250. pick: true,
  251. },
  252. };
  253. const boqMap = {
  254. //仅允许用于固定类别是“第100章至700章清单”以外的清单
  255. 各章清单合计: {
  256. base: "GZQDHJ",
  257. fixedFlag: fixedFlag.ONE_SEVEN_BILLS,
  258. filter: [fixedFlag.ONE_SEVEN_BILLS],
  259. pick: false,
  260. },
  261. //仅允许用于固定类别是“第100章至700章清单”以外的清单
  262. 专项暂定合计: {
  263. base: "ZXZDHJ",
  264. fixedFlag: null,
  265. filter: [fixedFlag.ONE_SEVEN_BILLS],
  266. pick: false,
  267. },
  268. /*
  269. * 清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
  270. * 因此{100章以外合计}不设置关联的清单固定行
  271. * */
  272. //仅允许用于固定类别为“100章清单”引用
  273. "100章以外清单合计": {
  274. base: "YBZYHQDHJ",
  275. fixedFlag: null,
  276. filter: [fixedFlag.ONE_HUNDRED_BILLS],
  277. pick: true,
  278. },
  279. };
  280. baseFigureMap.budget = budgetMap;
  281. baseFigureMap.boq = boqMap;
  282. }
  283. // 清单基数
  284. if (typeof baseFigureTemplate !== "undefined") {
  285. const { fixedFlag } = commonConstants;
  286. baseFigureTemplate.budget = {
  287. // 建筑安装工程费
  288. JZAZGCF(tender) {
  289. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  290. },
  291. // 定额建筑安装工程费
  292. DEJZAZGCF(tender) {
  293. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "rationCommon");
  294. },
  295. // 定额建筑安装工程费(定额设备购置费按40%计)
  296. DEJZAZGCFSBSS(tender) {
  297. const feeField = "rationCommon";
  298. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
  299. //建安费扣除定额设备购置费
  300. const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
  301. //定额设备购置费
  302. const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
  303. return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
  304. },
  305. // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
  306. JZAZGCFBHSB(tender) {
  307. //建安费扣除设备费
  308. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
  309. },
  310. // 定额建筑安装工程费(不含设备费)
  311. DEJZAZGCFBHSB(tender) {
  312. //建安费扣除设备费
  313. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "rationCommon");
  314. },
  315. // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
  316. TDSYJCQBCF(tender) {
  317. return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, "common");
  318. },
  319. // 养护工程其他费用:取清单固定类别是“养护工程其他费用”的金额
  320. YHGCQTFY(tender) {
  321. return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, "common");
  322. },
  323. // 预备费:取清单固定类别是“预备费”的金额
  324. YBF(tender) {
  325. return cbTools.getBaseFee(fixedFlag.BUDGET_FEE, tender, "common");
  326. },
  327. // 养护单位项目管理费
  328. YHDWXMGLF(tender) {
  329. const baseFee = this.DEJZAZGCF(tender);
  330. if (!tender) {
  331. calcBase.baseProgressiveFee = baseFee;
  332. }
  333. return calculateUtil.getProgressiveFee(
  334. baseFee,
  335. "养护单位项目管理费",
  336. projectObj.project.property.progressiveInterval,
  337. decimalObj.bills.totalPrice,
  338. deficiency
  339. );
  340. },
  341. // 信息化费
  342. XXHF(tender) {
  343. const baseFee = this.DEJZAZGCF(tender);
  344. if (!tender) {
  345. calcBase.baseProgressiveFee = baseFee;
  346. }
  347. return calculateUtil.getProgressiveFee(baseFee, "信息化费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  348. },
  349. // 工程监理费
  350. GCJLF(tender) {
  351. const baseFee = this.DEJZAZGCF(tender);
  352. if (!tender) {
  353. calcBase.baseProgressiveFee = baseFee;
  354. }
  355. return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  356. },
  357. // 价差预备费
  358. JCYBF(tender) {
  359. //建筑安装工程费作为基数
  360. const installFee = this["JZAZGCF"](tender);
  361. //年造价增涨
  362. const costGrowthRate = calcBase.project.property.costGrowthRate ? calcBase.project.property.costGrowthRate : 0;
  363. //增涨计费年限
  364. const growthPeriod = projectObj.project.property.growthPeriod ? calcBase.project.property.growthPeriod : 0;
  365. //= P * [(1+i)^(n-1) -1]
  366. return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
  367. },
  368. // 定额建筑安装工程费(不含专项费用)
  369. DEJZAZGCFBHZXF(tender) {
  370. const baseFee = this["DEJZAZGCF"](tender);
  371. const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
  372. return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
  373. },
  374. // {建筑安装工程费(不含安全生产费)}
  375. JZAZGCFBHAQSCF(tender) {
  376. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
  377. },
  378. GCSJF(tender) {
  379. const baseFee = this["DEJZAZGCF"](tender);
  380. if (!tender) {
  381. calcBase.baseProgressiveFee = baseFee;
  382. }
  383. return calculateUtil.getProgressiveFee(baseFee, "工程设计费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  384. },
  385. SJWJSCFYJD(tender) {
  386. const baseFee = this["DEJZAZGCF"](tender);
  387. if (!tender) {
  388. calcBase.baseProgressiveFee = baseFee;
  389. }
  390. return calculateUtil.getProgressiveFee(
  391. baseFee,
  392. "设计文件审查费(一阶段)",
  393. projectObj.project.property.progressiveInterval,
  394. decimalObj.bills.totalPrice,
  395. deficiency
  396. );
  397. },
  398. SJWJSCFEJD(tender) {
  399. const baseFee = this["DEJZAZGCF"](tender);
  400. if (!tender) {
  401. calcBase.baseProgressiveFee = baseFee;
  402. }
  403. return calculateUtil.getProgressiveFee(
  404. baseFee,
  405. "设计文件审查费(二阶段)",
  406. projectObj.project.property.progressiveInterval,
  407. decimalObj.bills.totalPrice,
  408. deficiency
  409. );
  410. },
  411. DLLXJXWXJGDYBQLGCSJF(tender) {
  412. const baseFee = this["DEJZAZGCF"](tender);
  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. DLLXJXWXJGDJSFZDQGCSJF(tender) {
  425. const baseFee = this["DEJZAZGCF"](tender);
  426. if (!tender) {
  427. calcBase.baseProgressiveFee = baseFee;
  428. }
  429. return calculateUtil.getProgressiveFee(
  430. baseFee,
  431. "独立进行维修、加固的技术复杂大桥工程设计费",
  432. projectObj.project.property.progressiveInterval,
  433. decimalObj.bills.totalPrice,
  434. deficiency
  435. );
  436. },
  437. DLLXJXWXJGDSDGCSJF(tender) {
  438. const baseFee = this["DEJZAZGCF"](tender);
  439. if (!tender) {
  440. calcBase.baseProgressiveFee = baseFee;
  441. }
  442. return calculateUtil.getProgressiveFee(
  443. baseFee,
  444. "独立进行维修、加固的隧道工程设计费",
  445. projectObj.project.property.progressiveInterval,
  446. decimalObj.bills.totalPrice,
  447. deficiency
  448. );
  449. },
  450. ZBF(tender) {
  451. const baseFee = this["DEJZAZGCF"](tender);
  452. if (!tender) {
  453. calcBase.baseProgressiveFee = baseFee;
  454. }
  455. return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  456. },
  457. SGTSJQQGZF(tender) {
  458. const baseFee = this["DEJZAZGCF"](tender);
  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. JSFASJQQGZF(tender) {
  471. const baseFee = this["DEJZAZGCF"](tender);
  472. if (!tender) {
  473. calcBase.baseProgressiveFee = baseFee;
  474. }
  475. return calculateUtil.getProgressiveFee(
  476. baseFee,
  477. "采用一阶段技术(方案)设计的养护工程项目前期工作费",
  478. projectObj.project.property.progressiveInterval,
  479. decimalObj.bills.totalPrice,
  480. deficiency
  481. );
  482. },
  483. GCBXF(tender) {
  484. return (this.DEJZAZGCFBHSB(tender) * 0.4).toDecimal(decimalObj.bills.totalPrice);
  485. },
  486. };
  487. baseFigureTemplate.boq = {
  488. //{各章清单合计}
  489. // 取清单固定类别是“第100章至700章清单”的金额
  490. GZQDHJ: function (tender) {
  491. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "common");
  492. },
  493. //{专项暂定合计}
  494. // 第100章至700章清单行的暂估合价
  495. ZXZDHJ: function (tender) {
  496. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "estimate");
  497. },
  498. //{100章以外清单合计}
  499. // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
  500. // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
  501. YBZYHQDHJ: function (tender) {
  502. let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
  503. if (!oneToSeven) {
  504. return 0;
  505. }
  506. //100-700章固定节点的所有子节点
  507. let allChildren = [];
  508. function getChildren(nodes) {
  509. allChildren = allChildren.concat(nodes);
  510. for (let node of nodes) {
  511. if (node.children.length > 0) {
  512. getChildren(node.children);
  513. }
  514. }
  515. }
  516. getChildren(oneToSeven.children);
  517. //扣除的节点:100章的节点[100-200)
  518. let deductNodes = allChildren.filter(cbTools.withingOneHundred);
  519. //计算金额
  520. let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
  521. return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  522. },
  523. // 清单项目基数:{定额建筑安装工程费(定额设备购置费按40%计)} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费+设备税金之和按40%计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
  524. DEJZAZGCF(tender) {
  525. const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
  526. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
  527. const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
  528. return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
  529. },
  530. };
  531. }
  532. if (typeof materialCalcObj !== "undefined" && materialCalcObj.rationSetting) {
  533. let h = _.find(materialCalcObj.rationSetting.header, { dataCode: "feeType" });
  534. if (h) h.visible = true;
  535. let mt = _.find(materialCalcObj.freightSetting.header, { dataCode: "materialType" });
  536. if (mt) mt.visible = true;
  537. }
  538. //内蒙施工进出场(km)费率值修改特殊处理
  539. if (typeof feeRateObject !== "undefined") {
  540. feeRateObject.feeRateSpecialHandle = function (subRate, value) {
  541. let result = {};
  542. if (subRate.name == "施工进出场(km)" && value && value < 5) {
  543. //输入的数值(公里数)< 5时,该项费用不计取。
  544. result.valueKey = "0";
  545. result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
  546. }
  547. return result;
  548. };
  549. }
  550. if (typeof module !== "undefined") {
  551. module.exports = {
  552. progression,
  553. deficiency,
  554. };
  555. }