diff --git a/src/views/credit/components/CreditImportModal.vue b/src/views/credit/components/CreditImportModal.vue
new file mode 100644
index 0000000..3ee44c4
--- /dev/null
+++ b/src/views/credit/components/CreditImportModal.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
只能上传xls、xlsx文件,
+
下载导入模板
+
+
+
+
+
diff --git a/src/views/credit/components/CreditSearchToolbar.vue b/src/views/credit/components/CreditSearchToolbar.vue
new file mode 100644
index 0000000..24fe62c
--- /dev/null
+++ b/src/views/credit/components/CreditSearchToolbar.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+ 添加
+
+
+
+
+
+ 导入
+
+
+
+
+
+ 导出
+
+
+
+
+
+ 批量删除
+
+
+
+
+
+
diff --git a/src/views/credit/creditBreachOfTrust/components/credit-breach-of-trust-import.vue b/src/views/credit/creditBreachOfTrust/components/credit-breach-of-trust-import.vue
new file mode 100644
index 0000000..3373769
--- /dev/null
+++ b/src/views/credit/creditBreachOfTrust/components/credit-breach-of-trust-import.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
只能上传xls、xlsx文件,
+
+ 下载导入模板
+
+
+
+
+
+
+
diff --git a/src/views/credit/creditCaseFiling/components/credit-case-filing-import.vue b/src/views/credit/creditCaseFiling/components/credit-case-filing-import.vue
new file mode 100644
index 0000000..7d269e4
--- /dev/null
+++ b/src/views/credit/creditCaseFiling/components/credit-case-filing-import.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
只能上传xls、xlsx文件,
+
+ 下载导入模板
+
+
+
+
+
+
+
diff --git a/src/views/credit/creditCompetitor/components/credit-competitor-import.vue b/src/views/credit/creditCompetitor/components/credit-competitor-import.vue
new file mode 100644
index 0000000..96dbb13
--- /dev/null
+++ b/src/views/credit/creditCompetitor/components/credit-competitor-import.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
只能上传xls、xlsx文件,
+
下载导入模板
+
+
+
+
+
+
diff --git a/src/views/credit/creditCourtAnnouncement/components/credit-court-announcement-import.vue b/src/views/credit/creditCourtAnnouncement/components/credit-court-announcement-import.vue
new file mode 100644
index 0000000..f2fee14
--- /dev/null
+++ b/src/views/credit/creditCourtAnnouncement/components/credit-court-announcement-import.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
只能上传xls、xlsx文件,
+
+ 下载导入模板
+
+
+
+
+
+
+
diff --git a/src/views/credit/creditCourtSession/components/credit-court-session-import.vue b/src/views/credit/creditCourtSession/components/credit-court-session-import.vue
new file mode 100644
index 0000000..34a3a7c
--- /dev/null
+++ b/src/views/credit/creditCourtSession/components/credit-court-session-import.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
只能上传xls、xlsx文件,
+
+ 下载导入模板
+
+
+
+
+
+
+
diff --git a/src/views/credit/utils/export.ts b/src/views/credit/utils/export.ts
new file mode 100644
index 0000000..8460592
--- /dev/null
+++ b/src/views/credit/utils/export.ts
@@ -0,0 +1,59 @@
+import { message } from 'ant-design-vue';
+import { utils, writeFile } from 'xlsx';
+
+export interface ExportColumn {
+ title: string;
+ dataIndex: keyof T | string;
+ formatter?: (record: T) => unknown;
+}
+
+interface ExportOptions {
+ filename: string;
+ columns: ExportColumn[];
+ fetchData: () => Promise;
+ beforeMessage?: string;
+ successMessage?: string;
+}
+
+export async function exportCreditData({
+ filename,
+ columns,
+ fetchData,
+ beforeMessage,
+ successMessage
+}: ExportOptions) {
+ const hide = message.loading(beforeMessage || '正在导出数据...', 0);
+ try {
+ const list = await fetchData();
+ const headerRow = columns.map((col) => col.title);
+ const dataRows = (list || []).map((item) =>
+ columns.map((col) => {
+ if (col.formatter) {
+ return col.formatter(item) ?? '';
+ }
+ const key = col.dataIndex as string;
+ return (item as any)?.[key] ?? '';
+ })
+ );
+
+ const sheetName = filename.replace(/\s+/g, '_');
+ const sheet = utils.aoa_to_sheet([headerRow, ...dataRows]);
+ sheet['!cols'] = columns.map(() => ({ wch: 20 }));
+
+ const workbook = {
+ SheetNames: [sheetName],
+ Sheets: {
+ [sheetName]: sheet
+ }
+ };
+
+ writeFile(workbook, `${sheetName}.xlsx`);
+ hide();
+ message.success(
+ successMessage || `成功导出 ${list?.length ?? 0} 条记录`
+ );
+ } catch (e: any) {
+ hide();
+ message.error(e?.message || '导出失败,请重试');
+ }
+}