This commit is contained in:
2025-12-13 09:18:08 +08:00
parent 7807f4b3e4
commit 0042a0220f
79 changed files with 30697 additions and 2 deletions

49
src/api/athlete.js Normal file
View File

@@ -0,0 +1,49 @@
/**
* 选手管理API接口
*/
import request from '@/utils/request.js'
export default {
/**
* 获取选手列表
* @param {Object} params 查询参数 { current, size, competitionId, name }
* @returns {Promise}
*/
getAthleteList(params = {}) {
return request.get('/martial/athlete/list', {
current: params.current || 1,
size: params.size || 100,
...params
})
},
/**
* 获取选手详情
* @param {String|Number} id 选手ID
* @returns {Promise}
*/
getAthleteDetail(id) {
return request.get('/martial/athlete/detail', { id })
},
/**
* 新增或修改选手
* @param {Object} data 选手数据
* @returns {Promise}
*/
submitAthlete(data) {
return request.post('/martial/athlete/submit', data)
},
/**
* 删除选手
* @param {String|Array} ids 选手ID或ID数组
* @returns {Promise}
*/
removeAthlete(ids) {
return request.post('/martial/athlete/remove', {
ids: Array.isArray(ids) ? ids.join(',') : ids
})
}
}

65
src/api/competition.js Normal file
View File

@@ -0,0 +1,65 @@
/**
* 赛事相关API接口
*/
import request from '@/utils/request.js'
export default {
/**
* 获取轮播图列表
* @param {Object} params 查询参数
* @returns {Promise}
*/
getBannerList(params = {}) {
return request.get('/martial/banner/list', params)
},
/**
* 获取赛事列表(分页)
* @param {Object} params 查询参数 { current, size, location, status }
* @returns {Promise}
*/
getCompetitionList(params = {}) {
return request.get('/martial/competition/list', {
current: params.current || 1,
size: params.size || 10,
...params
})
},
/**
* 获取赛事详情
* @param {String|Number} id 赛事ID
* @returns {Promise}
*/
getCompetitionDetail(id) {
return request.get('/martial/competition/detail', { id })
},
/**
* 获取比赛项目列表
* @param {Object} params 查询参数 { competitionId }
* @returns {Promise}
*/
getProjectList(params = {}) {
return request.get('/martial/project/list', params)
},
/**
* 获取项目详情
* @param {String|Number} id 项目ID
* @returns {Promise}
*/
getProjectDetail(id) {
return request.get('/martial/project/detail', { id })
},
/**
* 获取赛事规程
* @param {String|Number} competitionId 赛事ID
* @returns {Promise}
*/
getCompetitionRules(competitionId) {
return request.get('/martial/competition/rules', { competitionId })
}
}

95
src/api/info.js Normal file
View File

@@ -0,0 +1,95 @@
/**
* 赛事信息API接口
*/
import request from '@/utils/request.js'
export default {
/**
* 获取信息发布列表
* @param {Object} params 查询参数 { competitionId, current, size }
* @returns {Promise}
*/
getInfoPublishList(params = {}) {
return request.get('/martial/infoPublish/list', {
current: params.current || 1,
size: params.size || 10,
...params
})
},
/**
* 获取信息详情
* @param {String|Number} id 信息ID
* @returns {Promise}
*/
getInfoPublishDetail(id) {
return request.get('/martial/infoPublish/detail', { id })
},
/**
* 获取活动日程列表
* @param {Object} params 查询参数 { competitionId, current, size }
* @returns {Promise}
*/
getActivityScheduleList(params = {}) {
return request.get('/martial/activitySchedule/list', {
current: params.current || 1,
size: params.size || 100,
...params
})
},
/**
* 获取日程详情
* @param {String|Number} id 日程ID
* @returns {Promise}
*/
getActivityScheduleDetail(id) {
return request.get('/martial/activitySchedule/detail', { id })
},
/**
* 获取赛程安排(出场顺序)列表
* @param {Object} params 查询参数 { competitionId, current, size }
* @returns {Promise}
*/
getScheduleList(params = {}) {
return request.get('/martial/schedule/list', {
current: params.current || 1,
size: params.size || 100,
...params
})
},
/**
* 获取赛程详情
* @param {String|Number} id 赛程ID
* @returns {Promise}
*/
getScheduleDetail(id) {
return request.get('/martial/schedule/detail', { id })
},
/**
* 获取比赛实况列表
* @param {Object} params 查询参数 { competitionId, current, size }
* @returns {Promise}
*/
getLiveUpdateList(params = {}) {
return request.get('/martial/liveUpdate/list', {
current: params.current || 1,
size: params.size || 20,
...params
})
},
/**
* 获取实况详情
* @param {String|Number} id 实况ID
* @returns {Promise}
*/
getLiveUpdateDetail(id) {
return request.get('/martial/liveUpdate/detail', { id })
}
}

