fix bug
This commit is contained in:
@@ -250,81 +250,6 @@ import NProgress from 'nprogress';
|
||||
import 'nprogress/nprogress.css';
|
||||
|
||||
const DEFAULT_COUNTRY_CODE = '+86';
|
||||
const EXCLUDED_EXCEL_HEADERS = ['数据来源', '启停状态'];
|
||||
const REQUIRED_EXPORT_HEADERS = [
|
||||
'港口码头名称',
|
||||
'港口/码头名称',
|
||||
'类型',
|
||||
'国家',
|
||||
'城市',
|
||||
'经度',
|
||||
'纬度',
|
||||
];
|
||||
|
||||
const getExcelCellText = value => {
|
||||
if (value === undefined || value === null) return '';
|
||||
if (typeof value === 'object') {
|
||||
if (Array.isArray(value.richText)) {
|
||||
return value.richText.map(item => item.text || '').join('');
|
||||
}
|
||||
if (value.text) return value.text;
|
||||
if (value.result) return value.result;
|
||||
}
|
||||
return String(value);
|
||||
};
|
||||
|
||||
const removeWorkbookColumnsByHeaders = workbook => {
|
||||
workbook.eachSheet(worksheet => {
|
||||
const maxHeaderRow = Math.min(worksheet.rowCount || 0, 10);
|
||||
for (let rowIndex = 1; rowIndex <= maxHeaderRow; rowIndex += 1) {
|
||||
const row = worksheet.getRow(rowIndex);
|
||||
const indexes = [];
|
||||
row.eachCell((cell, colNumber) => {
|
||||
const text = getExcelCellText(cell.value).trim();
|
||||
if (EXCLUDED_EXCEL_HEADERS.includes(text)) {
|
||||
indexes.push(colNumber);
|
||||
}
|
||||
});
|
||||
if (indexes.length) {
|
||||
indexes.sort((a, b) => b - a).forEach(colNumber => worksheet.spliceColumns(colNumber, 1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const addWorkbookRequiredHeaderMarks = workbook => {
|
||||
workbook.eachSheet(worksheet => {
|
||||
const maxHeaderRow = Math.min(worksheet.rowCount || 0, 10);
|
||||
for (let rowIndex = 1; rowIndex <= maxHeaderRow; rowIndex += 1) {
|
||||
const row = worksheet.getRow(rowIndex);
|
||||
let hasRequiredHeader = false;
|
||||
row.eachCell(cell => {
|
||||
const text = getExcelCellText(cell.value).trim();
|
||||
const header = text.replace(/\*+$/g, '').trim();
|
||||
if (REQUIRED_EXPORT_HEADERS.includes(header)) {
|
||||
cell.value = `${header}*`;
|
||||
hasRequiredHeader = true;
|
||||
}
|
||||
});
|
||||
if (hasRequiredHeader) break;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const removeExcelColumnsByHeaders = async (blob, options = {}) => {
|
||||
const { markRequiredHeaders = false } = options;
|
||||
const ExcelJS = await import('exceljs');
|
||||
const workbook = new ExcelJS.Workbook();
|
||||
await workbook.xlsx.load(await blob.arrayBuffer());
|
||||
removeWorkbookColumnsByHeaders(workbook);
|
||||
if (markRequiredHeaders) {
|
||||
addWorkbookRequiredHeaderMarks(workbook);
|
||||
}
|
||||
const buffer = await workbook.xlsx.writeBuffer();
|
||||
return new Blob([buffer], { type: 'application/vnd.ms-excel' });
|
||||
};
|
||||
|
||||
const newLocal = '请选择类型';
|
||||
export default {
|
||||
data() {
|
||||
@@ -1323,9 +1248,6 @@ export default {
|
||||
'港口码头主数据',
|
||||
() => {
|
||||
this.loadPortOptions();
|
||||
},
|
||||
{
|
||||
failDetailDecorator: removeWorkbookColumnsByHeaders,
|
||||
}
|
||||
);
|
||||
},
|
||||
@@ -1339,11 +1261,8 @@ export default {
|
||||
exportBlob('/blade-system/port-terminal/export-port-terminal', this.buildExportParams(), {
|
||||
feedback: true,
|
||||
})
|
||||
.then(async res => {
|
||||
const blob = await removeExcelColumnsByHeaders(res.data, {
|
||||
markRequiredHeaders: true,
|
||||
});
|
||||
downloadXls(blob, `港口码头主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`);
|
||||
.then(res => {
|
||||
downloadXls(res.data, `港口码头主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`);
|
||||
})
|
||||
.finally(() => {
|
||||
NProgress.done();
|
||||
@@ -1362,9 +1281,8 @@ export default {
|
||||
`/blade-system/port-terminal/export-template?${this.website.tokenHeader}=${getToken()}`,
|
||||
undefined,
|
||||
{ feedback: true }
|
||||
).then(async res => {
|
||||
const blob = await removeExcelColumnsByHeaders(res.data);
|
||||
downloadXls(blob, '港口码头主数据模板.xlsx');
|
||||
).then(res => {
|
||||
downloadXls(res.data, '港口码头主数据模板.xlsx');
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user