fix bugs
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-12-12 17:54:40 +08:00
parent 5b806e29b7
commit 669f29878b
27 changed files with 2781 additions and 4256 deletions

View File

@@ -88,7 +88,8 @@ export const saveAndLockSchedule = (competitionId) => {
return request({
url: '/martial/schedule/save-and-lock',
method: 'post',
data: { competitionId }
data: { competitionId },
timeout: 60000 // 设置60秒超时,因为锁定操作可能耗时较长
})
}
@@ -103,6 +104,82 @@ export const saveDraftSchedule = (data) => {
return request({
url: '/martial/schedule/save-draft',
method: 'post',
data,
timeout: 60000 // 设置60秒超时,因为保存草稿可能涉及大量数据
})
}
/**
* 触发自动编排
* @param {Number} competitionId - 赛事ID
*/
export const triggerAutoArrange = (competitionId) => {
return request({
url: '/martial/schedule/auto-arrange',
method: 'post',
data: { competitionId },
timeout: 60000 // 设置60秒超时,因为自动编排可能耗时较长
})
}
/**
* 移动赛程分组到指定场地和时间段
* @param {Object} data - 移动请求数据
* @param {Number} data.groupId - 分组ID
* @param {Number} data.targetVenueId - 目标场地ID
* @param {Number} data.targetTimeSlotIndex - 目标时间段索引
*/
export const moveScheduleGroup = (data) => {
return request({
url: '/martial/schedule/move-group',
method: 'post',
data
})
}
// ==================== 调度功能接口 ====================
/**
* 获取调度数据
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
* @param {Number} params.venueId - 场地ID
* @param {Number} params.timeSlotIndex - 时间段索引
*/
export const getDispatchData = (params) => {
return request({
url: '/martial/schedule/dispatch-data',
method: 'get',
params
})
}
/**
* 调整出场顺序
* @param {Object} data - 调整请求数据
* @param {Number} data.detailId - 编排明细ID
* @param {Number} data.participantId - 参赛者记录ID
* @param {String} data.action - 调整动作(move_up/move_down/swap)
* @param {Number} data.targetOrder - 目标顺序(交换时使用)
*/
export const adjustOrder = (data) => {
return request({
url: '/martial/schedule/adjust-order',
method: 'post',
data
})
}
/**
* 批量保存调度
* @param {Object} data - 保存调度数据
* @param {Number} data.competitionId - 赛事ID
* @param {Array} data.adjustments - 调整列表
*/
export const saveDispatch = (data) => {
return request({
url: '/martial/schedule/save-dispatch',
method: 'post',
data
})
}

View File

