|
|
@@ -16,38 +16,49 @@ const XMLStandard = (function () {
|
|
|
// 数据类别,辨别提取的数据,哪份是以建设项目为根元素,哪份以单位工程为根元素
|
|
|
const DATA_TYPE = {
|
|
|
'project': 1,
|
|
|
- 'tender': 2
|
|
|
+ 'tender': 2,
|
|
|
};
|
|
|
// 建设性质
|
|
|
- const CONSTRUCTION_TYPE = {
|
|
|
+ const ConstructionType = {
|
|
|
'新建': '1',
|
|
|
'扩建': '2',
|
|
|
'改建': '3',
|
|
|
'修缮': '4',
|
|
|
'修复': '5',
|
|
|
'维护保养': '6',
|
|
|
- '其他': '9'
|
|
|
+ '其他': '9',
|
|
|
+ };
|
|
|
+ // 造价类型
|
|
|
+ const CostType = {
|
|
|
+ '投资估算': '1',
|
|
|
+ '设计概算': '2',
|
|
|
+ '施工图预算': '3',
|
|
|
+ '招标工程量清单': '4',
|
|
|
+ '招标控制价(最高投标限价)': '5',
|
|
|
+ '投标报价': '6',
|
|
|
+ '签约合同价': '7',
|
|
|
+ '竣工结算价': '8',
|
|
|
};
|
|
|
// 文件类型
|
|
|
- const FILE_KIND = {
|
|
|
+ const FileKind = {
|
|
|
'1': '6', // 投标
|
|
|
'2': '4', // 招标
|
|
|
- '3': '5' // 控制价
|
|
|
+ '3': '5', // 控制价
|
|
|
};
|
|
|
// 计价模式
|
|
|
- const VALUATION_MODEL = {
|
|
|
+ const ValuationModel = {
|
|
|
'bill': '1', // 清单计价
|
|
|
'ration': '2', // 定额计价
|
|
|
};
|
|
|
// 地区类别
|
|
|
- const AREA_KIND = {
|
|
|
+ const AreaKind = {
|
|
|
'一类地区': '1',
|
|
|
'二类地区': '2',
|
|
|
'三类地区': '3',
|
|
|
- '四类地区': '4'
|
|
|
+ '四类地区': '4',
|
|
|
};
|
|
|
// 专业类别
|
|
|
- const SPECIALTY = {
|
|
|
+ const Specialty = {
|
|
|
'房屋建筑与装饰': '1',
|
|
|
'仿古建筑': '2',
|
|
|
'安装': '3',
|
|
|
@@ -74,19 +85,19 @@ const XMLStandard = (function () {
|
|
|
'其他': '99',
|
|
|
};
|
|
|
// 章节类型
|
|
|
- const CHAPTER_KIND = {
|
|
|
+ const ChapterKind = {
|
|
|
'章': '1',
|
|
|
'节': '2',
|
|
|
'细目': '3',
|
|
|
- '其他': '4'
|
|
|
+ '其他': '4',
|
|
|
};
|
|
|
// 汇总类型
|
|
|
- const SUMMARY_KIND = {
|
|
|
+ const SummrayKind = {
|
|
|
'summary': '1',
|
|
|
- 'notSummary': '2'
|
|
|
+ 'notSummary': '2',
|
|
|
};
|
|
|
// 清单子目类型
|
|
|
- const BILL_KIND = {
|
|
|
+ const BillsKind = {
|
|
|
'分部分项': '1',
|
|
|
'模板及支架': '2',
|
|
|
'脚手架': '3',
|
|
|
@@ -95,7 +106,7 @@ const XMLStandard = (function () {
|
|
|
'其他': '6',
|
|
|
};
|
|
|
// 取费类型
|
|
|
- const CALC_KIND = {
|
|
|
+ const CalcKind = {
|
|
|
'地上工程': '1',
|
|
|
'地下明(盖)挖工程': '2',
|
|
|
'地下暗挖工程': '3',
|
|
|
@@ -109,37 +120,43 @@ const XMLStandard = (function () {
|
|
|
'其他': '15',
|
|
|
};
|
|
|
// 费用归属
|
|
|
- const COST_KIND = {
|
|
|
+ const CostKind = {
|
|
|
'建筑工程费': '1',
|
|
|
'安装工程费': '2',
|
|
|
- '其他': '3'
|
|
|
+ '其他': '3',
|
|
|
};
|
|
|
// 计算方式
|
|
|
- const CALC_TYPE = {
|
|
|
+ const CalcType = {
|
|
|
'quantityMulTotalUnitPrice': '1', // 工程量×综合单价
|
|
|
'formulaAddFeeRate': '2', // 计算基数×费率
|
|
|
- 'quantityMulUnitPrice': '3' // 工程量×单价
|
|
|
+ 'quantityMulUnitPrice': '3', // 工程量×单价
|
|
|
};
|
|
|
// 降效类型 建筑装饰工程定额超高降效费用计算标记
|
|
|
- const EFFICIENCY_KIND = {
|
|
|
+ const EfficiencyKind = {
|
|
|
'baseReduction': '1', // 降效基础定额
|
|
|
'notReduction': '2', // 非降效定额
|
|
|
'marketPriceReduction': '3', // 按市场价计算降效费用定额
|
|
|
- 'rationPriceReduction': '4' // 按定额价计算降效费用定额
|
|
|
+ 'rationPriceReduction': '4', // 按定额价计算降效费用定额
|
|
|
};
|
|
|
// 子目增加费类型 安装工程定额子目增加费的费用计算标记
|
|
|
- const INC_FEE_KIND = {
|
|
|
+ const IncFeeKind = {
|
|
|
'subBase': '1', // 子目增加费基础定额
|
|
|
'notSubBase': '2', // 非子目增加费定额
|
|
|
- 'subCalc': '3' // 子目增加费用计算定额
|
|
|
+ 'subCalc': '3', // 子目增加费用计算定额
|
|
|
+ };
|
|
|
+ // 工料机类型
|
|
|
+ const GLJKind = {
|
|
|
};
|
|
|
+ // 供料方式
|
|
|
+ const Provider ={
|
|
|
+ }
|
|
|
|
|
|
// 通用设置和工具
|
|
|
- let _base = XML_EXPORT_BASE,
|
|
|
- _config = _base.CONFIG,
|
|
|
- _type = _config.TYPE,
|
|
|
- _util = _base.UTIL,
|
|
|
- _cache = _base.CACHE;
|
|
|
+ const _base = XML_EXPORT_BASE;
|
|
|
+ const _config = _base.CONFIG;
|
|
|
+ const _type = _config.TYPE;
|
|
|
+ const _util = _base.UTIL;
|
|
|
+ const _cache = _base.CACHE;
|
|
|
|
|
|
/*
|
|
|
* 提取数据入口
|
|
|
@@ -149,31 +166,36 @@ const XMLStandard = (function () {
|
|
|
* @return {Array} [{data: Object, exportKind: Number, fileName: String}]
|
|
|
* */
|
|
|
async function entry(userID, exportKind, projectData) {
|
|
|
+ // name为导出的xml节点属性名称 dName为可能需要显示给用户属性时使用的名称,比如自检提示的时候用,这里只有required为true时需要设置dName
|
|
|
// 建设项目
|
|
|
function ConstructionProject(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 项目编号
|
|
|
- {name: 'Number', value: '', required: true},
|
|
|
+ {name: 'Number', dName: '项目编号', value: '', required: true},
|
|
|
// 项目名称
|
|
|
- {name: 'Name', value: src.name, required: true},
|
|
|
+ {name: 'Name', dName: '项目名称', value: src.name, required: true},
|
|
|
// 工程类别
|
|
|
- {name: 'ProjectCategory', value: _util.getValueByKey(src.basicInformation, 'projectCategory'), required: true},
|
|
|
- // 工程类型 todo add key
|
|
|
- {name: 'ProjectType', value: _util.getValueByKey(src.basicInformation, 'projectType'), required: true},
|
|
|
- // 建设性质 todo add key
|
|
|
- {name: 'ConstructionType', value: _util.getValueByKey(src.basicInformation, 'constructionType'), type: _type.INT},
|
|
|
- // 文件类型
|
|
|
- {name: 'FileKind', value: src.fileKind, type: _type.INT, required: true},
|
|
|
+ {name: 'ProjectCategory', dName: '工程类别', value: _util.getValueByKey(src.basicInformation, 'projectCategory'), required: true},
|
|
|
+ // 工程类型
|
|
|
+ {name: 'ProjectType', dName: '工程类型', value: src.projectType, required: true},
|
|
|
+ // 建设性质
|
|
|
+ {name: 'ConstructionType', value: ConstructionType[_util.getValueByKey(src.basicInformation, 'projectCategory')], type: _type.INT,
|
|
|
+ enumeration: Object.keys(ConstructionType)
|
|
|
+ },
|
|
|
+ // 文件类型 todo
|
|
|
+ {name: 'FileKind', dName: '造价类型', value: CostType[_util.getValueByKey(src.basicInformation, 'costType')], type: _type.INT, required: true,
|
|
|
+ enumeration: Object.keys(CostType)},
|
|
|
// 计价模式
|
|
|
- {name: 'ValuationModel', value: VALUATION_MODEL.bill, type: _type.INT, required: true},
|
|
|
+ {name: 'ValuationModel', dName: '计价模式', value: ValuationModel.bill, type: _type.INT, required: true},
|
|
|
// 计税模式
|
|
|
- {name: 'TaxModel', value: src.taxType, type: _type.INT, required: true},
|
|
|
- // 地区类别 todo add key
|
|
|
- {name: 'AreaKind', value: AREA_KIND[_util.getValueByKey(src.basicInformation, 'areaKind')], type: _type.INT, required: true},
|
|
|
+ {name: 'TaxModel', dName: '计税模式', value: src.taxType, type: _type.INT, required: true},
|
|
|
+ // 地区类别 todo
|
|
|
+ {name: 'AreaKind', dName: '地区类别', value: AreaKind[_util.getValueByKey(src.basicInformation, 'areaKind')], type: _type.INT, required: true,
|
|
|
+ enumeration: Object.keys(AreaKind)},
|
|
|
// 工程地点
|
|
|
- {name: 'ProjectSite', value: _util.getValueByKey(src.basicInformation, 'projAddress')},
|
|
|
+ {name: 'ProjectSite', value: _util.getValueByKey(src.basicInformation, '"projLocation"')},
|
|
|
// 建设单位
|
|
|
- {name: 'BuildUnit', value: _util.getValueByKey(src.basicInformation, 'constructionUnit'), required: true},
|
|
|
+ {name: 'BuildUnit', dName: '建设单位', value: _util.getValueByKey(src.basicInformation, 'constructionUnit'), required: true},
|
|
|
// 建设单位法定代表人或其授权人 todo
|
|
|
{name: 'BulidAuthorizer', value: _util.getValueByKey(src.basicInformation, 'todo')},
|
|
|
// 数据交换标准名称
|
|
|
@@ -183,11 +205,11 @@ const XMLStandard = (function () {
|
|
|
// 建设(编制)范围 todo
|
|
|
{name: 'RangeOfCompilation', value: ''},
|
|
|
// 建设规模
|
|
|
- {name: 'Scale', value: _util.getValueByKey(src.basicInformation, 'projectScale'), type: _type.DECIMAL, required: true},
|
|
|
+ {name: 'Scale', dName: '工程规模', value: _util.getValueByKey(src.basicInformation, 'projectScale'), type: _type.DECIMAL, required: true},
|
|
|
// 建设规模单位 todo add key
|
|
|
- {name: 'Unit', value: _util.getValueByKey(src.basicInformation, 'unit'), required: true},
|
|
|
- // 技术经济指标(元)
|
|
|
- {name: 'TechnicalAndEconomicIndex', value: 'todo', type: _type.DECIMAL},
|
|
|
+ {name: 'Unit', dName: '建设规模单位', value: _util.getValueByKey(src.basicInformation, 'unit'), required: true},
|
|
|
+ // 技术经济指标(元) todo
|
|
|
+ {name: 'TechnicalAndEconomicIndex', value: '0', type: _type.DECIMAL},
|
|
|
// 总说明
|
|
|
{name: 'Explains', value: _util.getValueByKey(src.basicInformation, 'todo')}
|
|
|
];
|
|
|
@@ -195,13 +217,13 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 系统信息
|
|
|
function SystemInfo(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 编制软件信息
|
|
|
- {name: 'ID1', value: src.ID1},
|
|
|
+ {name: 'ID1', value: src.softInfo},
|
|
|
// 编制机器硬件信息,不输出
|
|
|
- {name: 'ID2', value: ''},
|
|
|
+ {name: 'ID2', value: _util.generateHardwareId()},
|
|
|
// 文件生成时间
|
|
|
- {name: 'MakeDate', value: src.generatedTime, type: _type.DATE_TIME, required: true}
|
|
|
+ {name: 'MakeDate', dName: '文件生成时间', value: src.generatedTime, type: _type.DATE_TIME, required: true}
|
|
|
];
|
|
|
_base.Element.call(this, 'SystemInfo', attrs);
|
|
|
}
|
|
|
@@ -211,7 +233,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 费用精度
|
|
|
function Option() {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 工料机消耗量、含量、用量类小数精度
|
|
|
{name: 'ResPrecision', value: 4, type: _type.INT, required: true},
|
|
|
// 工程量、数量类小数精度
|
|
|
@@ -225,45 +247,45 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 估(概、预、结)算信息
|
|
|
function ProjectInfo(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 设计单位
|
|
|
- {name: 'Designer', value: _util.getValueByKey(src.basicInformation, 'designer')},
|
|
|
+ {name: 'Designer', value: _util.getValueByKey(src.basicInformation, 'designUnit')},
|
|
|
// 承包单位
|
|
|
- {name: 'Contractor', value: _util.getValueByKey(src.basicInformation, 'Contractor')},
|
|
|
+ {name: 'Contractor', value: _util.getValueByKey(src.basicInformation, 'buildingUnit')},
|
|
|
// 编制单位
|
|
|
- {name: 'CompileCompany', value: _util.getValueByKey(src.basicInformation, 'CompileCompany'), required: true},
|
|
|
- // 编制单位法定代表人或其授权人
|
|
|
+ {name: 'CompileCompany', dName: '编制单位', value: _util.getValueByKey(src.basicInformation, 'establishUnit') || '无', required: true},
|
|
|
+ // 编制单位法定代表人或其授权人 todo
|
|
|
{name: 'Authorizer', value: _util.getValueByKey(src.basicInformation, 'Authorizer')},
|
|
|
// 编制人
|
|
|
- {name: 'Compiler', value: _util.getValueByKey(src.basicInformation, 'Compiler')},
|
|
|
- // 编制人资格证书编号
|
|
|
+ {name: 'Compiler', value: _util.getValueByKey(src.basicInformation, 'establishUnitAuthor')},
|
|
|
+ // 编制人资格证书编号 todo
|
|
|
{name: 'CompilerCertNo', value: _util.getValueByKey(src.basicInformation, 'CompilerCertNo')},
|
|
|
// 编制时间
|
|
|
- {name: 'CompileDate', value: _util.getValueByKey(src.basicInformation, 'CompileDate'), required: true},
|
|
|
+ {name: 'CompileDate', dName: '编制时间', value: _util.getValueByKey(src.basicInformation, 'establishDate'), required: true},
|
|
|
// 审核人
|
|
|
- {name: 'Examiner', value: _util.getValueByKey(src.basicInformation, 'Examiner')},
|
|
|
- // 审核人资格证书编号
|
|
|
+ {name: 'Examiner', value: _util.getValueByKey(src.basicInformation, 'auditUnitAuditor')},
|
|
|
+ // 审核人资格证书编号 todo
|
|
|
{name: 'ExaminerCertNo', value: _util.getValueByKey(src.basicInformation, 'ExaminerCertNo')},
|
|
|
// 审核时间
|
|
|
- {name: 'ExamineDate', value: _util.getValueByKey(src.basicInformation, 'ExamineDate')},
|
|
|
- // 审定人
|
|
|
+ {name: 'ExamineDate', value: _util.getValueByKey(src.basicInformation, 'auditDate')},
|
|
|
+ // 审定人 todo
|
|
|
{name: 'Approver', value: _util.getValueByKey(src.basicInformation, 'Approver')},
|
|
|
- // 审定人资格证书编号
|
|
|
+ // 审定人资格证书编号 todo
|
|
|
{name: 'ApproverCertNo', value: _util.getValueByKey(src.basicInformation, 'ApproverCertNo')},
|
|
|
- // 审定时间
|
|
|
+ // 审定时间 todo
|
|
|
{name: 'ApproverDate', value: _util.getValueByKey(src.basicInformation, 'ApproverDate')},
|
|
|
// 工程总价(元)
|
|
|
- {name: 'Total', value: src.summaryInfo.engineeringCost, type: _type.DECIMAL, required: true}
|
|
|
+ {name: 'Total', dName: '工程总价', value: src.summaryInfo.engineeringCost || '0', type: _type.DECIMAL, required: true}
|
|
|
];
|
|
|
_base.Element.call(this, 'ProjectInfo', attrs);
|
|
|
}
|
|
|
- // 招标信息
|
|
|
+ // 招标信息 工程量清单、招标控制价时输出
|
|
|
function TendereeInfo(info) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 招标人
|
|
|
- {name: 'TendereeName', value: _util.getValueByKey(info, 'TendereeName'), required: true},
|
|
|
+ {name: 'TendereeName', dName: '招标人', value: _util.getValueByKey(info, 'bidInviter'), required: true},
|
|
|
// 招标单位法定代表人或其授权人
|
|
|
- {name: 'TenderAuthorizer', value: _util.getValueByKey(info, 'TenderAuthorizer')},
|
|
|
+ {name: 'TenderAuthorizer', value: _util.getValueByKey(info, 'tenderRepresentative')},
|
|
|
// 招标单位编制人
|
|
|
{name: 'TenderCompiler', value: _util.getValueByKey(info, 'TenderCompiler')},
|
|
|
// 招标单位编制人资格证书编号
|
|
|
@@ -283,7 +305,7 @@ const XMLStandard = (function () {
|
|
|
// 招标单位审定时间
|
|
|
{name: 'TenderApproveDate', value: _util.getValueByKey(info, 'TenderApproveDate')},
|
|
|
// 招标代理 不得为空,如无招标代理,则应填写“无”。
|
|
|
- {name: 'Proxy', value: _util.getValueByKey(info, 'Proxy'), required: true},
|
|
|
+ {name: 'Proxy', dName: '招标代理', value: _util.getValueByKey(info, 'Proxy'), required: true},
|
|
|
// 招标代理资质证书编号
|
|
|
{name: 'ProxyCertNo', value: _util.getValueByKey(info, 'ProxyCertNo')},
|
|
|
// 招标代理法定代表人或其授权人
|
|
|
@@ -307,7 +329,7 @@ const XMLStandard = (function () {
|
|
|
// 招标代理审定时间
|
|
|
{name: 'ProxyApproveDate', value: _util.getValueByKey(info, 'ProxyApproveDate')},
|
|
|
// 造价咨询 、Consultant(造价咨询):不得为空,如无则应填写“无”。
|
|
|
- {name: 'Consultant', value: _util.getValueByKey(info, 'Consultant'), required: true},
|
|
|
+ {name: 'Consultant', dName: '造价咨询', value: _util.getValueByKey(info, 'Consultant'), required: true},
|
|
|
// 造价咨询资质证书编号
|
|
|
{name: 'ConsultantCertNo', value: _util.getValueByKey(info, 'ConsultantCertNo')},
|
|
|
// 造价咨询法定代表人或其授权人
|
|
|
@@ -331,19 +353,19 @@ const XMLStandard = (function () {
|
|
|
// 造价咨询审定时间
|
|
|
{name: 'ConsultantApproveDate', value: _util.getValueByKey(info, 'ConsultantApproveDate')},
|
|
|
// 招标控制价(元)
|
|
|
- {name: 'TenderSumLimit', value: 'todo', type: _type.DECIMAL, required: true}
|
|
|
+ {name: 'TenderSumLimit', dName: '招标控制价', value: 'todo', type: _type.DECIMAL, required: true}
|
|
|
];
|
|
|
_base.Element.call(this, 'TendereeInfo', attrs);
|
|
|
}
|
|
|
// 投标信息
|
|
|
function BidderInfo(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 投标人
|
|
|
- {name: 'BidName', value: _util.getValueByKey(src.basicInformation, 'bidName'), required: true},
|
|
|
+ {name: 'BidName', dName: '投标人', value: _util.getValueByKey(src.basicInformation, 'bidName'), required: true},
|
|
|
// 投标单位法定代表人或其授权人
|
|
|
{name: 'BidAuthorizer', value: _util.getValueByKey(src.basicInformation, 'bidAuthorizer')},
|
|
|
// 投标总价(元)
|
|
|
- {name: 'BidAuthorizer', value: src.summaryInfo.engineeringCost, type: _type.DECIMAL, required: true},
|
|
|
+ {name: 'BidAuthorizer', dName: '投标总价', value: src.summaryInfo.engineeringCost, type: _type.DECIMAL, required: true},
|
|
|
// 投标单位编制人
|
|
|
{name: 'BidCompiler', value: _util.getValueByKey(src.basicInformation, 'bidCompiler')},
|
|
|
// 投标单位编制人资格证书编号
|
|
|
@@ -367,13 +389,13 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 费用汇总
|
|
|
function SummaryOfCost(summaryInfo) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 工程造价(元)
|
|
|
{name: 'Total', value: summaryInfo.engineeringCost, type: _type.DECIMAL},
|
|
|
// 建筑工程费
|
|
|
- {name: 'Construction', value: 'todo', type: _type.DECIMAL},
|
|
|
+ {name: 'Construction', value: '0', type: _type.DECIMAL},
|
|
|
// 安装工程费
|
|
|
- {name: 'Installation', value: 'todo', type: _type.DECIMAL},
|
|
|
+ {name: 'Installation', value: '0', type: _type.DECIMAL},
|
|
|
// 分部分项工程费
|
|
|
{name: 'DivisionalAndElementalWorks', value: summaryInfo.subEngineering, type: _type.DECIMAL},
|
|
|
// 措施项目费
|
|
|
@@ -419,15 +441,15 @@ const XMLStandard = (function () {
|
|
|
// 设备费
|
|
|
{name: 'Equipment', value: 'todo', type: _type.DECIMAL},
|
|
|
// 其中:引进部分(美元)
|
|
|
- {name: 'ForeignCurrency', value: 'todo', type: _type.DECIMAL},
|
|
|
+ //{name: 'ForeignCurrency', value: '0', type: _type.DECIMAL},
|
|
|
// 折合人民币
|
|
|
- {name: 'ConvertedIntoRMB', value: 'todo', type: _type.DECIMAL}
|
|
|
+ //{name: 'ConvertedIntoRMB', value: '0', type: _type.DECIMAL}
|
|
|
];
|
|
|
_base.Element.call(this, 'SummaryOfCost', attrs);
|
|
|
}
|
|
|
// 建筑安装工程费
|
|
|
function ProjectInstallationWorkCost(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 工程编号
|
|
|
{name: 'Number', value: ''},
|
|
|
// 工程名称
|
|
|
@@ -455,7 +477,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 单项工程
|
|
|
function SectionWorks(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 工程编号
|
|
|
{name: 'Number', value: ''},
|
|
|
// 工程名称
|
|
|
@@ -481,7 +503,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 单位工程
|
|
|
function UnitWorks(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 工程编号
|
|
|
{name: 'Number', value: '', required: true},
|
|
|
// 工程名称
|
|
|
@@ -541,7 +563,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 工程特征信息明细 AttrInfoItem, 补充信息明细AddiInfoItem
|
|
|
function InfoItem(eleName, src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
{name: 'Name', value: src.name, required: true},
|
|
|
{name: 'Value', value: src.value},
|
|
|
{name: 'Code', value: src.code},
|
|
|
@@ -555,7 +577,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 单位工程费用汇总标题
|
|
|
function UnitWorksSummaryGroup(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 费用编号
|
|
|
{name: 'Number', value: src.code},
|
|
|
// 费用名称
|
|
|
@@ -583,7 +605,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 单位工程费汇总明细
|
|
|
function UnitWorksSummaryItem(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
{name: 'Number', value: src.code},
|
|
|
{name: 'Name', value: src.name, required: true},
|
|
|
{name: 'Unit', value: src.unit},
|
|
|
@@ -615,7 +637,7 @@ const XMLStandard = (function () {
|
|
|
// 合计费用
|
|
|
function SummaryOfBasicCost() {
|
|
|
// 省略了一些
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
{name: 'Labor', value: 'todo', type: _type.DECIMAL},
|
|
|
{name: 'Material', value: 'todo', type: _type.DECIMAL},
|
|
|
{name: 'Material', value: 'todo', type: _type.DECIMAL},
|
|
|
@@ -638,7 +660,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 分部工程
|
|
|
function DivisionalWorks(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 编码
|
|
|
{name: 'Number', value: src.code},
|
|
|
{name: 'Name', value: src.name, required: true},
|
|
|
@@ -656,7 +678,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 清单项目
|
|
|
function WorkElement(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 项目编码
|
|
|
{name: 'Number', value: src.code, required: true},
|
|
|
// 项目名称
|
|
|
@@ -705,7 +727,7 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 工程量计算表
|
|
|
function ExpressElement(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 序号
|
|
|
{name: 'OrderNumber', value: 'todo', required: true},
|
|
|
// 工程量计算式
|
|
|
@@ -720,16 +742,16 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 工序内容
|
|
|
function WorkContent(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
{name: 'Name', value: src.name, required: true},
|
|
|
{name: 'Total', value: _util.getFee(src.fees, 'common.totalFee'), type: _type.DECIMAL},
|
|
|
- {name: 'Remark', value: src.remark}
|
|
|
+ {name: 'Remark', value: ''}
|
|
|
];
|
|
|
_base.Element.call(this, 'WorkContent', attrs);
|
|
|
}
|
|
|
// 定额子目
|
|
|
function Norm(src) {
|
|
|
- let attrs = [
|
|
|
+ const attrs = [
|
|
|
// 定额编码
|
|
|
{name: 'Number', value: src.code, required: true},
|
|
|
{name: 'Name', value: src.name, required: true},
|
|
|
@@ -783,9 +805,9 @@ const XMLStandard = (function () {
|
|
|
* */
|
|
|
async function loadData(projectData) {
|
|
|
// 提取出的数据
|
|
|
- let extractData = [];
|
|
|
+ const extractData = [];
|
|
|
// 建设项目部分
|
|
|
- let constructionProject = await loadProject(projectData);
|
|
|
+ const constructionProject = await loadProject(projectData);
|
|
|
extractData.push({
|
|
|
data: constructionProject,
|
|
|
dataType: DATA_TYPE.project,
|
|
|
@@ -794,19 +816,19 @@ const XMLStandard = (function () {
|
|
|
});
|
|
|
// 单位工程部分
|
|
|
// 提取出单位工程级别的项目数据
|
|
|
- let tenderData = projectData.children.reduce((acc, cur) => {
|
|
|
+ const tenderData = projectData.children.reduce((acc, cur) => {
|
|
|
if (Array.isArray(cur.children)) {
|
|
|
acc.push(...cur.children)
|
|
|
}
|
|
|
return acc;
|
|
|
}, []);
|
|
|
// 获取单位工程详细结构
|
|
|
- let isPlainTender = false;
|
|
|
- let tenders = await loadTender(projectData.summaryInfo, tenderData, isPlainTender);
|
|
|
+ const isPlainTender = false;
|
|
|
+ const tenders = await loadTender(projectData.summaryInfo, tenderData, isPlainTender);
|
|
|
tenders.forEach(tender => {
|
|
|
// 单位工程文件名为@_单位工程编码_单位工程名称.xml
|
|
|
// 因为单位工程编码后续用户可能会改变,这里暂时将fileName设置成单位工程名称.xml
|
|
|
- let name = tender.attrs.find(attr => attr.name === 'Name');
|
|
|
+ const name = tender.attrs.find(attr => attr.name === 'Name');
|
|
|
extractData.push({
|
|
|
data: tender,
|
|
|
dataType: DATA_TYPE.tender,
|
|
|
@@ -823,31 +845,31 @@ const XMLStandard = (function () {
|
|
|
* @return {Array}
|
|
|
* */
|
|
|
async function loadProject(projectData) {
|
|
|
- let basicInformation = projectData.property.basicInformation,
|
|
|
- summaryInfo = projectData.summaryInfo[projectData.ID];
|
|
|
+ const basicInformation = projectData.property.basicInformation;
|
|
|
+ const summaryInfo = projectData.summaryInfo[projectData.ID];
|
|
|
// 建设项目
|
|
|
- let constructionProject = new ConstructionProject({
|
|
|
+ const constructionProject = new ConstructionProject({
|
|
|
name: projectData.data,
|
|
|
basicInformation
|
|
|
});
|
|
|
// 系统信息
|
|
|
- let systemInfo = new SystemInfo({
|
|
|
+ const systemInfo = new SystemInfo({
|
|
|
// 软件相关信息进行base64编码
|
|
|
ID1: Base64.encode(projectData.softInfo),
|
|
|
generatedTime: moment(Date.now()).format('YYYY-MM-DDTHH:mm:ss')
|
|
|
});
|
|
|
// 工程信息
|
|
|
- let constructionInfo = loadConstructionInfo(projectData);
|
|
|
+ const constructionInfo = loadConstructionInfo(projectData);
|
|
|
// 费用汇总
|
|
|
- let summaryCost = new SummaryOfCost(summaryInfo);
|
|
|
+ const summaryCost = new SummaryOfCost(summaryInfo);
|
|
|
// 建筑安装工程费
|
|
|
- let projectInstall = new ProjectInstallationWorkCost({
|
|
|
+ const projectInstall = new ProjectInstallationWorkCost({
|
|
|
name: projectData.name,
|
|
|
basicInformation,
|
|
|
summaryInfo
|
|
|
});
|
|
|
// 单项工程
|
|
|
- let sectionalWorks = await loadEngineering(summaryInfo, projectData.children);
|
|
|
+ const sectionalWorks = await loadEngineering(summaryInfo, projectData.children);
|
|
|
projectInstall.children.push(...sectionalWorks);
|
|
|
constructionProject.children.push(
|
|
|
systemInfo,
|
|
|
@@ -860,14 +882,14 @@ const XMLStandard = (function () {
|
|
|
|
|
|
// 加载工程信息相关元素
|
|
|
function loadConstructionInfo(projectData) {
|
|
|
- let basicInformation = projectData.property.basicInformation,
|
|
|
- summaryInfo = projectData.summaryInfo[projectData.ID];
|
|
|
+ const basicInformation = projectData.property.basicInformation;
|
|
|
+ const summaryInfo = projectData.summaryInfo[projectData.ID];
|
|
|
// 工程信息
|
|
|
- let constructionInfo = new ConstructionInfo();
|
|
|
+ const constructionInfo = new ConstructionInfo();
|
|
|
// 费用精度
|
|
|
- let option = new Option();
|
|
|
+ const option = new Option();
|
|
|
// 估(概、预、结)算信息
|
|
|
- let projectInfo = new ProjectInfo({
|
|
|
+ const projectInfo = new ProjectInfo({
|
|
|
basicInformation: basicInformation,
|
|
|
summaryInfo: summaryInfo
|
|
|
});
|
|
|
@@ -895,18 +917,18 @@ const XMLStandard = (function () {
|
|
|
* @return {Array}
|
|
|
* */
|
|
|
async function loadEngineering(summaryInfoMap, engineeringData) {
|
|
|
- let isPlainTender = true;
|
|
|
- let engineeringTasks = engineeringData.map(async engData => {
|
|
|
- let summaryInfo = summaryInfoMap[engData.ID];
|
|
|
+ const isPlainTender = true;
|
|
|
+ const engineeringTasks = engineeringData.map(async engData => {
|
|
|
+ const summaryInfo = summaryInfoMap[engData.ID];
|
|
|
// 单项工程
|
|
|
- let sectionalWork = new SectionWorks({
|
|
|
+ const sectionalWork = new SectionWorks({
|
|
|
name: engData.name,
|
|
|
summaryInfo
|
|
|
});
|
|
|
// 费用汇总
|
|
|
- let summaryCost = new SummaryOfCost(summaryInfo);
|
|
|
+ const summaryCost = new SummaryOfCost(summaryInfo);
|
|
|
// 简单结构的单位工程
|
|
|
- let tenders = await loadTender(summaryInfoMap, engData.children, isPlainTender);
|
|
|
+ const tenders = await loadTender(summaryInfoMap, engData.children, isPlainTender);
|
|
|
sectionalWork.push(summaryCost, ...tenders);
|
|
|
return sectionalWork;
|
|
|
});
|
|
|
@@ -921,10 +943,10 @@ const XMLStandard = (function () {
|
|
|
* @return {Array}
|
|
|
* */
|
|
|
async function loadTender(summaryInfoMap, tenderData, isPlain) {
|
|
|
- let tenderTasks = tenderData.map(async tData => {
|
|
|
- let summaryInfo = summaryInfoMap[tData.ID];
|
|
|
+ const tenderTasks = tenderData.map(async tData => {
|
|
|
+ const summaryInfo = summaryInfoMap[tData.ID];
|
|
|
// 单位工程
|
|
|
- let unitWork = new UnitWorks({
|
|
|
+ const unitWork = new UnitWorks({
|
|
|
name: tData.name,
|
|
|
summaryInfo: summaryInfo
|
|
|
});
|
|
|
@@ -934,11 +956,11 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 不是简单结构,继续添加各种子元素
|
|
|
// 工程特征信息
|
|
|
- let attrInfo = loadAttrInfo(tData.property.projectFeature);
|
|
|
+ const attrInfo = loadAttrInfo(tData.property.projectFeature);
|
|
|
// 费用汇总
|
|
|
- let summaryOfCost = new SummaryOfCost(summaryInfo);
|
|
|
+ const summaryOfCost = new SummaryOfCost(summaryInfo);
|
|
|
// 获取单位工程详细数据
|
|
|
- let tenderDetail = await _util.getTenderDetail(tData.ID, userID);
|
|
|
+ const tenderDetail = await _util.getTenderDetail(tData.ID, userID);
|
|
|
// 单位工程费用汇总
|
|
|
});
|
|
|
return await Promise.all(tenderTasks);
|
|
|
@@ -947,7 +969,7 @@ const XMLStandard = (function () {
|
|
|
// 加载工程特征信息
|
|
|
// attrList 单位工程的工程特征,来自property.projectFeature
|
|
|
function loadAttrInfo(attrList) {
|
|
|
- let attrInfo = new Info('AttrInfo');
|
|
|
+ const attrInfo = new Info('AttrInfo');
|
|
|
attrInfo.children = attrList.map(attr =>
|
|
|
new InfoItem('AttrInfoItem', {
|
|
|
name: attr.dispName,
|
|
|
@@ -961,13 +983,13 @@ const XMLStandard = (function () {
|
|
|
// 加载单位工程费用汇总
|
|
|
// tenderDetail 单位工程详细数据
|
|
|
function loadUnitWorksSummary(tenderDetail) {
|
|
|
- let unitWorksSummary = new UnitWorksSummary();
|
|
|
+ const unitWorksSummary = new UnitWorksSummary();
|
|
|
return unitWorksSummary;
|
|
|
}
|
|
|
|
|
|
// 加载分部分项工程
|
|
|
function loadDivisionWorks(tenderDetail) {
|
|
|
- let division = new DivisionalAndElementalWorks();
|
|
|
+ const division = new DivisionalAndElementalWorks();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -983,26 +1005,26 @@ const XMLStandard = (function () {
|
|
|
// 1.根元素为建设项目:需要修改建设项目下的单位工程元素的编码和文件名
|
|
|
// 2.根元素为单位工程:需要修改单位工程的编码和文件名
|
|
|
// 获取建设项目数据下的单位工程元素
|
|
|
- let ExtractProjects = extractData.filter(data => data.dataType === DATA_TYPE.project);
|
|
|
- let tenders1 = ExtractProjects.map(extractP => {
|
|
|
+ const ExtractProjects = extractData.filter(data => data.dataType === DATA_TYPE.project);
|
|
|
+ const tenders = ExtractProjects.map(extractP => {
|
|
|
// 建设项目元素下建筑安装工程费元素
|
|
|
- let projectInstallations = _util.getElementFromSrc(extractP.data, 'ProjectInstallationWorkCost');
|
|
|
+ const projectInstallations = _util.getElementFromSrc(extractP.data, 'ProjectInstallationWorkCost');
|
|
|
// 建筑安装工程费元素下单项工程元素
|
|
|
- let sectionalWorks = projectInstallations.reduce((acc, cur) => {
|
|
|
- let sections = _util.getElementFromSrc(cur, 'SectionalWorks');
|
|
|
+ const sectionalWorks = projectInstallations.reduce((acc, cur) => {
|
|
|
+ const sections = _util.getElementFromSrc(cur, 'SectionalWorks');
|
|
|
acc.push(...sections);
|
|
|
}, []);
|
|
|
// 单项工程元素下单位工程元素
|
|
|
return sectionalWorks.reduce((acc, cur) => {
|
|
|
- let tenders = _util.getElementFromSrc(cur, 'UnitWorks');
|
|
|
+ const tenders = _util.getElementFromSrc(cur, 'UnitWorks');
|
|
|
acc.push(...tenders);
|
|
|
}, []);
|
|
|
});
|
|
|
// 重置编号
|
|
|
let idx = 0;
|
|
|
- for (let tender of tenders1) {
|
|
|
+ for (let tender of tenders) {
|
|
|
let codeItem = tender.attrs.find(attr => attr.name === '编号');
|
|
|
codeItem.value = codes[idx++];
|
|
|
}
|
|
|
}
|
|
|
-})();
|
|
|
+})();
|