neimeng_2022.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  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. const deficiency = { 设计文件审查费: 3000 };
  66. if (typeof baseFigureMap !== "undefined") {
  67. const { fixedFlag } = commonConstants;
  68. const budgetMap = {
  69. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  70. 建筑安装工程费: {
  71. base: "JZAZGCF",
  72. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  73. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  74. pick: false,
  75. },
  76. // 清单固定类别是“建筑安装工程费”的以外部分可显示。(定额设备购置费按40%计)
  77. 定额建筑安装工程费: {
  78. base: "DEJZAZGCFSBSS",
  79. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  80. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  81. pick: false,
  82. },
  83. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  84. "建筑安装工程费(不含设备费)": {
  85. base: "JZAZGCFBHSB",
  86. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  87. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  88. pick: false,
  89. },
  90. "定额建筑安装工程费(不含专项费用)": {
  91. base: "DEJZAZGCFBHZXF",
  92. fixedFlag: null,
  93. filter: [fixedFlag.SPECIAL_COST],
  94. pick: true,
  95. },
  96. "建筑安装工程费(不含安全生产费)": {
  97. base: "JZAZGCFBHAQSCF",
  98. // fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  99. fixedFlag: null,
  100. filter: [fixedFlag.SAFE_COST],
  101. pick: true,
  102. },
  103. // 取清单固定类别是“养护工程其他费”的金额。“建筑安装工程费”、“养护工程其他费”以外部分可显示。
  104. 养护工程其他费: {
  105. base: "YHGCQTFY",
  106. fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
  107. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
  108. pick: false,
  109. },
  110. // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  111. 养护管理单位项目管理费: {
  112. isProgressive: true,
  113. base: "YHDWXMGLF",
  114. fixedFlag: null,
  115. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  116. pick: true,
  117. },
  118. // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  119. 养护项目信息化费: {
  120. isProgressive: true,
  121. base: "XXHF",
  122. fixedFlag: null,
  123. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  124. pick: true,
  125. },
  126. // 工程监理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  127. 工程监理费: {
  128. isProgressive: true,
  129. base: "GCJLF",
  130. fixedFlag: null,
  131. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  132. pick: true,
  133. },
  134. // 设计文件审查费(一阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
  135. "设计文件审查费(一阶段)": {
  136. isProgressive: true,
  137. deficiency: 3000,
  138. base: "SJWJSCFYJD",
  139. fixedFlag: null,
  140. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  141. pick: true,
  142. },
  143. // 设计文件审查费(二阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
  144. "设计文件审查费(二阶段)": {
  145. isProgressive: true,
  146. deficiency: 3000,
  147. base: "SJWJSCFEJD",
  148. fixedFlag: null,
  149. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  150. pick: true,
  151. },
  152. // 采用一阶段施工图设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  153. 采用一阶段施工图设计的养护工程项目前期工作费: {
  154. isProgressive: true,
  155. deficiency: 5000,
  156. base: "SGTSJQQGZF",
  157. fixedFlag: null,
  158. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  159. pick: true,
  160. },
  161. // 采用一阶段技术(方案)设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  162. "采用一阶段技术(方案)设计的养护工程项目前期工作费": {
  163. isProgressive: true,
  164. deficiency: 5000,
  165. base: "JSFASJQQGZF",
  166. fixedFlag: null,
  167. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  168. pick: true,
  169. },
  170. // 独立进行维修、加固的一般桥梁工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  171. "独立进行维修、加固的一般桥梁工程设计费": {
  172. isProgressive: true,
  173. deficiency: 5000,
  174. base: "DLLXJXWXJGDYBQLGCSJF",
  175. fixedFlag: null,
  176. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  177. pick: true,
  178. },
  179. // 独立进行维修、加固的技术复杂大桥工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  180. "独立进行维修、加固的技术复杂大桥工程设计费": {
  181. isProgressive: true,
  182. deficiency: 5000,
  183. base: "DLLXJXWXJGDJSFZDQGCSJF",
  184. fixedFlag: null,
  185. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  186. pick: true,
  187. },
  188. // 独立进行维修、加固的隧道工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  189. "独立进行维修、加固的隧道工程设计费": {
  190. isProgressive: true,
  191. deficiency: 5000,
  192. base: "DLLXJXWXJGDSDGCSJF",
  193. fixedFlag: null,
  194. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  195. pick: true,
  196. },
  197. // 招标费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  198. 招标费: {
  199. isProgressive: true,
  200. deficiency: 5000,
  201. base: "ZBF",
  202. fixedFlag: null,
  203. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  204. pick: true,
  205. },
  206. // 工程保险费: 按“定额建筑安装工程费(不含设备费)”为基数,以0.4费率计算。仅清单固定类别是“养护工程其他费”可显示。
  207. 工程保险费: {
  208. base: "GCBXF",
  209. fixedFlag: null,
  210. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  211. pick: true,
  212. },
  213. 价差预备费: {
  214. base: "JCYBF",
  215. fixedFlag: null,
  216. filter: [fixedFlag.SPREAD_BUDGET_FEE],
  217. pick: true,
  218. },
  219. };
  220. const boqMap = {
  221. //仅允许用于固定类别是“第100章至700章清单”以外的清单
  222. 各章清单合计: {
  223. base: "GZQDHJ",
  224. fixedFlag: fixedFlag.ONE_SEVEN_BILLS,
  225. filter: [fixedFlag.ONE_SEVEN_BILLS],
  226. pick: false,
  227. },
  228. //仅允许用于固定类别是“第100章至700章清单”以外的清单
  229. 专项暂定合计: {
  230. base: "ZXZDHJ",
  231. fixedFlag: null,
  232. filter: [fixedFlag.ONE_SEVEN_BILLS],
  233. pick: false,
  234. },
  235. /*
  236. * 清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
  237. * 因此{100章以外合计}不设置关联的清单固定行
  238. * */
  239. //仅允许用于固定类别为“100章清单”引用
  240. "100章以外清单合计": {
  241. base: "YBZYHQDHJ",
  242. fixedFlag: null,
  243. filter: [fixedFlag.ONE_HUNDRED_BILLS],
  244. pick: true,
  245. },
  246. };
  247. baseFigureMap.budget = budgetMap;
  248. baseFigureMap.boq = boqMap;
  249. }
  250. // 清单基数
  251. if (typeof baseFigureTemplate !== "undefined") {
  252. const { fixedFlag } = commonConstants;
  253. baseFigureTemplate.budget = {
  254. // 定额建筑安装工程费(定额设备购置费按40%计):取清单固定类别是“建筑安装工程”的定额建安费,其中定额设备购置费按40%计算
  255. DEJZAZGCFSBSS(tender) {
  256. const feeField = "rationCommon";
  257. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
  258. //建安费扣除定额设备购置费
  259. const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
  260. //定额设备购置费
  261. const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
  262. return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
  263. },
  264. // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
  265. JZAZGCFBHSB(tender) {
  266. //建安费扣除设备费
  267. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
  268. },
  269. // 定额建筑安装工程费(不含设备费)
  270. DEJZAZGCFBHSB(tender) {
  271. //建安费扣除设备费
  272. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "rationCommon");
  273. },
  274. // 建筑安装工程费:取清单固定类别是“建筑安装工程”的金额
  275. JZAZGCF(tender) {
  276. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  277. },
  278. // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
  279. TDSYJCQBCF(tender) {
  280. return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, "common");
  281. },
  282. // 养护工程其他费用:取清单固定类别是“养护工程其他费用”的金额
  283. YHGCQTFY(tender) {
  284. return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, "common");
  285. },
  286. // 预备费:取清单固定类别是“预备费”的金额
  287. YBF(tender) {
  288. return cbTools.getBaseFee(fixedFlag.BUDGET_FEE, tender, "common");
  289. },
  290. // 养护单位项目管理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
  291. YHDWXMGLF(tender) {
  292. const baseFee = this["DEJZAZGCFSBSS"](tender);
  293. if (!tender) {
  294. calcBase.baseProgressiveFee = baseFee;
  295. }
  296. return calculateUtil.getProgressiveFee(
  297. baseFee,
  298. "养护单位项目管理费",
  299. projectObj.project.property.progressiveInterval,
  300. decimalObj.bills.totalPrice,
  301. deficiency
  302. );
  303. },
  304. // 信息化费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)”
  305. XXHF(tender) {
  306. const baseFee = this["DEJZAZGCFSBSS"](tender);
  307. if (!tender) {
  308. calcBase.baseProgressiveFee = baseFee;
  309. }
  310. return calculateUtil.getProgressiveFee(baseFee, "信息化费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  311. },
  312. // 工程监理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
  313. GCJLF(tender) {
  314. const baseFee = this["DEJZAZGCFSBSS"](tender);
  315. if (!tender) {
  316. calcBase.baseProgressiveFee = baseFee;
  317. }
  318. return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  319. },
  320. // 前期工作费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
  321. QQGZF(tender) {
  322. const baseFee = this["DEJZAZGCFSBSS"](tender);
  323. if (!tender) {
  324. calcBase.baseProgressiveFee = baseFee;
  325. }
  326. return calculateUtil.getProgressiveFee(baseFee, "前期工作费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  327. },
  328. // 价差预备费
  329. JCYBF(tender) {
  330. //建筑安装工程费作为基数
  331. const installFee = this["JZAZGCF"](tender);
  332. //年造价增涨
  333. const costGrowthRate = calcBase.project.property.costGrowthRate ? calcBase.project.property.costGrowthRate : 0;
  334. //增涨计费年限
  335. const growthPeriod = projectObj.project.property.growthPeriod ? calcBase.project.property.growthPeriod : 0;
  336. //= P * [(1+i)^(n-1) -1]
  337. return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
  338. },
  339. DEJZAZGCFBHZXF(tender) {
  340. // 定额建筑安装工程费(不含专项费用)
  341. const baseFee = this["DEJZAZGCF"](tender);
  342. const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
  343. return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
  344. },
  345. // {建筑安装工程费(不含安全生产费)}
  346. JZAZGCFBHAQSCF(tender) {
  347. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
  348. },
  349. // 设计文件审查费(一阶段)和 设计文件审查费(二阶段)两个基数计算后金额不满2000元均应按2000元计。
  350. SJWJSCFYJD(tender) {
  351. const baseFee = this["DEJZAZGCF"](tender);
  352. if (!tender) {
  353. calcBase.baseProgressiveFee = baseFee;
  354. }
  355. return calculateUtil.getProgressiveFee(
  356. baseFee,
  357. "设计文件审查费(一阶段)",
  358. projectObj.project.property.progressiveInterval,
  359. decimalObj.bills.totalPrice,
  360. deficiency
  361. );
  362. },
  363. SJWJSCFEJD(tender) {
  364. const baseFee = this["DEJZAZGCF"](tender);
  365. if (!tender) {
  366. calcBase.baseProgressiveFee = baseFee;
  367. }
  368. return calculateUtil.getProgressiveFee(
  369. baseFee,
  370. "设计文件审查费(二阶段)",
  371. projectObj.project.property.progressiveInterval,
  372. decimalObj.bills.totalPrice,
  373. deficiency
  374. );
  375. },
  376. DLLXJXWXJGDYBQLGCSJF(tender) {
  377. const baseFee = this["DEJZAZGCF"](tender);
  378. if (!tender) {
  379. calcBase.baseProgressiveFee = baseFee;
  380. }
  381. return calculateUtil.getProgressiveFee(
  382. baseFee,
  383. "独立进行维修、加固的一般桥梁工程设计费",
  384. projectObj.project.property.progressiveInterval,
  385. decimalObj.bills.totalPrice,
  386. deficiency
  387. );
  388. },
  389. DLLXJXWXJGDJSFZDQGCSJF(tender) {
  390. const baseFee = this["DEJZAZGCF"](tender);
  391. if (!tender) {
  392. calcBase.baseProgressiveFee = baseFee;
  393. }
  394. return calculateUtil.getProgressiveFee(
  395. baseFee,
  396. "独立进行维修、加固的技术复杂大桥工程设计费",
  397. projectObj.project.property.progressiveInterval,
  398. decimalObj.bills.totalPrice,
  399. deficiency
  400. );
  401. },
  402. DLLXJXWXJGDSDGCSJF(tender) {
  403. const baseFee = this["DEJZAZGCF"](tender);
  404. if (!tender) {
  405. calcBase.baseProgressiveFee = baseFee;
  406. }
  407. return calculateUtil.getProgressiveFee(
  408. baseFee,
  409. "独立进行维修、加固的隧道工程设计费",
  410. projectObj.project.property.progressiveInterval,
  411. decimalObj.bills.totalPrice,
  412. deficiency
  413. );
  414. },
  415. ZBF(tender) {
  416. const baseFee = this["DEJZAZGCF"](tender);
  417. if (!tender) {
  418. calcBase.baseProgressiveFee = baseFee;
  419. }
  420. return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  421. },
  422. SGTSJQQGZF(tender) {
  423. const baseFee = this["DEJZAZGCFBHZXGLF"](tender);
  424. if (!tender) {
  425. calcBase.baseProgressiveFee = baseFee;
  426. }
  427. return calculateUtil.getProgressiveFee(
  428. baseFee,
  429. "采用一阶段施工图设计的养护工程项目前期工作费",
  430. projectObj.project.property.progressiveInterval,
  431. decimalObj.bills.totalPrice,
  432. deficiency
  433. );
  434. },
  435. JSFASJQQGZF(tender) {
  436. const baseFee = this["DEJZAZGCFBHZXGLF"](tender);
  437. if (!tender) {
  438. calcBase.baseProgressiveFee = baseFee;
  439. }
  440. return calculateUtil.getProgressiveFee(
  441. baseFee,
  442. "采用一阶段技术(方案)设计的养护工程项目前期工作费",
  443. projectObj.project.property.progressiveInterval,
  444. decimalObj.bills.totalPrice,
  445. deficiency
  446. );
  447. },
  448. GCBXF(tender) {
  449. return (DEJZAZGCFBHSB(tender) * 0.4).toDecimal(decimalObj.bills.totalPrice);
  450. },
  451. };
  452. baseFigureTemplate.boq = {
  453. //{各章清单合计}
  454. // 取清单固定类别是“第100章至700章清单”的金额
  455. GZQDHJ: function (tender) {
  456. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "common");
  457. },
  458. //{专项暂定合计}
  459. // 第100章至700章清单行的暂估合价
  460. ZXZDHJ: function (tender) {
  461. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "estimate");
  462. },
  463. //{100章以外清单合计}
  464. // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
  465. // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
  466. YBZYHQDHJ: function (tender) {
  467. let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
  468. if (!oneToSeven) {
  469. return 0;
  470. }
  471. //100-700章固定节点的所有子节点
  472. let allChildren = [];
  473. function getChildren(nodes) {
  474. allChildren = allChildren.concat(nodes);
  475. for (let node of nodes) {
  476. if (node.children.length > 0) {
  477. getChildren(node.children);
  478. }
  479. }
  480. }
  481. getChildren(oneToSeven.children);
  482. //扣除的节点:100章的节点[100-200)
  483. let deductNodes = allChildren.filter(cbTools.withingOneHundred);
  484. //计算金额
  485. let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
  486. return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  487. },
  488. // 清单项目基数:{定额建筑安装工程费(定额设备购置费按40%计)} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费+设备税金之和按40%计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
  489. DEJZAZGCF(tender) {
  490. const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
  491. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
  492. const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
  493. return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
  494. },
  495. };
  496. }
  497. if (typeof materialCalcObj !== "undefined" && materialCalcObj.rationSetting) {
  498. let h = _.find(materialCalcObj.rationSetting.header, { dataCode: "feeType" });
  499. if (h) h.visible = true;
  500. let mt = _.find(materialCalcObj.freightSetting.header, { dataCode: "materialType" });
  501. if (mt) mt.visible = true;
  502. }
  503. //内蒙施工进出场(km)费率值修改特殊处理
  504. if (typeof feeRateObject !== "undefined") {
  505. feeRateObject.feeRateSpecialHandle = function (subRate, value) {
  506. let result = {};
  507. if (subRate.name == "施工进出场(km)" && value && value < 5) {
  508. //输入的数值(公里数)< 5时,该项费用不计取。
  509. result.valueKey = "0";
  510. result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
  511. }
  512. return result;
  513. };
  514. }
  515. if (typeof module !== "undefined") {
  516. module.exports = {
  517. progression,
  518. deficiency,
  519. };
  520. }