From 89d359b40e0a2b39a694c3c5ad7410cca1eea5a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 16 Dec 2025 15:00:29 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat(shop):=20=E5=AE=8C=E5=96=84=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=8F=91=E8=B4=A7=E5=8A=9F=E8=83=BD=E5=8F=8A=E9=85=8D?= =?UTF-8?q?=E9=80=81=E6=96=B9=E5=BC=8F=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增发货备注、快递公司、发货人信息等字段 - 优化发货表单验证逻辑,支持不同配送方式的动态校验 - 新增配送方式为"商家送货"和"无需发货"的处理逻辑 - 完善订单详情页配送信息展示,增加发货店铺和无需发货备注显示 - 修复发货模态框中部分字段重置逻辑 - 调整开发环境API配置注释状态 --- src/api/credit/creditUser/index.ts | 126 +++++++ src/api/credit/creditUser/model/index.ts | 67 ++++ .../components/credit-user-import.vue | 93 +++++ .../creditUser/components/creditUserEdit.vue | 309 +++++++++++++++++ .../credit/creditUser/components/search.vue | 87 +++++ src/views/credit/creditUser/index.vue | 318 ++++++++++++++++++ 6 files changed, 1000 insertions(+) create mode 100644 src/api/credit/creditUser/index.ts create mode 100644 src/api/credit/creditUser/model/index.ts create mode 100644 src/views/credit/creditUser/components/credit-user-import.vue create mode 100644 src/views/credit/creditUser/components/creditUserEdit.vue create mode 100644 src/views/credit/creditUser/components/search.vue create mode 100644 src/views/credit/creditUser/index.vue diff --git a/src/api/credit/creditUser/index.ts b/src/api/credit/creditUser/index.ts new file mode 100644 index 0000000..581d78b --- /dev/null +++ b/src/api/credit/creditUser/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +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 + } + ); + 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 + } + ); + 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) { + const formData = new FormData(); + formData.append('file', file); + 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..d35de7c --- /dev/null +++ b/src/api/credit/creditUser/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 招投标信息表 + */ +export interface CreditUser { + // ID + id?: number; + // 客户名称 + name?: string; + // 唯一标识 + code?: 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 { + id?: number; + keywords?: string; +} diff --git a/src/views/credit/creditUser/components/credit-user-import.vue b/src/views/credit/creditUser/components/credit-user-import.vue new file mode 100644 index 0000000..4744e68 --- /dev/null +++ b/src/views/credit/creditUser/components/credit-user-import.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/views/credit/creditUser/components/creditUserEdit.vue b/src/views/credit/creditUser/components/creditUserEdit.vue new file mode 100644 index 0000000..4777e00 --- /dev/null +++ b/src/views/credit/creditUser/components/creditUserEdit.vue @@ -0,0 +1,309 @@ + + + + diff --git a/src/views/credit/creditUser/components/search.vue b/src/views/credit/creditUser/components/search.vue new file mode 100644 index 0000000..cb1c8fc --- /dev/null +++ b/src/views/credit/creditUser/components/search.vue @@ -0,0 +1,87 @@ + + + + diff --git a/src/views/credit/creditUser/index.vue b/src/views/credit/creditUser/index.vue new file mode 100644 index 0000000..3dd22f7 --- /dev/null +++ b/src/views/credit/creditUser/index.vue @@ -0,0 +1,318 @@ + + + + + + + From 5c783c2f511fd57d34a7aa1ca37bde0e5b8747dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 16 Dec 2025 15:14:27 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat(creditUser):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E9=93=BE=E6=8E=A5=E5=8F=8A?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E9=A1=B9=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化导入模板下载链接的布局 - 将“客户名称”字段标签更正为“项目名称” - 统一代码格式并移除冗余空行 - 调整表格列配置对齐方式 - 完善组件引用路径与方法导入结构 --- .../components/credit-user-import.vue | 10 +++++----- .../creditUser/components/creditUserEdit.vue | 4 ++-- src/views/credit/creditUser/index.vue | 20 ++++++++++++------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/views/credit/creditUser/components/credit-user-import.vue b/src/views/credit/creditUser/components/credit-user-import.vue index 4744e68..8b1b4ad 100644 --- a/src/views/credit/creditUser/components/credit-user-import.vue +++ b/src/views/credit/creditUser/components/credit-user-import.vue @@ -22,9 +22,7 @@
只能上传xls、xlsx文件, - - 下载导入模板 - + 下载导入模板
@@ -51,8 +49,10 @@ // 模板下载地址,保持与当前接口域名一致 const templateUrl = computed(() => { - const base = - (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace(/\/$/, ''); + const base = (localStorage.getItem('ApiUrl') || API_BASE_URL || '').replace( + /\/$/, + '' + ); return `${base}/credit/credit-user/import/template`; }); diff --git a/src/views/credit/creditUser/components/creditUserEdit.vue b/src/views/credit/creditUser/components/creditUserEdit.vue index 4777e00..aca5886 100644 --- a/src/views/credit/creditUser/components/creditUserEdit.vue +++ b/src/views/credit/creditUser/components/creditUserEdit.vue @@ -19,10 +19,10 @@ styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' } " > - + diff --git a/src/views/credit/creditUser/index.vue b/src/views/credit/creditUser/index.vue index 3dd22f7..93e9dd5 100644 --- a/src/views/credit/creditUser/index.vue +++ b/src/views/credit/creditUser/index.vue @@ -57,17 +57,23 @@ import { message, Modal } from 'ant-design-vue'; import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; import type { EleProTable } from 'ele-admin-pro'; - import { toDateString } from 'ele-admin-pro'; import type { DatasourceFunction, ColumnItem } from 'ele-admin-pro/es/ele-pro-table/types'; import Search from './components/search.vue'; - import {getPageTitle} from '@/utils/common'; + import { getPageTitle } from '@/utils/common'; import CreditUserEdit from './components/creditUserEdit.vue'; import CreditUserImport from './components/credit-user-import.vue'; - import { pageCreditUser, removeCreditUser, removeBatchCreditUser } from '@/api/credit/creditUser'; - import type { CreditUser, CreditUserParam } from '@/api/credit/creditUser/model'; + import { + pageCreditUser, + removeCreditUser, + removeBatchCreditUser + } from '@/api/credit/creditUser'; + import type { + CreditUser, + CreditUserParam + } from '@/api/credit/creditUser/model'; // 表格实例 const tableRef = ref | null>(null); @@ -114,7 +120,7 @@ title: 'ID', dataIndex: 'id', key: 'id', - width: 90, + width: 90 }, { title: '项目名称', @@ -124,7 +130,7 @@ { title: '发布日期', dataIndex: 'releaseDate', - key: 'releaseDate', + key: 'releaseDate' }, // { // title: '唯一标识', @@ -191,7 +197,7 @@ dataIndex: 'winningPrice', key: 'winningPrice', ellipsis: true - }, + } // { // title: '排序', // dataIndex: 'sortNumber', From e82a4ce86573b80292a1d69c592c8a3d6b91ba81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 16 Dec 2025 16:27:31 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat(credit):=20=E6=96=B0=E5=A2=9E=E5=8F=B8?= =?UTF-8?q?=E6=B3=95=E6=A1=88=E4=BB=B6=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加司法案件模型定义及API接口 - 实现司法案件分页查询、列表查询、新增、修改、删除及批量删除功能 - 开发司法案件编辑弹窗组件,支持表单验证和数据提交 - 创建搜索组件,支持关键词搜索、添加、导入和批量删除操作 - 构建司法案件主页面,集成表格展示、编辑弹窗及导入功能 - 实现司法案件导入功能,支持Excel文件上传及模板下载 - 配置开发环境API地址,确保接口请求正常 - 添加司法案件导入弹窗组件,支持拖拽上传及文件类型校验 --- .env.development | 2 +- src/api/credit/creditJudiciary/index.ts | 126 ++++++ src/api/credit/creditJudiciary/model/index.ts | 69 ++++ .../components/credit-judiciary-import.vue | 93 +++++ .../components/creditJudiciaryEdit.vue | 285 +++++++++++++ .../creditJudiciary/components/search.vue | 90 ++++ src/views/credit/creditJudiciary/index.vue | 384 ++++++++++++++++++ 7 files changed, 1048 insertions(+), 1 deletion(-) create mode 100644 src/api/credit/creditJudiciary/index.ts create mode 100644 src/api/credit/creditJudiciary/model/index.ts create mode 100644 src/views/credit/creditJudiciary/components/credit-judiciary-import.vue create mode 100644 src/views/credit/creditJudiciary/components/creditJudiciaryEdit.vue create mode 100644 src/views/credit/creditJudiciary/components/search.vue create mode 100644 src/views/credit/creditJudiciary/index.vue diff --git a/.env.development b/.env.development index b8ccd8b..fbcc74b 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ VITE_APP_NAME=后台管理(开发环境) -#VITE_API_URL=http://127.0.0.1:9200/api +VITE_API_URL=http://127.0.0.1:9200/api #VITE_SERVER_API_URL=http://127.0.0.1:8000/api diff --git a/src/api/credit/creditJudiciary/index.ts b/src/api/credit/creditJudiciary/index.ts new file mode 100644 index 0000000..90394c7 --- /dev/null +++ b/src/api/credit/creditJudiciary/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +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 + } + ); + 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 + } + ); + 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) { + const formData = new FormData(); + formData.append('file', file); + 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..b1bce68 --- /dev/null +++ b/src/api/credit/creditJudiciary/model/index.ts @@ -0,0 +1,69 @@ +import type { PageParam } from '@/api'; + +/** + * 司法案件 + */ +export interface CreditJudiciary { + // ID + id?: number; + // 案件名称 + name?: string; + // 案号 + code?: 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 { + id?: number; + keywords?: string; +} diff --git a/src/views/credit/creditJudiciary/components/credit-judiciary-import.vue b/src/views/credit/creditJudiciary/components/credit-judiciary-import.vue new file mode 100644 index 0000000..0b1a865 --- /dev/null +++ b/src/views/credit/creditJudiciary/components/credit-judiciary-import.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/views/credit/creditJudiciary/components/creditJudiciaryEdit.vue b/src/views/credit/creditJudiciary/components/creditJudiciaryEdit.vue new file mode 100644 index 0000000..2b5494a --- /dev/null +++ b/src/views/credit/creditJudiciary/components/creditJudiciaryEdit.vue @@ -0,0 +1,285 @@ + + + + diff --git a/src/views/credit/creditJudiciary/components/search.vue b/src/views/credit/creditJudiciary/components/search.vue new file mode 100644 index 0000000..00e4dd6 --- /dev/null +++ b/src/views/credit/creditJudiciary/components/search.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/views/credit/creditJudiciary/index.vue b/src/views/credit/creditJudiciary/index.vue new file mode 100644 index 0000000..87a4f2c --- /dev/null +++ b/src/views/credit/creditJudiciary/index.vue @@ -0,0 +1,384 @@ + + + + + + + From cea60d96d7e28743e858b832adff373bc06d65fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Wed, 17 Dec 2025 09:32:29 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat(credit):=20=E6=96=B0=E5=A2=9E=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E4=BF=A1=E7=94=A8=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加企业信息模型定义,包含企业基本信息、联系方式、行业分类等字段 - 实现企业信息的增删改查接口,支持分页查询和批量操作 - 开发企业信息管理页面,包含表格展示、搜索筛选功能 - 添加企业信息编辑弹窗,支持新增和修改企业信息 - 实现企业信息导入功能,支持Excel文件批量导入 - 添加企业信息导入模板下载功能 - 实现企业信息的状态管理和排序功能 - 添加企业信息的详情展示和操作按钮 - 实现企业信息的批量删除功能 - 添加企业信息的搜索功能,支持关键词模糊查询 --- src/api/credit/creditCompany/index.ts | 126 ++++ src/api/credit/creditCompany/model/index.ts | 135 ++++ .../components/credit-company-import.vue | 93 +++ .../components/creditCompanyEdit.vue | 612 +++++++++++++++++ .../creditCompany/components/search.vue | 90 +++ src/views/credit/creditCompany/index.vue | 627 ++++++++++++++++++ .../developer/components/CodeInfo.vue | 0 .../developer/components/ParamInfo.vue | 0 .../developer/components/ServerInfo.vue | 0 .../developer/components/TenantInfo.vue | 0 src/views/{ => system}/developer/index.vue | 23 +- 11 files changed, 1694 insertions(+), 12 deletions(-) create mode 100644 src/api/credit/creditCompany/index.ts create mode 100644 src/api/credit/creditCompany/model/index.ts create mode 100644 src/views/credit/creditCompany/components/credit-company-import.vue create mode 100644 src/views/credit/creditCompany/components/creditCompanyEdit.vue create mode 100644 src/views/credit/creditCompany/components/search.vue create mode 100644 src/views/credit/creditCompany/index.vue rename src/views/{ => system}/developer/components/CodeInfo.vue (100%) rename src/views/{ => system}/developer/components/ParamInfo.vue (100%) rename src/views/{ => system}/developer/components/ServerInfo.vue (100%) rename src/views/{ => system}/developer/components/TenantInfo.vue (100%) rename src/views/{ => system}/developer/index.vue (60%) diff --git a/src/api/credit/creditCompany/index.ts b/src/api/credit/creditCompany/index.ts new file mode 100644 index 0000000..5d3306e --- /dev/null +++ b/src/api/credit/creditCompany/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +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 + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业列表 + */ +export async function listCreditCompany(params?: CreditCompanyParam) { + const res = await request.get>( + '/credit/credit-company', + { + 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)); +} diff --git a/src/api/credit/creditCompany/model/index.ts b/src/api/credit/creditCompany/model/index.ts new file mode 100644 index 0000000..d5d8d42 --- /dev/null +++ b/src/api/credit/creditCompany/model/index.ts @@ -0,0 +1,135 @@ +import type { PageParam } from '@/api'; + +/** + * 企业 + */ +export interface CreditCompany { + // ID + id?: number; + // 原文件导入名称 + name?: string; + // 系统匹配企业名称 + matchName?: string; + // 统一社会信用代码 + code?: 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; + // 备注 + 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 { + id?: number; + keywords?: string; +} diff --git a/src/views/credit/creditCompany/components/credit-company-import.vue b/src/views/credit/creditCompany/components/credit-company-import.vue new file mode 100644 index 0000000..5aae3e1 --- /dev/null +++ b/src/views/credit/creditCompany/components/credit-company-import.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/views/credit/creditCompany/components/creditCompanyEdit.vue b/src/views/credit/creditCompany/components/creditCompanyEdit.vue new file mode 100644 index 0000000..2af46e4 --- /dev/null +++ b/src/views/credit/creditCompany/components/creditCompanyEdit.vue @@ -0,0 +1,612 @@ + + + + diff --git a/src/views/credit/creditCompany/components/search.vue b/src/views/credit/creditCompany/components/search.vue new file mode 100644 index 0000000..00e4dd6 --- /dev/null +++ b/src/views/credit/creditCompany/components/search.vue @@ -0,0 +1,90 @@ + + + + diff --git a/src/views/credit/creditCompany/index.vue b/src/views/credit/creditCompany/index.vue new file mode 100644 index 0000000..f533719 --- /dev/null +++ b/src/views/credit/creditCompany/index.vue @@ -0,0 +1,627 @@ + + + + + + + diff --git a/src/views/developer/components/CodeInfo.vue b/src/views/system/developer/components/CodeInfo.vue similarity index 100% rename from src/views/developer/components/CodeInfo.vue rename to src/views/system/developer/components/CodeInfo.vue diff --git a/src/views/developer/components/ParamInfo.vue b/src/views/system/developer/components/ParamInfo.vue similarity index 100% rename from src/views/developer/components/ParamInfo.vue rename to src/views/system/developer/components/ParamInfo.vue diff --git a/src/views/developer/components/ServerInfo.vue b/src/views/system/developer/components/ServerInfo.vue similarity index 100% rename from src/views/developer/components/ServerInfo.vue rename to src/views/system/developer/components/ServerInfo.vue diff --git a/src/views/developer/components/TenantInfo.vue b/src/views/system/developer/components/TenantInfo.vue similarity index 100% rename from src/views/developer/components/TenantInfo.vue rename to src/views/system/developer/components/TenantInfo.vue diff --git a/src/views/developer/index.vue b/src/views/system/developer/index.vue similarity index 60% rename from src/views/developer/index.vue rename to src/views/system/developer/index.vue index 62368b7..489c921 100644 --- a/src/views/developer/index.vue +++ b/src/views/system/developer/index.vue @@ -4,13 +4,13 @@ - + - + - + @@ -19,16 +19,15 @@ From b15d0010adc41aec853998e0beabde218fe60f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Wed, 17 Dec 2025 09:48:11 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat(credit):=20=E6=96=B0=E5=A2=9E=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E4=BF=A1=E7=94=A8=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加企业信息模型定义,包含企业基本信息、联系方式、行业分类等字段 - 实现企业信息的增删改查接口,支持分页查询和批量操作 - 开发企业信息管理页面,包含表格展示、搜索筛选功能 - 添加企业信息编辑弹窗,支持新增和修改企业信息 - 实现企业信息导入功能,支持Excel文件批量导入 - 添加企业信息导入模板下载功能 - 实现企业信息的状态管理和排序功能 - 添加企业信息的详情展示和操作按钮 - 实现企业信息的批量删除功能 - 添加企业信息的搜索功能,支持关键词模糊查询 --- .../components/creditCompanyInfo.vue | 612 ++++++++++++++++++ src/views/credit/creditCompany/index.vue | 93 +-- 2 files changed, 665 insertions(+), 40 deletions(-) create mode 100644 src/views/credit/creditCompany/components/creditCompanyInfo.vue diff --git a/src/views/credit/creditCompany/components/creditCompanyInfo.vue b/src/views/credit/creditCompany/components/creditCompanyInfo.vue new file mode 100644 index 0000000..c57233f --- /dev/null +++ b/src/views/credit/creditCompany/components/creditCompanyInfo.vue @@ -0,0 +1,612 @@ + + + + diff --git a/src/views/credit/creditCompany/index.vue b/src/views/credit/creditCompany/index.vue index f533719..d7053a3 100644 --- a/src/views/credit/creditCompany/index.vue +++ b/src/views/credit/creditCompany/index.vue @@ -30,32 +30,32 @@ 隐藏 @@ -104,6 +110,7 @@ CreditCompanyParam } from '@/api/credit/creditCompany/model'; import CreditCompanyImport from './components/credit-company-import.vue'; + import CreditCompanyInfo from './components/creditCompanyInfo.vue'; // 表格实例 const tableRef = ref | null>(null); @@ -118,6 +125,8 @@ const showMove = ref(false); // 是否显示导入弹窗 const showImport = ref(false); + // 是否显示详情弹窗 + const showInfo = ref(false); // 加载状态 const loading = ref(true); @@ -143,11 +152,18 @@ // 完整的列配置(包含所有字段) const columns = ref([ { - title: 'ID', - dataIndex: 'id', - key: 'id', - width: 90 + title: '操作', + key: 'action', + width: 120, + fixed: 'left', + align: 'center' }, + // { + // title: 'ID', + // dataIndex: 'id', + // key: 'id', + // width: 90 + // }, { title: '原文件导入名称', dataIndex: 'name', @@ -488,7 +504,7 @@ key: 'smallEnterprise', ellipsis: true, width: 120 - }, + } // { // title: '备注', // dataIndex: 'comments', @@ -522,15 +538,7 @@ // sorter: true, // ellipsis: true, // customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd HH:mm:ss') - // }, - { - title: '操作', - key: 'action', - width: 120, - fixed: 'right', - align: 'center', - hideInSetting: true - } + // } ]); /* 搜索 */ @@ -554,6 +562,11 @@ const openImport = () => { showImport.value = true; }; + /* 打开企业详情 */ + const openInfo = (row?: CreditCompany) => { + current.value = row ?? null; + showInfo.value = true; + }; /* 删除单个 */ const remove = (row: CreditCompany) => {