guangdong_zhongshan.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. // INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
  2. INTERFACE_EXPORT = (() => {
  3. 'use strict';
  4. const feeRateMap = {
  5. '冬季施工增加费': 'DJSGZJFFL',
  6. '雨季施工增加费': 'YUJSGZJFFL',
  7. '夜间施工增加费': 'YEJSGZJFFL',
  8. '高原地区施工增加费': 'GYDQSGZJFFL',
  9. '风沙地区施工增加费': 'FSDQSGZJFFL',
  10. '沿海地区施工增加费': 'YHDQSGZJFFL',
  11. '行车干扰施工增加费': 'XCGRGCSGZJFFL',
  12. '工地转移费': 'GDZYFFL',
  13. '施工辅助费': 'SGFZFFL',
  14. '基本费用': 'JBFYFL',
  15. '主副食运费补贴': 'ZFSYFBTFL',
  16. '职工探亲费': 'ZGTQLFFL',
  17. '职工取暖费': 'ZGQNBTFL',
  18. '财务费用': 'CWFYFL',
  19. '养老保险费': 'YANGLBXFFL',
  20. '失业保险费': 'SYBXFFL',
  21. '医疗保险费': 'YILBXFFL',
  22. '工伤保险费': 'GSBXFL',
  23. '住房公积金': 'ZFGJJFL',
  24. '土方': 'TF',
  25. '石方': 'SF',
  26. '运输': 'YS',
  27. '路面': 'LM',
  28. '路面(不计雨)': 'LM',
  29. '隧道': 'SD',
  30. '构造物I': 'GZW1',
  31. '构造物I(不计冬)': 'GZW1',
  32. '构造物I(不计雨)': 'GZW1',
  33. '构造物II': 'GZW2',
  34. '构造物III(桥梁)': 'GZW3',
  35. '构造物III(除桥以外)': 'GZW3',
  36. '构造物III(除桥以外不计雨夜)': 'GZW3',
  37. '技术复杂大桥': 'JSFZDQ',
  38. '钢材及钢结构(桥梁)': 'GJG',
  39. '钢材及钢结构(除桥以外)': 'GJG',
  40. '钢材及钢结构(除桥以外不计夜)': 'GJG'
  41. }
  42. /**
  43. *
  44. * @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
  45. * @param {Number} exportKind - 导出类型,招标、投标、控制价
  46. * @param {Object} projectData - 项目表数据:{ 建设项目Data, children: [单位工程...] }
  47. * @param {Object} tenderDetailMap - 单位工程ID与getData接口数据(projectObj.project的结构)的映射。
  48. * @return {Promise<Array>} - 返回的数据结构必须按照规定:[{ data, exportKind, fileName }],参考web\building_saas\standard_interface\index.js中的注释说明
  49. */
  50. async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
  51. const {
  52. UTIL,
  53. Element,
  54. } = INTERFACE_EXPORT_BASE;
  55. const {
  56. EXPORT_KIND: {
  57. BID_INVITATION,
  58. BID_SUBMISSION,
  59. CONTROL
  60. },
  61. fixedFlag,
  62. } = window.commonConstants
  63. let cprjType = {
  64. 1: 'ZBKZJ', // 招标
  65. 2: 'TBBJ', // 投标
  66. 3: 'GCLQD' // 控制价
  67. }
  68. const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
  69. const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
  70. const isControl = exportKind === CONTROL; // 是否是控制价
  71. // 建设项目根节点信息
  72. function CprjInfo(projectName) {
  73. const attrs = [{
  74. name: 'CprjName',
  75. value: projectName
  76. }, {
  77. name: 'CprjType',
  78. value: cprjType[exportKind]
  79. }];
  80. Element.call(this, 'CprjInfo', attrs);
  81. }
  82. // 项目基本信息
  83. function SystemInfo(projectData) {
  84. let hardID = UTIL.generateHardwareId();
  85. let [cpuId, diskId, macId] = hardID.split(';');
  86. const attrs = [{
  87. name: 'Name',
  88. value: '公路工程造价数据标准'
  89. }, {
  90. name: 'Version',
  91. value: '1.0'
  92. }, {
  93. name: 'SoftwareName',
  94. value: '纵横公路云造价'
  95. },
  96. {
  97. name: 'SoftwareVer',
  98. value: VERSION
  99. }, {
  100. name: 'SoftwareCompany',
  101. value: '珠海纵横创新软件有限公司'
  102. }, {
  103. name: 'MakeDate',
  104. value: ''
  105. }, {
  106. name: 'Key1',
  107. value: window.btoa(VERSION)
  108. }, {
  109. name: 'Key2',
  110. value: window.btoa(diskId)
  111. }, {
  112. name: 'Key3',
  113. value: window.btoa(macId)
  114. }
  115. ];
  116. if (isBidSubmission) attrs.splice(6, 0, {
  117. name: 'BidderVer',
  118. value: ''
  119. })
  120. Element.call(this, 'SystemInfo', attrs);
  121. }
  122. //造价依据
  123. function CostBasis() { // ItemStandardNo="GYSFX-000000-2018-86"
  124. const attrs = [{
  125. name: 'MakeRuleNo',
  126. value: 'GYSBB-000000-2018-86'
  127. }, {
  128. name: 'MakeRuleName',
  129. value: '公路工程建设项目概算预算编制办法'
  130. }, {
  131. name: 'ItemStandardNo',
  132. value: 'GYSFX-000000-2018-86'
  133. }];
  134. Element.call(this, 'CostBasis', attrs);
  135. //定额库信息
  136. //to do 改成实际的值
  137. function NormLib() {
  138. const attrs = [{
  139. name: 'NormLibNo',
  140. value: '0'
  141. }, {
  142. name: 'NormLibName',
  143. value: '部颁公路工程预算定额(2018)'
  144. }, {
  145. name: 'Type',
  146. value: 'ZDEK'
  147. }];
  148. Element.call(this, 'NormLib', attrs);
  149. }
  150. this.children.push(new NormLib());
  151. }
  152. function Rate(feeRateInfo) {
  153. //RateNo="1" Name="纵横软件测试版本" RateLibNo="GYSFL-000000-2018-86"
  154. const attrs = [{
  155. name: 'RateNo',
  156. value: feeRateInfo.ID
  157. }, {
  158. name: 'Name',
  159. value: feeRateInfo.name
  160. }, {
  161. name: 'RateLibNo',
  162. value: feeRateInfo.libID
  163. }];
  164. Element.call(this, 'Rate', attrs);
  165. let RateParams = {
  166. name: 'RateParams',
  167. attrs: [],
  168. children: []
  169. }
  170. RateParams.children.push(new RateParam());
  171. this.children.push(RateParams);
  172. function RateParam() {
  173. //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
  174. const attrs = [{
  175. name: 'RateTypeNo',
  176. value: 'DJSGZJFFL'
  177. }, {
  178. name: 'RateParamNo',
  179. value: '0'
  180. }, {
  181. name: 'Ratio',
  182. value: '100'
  183. }];
  184. Element.call(this, 'RateParam', attrs);
  185. }
  186. let RateValues = {
  187. name: 'RateValues',
  188. attrs: [],
  189. children: []
  190. }
  191. function RateValue(CostTypeNo, RateTypeNo) {
  192. //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
  193. const attrs = [{
  194. name: 'CostTypeNo',
  195. value: CostTypeNo
  196. }, {
  197. name: 'RateTypeNo',
  198. value: RateTypeNo
  199. }, {
  200. name: 'RateValue',
  201. value: '0'
  202. }];
  203. Element.call(this, 'RateValue', attrs);
  204. }
  205. let prefix = "";
  206. for (let r of feeRateInfo.rates) {
  207. if (!r.ParentID && feeRateMap[r.name]) prefix = feeRateMap[r.name];
  208. if (feeRateMap[r.name] && r.ParentID) {
  209. RateValues.children.push(new RateValue(prefix, feeRateMap[r.name]));
  210. }
  211. }
  212. this.children.push(RateValues);
  213. }
  214. function Pract(fileName) {
  215. //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
  216. const attrs = [{
  217. name: 'PractNo',
  218. value: 1
  219. }, {
  220. name: 'Name',
  221. value: fileName
  222. }];
  223. Element.call(this, 'Pract', attrs);
  224. }
  225. let data = new CprjInfo(projectData.name);
  226. data.children.push(new SystemInfo());
  227. data.children.push(new CostBasis());
  228. let tenderProject = tenderDetailMap[projectObj.project.ID()];
  229. let feeRataDatas = tenderProject.FeeRate.datas;
  230. data.children.push(new Rate(feeRataDatas));
  231. let property = tenderProject
  232. return [{
  233. data: data,
  234. exportKind: exportKind,
  235. fileName: projectData.name + INTERFACE_CONFIG[areaKey]['fileSuffix'][exportKind]
  236. }]
  237. }
  238. return {
  239. entry
  240. };
  241. })();