Files
martial-web/src/api/martial/activitySchedule.js
T
DevOpsandClaude Opus 4.5 694b955cef 实现赛程表导出功能
- 添加 exportSchedule API 调用后端导出接口
- 实现 handleExport 方法,支持下载 Excel 文件
- 文件名格式:赛程表_赛事名称.xlsx

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 13:45:09 +08:00

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'
})
}