From 7db1e9cdd2a6b059e507938d8122ddd6a76fe70d Mon Sep 17 00:00:00 2001 From: ltx <19304474232@163.com> Date: Mon, 9 Mar 2026 03:35:18 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/match/certificate-detail.js | 156 ++++++++++++++++ src/api/match/certificate.js | 130 +++++++++++++ src/api/match/coupon.js | 116 ++++++++++++ src/api/match/merchant.js | 106 +++++++++++ src/api/match/project.js | 98 ++++++++++ src/components/ProTable/hooks/useTable.ts | 5 + src/views/match/book/index.vue | 94 ++++------ src/views/match/coupon/index.vue | 218 +++++++++++----------- src/views/match/project/index.vue | 135 +++++++------- src/views/match/shop/index.vue | 210 +++++++++++---------- 10 files changed, 937 insertions(+), 331 deletions(-) create mode 100644 src/api/match/certificate-detail.js create mode 100644 src/api/match/certificate.js create mode 100644 src/api/match/coupon.js create mode 100644 src/api/match/merchant.js create mode 100644 src/api/match/project.js diff --git a/src/api/match/certificate-detail.js b/src/api/match/certificate-detail.js new file mode 100644 index 0000000..a48fb36 --- /dev/null +++ b/src/api/match/certificate-detail.js @@ -0,0 +1,156 @@ +import { BaseApi } from '../baseApi'; +import { http } from '../../utils/request'; + +// ==================== 证书模板管理 ==================== + +/** + * 上传DOC模板 + * @param {FormData} formData - 表单数据 + * @param {File} formData.templatefile - 模板文件 (Word文档) + * @returns {Promise<{ + * templateId: number, + * templateUrl: string, + * detectedPlaceholders: Array<{ + * placeholderKey: string, + * placeholderType: string, + * isValid: boolean, + * validationMessage: string, + * suggestedDisplayName: string + * }>, + * totalPlaceholders: number, + * validPlaceholders: number + * }>} + */ +export const certificatetemplateUploaddoctemplatePost = (formData) => { + return http.post('/certificatetemplate/uploaddoctemplate', formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); +}; + +/** + * 更新DOC模板 + * @param {Object} data - 模板信息 + * @param {number} data.id - 模板ID + * @param {number} data.version - 版本号 + * @param {string} data.templateFile - 模板文件(Base64编码) + * @param {number} [data.width] - 宽度 (默认5000) + * @param {number} [data.height] - 高度 (默认5000) + * @param {boolean} [data.isActive] - 是否激活 + * @returns {Promise<{ + * templateId: number, + * templateUrl: string, + * detectedPlaceholders: Array<{ + * placeholderKey: string, + * placeholderType: string, + * isValid: boolean, + * validationMessage: string, + * suggestedDisplayName: string + * }>, + * totalPlaceholders: number, + * validPlaceholders: number + * }>} + */ +export const certificatetemplateDoctemplatePut = (data) => { + return http.put('/certificatetemplate/doctemplate', data); +}; + +/** + * 获取模板详情 + * @param {Object} data - 请求参数 + * @param {number} data.id - 模板ID + * @returns {Promise<{ + * id: number, + * version: number, + * templateType: string, + * docxTemplateUrl: string, + * isActive: boolean, + * status: string, + * createdTime: string, + * placeholders: Array<{ + * id: number, + * templateId: number, + * placeholderKey: string, + * displayName: string, + * placeholderType: string, + * defaultValue: string, + * isRequired: boolean, + * validationRule: string, + * description: string, + * sort: number + * }> + * }>} + */ +export const certificatetemplateGet = (data) => { + return http.get('/certificatetemplate', { params: data }); +}; + +/** + * 检测DOC模板占位符 + * @param {Object} data - 请求参数 + * @param {string} data.templateFile - 模板文件(Base64编码) + * @returns {Promise<{ + * placeholders: Array<{ + * placeholderKey: string, + * placeholderType: string, + * isValid: boolean, + * validationMessage: string, + * suggestedDisplayName: string + * }>, + * totalCount: number, + * validCount: number, + * invalidCount: number + * }>} + */ +export const certificatetemplateDetectplaceholdersPost = (data) => { + return http.post('/certificatetemplate/detectplaceholders', data); +}; + +/** + * 保存占位符配置 + * @param {Object} data - 占位符配置 + * @param {number} data.templateId - 模板ID + * @param {Array} data.placeholders - 占位符列表 + * @param {string} data.placeholders[].placeholderKey - 占位符键名 + * @param {string} data.placeholders[].displayName - 显示名称 + * @param {string} data.placeholders[].placeholderType - 占位符类型 (Text, Number, Date, Image等) + * @param {string} [data.placeholders[].defaultValue] - 默认值 + * @param {boolean} data.placeholders[].isRequired - 是否必填 + * @param {string} [data.placeholders[].validationRule] - 验证规则 + * @param {string} [data.placeholders[].description] - 描述说明 + * @param {number} data.placeholders[].sort - 排序 + */ +export const certificatetemplateSaveplaceholdersPost = (data) => { + return http.post('/certificatetemplate/saveplaceholders', data); +}; + +/** + * 获取模板占位符列表 + * @param {Object} data - 请求参数 + * @param {number} data.id - 模板ID + * @returns {Promise>} + */ +export const certificatetemplateTemplateplaceholdersGet = (data) => { + return http.get('/certificatetemplate/templateplaceholders', { params: data }); +}; + +/** + * 删除模板(支持批量) + * @param {Object} data - 删除参数 + * @param {Array} data.ids - 模板ID数组 + */ +export const certificatetemplateTemplateDelete = (data) => { + return http.delete('/certificatetemplate/template', { data }); +}; \ No newline at end of file diff --git a/src/api/match/certificate.js b/src/api/match/certificate.js new file mode 100644 index 0000000..1316c6a --- /dev/null +++ b/src/api/match/certificate.js @@ -0,0 +1,130 @@ +import { BaseApi } from '../baseApi'; +import { http } from '../../utils/request'; + +// ==================== 证书管理 ==================== + +/** + * 证书分页查询 + * @param {Object} data - 查询参数 + * @param {number} [data.pageNo] - 当前页码 + * @param {number} [data.pageSize] - 每页条数 + * @param {string} [data.name] - 证书名称 (模糊查询) + * @param {string} [data.code] - 证书编码 + * @param {string} [data.status] - 状态 (Enable=启用, Disable=禁用) + * @returns {Promise<{ + * pageNo: number, + * pageSize: number, + * pages: number, + * total: number, + * rows: Array<{ + * id: number, + * name: string, + * code: string, + * templateId: number, + * remark: string, + * status: string, + * sort: number, + * createdTime: string + * }> + * }>} + */ +export const certificatePageGet = (data) => { + return http.post('/certificate/page', data); +}; + +/** + * 添加证书 + * @param {Object} data - 证书信息 + * @param {string} data.name - 证书名称 + * @param {string} data.code - 证书编码 + * @param {number} data.templateId - 模板ID + * @param {string} [data.remark] - 备注说明 + * @param {string} [data.status] - 状态 (Enable=启用, Disable=禁用,默认Enable) + * @param {number} [data.sort] - 排序号 + */ +export const certificateAddPost = (data) => { + return http.post('/certificate', data); +}; + +/** + * 更新证书 + * @param {Object} data - 证书信息 + * @param {number} data.id - 证书ID + * @param {string} data.name - 证书名称 + * @param {string} data.code - 证书编码 + * @param {number} data.templateId - 模板ID + * @param {string} [data.remark] - 备注说明 + * @param {string} [data.status] - 状态 (Enable=启用, Disable=禁用) + * @param {number} [data.sort] - 排序号 + */ +export const certificateEditPut = (data) => { + return http.put('/certificate', data); +}; + +/** + * 批量删除证书 + * @param {Object} data - 删除参数 + * @param {Array} data.ids - 证书ID数组 + */ +export const certificateDelete = (data) => { + return http.delete('/certificate', { data }); +}; + +/** + * 获取证书详情 + * @param {Object} data - 请求参数 + * @param {number} data.id - 证书ID + * @returns {Promise<{ + * id: number, + * name: string, + * code: string, + * templateId: number, + * remark: string, + * status: string, + * sort: number, + * createdTime: string, + * template: { + * id: number, + * version: number, + * templateType: string, + * docxTemplateUrl: string, + * isActive: boolean, + * status: string, + * createdTime: string, + * placeholders: Array<{ + * id: number, + * templateId: number, + * placeholderKey: string, + * displayName: string, + * placeholderType: string, + * defaultValue: string, + * isRequired: boolean, + * validationRule: string, + * description: string, + * sort: number + * }> + * } + * }>} + */ +export const certificateDetailPost = (data) => { + return http.post('/certificate/detail', data); +}; + +/** + * 删除单个证书 + * @param {Object} data - 删除参数 + * @param {number} data.id - 证书ID + */ +export const certificateDeleteDelete = (data) => { + return http.delete('/certificate/delete', { data }); +}; + +/** + * 修改证书状态 + * @param {Object} data - 状态参数 + * @param {number} data.id - 证书ID + * @param {string} data.status - 状态 (Enable=启用, Disable=禁用) + */ +export const certificateSetstatusPatch = (data) => { + return http.patch('/certificate/setstatus', data); +}; \ No newline at end of file diff --git a/src/api/match/coupon.js b/src/api/match/coupon.js new file mode 100644 index 0000000..5449253 --- /dev/null +++ b/src/api/match/coupon.js @@ -0,0 +1,116 @@ +import { BaseApi } from '../baseApi'; +import { http } from '../../utils/request'; + +// ==================== 优惠券管理 ==================== + +/** + * 优惠券分页查询 + * @param {Object} data - 查询参数 + * @param {number} [data.pageNo] - 当前页码 + * @param {number} [data.pageSize] - 每页条数 + * @param {string} [data.name] - 优惠券名称 (模糊查询) + * @param {number} [data.type] - 优惠券类型 (1:满减券, 2:折扣券, 3:代金券) + * @returns {Promise<{ + * pageNo: number, + * pageSize: number, + * pages: number, + * total: number, + * rows: Array<{ + * id: number, + * name: string, + * type: number, + * value: number, + * startTime: string, + * endTime: string, + * eventNames: string, + * eventIds: Array, + * redemptionCode: string, + * totalQuantity: number, + * claimedQuantity: number, + * usedQuantity: number, + * createdTime: string + * }>, + * totalPage: number + * }>} + */ +export const couponPage = (data) => { + return http.post('/coupon/page', data); +}; + +/** + * 添加优惠券 + * @param {Object} data - 优惠券信息 + * @param {string} data.name - 优惠券名称 + * @param {number} data.type - 优惠券类型 (1:满减券, 2:折扣券, 3:代金券) + * @param {number} data.value - 优惠券面值 + * @param {string} data.startTime - 开始时间 (格式:2026-03-08T18:23:19.664Z) + * @param {string} data.endTime - 结束时间 (格式:2026-03-08T18:23:19.664Z) + * @param {Array} data.eventIds - 适用赛事ID列表 + * @param {number} data.totalQuantity - 总数量 + */ +export const couponAdd = (data) => { + return http.post('/coupon', data); +}; + +/** + * 更新优惠券 + * @param {Object} data - 优惠券信息 + * @param {number} data.id - 优惠券ID + * @param {string} data.name - 优惠券名称 + * @param {number} data.type - 优惠券类型 (1:满减券, 2:折扣券, 3:代金券) + * @param {number} data.value - 优惠券面值 + * @param {string} data.startTime - 开始时间 (格式:2026-03-08T18:23:19.665Z) + * @param {string} data.endTime - 结束时间 (格式:2026-03-08T18:23:19.665Z) + * @param {Array} data.eventIds - 适用赛事ID列表 + * @param {number} data.totalQuantity - 总数量 + */ +export const couponEdit = (data) => { + return http.put('/coupon', data); +}; + +/** + * 批量删除优惠券 + * @param {Array} data - 优惠券ID数组 + */ +export const couponDelete = (data) => { + return http.delete('/coupon', { data }); +}; + +/** + * 生成兑换码 + * @param {number} id - 优惠券ID (路径参数) + * @returns {Promise} - 生成的兑换码 + */ +export const couponGeneratecodePost = (id) => { + return http.post(`/coupon/generatecode/${id}`); +}; + +/** + * 获取赛事列表(下拉选择用) + * @returns {Promise>} + */ +export const couponEventlistGet = () => { + return http.get('/coupon/eventlist'); +}; + +/** + * 删除单个优惠券 + * @param {Object} data - 删除参数 + * @param {number} data.id - 优惠券ID + */ +export const couponDeleteDelete = (data) => { + return http.delete('/coupon/delete', { data }); +}; + +/** + * 修改优惠券状态 + * @param {Object} data - 状态参数 + * @param {number} data.id - 优惠券ID + * @param {string} data.status - 状态 (Enable=启用, Disable=禁用) + */ +export const couponSetstatusPatch = (data) => { + return http.patch('/coupon/setstatus', data); +}; \ No newline at end of file diff --git a/src/api/match/merchant.js b/src/api/match/merchant.js new file mode 100644 index 0000000..3ba71a6 --- /dev/null +++ b/src/api/match/merchant.js @@ -0,0 +1,106 @@ +import { BaseApi } from '../baseApi'; +import { http } from '../../utils/request'; + +// ==================== 商户管理 ==================== + +/** + * 商户分页查询 + * @param {Object} params - 查询参数 + * @param {string} [params.MerchantName] - 商户名称 + * @param {string} [params.ContactPhone] - 联系电话 + * @param {string} [params.AuditStatus] - 审核状态 (PendingSubmission=待提交, PendingAudit=待审核, Approved=审核通过, Rejected=驳回) + * @param {string} [params.StartTime] - 开始时间 + * @param {string} [params.EndTime] - 结束时间 + * @param {number} [params.PageNo] - 页码 + * @param {number} [params.PageSize] - 每页条数 + */ +export const merchantPageGet = (params) => { + return http.get('/merchant/page', {params}); +}; + +/** + * 添加商户 + * @param {Object} data - 商户信息 + * @param {string} data.merchantName - 商户名称 + * @param {string} data.creditCode - 统一信用代码 + * @param {string} data.bankName - 开户银行 + * @param {string} data.accountNumber - 银行账号 + * @param {string} data.businessLicenseUrl - 营业执照URL + * @param {string} data.contactPhone - 联系电话 + */ +export const merchantAddPost = (data) => { + return http.post('/merchant/add', data); +}; + +/** + * 更新商户 + * @param {Object} data - 商户信息 + * @param {string} data.merchantName - 商户名称 + * @param {string} data.creditCode - 统一信用代码 + * @param {string} data.bankName - 开户银行 + * @param {string} data.accountNumber - 银行账号 + * @param {string} data.businessLicenseUrl - 营业执照URL + * @param {string} data.contactPhone - 联系电话 + * @param {number} data.id - 商户ID + */ +export const merchantEditPut = (data) => { + return http.put('/merchant/edit', data); +}; + +/** + * 删除商户(支持批量) + * @param {Array} data - 商户ID数组 + */ +export const merchantDeletePost = (data) => { + return http.post('/merchant/delete', data); +}; + +/** + * 删除商户 + * @param {Object} data - 删除参数 + * @param {number} data.id - 商户ID + */ +export const merchantDeleteDelete = (data) => { + return http.delete('/merchant/delete', { data }); +}; + +/** + * 获取商户详情 + * @param {Object} params - 查询参数 + * @param {number} params.id - 商户ID + */ +export const merchantDetailGet = (params) => { + return http.get('/merchant/detail', params); +}; + +/** + * 审核商户 + * @param {Object} data - 审核参数 + * @param {Array} data.ids - 商户ID数组 + * @param {string} data.status - 审核状态 (PendingSubmission=待提交, PendingAudit=待审核, Approved=审核通过, Rejected=驳回) + * @param {string} [data.remark] - 审核备注 + */ +export const merchantAuditPost = (data) => { + return http.post('/merchant/audit', data); +}; + +/** + * 发放优惠券 + * @param {Object} data - 发放参数 + * @param {Array} data.merchantIds - 商户ID数组 + * @param {number} data.couponId - 优惠券ID + * @param {number} data.count - 发放数量 + */ +export const merchantIssuecouponPost = (data) => { + return http.post('/merchant/issuecoupon', data); +}; + +/** + * 修改状态 + * @param {Object} data - 状态参数 + * @param {number} data.id - 商户ID + * @param {string} data.status - 状态 (Enable=启用, Disable=禁用) + */ +export const merchantSetstatusPatch = (data) => { + return http.patch('/merchant/setstatus', data); +}; \ No newline at end of file diff --git a/src/api/match/project.js b/src/api/match/project.js new file mode 100644 index 0000000..0074ca8 --- /dev/null +++ b/src/api/match/project.js @@ -0,0 +1,98 @@ +import { BaseApi } from '../baseApi'; +import { http } from '../../utils/request'; + +// ==================== 项目管理 ==================== + +/** + * 项目分页查询 + * @param {Object} params - 查询参数 + * @param {number} [params.EventId] - 赛事ID + * @param {string} [params.ProjectName] - 项目名称 (模糊查询) + * @param {number} [params.ProjectTypeId] - 项目类型ID + * @param {number} [params.PageNo] - 当前页码 + * @param {number} [params.PageSize] - 页码容量 + */ +export const projectPageGet = (params) => { + return http.post('/project/page', {params}); +}; + +/** + * 添加项目 + * @param {Object} data - 项目信息 + * @param {number} data.eventId - 赛事ID + * @param {string} data.name - 项目名称 + * @param {number} data.projectTypeId - 项目类型ID + * @param {number} data.completionCount - 完成人数 + * @param {number} data.fee - 费用 + * @param {number} data.durationMinutes - 时长(分钟) + * @param {number} data.durationSeconds - 时长(秒) + * @param {number} data.venueCount - 场地数量 + * @param {number} data.sortIndex - 排序索引 + * @param {Array} data.groups - 组别信息列表 + * @param {string} data.groups[].groupName - 组别名称 + * @param {string} data.groups[].birthDateStart - 出生日期开始 (格式:2026-03-08T16:08:27.652Z) + * @param {string} data.groups[].birthDateEnd - 出生日期结束 (格式:2026-03-08T16:08:27.652Z) + * @param {string} data.groups[].gender - 性别 (Male=男, Female=女, Mixed=混合) + */ +export const projectAddPost = (data) => { + return http.post('/project/add', data); +}; + +/** + * 更新项目 + * @param {Object} data - 项目信息 + * @param {number} data.id - 项目ID + * @param {number} data.eventId - 赛事ID + * @param {string} data.name - 项目名称 + * @param {number} data.projectTypeId - 项目类型ID + * @param {number} data.completionCount - 完成次数/达标次数 + * @param {number} data.fee - 费用 + * @param {number} data.durationMinutes - 时长(分钟) + * @param {number} data.durationSeconds - 时长(秒) + * @param {number} data.venueCount - 场地数量 + * @param {number} data.sortIndex - 排序索引 + * @param {Array} data.groups - 组别信息列表 + * @param {string} data.groups[].groupName - 组别名称 + * @param {string} data.groups[].birthDateStart - 出生日期开始 (格式:2026-03-08T16:08:27.653Z) + * @param {string} data.groups[].birthDateEnd - 出生日期结束 (格式:2026-03-08T16:08:27.653Z) + * @param {string} data.groups[].gender - 性别 (Male=男, Female=女, Mixed=混合) + */ +export const projectEditPut = (data) => { + return http.put('/project/edit', data); +}; + +/** + * 删除项目(支持批量) + * @param {Array} data - 项目ID数组 + */ +export const projectDeletePost = (data) => { + return http.post('/project/delete', data); +}; + +/** + * 删除项目 + * @param {Object} data - 删除参数 + * @param {number} data.id - 项目ID + */ +export const projectDeleteDelete = (data) => { + return http.delete('/project/delete', { data }); +}; + +/** + * 获取项目详情 + * @param {Object} params - 查询参数 + * @param {number} params.id - 项目ID + */ +export const projectDetailGet = (params) => { + return http.get('/project/detail', params); +}; + +/** + * 修改项目状态 + * @param {Object} data - 状态参数 + * @param {number} data.id - 项目ID + * @param {string} data.status - 状态 (Enable=启用, Disable=禁用) + */ +export const projectSetstatusPatch = (data) => { + return http.patch('/project/setstatus', data); +}; \ No newline at end of file diff --git a/src/components/ProTable/hooks/useTable.ts b/src/components/ProTable/hooks/useTable.ts index 4f5a76f..f4d8938 100644 --- a/src/components/ProTable/hooks/useTable.ts +++ b/src/components/ProTable/hooks/useTable.ts @@ -61,8 +61,13 @@ export const useTable = ( if (!api) return; try { state.loading = true; + // 先把初始化参数和分页参数放到总参数里面 Object.assign(state.totalParam, initParam, isPageable ? pageParam.value : {}); + // console.log('我是分页参数', pageParam.value); + // console.log('我是总参数', state.totalParam); + // console.log('我是查询参数', state.searchParam); + let { data } = await api({ ...state.searchInitParam, ...state.totalParam }); dataCallBack && (data = dataCallBack(data)); state.tableData = isPageable ? data.rows ?? data.items : data; diff --git a/src/views/match/book/index.vue b/src/views/match/book/index.vue index 0db4e92..f3041f3 100644 --- a/src/views/match/book/index.vue +++ b/src/views/match/book/index.vue @@ -1,29 +1,27 @@