neimeng_2022.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612
  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. DEJZAZGCF(tender) {
  300. const feeField = "rationCommon";
  301. const baseFee = cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, feeField);
  302. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  303. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  304. return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
  305. },
  306. // 定额建筑安装工程费(定额设备购置费按40%计)
  307. DEJZAZGCFSBSS(tender) {
  308. const feeField = "rationCommon";
  309. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
  310. //建安费扣除定额设备购置费
  311. const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
  312. //定额设备购置费
  313. const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
  314. return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
  315. },
  316. // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
  317. // JZAZGCFBHSB(tender) {
  318. // //建安费扣除设备费
  319. // return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
  320. // },
  321. JZAZGCFBHSB(tender) {
  322. const baseFee = cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  323. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  324. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "common");
  325. return (baseFee - equipmentFee).toDecimal(decimalObj.bills.totalPrice);
  326. },
  327. // 定额建筑安装工程费(不含设备费)
  328. DEJZAZGCFBHSB(tender) {
  329. //建安费扣除设备费
  330. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "rationCommon");
  331. },
  332. // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
  333. TDSYJCQBCF(tender) {
  334. return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, "common");
  335. },
  336. // 养护工程其他费用:取清单固定类别是“养护工程其他费用”的金额
  337. YHGCQTFY(tender) {
  338. return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, "common");
  339. },
  340. // 预备费:取清单固定类别是“预备费”的金额
  341. YBF(tender) {
  342. return cbTools.getBaseFee(fixedFlag.BUDGET_FEE, tender, "common");
  343. },
  344. // 养护单位项目管理费
  345. YHDWXMGLF(tender) {
  346. const baseFee = this.DEJZAZGCF(tender);
  347. if (!tender) {
  348. calcBase.baseProgressiveFee = baseFee;
  349. }
  350. return calculateUtil.getProgressiveFee(
  351. baseFee,
  352. "养护单位项目管理费",
  353. projectObj.project.property.progressiveInterval,
  354. decimalObj.bills.totalPrice,
  355. deficiency
  356. );
  357. },
  358. // 信息化费
  359. XXHF(tender) {
  360. const baseFee = this.DEJZAZGCF(tender);
  361. if (!tender) {
  362. calcBase.baseProgressiveFee = baseFee;
  363. }
  364. return calculateUtil.getProgressiveFee(baseFee, "信息化费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  365. },
  366. // 工程监理费
  367. GCJLF(tender) {
  368. const baseFee = this.DEJZAZGCF(tender);
  369. if (!tender) {
  370. calcBase.baseProgressiveFee = baseFee;
  371. }
  372. return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  373. },
  374. // 价差预备费
  375. JCYBF(tender) {
  376. //建筑安装工程费作为基数
  377. const installFee = this["JZAZGCF"](tender);
  378. //年造价增涨
  379. const costGrowthRate = calcBase.project.property.costGrowthRate ? calcBase.project.property.costGrowthRate : 0;
  380. //增涨计费年限
  381. const growthPeriod = projectObj.project.property.growthPeriod ? calcBase.project.property.growthPeriod : 0;
  382. //= P * [(1+i)^(n-1) -1]
  383. return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
  384. },
  385. // 定额建筑安装工程费(不含专项费用)
  386. // DEJZAZGCFBHZXF(tender) {
  387. // const baseFee = this["DEJZAZGCF"](tender);
  388. // const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
  389. // return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
  390. // },
  391. DEJZAZGCFBHZXF(tender) {
  392. // 定额建筑安装工程费(不含专项费用)
  393. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, "rationCommon", true);
  394. },
  395. // {建筑安装工程费(不含安全生产费)}
  396. JZAZGCFBHAQSCF(tender) {
  397. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
  398. },
  399. GCSJF(tender) {
  400. const baseFee = this["DEJZAZGCF"](tender);
  401. if (!tender) {
  402. calcBase.baseProgressiveFee = baseFee;
  403. }
  404. return calculateUtil.getProgressiveFee(baseFee, "工程设计费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  405. },
  406. SJWJSCFYJD(tender) {
  407. const baseFee = this["DEJZAZGCF"](tender);
  408. if (!tender) {
  409. calcBase.baseProgressiveFee = baseFee;
  410. }
  411. return calculateUtil.getProgressiveFee(
  412. baseFee,
  413. "设计文件审查费(一阶段)",
  414. projectObj.project.property.progressiveInterval,
  415. decimalObj.bills.totalPrice,
  416. deficiency
  417. );
  418. },
  419. SJWJSCFEJD(tender) {
  420. const baseFee = this["DEJZAZGCF"](tender);
  421. if (!tender) {
  422. calcBase.baseProgressiveFee = baseFee;
  423. }
  424. return calculateUtil.getProgressiveFee(
  425. baseFee,
  426. "设计文件审查费(二阶段)",
  427. projectObj.project.property.progressiveInterval,
  428. decimalObj.bills.totalPrice,
  429. deficiency
  430. );
  431. },
  432. DLLXJXWXJGDYBQLGCSJF(tender) {
  433. const baseFee = this["DEJZAZGCF"](tender);
  434. if (!tender) {
  435. calcBase.baseProgressiveFee = baseFee;
  436. }
  437. return calculateUtil.getProgressiveFee(
  438. baseFee,
  439. "独立进行维修、加固的一般桥梁工程设计费",
  440. projectObj.project.property.progressiveInterval,
  441. decimalObj.bills.totalPrice,
  442. deficiency
  443. );
  444. },
  445. DLLXJXWXJGDJSFZDQGCSJF(tender) {
  446. const baseFee = this["DEJZAZGCF"](tender);
  447. if (!tender) {
  448. calcBase.baseProgressiveFee = baseFee;
  449. }
  450. return calculateUtil.getProgressiveFee(
  451. baseFee,
  452. "独立进行维修、加固的技术复杂大桥工程设计费",
  453. projectObj.project.property.progressiveInterval,
  454. decimalObj.bills.totalPrice,
  455. deficiency
  456. );
  457. },
  458. DLLXJXWXJGDSDGCSJF(tender) {
  459. const baseFee = this["DEJZAZGCF"](tender);
  460. if (!tender) {
  461. calcBase.baseProgressiveFee = baseFee;
  462. }
  463. return calculateUtil.getProgressiveFee(
  464. baseFee,
  465. "独立进行维修、加固的隧道工程设计费",
  466. projectObj.project.property.progressiveInterval,
  467. decimalObj.bills.totalPrice,
  468. deficiency
  469. );
  470. },
  471. ZBF(tender) {
  472. const baseFee = this["DEJZAZGCF"](tender);
  473. if (!tender) {
  474. calcBase.baseProgressiveFee = baseFee;
  475. }
  476. return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  477. },
  478. SGTSJQQGZF(tender) {
  479. const baseFee = this["DEJZAZGCF"](tender);
  480. if (!tender) {
  481. calcBase.baseProgressiveFee = baseFee;
  482. }
  483. return calculateUtil.getProgressiveFee(
  484. baseFee,
  485. "采用一阶段施工图设计的养护工程项目前期工作费",
  486. projectObj.project.property.progressiveInterval,
  487. decimalObj.bills.totalPrice,
  488. deficiency
  489. );
  490. },
  491. JSFASJQQGZF(tender) {
  492. const baseFee = this["DEJZAZGCF"](tender);
  493. if (!tender) {
  494. calcBase.baseProgressiveFee = baseFee;
  495. }
  496. return calculateUtil.getProgressiveFee(
  497. baseFee,
  498. "采用一阶段技术(方案)设计的养护工程项目前期工作费",
  499. projectObj.project.property.progressiveInterval,
  500. decimalObj.bills.totalPrice,
  501. deficiency
  502. );
  503. },
  504. GCBXF(tender) {
  505. return (this.DEJZAZGCFBHSB(tender) * 0.4).toDecimal(decimalObj.bills.totalPrice);
  506. },
  507. };
  508. baseFigureTemplate.boq = {
  509. //{各章清单合计}
  510. // 取清单固定类别是“第100章至700章清单”的金额
  511. GZQDHJ: function (tender) {
  512. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "common");
  513. },
  514. //{专项暂定合计}
  515. // 第100章至700章清单行的暂估合价
  516. ZXZDHJ: function (tender) {
  517. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "estimate");
  518. },
  519. //{100章以外清单合计}
  520. // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
  521. // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
  522. YBZYHQDHJ: function (tender) {
  523. let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
  524. if (!oneToSeven) {
  525. return 0;
  526. }
  527. //100-700章固定节点的所有子节点
  528. let allChildren = [];
  529. function getChildren(nodes) {
  530. allChildren = allChildren.concat(nodes);
  531. for (let node of nodes) {
  532. if (node.children.length > 0) {
  533. getChildren(node.children);
  534. }
  535. }
  536. }
  537. getChildren(oneToSeven.children);
  538. //扣除的节点:100章的节点[100-200)
  539. let deductNodes = allChildren.filter(cbTools.withingOneHundred);
  540. //计算金额
  541. let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
  542. return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  543. },
  544. // 清单项目基数:{定额建筑安装工程费(定额设备购置费按40%计)} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费+设备税金之和按40%计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
  545. DEJZAZGCF(tender) {
  546. const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
  547. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
  548. const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
  549. return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
  550. },
  551. };
  552. }
  553. if (typeof materialCalcObj !== "undefined" && materialCalcObj.rationSetting) {
  554. let h = _.find(materialCalcObj.rationSetting.header, { dataCode: "feeType" });
  555. if (h) h.visible = true;
  556. let mt = _.find(materialCalcObj.freightSetting.header, { dataCode: "materialType" });
  557. if (mt) mt.visible = true;
  558. }
  559. //内蒙施工进出场(km)费率值修改特殊处理
  560. if (typeof feeRateObject !== "undefined") {
  561. feeRateObject.feeRateSpecialHandle = function (subRate, value) {
  562. let result = {};
  563. if (subRate.name == "施工进出场(km)" && value && value < 5) {
  564. result.valueKey = "5"; // 5km 内按 5km 计。
  565. result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));
  566. }
  567. return result;
  568. };
  569. }
  570. if (typeof module !== "undefined") {
  571. const defaultDecimal = {
  572. bills: { unitPrice: 2, totalPrice: 0 },
  573. ration: { quantity: 3, unitPrice: 2, totalPrice: 0 },
  574. glj: { quantity: 3, unitPriceHasMix: 2, unitPrice: 2 },
  575. feeRate: 4,
  576. quantity_detail: 4,
  577. material: 5,
  578. process: 6,
  579. marketPriceProcess: 2,
  580. temProcess: 6,
  581. };
  582. module.exports = {
  583. progression,
  584. deficiency,
  585. defaultDecimal,
  586. };
  587. }
  588. if (typeof projectObj !== "undefined") {
  589. projectObj.isInsertEquipmentVisable = function (selected) {
  590. // if (projectObj.project.property.valuationType !== "ration") {
  591. // //预算项目中,右键“插入设备”,仅在第一部分中显示。
  592. // return projectObj.project.Bills.isConstructionInstall(selected);
  593. // }
  594. return true;
  595. };
  596. }