2026-03-23 18:01:01 +08:00
|
|
|
|
import { http } from '../../utils/request';
|
|
|
|
|
|
|
|
|
|
|
|
// ==================== 用户端参赛记录管理 ====================
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 1. 列表查询
|
|
|
|
|
|
* @param {Object} params - 查询参数
|
|
|
|
|
|
* @param {number} [params.EventId] - 赛事ID (可选)
|
|
|
|
|
|
* @param {string} [params.Status] - 状态 (可选)
|
|
|
|
|
|
* @param {string} [params.Keyword] - 关键字搜索 (队伍名/赛事名)
|
|
|
|
|
|
* @param {number} [params.PageNo] - 当前页码
|
|
|
|
|
|
* @param {number} [params.PageSize] - 每页条数
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* pageNo: number,
|
|
|
|
|
|
* pageSize: number,
|
|
|
|
|
|
* pages: number,
|
|
|
|
|
|
* total: number,
|
|
|
|
|
|
* rows: Array<{
|
|
|
|
|
|
* registrationId: number,
|
|
|
|
|
|
* eventName: string,
|
|
|
|
|
|
* teamName: string,
|
|
|
|
|
|
* status: string,
|
|
|
|
|
|
* createTime: string,
|
|
|
|
|
|
* updateTime: string,
|
|
|
|
|
|
* payStatus: string,
|
|
|
|
|
|
* certStatus: string,
|
|
|
|
|
|
* hasMaterial: boolean,
|
|
|
|
|
|
* hasVoucher: boolean,
|
|
|
|
|
|
* memberCount: number,
|
|
|
|
|
|
* maxMember: number,
|
|
|
|
|
|
* expireTime: string
|
|
|
|
|
|
* }>
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordListGet = (params) => {
|
|
|
|
|
|
return http.get('/usereventrecord/list', { params });
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 2. 取消报名
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* code: number,
|
|
|
|
|
|
* message: string,
|
|
|
|
|
|
* data: boolean,
|
|
|
|
|
|
* success: boolean
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordCancelPost = (registrationid) => {
|
|
|
|
|
|
return http.post(`/usereventrecord/cancel/${registrationid}`);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 3. 上传素材
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @param {Object} data - 素材表单数据
|
|
|
|
|
|
* @param {Array<File>} data.Files - 文件列表 (最多5个)
|
|
|
|
|
|
* @param {string} data.MaterialType - 素材类型 (图片/视频/其他)
|
|
|
|
|
|
* @param {string} [data.Description] - 描述 (可选)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* code: number,
|
|
|
|
|
|
* message: string,
|
|
|
|
|
|
* data: Array<{
|
|
|
|
|
|
* materialId: string,
|
|
|
|
|
|
* ossUrl: string,
|
|
|
|
|
|
* fileName: string,
|
|
|
|
|
|
* fileSize: number,
|
|
|
|
|
|
* uploadTime: string
|
|
|
|
|
|
* }>,
|
|
|
|
|
|
* success: boolean
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordMaterialPost = (registrationid, data) => {
|
|
|
|
|
|
const formData = new FormData();
|
|
|
|
|
|
// 添加文件数组
|
|
|
|
|
|
if (data.Files && data.Files.length) {
|
|
|
|
|
|
data.Files.forEach(file => {
|
|
|
|
|
|
formData.append('Files', file);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
// 添加其他字段
|
|
|
|
|
|
formData.append('MaterialType', data.MaterialType);
|
|
|
|
|
|
if (data.Description) formData.append('Description', data.Description);
|
|
|
|
|
|
|
|
|
|
|
|
return http.post(`/usereventrecord/material/${registrationid}`, formData, {
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Content-Type': 'multipart/form-data'
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 4. 上传付款凭证
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @param {Object} data - 凭证表单数据
|
|
|
|
|
|
* @param {File} data.File - 凭证图片 (单张)
|
|
|
|
|
|
* @param {number} data.PayAmount - 支付金额
|
|
|
|
|
|
* @param {string} data.PayTime - 支付时间 (ISO格式)
|
|
|
|
|
|
* @param {string} data.PayChannel - 支付渠道 (微信/支付宝/银行转账)
|
|
|
|
|
|
* @param {string} [data.TransactionId] - 交易流水号 (可选)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* code: number,
|
|
|
|
|
|
* message: string,
|
|
|
|
|
|
* data: {
|
|
|
|
|
|
* voucherId: string,
|
|
|
|
|
|
* ossUrl: string,
|
|
|
|
|
|
* auditStatus: string
|
|
|
|
|
|
* },
|
|
|
|
|
|
* success: boolean
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordVoucherPost = (registrationid, data) => {
|
|
|
|
|
|
const formData = new FormData();
|
|
|
|
|
|
formData.append('File', data.File);
|
|
|
|
|
|
formData.append('PayAmount', data.PayAmount);
|
|
|
|
|
|
formData.append('PayTime', data.PayTime);
|
|
|
|
|
|
formData.append('PayChannel', data.PayChannel);
|
|
|
|
|
|
if (data.TransactionId) formData.append('TransactionId', data.TransactionId);
|
|
|
|
|
|
|
|
|
|
|
|
return http.post(`/usereventrecord/voucher/${registrationid}`, formData, {
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Content-Type': 'multipart/form-data'
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 5.1 查看队员列表
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<Array<{
|
|
|
|
|
|
* userId: number,
|
|
|
|
|
|
* realName: string,
|
|
|
|
|
|
* phone: string,
|
|
|
|
|
|
* email: string,
|
|
|
|
|
|
* role: string,
|
|
|
|
|
|
* inviteStatus: string,
|
|
|
|
|
|
* joinTime: string
|
|
|
|
|
|
* }>>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordMembersGet = (registrationid) => {
|
|
|
|
|
|
return http.get(`/usereventrecord/members/${registrationid}`);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 5.2 更换队员
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @param {number} userid - 被替换的队员ID (路径参数)
|
|
|
|
|
|
* @param {Object} data - 更换信息
|
|
|
|
|
|
* @param {number} data.newUserId - 新队员用户ID
|
|
|
|
|
|
* @param {string} [data.replaceReason] - 更换原因 (可选)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* code: number,
|
|
|
|
|
|
* message: string,
|
|
|
|
|
|
* data: boolean,
|
|
|
|
|
|
* success: boolean
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordMembersReplacePost = (registrationid, userid, data) => {
|
|
|
|
|
|
return http.post(`/usereventrecord/members/replace/${registrationid}/${userid}`, data);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 6. 查看证书
|
|
|
|
|
|
* @param {number} registrationid - 报名记录ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* code: number,
|
|
|
|
|
|
* message: string,
|
|
|
|
|
|
* data: {
|
|
|
|
|
|
* certUrl: string,
|
|
|
|
|
|
* certNumber: string,
|
|
|
|
|
|
* issueTime: string,
|
|
|
|
|
|
* expireTime: string
|
|
|
|
|
|
* },
|
|
|
|
|
|
* success: boolean
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordCertificateGet = (registrationid) => {
|
|
|
|
|
|
return http.get(`/usereventrecord/certificate/${registrationid}`);
|
2026-04-02 08:42:24 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 7. 获取取消报名预览
|
|
|
|
|
|
* @param {number} registrationId - 报名记录ID (路径参数)
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* registrationId: number,
|
|
|
|
|
|
* eventName: string,
|
|
|
|
|
|
* teamName: string,
|
|
|
|
|
|
* chargeMode: number,
|
|
|
|
|
|
* chargeModeText: string,
|
|
|
|
|
|
* originalAmount: number,
|
|
|
|
|
|
* couponDiscountAmount: number,
|
|
|
|
|
|
* actualPaidAmount: number,
|
|
|
|
|
|
* daysBeforeMatch: number,
|
|
|
|
|
|
* refundRuleDescription: string,
|
|
|
|
|
|
* deductPercentage: number,
|
|
|
|
|
|
* deductAmount: number,
|
|
|
|
|
|
* estimatedRefundAmount: number,
|
|
|
|
|
|
* cancelableMembers: Array<{
|
|
|
|
|
|
* personId: number,
|
|
|
|
|
|
* name: string,
|
|
|
|
|
|
* canCancel: boolean,
|
|
|
|
|
|
* uncancelableReason: string,
|
|
|
|
|
|
* isLeader: boolean
|
|
|
|
|
|
* }>,
|
|
|
|
|
|
* isTeamProject: boolean,
|
|
|
|
|
|
* canPartialCancel: boolean,
|
|
|
|
|
|
* cancelReasons: Array<string>
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordCancelPreviewGet = (registrationId) => {
|
|
|
|
|
|
return http.get(`/usereventrecord/cancel/preview/${registrationId}`);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 8. 执行取消报名
|
|
|
|
|
|
* @param {Object} data - 取消报名数据
|
|
|
|
|
|
* @param {number} data.registrationId - 报名ID
|
|
|
|
|
|
* @param {number} data.cancelType - 取消类型:0-全队取消,1-部分取消
|
|
|
|
|
|
* @param {Array<number>} [data.personIds] - 取消的队员ID列表(部分取消时必填)
|
|
|
|
|
|
* @param {string} data.cancelReason - 取消原因
|
|
|
|
|
|
* @returns {Promise<{
|
|
|
|
|
|
* success: boolean,
|
|
|
|
|
|
* message: string,
|
|
|
|
|
|
* refundAmount: number,
|
|
|
|
|
|
* refundNo: string,
|
|
|
|
|
|
* cancelTime: string
|
|
|
|
|
|
* }>}
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const usereventrecordCancelExecutePost = (data) => {
|
|
|
|
|
|
return http.post('/usereventrecord/cancel/execute', data);
|
2026-03-23 18:01:01 +08:00
|
|
|
|
};
|