/** * 记分板模块 API 工具函数 */ /** * 获取配置信息 */ export const fetchConfig = async () => { const res = await $fetch('/api/config') return res.data } /** * 获取比赛项目列表 */ export const fetchEvents = async (params?: { category?: string; group?: string }) => { const query = new URLSearchParams() if (params?.category) query.append('category', params.category) if (params?.group) query.append('group', params.group) const res = await $fetch(`/api/events?${query}`) return res.data } /** * 创建比赛项目 */ export const createEvent = async (data: { name: string category: string event_group: string unit: string }) => { const res = await $fetch('/api/events', { method: 'POST', body: data }) return res.data } /** * 获取队伍列表 */ export const fetchTeams = async (params?: { group?: string }) => { const query = new URLSearchParams() if (params?.group) query.append('group', params.group) const res = await $fetch(`/api/teams?${query}`) return res.data } /** * 创建队伍 */ export const createTeam = async (data: { name: string; team_group: string }) => { const res = await $fetch('/api/teams', { method: 'POST', body: data }) return res.data } /** * 获取成绩列表 */ export const fetchResults = async (params?: { event_id?: number; team_id?: number }) => { const query = new URLSearchParams() if (params?.event_id) query.append('event_id', String(params.event_id)) if (params?.team_id) query.append('team_id', String(params.team_id)) const res = await $fetch(`/api/results?${query}`) return res.data } /** * 录入成绩 */ export const createResult = async (data: { event_id: number team_id: number score: string rank?: number }) => { const res = await $fetch('/api/results', { method: 'POST', body: data }) return res.data } /** * 获取记分板数据 */ export const fetchScoreboard = async (params?: { group?: string }) => { const query = new URLSearchParams() if (params?.group) query.append('group', params.group) const res = await $fetch(`/api/scoreboard?${query}`) return res.data } /** * 初始化示例数据 */ export const seedData = async () => { const res = await $fetch('/api/seed', { method: 'POST' }) return res }