|
|
@@ -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,
|
|
|
+ };
|
|
|
+})();
|