| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- // INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
- INTERFACE_EXPORT = (() => {
- 'use strict';
- const feeRateMap = {
- '冬季施工增加费': 'DJSGZJFFL',
- '雨季施工增加费': 'YUJSGZJFFL',
- '夜间施工增加费': 'YEJSGZJFFL',
- '高原地区施工增加费': 'GYDQSGZJFFL',
- '风沙地区施工增加费': 'FSDQSGZJFFL',
- '沿海地区施工增加费': 'YHDQSGZJFFL',
- '行车干扰施工增加费': 'XCGRGCSGZJFFL',
- '工地转移费': 'GDZYFFL',
- '施工辅助费': 'SGFZFFL',
- '基本费用': 'JBFYFL',
- '主副食运费补贴': 'ZFSYFBTFL',
- '职工探亲费': 'ZGTQLFFL',
- '职工取暖费': 'ZGQNBTFL',
- '财务费用': 'CWFYFL',
- '养老保险费': 'YANGLBXFFL',
- '失业保险费': 'SYBXFFL',
- '医疗保险费': 'YILBXFFL',
- '工伤保险费': 'GSBXFL',
- '住房公积金': 'ZFGJJFL',
- '土方': 'TF',
- '石方': 'SF',
- '运输': 'YS',
- '路面': 'LM',
- '路面(不计雨)': 'LM',
- '隧道': 'SD',
- '构造物I': 'GZW1',
- '构造物I(不计冬)': 'GZW1',
- '构造物I(不计雨)': 'GZW1',
- '构造物II': 'GZW2',
- '构造物III(桥梁)': 'GZW3',
- '构造物III(除桥以外)': 'GZW3',
- '构造物III(除桥以外不计雨夜)': 'GZW3',
- '技术复杂大桥': 'JSFZDQ',
- '钢材及钢结构(桥梁)': 'GJG',
- '钢材及钢结构(除桥以外)': 'GJG',
- '钢材及钢结构(除桥以外不计夜)': 'GJG'
- }
- /**
- *
- * @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) {
- 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 RateValues = {
- name: 'RateValues',
- attrs: [],
- children: []
- }
- function RateValue(CostTypeNo, RateTypeNo) {
- //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
- const attrs = [{
- name: 'CostTypeNo',
- value: CostTypeNo
- }, {
- name: 'RateTypeNo',
- value: RateTypeNo
- }, {
- name: 'RateValue',
- value: '0'
- }];
- Element.call(this, 'RateValue', attrs);
- }
- let prefix = "";
- for (let r of feeRateInfo.rates) {
- if (!r.ParentID && feeRateMap[r.name]) prefix = feeRateMap[r.name];
- if (feeRateMap[r.name] && r.ParentID) {
- RateValues.children.push(new RateValue(prefix, feeRateMap[r.name]));
- }
- }
- this.children.push(RateValues);
- }
- function Pract(fileName) {
- //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
- const attrs = [{
- name: 'PractNo',
- value: 1
- }, {
- name: 'Name',
- value: fileName
- }];
- Element.call(this, 'Pract', attrs);
- }
- let data = new CprjInfo(projectData.name);
- data.children.push(new SystemInfo());
- data.children.push(new CostBasis());
- let tenderProject = tenderDetailMap[projectObj.project.ID()];
- let feeRataDatas = tenderProject.FeeRate.datas;
- data.children.push(new Rate(feeRataDatas));
- let property = tenderProject
- return [{
- data: data,
- exportKind: exportKind,
- fileName: projectData.name + INTERFACE_CONFIG[areaKey]['fileSuffix'][exportKind]
- }]
- }
- return {
- entry
- };
- })();
|