- 添加 exportSchedule API 调用后端导出接口 - 实现 handleExport 方法,支持下载 Excel 文件 - 文件名格式:赛程表_赛事名称.xlsx 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
199 lines
4.9 KiB
JavaScript
199 lines
4.9 KiB
JavaScript
import request from '@/axios';
|
|
|
|
// ==================== 武术赛事活动日程管理接口 ====================
|
|
|
|
/**
|
|
* 活动日程分页查询
|
|
* @param {Number} current - 当前页,默认1
|
|
* @param {Number} size - 每页条数,默认10
|
|
* @param {Object} params - 查询参数
|
|
* @param {Number} params.competitionId - 赛事ID
|
|
*/
|
|
export const getActivityScheduleList = (current, size, params) => {
|
|
return request({
|
|
url: '/martial/activitySchedule/list',
|
|
method: 'get',
|
|
params: {
|
|
current,
|
|
size,
|
|
...params
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取活动日程详情
|
|
* @param {Number} id - 活动日程ID
|
|
*/
|
|
export const getActivityScheduleDetail = (id) => {
|
|
return request({
|
|
url: '/martial/activitySchedule/detail',
|
|
method: 'get',
|
|
params: { id }
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 新增或修改活动日程
|
|
* @param {Object} data - 活动日程数据
|
|
* @param {String} data.competitionId - 赛事ID
|
|
* @param {String} data.scheduleDate - 日程日期
|
|
* @param {String} data.scheduleTime - 日程时间
|
|
* @param {String} data.eventName - 活动项目
|
|
* @param {String} data.venue - 地点
|
|
* @param {String} data.description - 描述
|
|
* @param {String} data.remark - 备注
|
|
* @param {Number} data.sortOrder - 排序
|
|
*/
|
|
export const submitActivitySchedule = (data) => {
|
|
return request({
|
|
url: '/martial/activitySchedule/submit',
|
|
method: 'post',
|
|
data
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 删除活动日程
|
|
* @param {String} ids - 活动日程ID,多个用逗号分隔
|
|
*/
|
|
export const removeActivitySchedule = (ids) => {
|
|
return request({
|
|
url: '/martial/activitySchedule/remove',
|
|
method: 'post',
|
|
params: { ids }
|
|
})
|
|
}
|
|
|
|
// ==================== 赛程编排接口 ====================
|
|
|
|
/**
|
|
* 获取赛程编排结果
|
|
* @param {Number} competitionId - 赛事ID
|
|
*/
|
|
export const getScheduleResult = (competitionId) => {
|
|
return request({
|
|
url: '/martial/schedule/result',
|
|
method: 'get',
|
|
params: { competitionId },
|
|
timeout: 30000 // 设置30秒超时,因为编排数据较大
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 保存并锁定赛程编排
|
|
* @param {Number} competitionId - 赛事ID
|
|
*/
|
|
export const saveAndLockSchedule = (competitionId) => {
|
|
return request({
|
|
url: '/martial/schedule/save-and-lock',
|
|
method: 'post',
|
|
data: { competitionId },
|
|
timeout: 60000 // 设置60秒超时,因为锁定操作可能耗时较长
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 保存编排草稿
|
|
* @param {Object} data - 编排草稿数据
|
|
* @param {Number} data.competitionId - 赛事ID
|
|
* @param {Boolean} data.isDraft - 是否为草稿
|
|
* @param {Array} data.competitionGroups - 竞赛分组数据
|
|
*/
|
|
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
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 导出赛程表
|
|
* @param {Number} competitionId - 赛事ID
|
|
*/
|
|
export const exportSchedule = (competitionId) => {
|
|
return request({
|
|
url: '/martial/export/schedule',
|
|
method: 'get',
|
|
params: { competitionId },
|
|
responseType: 'blob'
|
|
})
|
|
}
|