Просмотр исходного кода

目管理界面的单价文件和费率文件页面窗口提示语句描述修改

vian 5 лет назад
Родитель
Сommit
bc7d47f75c

+ 15 - 10
web/building_saas/main/js/models/exportStdInterfaceBase.js

@@ -165,8 +165,13 @@ const XML_EXPORT_BASE = (() => {
         let rst = { failHints: [], filterAttrs: [] };
         let dateReg = /([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))/;
         for (let data of datas) {
-            // 值统一转换成String
-            data.value = !hasValue(data.value)
+            const isHasValue = hasValue(data.value);
+            // 某属性是非必须的,并且设置了mustHasValue,意味着必须要有值才输出该属性
+            if (!data.required && data.mustHasValue && !hasValue) {
+                continue;
+            }
+            // 值统一转换成String,并且处理各类型属性空值时的默认取值
+            data.value = !isHasValue
                 ? DEFAULT_VALUE[data.type]
                     ? DEFAULT_VALUE[data.type]
                     : ''
@@ -184,12 +189,12 @@ const XML_EXPORT_BASE = (() => {
                 isFail = true;
                 tempFail = data.failHint
                     ? `${data.failHint}字符数不可小于${data.minLen}个。`
-                    : `${eleName}-“${data.name}”字符数不可小于${data.minLen}个。`;
+                    : `${eleName}-“${name}”字符数不可小于${data.minLen}个。`;
             } else if (data.maxLen && data.value.length > data.maxLen) {
                 isFail = true;
                 tempFail = data.failHint
                     ? `${data.failHint}字符数不可大于${data.maxLen}个。`
-                    : `${eleName}-“${data.name}”字符数不可大于${data.maxLen}个。`;
+                    : `${eleName}-“${name}”字符数不可大于${data.maxLen}个。`;
             } else if (data.enumeration && !data.enumeration.includes(data.value)) {
                 isFail = true;
                 let enumerationHint = data.enumerationHint
@@ -197,29 +202,29 @@ const XML_EXPORT_BASE = (() => {
                     : data.enumeration.join(';');
                 tempFail = data.failHint
                     ? `${data.failHint}只能从“${enumerationHint}”中选择。`
-                    : `${eleName}-“${data.name}”只能从“${enumerationHint}”中选择。`;
+                    : `${eleName}-“${name}”只能从“${enumerationHint}”中选择。`;
             } else if (data.type && data.type === TYPE.DATE && !dateReg.test(data.value)) {
                 isFail = true;
                 tempFail = data.failHint
                     ? `${data.failHint}日期格式必须是YYYY-MM-DD。`
-                    : `${eleName}-“${data.name}”日期格式必须是YYYY-MM-DD。`;
+                    : `${eleName}-“${name}”日期格式必须是YYYY-MM-DD。`;
             } else if (data.type && data.type === TYPE.INT && !Number.isInteger(parseFloat(data.value))) {
                 isFail = true;
                 tempFail = data.failHint
                     ? `${data.failHint}必须为整数。`
-                    : `${eleName}-“${data.name}”必须为整数。`;
+                    : `${eleName}-“${name}”必须为整数。`;
             } else if (data.type && data.type === TYPE.DECIMAL && isNaN(parseFloat(data.value))) {
                 isFail = true;
                 tempFail = data.failHint
                     ? `${data.failHint}必须为数值。`
-                    : `${eleName}-“${data.name}”必须为数值。`;
+                    : `${eleName}-“${name}”必须为数值。`;
             } else if (data.type && data.type === TYPE.NUM2) {
                 let v = parseFloat(data.value);
                 if (isNaN(v)) {
                     isFail = true;
                     tempFail = data.failHint
                         ? `${data.failHint}必须为数值。`
-                        : `${eleName}-“${data.name}”必须为数值。`;
+                        : `${eleName}-“${name}”必须为数值。`;
                 } else if (!data.value.length || (data.value.split('.').length > 1 && data.value.split('.')[1].length > 2)) {
                     isFail = true;
                 }
@@ -227,7 +232,7 @@ const XML_EXPORT_BASE = (() => {
                 isFail = true;
                 tempFail = data.failHint
                     ? `${data.failHint}必须为true或false。`
-                    : `${eleName}-“${data.name}”必须为true或false。`;
+                    : `${eleName}-“${name}”必须为true或false。`;
             }
             if (!isFail || data.required) {
                 rst.filterAttrs.push(data);

+ 109 - 141
web/building_saas/main/js/models/exportStdInterface_gd18.js

@@ -462,12 +462,12 @@ const XMLStandard = (function () {
                 },
                 // 建设性质
                 {
-                    name: 'ConstructionType', type: _type.INT, enumeration: Object.keys(ConstructionType),
+                    name: 'ConstructionType', type: _type.INT, enumeration: Object.values(ConstructionType),
                     value: ConstructionType[_util.getValueByKey(basicInformation, 'constructionType')]
                 },
                 // 文件类型
                 {
-                    name: 'FileKind', dName: '造价类型', type: _type.INT, required: true, enumeration: Object.keys(CostType),
+                    name: 'FileKind', dName: '文件类型', type: _type.INT, required: true,
                     value: FileKind[exportKind]
                 },
                 // 计价模式
@@ -482,7 +482,7 @@ const XMLStandard = (function () {
                 },
                 // 地区类别
                 {
-                    name: 'AreaKind', dName: '地区类别', type: _type.INT, required: true, enumeration: Object.keys(AreaKind),
+                    name: 'AreaKind', dName: '地区类别', type: _type.INT, required: true, enumeration: Object.values(AreaKind),
                     value: _util.getValueByKey(basicInformation, 'regionalCategories')
                 },
                 // 工程地点
@@ -518,7 +518,7 @@ const XMLStandard = (function () {
                 // 建设规模
                 {
                     name: 'Scale', dName: '工程规模', type: _type.DECIMAL, required: true,
-                    value: _util.getValueByKey(basicInformation, 'projectScale')
+                    value: _util.getValueByKey(basicInformation, 'scale')
                 },
                 // 建设规模单位
                 {
@@ -550,10 +550,7 @@ const XMLStandard = (function () {
                 // 编制机器硬件信息,不输出
                 { name: 'ID2', value: ID2 },
                 // 文件生成时间
-                {
-                    name: 'MakeDate', dName: '文件生成时间', type: _type.DATE_TIME, required: true,
-                    value: makeDate
-                }
+                { name: 'MakeDate', dName: '文件生成时间', type: _type.DATE_TIME, required: true, value: makeDate }
             ];
             _base.Element.call(this, 'SystemInfo', attrs);
         }
@@ -565,253 +562,222 @@ const XMLStandard = (function () {
         function Option() {
             const attrs = [
                 // 工料机消耗量、含量、用量类小数精度
-                {
-                    name: 'ResPrecision', type: _type.INT, required: true,
-                    value: Decimal.GLJ
-                },
+                { name: 'ResPrecision', type: _type.INT, required: true, value: Decimal.GLJ },
                 // 工程量、数量类小数精度
-                {
-                    name: 'QuantityPrecision', type: _type.INT, required: true,
-                    value: Decimal.QUANTITY
-                },
+                { name: 'QuantityPrecision', type: _type.INT, required: true, value: Decimal.QUANTITY },
                 // 金额、合价、费用类小数精度
-                {
-                    name: 'CostPrecision', type: _type.INT, required: true,
-                    value: Decimal.Fee
-                },
+                { name: 'CostPrecision', type: _type.INT, required: true, value: Decimal.Fee },
                 // 费率、指数、比例(%)类小数精度
-                {
-                    name: 'RatePrecision', type: _type.INT, required: true,
-                    value: Decimal.RATE
-                }
+                { name: 'RatePrecision', type: _type.INT, required: true, value: Decimal.RATE }
             ];
             _base.Element.call(this, 'Option', attrs);
         }
         // 估(概、预、结)算信息
+        // 有内容的属性才输出
         function ProjectInfo(basicInformation, summaryInfo) {
             const attrs = [
                 // 设计单位
-                { name: 'Designer', value: _util.getValueByKey(basicInformation, 'designUnits') },
+                { name: 'Designer', mustHasValue: true, value: _util.getValueByKey(basicInformation, 'designUnits') },
                 // 承包单位
-                { name: 'Contractor', value: _util.getValueByKey(basicInformation, 'constructionUnits') },
+                { name: 'Contractor', mustHasValue: true, value: _util.getValueByKey(basicInformation, 'constructionUnits') },
                 // 编制单位
                 {
                     name: 'CompileCompany', dName: '编制单位', required: true,
                     value: _util.getValueByKey(basicInformation, 'establishUnit') || '无'
                 },
                 // 编制单位法定代表人或其授权人
-                { name: 'Authorizer', value: _util.getValueByKey(basicInformation, 'constructingUnitsPerson') },
-                // 编制人
-                { name: 'Compiler', value: _util.getValueByKey(basicInformation, 'establishUnitAuthor') },
-                // 编制人资格证书编号
-                { name: 'CompilerCertNo', value: _util.getValueByKey(basicInformation, 'establishDate') },
-                // 编制时间
-                {
-                    name: 'CompileDate', dName: '编制时间', required: true,
-                    value: 'todo',
-                },
-                // 审核人
-                { name: 'Examiner', value: _util.getValueByKey(basicInformation, 'auditUnitAuditor') },
-                // 审核人资格证书编号
-                { name: 'ExaminerCertNo', value: _util.getValueByKey(basicInformation, 'ExaminerCertNo') },
-                // 审核时间
-                { name: 'ExamineDate', value: _util.getValueByKey(basicInformation, 'auditDate') },
-                // 审定人
-                { name: 'Approver', value: _util.getValueByKey(basicInformation, 'Approver') },
-                // 审定人资格证书编号
-                { name: 'ApproverCertNo', value: _util.getValueByKey(basicInformation, 'ApproverCertNo') },
-                // 审定时间
-                { name: 'ApproverDate', value: _util.getValueByKey(basicInformation, 'ApproverDate') },
+                { name: 'Authorizer', mustHasValue: true, value: _util.getValueByKey(basicInformation, 'authorizer') },
                 // 工程总价(元)
                 {
                     name: 'Total', dName: '工程总价', type: _type.DECIMAL, required: true,
-                    value: summaryInfo.engineeringCost || '0'
+                    value: summaryInfo.engineeringCost
                 }
             ];
             _base.Element.call(this, 'ProjectInfo', attrs);
         }
         // 招标信息 工程量清单、招标控制价时输出
-        function TendereeInfo(basicInformation) {
+        // 有内容的属性才输出
+        function TendereeInfo(basicInformation, summaryInfo) {
             const attrs = [
                 // 招标人
                 {
                     name: 'TendereeName', dName: '招标人', required: true,
-                    value: _util.getValueByKey(basicInformation, 'bidInviter')
+                    value: _util.getValueByKey(basicInformation, 'tendereeName')
                 },
                 // 招标单位法定代表人或其授权人
                 {
-                    name: 'TenderAuthorizer',
-                    value: _util.getValueByKey(basicInformation, 'tenderRepresentative')
+                    name: 'TenderAuthorizer', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderAuthorizer')
                 },
                 // 招标单位编制人
                 {
-                    name: 'TenderCompiler',
-                    value: _util.getValueByKey(basicInformation, 'TenderCompiler')
+                    name: 'TenderCompiler', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderCompiler')
                 },
                 // 招标单位编制人资格证书编号
                 {
-                    name: 'TenderCompilerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'TenderCompilerCertNo')
+                    name: 'TenderCompilerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderCompilerCertNo')
                 },
                 // 招标单位编制时间
                 {
-                    name: 'TenderCompileDate',
-                    value: _util.getValueByKey(basicInformation, 'TenderCompileDate')
+                    name: 'TenderCompileDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderCompileDate')
                 },
                 // 招标单位审核人
                 {
-                    name: 'TenderExaminer',
-                    value: _util.getValueByKey(basicInformation, 'TenderExaminer')
+                    name: 'TenderExaminer', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderExaminer')
                 },
                 // 招标单位审核人资格证书编号
                 {
-                    name: 'TenderExaminerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'TenderExaminerCertNo')
+                    name: 'TenderExaminerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderExaminerCertNo')
                 },
                 // 招标单位审核时间
                 {
-                    name: 'TenderExamineDate',
-                    value: _util.getValueByKey(basicInformation, 'TenderExamineDate')
+                    name: 'TenderExamineDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderExamineDate')
                 },
                 // 招标单位审定人
                 {
-                    name: 'TenderApprover',
-                    value: _util.getValueByKey(basicInformation, 'TenderApprover')
+                    name: 'TenderApprover', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderApprover')
                 },
                 // 招标单位审定人资格证书编号
                 {
-                    name: 'TenderApproverCertNo',
-                    value: _util.getValueByKey(basicInformation, 'TenderApproverCertNo')
+                    name: 'TenderApproverCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderApproverCertNo')
                 },
                 // 招标单位审定时间
                 {
-                    name: 'TenderApproveDate',
-                    value: _util.getValueByKey(basicInformation, 'TenderApproveDate')
+                    name: 'TenderApproveDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'tenderApproveDate')
                 },
                 // 招标代理 不得为空,如无招标代理,则应填写“无”。
                 {
                     name: 'Proxy', dName: '招标代理',
-                    value: _util.getValueByKey(basicInformation, 'Proxy'), required: true
+                    value: _util.getValueByKey(basicInformation, 'proxy') || '无', required: true
                 },
                 // 招标代理资质证书编号
                 {
-                    name: 'ProxyCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ProxyCertNo')
+                    name: 'ProxyCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyCertNo')
                 },
                 // 招标代理法定代表人或其授权人
                 {
-                    name: 'ProxyAuthorizer',
-                    value: _util.getValueByKey(basicInformation, 'ProxyAuthorizer')
+                    name: 'ProxyAuthorizer', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyAuthorizer')
                 },
                 // 招标代理编制人员
                 {
-                    name: 'ProxyCompiler',
-                    value: _util.getValueByKey(basicInformation, 'ProxyCompiler')
+                    name: 'ProxyCompiler', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyCompiler')
                 },
                 // 招标代理编制人员资格证书编号
                 {
-                    name: 'ProxyCompilerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ProxyCompilerCertNo')
+                    name: 'ProxyCompilerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyCompilerCertNo')
                 },
                 // 招标代理编制时间
                 {
-                    name: 'ProxyCompileDate',
-                    value: _util.getValueByKey(basicInformation, 'ProxyCompileDate')
+                    name: 'ProxyCompileDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyCompileDate')
                 },
                 // 招标代理审核人
                 {
-                    name: 'ProxyExaminer',
-                    value: _util.getValueByKey(basicInformation, 'ProxyExaminer')
+                    name: 'ProxyExaminer', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyExaminer')
                 },
                 // 招标代理审核人资格证书编号
                 {
-                    name: 'ProxyExaminerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ProxyExaminerCertNo')
+                    name: 'ProxyExaminerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyExaminerCertNo')
                 },
                 // 招标代理审核时间
                 {
-                    name: 'ProxyExamineDate',
-                    value: _util.getValueByKey(basicInformation, 'ProxyExamineDate')
+                    name: 'ProxyExamineDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyExamineDate')
                 },
                 // 招标代理审定人
                 {
-                    name: 'ProxyApprover',
-                    value: _util.getValueByKey(basicInformation, 'ProxyApprover')
+                    name: 'ProxyApprover', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyApprover')
                 },
                 // 招标代理审定人资格证书编号
                 {
-                    name: 'ProxyApproverCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ProxyApproverCertNo')
+                    name: 'ProxyApproverCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyApproverCertNo')
                 },
                 // 招标代理审定时间
                 {
-                    name: 'ProxyApproveDate',
-                    value: _util.getValueByKey(basicInformation, 'ProxyApproveDate')
+                    name: 'ProxyApproveDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'proxyApproveDate')
                 },
                 // 造价咨询 、Consultant(造价咨询):不得为空,如无则应填写“无”。
                 {
                     name: 'Consultant', dName: '造价咨询', required: true,
-                    value: _util.getValueByKey(basicInformation, 'Consultant')
+                    value: _util.getValueByKey(basicInformation, 'consultant') || '无'
                 },
                 // 造价咨询资质证书编号
                 {
-                    name: 'ConsultantCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantCertNo')
+                    name: 'ConsultantCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantCertNo')
                 },
                 // 造价咨询法定代表人或其授权人
                 {
-                    name: 'ConsultantAuthorizer',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantAuthorizer')
+                    name: 'ConsultantAuthorizer', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantAuthorizer')
                 },
                 // 造价咨询编制人
                 {
-                    name: 'ConsultantCompiler',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantCompiler')
+                    name: 'ConsultantCompiler', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantCompiler')
                 },
                 // 造价咨询编制人资格证书
                 {
-                    name: 'ConsultantCompilerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantCompilerCertNo')
+                    name: 'ConsultantCompilerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantCompilerCertNo')
                 },
                 // 造价咨询编制时间
                 {
-                    name: 'ConsultantCompileDate',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantCompileDate')
+                    name: 'ConsultantCompileDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantCompileDate')
                 },
                 // 造价咨询审核人
                 {
-                    name: 'ConsultantExaminer',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantExaminer')
+                    name: 'ConsultantExaminer', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantExaminer')
                 },
                 // 造价咨询审核人资格证书编号
                 {
-                    name: 'ConsultantExaminerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantExaminerCertNo')
+                    name: 'ConsultantExaminerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantExaminerCertNo')
                 },
                 // 造价咨询审核时间
                 {
-                    name: 'ConsultantExamineDate',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantExamineDate')
+                    name: 'ConsultantExamineDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantExamineDate')
                 },
                 // 造价咨询审定人
                 {
-                    name: 'ConsultantApprover',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantApprover')
+                    name: 'ConsultantApprover', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantApprover')
                 },
                 // 造价咨询审定人资格证书编号
                 {
-                    name: 'ConsultantApproverCertNo',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantApproverCertNo')
+                    name: 'ConsultantApproverCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantApproverCertNo')
                 },
                 // 造价咨询审定时间
                 {
-                    name: 'ConsultantApproveDate',
-                    value: _util.getValueByKey(basicInformation, 'ConsultantApproveDate')
+                    name: 'ConsultantApproveDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'consultantApproveDate')
                 },
                 // 招标控制价(元)
                 {
                     name: 'TenderSumLimit', dName: '招标控制价', type: _type.DECIMAL, required: true,
-                    value: 'todo'
+                    value: summaryInfo.engineeringCost
                 }
             ];
             _base.Element.call(this, 'TendereeInfo', attrs);
