neimeng_2022.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  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. base: "DEJZAZGCF",
  108. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  109. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  110. pick: false,
  111. },
  112. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  113. "建筑安装工程费(不含设备费)": {
  114. base: "JZAZGCFBHSB",
  115. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  116. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  117. pick: false,
  118. },
  119. "定额建筑安装工程费(不含专项费用)": {
  120. base: "DEJZAZGCFBHZXF",
  121. fixedFlag: null,
  122. filter: [fixedFlag.SPECIAL_COST],
  123. pick: true,
  124. },
  125. "建筑安装工程费(不含安全生产费)": {
  126. base: "JZAZGCFBHAQSCF",
  127. // fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  128. fixedFlag: null,
  129. filter: [fixedFlag.SAFE_COST],
  130. pick: true,
  131. },
  132. // 取清单固定类别是“养护工程其他费”的金额。“建筑安装工程费”、“养护工程其他费”以外部分可显示。
  133. 养护工程其他费: {
  134. base: "YHGCQTFY",
  135. fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
  136. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
  137. pick: false,
  138. },
  139. // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  140. 养护管理单位项目管理费: {
  141. isProgressive: true,
  142. base: "YHDWXMGLF",
  143. fixedFlag: null,
  144. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  145. pick: true,
  146. },
  147. // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  148. 养护项目信息化费: {
  149. isProgressive: true,
  150. base: "XXHF",
  151. fixedFlag: null,
  152. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  153. pick: true,
  154. },
  155. // 工程监理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
  156. 工程监理费: {
  157. isProgressive: true,
  158. base: "GCJLF",
  159. fixedFlag: null,
  160. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  161. pick: true,
  162. },
  163. // 工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示。不足5000元,按5000元计取。
  164. 工程设计费: {
  165. isProgressive: true,
  166. deficiency: 5000,
  167. base: "GCSJF",
  168. fixedFlag: null,
  169. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  170. pick: true,
  171. },
  172. // 设计文件审查费(一阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
  173. "设计文件审查费(一阶段)": {
  174. isProgressive: true,
  175. deficiency: 3000,
  176. base: "SJWJSCFYJD",
  177. fixedFlag: null,
  178. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  179. pick: true,
  180. },
  181. // 设计文件审查费(二阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
  182. "设计文件审查费(二阶段)": {
  183. isProgressive: true,
  184. deficiency: 3000,
  185. base: "SJWJSCFEJD",
  186. fixedFlag: null,
  187. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  188. pick: true,
  189. },
  190. // 采用一阶段施工图设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  191. 采用一阶段施工图设计的养护工程项目前期工作费: {
  192. isProgressive: true,
  193. deficiency: 5000,
  194. base: "SGTSJQQGZF",
  195. fixedFlag: null,
  196. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  197. pick: true,
  198. },
  199. // 采用一阶段技术(方案)设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  200. "采用一阶段技术(方案)设计的养护工程项目前期工作费": {
  201. isProgressive: true,
  202. deficiency: 5000,
  203. base: "JSFASJQQGZF",
  204. fixedFlag: null,
  205. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  206. pick: true,
  207. },
  208. // 独立进行维修、加固的一般桥梁工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  209. "独立进行维修、加固的一般桥梁工程设计费": {
  210. isProgressive: true,
  211. deficiency: 5000,
  212. base: "DLLXJXWXJGDYBQLGCSJF",
  213. fixedFlag: null,
  214. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  215. pick: true,
  216. },
  217. // 独立进行维修、加固的技术复杂大桥工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  218. "独立进行维修、加固的技术复杂大桥工程设计费": {
  219. isProgressive: true,
  220. deficiency: 5000,
  221. base: "DLLXJXWXJGDJSFZDQGCSJF",
  222. fixedFlag: null,
  223. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  224. pick: true,
  225. },
  226. // 独立进行维修、加固的隧道工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  227. "独立进行维修、加固的隧道工程设计费": {
  228. isProgressive: true,
  229. deficiency: 5000,
  230. base: "DLLXJXWXJGDSDGCSJF",
  231. fixedFlag: null,
  232. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  233. pick: true,
  234. },
  235. // 招标费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
  236. 招标费: {
  237. isProgressive: true,
  238. deficiency: 5000,
  239. base: "ZBF",
  240. fixedFlag: null,
  241. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  242. pick: true,
  243. },
  244. // 工程保险费: 按“定额建筑安装工程费(不含设备费)”为基数,以0.4费率计算。仅清单固定类别是“养护工程其他费”可显示。
  245. 工程保险费: {
  246. base: "GCBXF",
  247. fixedFlag: null,
  248. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  249. pick: true,
  250. },
  251. 价差预备费: {
  252. base: "JCYBF",
  253. fixedFlag: null,
  254. filter: [fixedFlag.SPREAD_BUDGET_FEE],
  255. pick: true,
  256. },
  257. };
  258. const boqMap = {
  259. //仅允许用于固定类别是“第100章至700章清单”以外的清单
  260. 各章清单合计: {
  261. base: "GZQDHJ",
  262. fixedFlag: fixedFlag.ONE_SEVEN_BILLS,
  263. filter: [fixedFlag.ONE_SEVEN_BILLS],
  264. pick: false,
  265. },
  266. //仅允许用于固定类别是“第100章至700章清单”以外的清单
  267. 专项暂定合计: {
  268. base: "ZXZDHJ",
  269. fixedFlag: null,
  270. filter: [fixedFlag.ONE_SEVEN_BILLS],
  271. pick: false,
  272. },
  273. /*
  274. * 清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
  275. * 因此{100章以外合计}不设置关联的清单固定行
  276. * */
  277. //仅允许用于固定类别为“100章清单”引用
  278. "100章以外清单合计": {
  279. base: "YBZYHQDHJ",
  280. fixedFlag: null,
  281. filter: [fixedFlag.ONE_HUNDRED_BILLS],
  282. pick: true,
  283. },
  284. };
  285. baseFigureMap.budget = budgetMap;
  286. baseFigureMap.boq = boqMap;
  287. }
  288. // 清单基数
  289. if (typeof baseFigureTemplate !== "undefined") {
  290. const { fixedFlag } = commonConstants;
  291. baseFigureTemplate.budget = {
  292. // 建筑安装工程费
  293. JZAZGCF(tender) {
  294. return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  295. },
  296. // 定额建筑安装工程费(定额设备购置费按40%计): 算法1:直接减去设备购置的60%,其它全部在(全额设备税金)
  297. DEJZAZGCF(tender) {
  298. const feeField = "rationCommon";
  299. const baseFee = cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, feeField);
  300. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  301. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "equipment");
  302. return (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
  303. },
  304. // 定额建筑安装工程费(定额设备购置费按40%计): 算法2:有“定额设备购置费”的清单,取其40%
  305. DEJZAZGCFSBSS(tender) {
  306. const feeField = "rationCommon";
  307. //建安费扣除定额设备购置费
  308. const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, feeField, false);
  309. //定额设备购置费
  310. const equipmentAcFee = cbTools.getBaseFee(fixedFlag.EQUIPMENT_ACQUISITION_FEE, tender, feeField);
  311. return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
  312. },
  313. // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
  314. // JZAZGCFBHSB(tender) {
  315. // //建安费扣除设备费
  316. // return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
  317. // },
  318. JZAZGCFBHSB(tender) {
  319. const baseFee = cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
  320. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
  321. const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, "common");
  322. return (baseFee - equipmentFee).toDecimal(decimalObj.bills.totalPrice);
  323. },
  324. // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
  325. TDSYJCQBCF(tender) {
  326. return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, "common");
  327. },
  328. // 养护工程其他费用:取清单固定类别是“养护工程其他费用”的金额
  329. YHGCQTFY(tender) {
  330. return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, "common");
  331. },
  332. // 预备费:取清单固定类别是“预备费”的金额
  333. YBF(tender) {
  334. return cbTools.getBaseFee(fixedFlag.BUDGET_FEE, tender, "common");
  335. },
  336. // 养护单位项目管理费
  337. YHDWXMGLF(tender) {
  338. const baseFee = this.DEJZAZGCF(tender);
  339. if (!tender) {
  340. calcBase.baseProgressiveFee = baseFee;
  341. }
  342. return calculateUtil.getProgressiveFee(
  343. baseFee,
  344. "养护单位项目管理费",
  345. projectObj.project.property.progressiveInterval,
  346. decimalObj.bills.totalPrice,
  347. deficiency
  348. );
  349. },
  350. // 信息化费
  351. XXHF(tender) {
  352. const baseFee = this.DEJZAZGCF(tender);
  353. if (!tender) {
  354. calcBase.baseProgressiveFee = baseFee;
  355. }
  356. return calculateUtil.getProgressiveFee(baseFee, "信息化费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  357. },
  358. // 工程监理费
  359. GCJLF(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. JCYBF(tender) {
  368. //建筑安装工程费作为基数
  369. const installFee = this["JZAZGCF"](tender);
  370. //年造价增涨
  371. const costGrowthRate = calcBase.project.property.costGrowthRate ? calcBase.project.property.costGrowthRate : 0;
  372. //增涨计费年限
  373. const growthPeriod = projectObj.project.property.growthPeriod ? calcBase.project.property.growthPeriod : 0;
  374. //= P * [(1+i)^(n-1) -1]
  375. return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
  376. },
  377. // 定额建筑安装工程费(不含专项费用)
  378. // DEJZAZGCFBHZXF(tender) {
  379. // const baseFee = this["DEJZAZGCF"](tender);
  380. // const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
  381. // return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
  382. // },
  383. DEJZAZGCFBHZXF(tender) {
  384. // 定额建筑安装工程费(不含专项费用)
  385. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SPECIAL_COST], tender, "rationCommon", true);
  386. },
  387. // {建筑安装工程费(不含安全生产费)}
  388. JZAZGCFBHAQSCF(tender) {
  389. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
  390. },
  391. GCSJF(tender) {
  392. const baseFee = this["DEJZAZGCF"](tender);
  393. if (!tender) {
  394. calcBase.baseProgressiveFee = baseFee;
  395. }
  396. return calculateUtil.getProgressiveFee(baseFee, "工程设计费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  397. },
  398. SJWJSCFYJD(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. SJWJSCFEJD(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. DLLXJXWXJGDYBQLGCSJF(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. DLLXJXWXJGDJSFZDQGCSJF(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. DLLXJXWXJGDSDGCSJF(tender) {
  451. const baseFee = this["DEJZAZGCF"](tender);
  452. if (!tender) {
  453. calcBase.baseProgressiveFee = baseFee;
  454. }
  455. return calculateUtil.getProgressiveFee(
  456. baseFee,
  457. "独立进行维修、加固的隧道工程设计费",
  458. projectObj.project.property.progressiveInterval,
  459. decimalObj.bills.totalPrice,
  460. deficiency
  461. );
  462. },
  463. ZBF(tender) {
  464. const baseFee = this["DEJZAZGCF"](tender);
  465. if (!tender) {
  466. calcBase.baseProgressiveFee = baseFee;
  467. }
  468. return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
  469. },
  470. SGTSJQQGZF(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. JSFASJQQGZF(tender) {
  484. const baseFee = this["DEJZAZGCF"](tender);
  485. if (!tender) {
  486. calcBase.baseProgressiveFee = baseFee;
  487. }
  488. return calculateUtil.getProgressiveFee(
  489. baseFee,
  490. "采用一阶段技术(方案)设计的养护工程项目前期工作费",
  491. projectObj.project.property.progressiveInterval,
  492. decimalObj.bills.totalPrice,
  493. deficiency
  494. );
  495. },
  496. GCBXF(tender) {
  497. return (this.JZAZGCFBHSB(tender) * 0.004).toDecimal(decimalObj.bills.totalPrice);
  498. },
  499. };
  500. baseFigureTemplate.boq = {
  501. //{各章清单合计}
  502. // 取清单固定类别是“第100章至700章清单”的金额
  503. GZQDHJ: function (tender) {
  504. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "common");
  505. },
  506. //{专项暂定合计}
  507. // 第100章至700章清单行的暂估合价
  508. ZXZDHJ: function (tender) {
  509. return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, "estimate");
  510. },
  511. //{100章以外清单合计}
  512. // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
  513. // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
  514. YBZYHQDHJ: function (tender) {
  515. let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
  516. if (!oneToSeven) {
  517. return 0;
  518. }
  519. //100-700章固定节点的所有子节点
  520. let allChildren = [];
  521. function getChildren(nodes) {
  522. allChildren = allChildren.concat(nodes);
  523. for (let node of nodes) {
  524. if (node.children.length > 0) {
  525. getChildren(node.children);
  526. }
  527. }
  528. }
  529. getChildren(oneToSeven.children);
  530. //扣除的节点:100章的节点[100-200)
  531. let deductNodes = allChildren.filter(cbTools.withingOneHundred);
  532. //计算金额
  533. let fullFeeField = tender ? "common.tenderTotalFee" : "common.totalFee";
  534. return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  535. },
  536. // 清单项目基数:{定额建筑安装工程费(定额设备购置费按40%计)} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费+设备税金之和按40%计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
  537. DEJZAZGCF(tender) {
  538. const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
  539. const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
  540. const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
  541. return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
  542. },
  543. };
  544. }
  545. if (typeof materialCalcObj !== "undefined" && materialCalcObj.rationSetting) {
  546. let h = _.find(materialCalcObj.rationSetting.header, { dataCode: "feeType" });
  547. if (h) h.visible = true;
  548. let mt = _.find(materialCalcObj.freightSetting.header, { dataCode: "materialType" });
  549. if (mt) mt.visible = true;
  550. }
  551. //内蒙施工进出场(km)费率值修改特殊处理
  552. if (typeof feeRateObject !== "undefined") {
  553. feeRateObject.feeRateSpecialHandle = function (subRate, value) {
  554. let result = {};
  555. if (subRate.name == "施工进出场(km)" && value && value < 5) {
  556. result.valueKey = "5"; // 5km 内按 5km 计。
  557. result.value = scMathUtil.roundForObj(value, getDecimal("feeRate"));
  558. }
  559. return result;
  560. };
  561. }
  562. if (typeof module !== "undefined") {
  563. const defaultDecimal = {
  564. bills: { unitPrice: 2, totalPrice: 0 },
  565. ration: { quantity: 3, unitPrice: 2, totalPrice: 0 },
  566. glj: { quantity: 3, unitPriceHasMix: 2, unitPrice: 2 },
  567. feeRate: 4,
  568. quantity_detail: 4,
  569. material: 5,
  570. process: 6,
  571. marketPriceProcess: 2,
  572. temProcess: 6,
  573. };
  574. module.exports = {
  575. progression,
  576. deficiency,
  577. defaultDecimal,
  578. };
  579. }
  580. if (typeof projectObj !== "undefined") {
  581. projectObj.isInsertEquipmentVisable = function (selected) {
  582. // if (projectObj.project.property.valuationType !== "ration") {
  583. // //预算项目中,右键“插入设备”,仅在第一部分中显示。
  584. // return projectObj.project.Bills.isConstructionInstall(selected);
  585. // }
  586. return true;
  587. };
  588. }