guangdong_2018.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Zhong
  6. * @date 2019/8/15
  7. * @version
  8. */
  9. let isGD2018 = true;
  10. function overwriteRationCalcBases (){
  11. if (typeof rationCalcBases == 'undefined') return;
  12. for (let key in rationCalcBases) delete rationCalcBases[key];
  13. rationCalcBases['人工费'] = function (node, isTender) {
  14. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
  15. };
  16. rationCalcBases['材料费'] = function (node, isTender) {
  17. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
  18. };
  19. rationCalcBases['机具费'] = function (node, isTender) {
  20. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
  21. };
  22. rationCalcBases['主材费'] = function (node, isTender) {
  23. return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
  24. };
  25. rationCalcBases['设备费'] = function (node, isTender) {
  26. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
  27. };
  28. // 广东建筑管理费特殊计算:管理费=ROUND(∑(人工费+施工机具费)*定额的管理费费率*0.01,精度)。与定额同级的量价、人材机则按管理费费率为0计算。
  29. rationCalcBases['管理费'] = function (node, isTender) {
  30. let rst = 0;
  31. if (calcTools.isRationItem(node) && node.data.gljList && node.data.manageFeeRate) {
  32. rst = (rationCalcBases['人工费'](node, isTender) + rationCalcBases['机具费'](node, isTender)) * node.data.manageFeeRate * 0.01;
  33. rst = rst.toDecimal(decimalObj.ration.unitPrice);
  34. };
  35. return rst;
  36. };
  37. rationCalcBases['工日合计'] = function (node, isTender) {
  38. return calcTools.labourDays(node, isTender);
  39. };
  40. rationCalcBases['甲供人工费'] = function (node, isTender) {
  41. return calcTools.partASupplyFee(node, '甲供人工费', isTender, false);
  42. };
  43. rationCalcBases['甲供材料费'] = function (node, isTender) {
  44. return calcTools.partASupplyFee(node, '甲供材料费', isTender, false);
  45. };
  46. rationCalcBases['甲供机具费'] = function (node, isTender) {
  47. return calcTools.partASupplyFee(node, '甲供机械费', isTender, false);
  48. };
  49. rationCalcBases['甲供主材费'] = function (node, isTender) {
  50. return calcTools.partASupplyFee(node, '甲供主材费', isTender, false);
  51. };
  52. rationCalcBases['甲供设备费'] = function (node, isTender) {
  53. return calcTools.partASupplyFee(node, '甲供设备费', isTender, false);
  54. };
  55. rationCalcBases['甲定人工费'] = function (node, isTender) {
  56. return calcTools.partASupplyFee(node, '甲定人工费', isTender, false);
  57. };
  58. rationCalcBases['甲定材料费'] = function (node, isTender) {
  59. return calcTools.partASupplyFee(node, '甲定材料费', isTender, false);
  60. };
  61. rationCalcBases['甲定机具费'] = function (node, isTender) {
  62. return calcTools.partASupplyFee(node, '甲定机械费', isTender, false);
  63. };
  64. rationCalcBases['甲定主材费'] = function (node, isTender) {
  65. return calcTools.partASupplyFee(node, '甲定主材费', isTender, false);
  66. };
  67. rationCalcBases['甲定设备费'] = function (node, isTender) {
  68. return calcTools.partASupplyFee(node, '甲定设备费', isTender, false);
  69. };
  70. rationCalcBases['暂估材料费'] = function (node, isTender) {
  71. return calcTools.estimateFee(node, true, isTender);
  72. };
  73. };
  74. (function overwriteFeeTypes() {
  75. if (typeof cpFeeTypes == 'undefined') return;
  76. cpFeeTypes = [
  77. {type: 'labour', name: '人工费'},
  78. {type: 'material', name: '材料费'},
  79. {type: 'machine', name: '机具费'},
  80. {type: 'mainMaterial', name: '主材费'},
  81. {type: 'equipment', name: '设备费'},
  82. {type: 'direct', name: '直接费'},
  83. {type: 'measure', name: '措施项目费'},
  84. {type: 'manage', name: '管理费'},
  85. {type: 'profit', name: '利润'},
  86. {type: 'tax', name: '税金'},
  87. {type: 'common', name: '工程造价'}
  88. ];
  89. })();
  90. if (typeof module !== 'undefined') {
  91. } else {
  92. // 广东接口排版规则,添加内容默认项目特征
  93. $(function () {
  94. $('#add-content').val('3');
  95. });
  96. //清单计算基数相关
  97. if(typeof baseFigureMap !== 'undefined'){
  98. baseFigureMap = {
  99. '分部分项工程费': {base: 'FBFXGCF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  100. '分部分项人工费': {base: 'FBFXDEJJRGF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  101. '分部分项材料费': {base: 'FBFXDEJJCLF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  102. '分部分项机具费': {base: 'FBFXDEJJJXF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  103. '分部分项主材费': {base: 'FBFXZCF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  104. '分部分项设备费': {base: 'FBFXSBF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  105. '分部分项人工工日': {base: 'FBFXRGGR', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
  106. '建筑面积': {base: 'JZMJ', class: 'FBFX'},
  107. '措施项目费': {base: 'CSXMF', fixedFlag: fixedFlag.MEASURE, class: 'CSXM'},
  108. '其他项目费': {base: 'QTXMF', fixedFlag: fixedFlag.OTHER, class: 'QTXM'},
  109. '甲供人工费': {base: 'JGDEJJRGF', class: 'RCJ'},
  110. '甲供材料费': {base: 'JGDEJJCLF', class: 'RCJ'},
  111. '甲供机具费': {base: 'JGDEJJJXF', class: 'RCJ'},
  112. '甲供主材费': {base: 'JGZCF', class: 'RCJ'},
  113. '甲供设备费': {base: 'JGSBF', class: 'RCJ'},
  114. '甲定人工费': {base: 'JDDEJJRGF', class: 'RCJ'},
  115. '甲定材料费': {base: 'JDDEJJCLF', class: 'RCJ'},
  116. '甲定机具费': {base: 'JDDEJJJXF', class: 'RCJ'},
  117. '甲定主材费': {base: 'JDZCF', class: 'RCJ'},
  118. '甲定设备费': {base: 'JDSBF', class: 'RCJ'},
  119. '暂估材料费(从子目汇总)': {base: 'ZGCLFFZM', class: 'RCJ'},
  120. '税金': {base: 'SJ', fixedFlag: fixedFlag.TAX, class: 'SJ'}
  121. };
  122. }
  123. if(typeof baseFigureTemplate !== 'undefined'){
  124. baseFigureTemplate['ZGCLFFZM'] = function (tender) { //暂估材料费(从子目汇总)
  125. const feeField = 'estimate';
  126. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  127. // 分部分项暂估合价
  128. const subEngineeringFee = cbTools.getBillsFee(fixedFlag.SUB_ENGINERRING, feeField, subFeeField);
  129. // 措施项目暂估合价
  130. let measureFee = cbTools.getBillsFee(fixedFlag.MEASURE, feeField, subFeeField);
  131. return (subEngineeringFee + measureFee).toDecimal(decimalObj.bills.totalPrice);
  132. };
  133. }
  134. }
  135. if(typeof gljCol !== 'undefined'){
  136. gljCol.showTaxRate = true;
  137. }
  138. // 人材机库追加的列头
  139. if (typeof repositoryGljObj !== 'undefined') {
  140. repositoryGljObj.setting.header = [
  141. {headerName:"税率",headerWidth:60,dataCode:"taxRate", dataType: "Number", hAlign: "center", vAlign: "center"},
  142. { headerName: "机型", headerWidth: 60, dataCode: "model", dataType: "Number", hAlign: "center", vAlign: "center" },
  143. { headerName: "是否新增", headerWidth: 60, dataCode: "isComplementary", hAlign: "center", vAlign: "center" }
  144. ]
  145. }
  146. // 定额人材机选择页面表头
  147. if (typeof gljOprObj !== 'undefined') {
  148. gljOprObj.gljLibSheetSetting.header = [
  149. {headerName: "选择", headerWidth: 40, dataCode: "select", hAlign: "center", vAlign: "center", cellType: "checkBox"},
  150. {headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
  151. {headerName: "名称", headerWidth: 160, dataCode: "name", dataType: "String", hAlign: "left", vAlign: "center"},
  152. {headerName: "规格型号", headerWidth: 160, dataCode: "specs", dataType: "String", hAlign: "left", vAlign: "center"},
  153. {headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center"},
  154. {headerName: "单价", headerWidth: 55, dataCode: "basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
  155. {headerName: "税率", headerWidth: 40, dataCode: "taxRate", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
  156. {headerName: "类型", headerWidth: 60, dataCode: "typeName", dataType: "String", hAlign: "center", vAlign: "center"},
  157. {headerName: "新增", headerWidth: 40, dataCode: "isComplementary", dataType: "String", hAlign: "center", vAlign: "center", cellType: "checkBox", readOnly: true}
  158. ]
  159. }
  160. // 导入导出接口
  161. // 需要用固定类别关联的费用字典,用固定类别来映射
  162. // 数据节选自标准pdf文件《《建设工程政府投资项目造价数据标准》信息公开版》,附录C-费用名称与费用代号
  163. // 若映射表中没有映射关系,则费用字典取名称首字母
  164. let FlagFeeCodeMap = {};
  165. let FormulaFeeCodeMap = {};
  166. if (typeof commonConstants !== 'undefined') {
  167. FlagFeeCodeMap = {
  168. // 分部分项工程
  169. [commonConstants.fixedFlag.SUB_ENGINERRING]: 'QDF',
  170. // 措施项目
  171. [commonConstants.fixedFlag.MEASURE]: 'CSF',
  172. // 其他项目
  173. [commonConstants.fixedFlag.OTHER]: 'QTF',
  174. // 措施项目的子项
  175. [commonConstants.fixedFlag.SAFETY_CONSTRUCTION]: 'AQWMSGF', // 绿色施工安全防护措施费
  176. [commonConstants.fixedFlag.OTHER_MEASURE_FEE]: 'QTCSF', // 其他措施费
  177. // 其他项目的子项
  178. [commonConstants.fixedFlag.PROVISIONAL]: 'ZLF', // 暂列金额
  179. [commonConstants.fixedFlag.ESTIMATE]: 'ZGJ', // 暂估价
  180. [commonConstants.fixedFlag.MATERIAL_PROVISIONAL]: 'ZGC', // 材料(工程设备)暂估价
  181. [commonConstants.fixedFlag.ENGINEERING_ESITIMATE]: 'ZGGC', // 专业工程暂估价
  182. [commonConstants.fixedFlag.DAYWORK]: 'LXF', // 计日工
  183. [commonConstants.fixedFlag.TURN_KEY_CONTRACT]: 'ZCBFWF', // 总承包服务费
  184. [commonConstants.fixedFlag.BUDGET_INCLUDE_WORK_FEE]: 'YSBGF', // 预算包干费
  185. [commonConstants.fixedFlag.PROJECT_HIGH_QUALITY_FEE]: 'GCYZF', // 工程优质费
  186. [commonConstants.fixedFlag.BUDGET_ESTIMATE_DIFF]: 'GSFDC', // 概算幅度差
  187. [commonConstants.fixedFlag.CLAIM_VISA]: 'SPYXCQZ', // 索赔与现场签证
  188. [commonConstants.fixedFlag.CLAIM]: 'SPFY', // 索赔费用
  189. [commonConstants.fixedFlag.VISA]: 'XCQZFY', // 现场签证
  190. [commonConstants.fixedFlag.OTHER_FEE]: 'QTFY', // 其他费用
  191. // 税金
  192. [commonConstants.fixedFlag.TAX]: 'SJ',
  193. // 工程造价
  194. [commonConstants.fixedFlag.ENGINEERINGCOST]: 'ZZJ',
  195. };
  196. // 需要用计算基数关联的费用字典
  197. FormulaFeeCodeMap = {
  198. '{分部分项工程费}': 'QDF',
  199. '{分部分项人工费}': 'QRG',
  200. '{分部分项材料费}': 'QCL',
  201. '{分部分项机具费}': 'QJX',
  202. '{分部分项主材费}': 'QZCF',
  203. '{分部分项设备费}': 'QSBF',
  204. '{分部分项人工工日}': 'FBFXRGGR', // 标准没有,自增
  205. '{建筑面积}': 'JZMZ', // 自增
  206. '{措施项目费}': 'CSF',
  207. '{其他项目费}': 'QTF',
  208. '{甲供人工费}': 'JGRGF', // 自增
  209. '{甲供材料费}': 'JGC',
  210. '{甲供机具费}': 'JGJJF', // 自增
  211. '{甲供主材费}': 'JGZCF', // 自增
  212. '{甲供设备费}': 'JGSBF', // 自增
  213. '{甲定人工费}': 'JDRGF', // 自增
  214. '{甲定材料费}': 'JDCLF', // 自增
  215. '{甲定机具费}': 'JDJJF', // 自增
  216. '{甲定主材费}': 'JDZCF', // 自增
  217. '{甲定设备费}': 'JDSBF', // 自增
  218. '{暂估材料费(从子目汇总)}': 'ZGCLFCZMHZ', // 自增
  219. '{税金}': 'SJ',
  220. };
  221. }
  222. if(typeof module !== 'undefined'){
  223. module.exports = {
  224. getBillsCalcMode: getBillsCalcMode,
  225. getAreaName: getAreaName
  226. };
  227. }
  228. function getBillsCalcMode() {
  229. return 1
  230. }
  231. function getAreaName() {
  232. return 'guangdong_2018'
  233. }