guangdong_zhongshan.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. // INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
  2. INTERFACE_EXPORT = (() => {
  3. 'use strict';
  4. /**
  5. *
  6. * @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
  7. * @param {Number} exportKind - 导出类型,招标、投标、控制价
  8. * @param {Object} projectData - 项目表数据:{ 建设项目Data, children: [单位工程...] }
  9. * @param {Object} tenderDetailMap - 单位工程ID与getData接口数据(projectObj.project的结构)的映射。
  10. * @return {Promise<Array>} - 返回的数据结构必须按照规定:[{ data, exportKind, fileName }],参考web\building_saas\standard_interface\index.js中的注释说明
  11. */
  12. async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
  13. console.log(areaKey)
  14. //<CprjInfo CprjName="中山接口报错" CprjType="QDYS">
  15. const {
  16. UTIL,
  17. Element,
  18. } = INTERFACE_EXPORT_BASE;
  19. const {
  20. EXPORT_KIND: {
  21. BID_INVITATION,
  22. BID_SUBMISSION,
  23. CONTROL
  24. },
  25. fixedFlag,
  26. } = window.commonConstants
  27. let cprjType = {
  28. 1: 'ZBKZJ', // 招标
  29. 2: 'TBBJ', // 投标
  30. 3: 'GCLQD' // 控制价
  31. }
  32. const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
  33. const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
  34. const isControl = exportKind === CONTROL; // 是否是控制价
  35. // 建设项目根节点信息
  36. function CprjInfo(projectName) {
  37. const attrs = [{
  38. name: 'CprjName',
  39. value: projectName
  40. }, {
  41. name: 'CprjType',
  42. value: cprjType[exportKind]
  43. }];
  44. Element.call(this, 'CprjInfo', attrs);
  45. }
  46. // 项目基本信息
  47. function SystemInfo(projectData) {
  48. let hardID = UTIL.generateHardwareId();
  49. let [cpuId, diskId, macId] = hardID.split(';');
  50. const attrs = [{
  51. name: 'Name',
  52. value: '公路工程造价数据标准'
  53. }, {
  54. name: 'Version',
  55. value: '1.0'
  56. }, {
  57. name: 'SoftwareName',
  58. value: '纵横公路云造价'
  59. },
  60. {
  61. name: 'SoftwareVer',
  62. value: VERSION
  63. }, {
  64. name: 'SoftwareCompany',
  65. value: '珠海纵横创新软件有限公司'
  66. }, {
  67. name: 'MakeDate',
  68. value: ''
  69. }, {
  70. name: 'Key1',
  71. value: window.btoa(VERSION)
  72. }, {
  73. name: 'Key2',
  74. value: window.btoa(diskId)
  75. }, {
  76. name: 'Key3',
  77. value: window.btoa(macId)
  78. }
  79. ];
  80. if (isBidSubmission) attrs.splice(6, 0, {
  81. name: 'BidderVer',
  82. value: ''
  83. })
  84. Element.call(this, 'SystemInfo', attrs);
  85. }
  86. //造价依据
  87. function CostBasis() { // ItemStandardNo="GYSFX-000000-2018-86"
  88. const attrs = [{
  89. name: 'MakeRuleNo',
  90. value: 'GYSBB-000000-2018-86'
  91. }, {
  92. name: 'MakeRuleName',
  93. value: '公路工程建设项目概算预算编制办法'
  94. }, {
  95. name: 'ItemStandardNo',
  96. value: 'GYSFX-000000-2018-86'
  97. }];
  98. Element.call(this, 'CostBasis', attrs);
  99. //定额库信息
  100. //to do 改成实际的值
  101. function NormLib() {
  102. const attrs = [{
  103. name: 'NormLibNo',
  104. value: '0'
  105. }, {
  106. name: 'NormLibName',
  107. value: '部颁公路工程预算定额(2018)'
  108. }, {
  109. name: 'Type',
  110. value: 'ZDEK'
  111. }];
  112. Element.call(this, 'NormLib', attrs);
  113. }
  114. this.children.push(new NormLib());
  115. }
  116. function Rate(feeRateInfo) {
  117. //RateNo="1" Name="纵横软件测试版本" RateLibNo="GYSFL-000000-2018-86"
  118. const attrs = [{
  119. name: 'RateNo',
  120. value: feeRateInfo.ID
  121. }, {
  122. name: 'Name',
  123. value: feeRateInfo.name
  124. }, {
  125. name: 'RateLibNo',
  126. value: feeRateInfo.libID
  127. }];
  128. Element.call(this, 'Rate', attrs);
  129. let RateParams = {
  130. name: 'RateParams',
  131. attrs: [],
  132. children: []
  133. }
  134. RateParams.children.push(new RateParam());
  135. this.children.push(RateParams);
  136. function RateParam() {
  137. //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
  138. const attrs = [{
  139. name: 'RateTypeNo',
  140. value: 'DJSGZJFFL'
  141. }, {
  142. name: 'RateParamNo',
  143. value: '0'
  144. }, {
  145. name: 'Ratio',
  146. value: '100'
  147. }];
  148. Element.call(this, 'RateParam', attrs);
  149. }
  150. }
  151. let data = new CprjInfo(projectData.name);
  152. data.children.push(new SystemInfo());
  153. data.children.push(new CostBasis());
  154. let feeRataDatas = tenderDetailMap[projectObj.project.ID()].FeeRate.datas;
  155. data.children.push(new Rate(feeRataDatas));
  156. return [{
  157. data: data,
  158. exportKind: exportKind,
  159. fileName: projectData.name + INTERFACE_CONFIG[areaKey]['fileSuffix'][exportKind]
  160. }]
  161. }
  162. return {
  163. entry,
  164. };
  165. })();