neimeng_2022.js 24 KB

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