From 6e6fd43017f4cf407df70f272e7969fbe65a1154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 5 Mar 2026 10:58:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(credit):=20=E6=B7=BB=E5=8A=A0=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E4=BF=A1=E7=94=A8=E6=A8=A1=E5=9D=97=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在应用配置中注册公司管理页面路由 - 实现首页轮播图组件优化,支持CSS尺寸转换和图片加载 - 新增企业ID修正API功能 - 实现信用模块数据权限控制工具 - 添加客户、联系人、数据查询等页面配置 - 完善行政许可、破产重整、分支机构等信用数据模型 - 实现各类信用数据的增删改查和导入导出接口 - 建立企业信用数据完整管理功能体系 --- src/api/credit/companyId.ts | 28 + .../creditAdministrativeLicense/index.ts | 171 ++++ .../model/index.ts | 59 ++ src/api/credit/creditBankruptcy/index.ts | 156 ++++ .../credit/creditBankruptcy/model/index.ts | 51 + src/api/credit/creditBranch/index.ts | 127 +++ src/api/credit/creditBranch/model/index.ts | 51 + src/api/credit/creditBreachOfTrust/index.ts | 163 ++++ .../credit/creditBreachOfTrust/model/index.ts | 59 ++ src/api/credit/creditCaseFiling/index.ts | 156 ++++ .../credit/creditCaseFiling/model/index.ts | 59 ++ src/api/credit/creditCompany/index.ts | 138 +++ src/api/credit/creditCompany/model/index.ts | 189 ++++ src/api/credit/creditCompetitor/index.ts | 129 +++ .../credit/creditCompetitor/model/index.ts | 53 ++ .../credit/creditCourtAnnouncement/index.ts | 170 ++++ .../creditCourtAnnouncement/model/index.ts | 59 ++ src/api/credit/creditCourtSession/index.ts | 156 ++++ .../credit/creditCourtSession/model/index.ts | 59 ++ src/api/credit/creditCustomer/index.ts | 127 +++ src/api/credit/creditCustomer/model/index.ts | 49 + src/api/credit/creditDeliveryNotice/index.ts | 163 ++++ .../creditDeliveryNotice/model/index.ts | 59 ++ src/api/credit/creditExternal/index.ts | 127 +++ src/api/credit/creditExternal/model/index.ts | 67 ++ src/api/credit/creditFinalVersion/index.ts | 156 ++++ .../credit/creditFinalVersion/model/index.ts | 48 + src/api/credit/creditGqdj/index.ts | 151 +++ src/api/credit/creditGqdj/model/index.ts | 65 ++ .../creditHistoricalLegalPerson/index.ts | 144 +++ .../model/index.ts | 47 + src/api/credit/creditJudgmentDebtor/index.ts | 185 ++++ .../creditJudgmentDebtor/model/index.ts | 65 ++ .../credit/creditJudicialDocument/index.ts | 168 ++++ .../creditJudicialDocument/model/index.ts | 67 ++ src/api/credit/creditJudiciary/index.ts | 127 +++ src/api/credit/creditJudiciary/model/index.ts | 73 ++ src/api/credit/creditMediation/index.ts | 154 +++ src/api/credit/creditMediation/model/index.ts | 59 ++ src/api/credit/creditNearbyCompany/index.ts | 233 +++++ .../credit/creditNearbyCompany/model/index.ts | 143 +++ src/api/credit/creditPatent/index.ts | 127 +++ src/api/credit/creditPatent/model/index.ts | 59 ++ src/api/credit/creditProject/index.ts | 127 +++ src/api/credit/creditProject/model/index.ts | 71 ++ src/api/credit/creditRiskRelation/index.ts | 129 +++ .../credit/creditRiskRelation/model/index.ts | 51 + src/api/credit/creditSupplier/index.ts | 127 +++ src/api/credit/creditSupplier/model/index.ts | 49 + .../creditSuspectedRelationship/index.ts | 144 +++ .../model/index.ts | 57 ++ src/api/credit/creditUser/index.ts | 127 +++ src/api/credit/creditUser/model/index.ts | 71 ++ src/api/credit/creditXgxf/index.ts | 151 +++ src/api/credit/creditXgxf/model/index.ts | 59 ++ src/api/credit/utils/data-scope.ts | 49 + src/app.config.ts | 3 +- src/credit/company/index.config.ts | 5 + src/credit/company/index.tsx | 874 ++++++++++++++++++ src/credit/customer/index.config.ts | 5 + src/credit/customer/index.tsx | 11 + src/credit/data/index.config.ts | 5 + src/credit/data/index.tsx | 11 + src/pages/index/Banner.tsx | 37 +- src/pages/index/index.tsx | 211 +++-- src/pages/user/user.tsx | 2 - 66 files changed, 6971 insertions(+), 101 deletions(-) create mode 100644 src/api/credit/companyId.ts create mode 100644 src/api/credit/creditAdministrativeLicense/index.ts create mode 100644 src/api/credit/creditAdministrativeLicense/model/index.ts create mode 100644 src/api/credit/creditBankruptcy/index.ts create mode 100644 src/api/credit/creditBankruptcy/model/index.ts create mode 100644 src/api/credit/creditBranch/index.ts create mode 100644 src/api/credit/creditBranch/model/index.ts create mode 100644 src/api/credit/creditBreachOfTrust/index.ts create mode 100644 src/api/credit/creditBreachOfTrust/model/index.ts create mode 100644 src/api/credit/creditCaseFiling/index.ts create mode 100644 src/api/credit/creditCaseFiling/model/index.ts create mode 100644 src/api/credit/creditCompany/index.ts create mode 100644 src/api/credit/creditCompany/model/index.ts create mode 100644 src/api/credit/creditCompetitor/index.ts create mode 100644 src/api/credit/creditCompetitor/model/index.ts create mode 100644 src/api/credit/creditCourtAnnouncement/index.ts create mode 100644 src/api/credit/creditCourtAnnouncement/model/index.ts create mode 100644 src/api/credit/creditCourtSession/index.ts create mode 100644 src/api/credit/creditCourtSession/model/index.ts create mode 100644 src/api/credit/creditCustomer/index.ts create mode 100644 src/api/credit/creditCustomer/model/index.ts create mode 100644 src/api/credit/creditDeliveryNotice/index.ts create mode 100644 src/api/credit/creditDeliveryNotice/model/index.ts create mode 100644 src/api/credit/creditExternal/index.ts create mode 100644 src/api/credit/creditExternal/model/index.ts create mode 100644 src/api/credit/creditFinalVersion/index.ts create mode 100644 src/api/credit/creditFinalVersion/model/index.ts create mode 100644 src/api/credit/creditGqdj/index.ts create mode 100644 src/api/credit/creditGqdj/model/index.ts create mode 100644 src/api/credit/creditHistoricalLegalPerson/index.ts create mode 100644 src/api/credit/creditHistoricalLegalPerson/model/index.ts create mode 100644 src/api/credit/creditJudgmentDebtor/index.ts create mode 100644 src/api/credit/creditJudgmentDebtor/model/index.ts create mode 100644 src/api/credit/creditJudicialDocument/index.ts create mode 100644 src/api/credit/creditJudicialDocument/model/index.ts create mode 100644 src/api/credit/creditJudiciary/index.ts create mode 100644 src/api/credit/creditJudiciary/model/index.ts create mode 100644 src/api/credit/creditMediation/index.ts create mode 100644 src/api/credit/creditMediation/model/index.ts create mode 100644 src/api/credit/creditNearbyCompany/index.ts create mode 100644 src/api/credit/creditNearbyCompany/model/index.ts create mode 100644 src/api/credit/creditPatent/index.ts create mode 100644 src/api/credit/creditPatent/model/index.ts create mode 100644 src/api/credit/creditProject/index.ts create mode 100644 src/api/credit/creditProject/model/index.ts create mode 100644 src/api/credit/creditRiskRelation/index.ts create mode 100644 src/api/credit/creditRiskRelation/model/index.ts create mode 100644 src/api/credit/creditSupplier/index.ts create mode 100644 src/api/credit/creditSupplier/model/index.ts create mode 100644 src/api/credit/creditSuspectedRelationship/index.ts create mode 100644 src/api/credit/creditSuspectedRelationship/model/index.ts create mode 100644 src/api/credit/creditUser/index.ts create mode 100644 src/api/credit/creditUser/model/index.ts create mode 100644 src/api/credit/creditXgxf/index.ts create mode 100644 src/api/credit/creditXgxf/model/index.ts create mode 100644 src/api/credit/utils/data-scope.ts create mode 100644 src/credit/company/index.config.ts create mode 100644 src/credit/company/index.tsx create mode 100644 src/credit/customer/index.config.ts create mode 100644 src/credit/customer/index.tsx create mode 100644 src/credit/data/index.config.ts create mode 100644 src/credit/data/index.tsx diff --git a/src/api/credit/companyId.ts b/src/api/credit/companyId.ts new file mode 100644 index 0000000..b57ede2 --- /dev/null +++ b/src/api/credit/companyId.ts @@ -0,0 +1,28 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult } from '@/api'; + +/** + * 修正某个信用模块数据的主体企业归属(按名称匹配回填 companyId) + * + * 后端约定: POST /api/credit/{module}/company-id/refresh + * 例如: module = "credit-judgment-debtor" + */ +export async function refreshCreditCompanyId( + module: string, + params?: { + onlyNull?: boolean; + limit?: number; + } +) { + const res = await request.post>( + `/credit/${module}/company-id/refresh`, + undefined, + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditAdministrativeLicense/index.ts b/src/api/credit/creditAdministrativeLicense/index.ts new file mode 100644 index 0000000..7d64b98 --- /dev/null +++ b/src/api/credit/creditAdministrativeLicense/index.ts @@ -0,0 +1,171 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { + CreditAdministrativeLicense, + CreditAdministrativeLicenseParam +} from './model'; + +/** + * 分页查询行政许可 + */ +export async function pageCreditAdministrativeLicense( + params: CreditAdministrativeLicenseParam +) { + const res = await request.get< + ApiResult> + >('/credit/credit-administrative-license/page', { + params: withCreditUserScope(params) + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询行政许可列表 + */ +export async function listCreditAdministrativeLicense( + params?: CreditAdministrativeLicenseParam +) { + const res = await request.get>( + '/credit/credit-administrative-license', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加行政许可 + */ +export async function addCreditAdministrativeLicense( + data: CreditAdministrativeLicense +) { + const res = await request.post>( + '/credit/credit-administrative-license', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改行政许可 + */ +export async function updateCreditAdministrativeLicense( + data: CreditAdministrativeLicense +) { + const res = await request.put>( + '/credit/credit-administrative-license', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除行政许可 + */ +export async function removeCreditAdministrativeLicense(id?: number) { + const res = await request.delete>( + '/credit/credit-administrative-license/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除行政许可 + */ +export async function removeBatchCreditAdministrativeLicense( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-administrative-license/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询行政许可 + */ +export async function getCreditAdministrativeLicense(id: number) { + const res = await request.get>( + '/credit/credit-administrative-license/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入行政许可 + */ +export async function importCreditAdministrativeLicense( + 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-administrative-license/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)); +} + +/** + * 导入历史行政许可 + */ +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>( + '/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)); +} diff --git a/src/api/credit/creditAdministrativeLicense/model/index.ts b/src/api/credit/creditAdministrativeLicense/model/index.ts new file mode 100644 index 0000000..7f0728f --- /dev/null +++ b/src/api/credit/creditAdministrativeLicense/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 行政许可 + */ +export interface CreditAdministrativeLicense { + // ID + id?: number; + // 决定文书/许可编号 + code?: string; + // 决定文书/许可证名称 + name?: string; + // 许可状态 + statusText?: string; + // 许可类型 + type?: string; + // 链接 + url?: string; + // 有效期自 + validityStart?: string; + // 有效期至 + validityEnd?: string; + // 许可机关 + licensingAuthority?: string; + // 许可内容 + licenseContent?: string; + // 数据来源单位 + dataSourceUnit?: string; + // 备注 + comments?: string; + // 企业ID + companyId?: number; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 行政许可搜索条件 + */ +export interface CreditAdministrativeLicenseParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditBankruptcy/index.ts b/src/api/credit/creditBankruptcy/index.ts new file mode 100644 index 0000000..b7e4dc1 --- /dev/null +++ b/src/api/credit/creditBankruptcy/index.ts @@ -0,0 +1,156 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditBankruptcy, CreditBankruptcyParam } from './model'; + +/** + * 分页查询破产重整 + */ +export async function pageCreditBankruptcy(params: CreditBankruptcyParam) { + const res = await request.get>>( + '/credit/credit-bankruptcy/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询破产重整列表 + */ +export async function listCreditBankruptcy(params?: CreditBankruptcyParam) { + const res = await request.get>( + '/credit/credit-bankruptcy', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加破产重整 + */ +export async function addCreditBankruptcy(data: CreditBankruptcy) { + const res = await request.post>( + '/credit/credit-bankruptcy', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改破产重整 + */ +export async function updateCreditBankruptcy(data: CreditBankruptcy) { + const res = await request.put>( + '/credit/credit-bankruptcy', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除破产重整 + */ +export async function removeCreditBankruptcy(id?: number) { + const res = await request.delete>( + '/credit/credit-bankruptcy/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除破产重整 + */ +export async function removeBatchCreditBankruptcy( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-bankruptcy/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询破产重整 + */ +export async function getCreditBankruptcy(id: number) { + const res = await request.get>( + '/credit/credit-bankruptcy/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入破产重整 + */ +export async function importCreditBankruptcy(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-bankruptcy/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)); +} + +/** + * 导入历史破产重整 + */ +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>( + '/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)); +} diff --git a/src/api/credit/creditBankruptcy/model/index.ts b/src/api/credit/creditBankruptcy/model/index.ts new file mode 100644 index 0000000..4ec408e --- /dev/null +++ b/src/api/credit/creditBankruptcy/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 破产重整 + */ +export interface CreditBankruptcy { + // ID + id?: number; + // 案号 + code?: string; + // 案件类型 + type?: string; + // 当事人 + party?: string; + // 链接 + url?: string; + // 经办法院 + court?: string; + // 公开日期 + publicDate?: string; + // 备注 + comments?: string; + // 企业ID + companyId?: number; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 破产重整搜索条件 + */ +export interface CreditBankruptcyParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditBranch/index.ts b/src/api/credit/creditBranch/index.ts new file mode 100644 index 0000000..275075a --- /dev/null +++ b/src/api/credit/creditBranch/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditBranch, CreditBranchParam } from './model'; + +/** + * 分页查询分支机构 + */ +export async function pageCreditBranch(params: CreditBranchParam) { + const res = await request.get>>( + '/credit/credit-branch/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分支机构列表 + */ +export async function listCreditBranch(params?: CreditBranchParam) { + const res = await request.get>( + '/credit/credit-branch', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分支机构 + */ +export async function addCreditBranch(data: CreditBranch) { + const res = await request.post>( + '/credit/credit-branch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分支机构 + */ +export async function updateCreditBranch(data: CreditBranch) { + const res = await request.put>( + '/credit/credit-branch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分支机构 + */ +export async function removeCreditBranch(id?: number) { + const res = await request.delete>( + '/credit/credit-branch/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分支机构 + */ +export async function removeBatchCreditBranch(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-branch/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分支机构 + */ +export async function getCreditBranch(id: number) { + const res = await request.get>( + '/credit/credit-branch/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入分支机构 + */ +export async function importCreditBranch(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-branch/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)); +} diff --git a/src/api/credit/creditBranch/model/index.ts b/src/api/credit/creditBranch/model/index.ts new file mode 100644 index 0000000..4cd5bb4 --- /dev/null +++ b/src/api/credit/creditBranch/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 分支机构 + */ +export interface CreditBranch { + // ID + id?: number; + // 分支机构名称 + name?: string; + // 负责人 + curator?: string; + // 地区 + region?: string; + // 链接 + url?: string; + // 成立日期 + establishDate?: string; + // 状态 + statusText?: string; + // 备注 + comments?: string; + // 企业ID + companyId?: number; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分支机构搜索条件 + */ +export interface CreditBranchParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditBreachOfTrust/index.ts b/src/api/credit/creditBreachOfTrust/index.ts new file mode 100644 index 0000000..460c163 --- /dev/null +++ b/src/api/credit/creditBreachOfTrust/index.ts @@ -0,0 +1,163 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditBreachOfTrust, CreditBreachOfTrustParam } from './model'; + +/** + * 分页查询失信被执行人 + */ +export async function pageCreditBreachOfTrust( + params: CreditBreachOfTrustParam +) { + const res = await request.get>>( + '/credit/credit-breach-of-trust/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询失信被执行人列表 + */ +export async function listCreditBreachOfTrust( + params?: CreditBreachOfTrustParam +) { + const res = await request.get>( + '/credit/credit-breach-of-trust', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加失信被执行人 + */ +export async function addCreditBreachOfTrust(data: CreditBreachOfTrust) { + const res = await request.post>( + '/credit/credit-breach-of-trust', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改失信被执行人 + */ +export async function updateCreditBreachOfTrust(data: CreditBreachOfTrust) { + const res = await request.put>( + '/credit/credit-breach-of-trust', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除失信被执行人 + */ +export async function removeCreditBreachOfTrust(id?: number) { + const res = await request.delete>( + '/credit/credit-breach-of-trust/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除失信被执行人 + */ +export async function removeBatchCreditBreachOfTrust( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-breach-of-trust/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询失信被执行人 + */ +export async function getCreditBreachOfTrust(id: number) { + const res = await request.get>( + '/credit/credit-breach-of-trust/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入失信被执行人 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditBreachOfTrust/model/index.ts b/src/api/credit/creditBreachOfTrust/model/index.ts new file mode 100644 index 0000000..3c52ac4 --- /dev/null +++ b/src/api/credit/creditBreachOfTrust/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 失信被执行人 + */ +export interface CreditBreachOfTrust { + // ID + id?: number; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 失信被执行人搜索条件 + */ +export interface CreditBreachOfTrustParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditCaseFiling/index.ts b/src/api/credit/creditCaseFiling/index.ts new file mode 100644 index 0000000..0bc0985 --- /dev/null +++ b/src/api/credit/creditCaseFiling/index.ts @@ -0,0 +1,156 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditCaseFiling, CreditCaseFilingParam } from './model'; + +/** + * 分页查询司法大数据 + */ +export async function pageCreditCaseFiling(params: CreditCaseFilingParam) { + const res = await request.get>>( + '/credit/credit-case-filing/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询司法大数据列表 + */ +export async function listCreditCaseFiling(params?: CreditCaseFilingParam) { + const res = await request.get>( + '/credit/credit-case-filing', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加司法大数据 + */ +export async function addCreditCaseFiling(data: CreditCaseFiling) { + const res = await request.post>( + '/credit/credit-case-filing', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改司法大数据 + */ +export async function updateCreditCaseFiling(data: CreditCaseFiling) { + const res = await request.put>( + '/credit/credit-case-filing', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除司法大数据 + */ +export async function removeCreditCaseFiling(id?: number) { + const res = await request.delete>( + '/credit/credit-case-filing/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除司法大数据 + */ +export async function removeBatchCreditCaseFiling( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-case-filing/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询司法大数据 + */ +export async function getCreditCaseFiling(id: number) { + const res = await request.get>( + '/credit/credit-case-filing/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入司法大数据 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入历史立案信息司法大数据 + */ +export async function importCreditCaseFilingHistory( + 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/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)); +} diff --git a/src/api/credit/creditCaseFiling/model/index.ts b/src/api/credit/creditCaseFiling/model/index.ts new file mode 100644 index 0000000..611bba8 --- /dev/null +++ b/src/api/credit/creditCaseFiling/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 司法大数据 + */ +export interface CreditCaseFiling { + // ID + id?: number; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 司法大数据搜索条件 + */ +export interface CreditCaseFilingParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditCompany/index.ts b/src/api/credit/creditCompany/index.ts new file mode 100644 index 0000000..b27dd3b --- /dev/null +++ b/src/api/credit/creditCompany/index.ts @@ -0,0 +1,138 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditCompany, CreditCompanyParam } from './model'; + +/** + * 分页查询企业 + */ +export async function pageCreditCompany(params: CreditCompanyParam) { + const res = await request.get>>( + '/credit/credit-company/page', + { params: withCreditUserScope(params) } + ); + if (res.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.message)); +} + +/** + * 查询企业列表 + */ +export async function listCreditCompany(params?: CreditCompanyParam) { + const res = await request.get>( + '/credit/credit-company', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加企业 + */ +export async function addCreditCompany(data: CreditCompany) { + const res = await request.post>( + '/credit/credit-company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改企业 + */ +export async function updateCreditCompany(data: CreditCompany) { + const res = await request.put>( + '/credit/credit-company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除企业 + */ +export async function removeCreditCompany(id?: number) { + const res = await request.delete>( + '/credit/credit-company/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除企业 + */ +export async function removeBatchCreditCompany(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-company/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询企业 + */ +export async function getCreditCompany(id: number) { + const res = await request.get>( + '/credit/credit-company/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入企业 + */ +export async function importCreditCompany(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + '/credit/credit-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)); +} + +/** + * 根据企业匹配名称查询关联信息 + */ +export async function getCompanyRelatedInfo(params: CreditCompanyParam) { + const res = await request.get>( + '/credit/credit-company/related', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditCompany/model/index.ts b/src/api/credit/creditCompany/model/index.ts new file mode 100644 index 0000000..79ddaa5 --- /dev/null +++ b/src/api/credit/creditCompany/model/index.ts @@ -0,0 +1,189 @@ +import type { PageParam } from '@/api'; + +/** + * 企业 + */ +export interface CreditCompany { + // ID + id?: number; + // 原文件导入名称 + name?: string; + // 系统匹配企业名称 + matchName?: string; + // 统一社会信用代码 + code?: string; + // 链接地址 + url?: string; + // 类型 + type?: number; + // 上级id, 0是顶级 + parentId?: number; + // 登记状态 + registrationStatus?: string; + // 法定代表人 + legalPerson?: string; + // 注册资本 + registeredCapital?: string; + // 实缴资本 + paidinCapital?: string; + // 成立日期 + establishDate?: string; + // 企业地址 + address?: string; + // 电话 + tel?: string; + // 更多电话 + moreTel?: string; + // 邮箱 + email?: string; + // 更多邮箱 + moreEmail?: string; + // 所在国家 + country?: string; + // 所属省份 + province?: string; + // 所属城市 + city?: string; + // 所属区县 + region?: string; + // 企业(机构)类型 + institutionType?: string; + // 纳税人识别号 + taxpayerCode?: string; + // 注册号 + registrationNumber?: string; + // 组织机构代码 + organizationalCode?: string; + // 参保人数 + numberOfInsuredPersons?: string; + // 参保人数所属年报 + annualReport?: string; + // 营业期限 + businessTerm?: string; + // 国标行业门类 + nationalStandardIndustryCategories?: string; + // 国标行业大类 + nationalStandardIndustryCategories2?: string; + // 国标行业中类 + nationalStandardIndustryCategories3?: string; + // 国标行业小类 + nationalStandardIndustryCategories4?: string; + // 企查查行业门类 + nationalStandardIndustryCategories5?: string; + // 企查查行业大类 + nationalStandardIndustryCategories6?: string; + // 企查查行业中类 + nationalStandardIndustryCategories7?: string; + // 企查查行业小类 + nationalStandardIndustryCategories8?: string; + // 企业规模 + companySize?: string; + // 曾用名 + formerName?: string; + // 英文名 + englishName?: string; + // 官网 + domain?: string; + // 通信地址 + mailingAddress?: string; + // 企业简介 + companyProfile?: string; + // 经营范围 + natureOfBusiness?: string; + // 登记机关 + registrationAuthority?: string; + // 纳税人资质 + taxpayerQualification?: string; + // 最新年报年份 + latestAnnualReportYear?: string; + // 最新年报营业收入 + latestAnnualReportOnOperatingRevenue?: string; + // 企查分 + enterpriseScoreCheck?: string; + // 信用等级 + creditRating?: string; + // 科创分 + cechnologyScore?: string; + // 科创等级 + cechnologyLevel?: string; + // 是否小微企业 + smallEnterprise?: string; + // 记录数 + creditAdministrativeLicense?: number; + // 记录数 + creditBankruptcy?: number; + // 记录数 + creditBranch?: number; + // 记录数 + creditBreachOfTrust?: number; + // 记录数 + creditCaseFiling?: number; + // 记录数 + creditCompetitor?: number; + // 记录数 + creditCourtAnnouncement?: number; + // 记录数 + creditCourtSession?: number; + // 记录数 + creditCustomer?: number; + // 记录数 + creditDeliveryNotice?: number; + // 记录数 + creditExternal?: number; + // 记录数 + creditFinalVersion?: number; + // 记录数 + creditGqdj?: number; + // 记录数 + creditHistoricalLegalPerson?: number; + // 记录数 + creditJudgmentDebtor?: number; + // 记录数 + creditJudicialDocument?: number; + // 记录数 + creditJudiciary?: number; + // 记录数 + creditMediation?: number; + // 记录数 + creditNearbyCompany?: number; + // 记录数 + creditPatent?: number; + // 记录数 + creditRiskRelation?: number; + // 记录数 + creditSupplier?: number; + // 记录数 + creditSuspectedRelationship?: number; + // 记录数 + creditUser?: number; + // 记录数 + creditXgxf?: number; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 企业搜索条件 + */ +export interface CreditCompanyParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditCompetitor/index.ts b/src/api/credit/creditCompetitor/index.ts new file mode 100644 index 0000000..aca310c --- /dev/null +++ b/src/api/credit/creditCompetitor/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditCompetitor, CreditCompetitorParam } from './model'; + +/** + * 分页查询竞争对手 + */ +export async function pageCreditCompetitor(params: CreditCompetitorParam) { + const res = await request.get>>( + '/credit/credit-competitor/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询竞争对手列表 + */ +export async function listCreditCompetitor(params?: CreditCompetitorParam) { + const res = await request.get>( + '/credit/credit-competitor', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加竞争对手 + */ +export async function addCreditCompetitor(data: CreditCompetitor) { + const res = await request.post>( + '/credit/credit-competitor', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改竞争对手 + */ +export async function updateCreditCompetitor(data: CreditCompetitor) { + const res = await request.put>( + '/credit/credit-competitor', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除竞争对手 + */ +export async function removeCreditCompetitor(id?: number) { + const res = await request.delete>( + '/credit/credit-competitor/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除竞争对手 + */ +export async function removeBatchCreditCompetitor( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-competitor/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询竞争对手 + */ +export async function getCreditCompetitor(id: number) { + const res = await request.get>( + '/credit/credit-competitor/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入竞争对手 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditCompetitor/model/index.ts b/src/api/credit/creditCompetitor/model/index.ts new file mode 100644 index 0000000..adda005 --- /dev/null +++ b/src/api/credit/creditCompetitor/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 竞争对手 + */ +export interface CreditCompetitor { + // 序号 + id?: number; + // 企业名称 + name?: string; + // 法定代表人 + legalRepresentative?: string; + // 注册资本 + registeredCapital?: string; + // 成立日期 + establishmentDate?: string; + // 登记状态 + registrationStatus?: string; + // 所属行业 + industry?: string; + // 所属省份 + province?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 竞争对手搜索条件 + */ +export interface CreditCompetitorParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditCourtAnnouncement/index.ts b/src/api/credit/creditCourtAnnouncement/index.ts new file mode 100644 index 0000000..7d0c5fc --- /dev/null +++ b/src/api/credit/creditCourtAnnouncement/index.ts @@ -0,0 +1,170 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { + CreditCourtAnnouncement, + CreditCourtAnnouncementParam +} from './model'; + +/** + * 分页查询法院公告司法大数据 + */ +export async function pageCreditCourtAnnouncement( + params: CreditCourtAnnouncementParam +) { + const res = await request.get>>( + '/credit/credit-court-announcement/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询法院公告司法大数据列表 + */ +export async function listCreditCourtAnnouncement( + params?: CreditCourtAnnouncementParam +) { + const res = await request.get>( + '/credit/credit-court-announcement', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加法院公告司法大数据 + */ +export async function addCreditCourtAnnouncement( + data: CreditCourtAnnouncement +) { + const res = await request.post>( + '/credit/credit-court-announcement', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改法院公告司法大数据 + */ +export async function updateCreditCourtAnnouncement( + data: CreditCourtAnnouncement +) { + const res = await request.put>( + '/credit/credit-court-announcement', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除法院公告司法大数据 + */ +export async function removeCreditCourtAnnouncement(id?: number) { + const res = await request.delete>( + '/credit/credit-court-announcement/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除法院公告司法大数据 + */ +export async function removeBatchCreditCourtAnnouncement( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-court-announcement/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询法院公告司法大数据 + */ +export async function getCreditCourtAnnouncement(id: number) { + const res = await request.get>( + '/credit/credit-court-announcement/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入法院公告司法大数据 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditCourtAnnouncement/model/index.ts b/src/api/credit/creditCourtAnnouncement/model/index.ts new file mode 100644 index 0000000..4709166 --- /dev/null +++ b/src/api/credit/creditCourtAnnouncement/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 法院公告司法大数据 + */ +export interface CreditCourtAnnouncement { + // ID + id?: number; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 法院公告司法大数据搜索条件 + */ +export interface CreditCourtAnnouncementParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditCourtSession/index.ts b/src/api/credit/creditCourtSession/index.ts new file mode 100644 index 0000000..00ed5cd --- /dev/null +++ b/src/api/credit/creditCourtSession/index.ts @@ -0,0 +1,156 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditCourtSession, CreditCourtSessionParam } from './model'; + +/** + * 分页查询开庭公告司法大数据 + */ +export async function pageCreditCourtSession(params: CreditCourtSessionParam) { + const res = await request.get>>( + '/credit/credit-court-session/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询开庭公告司法大数据列表 + */ +export async function listCreditCourtSession(params?: CreditCourtSessionParam) { + const res = await request.get>( + '/credit/credit-court-session', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加开庭公告司法大数据 + */ +export async function addCreditCourtSession(data: CreditCourtSession) { + const res = await request.post>( + '/credit/credit-court-session', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改开庭公告司法大数据 + */ +export async function updateCreditCourtSession(data: CreditCourtSession) { + const res = await request.put>( + '/credit/credit-court-session', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除开庭公告司法大数据 + */ +export async function removeCreditCourtSession(id?: number) { + const res = await request.delete>( + '/credit/credit-court-session/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除开庭公告司法大数据 + */ +export async function removeBatchCreditCourtSession( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-court-session/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询开庭公告司法大数据 + */ +export async function getCreditCourtSession(id: number) { + const res = await request.get>( + '/credit/credit-court-session/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入开庭公告司法大数据 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditCourtSession/model/index.ts b/src/api/credit/creditCourtSession/model/index.ts new file mode 100644 index 0000000..1c9c2cf --- /dev/null +++ b/src/api/credit/creditCourtSession/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 开庭公告司法大数据 + */ +export interface CreditCourtSession { + // ID + id?: number; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 法院 + courtName?: string; + // 发生时间 + occurrenceTime?: string; + // 数据类型 + // dataType?: string; + // 原告/上诉人 + // plaintiffAppellant?: string; + // 被告/被上诉人 + // appellee?: string; + // 链接地址 + url?: string; + // 涉案金额 + // involvedAmount?: string; + // 数据状态 + // dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 开庭公告司法大数据搜索条件 + */ +export interface CreditCourtSessionParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditCustomer/index.ts b/src/api/credit/creditCustomer/index.ts new file mode 100644 index 0000000..0745ced --- /dev/null +++ b/src/api/credit/creditCustomer/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditCustomer, CreditCustomerParam } from './model'; + +/** + * 分页查询客户 + */ +export async function pageCreditCustomer(params: CreditCustomerParam) { + const res = await request.get>>( + '/credit/credit-customer/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询客户列表 + */ +export async function listCreditCustomer(params?: CreditCustomerParam) { + const res = await request.get>( + '/credit/credit-customer', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加客户 + */ +export async function addCreditCustomer(data: CreditCustomer) { + const res = await request.post>( + '/credit/credit-customer', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改客户 + */ +export async function updateCreditCustomer(data: CreditCustomer) { + const res = await request.put>( + '/credit/credit-customer', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除客户 + */ +export async function removeCreditCustomer(id?: number) { + const res = await request.delete>( + '/credit/credit-customer/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除客户 + */ +export async function removeBatchCreditCustomer(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-customer/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询客户 + */ +export async function getCreditCustomer(id: number) { + const res = await request.get>( + '/credit/credit-customer/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入客户 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditCustomer/model/index.ts b/src/api/credit/creditCustomer/model/index.ts new file mode 100644 index 0000000..6c20315 --- /dev/null +++ b/src/api/credit/creditCustomer/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 客户 + */ +export interface CreditCustomer { + // ID + id?: number; + // 客户 + name?: string; + // 状态 + statusTxt?: string; + // 销售金额(万元) + price?: string; + // 公开日期 + publicDate?: string; + // 数据来源 + dataSource?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 客户搜索条件 + */ +export interface CreditCustomerParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditDeliveryNotice/index.ts b/src/api/credit/creditDeliveryNotice/index.ts new file mode 100644 index 0000000..4dc53b6 --- /dev/null +++ b/src/api/credit/creditDeliveryNotice/index.ts @@ -0,0 +1,163 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditDeliveryNotice, CreditDeliveryNoticeParam } from './model'; + +/** + * 分页查询送达公告司法大数据 + */ +export async function pageCreditDeliveryNotice( + params: CreditDeliveryNoticeParam +) { + const res = await request.get>>( + '/credit/credit-delivery-notice/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询送达公告司法大数据列表 + */ +export async function listCreditDeliveryNotice( + params?: CreditDeliveryNoticeParam +) { + const res = await request.get>( + '/credit/credit-delivery-notice', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加送达公告司法大数据 + */ +export async function addCreditDeliveryNotice(data: CreditDeliveryNotice) { + const res = await request.post>( + '/credit/credit-delivery-notice', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改送达公告司法大数据 + */ +export async function updateCreditDeliveryNotice(data: CreditDeliveryNotice) { + const res = await request.put>( + '/credit/credit-delivery-notice', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除送达公告司法大数据 + */ +export async function removeCreditDeliveryNotice(id?: number) { + const res = await request.delete>( + '/credit/credit-delivery-notice/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除送达公告司法大数据 + */ +export async function removeBatchCreditDeliveryNotice( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-delivery-notice/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询送达公告司法大数据 + */ +export async function getCreditDeliveryNotice(id: number) { + const res = await request.get>( + '/credit/credit-delivery-notice/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入送达公告司法大数据 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入历史送达公告司法大数据 + */ +export async function importCreditDeliveryNoticeHistory( + 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/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)); +} diff --git a/src/api/credit/creditDeliveryNotice/model/index.ts b/src/api/credit/creditDeliveryNotice/model/index.ts new file mode 100644 index 0000000..09d0847 --- /dev/null +++ b/src/api/credit/creditDeliveryNotice/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 送达公告司法大数据 + */ +export interface CreditDeliveryNotice { + // ID + id?: number; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 送达公告司法大数据搜索条件 + */ +export interface CreditDeliveryNoticeParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditExternal/index.ts b/src/api/credit/creditExternal/index.ts new file mode 100644 index 0000000..9bb70d0 --- /dev/null +++ b/src/api/credit/creditExternal/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditExternal, CreditExternalParam } from './model'; + +/** + * 分页查询对外投资 + */ +export async function pageCreditExternal(params: CreditExternalParam) { + const res = await request.get>>( + '/credit/credit-external/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询对外投资列表 + */ +export async function listCreditExternal(params?: CreditExternalParam) { + const res = await request.get>( + '/credit/credit-external', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加对外投资 + */ +export async function addCreditExternal(data: CreditExternal) { + const res = await request.post>( + '/credit/credit-external', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改对外投资 + */ +export async function updateCreditExternal(data: CreditExternal) { + const res = await request.put>( + '/credit/credit-external', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除对外投资 + */ +export async function removeCreditExternal(id?: number) { + const res = await request.delete>( + '/credit/credit-external/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除对外投资 + */ +export async function removeBatchCreditExternal(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-external/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询对外投资 + */ +export async function getCreditExternal(id: number) { + const res = await request.get>( + '/credit/credit-external/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入对外投资 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditExternal/model/index.ts b/src/api/credit/creditExternal/model/index.ts new file mode 100644 index 0000000..1a3ff7d --- /dev/null +++ b/src/api/credit/creditExternal/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 对外投资 + */ +export interface CreditExternal { + // ID + id?: number; + // 被投资企业名称 + name?: string; + // 企业状态(如存续、注销等) + statusTxt?: string; + // 法定代表人姓名 + legalRepresentative?: string; + // 注册资本(金额) + registeredCapital?: string; + // 成立日期 + establishmentDate?: string; + // 持股比例 + shareholdingRatio?: string; + // 认缴出资额 + subscribedInvestmentAmount?: string; + // 认缴出资日期 + subscribedInvestmentDate?: string; + // 间接持股比例 + indirectShareholdingRatio?: string; + // 投资日期 + investmentDate?: string; + // 所属地区 + region?: string; + // 所属行业 + industry?: string; + // 投资数量 + investmentCount?: number; + // 关联产品/机构 + relatedProductsInstitutions?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 对外投资搜索条件 + */ +export interface CreditExternalParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditFinalVersion/index.ts b/src/api/credit/creditFinalVersion/index.ts new file mode 100644 index 0000000..f913b96 --- /dev/null +++ b/src/api/credit/creditFinalVersion/index.ts @@ -0,0 +1,156 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditFinalVersion, CreditFinalVersionParam } from './model'; + +/** + * 分页查询终本案件 + */ +export async function pageCreditFinalVersion(params: CreditFinalVersionParam) { + const res = await request.get>>( + '/credit/credit-final-version/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询终本案件列表 + */ +export async function listCreditFinalVersion(params?: CreditFinalVersionParam) { + const res = await request.get>( + '/credit/credit-final-version', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加终本案件 + */ +export async function addCreditFinalVersion(data: CreditFinalVersion) { + const res = await request.post>( + '/credit/credit-final-version', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改终本案件 + */ +export async function updateCreditFinalVersion(data: CreditFinalVersion) { + const res = await request.put>( + '/credit/credit-final-version', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除终本案件 + */ +export async function removeCreditFinalVersion(id?: number) { + const res = await request.delete>( + '/credit/credit-final-version/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除终本案件 + */ +export async function removeBatchCreditFinalVersion( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-final-version/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询终本案件 + */ +export async function getCreditFinalVersion(id: number) { + const res = await request.get>( + '/credit/credit-final-version/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入终本案件 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditFinalVersion/model/index.ts b/src/api/credit/creditFinalVersion/model/index.ts new file mode 100644 index 0000000..00d0409 --- /dev/null +++ b/src/api/credit/creditFinalVersion/model/index.ts @@ -0,0 +1,48 @@ +import type { PageParam } from '@/api'; + +/** + * 终本案件 + */ +export interface CreditFinalVersion { + // ID + id?: number; + // 案号 + caseNumber?: string; + appellee?: string; + plaintiffAppellant?: string; + unfulfilledAmount?: string; + involvedAmount?: string; + courtName?: string; + occurrenceTime?: string; + finalDate?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 终本案件搜索条件 + */ +export interface CreditFinalVersionParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditGqdj/index.ts b/src/api/credit/creditGqdj/index.ts new file mode 100644 index 0000000..f4b1487 --- /dev/null +++ b/src/api/credit/creditGqdj/index.ts @@ -0,0 +1,151 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditGqdj, CreditGqdjParam } from './model'; + +/** + * 分页查询股权冻结 + */ +export async function pageCreditGqdj(params: CreditGqdjParam) { + const res = await request.get>>( + '/credit/credit-gqdj/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询股权冻结列表 + */ +export async function listCreditGqdj(params?: CreditGqdjParam) { + const res = await request.get>( + '/credit/credit-gqdj', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加股权冻结 + */ +export async function addCreditGqdj(data: CreditGqdj) { + const res = await request.post>( + '/credit/credit-gqdj', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改股权冻结 + */ +export async function updateCreditGqdj(data: CreditGqdj) { + const res = await request.put>( + '/credit/credit-gqdj', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除股权冻结 + */ +export async function removeCreditGqdj(id?: number) { + const res = await request.delete>( + '/credit/credit-gqdj/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除股权冻结 + */ +export async function removeBatchCreditGqdj(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-gqdj/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询股权冻结 + */ +export async function getCreditGqdj(id: number) { + const res = await request.get>( + '/credit/credit-gqdj/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入股权冻结 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditGqdj/model/index.ts b/src/api/credit/creditGqdj/model/index.ts new file mode 100644 index 0000000..2bf49db --- /dev/null +++ b/src/api/credit/creditGqdj/model/index.ts @@ -0,0 +1,65 @@ +import type { PageParam } from '@/api'; + +/** + * 股权冻结 + */ +export interface CreditGqdj { + // ID + id?: number; + // 执行通知文书号 + caseNumber?: string; + // 被执行人 + appellee?: string; + // 冻结股权标的企业 + plaintiffAppellant?: string; + // 被执行人持有股权、其他投资权益数额 + involvedAmount?: string; + // 执行法院 + courtName?: string; + // 类型 + dataType?: string; + // 状态 + dataStatus?: string; + // 冻结日期自 + freezeDateStart?: string; + // 冻结日期至 + freezeDateEnd?: string; + // 公示日期 + publicDate?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案由 + causeOfAction?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 股权冻结搜索条件 + */ +export interface CreditGqdjParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditHistoricalLegalPerson/index.ts b/src/api/credit/creditHistoricalLegalPerson/index.ts new file mode 100644 index 0000000..bdb3bd2 --- /dev/null +++ b/src/api/credit/creditHistoricalLegalPerson/index.ts @@ -0,0 +1,144 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { + CreditHistoricalLegalPerson, + CreditHistoricalLegalPersonParam +} from './model'; + +/** + * 分页查询历史法定代表人 + */ +export async function pageCreditHistoricalLegalPerson( + params: CreditHistoricalLegalPersonParam +) { + const res = await request.get< + ApiResult> + >('/credit/credit-historical-legal-person/page', { + params: withCreditUserScope(params) + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询历史法定代表人列表 + */ +export async function listCreditHistoricalLegalPerson( + params?: CreditHistoricalLegalPersonParam +) { + const res = await request.get>( + '/credit/credit-historical-legal-person', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加历史法定代表人 + */ +export async function addCreditHistoricalLegalPerson( + data: CreditHistoricalLegalPerson +) { + const res = await request.post>( + '/credit/credit-historical-legal-person', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改历史法定代表人 + */ +export async function updateCreditHistoricalLegalPerson( + data: CreditHistoricalLegalPerson +) { + const res = await request.put>( + '/credit/credit-historical-legal-person', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除历史法定代表人 + */ +export async function removeCreditHistoricalLegalPerson(id?: number) { + const res = await request.delete>( + '/credit/credit-historical-legal-person/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除历史法定代表人 + */ +export async function removeBatchCreditHistoricalLegalPerson( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-historical-legal-person/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询历史法定代表人 + */ +export async function getCreditHistoricalLegalPerson(id: number) { + const res = await request.get>( + '/credit/credit-historical-legal-person/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入历史法定代表人 + */ +export async function importCreditHistoricalLegalPerson( + 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-historical-legal-person/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)); +} diff --git a/src/api/credit/creditHistoricalLegalPerson/model/index.ts b/src/api/credit/creditHistoricalLegalPerson/model/index.ts new file mode 100644 index 0000000..55aec6b --- /dev/null +++ b/src/api/credit/creditHistoricalLegalPerson/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 历史法定代表人 + */ +export interface CreditHistoricalLegalPerson { + // ID + id?: number; + // 名称 + name?: string; + // 任职日期 + registerDate?: string; + // 卸任日期 + publicDate?: string; + // 链接 + url?: string; + // 备注 + comments?: string; + // 企业ID + companyId?: number; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 历史法定代表人搜索条件 + */ +export interface CreditHistoricalLegalPersonParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditJudgmentDebtor/index.ts b/src/api/credit/creditJudgmentDebtor/index.ts new file mode 100644 index 0000000..b280c13 --- /dev/null +++ b/src/api/credit/creditJudgmentDebtor/index.ts @@ -0,0 +1,185 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditJudgmentDebtor, CreditJudgmentDebtorParam } from './model'; + +/** + * 分页查询被执行人 + */ +export async function pageCreditJudgmentDebtor( + params: CreditJudgmentDebtorParam +) { + const res = await request.get>>( + '/credit/credit-judgment-debtor/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询被执行人列表 + */ +export async function listCreditJudgmentDebtor( + params?: CreditJudgmentDebtorParam +) { + const res = await request.get>( + '/credit/credit-judgment-debtor', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加被执行人 + */ +export async function addCreditJudgmentDebtor(data: CreditJudgmentDebtor) { + const res = await request.post>( + '/credit/credit-judgment-debtor', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改被执行人 + */ +export async function updateCreditJudgmentDebtor(data: CreditJudgmentDebtor) { + const res = await request.put>( + '/credit/credit-judgment-debtor', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除被执行人 + */ +export async function removeCreditJudgmentDebtor(id?: number) { + const res = await request.delete>( + '/credit/credit-judgment-debtor/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除被执行人 + */ +export async function removeBatchCreditJudgmentDebtor( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-judgment-debtor/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询被执行人 + */ +export async function getCreditJudgmentDebtor(id: number) { + const res = await request.get>( + '/credit/credit-judgment-debtor/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入被执行人 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入历史被执行人 + */ +export async function importCreditJudgmentDebtorHistory( + 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/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)); +} + +/** + * 修正被执行人主体企业归属(按企业名称匹配回填 companyId) + * + * 后端: POST /api/credit/credit-judgment-debtor/company-id/refresh + * - onlyNull: 默认 true,仅更新 companyId 为空的数据 + * - limit: 可选,限制处理条数 + */ +export async function refreshCreditJudgmentDebtorCompanyId(params?: { + onlyNull?: boolean; + limit?: number; +}) { + const res = await request.post>( + '/credit/credit-judgment-debtor/company-id/refresh', + undefined, + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditJudgmentDebtor/model/index.ts b/src/api/credit/creditJudgmentDebtor/model/index.ts new file mode 100644 index 0000000..54bd07b --- /dev/null +++ b/src/api/credit/creditJudgmentDebtor/model/index.ts @@ -0,0 +1,65 @@ +import type { PageParam } from '@/api'; + +/** + * 被执行人 + */ +export interface CreditJudgmentDebtor { + // ID + id?: number; + // 案号 + caseNumber?: string; + // + name?: string; + // 证件号/组织机构代码 + code?: string; + // 链接地址 + url?: string; + // 立案日期 + occurrenceTime?: string; + // 执行标的(元) + amount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 真实姓名 + realName?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 历史ID + historyId?: number; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 被执行人名称 + name1?: string; +} + +/** + * 被执行人搜索条件 + */ +export interface CreditJudgmentDebtorParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditJudicialDocument/index.ts b/src/api/credit/creditJudicialDocument/index.ts new file mode 100644 index 0000000..cc5f15c --- /dev/null +++ b/src/api/credit/creditJudicialDocument/index.ts @@ -0,0 +1,168 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { + CreditJudicialDocument, + CreditJudicialDocumentParam +} from './model'; + +/** + * 分页查询裁判文书司法大数据 + */ +export async function pageCreditJudicialDocument( + params: CreditJudicialDocumentParam +) { + const res = await request.get>>( + '/credit/credit-judicial-document/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询裁判文书司法大数据列表 + */ +export async function listCreditJudicialDocument( + params?: CreditJudicialDocumentParam +) { + const res = await request.get>( + '/credit/credit-judicial-document', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加裁判文书司法大数据 + */ +export async function addCreditJudicialDocument(data: CreditJudicialDocument) { + const res = await request.post>( + '/credit/credit-judicial-document', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改裁判文书司法大数据 + */ +export async function updateCreditJudicialDocument( + data: CreditJudicialDocument +) { + const res = await request.put>( + '/credit/credit-judicial-document', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除裁判文书司法大数据 + */ +export async function removeCreditJudicialDocument(id?: number) { + const res = await request.delete>( + '/credit/credit-judicial-document/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除裁判文书司法大数据 + */ +export async function removeBatchCreditJudicialDocument( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-judicial-document/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询裁判文书司法大数据 + */ +export async function getCreditJudicialDocument(id: number) { + const res = await request.get>( + '/credit/credit-judicial-document/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入裁判文书司法大数据 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditJudicialDocument/model/index.ts b/src/api/credit/creditJudicialDocument/model/index.ts new file mode 100644 index 0000000..2323d85 --- /dev/null +++ b/src/api/credit/creditJudicialDocument/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 裁判文书司法大数据 + */ +export interface CreditJudicialDocument { + // ID + id?: number; + // 文书标题 + title?: string; + // 文书类型 + documentType?: string; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 发布日期 + releaseDate?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 被告/被上诉人 + defendantAppellee?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 裁判文书司法大数据搜索条件 + */ +export interface CreditJudicialDocumentParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditJudiciary/index.ts b/src/api/credit/creditJudiciary/index.ts new file mode 100644 index 0000000..6b4d2b3 --- /dev/null +++ b/src/api/credit/creditJudiciary/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditJudiciary, CreditJudiciaryParam } from './model'; + +/** + * 分页查询司法案件 + */ +export async function pageCreditJudiciary(params: CreditJudiciaryParam) { + const res = await request.get>>( + '/credit/credit-judiciary/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询司法案件列表 + */ +export async function listCreditJudiciary(params?: CreditJudiciaryParam) { + const res = await request.get>( + '/credit/credit-judiciary', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加司法案件 + */ +export async function addCreditJudiciary(data: CreditJudiciary) { + const res = await request.post>( + '/credit/credit-judiciary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改司法案件 + */ +export async function updateCreditJudiciary(data: CreditJudiciary) { + const res = await request.put>( + '/credit/credit-judiciary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除司法案件 + */ +export async function removeCreditJudiciary(id?: number) { + const res = await request.delete>( + '/credit/credit-judiciary/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除司法案件 + */ +export async function removeBatchCreditJudiciary(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-judiciary/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询司法案件 + */ +export async function getCreditJudiciary(id: number) { + const res = await request.get>( + '/credit/credit-judiciary/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入司法案件 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditJudiciary/model/index.ts b/src/api/credit/creditJudiciary/model/index.ts new file mode 100644 index 0000000..e0c9f96 --- /dev/null +++ b/src/api/credit/creditJudiciary/model/index.ts @@ -0,0 +1,73 @@ +import type { PageParam } from '@/api'; + +/** + * 司法案件 + */ +export interface CreditJudiciary { + // ID + id?: number; + // 案件名称 + name?: string; + // 案号 + code?: string; + // 链接地址 + url?: string; + // 类型, 0普通用户, 1招投标 + type?: number; + // 案由 + reason?: string; + // 上级id, 0是顶级 + parentId?: number; + // 案件类型 + infoType?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 案件进程 + caseProgress?: string; + // 案件身份 + caseIdentity?: string; + // 法院 + court?: string; + // 进程日期 + processDate?: string; + // 案件金额(元) + caseAmount?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 到期时间 + expirationTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 司法案件搜索条件 + */ +export interface CreditJudiciaryParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditMediation/index.ts b/src/api/credit/creditMediation/index.ts new file mode 100644 index 0000000..1904008 --- /dev/null +++ b/src/api/credit/creditMediation/index.ts @@ -0,0 +1,154 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditMediation, CreditMediationParam } from './model'; + +/** + * 分页查询诉前调解司法大数据 + */ +export async function pageCreditMediation(params: CreditMediationParam) { + const res = await request.get>>( + '/credit/credit-mediation/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询诉前调解司法大数据列表 + */ +export async function listCreditMediation(params?: CreditMediationParam) { + const res = await request.get>( + '/credit/credit-mediation', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加诉前调解司法大数据 + */ +export async function addCreditMediation(data: CreditMediation) { + const res = await request.post>( + '/credit/credit-mediation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改诉前调解司法大数据 + */ +export async function updateCreditMediation(data: CreditMediation) { + const res = await request.put>( + '/credit/credit-mediation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除诉前调解司法大数据 + */ +export async function removeCreditMediation(id?: number) { + const res = await request.delete>( + '/credit/credit-mediation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除诉前调解司法大数据 + */ +export async function removeBatchCreditMediation(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-mediation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询诉前调解司法大数据 + */ +export async function getCreditMediation(id: number) { + const res = await request.get>( + '/credit/credit-mediation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入诉前调解司法大数据 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入历史诉前调解司法大数据 + */ +export async function importCreditMediationHistory( + 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/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)); +} diff --git a/src/api/credit/creditMediation/model/index.ts b/src/api/credit/creditMediation/model/index.ts new file mode 100644 index 0000000..f0797cf --- /dev/null +++ b/src/api/credit/creditMediation/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 诉前调解司法大数据 + */ +export interface CreditMediation { + // ID + id?: number; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 诉前调解司法大数据搜索条件 + */ +export interface CreditMediationParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditNearbyCompany/index.ts b/src/api/credit/creditNearbyCompany/index.ts new file mode 100644 index 0000000..3516e21 --- /dev/null +++ b/src/api/credit/creditNearbyCompany/index.ts @@ -0,0 +1,233 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditNearbyCompany, CreditNearbyCompanyParam } from './model'; + +/** + * 分页查询附近企业 + */ +export async function pageCreditNearbyCompany( + params: CreditNearbyCompanyParam +) { + const res = await request.get>>( + '/credit/credit-nearby-company/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询附近企业列表 + */ +export async function listCreditNearbyCompany( + params?: CreditNearbyCompanyParam +) { + const res = await request.get>( + '/credit/credit-nearby-company', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加附近企业 + */ +export async function addCreditNearbyCompany(data: CreditNearbyCompany) { + const res = await request.post>( + '/credit/credit-nearby-company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改附近企业 + */ +export async function updateCreditNearbyCompany(data: CreditNearbyCompany) { + const res = await request.put>( + '/credit/credit-nearby-company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除附近企业 + */ +export async function removeCreditNearbyCompany(id?: number) { + const res = await request.delete>( + '/credit/credit-nearby-company/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除附近企业 + */ +export async function removeBatchCreditNearbyCompany( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-nearby-company/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询附近企业 + */ +export async function getCreditNearbyCompany(id: number) { + const res = await request.get>( + '/credit/credit-nearby-company/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入附近企业 + */ +export async function importCreditNearbyCompany( + file: File, + companyId?: number +) { + const formData = buildImportFormData(file, companyId); + const res = await request.post>( + '/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)); +} + +/** + * 导入附近企业(多文件,同一次请求) + * + * 约定:后端需支持 multipart 同名字段 `file` 多次出现(常见于 MultipartFile[] file) + */ +export async function importCreditNearbyCompanyMulti( + files: File[] | FileList, + companyId?: number +) { + const formData = buildImportFormData(files, companyId); + const res = await request.post>( + '/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; + message: string; +} + +export interface ImportBatchCreditNearbyCompanyResult { + total: number; + success: number; + failure: number; + items: ImportBatchCreditNearbyCompanyItem[]; +} + +/** + * 导入附近企业(多文件) + * + * 说明: + * - 目前复用单文件导入接口,前端循环调用实现“多文件导入” + * - 不会在有失败时 reject(便于上层展示部分成功/失败明细) + */ +export async function importBatchCreditNearbyCompany( + files: File[] | FileList, + companyId?: number, + options?: { + /** 遇到失败是否立即停止,默认 false(继续导入后续文件) */ + stopOnError?: boolean; + } +): Promise { + const list = Array.isArray(files) ? files : Array.from(files); + const items: ImportBatchCreditNearbyCompanyItem[] = []; + const stopOnError = options?.stopOnError ?? false; + + for (const file of list) { + try { + const msg = await importCreditNearbyCompany(file, companyId); + items.push({ fileName: file.name, success: true, message: msg }); + } catch (e: unknown) { + items.push({ + fileName: file.name, + success: false, + message: e instanceof Error ? e.message : String(e) + }); + if (stopOnError) { + break; + } + } + } + + const success = items.filter((d) => d.success).length; + const failure = items.length - success; + return { + total: list.length, + success, + failure, + items + }; +} diff --git a/src/api/credit/creditNearbyCompany/model/index.ts b/src/api/credit/creditNearbyCompany/model/index.ts new file mode 100644 index 0000000..2cd7aea --- /dev/null +++ b/src/api/credit/creditNearbyCompany/model/index.ts @@ -0,0 +1,143 @@ +import type { PageParam } from '@/api'; + +/** + * 附近企业 + */ +export interface CreditNearbyCompany { + // ID + id?: number; + // 企业名称 + name?: string; + // 登记状态 + registrationStatus?: string; + // 法定代表人 + legalPerson?: string; + // 注册资本 + registeredCapital?: string; + // 成立日期 + establishDate?: string; + // 统一社会信用代码 + code?: string; + // 注册地址 + address?: string; + // 注册地址邮编 + postalCode?: string; + // 有效手机号 + phone?: string; + // 更多电话 + moreTel?: string; + // 邮箱 + email?: string; + // 邮箱 + moreEmail?: string; + // 所在国家 + country?: string; + // 所属省份 + province?: string; + // 所属城市 + city?: string; + // 所属区县 + region?: string; + // 纳税人识别号 + taxpayerCode?: string; + // 注册号 + registrationNumber?: string; + // 组织机构代码 + organizationalCode?: string; + // 参保人数 + numberOfInsuredPersons?: string; + // 参保人数所属年报 + annualReport?: string; + // 企业(机构)类型 + institutionType?: string; + // 企业规模 + companySize?: string; + // 营业期限 + businessTerm?: string; + // 国标行业门类 + nationalStandardIndustryCategories?: string; + // 国标行业大类 + nationalStandardIndustryCategories2?: string; + // 国标行业中类 + nationalStandardIndustryCategories3?: string; + // 国标行业小类 + nationalStandardIndustryCategories4?: string; + // 曾用名 + formerName?: string; + // 英文名 + englishName?: string; + // 官网网址 + domain?: string; + // 通信地址 + mailingAddress?: string; + // 通信地址邮箱 + mailingEmail?: string; + // 企业简介 + companyProfile?: string; + // 经营范围 + natureOfBusiness?: string; + // 电话 + tel?: string; + // 企查查行业门类 + nationalStandardIndustryCategories5?: string; + // 企查查行业大类 + nationalStandardIndustryCategories6?: string; + // 企查查行业中类 + nationalStandardIndustryCategories7?: string; + // 企查查行业小类 + nationalStandardIndustryCategories8?: string; + // 链接 + url?: string; + // 类型 + type?: number; + // 上级id, 0是顶级 + parentId?: number; + // 实缴资本 + paidinCapital?: string; + // 登记机关 + registrationAuthority?: string; + // 纳税人资质 + taxpayerQualification?: string; + // 最新年报年份 + latestAnnualReportYear?: string; + // 最新年报营业收入 + latestAnnualReportOnOperatingRevenue?: string; + // 企查分 + enterpriseScoreCheck?: string; + // 信用等级 + creditRating?: string; + // 科创分 + cechnologyScore?: string; + // 科创等级 + cechnologyLevel?: string; + // 是否小微企业 + smallEnterprise?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 附近企业搜索条件 + */ +export interface CreditNearbyCompanyParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditPatent/index.ts b/src/api/credit/creditPatent/index.ts new file mode 100644 index 0000000..3f8aca6 --- /dev/null +++ b/src/api/credit/creditPatent/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditPatent, CreditPatentParam } from './model'; + +/** + * 分页查询专利 + */ +export async function pageCreditPatent(params: CreditPatentParam) { + const res = await request.get>>( + '/credit/credit-patent/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询专利列表 + */ +export async function listCreditPatent(params?: CreditPatentParam) { + const res = await request.get>( + '/credit/credit-patent', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加专利 + */ +export async function addCreditPatent(data: CreditPatent) { + const res = await request.post>( + '/credit/credit-patent', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改专利 + */ +export async function updateCreditPatent(data: CreditPatent) { + const res = await request.put>( + '/credit/credit-patent', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除专利 + */ +export async function removeCreditPatent(id?: number) { + const res = await request.delete>( + '/credit/credit-patent/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除专利 + */ +export async function removeBatchCreditPatent(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-patent/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询专利 + */ +export async function getCreditPatent(id: number) { + const res = await request.get>( + '/credit/credit-patent/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入专利 + */ +export async function importCreditPatent(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-patent/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)); +} diff --git a/src/api/credit/creditPatent/model/index.ts b/src/api/credit/creditPatent/model/index.ts new file mode 100644 index 0000000..33fce47 --- /dev/null +++ b/src/api/credit/creditPatent/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 专利 + */ +export interface CreditPatent { + // ID + id?: number; + // 发明名称 + name?: string; + // 专利类型 + type?: string; + // 法律状态 + statusText?: string; + // 申请号 + registerNo?: string; + // 申请日 + registerDate?: string; + // 公开(公告)号 + publicNo?: string; + // 公开(公告)日期 + publicDate?: string; + // 发明人 + inventor?: string; + // 申请(专利权)人 + patentApplicant?: string; + // 链接 + url?: string; + // 备注 + comments?: string; + // 企业ID + companyId?: number; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 专利搜索条件 + */ +export interface CreditPatentParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditProject/index.ts b/src/api/credit/creditProject/index.ts new file mode 100644 index 0000000..6df7818 --- /dev/null +++ b/src/api/credit/creditProject/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditProject, CreditProjectParam } from './model'; + +/** + * 分页查询招投标 + */ +export async function pageCreditProject(params: CreditProjectParam) { + const res = await request.get>>( + '/credit/credit-project/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询招投标列表 + */ +export async function listCreditProject(params?: CreditProjectParam) { + const res = await request.get>( + '/credit/credit-project', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加招投标 + */ +export async function addCreditProject(data: CreditProject) { + const res = await request.post>( + '/credit/credit-project', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改招投标 + */ +export async function updateCreditProject(data: CreditProject) { + const res = await request.put>( + '/credit/credit-project', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除招投标 + */ +export async function removeCreditProject(id?: number) { + const res = await request.delete>( + '/credit/credit-project/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除招投标 + */ +export async function removeBatchCreditProject(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-project/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询招投标 + */ +export async function getCreditProject(id: number) { + const res = await request.get>( + '/credit/credit-project/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入招投标 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditProject/model/index.ts b/src/api/credit/creditProject/model/index.ts new file mode 100644 index 0000000..f3f0880 --- /dev/null +++ b/src/api/credit/creditProject/model/index.ts @@ -0,0 +1,71 @@ +import type { PageParam } from '@/api'; + +/** + * 招投标 + */ +export interface CreditProject { + // ID + id?: number; + // 项目名称 + name?: string; + // 唯一标识 + code?: string; + // 链接地址 + url?: string; + // 类型, 0普通用户, 1招投标 + type?: number; + // 企业角色 + role?: string; + // 上级id, 0是顶级 + parentId?: number; + // 信息类型 + infoType?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 招采单位名称 + procurementName?: string; + // 中标单位名称 + winningName?: string; + // 中标金额 + winningPrice?: string; + // 发布日期 + releaseDate?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 到期时间 + expirationTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 招投标搜索条件 + */ +export interface CreditProjectParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditRiskRelation/index.ts b/src/api/credit/creditRiskRelation/index.ts new file mode 100644 index 0000000..a291141 --- /dev/null +++ b/src/api/credit/creditRiskRelation/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditRiskRelation, CreditRiskRelationParam } from './model'; + +/** + * 分页查询风险关系表 + */ +export async function pageCreditRiskRelation(params: CreditRiskRelationParam) { + const res = await request.get>>( + '/credit/credit-risk-relation/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询风险关系表列表 + */ +export async function listCreditRiskRelation(params?: CreditRiskRelationParam) { + const res = await request.get>( + '/credit/credit-risk-relation', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加风险关系表 + */ +export async function addCreditRiskRelation(data: CreditRiskRelation) { + const res = await request.post>( + '/credit/credit-risk-relation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改风险关系表 + */ +export async function updateCreditRiskRelation(data: CreditRiskRelation) { + const res = await request.put>( + '/credit/credit-risk-relation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除风险关系表 + */ +export async function removeCreditRiskRelation(id?: number) { + const res = await request.delete>( + '/credit/credit-risk-relation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除风险关系表 + */ +export async function removeBatchCreditRiskRelation( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-risk-relation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询风险关系表 + */ +export async function getCreditRiskRelation(id: number) { + const res = await request.get>( + '/credit/credit-risk-relation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入风险关系表 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditRiskRelation/model/index.ts b/src/api/credit/creditRiskRelation/model/index.ts new file mode 100644 index 0000000..b6b4132 --- /dev/null +++ b/src/api/credit/creditRiskRelation/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 风险关系表 + */ +export interface CreditRiskRelation { + // 序号 + id?: number; + // 主体名称 + mainBodyName?: string; + // 登记状态 + registrationStatus?: string; + // 注册资本 + registeredCapital?: string; + // 省份地区 + provinceRegion?: string; + // 关联关系 + associatedRelation?: string; + // 风险关系 + riskRelation?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 风险关系表搜索条件 + */ +export interface CreditRiskRelationParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditSupplier/index.ts b/src/api/credit/creditSupplier/index.ts new file mode 100644 index 0000000..5d394aa --- /dev/null +++ b/src/api/credit/creditSupplier/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditSupplier, CreditSupplierParam } from './model'; + +/** + * 分页查询供应商 + */ +export async function pageCreditSupplier(params: CreditSupplierParam) { + const res = await request.get>>( + '/credit/credit-supplier/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询供应商列表 + */ +export async function listCreditSupplier(params?: CreditSupplierParam) { + const res = await request.get>( + '/credit/credit-supplier', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加供应商 + */ +export async function addCreditSupplier(data: CreditSupplier) { + const res = await request.post>( + '/credit/credit-supplier', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改供应商 + */ +export async function updateCreditSupplier(data: CreditSupplier) { + const res = await request.put>( + '/credit/credit-supplier', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除供应商 + */ +export async function removeCreditSupplier(id?: number) { + const res = await request.delete>( + '/credit/credit-supplier/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除供应商 + */ +export async function removeBatchCreditSupplier(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-supplier/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询供应商 + */ +export async function getCreditSupplier(id: number) { + const res = await request.get>( + '/credit/credit-supplier/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入供应商 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/credit/creditSupplier/model/index.ts b/src/api/credit/creditSupplier/model/index.ts new file mode 100644 index 0000000..9362142 --- /dev/null +++ b/src/api/credit/creditSupplier/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 供应商 + */ +export interface CreditSupplier { + // ID + id?: number; + // 供应商 + supplier?: string; + // 状态 + statusTxt?: string; + // 采购金额(万元) + purchaseAmount?: string; + // 公开日期 + publicDate?: string; + // 数据来源 + dataSource?: string; + // 链接地址 + url?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 供应商搜索条件 + */ +export interface CreditSupplierParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditSuspectedRelationship/index.ts b/src/api/credit/creditSuspectedRelationship/index.ts new file mode 100644 index 0000000..5a07517 --- /dev/null +++ b/src/api/credit/creditSuspectedRelationship/index.ts @@ -0,0 +1,144 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { + CreditSuspectedRelationship, + CreditSuspectedRelationshipParam +} from './model'; + +/** + * 分页查询疑似关系 + */ +export async function pageCreditSuspectedRelationship( + params: CreditSuspectedRelationshipParam +) { + const res = await request.get< + ApiResult> + >('/credit/credit-suspected-relationship/page', { + params: withCreditUserScope(params) + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询疑似关系列表 + */ +export async function listCreditSuspectedRelationship( + params?: CreditSuspectedRelationshipParam +) { + const res = await request.get>( + '/credit/credit-suspected-relationship', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加疑似关系 + */ +export async function addCreditSuspectedRelationship( + data: CreditSuspectedRelationship +) { + const res = await request.post>( + '/credit/credit-suspected-relationship', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改疑似关系 + */ +export async function updateCreditSuspectedRelationship( + data: CreditSuspectedRelationship +) { + const res = await request.put>( + '/credit/credit-suspected-relationship', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除疑似关系 + */ +export async function removeCreditSuspectedRelationship(id?: number) { + const res = await request.delete>( + '/credit/credit-suspected-relationship/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除疑似关系 + */ +export async function removeBatchCreditSuspectedRelationship( + data: (number | undefined)[] +) { + const res = await request.delete>( + '/credit/credit-suspected-relationship/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询疑似关系 + */ +export async function getCreditSuspectedRelationship(id: number) { + const res = await request.get>( + '/credit/credit-suspected-relationship/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入疑似关系 + */ +export async function importCreditSuspectedRelationship( + 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-suspected-relationship/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)); +} diff --git a/src/api/credit/creditSuspectedRelationship/model/index.ts b/src/api/credit/creditSuspectedRelationship/model/index.ts new file mode 100644 index 0000000..8c1d620 --- /dev/null +++ b/src/api/credit/creditSuspectedRelationship/model/index.ts @@ -0,0 +1,57 @@ +import type { PageParam } from '@/api'; + +/** + * 疑似关系 + */ +export interface CreditSuspectedRelationship { + // ID + id?: number; + // 企业名称 + name?: string; + // 状态 + statusText?: string; + // 法定代表人 + legalPerson?: string; + // 注册资本 + registeredCapital?: string; + // 成立日期 + createDate?: string; + // 关联方 + relatedParty?: string; + // 疑似关系类型 + type?: string; + // 疑似关系详情 + detail?: string; + // 链接 + url?: string; + // 备注 + comments?: string; + // 企业ID + companyId?: number; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 疑似关系搜索条件 + */ +export interface CreditSuspectedRelationshipParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditUser/index.ts b/src/api/credit/creditUser/index.ts new file mode 100644 index 0000000..558b1bf --- /dev/null +++ b/src/api/credit/creditUser/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditUser, CreditUserParam } from './model'; + +/** + * 分页查询招投标信息表 + */ +export async function pageCreditUser(params: CreditUserParam) { + const res = await request.get>>( + '/credit/credit-user/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询招投标信息表列表 + */ +export async function listCreditUser(params?: CreditUserParam) { + const res = await request.get>( + '/credit/credit-user', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加招投标信息表 + */ +export async function addCreditUser(data: CreditUser) { + const res = await request.post>( + '/credit/credit-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改招投标信息表 + */ +export async function updateCreditUser(data: CreditUser) { + const res = await request.put>( + '/credit/credit-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除招投标信息表 + */ +export async function removeCreditUser(id?: number) { + const res = await request.delete>( + '/credit/credit-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除招投标信息表 + */ +export async function removeBatchCreditUser(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询招投标信息表 + */ +export async function getCreditUser(id: number) { + const res = await request.get>( + '/credit/credit-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入招投标 + */ +export async function importCreditUsers(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-user/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)); +} diff --git a/src/api/credit/creditUser/model/index.ts b/src/api/credit/creditUser/model/index.ts new file mode 100644 index 0000000..9ae0eda --- /dev/null +++ b/src/api/credit/creditUser/model/index.ts @@ -0,0 +1,71 @@ +import type { PageParam } from '@/api'; + +/** + * 招投标信息表 + */ +export interface CreditUser { + // ID + id?: number; + // 客户名称 + name?: string; + // 唯一标识 + code?: string; + // 链接地址 + url?: string; + // 类型, 0普通用户, 1招投标 + type?: number; + // 企业角色 + role?: string; + // 上级id, 0是顶级 + parentId?: number; + // 信息类型 + infoType?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 招采单位名称 + procurementName?: string; + // 中标单位名称 + winningName?: string; + // 中标单位名称 + winningPrice?: string; + // 发布日期 + releaseDate?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 到期时间 + expirationTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 招投标信息表搜索条件 + */ +export interface CreditUserParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/creditXgxf/index.ts b/src/api/credit/creditXgxf/index.ts new file mode 100644 index 0000000..211d74a --- /dev/null +++ b/src/api/credit/creditXgxf/index.ts @@ -0,0 +1,151 @@ +import request from '@/utils/request'; +import { withCreditUserScope } from '@/api/credit/utils/data-scope'; + +import type { ApiResult, PageResult } from '@/api'; +import type { CreditXgxf, CreditXgxfParam } from './model'; + +/** + * 分页查询限制高消费 + */ +export async function pageCreditXgxf(params: CreditXgxfParam) { + const res = await request.get>>( + '/credit/credit-xgxf/page', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询限制高消费列表 + */ +export async function listCreditXgxf(params?: CreditXgxfParam) { + const res = await request.get>( + '/credit/credit-xgxf', + { params: withCreditUserScope(params) } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加限制高消费 + */ +export async function addCreditXgxf(data: CreditXgxf) { + const res = await request.post>( + '/credit/credit-xgxf', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改限制高消费 + */ +export async function updateCreditXgxf(data: CreditXgxf) { + const res = await request.put>( + '/credit/credit-xgxf', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除限制高消费 + */ +export async function removeCreditXgxf(id?: number) { + const res = await request.delete>( + '/credit/credit-xgxf/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除限制高消费 + */ +export async function removeBatchCreditXgxf(data: (number | undefined)[]) { + const res = await request.delete>( + '/credit/credit-xgxf/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询限制高消费 + */ +export async function getCreditXgxf(id: number) { + const res = await request.get>( + '/credit/credit-xgxf/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入限制高消费 + */ +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, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + 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>( + '/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)); +} diff --git a/src/api/credit/creditXgxf/model/index.ts b/src/api/credit/creditXgxf/model/index.ts new file mode 100644 index 0000000..214904a --- /dev/null +++ b/src/api/credit/creditXgxf/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 限制高消费 + */ +export interface CreditXgxf { + // ID + id?: number; + // 数据类型 + dataType?: string; + // 原告/上诉人 + plaintiffAppellant?: string; + // 被告/被上诉人 + appellee?: string; + // 链接地址 + url?: string; + // 其他当事人/第三人 + otherPartiesThirdParty?: string; + // 发生时间 + occurrenceTime?: string; + // 案号 + caseNumber?: string; + // 案由 + causeOfAction?: string; + // 涉案金额 + involvedAmount?: string; + // 法院 + courtName?: string; + // 数据状态 + dataStatus?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 限制高消费搜索条件 + */ +export interface CreditXgxfParam extends PageParam { + userId?: number; + + id?: number; + keywords?: string; +} diff --git a/src/api/credit/utils/data-scope.ts b/src/api/credit/utils/data-scope.ts new file mode 100644 index 0000000..ab24157 --- /dev/null +++ b/src/api/credit/utils/data-scope.ts @@ -0,0 +1,49 @@ +import { hasRole } from '@/utils/permission'; +import { useUserStore } from '@/store/modules/user'; + +function isSuperAdmin(): boolean { + try { + return hasRole('superAdmin'); + } catch { + return false; + } +} + +function getCurrentUserId(): number | undefined { + try { + const store = useUserStore(); + const id = store?.info?.userId; + if (typeof id === 'number' && Number.isFinite(id) && id > 0) { + return id; + } + } catch { + // Pinia may not be active in some early-init code paths. + } + const raw = localStorage.getItem('UserId'); + if (!raw) { + return undefined; + } + const n = Number(raw); + return Number.isFinite(n) && n > 0 ? n : undefined; +} + +/** + * Credit module data scope: + * - superAdmin: see all data + * - others: only see data published by themselves (userId) + */ +export function withCreditUserScope | undefined>( + params: T +): T { + if (isSuperAdmin()) { + return params; + } + const userId = getCurrentUserId(); + if (!userId) { + return params; + } + if (!params) { + return { userId } as T; + } + return { ...(params as any), userId } as T; +} diff --git a/src/app.config.ts b/src/app.config.ts index 3ae1b96..769bc7c 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -121,7 +121,8 @@ export default { "root": "credit", "pages": [ "order/index", - "order/add" + "order/add", + "company/index" ] } ], diff --git a/src/credit/company/index.config.ts b/src/credit/company/index.config.ts new file mode 100644 index 0000000..33a96b8 --- /dev/null +++ b/src/credit/company/index.config.ts @@ -0,0 +1,5 @@ +export default definePageConfig({ + navigationBarTitleText: '客户管理', + navigationBarTextStyle: 'black', + navigationBarBackgroundColor: '#ffffff' +}) diff --git a/src/credit/company/index.tsx b/src/credit/company/index.tsx new file mode 100644 index 0000000..ae1471f --- /dev/null +++ b/src/credit/company/index.tsx @@ -0,0 +1,874 @@ +import { useCallback, useMemo, useRef, useState } from 'react' +import Taro, { useDidShow } from '@tarojs/taro' +import { View, Text } from '@tarojs/components' +import { + Address, + Button, + Cell, + CellGroup, + Checkbox, + ConfigProvider, + Dialog, + Empty, + InfiniteLoading, + Input, + Loading, + Popup, + PullToRefresh, + SearchBar, + Tag +} from '@nutui/nutui-react-taro' +import { Copy, Phone } from '@nutui/icons-react-taro' + +import RegionData from '@/api/json/regions-data.json' +import { addCreditCompany, pageCreditCompany, updateCreditCompany } from '@/api/credit/creditCompany' +import type { CreditCompany } from '@/api/credit/creditCompany/model' +import { listUsers } from '@/api/system/user' +import type { User } from '@/api/system/user/model' + +const PAGE_SIZE = 10 + +type FollowStatus = '全部' | '未联系' | '加微前沟通' | '跟进中' | '已成交' | '无意向' + +const FOLLOW_STATUS_OPTIONS: FollowStatus[] = ['全部', '未联系', '加微前沟通', '跟进中', '已成交', '无意向'] + +const FOLLOW_MAP_STORAGE_KEY = 'credit_company_follow_status_map' + +const safeParseJSON = (v: any): T | null => { + try { + if (!v) return null + if (typeof v === 'object') return v as T + if (typeof v === 'string') return JSON.parse(v) as T + return null + } catch (_e) { + return null + } +} + +const getCompanyIdKey = (c: CreditCompany) => String(c?.id || '') + +const splitPhones = (raw?: string) => { + const text = String(raw || '').trim() + if (!text) return [] + // 常见分隔符:逗号/顿号/分号/换行/空格 + return text + .split(/[\s,,;;、\n\r]+/g) + .map(s => s.trim()) + .filter(Boolean) +} + +const getCompanyPhones = (c: CreditCompany) => { + const arr = [...splitPhones(c.tel), ...splitPhones(c.moreTel)] + return Array.from(new Set(arr)) +} + +const getCompanyIndustry = (c: CreditCompany) => { + // 兼容:不同数据源字段可能不一致,优先取更具体的大类 + return String( + c.nationalStandardIndustryCategories6 || + c.nationalStandardIndustryCategories2 || + c.nationalStandardIndustryCategories || + c.institutionType || + '' + ).trim() +} + +export default function CreditCompanyPage() { + const serverPageRef = useRef(1) + const [list, setList] = useState([]) + const [hasMore, setHasMore] = useState(true) + const [loading, setLoading] = useState(false) + const [error, setError] = useState(null) + + const [searchValue, setSearchValue] = useState('') + + const [cityVisible, setCityVisible] = useState(false) + const [cityText, setCityText] = useState('全部') + + const [followVisible, setFollowVisible] = useState(false) + const [followStatus, setFollowStatus] = useState('全部') + + const [industryVisible, setIndustryVisible] = useState(false) + const [industryText, setIndustryText] = useState('全部') + + const [selectMode, setSelectMode] = useState(false) + const [selectedIds, setSelectedIds] = useState([]) + + const [staffPopupVisible, setStaffPopupVisible] = useState(false) + const [staffLoading, setStaffLoading] = useState(false) + const [staffList, setStaffList] = useState([]) + const [staffSelectedId, setStaffSelectedId] = useState(undefined) + const [assigning, setAssigning] = useState(false) + + const [addDialogVisible, setAddDialogVisible] = useState(false) + const [addStep, setAddStep] = useState<'search' | 'form'>('search') + const [addChecking, setAddChecking] = useState(false) + const [addSubmitting, setAddSubmitting] = useState(false) + const [addName, setAddName] = useState('') + const [addCode, setAddCode] = useState('') + const [addPhone, setAddPhone] = useState('') + const [addCityVisible, setAddCityVisible] = useState(false) + const [addCityText, setAddCityText] = useState('') + const [addIndustry, setAddIndustry] = useState('') + + const [followMap, setFollowMap] = useState>(() => { + const raw = Taro.getStorageSync(FOLLOW_MAP_STORAGE_KEY) + return safeParseJSON>(raw) || {} + }) + + const currentUser = useMemo(() => { + return safeParseJSON(Taro.getStorageSync('User')) || ({} as User) + }, []) + + const canAssign = useMemo(() => { + if (currentUser?.isSuperAdmin || currentUser?.isAdmin) return true + const roleName = String(currentUser?.roleName || currentUser?.roleCode || '').trim() + // 约定:销售助理无分配权限(后端若有更精确字段,可替换这里的判断) + if (roleName.includes('销售助理')) return false + return true + }, [currentUser?.isAdmin, currentUser?.isSuperAdmin, currentUser?.roleCode, currentUser?.roleName]) + + const cityOptions = useMemo(() => { + // NutUI Address options: [{ text, value, children }] + // @ts-ignore + return (RegionData || []).map(a => ({ + value: a.label, + text: a.label, + children: (a.children || []).map(b => ({ + value: b.label, + text: b.label, + children: (b.children || []).map(c => ({ + value: c.label, + text: c.label + })) + })) + })) + }, []) + + const staffNameMap = useMemo(() => { + const map = new Map() + for (const u of staffList) { + if (!u?.userId) continue + const name = String(u.realName || u.nickname || u.username || `员工${u.userId}`) + map.set(u.userId, name) + } + return map + }, [staffList]) + + const getFollowStatus = useCallback( + (c: CreditCompany): FollowStatus => { + const k = getCompanyIdKey(c) + const stored = k ? followMap[k] : undefined + if (stored) return stored + return '未联系' + }, + [followMap] + ) + + const setFollowStatusFor = async (c: CreditCompany) => { + if (!c?.id) return + try { + const res = await Taro.showActionSheet({ + itemList: FOLLOW_STATUS_OPTIONS.filter(s => s !== '全部') + }) + const next = FOLLOW_STATUS_OPTIONS.filter(s => s !== '全部')[res.tapIndex] as FollowStatus | undefined + if (!next) return + + setFollowMap(prev => { + const k = getCompanyIdKey(c) + const merged = { ...prev, [k]: next } + Taro.setStorageSync(FOLLOW_MAP_STORAGE_KEY, merged) + return merged + }) + + // 若当前正在按状态筛选,则即时移除不匹配项,避免“改完状态但列表不变”的割裂感。 + if (followStatus !== '全部' && next !== followStatus && c.id) { + const cid = Number(c.id) + setList(prev => prev.filter(x => Number(x.id) !== cid)) + setSelectedIds(prev => prev.filter(id => id !== cid)) + } + } catch (e) { + const msg = String((e as any)?.errMsg || (e as any)?.message || e || '') + if (msg.includes('cancel')) return + } + } + + const applyFilters = useCallback( + (incoming: CreditCompany[]) => { + const city = cityText === '全部' ? '' : cityText + const industry = industryText === '全部' ? '' : industryText + const follow = followStatus === '全部' ? '' : followStatus + + return incoming.filter(c => { + if (c?.deleted === 1) return false + + if (city) { + const full = [c.province, c.city, c.region].filter(Boolean).join(' ') + if (!full.includes(city) && String(c.city || '') !== city) return false + } + + if (industry) { + const ind = getCompanyIndustry(c) + if (!ind.includes(industry)) return false + } + + if (follow) { + if (getFollowStatus(c) !== follow) return false + } + + return true + }) + }, + [cityText, followStatus, getFollowStatus, industryText] + ) + + const reload = useCallback( + async (resetPage = false) => { + if (loading) return + setLoading(true) + setError(null) + + if (resetPage) { + serverPageRef.current = 1 + setHasMore(true) + setSelectedIds([]) + setSelectMode(false) + } + + let nextList = resetPage ? [] : list + let page = serverPageRef.current + let serverHasMore = true + + // 当筛选条件较严格时,可能需要多拉几页才能拿到“至少一条匹配数据” + const MAX_PAGE_TRIES = 8 + let tries = 0 + + try { + while (tries < MAX_PAGE_TRIES) { + tries += 1 + const params: any = { + page, + limit: PAGE_SIZE, + keywords: searchValue?.trim() || undefined + } + + const res = await pageCreditCompany(params) + const incoming = (res?.list || []) as CreditCompany[] + const filtered = applyFilters(incoming) + + if (resetPage) { + nextList = filtered + resetPage = false + } else { + nextList = nextList.concat(filtered) + } + + page += 1 + + // 服务端无更多页:终止 + if (incoming.length < PAGE_SIZE) { + serverHasMore = false + break + } + + // 已拿到可展示数据:先返回,让用户继续滚动触发下一次加载 + if (filtered.length > 0) break + } + + serverPageRef.current = page + setList(nextList) + setHasMore(serverHasMore) + } catch (e) { + console.error('加载客户列表失败:', e) + setError('加载失败,请重试') + setHasMore(false) + } finally { + setLoading(false) + } + }, + [applyFilters, list, loading, searchValue] + ) + + const handleRefresh = useCallback(async () => { + await reload(true) + }, [reload]) + + const loadMore = useCallback(async () => { + if (loading || !hasMore) return + await reload(false) + }, [hasMore, loading, reload]) + + useDidShow(() => { + reload(true).then() + }) + + const visibleIndustryOptions = useMemo(() => { + const uniq = new Set() + for (const m of list) { + const ind = getCompanyIndustry(m) + if (ind) uniq.add(ind) + } + const arr = Array.from(uniq) + arr.sort() + return ['全部'].concat(arr) + }, [list]) + + const toggleSelectId = (companyId?: number, checked?: boolean) => { + if (!companyId) return + setSelectedIds(prev => { + if (checked) return prev.includes(companyId) ? prev : prev.concat(companyId) + return prev.filter(id => id !== companyId) + }) + } + + const copyPhones = async () => { + const pool = selectMode && selectedIds.length ? list.filter(c => selectedIds.includes(Number(c.id))) : list + const phones = pool.flatMap(c => getCompanyPhones(c)) + const unique = Array.from(new Set(phones)).filter(Boolean) + if (!unique.length) { + Taro.showToast({ title: '暂无可复制的电话', icon: 'none' }) + return + } + await Taro.setClipboardData({ data: unique.join('\n') }) + Taro.showToast({ title: `已复制${unique.length}个电话`, icon: 'success' }) + } + + const callPhone = async (phone?: string) => { + const num = String(phone || '').trim() + if (!num) { + Taro.showToast({ title: '暂无电话', icon: 'none' }) + return + } + try { + await Taro.makePhoneCall({ phoneNumber: num }) + } catch (e) { + console.error('拨号失败:', e) + Taro.showToast({ title: '拨号失败', icon: 'none' }) + } + } + + const openAddCustomer = () => { + setAddStep('search') + setAddName('') + setAddCode('') + setAddPhone('') + setAddCityText('') + setAddIndustry('') + setAddDialogVisible(true) + } + + const checkCompanyExists = async () => { + if (addChecking) return + const name = addName.trim() + const code = addCode.trim() + const keywords = (name || code).trim() + if (!keywords) { + Taro.showToast({ title: '请输入公司名称或统一代码', icon: 'none' }) + return + } + + setAddChecking(true) + try { + const res = await pageCreditCompany({ page: 1, limit: 1, keywords } as any) + const exists = ((res?.list || []) as CreditCompany[]).some(c => c?.deleted !== 1) + if (exists) { + await Taro.showModal({ + title: '提示', + content: '该公司信息已存在,请联系管理员核实', + showCancel: false + }) + return + } + + // 未存在:进入录入表单 + setAddStep('form') + } catch (e) { + console.error('查询公司失败:', e) + Taro.showToast({ title: '查询失败,请重试', icon: 'none' }) + } finally { + setAddChecking(false) + } + } + + const submitAddCustomer = async () => { + if (addSubmitting) return + const name = addName.trim() + const code = addCode.trim() + const phone = addPhone.trim() + + if (!name) { + Taro.showToast({ title: '请输入公司名称', icon: 'none' }) + return + } + + setAddSubmitting(true) + try { + const regionParts = addCityText.split(' ').map(s => s.trim()).filter(Boolean) + const province = regionParts.length >= 2 ? regionParts[0] : undefined + const city = regionParts.length >= 2 ? regionParts[1] : (regionParts[0] || undefined) + const payload: CreditCompany = { + name, + matchName: name, + code: code || undefined, + tel: phone || undefined, + province, + city, + nationalStandardIndustryCategories: addIndustry || undefined + } + await addCreditCompany(payload) + Taro.showToast({ title: '添加成功', icon: 'success' }) + setAddDialogVisible(false) + await reload(true) + } catch (e) { + console.error('添加客户失败:', e) + Taro.showToast({ title: '添加失败,请重试', icon: 'none' }) + } finally { + setAddSubmitting(false) + } + } + + const ensureStaffLoaded = async () => { + if (staffLoading) return + if (staffList.length) return + setStaffLoading(true) + try { + const res = await listUsers({ isStaff: true } as any) + setStaffList((res || []) as User[]) + } catch (e) { + console.error('加载员工列表失败:', e) + Taro.showToast({ title: '加载员工失败', icon: 'none' }) + } finally { + setStaffLoading(false) + } + } + + const openAssign = async () => { + if (!canAssign) { + Taro.showToast({ title: '当前角色无分配权限', icon: 'none' }) + return + } + if (!selectMode) { + setSelectMode(true) + setSelectedIds([]) + Taro.showToast({ title: '请选择要分配的客户', icon: 'none' }) + return + } + if (!selectedIds.length) { + Taro.showToast({ title: '请先勾选客户', icon: 'none' }) + return + } + await ensureStaffLoaded() + setStaffPopupVisible(true) + } + + const submitAssign = async () => { + if (!staffSelectedId) { + Taro.showToast({ title: '请选择分配对象', icon: 'none' }) + return + } + if (!selectedIds.length) { + Taro.showToast({ title: '请先勾选客户', icon: 'none' }) + return + } + + setAssigning(true) + try { + for (const id of selectedIds) { + await updateCreditCompany({ id, userId: staffSelectedId } as any) + } + Taro.showToast({ title: '分配成功', icon: 'success' }) + setStaffPopupVisible(false) + setSelectMode(false) + setSelectedIds([]) + await reload(true) + } catch (e) { + console.error('分配失败:', e) + Taro.showToast({ title: '分配失败,请重试', icon: 'none' }) + } finally { + setAssigning(false) + } + } + + return ( + + + + reload(true)} + /> + + + + + + + + + + + {!!error && ( + + {error} + + )} + + + + {list.length === 0 && !loading ? ( + + + + ) : ( + + + 加载中... + + } + loadMoreText={ + + {list.length === 0 ? '暂无数据' : '没有更多了'} + + } + > + {list.map((c, idx) => { + const id = Number(c.id) + const selected = !!id && selectedIds.includes(id) + const follow = getFollowStatus(c) + const ownerName = c.userId ? staffNameMap.get(Number(c.userId)) : undefined + const name = c.matchName || c.name || `企业${c.id || ''}` + const industry = getCompanyIndustry(c) + const phones = getCompanyPhones(c) + const primaryPhone = phones[0] + return ( + + + + {selectMode && ( + + toggleSelectId(id, checked)} + /> + + )} + + + + + + {name} + + {!!industry && ( + + {industry} + + )} + + { + e?.stopPropagation?.() + setFollowStatusFor(c) + }} + > + {follow} + + + + + + + {primaryPhone ? primaryPhone : '暂无电话'} + + {ownerName && ( + + 跟进人:{ownerName} + + )} + + + + + + + + {!!(c.province || c.city || c.region) && ( + + {[c.province, c.city, c.region].filter(Boolean).join(' ')} + + )} + + + + + ) + })} + + )} + + + + + + + + + + {selectMode && ( + + 已选 {selectedIds.length} 个 + + copyPhones()} + > + 复制所选电话 + + { + setSelectMode(false) + setSelectedIds([]) + }} + > + 取消 + + + + )} + + +
{ + const txt = value.filter(Boolean).slice(0, 2).join(' ') + setCityText(txt || '全部') + setCityVisible(false) + reload(true).then() + }} + onClose={() => setCityVisible(false)} + /> + + setFollowVisible(false)} + > + + + 跟进状态 + setFollowVisible(false)}> + 关闭 + + + + {FOLLOW_STATUS_OPTIONS.map(s => ( + {s}} + onClick={() => { + setFollowStatus(s) + setFollowVisible(false) + reload(true).then() + }} + /> + ))} + + + + + setIndustryVisible(false)} + > + + + 行业 + setIndustryVisible(false)}> + 关闭 + + + + {visibleIndustryOptions.map(s => ( + {s}} + onClick={() => { + setIndustryText(s) + setIndustryVisible(false) + reload(true).then() + }} + /> + ))} + + + + + { + if (assigning) return + setStaffPopupVisible(false) + }} + > + + + 选择分配对象 + !assigning && setStaffPopupVisible(false)}> + 关闭 + + + + + {staffLoading ? ( + + + 加载中... + + ) : ( + + {staffList.map(u => ( + + {u.realName || u.nickname || u.username || `员工${u.userId}`} + + } + description={u.phone || ''} + onClick={() => setStaffSelectedId(u.userId)} + /> + ))} + {!staffList.length && ( + 暂无员工数据} /> + )} + + )} + + + + + + + + + { + if (addChecking || addSubmitting) return + setAddDialogVisible(false) + }} + onConfirm={() => { + if (addStep === 'search') return checkCompanyExists() + return submitAddCustomer() + }} + > + + + 先查询系统是否存在公司;不存在则可直接添加企业信息。 + + + + + + + + + + + {addStep === 'form' && ( + <> + + + + setAddCityVisible(true)} + /> + + + + + )} + + +
{ + const txt = value.filter(Boolean).slice(0, 2).join(' ') + setAddCityText(txt) + setAddCityVisible(false) + }} + onClose={() => setAddCityVisible(false)} + /> + +
+ + + ) +} diff --git a/src/credit/customer/index.config.ts b/src/credit/customer/index.config.ts new file mode 100644 index 0000000..62147f0 --- /dev/null +++ b/src/credit/customer/index.config.ts @@ -0,0 +1,5 @@ +export default definePageConfig({ + navigationBarTitleText: '客户联系人管理', + navigationBarTextStyle: 'black', + navigationBarBackgroundColor: '#ffffff' +}) diff --git a/src/credit/customer/index.tsx b/src/credit/customer/index.tsx new file mode 100644 index 0000000..5579fc0 --- /dev/null +++ b/src/credit/customer/index.tsx @@ -0,0 +1,11 @@ +import Taro, { useDidShow } from '@tarojs/taro' +import { View, Text } from '@tarojs/components' + +export default function index() { + + return ( + + + + ) +} diff --git a/src/credit/data/index.config.ts b/src/credit/data/index.config.ts new file mode 100644 index 0000000..ddd1d6d --- /dev/null +++ b/src/credit/data/index.config.ts @@ -0,0 +1,5 @@ +export default definePageConfig({ + navigationBarTitleText: '数据查询', + navigationBarTextStyle: 'black', + navigationBarBackgroundColor: '#ffffff' +}) diff --git a/src/credit/data/index.tsx b/src/credit/data/index.tsx new file mode 100644 index 0000000..5579fc0 --- /dev/null +++ b/src/credit/data/index.tsx @@ -0,0 +1,11 @@ +import Taro, { useDidShow } from '@tarojs/taro' +import { View, Text } from '@tarojs/components' + +export default function index() { + + return ( + + + + ) +} diff --git a/src/pages/index/Banner.tsx b/src/pages/index/Banner.tsx index 467daf1..35f1758 100644 --- a/src/pages/index/Banner.tsx +++ b/src/pages/index/Banner.tsx @@ -5,11 +5,22 @@ import {Image} from '@nutui/nutui-react-taro' import {getCmsAdByCode} from "@/api/cms/cmsAd"; const MyPage = () => { - const [item, setItem] = useState() + const [ad, setAd] = useState() + + const toCssSize = (value?: string | number) => { + if (value === undefined || value === null) return undefined + const s = String(value).trim() + if (!s) return undefined + // If it's a pure number, default unit is px; otherwise keep backend-provided unit (e.g. rpx/px/%). + return Number.isNaN(Number(s)) ? s : `${Number(s)}px` + } + + const bannerHeight = toCssSize(ad?.height) + const reload = async () => { const flash = await getCmsAdByCode('flash') console.log(flash) - setItem(flash) + setAd(flash) } useEffect(() => { @@ -18,12 +29,22 @@ const MyPage = () => { return ( <> - - {item?.imageList?.map((item) => ( - - - - ))} + + {ad?.imageList?.map((img, idx) => { + const url = typeof img === 'string' ? img : img?.url + if (!url) return null + return ( + + + + ) + })} ) diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx index ec8062b..56156ef 100644 --- a/src/pages/index/index.tsx +++ b/src/pages/index/index.tsx @@ -1,15 +1,20 @@ import Taro, {useShareAppMessage, useShareTimeline} from '@tarojs/taro' -import {Image, Swiper, SwiperItem, Text, View} from '@tarojs/components' +import {Image, Text, View} from '@tarojs/components' import {useEffect, useState} from 'react' +import Banner from './Banner' import iconShop from '@/assets/tabbar/shop.png' import iconFind from '@/assets/tabbar/find.png' import iconKefu from '@/assets/tabbar/kefu.png' import './index.scss' import navTo from "@/utils/common"; -import {pageCmsArticle} from '@/api/cms/cmsArticle' +import {getByCode as getArticleByCode, pageCmsArticle} from '@/api/cms/cmsArticle' import type {CmsArticle} from '@/api/cms/cmsArticle/model' +import {useUser} from '@/hooks/useUser' function Home() { + const {isAdmin} = useUser() + const admin = isAdmin() + useShareTimeline(() => { return { title: '易赊宝', @@ -40,12 +45,19 @@ function Home() { Taro.showToast({title: `${textMap[type]}(示例)`, icon: 'none'}) } - const onDemand = () => { - Taro.showToast({title: '发需求(示例)', icon: 'none'}) - } - const FAQ_CATEGORY_ID = 4558 const [faqList, setFaqList] = useState([]) + const [aboutArticle, setAboutArticle] = useState(null) + + const loadAbout = async () => { + try { + const res = await getArticleByCode('about') + setAboutArticle(res || null) + } catch (e) { + console.error('loadAbout error:', e) + setAboutArticle(null) + } + } const loadFaq = async () => { try { @@ -65,119 +77,138 @@ function Home() { useEffect(() => { loadFaq().then() + loadAbout().then() }, []) + const aboutText = + (aboutArticle?.comments || '') + .replace(/<[^>]*>/g, '') + .replace(/ | /g, ' ') + .trim() || + '易赊宝是提供专业回款咨询服务的小程序!我们重视企业需求,加速回款咨询服务能力助力企业资金流动畅通循环,服务团队全国覆盖。' + return ( - - - - - 易赊宝 - - 咨询加速回款,助力经济循环 - - - - - - 易赊宝 - - 专业回款咨询服务,团队全国覆盖 - - - + {/* 顶部活动主视觉:使用 Banner 组件 */} + + - - - onAction('progress')}> - - + {!admin && ( + + + onAction('progress')}> + + + + 查询进度 - 查询进度 - - onAction('guide')}> - - + onAction('guide')}> + + + + 业务指南 - 业务指南 - - onAction('kefu')}> - - + onAction('kefu')}> + + + + 在线客服 - 在线客服 - + )} 简介 - 更多 + { + if (aboutArticle?.articleId) { + navTo(`/cms/detail/index?id=${aboutArticle.articleId}`) + } else { + Taro.showToast({title: '暂无简介内容', icon: 'none'}) + } + }} + > + 更多 + - 易赊宝是提供专业回款咨询服务的小程序!我们重视企业需求,加速回款咨询服务能力助力企业资金流动畅通循环,服务团队全国覆盖。 + {aboutText} - - navTo('/credit/order/add', true)}> - 发需求 - - 提出您的述求,免费获取解决方案 - - - - - - - 常见问题解答 - navTo(`/cms/category/index?id=${FAQ_CATEGORY_ID}`)} - > - 更多>> - - - - - {faqList.length > 0 ? ( - faqList.map((item, idx, arr) => ( - item.articleId && navTo(`/cms/detail/index?id=${item.articleId}`)} - > - {item.title} - {(item.createTime || '').slice(0, 10)} - - )) - ) : ( - - 暂无常见问题 - + {admin && ( + + navTo('/credit/company/index', true)}> + 客户管理 - )} - + navTo('/credit/order/index', true)}> + 订单管理 + + navTo('/credit/data/index', true)}> + 数据查询 + + navTo('/credit/customer/index', true)}> + 客户联系人管理 + + + )} + + {!admin && ( + + navTo('/credit/order/add', true)}> + 发需求 + + 提出您的述求,免费获取解决方案 + + )} + {!admin && ( + + + + 常见问题解答 + navTo(`/cms/category/index?id=${FAQ_CATEGORY_ID}`)} + > + 更多>> + + + + + {faqList.length > 0 ? ( + faqList.map((item, idx, arr) => ( + item.articleId && navTo(`/cms/detail/index?id=${item.articleId}`)} + > + {item.title} + {(item.createTime || '').slice(0, 10)} + + )) + ) : ( + + 暂无常见问题 + + + )} + + + )} + + ) diff --git a/src/pages/user/user.tsx b/src/pages/user/user.tsx index ac1e3b0..28600e1 100644 --- a/src/pages/user/user.tsx +++ b/src/pages/user/user.tsx @@ -1,11 +1,9 @@ import {useEffect, useRef, useState} from 'react' import {PullToRefresh} from '@nutui/nutui-react-taro' import UserCard from "./components/UserCard"; -import UserOrder from "./components/UserOrder"; import UserFooter from "./components/UserFooter"; import {View} from '@tarojs/components'; import './user.scss' -import IsDealer from "./components/IsDealer"; import {useThemeStyles} from "@/hooks/useTheme"; import UserGrid from "@/pages/user/components/UserGrid"; import { useDidShow } from '@tarojs/taro'