From 74b06dbc17649c62e29fbd9e6248183ad81a0779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Mon, 5 Jan 2026 12:17:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(credit):=20=E4=BC=81=E4=B8=9A=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E9=9D=A2=E5=A2=9E=E5=8A=A0=E5=AD=90=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为18个信用相关API的导入方法添加companyId参数支持 - 在企业详情页面的各个子表tab中添加导入和刷新按钮 - 创建credit-company-related-import组件实现统一的导入弹窗 - 新增taxpayerCode字段到用户信息模型中 - 移除企业详情页面中冗余的描述项注释代码 - 实现基于企业ID或纳税人识别号的数据加载缓存机制 - 添加导入模板下载功能和文件类型验证 --- src/api/credit/creditBreachOfTrust/index.ts | 5 +- src/api/credit/creditCaseFiling/index.ts | 5 +- src/api/credit/creditCompetitor/index.ts | 5 +- .../credit/creditCourtAnnouncement/index.ts | 5 +- src/api/credit/creditCourtSession/index.ts | 5 +- src/api/credit/creditCustomer/index.ts | 5 +- src/api/credit/creditDeliveryNotice/index.ts | 5 +- src/api/credit/creditExternal/index.ts | 5 +- src/api/credit/creditFinalVersion/index.ts | 5 +- src/api/credit/creditGqdj/index.ts | 5 +- src/api/credit/creditJudgmentDebtor/index.ts | 5 +- .../credit/creditJudicialDocument/index.ts | 5 +- src/api/credit/creditJudiciary/index.ts | 5 +- src/api/credit/creditMediation/index.ts | 5 +- src/api/credit/creditProject/index.ts | 5 +- src/api/credit/creditRiskRelation/index.ts | 5 +- src/api/credit/creditSupplier/index.ts | 5 +- src/api/credit/creditXgxf/index.ts | 5 +- src/api/index.ts | 2 + .../credit-company-related-import.vue | 108 ++++++ .../components/creditCompanyInfo.vue | 367 +++++++++++------- 21 files changed, 402 insertions(+), 165 deletions(-) create mode 100644 src/views/credit/creditCompany/components/credit-company-related-import.vue diff --git a/src/api/credit/creditBreachOfTrust/index.ts b/src/api/credit/creditBreachOfTrust/index.ts index 9044f36..f48a391 100644 --- a/src/api/credit/creditBreachOfTrust/index.ts +++ b/src/api/credit/creditBreachOfTrust/index.ts @@ -107,9 +107,12 @@ export async function getCreditBreachOfTrust(id: number) { /** * 导入失信被执行人 */ -export async function importCreditBreachOfTrust(file: File) { +export async function importCreditBreachOfTrust(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>( '/credit/credit-breach-of-trust/import', formData, diff --git a/src/api/credit/creditCaseFiling/index.ts b/src/api/credit/creditCaseFiling/index.ts index 60ffa3a..c4ce2d8 100644 --- a/src/api/credit/creditCaseFiling/index.ts +++ b/src/api/credit/creditCaseFiling/index.ts @@ -107,9 +107,12 @@ export async function getCreditCaseFiling(id: number) { /** * 导入司法大数据 */ -export async function importCreditCaseFiling(file: File) { +export async function importCreditCaseFiling(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>( '/credit/credit-case-filing/import', formData, diff --git a/src/api/credit/creditCompetitor/index.ts b/src/api/credit/creditCompetitor/index.ts index 62ad437..d027aa6 100644 --- a/src/api/credit/creditCompetitor/index.ts +++ b/src/api/credit/creditCompetitor/index.ts @@ -107,9 +107,12 @@ export async function getCreditCompetitor(id: number) { /** * 导入竞争对手 */ -export async function importCreditCompetitor(file: File) { +export async function importCreditCompetitor(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>( '/credit/credit-competitor/import', formData, diff --git a/src/api/credit/creditCourtAnnouncement/index.ts b/src/api/credit/creditCourtAnnouncement/index.ts index f42fbee..b86e1cd 100644 --- a/src/api/credit/creditCourtAnnouncement/index.ts +++ b/src/api/credit/creditCourtAnnouncement/index.ts @@ -107,9 +107,12 @@ export async function getCreditCourtAnnouncement(id: number) { /** * 导入法院公告司法大数据 */ -export async function importCreditCourtAnnouncement(file: File) { +export async function importCreditCourtAnnouncement(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>( '/credit/credit-court-announcement/import', formData, diff --git a/src/api/credit/creditCourtSession/index.ts b/src/api/credit/creditCourtSession/index.ts index 637c33e..2cf1356 100644 --- a/src/api/credit/creditCourtSession/index.ts +++ b/src/api/credit/creditCourtSession/index.ts @@ -107,9 +107,12 @@ export async function getCreditCourtSession(id: number) { /** * 导入开庭公告司法大数据 */ -export async function importCreditCourtSession(file: File) { +export async function importCreditCourtSession(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>( '/credit/credit-court-session/import', formData, diff --git a/src/api/credit/creditCustomer/index.ts b/src/api/credit/creditCustomer/index.ts index ba6d47a..2f461e4 100644 --- a/src/api/credit/creditCustomer/index.ts +++ b/src/api/credit/creditCustomer/index.ts @@ -107,9 +107,12 @@ export async function getCreditCustomer(id: number) { /** * 导入客户 */ -export async function importCreditCustomer(file: File) { +export async function importCreditCustomer(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>( '/credit/credit-customer/import', formData, diff --git a/src/api/credit/creditDeliveryNotice/index.ts b/src/api/credit/creditDeliveryNotice/index.ts index 5b6837c..b8180b3 100644 --- a/src/api/credit/creditDeliveryNotice/index.ts +++ b/src/api/credit/creditDeliveryNotice/index.ts @@ -107,9 +107,12 @@ export async function getCreditDeliveryNotice(id: number) { /** * 导入送达公告司法大数据 */ -export async function importCreditDeliveryNotice(file: File) { +export async function importCreditDeliveryNotice(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>( '/credit/credit-delivery-notice/import', formData, diff --git a/src/api/credit/creditExternal/index.ts b/src/api/credit/creditExternal/index.ts index d296b59..ce726aa 100644 --- a/src/api/credit/creditExternal/index.ts +++ b/src/api/credit/creditExternal/index.ts @@ -107,9 +107,12 @@ export async function getCreditExternal(id: number) { /** * 导入对外投资 */ -export async function importCreditExternal(file: File) { +export async function importCreditExternal(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>( '/credit/credit-external/import', formData, diff --git a/src/api/credit/creditFinalVersion/index.ts b/src/api/credit/creditFinalVersion/index.ts index cf0d986..084a5fc 100644 --- a/src/api/credit/creditFinalVersion/index.ts +++ b/src/api/credit/creditFinalVersion/index.ts @@ -107,9 +107,12 @@ export async function getCreditFinalVersion(id: number) { /** * 导入终本案件 */ -export async function importCreditFinalVersion(file: File) { +export async function importCreditFinalVersion(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>( '/credit/credit-final-version/import', formData, diff --git a/src/api/credit/creditGqdj/index.ts b/src/api/credit/creditGqdj/index.ts index 9661dcf..bd23022 100644 --- a/src/api/credit/creditGqdj/index.ts +++ b/src/api/credit/creditGqdj/index.ts @@ -107,9 +107,12 @@ export async function getCreditGqdj(id: number) { /** * 导入股权冻结 */ -export async function importCreditGqdj(file: File) { +export async function importCreditGqdj(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>( '/credit/credit-gqdj/import', formData, diff --git a/src/api/credit/creditJudgmentDebtor/index.ts b/src/api/credit/creditJudgmentDebtor/index.ts index e831c96..0c04420 100644 --- a/src/api/credit/creditJudgmentDebtor/index.ts +++ b/src/api/credit/creditJudgmentDebtor/index.ts @@ -107,9 +107,12 @@ export async function getCreditJudgmentDebtor(id: number) { /** * 导入被执行人 */ -export async function importCreditJudgmentDebtor(file: File) { +export async function importCreditJudgmentDebtor(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>( '/credit/credit-judgment-debtor/import', formData, diff --git a/src/api/credit/creditJudicialDocument/index.ts b/src/api/credit/creditJudicialDocument/index.ts index d3b9dcb..d6e0fe4 100644 --- a/src/api/credit/creditJudicialDocument/index.ts +++ b/src/api/credit/creditJudicialDocument/index.ts @@ -107,9 +107,12 @@ export async function getCreditJudicialDocument(id: number) { /** * 导入裁判文书司法大数据 */ -export async function importCreditJudicialDocument(file: File) { +export async function importCreditJudicialDocument(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>( '/credit/credit-judicial-document/import', formData, diff --git a/src/api/credit/creditJudiciary/index.ts b/src/api/credit/creditJudiciary/index.ts index 90394c7..a9de92c 100644 --- a/src/api/credit/creditJudiciary/index.ts +++ b/src/api/credit/creditJudiciary/index.ts @@ -107,9 +107,12 @@ export async function getCreditJudiciary(id: number) { /** * 导入司法案件 */ -export async function importCreditJudiciaries(file: File) { +export async function importCreditJudiciaries(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>( '/credit/credit-judiciary/import', formData, diff --git a/src/api/credit/creditMediation/index.ts b/src/api/credit/creditMediation/index.ts index a83f50b..bf6a1ac 100644 --- a/src/api/credit/creditMediation/index.ts +++ b/src/api/credit/creditMediation/index.ts @@ -107,9 +107,12 @@ export async function getCreditMediation(id: number) { /** * 导入诉前调解司法大数据 */ -export async function importCreditMediation(file: File) { +export async function importCreditMediation(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>( '/credit/credit-mediation/import', formData, diff --git a/src/api/credit/creditProject/index.ts b/src/api/credit/creditProject/index.ts index efb0b7d..4a89e94 100644 --- a/src/api/credit/creditProject/index.ts +++ b/src/api/credit/creditProject/index.ts @@ -107,9 +107,12 @@ export async function getCreditProject(id: number) { /** * 导入招投标 */ -export async function importCreditProject(file: File) { +export async function importCreditProject(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>( '/credit/credit-project/import', formData, diff --git a/src/api/credit/creditRiskRelation/index.ts b/src/api/credit/creditRiskRelation/index.ts index 7075ac4..9f15121 100644 --- a/src/api/credit/creditRiskRelation/index.ts +++ b/src/api/credit/creditRiskRelation/index.ts @@ -107,9 +107,12 @@ export async function getCreditRiskRelation(id: number) { /** * 导入风险关系表 */ -export async function importCreditRiskRelation(file: File) { +export async function importCreditRiskRelation(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>( '/credit/credit-risk-relation/import', formData, diff --git a/src/api/credit/creditSupplier/index.ts b/src/api/credit/creditSupplier/index.ts index c237b9d..96af464 100644 --- a/src/api/credit/creditSupplier/index.ts +++ b/src/api/credit/creditSupplier/index.ts @@ -107,9 +107,12 @@ export async function getCreditSupplier(id: number) { /** * 导入供应商 */ -export async function importCreditSupplier(file: File) { +export async function importCreditSupplier(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>( '/credit/credit-supplier/import', formData, diff --git a/src/api/credit/creditXgxf/index.ts b/src/api/credit/creditXgxf/index.ts index 7486120..6d9d685 100644 --- a/src/api/credit/creditXgxf/index.ts +++ b/src/api/credit/creditXgxf/index.ts @@ -107,9 +107,12 @@ export async function getCreditXgxf(id: number) { /** * 导入限制高消费 */ -export async function importCreditXgxf(file: File) { +export async function importCreditXgxf(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>( '/credit/credit-xgxf/import', formData, diff --git a/src/api/index.ts b/src/api/index.ts index 00f3d67..ce78838 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -37,6 +37,8 @@ export interface PageParam { tenantId?: number; // 企业ID companyId?: number; + // 企业税号/统一社会信用代码 + taxpayerCode?: string; // 商户ID merchantId?: number; merchantName?: string; diff --git a/src/views/credit/creditCompany/components/credit-company-related-import.vue b/src/views/credit/creditCompany/components/credit-company-related-import.vue new file mode 100644 index 0000000..2a296f9 --- /dev/null +++ b/src/views/credit/creditCompany/components/credit-company-related-import.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/views/credit/creditCompany/components/creditCompanyInfo.vue b/src/views/credit/creditCompany/components/creditCompanyInfo.vue index eac5abe..0220ddf 100644 --- a/src/views/credit/creditCompany/components/creditCompanyInfo.vue +++ b/src/views/credit/creditCompany/components/creditCompanyInfo.vue @@ -33,145 +33,6 @@ {{ formatValue(form.moreTel) }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + 导入 + + + 刷新 + + + + + @@ -206,7 +92,25 @@ import { CreditCompany } from '@/api/credit/creditCompany/model'; import { useThemeStore } from '@/store/modules/theme'; import { storeToRefs } from 'pinia'; - import { pageCreditUser } from '@/api/credit/creditUser'; + import CreditCompanyRelatedImport from './credit-company-related-import.vue'; + import { pageCreditProject, importCreditProject } from '@/api/credit/creditProject'; + import { pageCreditExternal, importCreditExternal } from '@/api/credit/creditExternal'; + import { pageCreditRiskRelation, importCreditRiskRelation } from '@/api/credit/creditRiskRelation'; + import { pageCreditCompetitor, importCreditCompetitor } from '@/api/credit/creditCompetitor'; + import { pageCreditSupplier, importCreditSupplier } from '@/api/credit/creditSupplier'; + import { pageCreditCustomer, importCreditCustomer } from '@/api/credit/creditCustomer'; + import { pageCreditCaseFiling, importCreditCaseFiling } from '@/api/credit/creditCaseFiling'; + import { pageCreditMediation, importCreditMediation } from '@/api/credit/creditMediation'; + import { pageCreditCourtSession, importCreditCourtSession } from '@/api/credit/creditCourtSession'; + import { pageCreditCourtAnnouncement, importCreditCourtAnnouncement } from '@/api/credit/creditCourtAnnouncement'; + import { pageCreditDeliveryNotice, importCreditDeliveryNotice } from '@/api/credit/creditDeliveryNotice'; + import { pageCreditJudicialDocument, importCreditJudicialDocument } from '@/api/credit/creditJudicialDocument'; + import { pageCreditJudgmentDebtor, importCreditJudgmentDebtor } from '@/api/credit/creditJudgmentDebtor'; + import { pageCreditBreachOfTrust, importCreditBreachOfTrust } from '@/api/credit/creditBreachOfTrust'; + import { pageCreditFinalVersion, importCreditFinalVersion } from '@/api/credit/creditFinalVersion'; + import { pageCreditXgxf, importCreditXgxf } from '@/api/credit/creditXgxf'; + import { pageCreditGqdj, importCreditGqdj } from '@/api/credit/creditGqdj'; + import { pageCreditJudiciary, importCreditJudiciaries } from '@/api/credit/creditJudiciary'; const props = defineProps<{ // 弹窗是否打开 @@ -249,6 +153,105 @@ { key: '司法案件', label: '司法案件' } ]; + type TabApiConfig = { + page: (params: any) => Promise<{ list: Record[] } | undefined>; + importFn: (file: File, companyId?: number) => Promise; + templatePath: string; + }; + + const tabApiMap: Record = { + 招投标: { + page: pageCreditProject as any, + importFn: importCreditProject as any, + templatePath: '/credit/credit-project/import/template' + }, + 对外投资: { + page: pageCreditExternal as any, + importFn: importCreditExternal as any, + templatePath: '/credit/credit-external/import/template' + }, + 风险关系: { + page: pageCreditRiskRelation as any, + importFn: importCreditRiskRelation as any, + templatePath: '/credit/credit-risk-relation/import/template' + }, + 竞争对手: { + page: pageCreditCompetitor as any, + importFn: importCreditCompetitor as any, + templatePath: '/credit/credit-competitor/import/template' + }, + 供应商: { + page: pageCreditSupplier as any, + importFn: importCreditSupplier as any, + templatePath: '/credit/credit-supplier/import/template' + }, + 客户: { + page: pageCreditCustomer as any, + importFn: importCreditCustomer as any, + templatePath: '/credit/credit-customer/import/template' + }, + 立案信息: { + page: pageCreditCaseFiling as any, + importFn: importCreditCaseFiling as any, + templatePath: '/credit/credit-case-filing/import/template' + }, + 诉前调解: { + page: pageCreditMediation as any, + importFn: importCreditMediation as any, + templatePath: '/credit/credit-mediation/import/template' + }, + 开庭公告: { + page: pageCreditCourtSession as any, + importFn: importCreditCourtSession as any, + templatePath: '/credit/credit-court-session/import/template' + }, + 法院公告: { + page: pageCreditCourtAnnouncement as any, + importFn: importCreditCourtAnnouncement as any, + templatePath: '/credit/credit-court-announcement/import/template' + }, + 送达公告: { + page: pageCreditDeliveryNotice as any, + importFn: importCreditDeliveryNotice as any, + templatePath: '/credit/credit-delivery-notice/import/template' + }, + 裁判文书: { + page: pageCreditJudicialDocument as any, + importFn: importCreditJudicialDocument as any, + templatePath: '/credit/credit-judicial-document/import/template' + }, + 被执行人: { + page: pageCreditJudgmentDebtor as any, + importFn: importCreditJudgmentDebtor as any, + templatePath: '/credit/credit-judgment-debtor/import/template' + }, + 失信被执行人: { + page: pageCreditBreachOfTrust as any, + importFn: importCreditBreachOfTrust as any, + templatePath: '/credit/credit-breach-of-trust/import/template' + }, + 终本案件: { + page: pageCreditFinalVersion as any, + importFn: importCreditFinalVersion as any, + templatePath: '/credit/credit-final-version/import/template' + }, + '限制高消费': { + page: pageCreditXgxf as any, + importFn: importCreditXgxf as any, + templatePath: '/credit/credit-xgxf/import/template' + }, + 股权冻结: { + page: pageCreditGqdj as any, + importFn: importCreditGqdj as any, + templatePath: '/credit/credit-gqdj/import/template' + }, + 司法案件: { + page: pageCreditJudiciary as any, + importFn: importCreditJudiciaries as any, + templatePath: '/credit/credit-judiciary/import/template' + } + }; + type TableColumn = { title: string; dataIndex: string; @@ -260,6 +263,7 @@ loading: boolean; data: Record[]; columns: TableColumn[]; + loadedIdentity?: string; }; const tabState = reactive>({}); @@ -267,11 +271,48 @@ tabState[tab.key] = { loading: false, data: [], - columns: [] + columns: [], + loadedIdentity: undefined }; }); const activeTab = ref(tabList[0].key); + // 子表导入弹窗 + const showRelatedImport = ref(false); + const relatedImportTabKey = ref(tabList[0].key); + const relatedImportConfig = computed(() => tabApiMap[relatedImportTabKey.value]); + const relatedImportTitle = computed(() => { + const tab = tabList.find((t) => t.key === relatedImportTabKey.value); + return `${tab?.label ?? relatedImportTabKey.value}批量导入`; + }); + const relatedImportTemplatePath = computed( + () => relatedImportConfig.value?.templatePath ?? '' + ); + const relatedImportFn = (file: File, companyId?: number) => { + const fn = relatedImportConfig.value?.importFn; + if (!fn) { + return Promise.reject(new Error('未配置导入接口')); + } + return fn(file, companyId); + }; + + const openRelatedImport = (key: string) => { + if (!form.id) { + message.error('缺少企业ID,无法导入'); + return; + } + if (!tabApiMap[key]) { + message.error('未配置该Tab的导入功能'); + return; + } + relatedImportTabKey.value = key; + showRelatedImport.value = true; + }; + + const handleRelatedImportDone = () => { + reloadTab(activeTab.value); + }; + const defaultForm: CreditCompany = { id: undefined, name: undefined, @@ -385,31 +426,60 @@ tabState[tab.key].data = []; tabState[tab.key].columns = []; tabState[tab.key].loading = false; + tabState[tab.key].loadedIdentity = undefined; }); }; - const loadTabData = async (key: string) => { - const keywords = form.matchName ?? props.data?.matchName; + const loadTabData = async (key: string, force = false) => { + const taxpayerCode = form.code ?? props.data?.code; + const companyId = form.id ?? props.data?.id; + const identity = taxpayerCode + ? `tax:${taxpayerCode}` + : companyId + ? `id:${companyId}` + : undefined; const state = tabState[key]; - if (!keywords) { + const api = tabApiMap[key]?.page; + if (!api) { state.data = []; state.columns = []; + state.loadedIdentity = undefined; + return; + } + if (!identity) { + state.data = []; + state.columns = []; + state.loadedIdentity = undefined; + return; + } + if (!force && state.loadedIdentity === identity) { return; } state.loading = true; try { - const res = await pageCreditUser({ keywords }); + const res = await api({ + taxpayerCode, + companyId, + page: 1, + limit: 500 + }); state.data = res?.list || []; state.columns = buildColumns(state.data); + state.loadedIdentity = identity; } catch (e: any) { state.data = []; state.columns = []; + state.loadedIdentity = undefined; message.error(e?.message ?? '查询失败'); } finally { state.loading = false; } }; + const reloadTab = (key: string) => { + loadTabData(key, true); + }; + watch( () => activeTab.value, (key) => { @@ -421,14 +491,16 @@ () => props.visible, (visible) => { if (visible) { + showRelatedImport.value = false; resetForm(); clearTabData(); if (props.data) { assignObject(form, props.data); } activeTab.value = tabList[0].key; - loadTabData(activeTab.value); + loadTabData(activeTab.value, true); } else { + showRelatedImport.value = false; resetForm(); clearTabData(); } @@ -442,10 +514,11 @@ if (!props.visible || !data) { return; } + showRelatedImport.value = false; resetForm(); clearTabData(); assignObject(form, data); - loadTabData(activeTab.value); + loadTabData(activeTab.value, true); } );