67
src/api/registration.js Normal file
View File

@@ -0,0 +1,67 @@
/**
* 报名相关API接口
*/
import request from '@/utils/request.js'
export default {
/**
* 提交报名订单
* @param {Object} data 报名数据 { competitionId, projectIds, athleteIds, contactPhone, totalAmount }
* @returns {Promise}
*/
submitRegistration(data) {
// 处理数组参数:将数组转换为逗号分隔的字符串
const formattedData = {
orderNo: data.orderNo,
competitionId: data.competitionId,
projectIds: Array.isArray(data.projectIds) ? data.projectIds.join(',') : data.projectIds,
athleteIds: Array.isArray(data.athleteIds) ? data.athleteIds.join(',') : data.athleteIds,
contactPhone: data.contactPhone,
totalAmount: data.totalAmount
}
console.log('=== API层转换后的数据 ===')
console.log('订单号:', formattedData.orderNo)
console.log('转换前 projectIds:', data.projectIds)
console.log('转换后 projectIds:', formattedData.projectIds)
console.log('转换前 athleteIds:', data.athleteIds)
console.log('转换后 athleteIds:', formattedData.athleteIds)
console.log('最终发送到后端的完整数据:', formattedData)
return request.post('/martial/registrationOrder/submit', formattedData)
},
/**
* 获取报名订单列表
* @param {Object} params 查询参数 { current, size, status }
* @returns {Promise}
*/
getRegistrationList(params = {}) {
return request.get('/martial/registrationOrder/list', {
current: params.current || 1,
size: params.size || 10,
...params
})
},
/**
* 获取报名订单详情
* @param {String|Number} id 订单ID
* @returns {Promise}
*/
getRegistrationDetail(id) {
return request.get('/martial/registrationOrder/detail', { id })
},
/**
* 取消报名
* @param {String|Array} ids 订单ID或ID数组
* @returns {Promise}
*/
cancelRegistration(ids) {
return request.post('/martial/registrationOrder/remove', {
ids: Array.isArray(ids) ? ids.join(',') : ids
})
}
}

57
src/api/result.js Normal file
View File

@@ -0,0 +1,57 @@
/**
* 成绩相关API接口
*/
import request from '@/utils/request.js'
export default {
/**
* 获取成绩列表
* @param {String|Number} eventId 赛事ID
* @param {Object} params 查询参数 { projectId, current, size }
* @returns {Promise}
*/
getResultList(eventId, params = {}) {
return request.get('/martial/result/list', {
competitionId: eventId,
current: params.current || 1,
size: params.size || 100,
...params
})
},
/**
* 获取成绩详情
* @param {String|Number} id 成绩ID
* @returns {Promise}
*/
getResultDetail(id) {
return request.get('/martial/result/detail', { id })
},
/**
* 获取奖牌榜
* @param {String|Number} eventId 赛事ID
* @param {Object} params 查询参数
* @returns {Promise}
*/
getMedalsList(eventId, params = {}) {
return request.get('/martial/medal/list', {
competitionId: eventId,
...params
})
},
/**
* 获取评分列表
* @param {Object} params 查询参数 { resultId, current, size }
* @returns {Promise}
*/
getScoreList(params = {}) {
return request.get('/martial/score/list', {
current: params.current || 1,
size: params.size || 100,
...params
})
}
}

103
src/api/schedule.js Normal file
View File

