zhangweicheng 5 лет назад
Родитель
Сommit
01a166c354

Разница между файлами не показана из-за своего большого размера
+ 734 - 598
modules/main/facade/project_facade.js


+ 58 - 44
web/building_saas/standard_interface/config.js

@@ -5,49 +5,63 @@
  */
 
 const INTERFACE_CONFIG = (() => {
-    const { EXPORT_KIND: { BID_INVITATION, BID_SUBMISSION, CONTROL } } = window.commonConstants;
+  const {
+    EXPORT_KIND: {
+      BID_INVITATION,
+      BID_SUBMISSION,
+      CONTROL
+    }
+  } = window.commonConstants;
 
-    // 注意:相同地区的导入导出接口js文件名称应相同。eg: 安徽马鞍山导出:在export目录下:anhui_maanshan.js; 在import目录下:anhui_maanshan.js;
-    return {
-        '安徽@马鞍山': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.MASGLZB',
-                [BID_SUBMISSION]: '.MASGLTB',
-                [CONTROL]: '.MASGLKZJ',
-            },
-        },
-        '安徽@淮北': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.HBGLZB',
-                [BID_SUBMISSION]: '.HBGLTB',
-                [CONTROL]: '.HBGLKZJ',
-            },
-        },
-        '安徽@芜湖': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.WHGLZB',
-                [BID_SUBMISSION]: '.WHGLTB',
-                [CONTROL]: '.WHGLKZJ',
-            },
-        },
-        '安徽@黄山': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.HSGLZB',
-                [BID_SUBMISSION]: '.HSGLTB',
-                [CONTROL]: '.HSGLKZJ',
-            },
-        },
-        '安徽@宣城': {
-            scriptName: 'anhui_maanshan.js',
-            fileSuffix: {
-                [BID_INVITATION]: '.XCGLZB',
-                [BID_SUBMISSION]: '.XCGLTB',
-                [CONTROL]: '.XCGLKZJ',
-            },
-        },
-    };
+  // 注意:相同地区的导入导出接口js文件名称应相同。eg: 安徽马鞍山导出:在export目录下:anhui_maanshan.js; 在import目录下:anhui_maanshan.js;
+  return {
+    '安徽@马鞍山': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.MASGLZB',
+        [BID_SUBMISSION]: '.MASGLTB',
+        [CONTROL]: '.MASGLKZJ',
+      },
+    },
+    '安徽@淮北': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.HBGLZB',
+        [BID_SUBMISSION]: '.HBGLTB',
+        [CONTROL]: '.HBGLKZJ',
+      },
+    },
+    '安徽@芜湖': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.WHGLZB',
+        [BID_SUBMISSION]: '.WHGLTB',
+        [CONTROL]: '.WHGLKZJ',
+      },
+    },
+    '安徽@黄山': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.HSGLZB',
+        [BID_SUBMISSION]: '.HSGLTB',
+        [CONTROL]: '.HSGLKZJ',
+      },
+    },
+    '安徽@宣城': {
+      scriptName: 'anhui_maanshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.XCGLZB',
+        [BID_SUBMISSION]: '.XCGLTB',
+        [CONTROL]: '.XCGLKZJ',
+      },
+    },
+    '广东@中山': {
+      scriptName: 'guangdong_zhongshan.js',
+      fileSuffix: {
+        [BID_INVITATION]: '.XML',
+        [BID_SUBMISSION]: '.XML',
+        [CONTROL]: '.XML',
+      },
+    }
+  };
 })()

+ 185 - 0
web/building_saas/standard_interface/export/guangdong_zhongshan.js