@@ -822,11 +788,11 @@ const XMLStandard = (function () {
                 // 投标人
                 {
                     name: 'BidName', dName: '投标人', required: true,
-                    value: _util.getValueByKey(basicInformation, 'bidName')
+                    value: _util.getValueByKey(basicInformation, 'bidName') || '无'
                 },
                 // 投标单位法定代表人或其授权人
                 {
-                    name: 'BidAuthorizer',
+                    name: 'BidAuthorizer', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidAuthorizer')
                 },
                 // 投标总价(元)
@@ -836,48 +802,48 @@ const XMLStandard = (function () {
                 },
                 // 投标单位编制人
                 {
-                    name: 'BidCompiler',
+                    name: 'BidCompiler', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidCompiler')
                 },
                 // 投标单位编制人资格证书编号
                 {
-                    name: 'BidCompilerCertNo',
-                    value: _util.getValueByKey(basicInformation, 'BidCompilerCertNo')
+                    name: 'BidCompilerCertNo', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'bidCompilerCertNo')
                 },
                 // 投标单位编制时间
                 {
-                    name: 'BidCompileDate',
+                    name: 'BidCompileDate', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidCompileDate')
                 },
                 // 投标单位审核人
                 {
-                    name: 'BidExaminer',
+                    name: 'BidExaminer', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidExaminer')
                 },
                 // 投标单位审核人资格证书编号
                 {
-                    name: 'BidExaminerCertNo',
+                    name: 'BidExaminerCertNo', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidExaminerCertNo')
                 },
                 // 投标单位审核时间
                 {
-                    name: 'BidExamineDate',
+                    name: 'BidExamineDate', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidExamineDate')
                 },
                 // 投标单位审定人
                 {
-                    name: 'BidApprover',
+                    name: 'BidApprover', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidApprover')
                 },
                 // 投标单位审定人资格证书
                 {
-                    name: 'BidApproverCertNo',
+                    name: 'BidApproverCertNo', mustHasValue: true,
                     value: _util.getValueByKey(basicInformation, 'bidApproverCertNo')
                 },
                 // 投标单位审定时间
                 {
-                    name: 'BidApproveDate',
-                    value: _util.getValueByKey(basicInformation, 'BidApproveDate')
+                    name: 'BidApproveDate', mustHasValue: true,
+                    value: _util.getValueByKey(basicInformation, 'bidApproveDate')
                 }
             ];
             _base.Element.call(this, 'BidderInfo', attrs);
@@ -1565,8 +1531,8 @@ const XMLStandard = (function () {
                     value: ration.type === rationType.overHeight ? EfficiencyKind.BASE_REDUCTION : EfficiencyKind.NOT_BASE_REDUCTION
                 },
                 // 子目增加费类型itemIncrease
-                { 
-                    name: 'IncFeeKind', type: _type.INT, 
+                {
+                    name: 'IncFeeKind', type: _type.INT,
                     value: ration.type === rationType.overHeight ? IncFeeKind.SUB_BASE : IncFeeKind.NOT_SUB_BASE
                 },
                 // 换算说明
@@ -2157,14 +2123,17 @@ const XMLStandard = (function () {
             // 估(概、预、结)算信息
             const projectInfo = new ProjectInfo(basicInformation, summaryInfo);
             let exportInfo;
-            if (exportKind === _config.EXPORT_KIND.Bid) {
-                // 招标信息
-                exportInfo = new TendereeInfo(basicInformation);
-            } else if (exportKind === _config.EXPORT_KIND.Tender) {
-                // 投标信息
-                exportInfo = new BidderInfo(basicInformation, summaryInfo);
+            if (exportKind === _config.EXPORT_KIND.Tender) {
+                // 投标文件输出招标、投标信息
+                exportInfo = [
+                    new TendereeInfo(basicInformation, summaryInfo),
+                    new BidderInfo(basicInformation, summaryInfo)
+                ];
+            } else {
+                // 招标或控制价文件只输出招标信息
+                exportInfo = [new TendereeInfo(basicInformation, summaryInfo)];
             }
-            constructionInfo.push(option, projectInfo, exportInfo);
+            constructionInfo.children.push(option, projectInfo, ...exportInfo);
             return constructionInfo;
         }
 
@@ -2203,7 +2172,6 @@ const XMLStandard = (function () {
          * */
         let tenderDetail = null;
         async function loadTenders(summaryInfoMap, tenderData, isPlain) {
-            const basicInformation = projectData.property.basicInformation;
             const tenderTasks = tenderData.map(async tData => {
                 const summaryInfo = summaryInfoMap[tData.ID];
                 // 单位工程

+ 1 - 1
web/building_saas/pm/html/project-management.html

@@ -667,7 +667,7 @@
                                 <select class="form-control" id="otherFileOptions">
                                     <option>10.9建筑例题内测单价文件</option><!--建设项目下单价文件-->
                                 </select>
-                                <span class="form-text text-muted">您选择的文件将复制一份至当前项目,不会影响原建设项目的文件。</span>
+                                <span class="form-text text-muted">您选择的文件将复制一份至当前项目,不会影响原建设项目的文件。</span>
                             </div>
                         </div>