anhui_2019.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /**
  2. * Created by CSL on 2019/12/13. 安徽养护计算程序、基数 等覆盖。
  3. */
  4. let isAH2019 = true;
  5. function overwriteRationCalcBases() {
  6. if (typeof rationCalcBases == 'undefined') return;
  7. for (let key in rationCalcBases) delete rationCalcBases[key];
  8. rationCalcBases['人工费'] = function (node, isTender) {
  9. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
  10. };
  11. rationCalcBases['材料费'] = function (node, isTender) {
  12. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
  13. };
  14. rationCalcBases['施工机械使用费'] = function (node, isTender) {
  15. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
  16. };
  17. rationCalcBases['施工机械人工费'] = function (node, isTender) {
  18. return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.MACHINE_LABOUR, isTender);
  19. };
  20. rationCalcBases['设备购置费'] = function (node, isTender) {
  21. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
  22. };
  23. rationCalcBases['定额人工费'] = function (node, isTender) {
  24. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
  25. };
  26. rationCalcBases['定额材料费'] = function (node, isTender) {
  27. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
  28. };
  29. rationCalcBases['定额施工机械使用费'] = function (node, isTender) {
  30. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
  31. };
  32. /* rationCalcBases['定额商品砼费'] = function (node, isTender) {
  33. return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
  34. };*/
  35. rationCalcBases['定额设备费'] = function (node, isTender) {
  36. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
  37. };
  38. /*rationCalcBases['定额外购砼构件费'] = function (node, isTender) {
  39. return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
  40. };
  41. rationCalcBases['定额绿化苗木费'] = function (node, isTender) {
  42. return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
  43. };*/
  44. };
  45. (function overwriteFeeTypes() {
  46. if (typeof cpFeeTypes == 'undefined') return;
  47. cpFeeTypes = [
  48. { type: 'marketLabour', name: '人工费' },
  49. { type: 'marketMaterial', name: '材料费' },
  50. { type: 'marketMachine', name: '施工机械使用费' },
  51. { type: 'marketMachineLabour', name: '施工机械人工费' },
  52. {type: 'marketEquipment', name: '设备购置费'},
  53. { type: 'marketDirect', name: '直接费' },
  54. { type: 'labour', name: '定额人工费' },
  55. { type: 'material', name: '定额材料费' },
  56. { type: 'machine', name: '定额施工机械使用费' },
  57. {type: 'equipment', name: '定额设备费'},
  58. { type: 'direct', name: '定额直接费' },
  59. { type: 'measure', name: '措施费' },
  60. { type: 'manage', name: '企业管理费' },
  61. { type: 'force', name: '规费' },
  62. { type: 'profit', name: '利润' },
  63. { type: 'tax', name: '税金' },
  64. { type: 'common', name: '建安费' },
  65. { type: 'rationCommon', name: '定额建安费' }//,
  66. // {type: 'safeProduce', name: '安全生产费'}
  67. ];
  68. })();
  69. // 清单基数,工程量清单的基数没有变化,只修改预算的
  70. // 清单基数-预算
  71. if (typeof baseFigureMap !== 'undefined' && baseFigureMap.budget) {
  72. baseFigureMap.budget = {
  73. // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示。
  74. '建筑安装工程费': {
  75. base: 'JZAZGCF',
  76. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  77. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  78. pick: false,
  79. },
  80. // 显示:仅清单固定类别是“安全生产费”的可显示。
  81. '建筑安装工程费(不含安全生产费)': {
  82. base: 'JZAZGCFBHSC',
  83. fixedFlag: null,
  84. filter: [fixedFlag.SAFE_COST],
  85. pick: true
  86. },
  87. // 显示:仅清单固定类别是“安全生产费”的可显示。
  88. '建筑安装工程费(不含设备费)': {
  89. base: 'JZAZGCFBHSB',
  90. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  91. filter: [fixedFlag.SAFE_COST],
  92. pick: true
  93. },
  94. // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示。
  95. '定额建筑安装工程费': {
  96. base: 'DEJZAZGCF',
  97. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  98. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  99. pick: false
  100. },
  101. // 显示:仅清单固定类别是“施工场地建设费”的可显示。
  102. '定额建筑安装工程费(不含定额设备购置费及专项管理费)': {
  103. base: 'DEJZAZGCFBHSBZXGLF',
  104. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  105. filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
  106. pick: true,
  107. },
  108. // 显示:仅清单固定类别是“养护工程其他费用”的可显示。
  109. '定额建筑安装工程费(不含专项管理费)': {
  110. base: 'DEJZAZGCFBHZXGLF',
  111. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  112. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  113. pick: true,
  114. },
  115. // 显示:除清单固定类别是“建筑安装工程费”、“土地使用及拆迁补偿费”的以外部分可显示。
  116. '土地使用及拆迁补偿费': {
  117. base: 'TDSYJCQBCF',
  118. fixedFlag: fixedFlag.LAND_USED_DEMOLITION,
  119. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION],
  120. pick: false,
  121. },
  122. // 显示:除清单固定类别是“建筑安装工程费”、“土地使用及拆迁补偿费”、“工程建设其他费用”的以外部分可显示。
  123. '工程建设其他费用': {
  124. base: 'GCJSQTFY',
  125. fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
  126. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
  127. pick: false,
  128. },
  129. // 显示:仅清单固定类别是“施工场地建设费”的可显示。
  130. '施工场地建设费': {
  131. base: 'SGCDJSF',
  132. fixedFlag: null,
  133. filter: [fixedFlag.CONSTRUCTION_PLANT_COST],
  134. pick: true,
  135. },
  136. // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
  137. '养护单位管理费': {
  138. base: 'YHDWGLF',
  139. fixedFlag: null,
  140. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  141. pick: true,
  142. },
  143. // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
  144. '养护项目信息化费': {
  145. base: 'YHXMXXHF',
  146. fixedFlag: null,
  147. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  148. pick: true,
  149. },
  150. // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
  151. '工程监理费': {
  152. base: 'GCJLF',
  153. fixedFlag: null,
  154. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  155. pick: true,
  156. },
  157. // 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
  158. '设计文件审查费': {
  159. base: 'SJWJSCF',
  160. fixedFlag: null,
  161. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  162. pick: true,
  163. },
  164. // 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
  165. '前期工作费': {
  166. base: 'QQGZF',
  167. fixedFlag: null,
  168. filter: [fixedFlag.MAINTENANCE_EXPENSES],
  169. pick: true,
  170. },
  171. // 显示:仅“价差预备费”可显示
  172. '价差预备费': {
  173. base: 'JCYBF',
  174. fixedFlag: null,
  175. filter: [fixedFlag.SPREAD_BUDGET_FEE],
  176. pick: true,
  177. },
  178. }
  179. }
  180. // 清单基数-预算
  181. if (typeof baseFigureTemplate !== 'undefined' && baseFigureTemplate.budget) {
  182. baseFigureTemplate.budget = {
  183. // 建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
  184. JZAZGCF(tender) {
  185. const feeField = 'common';
  186. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  187. return cbTools.getBillsFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, feeField, subFeeField);
  188. },
  189. // 建筑安装工程费(不含安全生产费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除“安全生产费”的金额。
  190. JZAZGCFBHSC(tender) {
  191. const fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
  192. const deductFlags = [fixedFlag.SAFE_COST];
  193. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  194. },
  195. // 建筑安装工程费(不含设备费) 算法:取清单固定类别是“建筑安装工程费”的金额,扣除设备的金额。
  196. JZAZGCFBHSB(tender) {
  197. const fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
  198. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
  199. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  200. },
  201. // 定额建筑安装工程费 算法:取清单固定类别是“建筑安装工程费”的定额建安费。
  202. DEJZAZGCF(tender) {
  203. const feeField = 'rationCommon';
  204. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  205. return cbTools.getBillsFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, feeField, subFeeField);
  206. },
  207. // 定额建筑安装工程费(不含定额设备购置费及专项管理费) 算法:取清单固定类别是“建筑安装工程费”的“定额建安费”,扣除设备的“定额设备费”,扣除“专项费用”的“定额建安费”。
  208. DEJZAZGCFBHSBZXGLF(tender) {
  209. const fullFeeField = tender ? 'rationCommon.tenderTotalFee' : 'rationCommon.totalFee';
  210. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE, fixedFlag.SAFE_COST];
  211. //建安费扣除设备费
  212. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  213. },
  214. // 定额建筑安装工程费(不含专项管理费) 算法:取清单固定类别是“建筑安装工程费”的“定额建安费”,扣除“专项费用”的“定额建安费”。
  215. DEJZAZGCFBHZXGLF(tender) {
  216. const fullFeeField = tender ? 'rationCommon.tenderTotalFee' : 'rationCommon.totalFee';
  217. const deductFlags = [fixedFlag.SAFE_COST];
  218. //建安费扣除设备费
  219. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  220. },
  221. // 土地使用及拆迁补偿费 算法:取清单固定类别是“土地使用及拆迁补偿费”的金额。
  222. TDSYJCQBCF(tender) {
  223. const feeField = 'common';
  224. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  225. return cbTools.getBillsFee(fixedFlag.LAND_USED_DEMOLITION, feeField, subFeeField);
  226. },
  227. // 工程建设其他费用 算法:取清单固定类别是“养护工程其他费用”的金额。
  228. GCJSQTFY(tender) {
  229. const feeField = 'common';
  230. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  231. return cbTools.getBillsFee(fixedFlag.MAINTENANCE_EXPENSES, feeField, subFeeField);
  232. },
  233. // 施工场地建设费 算法:以{定额建筑安装工程费(不含定额设备购置费及专项管理费) }为基数,采用累进办法计算。
  234. SGCDJSF(tender) {
  235. const baseFee = this['DEJZAZGCFBHSBZXGLF'](tender);
  236. return cbTools.getProgressiveFee(baseFee, '施工场地建设费');
  237. },
  238. // 养护单位管理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
  239. YHDWGLF(tender) {
  240. const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
  241. return cbTools.getProgressiveFee(baseFee, '养护单位管理费');
  242. },
  243. // 养护项目信息化费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。(不足20000元时按20000元计算)
  244. YHXMXXHF(tender) {
  245. const baseFee = this['DEJZAZGCF'](tender);
  246. const fee = cbTools.getProgressiveFee(baseFee, '养护项目信息化费');
  247. return fee > 0 && fee < 20000 ? 20000 : fee;
  248. },
  249. // 工程监理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足20000元时按20000元计算)
  250. GCJLF(tender) {
  251. const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
  252. const fee = cbTools.getProgressiveFee(baseFee, '工程监理费');
  253. return fee > 0 && fee < 20000 ? 20000 : fee;
  254. },
  255. // 设计文件审查费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
  256. SJWJSCF(tender) {
  257. const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
  258. return cbTools.getProgressiveFee(baseFee, '设计文件审查费');
  259. },
  260. // 前期工作费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足30000元时按30000元计算)
  261. QQGZF(tender) {
  262. const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
  263. const fee = cbTools.getProgressiveFee(baseFee, '前期工作费');
  264. return fee > 0 && fee < 30000 ? 30000 : fee;
  265. },
  266. /* 价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
  267. 价差预备费 P * [(1+i)^(n-1) -1]
  268. P——建筑安装工程费总额(元);
  269. i——年工程造价增涨率(%);
  270. n——设计文件编制年至养护项目开工年+养护项目建设期限(年)。
  271. */
  272. JCYBF(tender) {
  273. //建筑安装工程费作为基数
  274. const installFee = this['JZAZGCF'](tender);
  275. //年造价增涨
  276. const costGrowthRate = calcBase.project.property.costGrowthRate
  277. ? calcBase.project.property.costGrowthRate
  278. : 0;
  279. //增涨计费年限
  280. const growthPeriod = projectObj.project.property.growthPeriod
  281. ? calcBase.project.property.growthPeriod
  282. : 0;
  283. //= P * [(1+i)^(n-1) -1]
  284. return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
  285. }
  286. };
  287. }
  288. // 安徽养护在新建分段的时候需要隐藏养护类别和费用标准
  289. if (typeof $ !== 'undefined') { // 后端也有引用这个文件,后端引用时$没有定义会报错
  290. $(document).ready(function() {
  291. $('#tender-engineering-group').hide();
  292. $('#tender-feeStandard-group').hide();
  293. });
  294. }