feat(credit): 添加历史数据导入功能和操作人字段

- 在多个信用模块API中新增历史数据导入功能,包括行政许可、破产重整、失信被执行人、开庭公告、终本案件等
- 为信用相关页面表格增加操作人(realName)字段显示
- 新增历史数据导入弹窗组件,支持Excel文件上传和模板下载
- 实现导入历史数据的API接口函数,支持文件和公司ID参数
- 优化信用模块页面UI布局,添加历史导入按钮和相关组件引用
This commit is contained in:
2026-01-20 02:17:36 +08:00
parent 7890ec07d8
commit 183967ea4a
47 changed files with 1372 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
VITE_APP_NAME=后台管理(开发环境)
VITE_API_URL=http://127.0.0.1:9200/api
#VITE_API_URL=http://127.0.0.1:9200/api
#VITE_SERVER_API_URL=http://127.0.0.1:8000/api

View File

@@ -142,3 +142,30 @@ export async function importCreditAdministrativeLicense(
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史行政许可
*/
export async function importCreditAdministrativeLicenseHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-administrative-license/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -129,3 +129,30 @@ export async function importCreditBankruptcy(file: File, companyId?: number) {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史破产重整
*/
export async function importCreditBankruptcyHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-bankruptcy/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -136,3 +136,30 @@ export async function importCreditBreachOfTrust(
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史失信被执行人
*/
export async function importCreditBreachOfTrustHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-breach-of-trust/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -143,3 +143,30 @@ export async function importCreditCourtAnnouncement(
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史开庭公告
*/
export async function importCreditCourtAnnouncementHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-court-announcement/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -129,3 +129,30 @@ export async function importCreditCourtSession(file: File, companyId?: number) {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史开庭公告司法大数据
*/
export async function importCreditCourtSessionHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-court-session/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -129,3 +129,30 @@ export async function importCreditFinalVersion(file: File, companyId?: number) {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史终本案件
*/
export async function importCreditFinalVersionHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-final-version/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -127,3 +127,27 @@ export async function importCreditGqdj(file: File, companyId?: number) {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史股权冻结
*/
export async function importCreditGqdjHistory(file: File, companyId?: number) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-gqdj/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -34,6 +34,8 @@ export interface CreditJudgmentDebtor {
deleted?: number;
// 用户ID
userId?: number;
// 真实姓名
realName?: string;
// 租户id
tenantId?: number;
// 创建时间

View File

@@ -141,3 +141,30 @@ export async function importCreditJudicialDocument(
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史裁判文书
*/
export async function importCreditJudicialDocumentHistory(
file: File,
companyId?: number
) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-judicial-document/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -127,3 +127,27 @@ export async function importCreditXgxf(file: File, companyId?: number) {
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入历史限制高消费
*/
export async function importCreditXgxfHistory(file: File, companyId?: number) {
const formData = new FormData();
formData.append('file', file);
if (companyId != null) {
formData.append('companyId', String(companyId));
}
const res = await request.post<ApiResult<unknown>>(
'/credit/credit-xgxf/import/history',
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -0,0 +1,96 @@
<!-- 历史行政许可导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史行政许可批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史行政许可导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditAdministrativeLicenseHistory } from '@/api/credit/creditAdministrativeLicense';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-administrative-license/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditAdministrativeLicenseHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -74,6 +74,11 @@
v-model:visible="showImport"
@done="reload"
/>
<!-- 历史导入弹窗 -->
<CreditAdministrativeLicenseHistoryImport
v-model:visible="showImport2"
@done="reload"
/>
</a-page-header>
</template>
@@ -92,6 +97,7 @@
import { getPageTitle } from '@/utils/common';
import CreditAdministrativeLicenseEdit from './components/creditAdministrativeLicenseEdit.vue';
import CreditAdministrativeLicenseImport from './components/credit-administrative-license-import.vue';
import CreditAdministrativeLicenseHistoryImport from './components/credit-administrative-license-history-import.vue';
import {
pageCreditAdministrativeLicense,
listCreditAdministrativeLicense,
@@ -200,6 +206,13 @@
dataIndex: 'dataSourceUnit',
key: 'dataSourceUnit'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -0,0 +1,96 @@
<!-- 历史破产重整导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史破产重整批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史破产重整导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditBankruptcyHistory } from '@/api/credit/creditBankruptcy';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-bankruptcy/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditBankruptcyHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -71,6 +71,8 @@
/>
<!-- 导入弹窗 -->
<CreditBankruptcyImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditBankruptcyHistoryImport v-model:visible="showImport2" @done="reload" />
</a-page-header>
</template>
@@ -89,6 +91,7 @@
import { getPageTitle } from '@/utils/common';
import CreditBankruptcyEdit from './components/creditBankruptcyEdit.vue';
import CreditBankruptcyImport from './components/credit-bankruptcy-import.vue';
import CreditBankruptcyHistoryImport from './components/credit-bankruptcy-history-import.vue';
import {
pageCreditBankruptcy,
listCreditBankruptcy,
@@ -176,6 +179,13 @@
dataIndex: 'publicDate',
key: 'publicDate'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -169,6 +169,13 @@
key: 'statusText',
ellipsis: true
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -0,0 +1,96 @@
<!-- 历史失信被执行人导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史失信被执行人批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史失信被执行人导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditBreachOfTrustHistory } from '@/api/credit/creditBreachOfTrust';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-breach-of-trust/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditBreachOfTrustHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -70,6 +70,8 @@
/>
<!-- 导入弹窗 -->
<CreditBreachOfTrustImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditBreachOfTrustHistoryImport v-model:visible="showImport2" @done="reload" />
</a-page-header>
</template>
@@ -88,6 +90,7 @@
import { getPageTitle } from '@/utils/common';
import CreditBreachOfTrustEdit from './components/creditBreachOfTrustEdit.vue';
import CreditBreachOfTrustImport from './components/credit-breach-of-trust-import.vue';
import CreditBreachOfTrustHistoryImport from './components/credit-breach-of-trust-history-import.vue';
import {
pageCreditBreachOfTrust,
listCreditBreachOfTrust,
@@ -190,6 +193,13 @@
key: 'releaseDate',
ellipsis: true
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -173,6 +173,13 @@
key: 'occurrenceTime',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -441,6 +441,13 @@
ellipsis: true,
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -178,6 +178,13 @@
dataIndex: 'province',
key: 'province'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -0,0 +1,96 @@
<!-- 历史开庭公告导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史开庭公告批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史开庭公告导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditCourtAnnouncementHistory } from '@/api/credit/creditCourtAnnouncement';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-court-announcement/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditCourtAnnouncementHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -73,6 +73,11 @@
v-model:visible="showImport"
@done="reload"
/>
<!-- 历史导入弹窗 -->
<CreditCourtAnnouncementHistoryImport
v-model:visible="showImport2"
@done="reload"
/>
</a-page-header>
</template>
@@ -91,6 +96,7 @@
import { getPageTitle } from '@/utils/common';
import CreditCourtAnnouncementEdit from './components/creditCourtAnnouncementEdit.vue';
import CreditCourtAnnouncementImport from './components/credit-court-announcement-import.vue';
import CreditCourtAnnouncementHistoryImport from './components/credit-court-announcement-history-import.vue';
import {
pageCreditCourtAnnouncement,
listCreditCourtAnnouncement,
@@ -113,6 +119,8 @@
const showEdit = ref(false);
// 是否显示导入弹窗
const showImport = ref(false);
// 是否显示历史导入弹窗
const showImport2 = ref(false);
// 是否显示批量移动弹窗
const showMove = ref(false);
// 加载状态
@@ -174,6 +182,13 @@
key: 'courtName',
ellipsis: true
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',
@@ -219,6 +234,11 @@
showImport.value = true;
};
/* 打开历史导入弹窗 */
const openImport2 = () => {
showImport2.value = true;
};
/* 导出 */
const exportData = () => {
exportCreditData<CreditCourtAnnouncement>({

View File

@@ -0,0 +1,96 @@
<!-- 历史开庭公告导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史开庭公告批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史开庭公告导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditCourtSessionHistory } from '@/api/credit/creditCourtSession';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-court-session/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditCourtSessionHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -12,15 +12,23 @@
class="sys-org-table"
>
<template #toolbar>
<search
@search="reload"
:selection="selection"
@add="openEdit"
@remove="removeBatch"
@batchMove="openMove"
@importData="openImport"
@exportData="exportData"
/>
<a-space class="flex">
<search
@search="reload"
:selection="selection"
@add="openEdit"
@remove="removeBatch"
@batchMove="openMove"
@importData="openImport"
@exportData="exportData"
/>
<a-button type="dashed" class="ele-btn-icon" @click="openImport2">
<template #icon>
<CloudUploadOutlined />
</template>
<span class="text-red-500">导入历史开庭公告</span>
</a-button>
</a-space>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'image'">
@@ -54,13 +62,15 @@
/>
<!-- 导入弹窗 -->
<CreditCourtSessionImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditCourtSessionHistoryImport v-model:visible="showImport2" @done="reload" />
</a-page-header>
</template>
<script lang="ts" setup>
import { createVNode, ref } from 'vue';
import { message, Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { ExclamationCircleOutlined, CloudUploadOutlined } from '@ant-design/icons-vue';
import type { EleProTable } from 'ele-admin-pro';
import { toDateString } from 'ele-admin-pro';
import type {
@@ -72,6 +82,7 @@
import { getPageTitle } from '@/utils/common';
import CreditCourtSessionEdit from './components/creditCourtSessionEdit.vue';
import CreditCourtSessionImport from './components/credit-court-session-import.vue';
import CreditCourtSessionHistoryImport from './components/credit-court-session-history-import.vue';
import {
pageCreditCourtSession,
listCreditCourtSession,
@@ -165,6 +176,13 @@
key: 'occurrenceTime',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -170,6 +170,13 @@
dataIndex: 'dataSource',
key: 'dataSource'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -169,6 +169,13 @@
key: 'occurrenceTime',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -209,6 +209,13 @@
dataIndex: 'relatedProductsInstitutions',
key: 'relatedProductsInstitutions'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -0,0 +1,96 @@
<!-- 历史终本案件导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史终本案件批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史终本案件导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditFinalVersionHistory } from '@/api/credit/creditFinalVersion';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-final-version/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditFinalVersionHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -62,6 +62,8 @@
/>
<!-- 导入弹窗 -->
<CreditFinalVersionImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditFinalVersionHistoryImport v-model:visible="showImport2" @done="reload" />
</a-page-header>
</template>
@@ -80,6 +82,7 @@
import { getPageTitle } from '@/utils/common';
import CreditFinalVersionEdit from './components/creditFinalVersionEdit.vue';
import CreditFinalVersionImport from './components/credit-final-version-import.vue';
import CreditFinalVersionHistoryImport from './components/credit-final-version-history-import.vue';
import {
pageCreditFinalVersion,
listCreditFinalVersion,
@@ -186,6 +189,13 @@
key: 'finalDate',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -0,0 +1,96 @@
<!-- 历史股权冻结导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史股权冻结批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史股权冻结导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditGqdjHistory } from '@/api/credit/creditGqdj';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-gqdj/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditGqdjHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -58,6 +58,8 @@
<CreditGqdjEdit v-model:visible="showEdit" :data="current" @done="reload" />
<!-- 导入弹窗 -->
<CreditGqdjImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditGqdjHistoryImport v-model:visible="showImport2" @done="reload" />
</a-page-header>
</template>
@@ -76,6 +78,7 @@
import { getPageTitle } from '@/utils/common';
import CreditGqdjEdit from './components/creditGqdjEdit.vue';
import CreditGqdjImport from './components/credit-gqdj-import.vue';
import CreditGqdjHistoryImport from './components/credit-gqdj-history-import.vue';
import {
pageCreditGqdj,
listCreditGqdj,
@@ -184,6 +187,13 @@
key: 'publicDate',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -158,6 +158,13 @@
dataIndex: 'publicDate',
key: 'publicDate'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -221,6 +221,13 @@
// align: 'center',
// width: 90
// },
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '更新时间',
dataIndex: 'updateTime',

View File

@@ -0,0 +1,96 @@
<!-- 历史裁判文书导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史裁判文书批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史裁判文书导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditJudicialDocumentHistory } from '@/api/credit/creditJudicialDocument';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-judicial-document/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditJudicialDocumentHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -13,15 +13,23 @@
class="sys-org-table"
>
<template #toolbar>
<search
@search="reload"
:selection="selection"
@add="openEdit"
@remove="removeBatch"
@batchMove="openMove"
@importData="openImport"
@exportData="exportData"
/>
<a-space class="flex">
<search
@search="reload"
:selection="selection"
@add="openEdit"
@remove="removeBatch"
@batchMove="openMove"
@importData="openImport"
@exportData="exportData"
/>
<a-button type="dashed" class="ele-btn-icon" @click="openImport2">
<template #icon>
<CloudUploadOutlined />
</template>
<span class="text-red-500">导入历史裁判文书</span>
</a-button>
</a-space>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'image'">
@@ -55,13 +63,18 @@
/>
<!-- 导入弹窗 -->
<CreditJudicialDocumentImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditJudicialDocumentHistoryImport
v-model:visible="showImport2"
@done="reload"
/>
</a-page-header>
</template>
<script lang="ts" setup>
import { createVNode, ref } from 'vue';
import { message, Modal } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { ExclamationCircleOutlined, CloudUploadOutlined } from '@ant-design/icons-vue';
import type { EleProTable } from 'ele-admin-pro';
import { toDateString } from 'ele-admin-pro';
import type {
@@ -73,6 +86,7 @@
import { getPageTitle } from '@/utils/common';
import CreditJudicialDocumentEdit from './components/creditJudicialDocumentEdit.vue';
import CreditJudicialDocumentImport from './components/credit-judicial-document-import.vue';
import CreditJudicialDocumentHistoryImport from './components/credit-judicial-document-history-import.vue';
import {
pageCreditJudicialDocument,
listCreditJudicialDocument,
@@ -183,6 +197,13 @@
ellipsis: true,
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -183,6 +183,13 @@
title: '案件金额(元)',
dataIndex: 'caseAmount',
key: 'caseAmount'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
}
// {
// title: '操作',

View File

@@ -156,6 +156,13 @@
key: 'occurrenceTime',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -459,6 +459,13 @@
// key: 'status',
// width: 120
// },
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -185,6 +185,13 @@
dataIndex: 'patentApplicant',
key: 'patentApplicant'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -208,6 +208,13 @@
ellipsis: true,
customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd HH:mm:ss')
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '修改时间',
dataIndex: 'updateTime',

View File

@@ -170,6 +170,13 @@
dataIndex: 'riskRelation',
key: 'riskRelation'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -165,6 +165,13 @@
dataIndex: 'dataSource',
key: 'dataSource'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -183,6 +183,13 @@
dataIndex: 'detail',
key: 'detail'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -208,6 +208,13 @@
dataIndex: 'winningName',
key: 'winningName'
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '中标金额',
dataIndex: 'winningPrice',

View File

@@ -0,0 +1,96 @@
<!-- 历史限制高消费导入弹窗 -->
<template>
<ele-modal
:width="520"
:footer="null"
title="历史限制高消费批量导入"
:visible="visible"
@update:visible="updateVisible"
>
<a-spin :spinning="loading">
<a-upload-dragger
accept=".xls,.xlsx"
:show-upload-list="false"
:customRequest="doUpload"
style="padding: 24px 0; margin-bottom: 16px"
>
<p class="ant-upload-drag-icon">
<cloud-upload-outlined />
</p>
<p class="ant-upload-hint">将文件拖到此处或点击上传</p>
</a-upload-dragger>
</a-spin>
<div class="ele-text-center">
<span>只能上传xlsxlsx文件</span>
<a :href="templateUrl" download="历史限制高消费导入模板.xlsx">
下载导入模板
</a>
</div>
</ele-modal>
</template>
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { message } from 'ant-design-vue/es';
import { CloudUploadOutlined } from '@ant-design/icons-vue';
import { importCreditXgxfHistory } from '@/api/credit/creditXgxf';
import { API_BASE_URL } from '@/config/setting';
const emit = defineEmits<{
(e: 'done'): void;
(e: 'update:visible', visible: boolean): void;
}>();
defineProps<{
// 是否打开弹窗
visible: boolean;
}>();
// 导入请求状态
const loading = ref(false);
// 模板下载地址,保持与当前接口域名一致
const templateUrl = computed(() => {
const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(
/\/$/,
''
);
return `${base}/credit/credit-xgxf/import/history/template`;
});
/* 上传 */
const doUpload = ({ file }) => {
if (
![
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
].includes(file.type)
) {
message.error('只能选择 excel 文件');
return false;
}
if (file.size / 1024 / 1024 > 10) {
message.error('大小不能超过 10MB');
return false;
}
loading.value = true;
importCreditXgxfHistory(file)
.then((msg) => {
loading.value = false;
message.success(msg);
updateVisible(false);
emit('done');
})
.catch((e) => {
loading.value = false;
message.error(e.message);
});
return false;
};
/* 更新 visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value);
};
</script>

View File

@@ -58,6 +58,8 @@
<CreditXgxfEdit v-model:visible="showEdit" :data="current" @done="reload" />
<!-- 导入弹窗 -->
<CreditXgxfImport v-model:visible="showImport" @done="reload" />
<!-- 历史导入弹窗 -->
<CreditXgxfHistoryImport v-model:visible="showImport2" @done="reload" />
</a-page-header>
</template>
@@ -76,6 +78,7 @@
import { getPageTitle } from '@/utils/common';
import CreditXgxfEdit from './components/creditXgxfEdit.vue';
import CreditXgxfImport from './components/credit-xgxf-import.vue';
import CreditXgxfHistoryImport from './components/credit-xgxf-history-import.vue';
import {
pageCreditXgxf,
listCreditXgxf,
@@ -181,6 +184,13 @@
key: 'releaseDate',
width: 120
},
{
title: '操作人',
dataIndex: 'realName',
key: 'realName',
width: 90,
align: 'center'
},
{
title: '创建时间',
dataIndex: 'createTime',