1、完善客商模块

2、完善基础数据模块
3、完善规范
This commit is contained in:
2026-08-01 01:23:13 +08:00
parent 6a4c5d02f4
commit 81c98f6ad8
77 changed files with 4883 additions and 711 deletions
+52 -6
View File
@@ -63,7 +63,6 @@
<el-button
type="primary"
text
icon="el-icon-edit"
v-if="hasPermission('airport_master_edit')"
@click="$refs.crud.rowEdit(row, index)"
>
@@ -72,7 +71,6 @@
<el-button
type="primary"
text
:icon="row.status === 1 ? 'el-icon-close' : 'el-icon-check'"
v-if="hasPermission('airport_master_status')"
@click="handleStatus(row)"
>
@@ -142,6 +140,47 @@ import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
const DEFAULT_COUNTRY_CODE = '+86';
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 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 addExcelRequiredHeaderMarks = async blob => {
const ExcelJS = await import('exceljs');
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.load(await blob.arrayBuffer());
addWorkbookRequiredHeaderMarks(workbook);
const buffer = await workbook.xlsx.writeBuffer();
return new Blob([buffer], { type: 'application/vnd.ms-excel' });
};
export default {
data() {
@@ -830,10 +869,15 @@ export default {
type: 'warning',
}).then(() => {
NProgress.start();
exportBlob('/blade-system/airport-master/export-airport-master', this.buildExportParams())
.then(res => {
exportBlob(
'/blade-system/airport-master/export-airport-master',
this.buildExportParams(),
{ feedback: true }
)
.then(async res => {
const blob = await addExcelRequiredHeaderMarks(res.data);
downloadXls(
res.data,
blob,
`空港机场主数据${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`
);
})
@@ -851,7 +895,9 @@ export default {
},
handleTemplate() {
exportBlob(
`/blade-system/airport-master/export-template?${this.website.tokenHeader}=${getToken()}`
`/blade-system/airport-master/export-template?${this.website.tokenHeader}=${getToken()}`,
undefined,
{ feedback: true }
).then(res => {
downloadXls(res.data, '空港机场主数据模板.xlsx');
});