67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
import * as XLSX from "xlsx";
|
|
import { SuperTBeamData } from "../core/schema/superT.schema";
|
|
|
|
export function exportToExcelContract(
|
|
beamData: SuperTBeamData,
|
|
globalConfig: any,
|
|
bridgeData: any,
|
|
) {
|
|
// 1. Tạo Workbook mới
|
|
const workbook = XLSX.utils.book_new();
|
|
|
|
// 2. Sheet 1: Thông số Dầm Super-T
|
|
const beamSheetData = [
|
|
["Tham số (Parameter)", "Giá trị (Value)", "Đơn vị (Unit)", "Mô tả"],
|
|
["ID", beamData.id, "", "Mã định danh dầm"],
|
|
["Code", beamData.code, "", "Mã hiệu dầm"],
|
|
["Length", beamData.length, "m", "Chiều dài dầm"],
|
|
["Height", beamData.height, "m", "Chiều cao dầm"],
|
|
["TopFlangeWidth", beamData.topFlangeWidth, "m", "Chiều rộng cánh trên"],
|
|
[
|
|
"TopFlangeThickness",
|
|
beamData.topFlangeThickness,
|
|
"m",
|
|
"Chiều dày cánh trên",
|
|
],
|
|
["WebThickness", beamData.webThickness, "m", "Chiều dày sườn dầm"],
|
|
[
|
|
"BottomFlangeWidth",
|
|
beamData.bottomFlangeWidth,
|
|
"m",
|
|
"Chiều rộng cánh dưới",
|
|
],
|
|
[
|
|
"BottomFlangeThickness",
|
|
beamData.bottomFlangeThickness,
|
|
"m",
|
|
"Chiều dày cánh dưới",
|
|
],
|
|
["StrandCount", beamData.strandCount, "sợi", "Số lượng tao cáp DƯL"],
|
|
[
|
|
"DiaphragmPositions",
|
|
beamData.diaphragmPositions.join("; "),
|
|
"m",
|
|
"Vị trí dầm ngang",
|
|
],
|
|
];
|
|
const beamSheet = XLSX.utils.aoa_to_sheet(beamSheetData);
|
|
XLSX.utils.book_append_sheet(workbook, beamSheet, "SuperT_Beam");
|
|
|
|
// 3. Sheet 2: Cấu hình Chung & Tổng thể Cầu (Alignment & Assembly)
|
|
const bridgeSheetData = [
|
|
["Tham số (Parameter)", "Giá trị (Value)", "Đơn vị"],
|
|
["SpanCount", globalConfig.spanCount, "nhịp"],
|
|
["BeamCountPerSpan", globalConfig.beamCountPerSpan, "dầm/nhịp"],
|
|
["BeamSpacing", globalConfig.beamSpacing, "mm"],
|
|
["DeckWidth", bridgeData.deck.width, "mm"],
|
|
["DeckThickness", bridgeData.deck.thickness, "mm"],
|
|
["PierHeight", bridgeData.pier.height, "mm"],
|
|
["PierDiameter", bridgeData.pier.diameter, "mm"],
|
|
];
|
|
const bridgeSheet = XLSX.utils.aoa_to_sheet(bridgeSheetData);
|
|
XLSX.utils.book_append_sheet(workbook, bridgeSheet, "Bridge_Assembly");
|
|
|
|
// 4. Tải file Excel về client
|
|
XLSX.writeFile(workbook, `TEDI_SuperT_Contract_${Date.now()}.xlsx`);
|
|
}
|