| | |
| | | |
| | | // GraphQL 查询语句 |
| | | |
| | | // 获取进行中的比赛列表(包括阶段) |
| | | const GET_ACTIVE_ACTIVITIES_QUERY = ` |
| | | query GetActiveActivities { |
| | | allActivities { |
| | | // 获取进行中的比赛阶段列表 |
| | | const GET_ACTIVITY_STAGES_QUERY = ` |
| | | query GetActivityStages { |
| | | allActivityStages { |
| | | id |
| | | pid |
| | | name |
| | |
| | | // API 函数 |
| | | |
| | | /** |
| | | * 获取进行中的比赛阶段列表(state=1且pid>0的比赛阶段) |
| | | * 按比赛分组排序,显示格式为"比赛名 + 阶段名" |
| | | * 获取进行中的比赛阶段列表 |
| | | * 后端已经过滤了比赛阶段(pid>0且state=1),直接返回 |
| | | */ |
| | | export const getActiveActivities = async () => { |
| | | try { |
| | | const data = await graphqlRequest(GET_ACTIVE_ACTIVITIES_QUERY) |
| | | const data = await graphqlRequest(GET_ACTIVITY_STAGES_QUERY) |
| | | |
| | | // 过滤出state=1且pid>0的比赛阶段 |
| | | const stages = data.allActivities.filter(activity => |
| | | activity.state === 1 && activity.pid > 0 |
| | | ) |
| | | // 后端已经过滤了比赛阶段,直接返回 |
| | | const activities = data.allActivityStages || [] |
| | | |
| | | // 按比赛ID(pid)分组排序,确保同一比赛的不同阶段放在一起 |
| | | stages.sort((a, b) => { |
| | | // 首先按比赛ID排序 |
| | | if (a.pid !== b.pid) { |
| | | return a.pid - b.pid |
| | | } |
| | | // 同一比赛内按阶段ID排序 |
| | | return a.id - b.id |
| | | }) |
| | | |
| | | return stages |
| | | console.log('获取到的比赛阶段:', activities) |
| | | return activities |
| | | } catch (error) { |
| | | console.error('获取活动列表失败:', error) |
| | | throw new Error(error.message || '获取活动列表失败') |
| | | console.error('获取比赛阶段失败:', error) |
| | | throw new Error(error.message || '获取比赛阶段失败') |
| | | } |
| | | } |
| | | |