@@ -88,6 +88,21 @@ export const exportReferees = (params) => {
})
}
/**
* 导出工作人员名单Excel
* @param {Object} params - 导出参数
* @param {Number} params.competitionId - 赛事ID
* @param {String} params.role - 角色类型(可选)
*/
export const exportStaff = (params) => {
return request({
url: '/api/blade-martial/export/staff',
method: 'get',
params,
responseType: 'blob'
})
}
/**
* 导出奖牌榜Excel
* @param {Object} params - 导出参数

View File

@@ -99,9 +99,8 @@ export const batchSendInvites = (data) => {
*/
export const resendInvite = (id) => {
return request({
url: '/api/blade-martial/judgeInvite/resend',
method: 'post',
params: { id }
url: `/api/blade-martial/judgeInvite/resend/${id}`,
method: 'post'
})
}
@@ -124,14 +123,13 @@ export const replyInvite = (data) => {
/**
* 取消邀请
* @param {Number} id - 邀请ID
* @param {String} cancelReason - 取消原因
* @param {String} reason - 取消原因
*/
export const cancelInvite = (id, cancelReason) => {
export const cancelInvite = (id, reason) => {
return request({
url: '/api/blade-martial/judgeInvite/cancel',
url: `/api/blade-martial/judgeInvite/cancel/${id}`,
method: 'post',
params: { id },
data: { cancelReason }
params: { reason }
})
}
@@ -141,9 +139,8 @@ export const cancelInvite = (id, cancelReason) => {
*/
export const confirmInvite = (id) => {
return request({
url: '/api/blade-martial/judgeInvite/confirm',
method: 'post',
params: { id }
url: `/api/blade-martial/judgeInvite/confirm/${id}`,
method: 'post'
})
}
@@ -173,15 +170,14 @@ export const getAcceptedJudges = (competitionId) => {
/**
* 从裁判库导入
* @param {Object} data - 导入参数
* @param {Number} data.competitionId - 赛事ID
* @param {Array} data.judgeIds - 裁判ID数组从裁判库选择
* @param {Number} competitionId - 赛事ID
* @param {String} judgeIds - 裁判ID逗号分隔
*/
export const importFromJudgePool = (data) => {
export const importFromJudgePool = (competitionId, judgeIds) => {
return request({
url: '/api/blade-martial/judgeInvite/import-from-pool',
url: '/api/blade-martial/judgeInvite/import/pool',
method: 'post',
data
params: { competitionId, judgeIds }
})
}
@@ -201,13 +197,70 @@ export const exportInvites = (params) => {
/**
* 发送提醒消息
* @param {Number} id - 邀请ID
* @param {String} reminderMessage - 提醒消息
* @param {String} message - 提醒消息
*/
export const sendReminder = (id, reminderMessage) => {
export const sendReminder = (id, message) => {
return request({
url: '/api/blade-martial/judgeInvite/send-reminder',
url: `/api/blade-martial/judgeInvite/reminder/${id}`,
method: 'post',
params: { id },
data: { reminderMessage }
params: { message }
})
}
/**
* 生成邀请码
* @param {Object} data - 生成参数
* @param {Number} data.competitionId - 赛事ID
* @param {Number} data.judgeId - 评委ID
* @param {String} data.role - 角色judge/chief_judge
* @param {Number} data.venueId - 场地ID普通评委必填
* @param {String} data.projects - 项目列表JSON
* @param {Number} data.expireDays - 过期天数默认30
*/
export const generateInviteCode = (data) => {
return request({
url: '/api/blade-martial/judgeInvite/generate',
method: 'post',
data
})
}
/**
* 批量生成邀请码
* @param {Object} data - 批量生成参数
* @param {Number} data.competitionId - 赛事ID
* @param {Array} data.judgeIds - 评委ID数组
* @param {String} data.role - 角色默认judge
* @param {Number} data.expireDays - 过期天数默认30
*/
export const batchGenerateInviteCode = (data) => {
return request({
url: '/api/blade-martial/judgeInvite/generate/batch',
method: 'post',
data
})
}
/**
* 重新生成邀请码
* @param {Number} inviteId - 邀请ID
*/
export const regenerateInviteCode = (inviteId) => {
return request({
url: `/api/blade-martial/judgeInvite/regenerate/${inviteId}`,
method: 'put'
})
}
/**
* 查询评委的邀请码
* @param {Number} competitionId - 赛事ID
* @param {Number} judgeId - 评委ID
*/
export const getInviteByJudge = (competitionId, judgeId) => {
return request({
url: '/api/blade-martial/judgeInvite/byJudge',
method: 'get',
params: { competitionId, judgeId }
})
}

View File

@@ -35,6 +35,30 @@ export const getProjectDetail = (id) => {
})
}
/**
* 新增项目
* @param {Object} data - 项目数据
*/
export const addProject = (data) => {
return request({
url: '/api/martial/project/save',
method: 'post',
data
})
}
/**
* 修改项目
* @param {Object} data - 项目数据
*/
export const updateProject = (data) => {
return request({
url: '/api/martial/project/update',
method: 'post',
data
})
}
/**
* 新增或修改项目
* @param {Object} data - 项目数据
@@ -73,6 +97,31 @@ export const removeProject = (ids) => {
})
}
/**
* 导入项目
* @param {Object} data - 导入数据
*/
export const importProjects = (data) => {
return request({
url: '/api/martial/project/import',
method: 'post',
data
})
}
/**
* 导出项目
* @param {Object} params - 导出参数
*/
export const exportProjects = (params) => {
return request({
url: '/api/martial/project/export',
method: 'get',
params,
responseType: 'blob'
})
}
/**
* 获取赛事的项目列表(不分页,用于下拉选择)
* @param {Number} competitionId - 赛事ID

View File

@@ -232,3 +232,42 @@ export const exportResults = (params) => {
responseType: 'blob'
})
}
/**
* 导出获奖名单
* @param {Object} params - 查询参数
*/
export const exportAwardList = (params) => {
return request({
url: '/api/blade-martial/result/export-award',
method: 'get',
params,
responseType: 'blob'
})
}
/**
* 生成单个证书
* @param {Object} data - 证书参数
*/
export const generateCertificate = (data) => {
return request({
url: '/api/blade-martial/result/certificate/generate',
method: 'post',
data,
responseType: 'blob'
})
}
/**
* 批量生成证书
* @param {Object} data - 批量证书参数
*/
export const batchGenerateCertificates = (data) => {
return request({
url: '/api/blade-martial/result/certificate/batch-generate',
method: 'post',
data,
responseType: 'blob'
})
}

115
src/api/martial/rules.js Normal file
View File

@@ -0,0 +1,115 @@
import request from '@/axios'
// 获取赛事列表
export const getCompetitionList = (params) => {
return request({
url: '/api/martial/competition/list',
method: 'get',
params
})
}
// 获取赛事规程(小程序端)
export const getCompetitionRules = (params) => {
return request({
url: '/api/martial/competition/rules',
method: 'get',
params
})
}
// ==================== 附件管理 ====================
// 获取附件列表
export const getAttachmentList = (params) => {
return request({
url: '/api/martial/competition/rules/attachment/list',
method: 'get',
params
})
}
// 保存附件
export const saveAttachment = (data) => {
return request({
url: '/api/martial/competition/rules/attachment/save',
method: 'post',
data
})
}
// 删除附件
export const removeAttachment = (params) => {
return request({
url: '/api/martial/competition/rules/attachment/remove',
method: 'post',
params
})
}
// ==================== 章节管理 ====================
// 获取章节列表
export const getChapterList = (params) => {
return request({
url: '/api/martial/competition/rules/chapter/list',
method: 'get',
params
})
}
// 保存章节
export const saveChapter = (data) => {
return request({
url: '/api/martial/competition/rules/chapter/save',
method: 'post',
data
})
}
// 删除章节
export const removeChapter = (params) => {
return request({
url: '/api/martial/competition/rules/chapter/remove',
method: 'post',
params
})
}
// ==================== 章节内容管理 ====================
// 获取章节内容列表
export const getContentList = (params) => {
return request({
url: '/api/martial/competition/rules/content/list',
method: 'get',
params
})
}
// 保存章节内容
export const saveContent = (data) => {
return request({
url: '/api/martial/competition/rules/content/save',
method: 'post',
data
})
}
// 批量保存章节内容
export const batchSaveContents = (data) => {
return request({
url: '/api/martial/competition/rules/content/batch-save',
method: 'post',
data
})
}
// 删除章节内容
export const removeContent = (params) => {
return request({
url: '/api/martial/competition/rules/content/remove',
method: 'post',
params
})
}