feat(credit): 添加附近企业批量导入功能

- 新增 ImportBatchCreditNearbyCompanyItem 和 ImportBatchCreditNearbyCompanyResult 接口定义
- 实现 importBatchCreditNearbyCompany 函数支持多文件循环导入
- 添加 stopOnError 选项控制遇到失败时是否停止导入
- 返回详细的导入结果统计(总数、成功数、失败数及明细)
- 确保即使有失败也不 reject,便于上层展示部分成功/失败明细
This commit is contained in:
2026-03-02 15:17:21 +08:00
parent c29daa5293
commit b1147f7a3d

View File

@@ -134,3 +134,61 @@ export async function importCreditNearbyCompany(
} }
return Promise.reject(new Error(res.data.message)); return Promise.reject(new Error(res.data.message));
} }
export interface ImportBatchCreditNearbyCompanyItem {
fileName: string;
success: boolean;
message: string;
}
export interface ImportBatchCreditNearbyCompanyResult {
total: number;
success: number;
failure: number;
items: ImportBatchCreditNearbyCompanyItem[];
}
/**
* 导入附近企业(多文件)
*
* 说明:
* - 目前复用单文件导入接口,前端循环调用实现“多文件导入”
* - 不会在有失败时 reject便于上层展示部分成功/失败明细)
*/
export async function importBatchCreditNearbyCompany(
files: File[] | FileList,
companyId?: number,
options?: {
/** 遇到失败是否立即停止,默认 false继续导入后续文件 */
stopOnError?: boolean;
}
): Promise<ImportBatchCreditNearbyCompanyResult> {
const list = Array.isArray(files) ? files : Array.from(files);
const items: ImportBatchCreditNearbyCompanyItem[] = [];
const stopOnError = options?.stopOnError ?? false;
for (const file of list) {
try {
const msg = await importCreditNearbyCompany(file, companyId);
items.push({ fileName: file.name, success: true, message: msg });
} catch (e: unknown) {
items.push({
fileName: file.name,
success: false,
message: e instanceof Error ? e.message : String(e)
});
if (stopOnError) {
break;
}
}
}
const success = items.filter((d) => d.success).length;
const failure = items.length - success;
return {
total: list.length,
success,
failure,
items
};
}