@@ -0,0 +1,185 @@
+// INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
+INTERFACE_EXPORT = (() => {
+  'use strict';
+
+  /**
+   * 
+   * @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
+   * @param {Number} exportKind - 导出类型,招标、投标、控制价
+   * @param {Object} projectData - 项目表数据:{ 建设项目Data, children: [单位工程...] }
+   * @param {Object} tenderDetailMap - 单位工程ID与getData接口数据(projectObj.project的结构)的映射。
+   * @return {Promise<Array>} - 返回的数据结构必须按照规定:[{ data, exportKind, fileName }],参考web\building_saas\standard_interface\index.js中的注释说明
+   */
+  async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
+    console.log(areaKey)
+    //<CprjInfo CprjName="中山接口报错" CprjType="QDYS">
+    const {
+      UTIL,
+      Element,
+    } = INTERFACE_EXPORT_BASE;
+
+    const {
+      EXPORT_KIND: {
+        BID_INVITATION,
+        BID_SUBMISSION,
+        CONTROL
+      },
+      fixedFlag,
+    } = window.commonConstants
+    let cprjType = {
+      1: 'ZBKZJ', // 招标
+      2: 'TBBJ', // 投标
+      3: 'GCLQD' // 控制价
+    }
+
+    const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
+    const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
+    const isControl = exportKind === CONTROL; // 是否是控制价
+
+    // 建设项目根节点信息
+    function CprjInfo(projectName) {
+      const attrs = [{
+        name: 'CprjName',
+        value: projectName
+      }, {
+        name: 'CprjType',
+        value: cprjType[exportKind]
+      }];
+      Element.call(this, 'CprjInfo', attrs);
+    }
+    // 项目基本信息
+    function SystemInfo(projectData) {
+      let hardID = UTIL.generateHardwareId();
+      let [cpuId, diskId, macId] = hardID.split(';');
+      const attrs = [{
+          name: 'Name',
+          value: '公路工程造价数据标准'
+        }, {
+          name: 'Version',
+          value: '1.0'
+        }, {
+          name: 'SoftwareName',
+          value: '纵横公路云造价'
+        },
+        {
+          name: 'SoftwareVer',
+          value: VERSION
+        }, {
+          name: 'SoftwareCompany',
+          value: '珠海纵横创新软件有限公司'
+        }, {
+          name: 'MakeDate',
+          value: ''
+        }, {
+          name: 'Key1',
+          value: window.btoa(VERSION)
+        }, {
+          name: 'Key2',
+          value: window.btoa(diskId)
+        }, {
+          name: 'Key3',
+          value: window.btoa(macId)
+        }
+      ];
+      if (isBidSubmission) attrs.splice(6, 0, {
+        name: 'BidderVer',
+        value: ''
+      })
+      Element.call(this, 'SystemInfo', attrs);
+    }
+
+    //造价依据
+    function CostBasis() { // ItemStandardNo="GYSFX-000000-2018-86"
+      const attrs = [{
+        name: 'MakeRuleNo',
+        value: 'GYSBB-000000-2018-86'
+      }, {
+        name: 'MakeRuleName',
+        value: '公路工程建设项目概算预算编制办法'
+      }, {
+        name: 'ItemStandardNo',
+        value: 'GYSFX-000000-2018-86'
+      }];
+      Element.call(this, 'CostBasis', attrs);
+
+      //定额库信息
+
+      //to do 改成实际的值
+      function NormLib() {
+        const attrs = [{
+          name: 'NormLibNo',
+          value: '0'
+        }, {
+          name: 'NormLibName',
+          value: '部颁公路工程预算定额(2018)'
+        }, {
+          name: 'Type',
+          value: 'ZDEK'
+        }];
+        Element.call(this, 'NormLib', attrs);
+      }
+      this.children.push(new NormLib());
+    }
+
+    function Rate(feeRateInfo) {
+      //RateNo="1" Name="纵横软件测试版本" RateLibNo="GYSFL-000000-2018-86"
+      const attrs = [{
+        name: 'RateNo',
+        value: feeRateInfo.ID
+      }, {
+        name: 'Name',
+        value: feeRateInfo.name
+      }, {
+        name: 'RateLibNo',
+        value: feeRateInfo.libID
+      }];
+      Element.call(this, 'Rate', attrs);
+
+      let RateParams = {
+        name: 'RateParams',
+        attrs: [],
+        children: []
+      }
+      RateParams.children.push(new RateParam());
+      this.children.push(RateParams);
+
+      function RateParam() {
+        //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
+        const attrs = [{
+          name: 'RateTypeNo',
+          value: 'DJSGZJFFL'
+        }, {
+          name: 'RateParamNo',
+          value: '0'
+        }, {
+          name: 'Ratio',
+          value: '100'
+        }];
+        Element.call(this, 'RateParam', attrs);
+      }
+
+
+
+    }
+
+
+    let data = new CprjInfo(projectData.name);
+    data.children.push(new SystemInfo());
+    data.children.push(new CostBasis());
+    let feeRataDatas = tenderDetailMap[projectObj.project.ID()].FeeRate.datas;
+    data.children.push(new Rate(feeRataDatas));
+
+
+
+
+    return [{
+      data: data,
+      exportKind: exportKind,
+      fileName: projectData.name + INTERFACE_CONFIG[areaKey]['fileSuffix'][exportKind]
+    }]
+
+  }
+  return {
+    entry,
+  };
+})();