chongqing_2018.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. /**
  2. * Created by zhang on 2018/8/14.
  3. */
  4. if(typeof projectGljObject !== 'undefined'){
  5. projectGljObject.displayTypeMap=[
  6. {ID:'LABOUR',text:'人工'},
  7. {ID:'GENERAL_MATERIAL',text:'材料'},
  8. {ID:'GENERAL_MACHINE',text:'施工机具'},//重庆2018定额中去掉了主材,机械的显示改为了施工机具
  9. {ID:'MAIN_MATERIAL',text:'主材'}
  10. ];
  11. }
  12. if(typeof gljUtil !== 'undefined'){
  13. gljUtil.hasCompMachine = [301,304];//有组成物的机械
  14. gljUtil.machineComposition = [303,305,306,307,308,309,310,311];//可以做为机械组成物的类型
  15. }
  16. //允许使用的工料机类型:人工、普通材料、混凝土、砂浆、配合比、商品混凝土、商品砂浆、其他材料费、机械台班、机上人工、仪器仪表、燃料动力费、折旧费、
  17. // 检修费、维护费、安拆费及场外运费、校验费、其他费用、主材、企业管理费、利润、一般风险费
  18. if(typeof allowGljType !== 'undefined'){
  19. allowGljType = [1, 201, 202, 203, 204, 205, 206, 207, 301, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 4, 6, 7, 8];
  20. }
  21. if(typeof allowComponent !== 'undefined'){
  22. //允许含有组成物的工料机类型:混凝土、砂浆、配合比、机械台班、仪器仪表、主材
  23. allowComponent = [202, 203, 204, 301, 304, 4];
  24. }
  25. if(typeof componentType !== 'undefined'){
  26. //可以作为组成物的工料机类型:普通材料、机上人工、燃料动力费、折旧费、检修费、维护费、安拆费及场外运费、校验费、其他费用、主材
  27. componentType = [201, 303, 305, 306, 307, 308, 309, 310, 311, 4];
  28. }
  29. if(typeof machineAllowComponent !== 'undefined'){
  30. //允许含有组成物的机械工料机类型:机械台班、仪器仪表
  31. machineAllowComponent = [301, 304];
  32. }
  33. if(typeof machineComponent !== 'undefined'){
  34. //可以作为机械工料机组成物的工料机类型:机械组成物、机上人工、燃料动力费、折旧费、检修费、维护费、安拆费及场外运费、校验费、其他费用
  35. machineComponent = [303, 305, 306, 307, 308, 309, 310, 311];
  36. }
  37. if(typeof materialAllowComponent !== 'undefined'){
  38. //允许含有组成物的材料工料机类型:混凝土、砂浆、配合比
  39. materialAllowComponent = [202, 203, 204];
  40. }
  41. if(typeof materialComponent !== 'undefined'){
  42. //可以作为材料工料机组成物的工料机类型:普通材料
  43. materialComponent = [201];
  44. }
  45. // CSL, 2018-08-21 计算程序、基数 的覆盖。---------------------------------------------------------------------------------
  46. const baseMachineTypes_CQ_2018_JX = [ // 重庆2018新定额施工机具之三大机械类型
  47. gljType.GENERAL_MACHINE,
  48. gljType.INSTRUMENT,
  49. gljType.OTHER_MACHINE_USED
  50. ];
  51. baseMaterialTypes.push(gljType.OTHER_MATERIAL);
  52. allMaterialTypes.delete(gljType.EQUIPMENT);
  53. baseMachineTypes.delete(gljType.MACHINE_COMPOSITION);
  54. baseMachineTypes.push(gljType.INSTRUMENT, gljType.FUEL_POWER_FEE, gljType.DEPRECIATION_FEE,
  55. gljType.INSPECTION_FEE, gljType.MAINTENANCE, gljType.DISMANTLING_FREIGHT_FEE,
  56. gljType.VERIFICATION_FEE, gljType.OTHER_FEE, gljType.OTHER_MACHINE_USED);
  57. baseMachineMasterTypes.push(gljType.INSTRUMENT);
  58. if (rationCalcBases){
  59. changePropNames(rationCalcBases,
  60. ['定额基价人工费', '定额基价材料费', '甲供定额基价人工费', '甲供定额基价材料费', '甲定定额基价人工费', '甲定定额基价材料费', '分包定额基价人工费','分包定额基价材料费'],
  61. ['定额人工费', '定额材料费', '甲供定额人工费', '甲供定额材料费', '甲定定额人工费', '甲定定额材料费', '分包定额人工费','分包定额材料费']
  62. );
  63. deletePropNames(rationCalcBases, [
  64. '定额基价机械费', '定额基价机上人工费', '机械费价差', '主材费价差', '设备费价差','甲供定额基价机械费','甲定定额基价机械费',
  65. '设备费', '甲供设备费', '甲定设备费', '分包设备费', '分包定额基价机械费']);
  66. rationCalcBases['定额其他材料费'] = function (node, isTender) {
  67. return calcTools.rationBaseFee(node, [gljType.OTHER_MATERIAL], priceTypes.ptBasePrice, isTender);
  68. },
  69. rationCalcBases['定额施工机具使用费'] = function (node, isTender) {
  70. return calcTools.rationBaseFee(node, baseMachineTypes_CQ_2018_JX, priceTypes.ptBasePrice, isTender);
  71. },
  72. rationCalcBases['计价材料价差'] = function (node, isTender) {
  73. let baseMaterialTypesWithoutOtherMaterial = [
  74. gljType.GENERAL_MATERIAL,
  75. gljType.CONCRETE,
  76. gljType.MORTAR,
  77. gljType.MIX_RATIO,
  78. gljType.COMMERCIAL_CONCRETE,
  79. gljType.COMMERCIAL_MORTAR
  80. ];
  81. return calcTools.rationBaseFee(node, baseMaterialTypesWithoutOtherMaterial, priceTypes.ptDiffPrice, isTender);
  82. },
  83. rationCalcBases['机上人工费价差'] = function (node, isTender) {
  84. return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
  85. };
  86. rationCalcBases['主材费(市场价)'] = function (node, isTender) {
  87. return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
  88. };
  89. rationCalcBases['机械燃料动力费价差'] = function (node, isTender) {
  90. return calcTools.rationBaseFee(node, [gljType.FUEL_POWER_FEE], priceTypes.ptDiffPrice, isTender);
  91. };
  92. rationCalcBases['机械折旧费'] = function (node, isTender) {
  93. return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
  94. gljType.DEPRECIATION_FEE, isTender);
  95. };
  96. rationCalcBases['特大机械检修费'] = function (node, isTender) {
  97. return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], baseMachineMasterTypes,
  98. gljType.INSPECTION_FEE, isTender);
  99. };
  100. rationCalcBases['中小机械检修费'] = function (node, isTender) {
  101. return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], baseMachineMasterTypes,
  102. gljType.INSPECTION_FEE, isTender);
  103. };
  104. rationCalcBases['特大机械维护费'] = function (node, isTender) {
  105. return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], baseMachineMasterTypes,
  106. gljType.MAINTENANCE, isTender);
  107. };
  108. rationCalcBases['中小机械维护费'] = function (node, isTender) {
  109. return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], baseMachineMasterTypes,
  110. gljType.MAINTENANCE, isTender);
  111. };
  112. rationCalcBases['机械安拆费及场外运输费'] = function (node, isTender) {
  113. return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
  114. gljType.DISMANTLING_FREIGHT_FEE, isTender);
  115. };
  116. rationCalcBases['机械燃料动力费'] = function (node, isTender) {
  117. return calcTools.machineDetailFee(node, node.data.gljList, [], baseMachineMasterTypes,
  118. gljType.FUEL_POWER_FEE, isTender);
  119. };
  120. rationCalcBases['定额仪器仪表费'] = function (node, isTender) {
  121. return calcTools.rationBaseFee(node, [gljType.INSTRUMENT], priceTypes.ptBasePrice, isTender);
  122. },
  123. rationCalcBases['定额其他施工机具使用费'] = function (node, isTender) {
  124. return calcTools.rationBaseFee(node, [gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
  125. },
  126. rationCalcBases['甲供定额施工机具费'] = function (node, isTender) {
  127. return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JGDESGJJF, isTender);
  128. };
  129. rationCalcBases['甲定定额施工机具费'] = function (node, isTender) {
  130. return calcTools.partASupplyFee(node, rationCalcBasesNameMap.JDDESGJJF, isTender);
  131. };
  132. rationCalcBases['分包定额施工机具费'] = function (node, isTender) {
  133. if (node.data.isSubcontract)
  134. return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender)
  135. else
  136. return 0;
  137. };
  138. rationCalcBases['建筑面积'] = function (node, isTender) {
  139. return calcTools.getProjectFeatureProperty('buildingArea');
  140. };
  141. };
  142. if (rationCalcBasesNameMap) {
  143. let str = '基价';
  144. for (let pn in rationCalcBasesNameMap){
  145. if (rationCalcBasesNameMap[pn].includes(str))
  146. rationCalcBasesNameMap[pn] = rationCalcBasesNameMap[pn].replace(new RegExp(str, "g"), '');
  147. };
  148. rationCalcBasesNameMap.DEQTCLF = '定额其他材料费';
  149. rationCalcBasesNameMap.DESGJJSYF = '定额施工机具使用费';
  150. rationCalcBasesNameMap.JJCLJC = '计价材料价差';
  151. rationCalcBasesNameMap.JSRGFJC = '机上人工费价差';
  152. rationCalcBasesNameMap.JXRLDLFJC = '机械燃料动力费价差';
  153. rationCalcBasesNameMap.JXZJF = '机械折旧费';
  154. rationCalcBasesNameMap.TDJXJXF = '特大机械检修费';
  155. rationCalcBasesNameMap.ZXJXJXF = '中小机械检修费';
  156. rationCalcBasesNameMap.TDJXWHF = '特大机械维护费';
  157. rationCalcBasesNameMap.ZXJXWHF = '中小机械维护费';
  158. rationCalcBasesNameMap.XXACJCWYSF = '机械安拆费及场外运输费';
  159. rationCalcBasesNameMap.JXRLDLF = '机械燃料动力费';
  160. rationCalcBasesNameMap.DEYQYBF = '定额仪器仪表费';
  161. rationCalcBasesNameMap.DEQTSGJJSYF = '定额其他施工机具使用费';
  162. rationCalcBasesNameMap.JGDESGJJF = '甲供定额施工机具费';
  163. rationCalcBasesNameMap.JDDESGJJF = '甲定定额施工机具费';
  164. rationCalcBasesNameMap.FGDESGJJF = '分包定额施工机具费';
  165. rationCalcBasesNameMap.ZCF_SCJ = '主材费(市场价)';
  166. rationCalcBasesNameMap.JZMJ = '建筑面积';
  167. };
  168. var cpFeeTypes2018 = [
  169. {type: 'rationUnitPrice', name: '定额综合单价'},
  170. {type: 'labour', name: '人工费'},
  171. {type: 'material', name: '材料费'},
  172. {type: 'machine', name: '施工机具使用费'},
  173. {type: 'mainMaterial', name: '主材费'},
  174. {type: 'manage', name: '企业管理费'},
  175. {type: 'profit', name: '利润'},
  176. {type: 'risk', name: '一般风险费'},
  177. {type: 'labourDiff', name: '人工价差'},
  178. {type: 'materialDiff', name: '材料价差'},
  179. {type: 'machineDiff', name: '施工机具使用价差'},
  180. {type: 'otherRisk', name: '其他风险费'},
  181. {type: 'unratedMaterial', name: '未计价材料费'},
  182. {type: 'organizeMeasures', name: '组织措施费'},
  183. {type: 'safeCivilization', name: '安全文明施工费'},
  184. {type: 'document', name: '建设工程竣工档案编制费'},
  185. {type: 'acceptance', name: '住宅工程质量分户验收费'},
  186. {type: 'forceFee', name: '规费'},
  187. {type: 'tax', name: '税金'},
  188. {type: 'VAT', name: '增值税'},
  189. {type: 'surtax', name: '附加税'},
  190. {type: 'environmentTax', name: '环境保护税'},
  191. {type: 'common', name: '工程造价'}
  192. ];
  193. cpFeeTypes.splice(0, cpFeeTypes.length);
  194. for (let e of cpFeeTypes2018) cpFeeTypes.push(e);
  195. //清单计算基数相关
  196. if(typeof baseFigureMap !== 'undefined'){
  197. let oldNames = [
  198. '分部分项定额基价人工费',
  199. '分部分项定额基价材料费',
  200. '分部分项定额基价机械费',
  201. '组织措施项目定额基价人工费',
  202. '组织措施项目定额基价材料费',
  203. '组织措施项目定额基价机械费',
  204. '技术措施项目定额基价人工费',
  205. '技术措施项目定额基价材料费',
  206. '技术措施项目定额基价机械费',
  207. '机械价差',
  208. '分部分项机械价差',
  209. '甲供定额基价人工费',
  210. '甲供定额基价材料费',
  211. '甲供定额基价机械费',
  212. '甲供机械费',
  213. '甲定定额基价人工费',
  214. '甲定定额基价材料费',
  215. '甲定定额基价机械费',
  216. ];
  217. let newNames = [
  218. '分部分项定额人工费',
  219. '分部分项定额材料费',
  220. '分部分项定额施工机具使用费',
  221. '组织措施项目定额人工费',
  222. '组织措施项目定额材料费',
  223. '组织措施项目定额施工机具使用费',
  224. '技术措施项目定额人工费',
  225. '技术措施项目定额材料费',
  226. '技术措施项目定额施工机具使用费',
  227. '施工机具使用费价差',
  228. '分部分项施工机具使用费价差',
  229. '甲供定额人工费',
  230. '甲供定额材料费',
  231. '甲供定额施工机具使用费',
  232. '甲供施工机械使用费',
  233. '甲定定额人工费',
  234. '甲定定额材料费',
  235. '甲定定额施工机具使用费',
  236. ];
  237. changePropNames(baseFigureMap, oldNames, newNames);
  238. let deleteNames = [
  239. '分部分项定额基价直接工程费',
  240. '分部分项调整人工费',
  241. '分部分项调整机上人工费',
  242. '分部分项设备费',
  243. '分部分项未计价材料费',
  244. '组织措施项目定额基价直接工程费',
  245. '技术措施项目定额基价直接工程费',
  246. '技术措施项目调整人工费',
  247. '技术措施项目调整机上人工费',
  248. '技术措施项目设备费',
  249. '技术措施项目未计价材料费',
  250. '分包费',
  251. '分包定额基价人工费',
  252. '分包定额基价材料费',
  253. '分包定额基价机械费',
  254. '分包主材费',
  255. '分包设备费',
  256. '分包人工工日',
  257. ];
  258. deletePropNames(baseFigureMap, deleteNames);
  259. baseFigureMap['增值税'] = {base: 'ZZS', class: 'SJ', fixedFlag: fixedFlag.ADDED_VALUE_TAX};
  260. }
  261. if(typeof baseFigureTemplate !== 'undefined'){
  262. baseFigureTemplate['ZZS'] = function (tender) {//增值税
  263. if(cbTools.isUnDef(calcBase.fixedBills[fixedFlag.ADDED_VALUE_TAX])){
  264. return 0;
  265. }
  266. const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
  267. let bill = calcBase.fixedBills[fixedFlag.ADDED_VALUE_TAX]['bill'];
  268. if(cbTools.isUnDef(bill)) return 0;
  269. if(cbTools.isUnDef(bill.feesIndex) || Object.keys(bill.feesIndex).length === 0) return 0;
  270. return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
  271. };
  272. }
  273. if(typeof figureClassTemplate !== 'undefined'){
  274. figureClassTemplate['ADDED_VALUE_TAX'] = {flag: fixedFlag.ADDED_VALUE_TAX, filter: ['SJ', 'ZZS', 'SQGCZJ']}
  275. };