fix bugs
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-12-11 16:56:19 +08:00
parent ab69968bda
commit 5b806e29b7
45 changed files with 13744 additions and 6364 deletions

View File

@@ -8,12 +8,10 @@ import request from '@/axios';
* @param {Number} size - 每页条数,默认10
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
* @param {String} params.activityDate - 活动日期(可选)
* @param {Number} params.activityType - 活动类型(可选)
*/
export const getActivityScheduleList = (current, size, params) => {
return request({
url: '/api/blade-martial/activitySchedule/list',
url: '/martial/activitySchedule/list',
method: 'get',
params: {
current,
@@ -29,42 +27,27 @@ export const getActivityScheduleList = (current, size, params) => {
*/
export const getActivityScheduleDetail = (id) => {
return request({
url: '/api/blade-martial/activitySchedule/detail',
url: '/martial/activitySchedule/detail',
method: 'get',
params: { id }
})
}
/**
* 新增活动日程
* 新增或修改活动日程
* @param {Object} data - 活动日程数据
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.activityDate - 活动日期
* @param {String} data.startTime - 开始时间
* @param {String} data.endTime - 结束时间
* @param {Number} data.activityType - 活动类型1开幕式2闭幕式3比赛4培训5会议6其他
* @param {String} data.activityName - 活动名称
* @param {String} data.activityLocation - 活动地点
* @param {String} data.activityDescription - 活动描述
* @param {String} data.organizer - 组织者
* @param {String} data.participants - 参与人员
* @param {Number} data.sortOrder - 排序序号
* @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 addActivity = (data) => {
export const submitActivitySchedule = (data) => {
return request({
url: '/api/blade-martial/activitySchedule/save',
method: 'post',
data
})
}
/**
* 修改活动日程
* @param {Object} data - 活动日程数据
*/
export const updateActivity = (data) => {
return request({
url: '/api/blade-martial/activitySchedule/update',
url: '/martial/activitySchedule/submit',
method: 'post',
data
})
@@ -74,218 +57,52 @@ export const updateActivity = (data) => {
* 删除活动日程
* @param {String} ids - 活动日程ID,多个用逗号分隔
*/
export const removeActivity = (ids) => {
export const removeActivitySchedule = (ids) => {
return request({
url: '/api/blade-martial/activitySchedule/remove',
url: '/martial/activitySchedule/remove',
method: 'post',
params: { ids }
})
}
/**
* 批量添加活动日程
* @param {Array} data - 活动日程数据数组
*/
export const batchAddActivities = (data) => {
return request({
url: '/api/blade-martial/activitySchedule/batch-save',
method: 'post',
data
})
}
// ==================== 赛程编排接口 ====================
/**
* 获取某日期的活动日程
* @param {Number} competitionId - 赛事ID
* @param {String} activityDate - 活动日期
*/
export const getActivitiesByDate = (competitionId, activityDate) => {
return request({
url: '/api/blade-martial/activitySchedule/list-by-date',
method: 'get',
params: { competitionId, activityDate }
})
}
/**
* 获取日期范围内的活动日程
* @param {Number} competitionId - 赛事ID
* @param {String} startDate - 开始日期
* @param {String} endDate - 结束日期
*/
export const getActivitiesByDateRange = (competitionId, startDate, endDate) => {
return request({
url: '/api/blade-martial/activitySchedule/list-by-range',
method: 'get',
params: { competitionId, startDate, endDate }
})
}
/**
* 获取某类型的活动日程
* @param {Number} competitionId - 赛事ID
* @param {Number} activityType - 活动类型
*/
export const getActivitiesByType = (competitionId, activityType) => {
return request({
url: '/api/blade-martial/activitySchedule/list-by-type',
method: 'get',
params: { competitionId, activityType }
})
}
/**
* 获取赛事的所有活动日程(不分页)
* 获取赛程编排结果
* @param {Number} competitionId - 赛事ID
*/
export const getAllActivities = (competitionId) => {
export const getScheduleResult = (competitionId) => {
return request({
url: '/api/blade-martial/activitySchedule/all',
method: 'get',
params: { competitionId }
})
}
/**
* 调整活动日程顺序
* @param {Object} data - 调整参数
* @param {Number} data.id - 活动日程ID
* @param {Number} data.targetOrder - 目标顺序
*/
export const adjustActivityOrder = (data) => {
return request({
url: '/api/blade-martial/activitySchedule/adjust-order',
method: 'post',
data
})
}
/**
* 检查活动时间冲突
* @param {Object} data - 检查参数
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.activityDate - 活动日期
* @param {String} data.startTime - 开始时间
* @param {String} data.endTime - 结束时间
* @param {String} data.activityLocation - 活动地点
* @param {Number} data.excludeId - 排除的活动ID编辑时使用
*/
export const checkActivityConflict = (data) => {
return request({
url: '/api/blade-martial/activitySchedule/check-conflict',
method: 'post',
data
})
}
/**
* 复制活动日程到其他日期
* @param {Object} data - 复制参数
* @param {Number} data.sourceActivityId - 源活动ID
* @param {String} data.targetDate - 目标日期
*/
export const copyActivity = (data) => {
return request({
url: '/api/blade-martial/activitySchedule/copy',
method: 'post',
data
})
}
/**
* 获取活动日程日历视图数据
* @param {Number} competitionId - 赛事ID
* @param {String} month - 月份格式YYYY-MM
*/
export const getActivityCalendar = (competitionId, month) => {
return request({
url: '/api/blade-martial/activitySchedule/calendar',
method: 'get',
params: { competitionId, month }
})
}
/**
* 发布活动日程
* @param {Number} id - 活动日程ID
*/
export const publishActivity = (id) => {
return request({
url: '/api/blade-martial/activitySchedule/publish',
method: 'post',
params: { id }
})
}
/**
* 取消活动日程
* @param {Number} id - 活动日程ID
* @param {String} cancelReason - 取消原因
*/
export const cancelActivity = (id, cancelReason) => {
return request({
url: '/api/blade-martial/activitySchedule/cancel',
method: 'post',
params: { id },
data: { cancelReason }
})
}
/**
* 完成活动日程
* @param {Number} id - 活动日程ID
* @param {String} completionNote - 完成备注
*/
export const completeActivity = (id, completionNote) => {
return request({
url: '/api/blade-martial/activitySchedule/complete',
method: 'post',
params: { id },
data: { completionNote }
})
}
/**
* 导出活动日程
* @param {Object} params - 导出参数
*/
export const exportActivities = (params) => {
return request({
url: '/api/blade-martial/activitySchedule/export',
method: 'get',
params,
responseType: 'blob'
})
}
/**
* 导入活动日程
* @param {Number} competitionId - 赛事ID
* @param {File} file - Excel文件
*/
export const importActivities = (competitionId, file) => {
const formData = new FormData()
formData.append('competitionId', competitionId)
formData.append('file', file)
return request({
url: '/api/blade-martial/activitySchedule/import',
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
/**
* 打印活动日程表
* @param {Number} competitionId - 赛事ID
*/
export const printActivitySchedule = (competitionId) => {
return request({
url: '/api/blade-martial/activitySchedule/print',
url: '/martial/schedule/result',
method: 'get',
params: { competitionId },
responseType: 'blob'
timeout: 30000 // 设置30秒超时,因为编排数据较大
})
}
/**
* 保存并锁定赛程编排
* @param {Number} competitionId - 赛事ID
*/
export const saveAndLockSchedule = (competitionId) => {
return request({
url: '/martial/schedule/save-and-lock',
method: 'post',
data: { competitionId }
})
}
/**
* 保存编排草稿
* @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
})
}

View File

@@ -10,7 +10,7 @@ import request from '@/axios';
*/
export const getBannerList = (current, size, params) => {
return request({
url: '/api/blade-martial/banner/list',
url: '/api/martial/banner/list',
method: 'get',
params: {
current,
@@ -26,31 +26,26 @@ export const getBannerList = (current, size, params) => {
*/
export const getBannerDetail = (id) => {
return request({
url: '/api/blade-martial/banner/detail',
url: '/api/martial/banner/detail',
method: 'get',
params: { id }
})
}
/**
* 新增轮播图
* 新增或修改轮播图
* @param {Object} data - 轮播图数据
* @param {String} data.title - 轮播图标题
* @param {Number} data.position - 显示位置(1-首页,2-赛事详情,3-其他)
* @param {String} data.imageUrl - 轮播图图片URL
* @param {String} data.linkUrl - 跳转链接
* @param {Number} data.sortOrder - 排序顺序
* @param {String} data.startTime - 开始显示时间
* @param {String} data.endTime - 结束显示时间
*/
export const addBanner = (data) => {
export const submitBanner = (data) => {
return request({
url: '/api/blade-martial/banner/save',
method: 'post',
data
})
}
/**
* 修改轮播图
* @param {Object} data - 轮播图数据
*/
export const updateBanner = (data) => {
return request({
url: '/api/blade-martial/banner/update',
url: '/api/martial/banner/submit',
method: 'post',
data
})
@@ -62,31 +57,8 @@ export const updateBanner = (data) => {
*/
export const removeBanner = (ids) => {
return request({
url: '/api/blade-martial/banner/remove',
url: '/api/martial/banner/remove',
method: 'post',
params: { ids }
})
}
/**
* 获取启用的轮播图列表(小程序端使用)
*/
export const getActiveBannerList = () => {
return request({
url: '/api/blade-martial/banner/active-list',
method: 'get'
})
}
/**
* 修改轮播图状态
* @param {Number} id - 轮播图ID
* @param {Number} status - 状态0-禁用 1-启用)
*/
export const updateBannerStatus = (id, status) => {
return request({
url: '/api/blade-martial/banner/update-status',
method: 'post',
params: { id, status }
})
}

View File

@@ -1,5 +1,80 @@
import request from '@/axios';
// ==================== 赛事管理接口 ====================
/**
* 赛事列表查询
* @param {Number} current - 当前页
* @param {Number} size - 每页条数
* @param {Object} params - 查询参数
*/
export const getCompetitionList = (current, size, params) => {
return request({
url: '/api/martial/competition/list',
method: 'get',
params: {
current,
size,
...params
}
})
}
/**
* 获取赛事详情
* @param {Number} id - 赛事ID
*/
export const getCompetitionDetail = (id) => {
return request({
url: '/api/martial/competition/detail',
method: 'get',
params: { id }
})
}
/**
* 新增或修改赛事
* @param {Object} data - 赛事数据
* @param {Number} data.id - ID修改时必传
* @param {String} data.competitionName - 赛事名称
* @param {String} data.competitionCode - 赛事编码
* @param {String} data.organizer - 主办单位
* @param {String} data.location - 地区
* @param {String} data.venue - 详细地点
* @param {String} data.registrationStartTime - 报名开始时间
* @param {String} data.registrationEndTime - 报名结束时间
* @param {String} data.competitionStartTime - 比赛开始时间
* @param {String} data.competitionEndTime - 比赛结束时间
* @param {String} data.introduction - 赛事简介
* @param {String} data.posterImages - 宣传图片(JSON)
* @param {String} data.contactPerson - 联系人
* @param {String} data.contactPhone - 联系电话
* @param {String} data.contactEmail - 联系邮箱
* @param {String} data.rules - 竞赛规则
* @param {String} data.requirements - 参赛要求
* @param {String} data.awards - 奖项设置
* @param {String} data.regulationFiles - 规程文件(JSON)
*/
export const submitCompetition = (data) => {
return request({
url: '/api/martial/competition/submit',
method: 'post',
data
})
}
/**
* 删除赛事
* @param {String} ids - 赛事ID,多个用逗号分隔
*/
export const removeCompetition = (ids) => {
return request({
url: '/api/martial/competition/remove',
method: 'post',
params: { ids }
})
}
// ==================== 武术赛事订单管理接口 ====================
/**
@@ -255,89 +330,3 @@ export const removeVenue = (ids) => {
params: { ids }
})
}
// ==================== 赛事管理接口 ====================
/**
* 新增赛事
* @param {Object} data - 赛事数据
* @param {String} data.competitionName - 赛事名称
* @param {String} data.organizer - 主办单位
* @param {String} data.location - 地区
* @param {String} data.venue - 详细地点
* @param {String} data.registrationStartTime - 报名开始时间
* @param {String} data.registrationEndTime - 报名结束时间
* @param {String} data.competitionStartTime - 比赛开始时间
* @param {String} data.competitionEndTime - 比赛结束时间
* @param {String} data.introduction - 赛事简介
* @param {Array} data.posterImages - 宣传图片
* @param {String} data.contactPerson - 联系人
* @param {String} data.contactPhone - 联系电话
* @param {String} data.contactEmail - 联系邮箱
* @param {String} data.rules - 竞赛规则
* @param {String} data.requirements - 参赛要求
* @param {String} data.awards - 奖项设置
* @param {Array} data.regulationFiles - 规程文件
* @param {Array} data.schedule - 活动日程
*/
export const addCompetition = (data) => {
return request({
url: '/api/blade-martial/competition/save',
method: 'post',
data
})
}
/**
* 赛事列表查询
* @param {Number} current - 当前页
* @param {Number} size - 每页条数
* @param {Object} params - 查询参数
*/
export const getCompetitionList = (current, size, params) => {
return request({
url: '/api/blade-martial/competition/list',
method: 'get',
params: {
current,
size,
...params
}
})
}
/**
* 获取赛事详情
* @param {Number} id - 赛事ID
*/
export const getCompetitionDetail = (id) => {
return request({
url: '/api/blade-martial/competition/detail',
method: 'get',
params: { id }
})
}
/**
* 修改赛事
* @param {Object} data - 赛事数据
*/
export const updateCompetition = (data) => {
return request({
url: '/api/blade-martial/competition/update',
method: 'post',
data
})
}
/**
* 删除赛事
* @param {String} ids - 赛事ID,多个用逗号分隔
*/
export const removeCompetition = (ids) => {
return request({
url: '/api/blade-martial/competition/remove',
method: 'post',
params: { ids }
})
}

View File

@@ -14,7 +14,7 @@ import request from '@/axios';
*/
export const getInfoPublishList = (current, size, params) => {
return request({
url: '/api/blade-martial/infoPublish/list',
url: '/api/martial/infoPublish/list',
method: 'get',
params: {
current,
@@ -30,15 +30,16 @@ export const getInfoPublishList = (current, size, params) => {
*/
export const getInfoPublishDetail = (id) => {
return request({
url: '/api/blade-martial/infoPublish/detail',
url: '/api/martial/infoPublish/detail',
method: 'get',
params: { id }
})
}
/**
* 发布信息
* 新增或修改信息(提交)
* @param {Object} data - 信息数据
* @param {Number} data.id - ID修改时必传
* @param {Number} data.competitionId - 赛事ID
* @param {Number} data.infoType - 信息类型1公告2通知3新闻4规则5其他
* @param {String} data.title - 标题
@@ -50,21 +51,9 @@ export const getInfoPublishDetail = (id) => {
* @param {Number} data.isImportant - 是否重要0否1是
* @param {String} data.publishTime - 发布时间(可选,为空则立即发布)
*/
export const publishInfo = (data) => {
export const submitInfo = (data) => {
return request({
url: '/api/blade-martial/infoPublish/publish',
method: 'post',
data
})
}
/**
* 修改信息
* @param {Object} data - 信息数据
*/
export const updateInfo = (data) => {
return request({
url: '/api/blade-martial/infoPublish/update',
url: '/api/martial/infoPublish/submit',
method: 'post',
data
})
@@ -76,7 +65,7 @@ export const updateInfo = (data) => {
*/
export const removeInfo = (ids) => {
return request({
url: '/api/blade-martial/infoPublish/remove',
url: '/api/martial/infoPublish/remove',
method: 'post',
params: { ids }
})

143
src/api/martial/order.js Normal file
View File

@@ -0,0 +1,143 @@
import request from '@/axios';
// ==================== 订单管理接口 ====================
// 注意:后端实际路径为 /martial/registrationOrder
/**
* 订单分页查询
* @param {Number} current - 当前页,默认1
* @param {Number} size - 每页条数,默认10
* @param {Object} params - 查询参数
* @param {String} params.keyword - 关键词(订单号/用户名)
* @param {Number} params.status - 订单状态(0-待支付,1-已支付,2-已取消,3-已退款)
* @param {Number} params.competitionId - 赛事ID
*/
export const getOrderList = (current, size, params = {}) => {
return request({
url: '/api/martial/registrationOrder/list',
method: 'get',
params: {
current,
size,
...params
}
})
}
/**
* 获取订单详情
* @param {Number} id - 订单主键ID
*/
export const getOrderDetail = (id) => {
return request({
url: '/api/martial/registrationOrder/detail',
method: 'get',
params: { id }
})
}
/**
* 创建订单
* @param {Object} data - 订单数据
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.userName - 用户名
* @param {String} data.userPhone - 用户手机号
* @param {Number} data.amount - 订单金额
* @param {Array} data.participants - 参赛人员列表
*/
export const createOrder = (data) => {
return request({
url: '/api/martial/registrationOrder/submit',
method: 'post',
data
})
}
/**
* 更新订单状态
* @param {Number} id - 订单ID
* @param {Number} status - 订单状态
*/
export const updateOrderStatus = (id, status) => {
return request({
url: '/api/martial/registrationOrder/update-status',
method: 'post',
params: { id, status }
})
}
/**
* 删除订单
* @param {String} ids - 订单ID,多个用逗号分隔
*/
export const removeOrder = (ids) => {
return request({
url: '/api/martial/registrationOrder/remove',
method: 'post',
params: { ids }
})
}
/**
* 获取订单报名详情(包含参赛人员、项目统计等)
* @param {Number} orderId - 订单ID
* 注意:此接口后端暂未实现,需要添加
*/
export const getOrderRegistrationDetail = (orderId) => {
return request({
url: '/api/martial/registrationOrder/registration-detail',
method: 'get',
params: { orderId }
})
}
/**
* 获取订单的参赛人员列表
* @param {Number} orderId - 订单ID可选
* @param {Number} competitionId - 赛事ID可选
* 注意:此接口后端暂未实现,可以使用 martial/athlete/list 接口替代
*/
export const getOrderParticipants = (orderIdOrCompetitionId) => {
// 支持传入订单ID或赛事ID
const params = { current: 1, size: 10000 }
// 判断参数类型如果是对象直接使用否则判断是orderId还是competitionId
if (typeof orderIdOrCompetitionId === 'object') {
Object.assign(params, orderIdOrCompetitionId)
} else if (orderIdOrCompetitionId) {
// 默认作为competitionId使用
params.competitionId = orderIdOrCompetitionId
}
return request({
url: '/api/martial/athlete/list',
method: 'get',
params
})
}
/**
* 获取订单的项目统计
* @param {Number} orderId - 订单ID
* 注意:此接口后端暂未实现,需要添加
*/
export const getOrderProjectStats = (orderId) => {
return request({
url: '/api/martial/registrationOrder/project-stats',
method: 'get',
params: { orderId }
})
}
/**
* 获取订单的金额统计
* @param {Number} orderId - 订单ID
* 注意:此接口后端暂未实现,需要添加
*/
export const getOrderAmountStats = (orderId) => {
return request({
url: '/api/martial/registrationOrder/amount-stats',
method: 'get',
params: { orderId }
})
}

View File

@@ -11,7 +11,7 @@ import request from '@/axios';
*/
export const getParticipantList = (competitionId, current, size, params = {}) => {
return request({
url: '/api/blade-martial/participant/list',
url: '/api/martial/athlete/list',
method: 'get',
params: {
competitionId,
@@ -28,14 +28,14 @@ export const getParticipantList = (competitionId, current, size, params = {}) =>
*/
export const getParticipantDetail = (id) => {
return request({
url: '/api/blade-martial/participant/detail',
url: '/api/martial/athlete/detail',
method: 'get',
params: { id }
})
}
/**
* 新增参赛选手
* 新增或修改参赛选手
* @param {Object} data - 选手数据
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.playerName - 选手姓名
@@ -53,7 +53,7 @@ export const getParticipantDetail = (id) => {
*/
export const addParticipant = (data) => {
return request({
url: '/api/blade-martial/participant/save',
url: '/api/martial/athlete/submit',
method: 'post',
data
})
@@ -65,7 +65,7 @@ export const addParticipant = (data) => {
*/
export const updateParticipant = (data) => {
return request({
url: '/api/blade-martial/participant/update',
url: '/api/martial/athlete/submit',
method: 'post',
data
})
@@ -77,7 +77,7 @@ export const updateParticipant = (data) => {
*/
export const removeParticipant = (ids) => {
return request({
url: '/api/blade-martial/participant/remove',
url: '/api/martial/athlete/remove',
method: 'post',
params: { ids }
})
@@ -90,7 +90,7 @@ export const removeParticipant = (ids) => {
*/
export const updateOrder = (id, orderNum) => {
return request({
url: '/api/blade-martial/participant/update-order',
url: '/api/martial/athlete/update-order',
method: 'post',
params: { id, orderNum }
})
@@ -107,7 +107,7 @@ export const importParticipants = (competitionId, file) => {
formData.append('file', file)
return request({
url: '/api/blade-martial/participant/import',
url: '/api/martial/athlete/import',
method: 'post',
data: formData,
headers: {
@@ -122,7 +122,7 @@ export const importParticipants = (competitionId, file) => {
*/
export const exportParticipants = (competitionId) => {
return request({
url: '/api/blade-martial/participant/export',
url: '/api/martial/athlete/export',
method: 'get',
params: { competitionId },
responseType: 'blob'
@@ -135,7 +135,7 @@ export const exportParticipants = (competitionId) => {
*/
export const batchUpdateOrder = (data) => {
return request({
url: '/api/blade-martial/participant/batch-update-order',
url: '/api/martial/athlete/batch-update-order',
method: 'post',
data
})

View File

@@ -10,11 +10,10 @@ import request from '@/axios';
* @param {Number} params.competitionId - 赛事ID
* @param {String} params.projectName - 项目名称(可选)
* @param {String} params.category - 分组类别(可选)
* @param {String} params.eventType - 项目类型(可选)
*/
export const getProjectList = (current, size, params) => {
return request({
url: '/api/blade-martial/project/list',
url: '/api/martial/project/list',
method: 'get',
params: {
current,
@@ -30,41 +29,33 @@ export const getProjectList = (current, size, params) => {
*/
export const getProjectDetail = (id) => {
return request({
url: '/api/blade-martial/project/detail',
url: '/api/martial/project/detail',
method: 'get',
params: { id }
})
}
/**
* 新增项目
* 新增或修改项目
* @param {Object} data - 项目数据
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.projectName - 项目名称
* @param {String} data.projectCode - 项目编码
* @param {String} data.category - 分组类别(男子、女子、团体
* @param {String} data.eventType - 项目类型(套路、散打等)
* @param {Number} data.registrationFee - 报名费
* @param {String} data.registrationStartTime - 报名开始时间
* @param {String} data.registrationEndTime - 报名结束时间
* @param {Number} data.maxParticipants - 最大参赛人数
* @param {String} data.rules - 比赛规则
* @param {String} data.category - 别(男子组/女子组
* @param {Number} data.type - 类型(1-个人,2-双人,3-集体)
* @param {Number} data.minParticipants - 最少参赛人数
* @param {Number} data.maxParticipants - 最多参赛人数
* @param {Number} data.minAge - 最小年龄
* @param {Number} data.maxAge - 最大年龄
* @param {Number} data.genderLimit - 性别限制(0-不限,1-仅男,2-仅女)
* @param {Number} data.estimatedDuration - 预估时长(分钟)
* @param {Number} data.price - 报名费用
* @param {Number} data.difficultyCoefficient - 难度系数
* @param {String} data.description - 项目描述
*/
export const addProject = (data) => {
export const submitProject = (data) => {
return request({
url: '/api/blade-martial/project/save',
method: 'post',
data
})
}
/**
* 修改项目
* @param {Object} data - 项目数据
*/
export const updateProject = (data) => {
return request({
url: '/api/blade-martial/project/update',
url: '/api/martial/project/submit',
method: 'post',
data
})
@@ -76,63 +67,24 @@ export const updateProject = (data) => {
*/
export const removeProject = (ids) => {
return request({
url: '/api/blade-martial/project/remove',
url: '/api/martial/project/remove',
method: 'post',
params: { ids }
})
}
/**
* 获取赛事的项目列表(不分页)
* 获取赛事的项目列表(不分页,用于下拉选择
* @param {Number} competitionId - 赛事ID
*/
export const getProjectsByCompetition = (competitionId) => {
return request({
url: '/api/blade-martial/project/list-by-competition',
url: '/api/martial/project/list',
method: 'get',
params: { competitionId }
})
}
/**
* 批量导入项目
* @param {Number} competitionId - 赛事ID
* @param {File} file - Excel文件
*/
export const importProjects = (competitionId, file) => {
const formData = new FormData()
formData.append('competitionId', competitionId)
formData.append('file', file)
return request({
url: '/api/blade-martial/project/import',
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
params: {
competitionId,
current: 1,
size: 1000 // 获取全部项目
}
})
}
/**
* 导出项目模板
*/
export const exportProjectTemplate = () => {
return request({
url: '/api/blade-martial/project/export-template',
method: 'get',
responseType: 'blob'
})
}
/**
* 导出项目列表
* @param {Object} params - 查询参数
*/
export const exportProjects = (params) => {
return request({
url: '/api/blade-martial/project/export',
method: 'get',
params,
responseType: 'blob'
})
}

View File

@@ -1,18 +1,19 @@
import request from '@/axios';
// ==================== 评委管理接口 ====================
// ==================== 裁判管理接口 ====================
/**
* 评委分页查询
* 裁判分页查询
* @param {Number} current - 当前页,默认1
* @param {Number} size - 每页条数,默认10
* @param {Object} params - 查询参数
* @param {String} params.keyword - 关键词搜索(姓名/手机号)
* @param {Number} params.refereeType - 裁判类型1-主裁判2-普通裁判)
* @param {String} params.name - 裁判姓名
* @param {String} params.phone - 手机号
* @param {Number} params.refereeType - 裁判类型1-裁判长2-普通裁判)
*/
export const getRefereeList = (current, size, params) => {
return request({
url: '/api/blade-martial/referee/list',
url: '/api/martial/judge/list',
method: 'get',
params: {
current,
@@ -23,69 +24,47 @@ export const getRefereeList = (current, size, params) => {
}
/**
* 获取评委详情
* @param {Number} id - 评委主键ID
* 获取裁判详情
* @param {Number} id - 裁判主键ID
*/
export const getRefereeDetail = (id) => {
return request({
url: '/api/blade-martial/referee/detail',
url: '/api/martial/judge/detail',
method: 'get',
params: { id }
})
}
/**
* 新增评委
* @param {Object} data - 评委数据
* 新增或修改裁判(统一提交接口)
* @param {Object} data - 裁判数据
* @param {Number} data.id - 主键ID编辑时传入
* @param {String} data.name - 姓名
* @param {Number} data.gender - 性别1-男2-女)
* @param {String} data.phone - 手机号
* @param {String} data.idCard - 身份证号
* @param {Number} data.refereeType - 裁判类型1-裁判2-普通裁判)
* @param {Number} data.refereeType - 裁判类型1-裁判2-普通裁判)
* @param {String} data.level - 等级/职称
* @param {String} data.specialty - 擅长项目
* @param {String} data.photoUrl - 照片URL
* @param {String} data.remark - 备注
*/
export const addReferee = (data) => {
export const submitReferee = (data) => {
return request({
url: '/api/blade-martial/referee/save',
url: '/api/martial/judge/submit',
method: 'post',
data
})
}
/**
* 修改评委
* @param {Object} data - 评委数据
*/
export const updateReferee = (data) => {
return request({
url: '/api/blade-martial/referee/update',
method: 'post',
data
})
}
/**
* 删除评委
* @param {String} ids - 评委ID,多个用逗号分隔
* 删除裁判
* @param {String} ids - 裁判ID,多个用逗号分隔
*/
export const removeReferee = (ids) => {
return request({
url: '/api/blade-martial/referee/remove',
url: '/api/martial/judge/remove',
method: 'post',
params: { ids }
})
}
/**
* 获取可用评委列表(用于下拉选择)
* @param {Number} refereeType - 裁判类型(可选)
*/
export const getAvailableReferees = (refereeType) => {
return request({
url: '/api/blade-martial/referee/available',
method: 'get',
params: { refereeType }
})
}

View File

@@ -7,10 +7,14 @@ import request from '@/axios';
* @param {Number} current - 当前页,默认1
* @param {Number} size - 每页条数,默认10
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
* @param {Number} params.projectId - 项目ID
* @param {Number} params.venueId - 场地ID
* @param {Number} params.athleteId - 选手ID
*/
export const getScoreList = (current, size, params) => {
return request({
url: '/api/blade-martial/score/list',
url: '/api/martial/score/list',
method: 'get',
params: {
current,
@@ -26,7 +30,7 @@ export const getScoreList = (current, size, params) => {
*/
export const getScoreDetail = (id) => {
return request({
url: '/api/blade-martial/score/detail',
url: '/api/martial/score/detail',
method: 'get',
params: { id }
})
@@ -34,75 +38,29 @@ export const getScoreDetail = (id) => {
/**
* 获取选手的所有裁判评分
* @param {Number} playerId - 选手ID
* @param {Number} projectId - 比赛项目ID
* @param {Number} athleteId - 选手ID
* @param {Number} projectId - 项目ID
*/
export const getPlayerScores = (playerId, projectId) => {
export const getAthleteScores = (athleteId, projectId) => {
return request({
url: '/api/blade-martial/score/player-scores',
url: '/api/martial/score/list',
method: 'get',
params: { playerId, projectId }
params: {
athleteId,
projectId,
current: 1,
size: 1000
}
})
}
/**
* 导出评分数据
* @param {Object} params - 查询参数
*/
export const exportScores = (params) => {
return request({
url: '/api/blade-martial/score/export',
method: 'get',
params,
responseType: 'blob'
})
}
/**
* 获取场地列表
* @param {Number} competitionId - 赛事ID
*/
export const getVenueList = (competitionId) => {
return request({
url: '/api/blade-martial/venue/list',
method: 'get',
params: { competitionId }
})
}
/**
* 获取比赛项目列表
* @param {Number} competitionId - 赛事ID
* @param {Number} venueId - 场地ID可选
*/
export const getProjectList = (competitionId, venueId) => {
return request({
url: '/api/blade-martial/project/list',
method: 'get',
params: { competitionId, venueId }
})
}
// ==================== 评分提交接口 ====================
/**
* 提交评分
* @param {Object} data - 评分数据
* @param {Number} data.competitionId - 赛事ID
* @param {Number} data.athleteId - 运动员ID
* @param {Number} data.projectId - 项目ID
* @param {Number} data.scheduleId - 赛程ID
* @param {Number} data.venueId - 场地ID
* @param {Number} data.judgeId - 裁判ID
* @param {String} data.judgeName - 裁判姓名
* @param {Number} data.score - 评分
* @param {Number} data.originalScore - 原始分
* @param {Array} data.deductionItems - 扣分项ID数组
* @param {String} data.note - 备注
*/
export const submitScore = (data) => {
return request({
url: '/api/blade-martial/score/submit',
url: '/api/martial/score/submit',
method: 'post',
data
})
@@ -114,7 +72,7 @@ export const submitScore = (data) => {
*/
export const removeScore = (ids) => {
return request({
url: '/api/blade-martial/score/remove',
url: '/api/martial/score/remove',
method: 'post',
params: { ids }
})
@@ -122,54 +80,26 @@ export const removeScore = (ids) => {
/**
* 获取异常评分列表
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
* @param {Number} params.projectId - 项目ID可选
* @param {Number} athleteId - 选手ID
* @param {Number} projectId - 项目ID
*/
export const getAnomalies = (params) => {
export const getAnomalies = (athleteId, projectId) => {
return request({
url: '/api/blade-martial/score/anomalies',
url: '/api/martial/score/anomalies',
method: 'get',
params
params: { athleteId, projectId }
})
}
/**
* 验证评分
* @param {Object} data - 验证数据
* @param {Number} data.athleteId - 运动员ID
* @param {Number} data.projectId - 项目ID
* @param {Number} data.score - 评分
* @param {Number} athleteId - 选手ID
* @param {Number} projectId - 项目ID
*/
export const validateScores = (data) => {
export const validateScores = (athleteId, projectId) => {
return request({
url: '/api/blade-martial/score/validate',
url: '/api/martial/score/validate',
method: 'post',
data
})
}
/**
* 批量提交评分
* @param {Array} data - 评分数据数组
*/
export const batchSubmitScores = (data) => {
return request({
url: '/api/blade-martial/score/batch-submit',
method: 'post',
data
})
}
/**
* 获取裁判待评分列表
* @param {Number} judgeId - 裁判ID
* @param {Number} competitionId - 赛事ID
*/
export const getPendingScores = (judgeId, competitionId) => {
return request({
url: '/api/blade-martial/score/pending',
method: 'get',
params: { judgeId, competitionId }
params: { athleteId, projectId }
})
}

79
src/api/martial/venue.js Normal file
View File

@@ -0,0 +1,79 @@
import request from '@/axios';
// ==================== 场地管理接口 ====================
/**
* 场地列表查询
* @param {Number} current - 当前页
* @param {Number} size - 每页条数
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
*/
export const getVenueList = (current, size, params) => {
return request({
url: '/api/martial/venue/list',
method: 'get',
params: {
current,
size,
...params
}
})
}
/**
* 获取场地详情
* @param {Number} id - 场地ID
*/
export const getVenueDetail = (id) => {
return request({
url: '/api/martial/venue/detail',
method: 'get',
params: { id }
})
}
/**
* 新增或修改场地
* @param {Object} data - 场地数据
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.venueName - 场地名称
* @param {Number} data.capacity - 容纳人数
* @param {String} data.location - 位置
* @param {String} data.description - 描述
*/
export const submitVenue = (data) => {
return request({
url: '/api/martial/venue/submit',
method: 'post',
data
})
}
/**
* 删除场地
* @param {String} ids - 场地ID,多个用逗号分隔
*/
export const removeVenue = (ids) => {
return request({
url: '/api/martial/venue/remove',
method: 'post',
params: { ids }
})
}
/**
* 获取赛事的场地列表(不分页)
* @param {Number} competitionId - 赛事ID
*/
export const getVenuesByCompetition = (competitionId) => {
return request({
url: '/api/martial/venue/list',
method: 'get',
params: {
competitionId,
current: 1,
size: 1000
}
})
}