feat(credit): 企业详情页面增加子表数据导入功能
- 为18个信用相关API的导入方法添加companyId参数支持 - 在企业详情页面的各个子表tab中添加导入和刷新按钮 - 创建credit-company-related-import组件实现统一的导入弹窗 - 新增taxpayerCode字段到用户信息模型中 - 移除企业详情页面中冗余的描述项注释代码 - 实现基于企业ID或纳税人识别号的数据加载缓存机制 - 添加导入模板下载功能和文件类型验证
This commit is contained in:
@@ -341,6 +341,7 @@
|
||||
const exportData = () => {
|
||||
exportCreditData<CreditCompany>({
|
||||
filename: '企业',
|
||||
includeCompanyName: false,
|
||||
columns: [
|
||||
{ title: '原文件导入名称', dataIndex: 'name' },
|
||||
{ title: '系统匹配企业名称', dataIndex: 'matchName' },
|
||||
|
||||
@@ -13,6 +13,11 @@ interface ExportOptions<T> {
|
||||
fetchData: () => Promise<T[]>;
|
||||
beforeMessage?: string;
|
||||
successMessage?: string;
|
||||
/**
|
||||
* 是否自动插入“企业名称(companyName)”列(默认:true)
|
||||
* 用于 credit 模块子表导出统一补齐企业名称
|
||||
*/
|
||||
includeCompanyName?: boolean;
|
||||
}
|
||||
|
||||
export async function exportCreditData<T>({
|
||||
@@ -20,14 +25,34 @@ export async function exportCreditData<T>({
|
||||
columns,
|
||||
fetchData,
|
||||
beforeMessage,
|
||||
successMessage
|
||||
successMessage,
|
||||
includeCompanyName = true
|
||||
}: ExportOptions<T>) {
|
||||
const hide = message.loading(beforeMessage || '正在导出数据...', 0);
|
||||
try {
|
||||
const list = await fetchData();
|
||||
const headerRow = columns.map((col) => col.title);
|
||||
const normalizedColumns = [...columns];
|
||||
if (
|
||||
includeCompanyName &&
|
||||
!normalizedColumns.some((c) => c.dataIndex === 'companyName')
|
||||
) {
|
||||
const companyNameCol: ExportColumn<T> = {
|
||||
title: '企业名称',
|
||||
dataIndex: 'companyName'
|
||||
};
|
||||
if (
|
||||
normalizedColumns.length > 0 &&
|
||||
normalizedColumns[0].dataIndex === 'id'
|
||||
) {
|
||||
normalizedColumns.splice(1, 0, companyNameCol);
|
||||
} else {
|
||||
normalizedColumns.unshift(companyNameCol);
|
||||
}
|
||||
}
|
||||
|
||||
const headerRow = normalizedColumns.map((col) => col.title);
|
||||
const dataRows = (list || []).map((item) =>
|
||||
columns.map((col) => {
|
||||
normalizedColumns.map((col) => {
|
||||
if (col.formatter) {
|
||||
return col.formatter(item) ?? '';
|
||||
}
|
||||
@@ -38,7 +63,7 @@ export async function exportCreditData<T>({
|
||||
|
||||
const sheetName = filename.replace(/\s+/g, '_');
|
||||
const sheet = utils.aoa_to_sheet([headerRow, ...dataRows]);
|
||||
sheet['!cols'] = columns.map(() => ({ wch: 20 }));
|
||||
sheet['!cols'] = normalizedColumns.map(() => ({ wch: 20 }));
|
||||
|
||||
const workbook = {
|
||||
SheetNames: [sheetName],
|
||||
|
||||
Reference in New Issue
Block a user