|
@@ -312,8 +312,11 @@ const XMLStandard = (function () {
|
|
|
return feeCode;
|
|
|
}
|
|
|
const name = bills.name || '';
|
|
|
+ // 新需求: 不处理重名问题
|
|
|
+ feeCode = pinyinUtil.getFirstLetter(name);
|
|
|
+ return feeCode;
|
|
|
// 出现重名,应以“费用代号_顺序号”规则,顺序号为自然数,从 1 开始(整个建设项目)
|
|
|
- const tempFeeCode = pinyinUtil.getFirstLetter(name);
|
|
|
+ /* const tempFeeCode = pinyinUtil.getFirstLetter(name);
|
|
|
const sameFeeCodes = firstLetterMap[tempFeeCode] ? firstLetterMap[tempFeeCode] : firstLetterMap[tempFeeCode] = [];
|
|
|
feeCode = sameFeeCodes.includes(bills.ID)
|
|
|
? `${tempFeeCode}${sameFeeCodes.indexOf(bills.ID) === 0 ? '' : '_' + sameFeeCodes.indexOf(bills.ID)}`
|
|
@@ -323,7 +326,7 @@ const XMLStandard = (function () {
|
|
|
if (!sameFeeCodes.includes(bills.ID)) {
|
|
|
sameFeeCodes.push(bills.ID);
|
|
|
}
|
|
|
- return feeCode;
|
|
|
+ return feeCode; */
|
|
|
} else { // 非ID引用基数获取费用字典
|
|
|
return FormulaFeeCodeMap[formula] || '';
|
|
|
}
|
|
@@ -1194,12 +1197,14 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 单位工程费用汇总标题
|
|
|
function UnitWorksSummaryGroup(bills) {
|
|
|
+ const node = tenderDetail.mainTree.nodes[`id_${bills.ID}`];
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 费用编号
|
|
|
{ name: 'Number', value: bills.code },
|
|
|
// 费用名称
|
|
|
{
|
|
|
- name: 'Name', dName: '名称', required: true,
|
|
|
+ name: 'Name', dName: '名称', required: true, minLen: 1, failHint: `第${row}行清单-“项目名称”`,
|
|
|
value: bills.name
|
|
|
},
|
|
|
// 单位
|
|
@@ -1242,10 +1247,11 @@ const XMLStandard = (function () {
|
|
|
// 单位工程费汇总明细
|
|
|
function UnitWorksSummaryItem(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
{ name: 'Number', value: bills.code },
|
|
|
{
|
|
|
- name: 'Name', dName: '名称', required: true,
|
|
|
+ name: 'Name', dName: '名称', required: true, minLen: 1, failHint: `第${row}行清单-“项目名称”`,
|
|
|
value: bills.name
|
|
|
},
|
|
|
{ name: 'Unit', value: bills.unit },
|
|
@@ -1396,7 +1402,7 @@ const XMLStandard = (function () {
|
|
|
{ name: 'Number', value: bills.code },
|
|
|
// 名称
|
|
|
{
|
|
|
- name: 'Name', dName: '名称',
|
|
|
+ name: 'Name', dName: '名称', minLen: 1,
|
|
|
value: bills.name
|
|
|
},
|
|
|
// 特征
|
|
@@ -1624,9 +1630,11 @@ const XMLStandard = (function () {
|
|
|
}
|
|
|
// 其他项目汇总子目
|
|
|
function SundryItem(eleName, bills) {
|
|
|
+ const node = tenderDetail.mainTree.nodes[`id_${bills.ID}`];
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”`},
|
|
|
// 金额
|
|
|
{ name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
|
|
|
// 费用代号
|
|
@@ -1641,9 +1649,10 @@ const XMLStandard = (function () {
|
|
|
const bills = node.data;
|
|
|
// 材料暂估价取不汇总,其他为汇总
|
|
|
const kind = node.getFlag() === fixedFlag.MATERIAL_PROVISIONAL ? SummrayKind.NO : SummrayKind.YES;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 金额
|
|
|
{ name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
|
|
|
// 费用代号
|
|
@@ -1660,9 +1669,10 @@ const XMLStandard = (function () {
|
|
|
const bills = node.data;
|
|
|
// 材料暂估价取不汇总,其他为汇总
|
|
|
const kind = node.getFlag() === fixedFlag.MATERIAL_PROVISIONAL ? SummrayKind.NO : SummrayKind.YES;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 单位
|
|
|
{ name: 'Unit', value: bills.unit },
|
|
|
// 工程量
|
|
@@ -1694,9 +1704,10 @@ const XMLStandard = (function () {
|
|
|
// 暂列金额标题
|
|
|
function ProvisionalSumsGroup(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 金额
|
|
|
{ name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
|
|
|
// 汇总类型
|
|
@@ -1709,9 +1720,10 @@ const XMLStandard = (function () {
|
|
|
// 暂列金额明细
|
|
|
function ProvisionalSumsItem(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 单位
|
|
|
{ name: 'Unit', value: bills.unit },
|
|
|
// 工程量
|
|
@@ -1745,7 +1757,7 @@ const XMLStandard = (function () {
|
|
|
// 编码
|
|
|
{ name: 'Number', value: glj.code },
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: glj.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: glj.name },
|
|
|
// 型号规格
|
|
|
{ name: 'Specification', value: glj.specs },
|
|
|
// 单位
|
|
@@ -1764,9 +1776,10 @@ const XMLStandard = (function () {
|
|
|
// 专业工程暂估价标题
|
|
|
function SpecialtyProvisionalPriceGroup(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 工程内容
|
|
|
{ name: 'Content', value: bills.engineeringContent },
|
|
|
// 金额
|
|
@@ -1781,9 +1794,10 @@ const XMLStandard = (function () {
|
|
|
// 专业工程暂估价明细
|
|
|
function SpecialtyProvisionalPriceItem(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 工程内容
|
|
|
{ name: 'Content', value: bills.engineeringContent },
|
|
|
// 单位
|
|
@@ -1814,9 +1828,10 @@ const XMLStandard = (function () {
|
|
|
// 计日工标题
|
|
|
function DayWorkRateGroup(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 金额
|
|
|
{ name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
|
|
|
// 费用代号
|
|
@@ -1829,11 +1844,12 @@ const XMLStandard = (function () {
|
|
|
// 计日工明细
|
|
|
function DayWorkRateItem(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 编码
|
|
|
{ name: 'Number', value: bills.code },
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 型号规格
|
|
|
{ name: 'Specification', value: '' },
|
|
|
// 单位
|
|
@@ -1852,9 +1868,10 @@ const XMLStandard = (function () {
|
|
|
// 总承包服务费标题
|
|
|
function MainContractorAttendanceGroup(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 金额
|
|
|
{ name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
|
|
|
// 汇总类型
|
|
@@ -1867,9 +1884,10 @@ const XMLStandard = (function () {
|
|
|
// 总承包服务费明细
|
|
|
function MainContractorAttendanceItem(node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 项目价值,计算基数对应的金额
|
|
|
{ name: 'Quantity', type: _type.DECIMAL, value: bills.tenderCalcBaseValue },
|
|
|
// 服务内容
|
|
@@ -1890,9 +1908,10 @@ const XMLStandard = (function () {
|
|
|
// 索赔、签证费用标题
|
|
|
function ClaimVisaCostGroup(eleName, node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 金额
|
|
|
{ name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
|
|
|
// 汇总类型
|
|
@@ -1905,9 +1924,10 @@ const XMLStandard = (function () {
|
|
|
// 索赔费用明细
|
|
|
function ClaimVisaCostItem(eleName, node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 单位
|
|
|
{ name: 'Unit', value: bills.unit },
|
|
|
// 数量
|
|
@@ -1938,7 +1958,7 @@ const XMLStandard = (function () {
|
|
|
// 规费
|
|
|
function StatutoryFees() {
|
|
|
const attrs = [
|
|
|
- { name: 'Name', dName: '名称', required: true, value: '规费' },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: '规费' },
|
|
|
{ name: 'Code', dName: '费用代号', required: true, value: 'GF' }
|
|
|
];
|
|
|
_base.Element.call(this, 'StatutoryFees', attrs, '规费');
|
|
@@ -1946,9 +1966,10 @@ const XMLStandard = (function () {
|
|
|
// 税金
|
|
|
function Tax(eleName, node) {
|
|
|
const bills = node.data;
|
|
|
+ const row = node.serialNo() + 1;
|
|
|
const attrs = [
|
|
|
// 名称
|
|
|
- { name: 'Name', dName: '名称', required: true, value: bills.name },
|
|
|
+ { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
|
|
|
// 计算基数说明
|
|
|
{ name: 'CalBasis', value: getCalBasis(node) },
|
|
|
// 计算基数
|
|
@@ -2872,6 +2893,9 @@ const XMLStandard = (function () {
|
|
|
return await loadData(projectData);
|
|
|
}
|
|
|
|
|
|
+ // 导出名称为建设项目名称
|
|
|
+ let zipFileBaseName = '';
|
|
|
+
|
|
|
/*
|
|
|
* 重置工程编号,广东18 3.0的接口,导出时的文件会用到这个编号
|
|
|
* 因此重置工程编号后,还需要重置文件名数据
|
|
@@ -2888,6 +2912,7 @@ const XMLStandard = (function () {
|
|
|
for (const exportKind in groupedData) {
|
|
|
const extractData = groupedData[exportKind];
|
|
|
const extractProject = extractData.find(data => data.dataType === DATA_TYPE.PROJECT);
|
|
|
+ zipFileBaseName = _util.getAttr(extractProject.data, 'Name');
|
|
|
const extractTenders = extractData.filter(data => data.dataType === DATA_TYPE.TENDER)
|
|
|
// 建设项目元素下建筑安装工程费元素
|
|
|
const projectInstallations = _util.getElementFromSrc(extractProject.data, 'ProjectInstallationWorkCost');
|
|
@@ -2968,7 +2993,7 @@ const XMLStandard = (function () {
|
|
|
// TypedBuffer to ArrayBuffer to blob
|
|
|
const saveAsBlob = new Blob([zipFile.buffer]);
|
|
|
const exportKindName = _config.EXPORT_KIND_NAME[exportKind];
|
|
|
- saveAs(saveAsBlob, `广东标准交换数据(${exportKindName}).COS`);
|
|
|
+ saveAs(saveAsBlob, `${zipFileBaseName}(${exportKindName}).COS`);
|
|
|
}
|
|
|
}
|
|
|
|