feat(credit): 新增附近企业批量导入功能并优化数据表结构

- 新增 importCreditNearbyCompanyMulti 函数支持多文件同时导入
- 提取 buildImportFormData 工具函数统一处理文件上传逻辑
- 在信用公司页面新增批量导入按钮和上传图标组件
- 将限制高消费表格中的发生时间字段从 occurrenceTime 改为 releaseDate
- 调整股权冻结页面的数据状态列顺序和显示逻辑
- 移除附近企业页面中重复和不必要的表格列配置
- 修改附近企业页面通信地址邮箱列为正确的通信地址邮编
- 更新开发环境配置文件启用本地 API 地址并
This commit is contained in:
2026-03-03 16:32:16 +08:00
parent b1147f7a3d
commit fe20f0f0b3
6 changed files with 95 additions and 84 deletions

View File

@@ -115,11 +115,7 @@ export async function importCreditNearbyCompany(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const formData = buildImportFormData(file, companyId);
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-nearby-company/import',
formData,
@@ -135,6 +131,49 @@ export async function importCreditNearbyCompany(
return Promise.reject(new Error(res.data.message));
}
/**
* 导入附近企业(多文件,同一次请求)
*
* 约定:后端需支持 multipart 同名字段 `file` 多次出现(常见于 MultipartFile[] file
*/
export async function importCreditNearbyCompanyMulti(
files: File[] | FileList,
companyId?: number
) {
const formData = buildImportFormData(files, companyId);
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-nearby-company/import',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
function buildImportFormData(
fileOrFiles: File | File[] | FileList,
companyId?: number
) {
const formData = new FormData();
if (Array.isArray(fileOrFiles)) {
fileOrFiles.forEach((f) => formData.append('file', f));
} else if (fileOrFiles instanceof FileList) {
Array.from(fileOrFiles).forEach((f) => formData.append('file', f));
} else {
formData.append('file', fileOrFiles);
}
if (companyId != null) {
formData.append('companyId', String(companyId));
}
return formData;
}
export interface ImportBatchCreditNearbyCompanyItem {
fileName: string;
success: boolean;