feat(credit): 添加历史数据导入功能并优化公司信息展示

- 在多个信用模块中添加历史数据导入按钮,支持导入历史行政许可、破产重整、失信被执行人等
- 引入 CloudUploadOutlined 图标用于导入功能标识
- 重构 creditCompanyInfo 组件中的数据表结构,调整各数据类型的字段顺序和显示配置
- 为附近企业模块增加更多详细字段如邮政编码、纳税人识别号、企业规模等
- 更新分支结构和破产重整等模块的字段隐藏配置
- 优化页面布局使用 a-space 组件改进工具栏样式
This commit is contained in:
2026-01-19 22:36:00 +08:00
parent 8fd96fb05c
commit 8e76658ce0
8 changed files with 246 additions and 155 deletions

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'">
@@ -72,7 +80,7 @@
<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 {

View File

@@ -12,15 +12,24 @@
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'">
@@ -68,7 +77,7 @@
<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 {

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'">
@@ -68,7 +76,7 @@
<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 {

View File

@@ -588,6 +588,7 @@
hidden: ['id','dataStatus','createTime']
},
'开庭公告': {
order: ['caseNumber','causeOfAction','otherPartiesThirdParty','courtName','occurrenceTime'],
titleMap: {
caseNumber: '案号',
causeOfAction: '案由',
@@ -595,96 +596,95 @@
courtName: '法院',
occurrenceTime: '开庭时间',
},
hidden: ['id','dataStatus','dataType','appellee','involvedAmount','plaintiffAppellant','createTime']
hidden: ['id','dataStatus','appellee','involvedAmount','createTime']
},
'立案信息': {
'法院公告': {
order: ['caseNumber','causeOfAction','otherPartiesThirdParty','dataType','plaintiffAppellant','occurrenceTime'],
titleMap: {
dataType: '数据状态',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
plaintiffAppellant: '原告/上诉人',
caseNumber: '案号',
causeOfAction: '案由',
involvedAmount: '涉案金额'
otherPartiesThirdParty: '当事人',
dataType: '公告类型',
plaintiffAppellant: '公告人',
occurrenceTime: '刊登日期'
},
hidden: ['id']
},
'失信被执行人': {
order: ['caseNumber','plaintiffAppellant','appellee','involvedAmount','courtName','occurrenceTime'],
titleMap: {
caseNumber: '案号',
plaintiffAppellant: '失信被执行人',
appellee: '疑似申请执行人',
involvedAmount: '涉案金额(元)',
courtName: '执行法院',
occurrenceTime: '立案日期',
releaseDate: '发布日期'
},
hidden: ['id','dataStatus']
},
诉前调解: {
'裁判文书': {
order: ['title','caseNumber','causeOfAction','otherPartiesThirdParty','involvedAmount','defendantAppellee','occurrenceTime','releaseDate'],
titleMap: {
dataType: '数据状态',
plaintiffAppellant: '原告/上诉人',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
title: '文书标题',
caseNumber: '案号',
causeOfAction: '案由',
involvedAmount: '涉案金额'
otherPartiesThirdParty: '当事人',
involvedAmount: '案件金额(元)',
defendantAppellee: '裁判结果',
occurrenceTime: '裁判日期',
releaseDate: '发布日期'
},
hidden: ['id']
},
'立案信息': {
order: ['caseNumber','causeOfAction','otherPartiesThirdParty','courtName','occurrenceTime'],
titleMap: {
caseNumber: '案号',
causeOfAction: '案由',
otherPartiesThirdParty: '当事人',
courtName: '法院',
occurrenceTime: '立案日期',
},
hidden: ['id','dataStatus']
},
'诉前调解': {
order: ['caseNumber','causeOfAction','otherPartiesThirdParty','courtName','occurrenceTime'],
titleMap: {
caseNumber: '案号',
causeOfAction: '案由',
otherPartiesThirdParty: '当事人',
courtName: '法院',
occurrenceTime: '立案日期'
},
hidden: ['dataStatus']
},
法院公告: {
'送达公告': {
order: ['caseNumber','causeOfAction','otherPartiesThirdParty','courtName','occurrenceTime'],
titleMap: {
dataType: '数据状态',
plaintiffAppellant: '原告/上诉人',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
caseNumber: '案号',
causeOfAction: '案由',
involvedAmount: '涉案金额'
}
},
送达公告: {
titleMap: {
dataType: '数据状态',
plaintiffAppellant: '原告/上诉人',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
causeOfAction: '案由',
involvedAmount: '涉案金额'
}
},
裁判文书: {
titleMap: {
dataType: '数据状态',
plaintiffAppellant: '原告/上诉人',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
causeOfAction: '案由',
involvedAmount: '涉案金额'
}
},
失信被执行人: {
titleMap: {
dataType: '数据状态',
plaintiffAppellant: '原告/上诉人',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
causeOfAction: '案由',
involvedAmount: '涉案金额'
otherPartiesThirdParty: '当事人',
courtName: '法院',
occurrenceTime: '发布日期'
},
hidden: ['dataStatus']
hidden: ['id','dataStatus']
},
股权冻结: {
'股权冻结': {
titleMap: {
dataType: '数据状态',
plaintiffAppellant: '原告/上诉人',
appellee: '被告/被上诉人',
otherPartiesThirdParty: '其他当事人/第三人',
causeOfAction: '案由',
involvedAmount: '涉案金额'
caseNumber: '执行通知文书号',
appellee: '被执行人',
plaintiffAppellant: '冻结股权标的企业',
involvedAmount: '被执行人持有股权、其他投资权益数额',
courtName: '执行法院',
dataType: '类型',
dataStatus: '状态',
freezeDateStart: '冻结日期自',
freezeDateEnd: '冻结日期至',
publicDate: '公示日期'
},
hidden: ['dataStatus']
},
附近企业: {
order: [
'name',
'registrationStatus',
'legalPerson',
'registeredCapital',
'establishDate',
'code',
'address',
'phone',
'email',
'domain',
'createTime'
],
'附近企业': {
titleMap: {
name: '企业名称',
registrationStatus: '登记状态',
@@ -693,13 +693,41 @@
establishDate: '成立日期',
code: '统一社会信用代码',
address: '注册地址',
postalCode: '注册地址邮编',
phone: '有效手机号',
moreTel: '更多电话',
email: '邮箱',
province: '所属省份',
city: '所属城市',
region: '所属区县',
taxpayerCode: '纳税人识别号',
registrationNumber: '注册号',
organizationalCode: '组织机构代码',
numberOfInsuredPersons: '参保人数',
annualReport: '参保人数所属年报',
institutionType: '企业(机构)类型',
companySize: '企业规模',
businessTerm: '营业期限',
nationalStandardIndustryCategories: '国标行业门类',
nationalStandardIndustryCategories2: '国标行业大类',
nationalStandardIndustryCategories3: '国标行业中类',
nationalStandardIndustryCategories4: '国标行业小类',
formerName: '曾用名',
englishName: '英文名',
domain: '官网网址',
mailingAddress: '通信地址',
mailingEmail: '通信地址邮编',
companyProfile: '企业简介',
natureOfBusiness: '经营范围',
nationalStandardIndustryCategories5: '企查查行业门类',
nationalStandardIndustryCategories6: '企查查行业大类',
nationalStandardIndustryCategories7: '企查查行业中类',
nationalStandardIndustryCategories8: '企查查行业小类',
createTime: '创建时间'
}
},
hidden: ['id','tel','moreEmail','country','type','parentId','paidinCapital','registrationAuthority','taxpayerQualification','latestAnnualReportYear','latestAnnualReportOnOperatingRevenue','enterpriseScoreCheck','creditRating','cechnologyScore','cechnologyLevel','smallEnterprise','createTime']
},
分支机构: {
'分支机构': {
order: [
'name',
'curator',
@@ -715,9 +743,10 @@
establishDate: '成立日期',
statusText: '状态',
createTime: '创建时间'
}
},
hidden: ['id','createTime']
},
破产重整: {
'破产重整': {
order: ['code', 'type', 'party', 'court', 'publicDate', 'createTime'],
titleMap: {
code: '案号',
@@ -726,9 +755,10 @@
court: '经办法院',
publicDate: '公开日期',
createTime: '创建时间'
}
},
hidden: ['id','createTime']
},
行政许可: {
'行政许可': {
order: [
'code',
'name',
@@ -748,9 +778,10 @@
validityEnd: '有效期至',
licensingAuthority: '许可机关',
createTime: '创建时间'
}
},
hidden: ['id','createTime']
},
疑似关系: {
'疑似关系': {
order: [
'name',
'statusText',
@@ -772,9 +803,10 @@
type: '疑似关系类型',
detail: '疑似关系详情',
createTime: '创建时间'
}
},
hidden: ['id','createTime']
},
专利: {
'专利': {
order: [
'name',
'type',
@@ -798,16 +830,18 @@
inventor: '发明人',
patentApplicant: '申请(专利权)人',
createTime: '创建时间'
}
},
hidden: ['id','createTime']
},
历史法定代表人: {
'历史法定代表人': {
order: ['name', 'registerDate', 'publicDate', 'createTime'],
titleMap: {
name: '名称',
registerDate: '任职日期',
publicDate: '卸任日期',
createTime: '创建时间'
}
},
hidden: ['id','createTime']
}
};

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'">
@@ -71,7 +79,7 @@
<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 {

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'">
@@ -60,7 +68,7 @@
<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 {

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'">
@@ -56,7 +64,7 @@
<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 {

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'">
@@ -56,7 +64,7 @@
<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 {