更新成果报表导出功能
This commit is contained in:
parent
2a2c0fe2d7
commit
1910f15564
272
src/sql.ts
272
src/sql.ts
@ -728,6 +728,7 @@ async function generateTemplate(data) {
|
|||||||
data.contracts[4].reserve = null;
|
data.contracts[4].reserve = null;
|
||||||
// data.contracts[5].addtional = null;
|
// data.contracts[5].addtional = null;
|
||||||
// data.contracts[5].reserve = null;
|
// data.contracts[5].reserve = null;
|
||||||
|
console.log(data)
|
||||||
try {
|
try {
|
||||||
// 获取模板
|
// 获取模板
|
||||||
let templateExcel = 'template20260226001test010';
|
let templateExcel = 'template20260226001test010';
|
||||||
@ -740,9 +741,6 @@ async function generateTemplate(data) {
|
|||||||
let fm_sheet = workbook.getWorksheet('封面');
|
let fm_sheet = workbook.getWorksheet('封面');
|
||||||
let ml_sheet = workbook.getWorksheet('目录');
|
let ml_sheet = workbook.getWorksheet('目录');
|
||||||
let yz01_sheet = workbook.getWorksheet('预总01表');
|
let yz01_sheet = workbook.getWorksheet('预总01表');
|
||||||
let f01_sheet = workbook.getWorksheet('辅01表');
|
|
||||||
let f02_sheet = workbook.getWorksheet('辅02表');
|
|
||||||
let f03_sheet = workbook.getWorksheet('辅03表');
|
|
||||||
yz01_sheet.headerFooter.oddHeader = yz01_sheet.headerFooter.oddHeader.replace(/×××/g, data.name);
|
yz01_sheet.headerFooter.oddHeader = yz01_sheet.headerFooter.oddHeader.replace(/×××/g, data.name);
|
||||||
|
|
||||||
// 更新封面
|
// 更新封面
|
||||||
@ -786,61 +784,26 @@ async function generateTemplate(data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新辅01表的列数
|
|
||||||
let f01Mod = (data.contracts.length) % 3;
|
|
||||||
let f01Num = (data.contracts.length - f01Mod) / 3;
|
|
||||||
switch (f01Mod) {
|
|
||||||
case 0:
|
|
||||||
f01_sheet.spliceColumns(11, 14);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
f01_sheet.spliceColumns(11, 8);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
f01_sheet.spliceColumns(19, 6);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (f01Num == 0) {
|
|
||||||
f01_sheet.spliceColumns(1, 10);
|
|
||||||
} else {
|
|
||||||
if (f01Num > 1) {
|
|
||||||
for (let i = 0; i < f01Num - 1; i++) {
|
|
||||||
insertAndCopyColumn(10 * (i + 1) + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], f01_sheet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (let i = 0; i < f01Num; i++) {
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 1, 2, i * 10 + 1);
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 2, 2, i * 10 + 2);
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 3, 2, i * 10 + 3);
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 10, 2, i * 10 + 10);
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 4, 1, i * 10 + 5);
|
|
||||||
f01_sheet.getRow(1).getCell(i * 10 + 4).value = data.contracts[i * 3].name;
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 6, 1, i * 10 + 7);
|
|
||||||
f01_sheet.getRow(1).getCell(i * 10 + 6).value = data.contracts[i * 3 + 1].name;
|
|
||||||
f01_sheet.mergeCells(1, i * 10 + 8, 1, i * 10 + 9);
|
|
||||||
f01_sheet.getRow(1).getCell(i * 10 + 8).value = data.contracts[i * 3 + 2].name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (f01Mod > 0) {
|
|
||||||
f01_sheet.mergeCells(1, f01Num * 10 + 1, 2, f01Num * 10 + 1);
|
|
||||||
f01_sheet.mergeCells(1, f01Num * 10 + 2, 2, f01Num * 10 + 2);
|
|
||||||
f01_sheet.mergeCells(1, f01Num * 10 + 3, 2, f01Num * 10 + 3);
|
|
||||||
f01_sheet.mergeCells(1, f01Num * 10 + 2 * f01Mod + 4, 2, f01Num * 10 + 2 * f01Mod + 4);
|
|
||||||
f01_sheet.mergeCells(1, f01Num * 10 + 4, 1, f01Num * 10 + 5);
|
|
||||||
f01_sheet.getRow(1).getCell(f01Num * 10 + 4).value = data.contracts[f01Num * 3].name;
|
|
||||||
if (f01Mod == 2) {
|
|
||||||
f01_sheet.mergeCells(1, f01Num * 10 + 6, 1, f01Num * 10 + 7);
|
|
||||||
f01_sheet.getRow(1).getCell(f01Num * 10 + 6).value = data.contracts[f01Num * 3 + 1].name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 按合同段更新目录及相关表
|
// 按合同段更新目录及相关表
|
||||||
let ml_slotRow = 14;
|
let ml_slotRow = 14;
|
||||||
let ml_number = 1;
|
let ml_number = 1;
|
||||||
let allServices = [];
|
let allServices = [];
|
||||||
let allAddtional = {};
|
let allAddtional = {};
|
||||||
let allReserve = {};
|
let allReserve = {};
|
||||||
|
let allMajors = {};
|
||||||
|
data.scale?.forEach(sci => {
|
||||||
|
allMajors[sci.major] = { [data.contracts.length]: sci };
|
||||||
|
});
|
||||||
data.contracts.forEach((ci, index) => {
|
data.contracts.forEach((ci, index) => {
|
||||||
|
// 记录allMajors
|
||||||
|
ci.scale?.forEach(sci => {
|
||||||
|
if (allMajors[sci.major]) {
|
||||||
|
allMajors[sci.major][index] = sci;
|
||||||
|
} else {
|
||||||
|
allMajors[sci.major] = { [index]: sci };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ci.method1 = [];
|
ci.method1 = [];
|
||||||
ci.method2 = [];
|
ci.method2 = [];
|
||||||
ci.method3 = [];
|
ci.method3 = [];
|
||||||
@ -934,6 +897,7 @@ async function generateTemplate(data) {
|
|||||||
ml_sourceRows.push(ml_sheet.getRow(13));
|
ml_sourceRows.push(ml_sheet.getRow(13));
|
||||||
sheet_5 = copyWorksheet(workbook, '预i-5表', `预${index + 1}-5表`);
|
sheet_5 = copyWorksheet(workbook, '预i-5表', `预${index + 1}-5表`);
|
||||||
sheet_5.headerFooter.oddHeader = sheet_5.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-5 表/g, `预 ${index + 1}-5 表`).replace(/第i合同/g, ci.name);
|
sheet_5.headerFooter.oddHeader = sheet_5.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-5 表/g, `预 ${index + 1}-5 表`).replace(/第i合同/g, ci.name);
|
||||||
|
sheet_5.getRow(3).getCell(3).value = '/';
|
||||||
sheet_5.getRow(3).getCell(4).value = '/';
|
sheet_5.getRow(3).getCell(4).value = '/';
|
||||||
sheet_5.getRow(3).getCell(5).value = '/';
|
sheet_5.getRow(3).getCell(5).value = '/';
|
||||||
sheet_5.getRow(3).getCell(6).value = numberFormatter((ci.method5.addtional?.reduce((a, b) => a + b.m5.fee, 0) || 0) + (ci.method5.reserve?.fee || 0), 2);
|
sheet_5.getRow(3).getCell(6).value = numberFormatter((ci.method5.addtional?.reduce((a, b) => a + b.m5.fee, 0) || 0) + (ci.method5.reserve?.fee || 0), 2);
|
||||||
@ -1105,7 +1069,7 @@ async function generateTemplate(data) {
|
|||||||
});
|
});
|
||||||
let det1 = m1PI.map(m => m.major);
|
let det1 = m1PI.map(m => m.major);
|
||||||
let det2 = m2PI.map(m => m.major);
|
let det2 = m2PI.map(m => m.major);
|
||||||
let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => a - b).map(m => {
|
let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => majorList[a].order - majorList[b].order).map(m => {
|
||||||
let d1index = det1.indexOf(m);
|
let d1index = det1.indexOf(m);
|
||||||
let d2index = det2.indexOf(m);
|
let d2index = det2.indexOf(m);
|
||||||
return {
|
return {
|
||||||
@ -1127,8 +1091,8 @@ async function generateTemplate(data) {
|
|||||||
targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2);
|
targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2);
|
||||||
targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2);
|
targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2);
|
||||||
targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2);
|
targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2);
|
||||||
targetRow.getCell(10).value = '';
|
targetRow.getCell(10).value = '/';
|
||||||
targetRow.getCell(11).value = '';
|
targetRow.getCell(11).value = '/';
|
||||||
cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => {
|
cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => {
|
||||||
targetRow.getCell(1).value = num_2_1++;
|
targetRow.getCell(1).value = num_2_1++;
|
||||||
targetRow.getCell(2).value = serviceX.code + '-' + pi + '-' + (mindex + 1);
|
targetRow.getCell(2).value = serviceX.code + '-' + pi + '-' + (mindex + 1);
|
||||||
@ -1145,8 +1109,8 @@ async function generateTemplate(data) {
|
|||||||
targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3);
|
targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3);
|
||||||
targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3);
|
targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3);
|
||||||
targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2);
|
targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2);
|
||||||
targetRow.getCell(8).value = '';
|
targetRow.getCell(8).value = '/';
|
||||||
targetRow.getCell(9).value = '';
|
targetRow.getCell(9).value = '/';
|
||||||
targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2);
|
targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2);
|
||||||
targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2);
|
targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2);
|
||||||
cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => {
|
cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => {
|
||||||
@ -1167,7 +1131,7 @@ async function generateTemplate(data) {
|
|||||||
} else {
|
} else {
|
||||||
let det1 = sobj.method1 ? sobj.method1.det.map(m => m.major) : [];
|
let det1 = sobj.method1 ? sobj.method1.det.map(m => m.major) : [];
|
||||||
let det2 = sobj.method2 ? sobj.method2.det.map(m => m.major) : [];
|
let det2 = sobj.method2 ? sobj.method2.det.map(m => m.major) : [];
|
||||||
let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => a - b).map(m => {
|
let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => majorList[a].order - majorList[b].order).map(m => {
|
||||||
let d1index = det1.indexOf(m);
|
let d1index = det1.indexOf(m);
|
||||||
let d2index = det2.indexOf(m);
|
let d2index = det2.indexOf(m);
|
||||||
return {
|
return {
|
||||||
@ -1189,8 +1153,8 @@ async function generateTemplate(data) {
|
|||||||
targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2);
|
targetRow.getCell(7).value = numberFormatter(m.mth1.proportion, 2);
|
||||||
targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2);
|
targetRow.getCell(8).value = numberFormatter(m.mth1.basicFee, 2);
|
||||||
targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2);
|
targetRow.getCell(9).value = numberFormatter(m.mth1.fee, 2);
|
||||||
targetRow.getCell(10).value = '';
|
targetRow.getCell(10).value = '/';
|
||||||
targetRow.getCell(11).value = '';
|
targetRow.getCell(11).value = '/';
|
||||||
cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => {
|
cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => {
|
||||||
targetRow.getCell(1).value = num_2_1++;
|
targetRow.getCell(1).value = num_2_1++;
|
||||||
targetRow.getCell(2).value = serviceX.code + '-' + (mindex + 1);
|
targetRow.getCell(2).value = serviceX.code + '-' + (mindex + 1);
|
||||||
@ -1207,8 +1171,8 @@ async function generateTemplate(data) {
|
|||||||
targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3);
|
targetRow.getCell(5).value = numberFormatter(m.mth2.majorCoe, 3);
|
||||||
targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3);
|
targetRow.getCell(6).value = numberFormatter(m.mth2.processCoe, 3);
|
||||||
targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2);
|
targetRow.getCell(7).value = numberFormatter(m.mth2.proportion, 2);
|
||||||
targetRow.getCell(8).value = '';
|
targetRow.getCell(8).value = '/';
|
||||||
targetRow.getCell(9).value = '';
|
targetRow.getCell(9).value = '/';
|
||||||
targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2);
|
targetRow.getCell(10).value = numberFormatter(m.mth2.basicFee, 2);
|
||||||
targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2);
|
targetRow.getCell(11).value = numberFormatter(m.mth2.fee, 2);
|
||||||
cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => {
|
cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => {
|
||||||
@ -1295,7 +1259,7 @@ async function generateTemplate(data) {
|
|||||||
cusInsertRowFunc(ci.services.length + 3 + endRows, [sheet_1.getRow(3)], sheet_1, (targetRow) => {
|
cusInsertRowFunc(ci.services.length + 3 + endRows, [sheet_1.getRow(3)], sheet_1, (targetRow) => {
|
||||||
targetRow.getCell(1).value = ci.services.length + endRows;
|
targetRow.getCell(1).value = ci.services.length + endRows;
|
||||||
targetRow.getCell(2).value = '';
|
targetRow.getCell(2).value = '';
|
||||||
targetRow.getCell(3).value = '小计';
|
targetRow.getCell(3).value = '基本、可选工作小计';
|
||||||
targetRow.getCell(4).value = numberFormatter(m1Sum, 2);
|
targetRow.getCell(4).value = numberFormatter(m1Sum, 2);
|
||||||
targetRow.getCell(5).value = numberFormatter(m2Sum, 2);
|
targetRow.getCell(5).value = numberFormatter(m2Sum, 2);
|
||||||
targetRow.getCell(6).value = numberFormatter(m3Sum, 2);
|
targetRow.getCell(6).value = numberFormatter(m3Sum, 2);
|
||||||
@ -1312,7 +1276,7 @@ async function generateTemplate(data) {
|
|||||||
targetRow.getCell(5).value = '';
|
targetRow.getCell(5).value = '';
|
||||||
targetRow.getCell(6).value = '';
|
targetRow.getCell(6).value = '';
|
||||||
targetRow.getCell(7).value = '';
|
targetRow.getCell(7).value = '';
|
||||||
targetRow.getCell(8).value = numberFormatter(ci.addtional.fee, 2);
|
targetRow.getCell(8).value = '';
|
||||||
});
|
});
|
||||||
ci.addtional.det.forEach((addobj, addindex) => {
|
ci.addtional.det.forEach((addobj, addindex) => {
|
||||||
endRows++;
|
endRows++;
|
||||||
@ -1390,6 +1354,17 @@ async function generateTemplate(data) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
endRows++;
|
||||||
|
cusInsertRowFunc(ci.services.length + 3 + endRows, [sheet_1.getRow(3)], sheet_1, (targetRow) => {
|
||||||
|
targetRow.getCell(1).value = ci.services.length + endRows;
|
||||||
|
targetRow.getCell(2).value = '';
|
||||||
|
targetRow.getCell(3).value = '附加工作小计';
|
||||||
|
targetRow.getCell(4).value = '';
|
||||||
|
targetRow.getCell(5).value = '';
|
||||||
|
targetRow.getCell(6).value = '';
|
||||||
|
targetRow.getCell(7).value = '';
|
||||||
|
targetRow.getCell(8).value = numberFormatter(ci.addtional.fee, 2);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (ci.reserve) {
|
if (ci.reserve) {
|
||||||
endRows++;
|
endRows++;
|
||||||
@ -1520,12 +1495,12 @@ async function generateTemplate(data) {
|
|||||||
if (sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment) {
|
if (sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment) {
|
||||||
sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.horizontal = 'center';
|
sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.horizontal = 'center';
|
||||||
sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.wrapText = true;
|
sheet_1.getRow(ci.services.length + 3 + i).getCell(4).style.alignment.wrapText = true;
|
||||||
if (i != 1 && i != endRows) sheet_1.getRow(ci.services.length + 3 + i).getCell(9).style.font.size = 22;
|
if (i != 1 && i != endRows && sheet_1.getRow(ci.services.length + 3 + i).getCell(2).value) sheet_1.getRow(ci.services.length + 3 + i).getCell(9).style.font.size = 22;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
allServices.sort((a, b) => a.id - b.id);
|
allServices.sort((a, b) => serviceList[a.id].order - serviceList[b.id].order);
|
||||||
allServices.forEach((s, sindex) => {
|
allServices.forEach((s, sindex) => {
|
||||||
const serviceX = serviceList[s.id];
|
const serviceX = serviceList[s.id];
|
||||||
cusInsertRowFunc(3 + sindex, [yz01_sheet.getRow(2)], yz01_sheet, (targetRow) => {
|
cusInsertRowFunc(3 + sindex, [yz01_sheet.getRow(2)], yz01_sheet, (targetRow) => {
|
||||||
@ -1750,10 +1725,171 @@ async function generateTemplate(data) {
|
|||||||
workbook.removeWorksheet('预i-4表');
|
workbook.removeWorksheet('预i-4表');
|
||||||
workbook.removeWorksheet('预i-4-1表');
|
workbook.removeWorksheet('预i-4-1表');
|
||||||
workbook.removeWorksheet('预i-5表');
|
workbook.removeWorksheet('预i-5表');
|
||||||
f01_sheet.orderNo = ml_number + 2 + 11;
|
|
||||||
f02_sheet.orderNo = ml_number + 3 + 11;
|
|
||||||
f03_sheet.orderNo = ml_number + 4 + 11;
|
|
||||||
|
|
||||||
|
// 编辑辅01/02/03表内容
|
||||||
|
// 辅01表
|
||||||
|
if (Object.keys(allMajors).length) {
|
||||||
|
let f01_sheet = workbook.getWorksheet('辅01表');
|
||||||
|
let f01Mod = (data.contracts.length + 1) % 3;
|
||||||
|
let f01Num = (data.contracts.length + 1 - f01Mod) / 3;
|
||||||
|
switch (f01Mod) {
|
||||||
|
case 0:
|
||||||
|
f01_sheet.spliceColumns(11, 14);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
f01_sheet.spliceColumns(11, 8);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
f01_sheet.spliceColumns(19, 6);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (f01Num == 0) {
|
||||||
|
f01_sheet.spliceColumns(1, 10);
|
||||||
|
} else {
|
||||||
|
if (f01Num > 1) {
|
||||||
|
for (let i = 0; i < f01Num - 1; i++) {
|
||||||
|
insertAndCopyColumn(10 * (i + 1) + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], f01_sheet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (let i = 0; i < f01Num; i++) {
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 1, 2, i * 10 + 1);
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 2, 2, i * 10 + 2);
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 3, 2, i * 10 + 3);
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 10, 2, i * 10 + 10);
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 4, 1, i * 10 + 5);
|
||||||
|
f01_sheet.getRow(1).getCell(i * 10 + 4).value = data.contracts[i * 3].name;
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 6, 1, i * 10 + 7);
|
||||||
|
f01_sheet.getRow(1).getCell(i * 10 + 6).value = data.contracts[i * 3 + 1].name;
|
||||||
|
f01_sheet.mergeCells(1, i * 10 + 8, 1, i * 10 + 9);
|
||||||
|
if (f01Mod == 0 && i == f01Num - 1) {
|
||||||
|
f01_sheet.getRow(1).getCell(i * 10 + 8).value = '项目小计';
|
||||||
|
} else {
|
||||||
|
f01_sheet.getRow(1).getCell(i * 10 + 8).value = data.contracts[i * 3 + 2].name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (f01Mod > 0) {
|
||||||
|
f01_sheet.mergeCells(1, f01Num * 10 + 1, 2, f01Num * 10 + 1);
|
||||||
|
f01_sheet.mergeCells(1, f01Num * 10 + 2, 2, f01Num * 10 + 2);
|
||||||
|
f01_sheet.mergeCells(1, f01Num * 10 + 3, 2, f01Num * 10 + 3);
|
||||||
|
f01_sheet.mergeCells(1, f01Num * 10 + 2 * f01Mod + 4, 2, f01Num * 10 + 2 * f01Mod + 4);
|
||||||
|
f01_sheet.mergeCells(1, f01Num * 10 + 4, 1, f01Num * 10 + 5);
|
||||||
|
f01_sheet.getRow(1).getCell(f01Num * 10 + 4).value = f01Mod == 1 ? '项目小计' : data.contracts[f01Num * 3].name;
|
||||||
|
if (f01Mod == 2) {
|
||||||
|
f01_sheet.mergeCells(1, f01Num * 10 + 6, 1, f01Num * 10 + 7);
|
||||||
|
f01_sheet.getRow(1).getCell(f01Num * 10 + 6).value = '项目小计';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let num_f01 = 1;
|
||||||
|
Object.keys(allMajors).sort((a, b) => majorList[a].order - majorList[b].order).forEach(majorid => {
|
||||||
|
let scaleX = allMajors[majorid];
|
||||||
|
let code;
|
||||||
|
let name;
|
||||||
|
let hasCost;
|
||||||
|
let hasArea;
|
||||||
|
if (majorid == -1) {
|
||||||
|
code = '';
|
||||||
|
name = '总投资';
|
||||||
|
hasCost = true;
|
||||||
|
hasArea = false;
|
||||||
|
} else {
|
||||||
|
code = majorList[majorid].code;
|
||||||
|
name = majorList[majorid].name;
|
||||||
|
hasCost = majorList[majorid].hasCost;
|
||||||
|
hasArea = majorList[majorid].hasArea;
|
||||||
|
}
|
||||||
|
cusInsertRowFunc(3 + num_f01, [f01_sheet.getRow(3)], f01_sheet, (targetRow) => {
|
||||||
|
let rowNum = num_f01++;
|
||||||
|
for (let i = 0; i < f01Num; i++) {
|
||||||
|
targetRow.getCell(i * 10 + 1).value = rowNum;
|
||||||
|
targetRow.getCell(i * 10 + 2).value = code;
|
||||||
|
targetRow.getCell(i * 10 + 3).value = name;
|
||||||
|
if (hasCost) {
|
||||||
|
targetRow.getCell(i * 10 + 4).value = numberFormatter(scaleX[i * 3]?.cost, 2);
|
||||||
|
targetRow.getCell(i * 10 + 6).value = numberFormatter(scaleX[i * 3 + 1]?.cost, 2);
|
||||||
|
targetRow.getCell(i * 10 + 8).value = numberFormatter(scaleX[i * 3 + 2]?.cost, 2);
|
||||||
|
} else {
|
||||||
|
targetRow.getCell(i * 10 + 4).value = '/';
|
||||||
|
targetRow.getCell(i * 10 + 6).value = '/';
|
||||||
|
targetRow.getCell(i * 10 + 8).value = '/';
|
||||||
|
}
|
||||||
|
if (hasArea) {
|
||||||
|
targetRow.getCell(i * 10 + 5).value = numberFormatter(scaleX[i * 3]?.area, 3);
|
||||||
|
targetRow.getCell(i * 10 + 7).value = numberFormatter(scaleX[i * 3 + 1]?.area, 3);
|
||||||
|
targetRow.getCell(i * 10 + 9).value = numberFormatter(scaleX[i * 3 + 2]?.area, 3);
|
||||||
|
} else {
|
||||||
|
targetRow.getCell(i * 10 + 5).value = '/';
|
||||||
|
targetRow.getCell(i * 10 + 7).value = '/';
|
||||||
|
targetRow.getCell(i * 10 + 9).value = '/';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (f01Mod > 0) {
|
||||||
|
targetRow.getCell(f01Num * 10 + 1).value = rowNum;
|
||||||
|
targetRow.getCell(f01Num * 10 + 2).value = code;
|
||||||
|
targetRow.getCell(f01Num * 10 + 3).value = name;
|
||||||
|
for (let i = 0; i < f01Mod; i++) {
|
||||||
|
if (hasCost) {
|
||||||
|
targetRow.getCell(f01Num * 10 + 4 + i * 2).value = numberFormatter(scaleX[f01Num * 3 + i]?.cost, 2);
|
||||||
|
} else {
|
||||||
|
targetRow.getCell(f01Num * 10 + 4 + i * 2).value = '/';
|
||||||
|
}
|
||||||
|
if (hasArea) {
|
||||||
|
targetRow.getCell(f01Num * 10 + 5 + i * 2).value = numberFormatter(scaleX[f01Num * 3 + i]?.area, 3);
|
||||||
|
} else {
|
||||||
|
targetRow.getCell(f01Num * 10 + 5 + i * 2).value = '/';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
f01_sheet.spliceRows(3, 1);
|
||||||
|
// f01_sheet.getRow(2).height = 27;
|
||||||
|
f01_sheet.orderNo = ml_number + 2 + 11;
|
||||||
|
} else {
|
||||||
|
workbook.removeWorksheet('辅01表');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 辅02/03表
|
||||||
|
if (data.serviceCoes?.length) {
|
||||||
|
let f02_sheet = workbook.getWorksheet('辅02表');
|
||||||
|
let num_f02 = 1;
|
||||||
|
data.serviceCoes.sort((a, b) => serviceList[a.serviceid].order - serviceList[b.serviceid].order).forEach(scoei => {
|
||||||
|
let serviceCoeX = serviceList[scoei.serviceid];
|
||||||
|
cusInsertRowFunc(2 + num_f02, [f02_sheet.getRow(2)], f02_sheet, (targetRow) => {
|
||||||
|
targetRow.getCell(1).value = num_f02++;
|
||||||
|
targetRow.getCell(2).value = serviceCoeX.code;
|
||||||
|
targetRow.getCell(3).value = serviceCoeX.name;
|
||||||
|
targetRow.getCell(4).value = numberFormatter(serviceCoeX.defCoe, 3);
|
||||||
|
targetRow.getCell(5).value = numberFormatter(scoei.coe, 3);
|
||||||
|
targetRow.getCell(6).value = scoei.remark;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
f02_sheet.spliceRows(2, 1);
|
||||||
|
f02_sheet.orderNo = ml_number + 3 + 11;
|
||||||
|
} else {
|
||||||
|
workbook.removeWorksheet('辅02表');
|
||||||
|
}
|
||||||
|
if (data.majorCoes?.length) {
|
||||||
|
let f03_sheet = workbook.getWorksheet('辅03表');
|
||||||
|
let num_f03 = 1;
|
||||||
|
data.majorCoes.sort((a, b) => majorList[a.majorid].order - majorList[b.majorid].order).forEach(mcoei => {
|
||||||
|
let majorCoeX = majorList[mcoei.majorid];
|
||||||
|
cusInsertRowFunc(2 + num_f03, [f03_sheet.getRow(2)], f03_sheet, (targetRow) => {
|
||||||
|
targetRow.getCell(1).value = num_f03++;
|
||||||
|
targetRow.getCell(2).value = majorCoeX.code;
|
||||||
|
targetRow.getCell(3).value = majorCoeX.name;
|
||||||
|
targetRow.getCell(4).value = numberFormatter(majorCoeX.defCoe, 3);
|
||||||
|
targetRow.getCell(5).value = numberFormatter(mcoei.coe, 3);
|
||||||
|
targetRow.getCell(6).value = mcoei.remark;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
f03_sheet.spliceRows(2, 1);
|
||||||
|
f03_sheet.orderNo = ml_number + 4 + 11;
|
||||||
|
} else {
|
||||||
|
workbook.removeWorksheet('辅03表');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 统一设置页眉页脚字体
|
||||||
workbook._worksheets.forEach(sheet => {
|
workbook._worksheets.forEach(sheet => {
|
||||||
if (sheet) {
|
if (sheet) {
|
||||||
if (sheet.headerFooter.oddHeader) sheet.headerFooter.oddHeader = sheet.headerFooter.oddHeader.replace(/&([CLR])&/g, '&$1&"宋体"&');
|
if (sheet.headerFooter.oddHeader) sheet.headerFooter.oddHeader = sheet.headerFooter.oddHeader.replace(/&([CLR])&/g, '&$1&"宋体"&');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user