@@ -0,0 +1,103 @@
/**
* 赛程编排相关API接口
*/
import request from '@/utils/request.js'
/**
* 获取赛程编排结果
* @param {Number} competitionId - 赛事ID
*/
export function getScheduleResult(competitionId) {
return request.get('/martial/schedule/result', {
params: { competitionId }
})
}
/**
* 触发自动编排
* @param {Number} competitionId - 赛事ID
*/
export function triggerAutoArrange(competitionId) {
return request.post('/martial/schedule/auto-arrange', {
competitionId
})
}
/**
* 保存编排草稿
* @param {Object} data - 编排草稿数据
* @param {Number} data.competitionId - 赛事ID
* @param {Boolean} data.isDraft - 是否为草稿
* @param {Array} data.competitionGroups - 竞赛分组数据
*/
export function saveDraftSchedule(data) {
return request.post('/martial/schedule/save-draft', data)
}
/**
* 保存并锁定赛程编排
* @param {Number} competitionId - 赛事ID
*/
export function saveAndLockSchedule(competitionId) {
return request.post('/martial/schedule/save-and-lock', {
competitionId
})
}
/**
* 移动赛程分组到指定场地和时间段
* @param {Object} data - 移动请求数据
* @param {Number} data.groupId - 分组ID
* @param {Number} data.targetVenueId - 目标场地ID
* @param {Number} data.targetTimeSlotIndex - 目标时间段索引
*/
export function moveScheduleGroup(data) {
return request.post('/martial/schedule/move-group', data)
}
/**
* 获取调度数据
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
* @param {Number} params.venueId - 场地ID
* @param {Number} params.timeSlotIndex - 时间段索引
*/
export function getDispatchData(params) {
return request.get('/martial/schedule/dispatch-data', {
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 function adjustOrder(data) {
return request.post('/martial/schedule/adjust-order', data)
}
/**
* 批量保存调度
* @param {Object} data - 保存调度数据
* @param {Number} data.competitionId - 赛事ID
* @param {Array} data.adjustments - 调整列表
*/
export function saveDispatch(data) {
return request.post('/martial/schedule/save-dispatch', data)
}
export default {
getScheduleResult,
triggerAutoArrange,
saveDraftSchedule,
saveAndLockSchedule,
moveScheduleGroup,
getDispatchData,
adjustOrder,
saveDispatch
}

119
src/api/user.js Normal file
View File

@@ -0,0 +1,119 @@
/**
* 用户相关API接口
*/
import request from '@/utils/request.js'
import md5 from '@/utils/md5.js'
import { base64Encode } from '@/utils/base64.js'
/**
* 用户登录
* 使用password模式无需验证码
*/
export function login(data) {
// 构建URL参数
const params = {
tenantId: '000000',
username: data.username,
password: md5(data.password),
grant_type: 'password', // 使用password模式
scope: 'all',
type: 'account'
}
// 转换为URL查询字符串
const queryString = Object.keys(params)
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
.join('&')
// 使用saber3客户端凭证
const basicAuth = 'Basic ' + base64Encode('saber3:saber3_secret')
return request.post(`/blade-auth/oauth/token?${queryString}`, null, {
header: {
'Authorization': basicAuth,
'Tenant-Id': '000000'
}
})
}
/**
* 用户注册
*/
export function register(data) {
return request.post('/blade-system/user/register', {
tenantId: '000000',
userType: 2, // 2-app
account: data.account,
password: md5(data.password),
phone: data.phone,
realName: data.realName,
sex: data.sex,
code: data.code
})
}
/**
* 获取验证码
*/
export function getCaptcha(phone) {
return request.post('/blade-auth/captcha/send', {
phone: phone
})
}
/**
* 刷新Token
*/
export function refreshToken(refreshToken) {
return request.post('/blade-auth/oauth/token', {
tenantId: '000000',
refresh_token: refreshToken,
grant_type: 'refresh_token'
})
}
/**
* 退出登录
*/
export function logout() {
return request.post('/blade-auth/logout')
}
export default {
login,
register,
getCaptcha,
refreshToken,
logout,
/**
* 获取用户信息
* @returns {Promise}
*/
getUserInfo() {
return request.get('/blade-system/user/info')
},
/**
* 修改密码
* @param {Object} data { oldPassword, newPassword, newPassword1 }
* @returns {Promise}
*/
updatePassword(data) {
return request.post('/blade-system/user/update-password', {
oldPassword: md5(data.oldPassword),
newPassword: md5(data.newPassword),
newPassword1: md5(data.newPassword1)
})
},
/**
* 修改用户基本信息
* @param {Object} data 用户信息
* @returns {Promise}
*/
updateUserInfo(data) {
return request.post('/blade-system/user/update', data)
}
}