- 前后端分离架构 (Nuxt 3 + Element Plus) - SQLite 数据库 (better-sqlite3) - 比赛项目管理 (田赛/径赛/团体赛) - 队伍管理 (5 个组别) - 成绩录入与积分统计 - 记分板展示 (排名/奖牌榜) - 移动端响应式适配 - 侧边栏布局 + 抽屉菜单 - 自动生成初始化数据接口
74 lines
2.6 KiB
TypeScript
74 lines
2.6 KiB
TypeScript
import db from '../db'
|
||
|
||
// 初始化种子数据
|
||
export default defineEventHandler(() => {
|
||
try {
|
||
// 检查是否已有数据
|
||
const checkTeams = db.prepare('SELECT COUNT(*) as count FROM teams').get()
|
||
|
||
if (checkTeams.count > 0) {
|
||
return { success: true, message: '数据已存在,跳过初始化' }
|
||
}
|
||
|
||
// 插入示例队伍
|
||
const teams = [
|
||
{ name: '高一1班', group: '文化班甲组' },
|
||
{ name: '高一2班', group: '文化班甲组' },
|
||
{ name: '高二1班', group: '文化班乙组' },
|
||
{ name: '高二2班', group: '文化班乙组' },
|
||
{ name: '体育1班', group: '体育班组' },
|
||
{ name: '体育2班', group: '体育班组' },
|
||
{ name: '航空1班', group: '航空班组' },
|
||
{ name: '航空2班', group: '航空班组' },
|
||
{ name: '教师队', group: '教师组' }
|
||
]
|
||
|
||
const insertTeam = db.prepare('INSERT INTO teams (name, team_group) VALUES (?, ?)')
|
||
const insertScore = db.prepare('INSERT INTO team_scores (team_id, total_score, gold_count, silver_count, bronze_count) VALUES (?, 0, 0, 0, 0)')
|
||
|
||
teams.forEach(team => {
|
||
const result = insertTeam.run(team.name, team.group)
|
||
insertScore.run(result.lastInsertRowid)
|
||
})
|
||
|
||
// 插入示例比赛项目
|
||
const events = [
|
||
// 田赛
|
||
{ name: '跳高', category: '田赛', group: '文化班甲组', unit: '米' },
|
||
{ name: '跳远', category: '田赛', group: '文化班甲组', unit: '米' },
|
||
{ name: '掷铅球', category: '田赛', group: '文化班乙组', unit: '米' },
|
||
|
||
// 径赛
|
||
{ name: '100m', category: '径赛', group: '体育班组', unit: '秒' },
|
||
{ name: '200m', category: '径赛', group: '体育班组', unit: '秒' },
|
||
{ name: '4×100m', category: '径赛', group: '航空班组', unit: '秒' },
|
||
|
||
// 团体赛
|
||
{ name: '旱地龙舟', category: '团体赛', group: '教师组', unit: '秒' },
|
||
{ name: '跳长绳', category: '团体赛', group: '文化班甲组', unit: '次' },
|
||
{ name: '折返跑', category: '团体赛', group: '文化班乙组', unit: '秒' }
|
||
]
|
||
|
||
const insertEvent = db.prepare('INSERT INTO events (name, category, event_group, unit) VALUES (?, ?, ?, ?)')
|
||
|
||
events.forEach(event => {
|
||
insertEvent.run(event.name, event.category, event.group, event.unit)
|
||
})
|
||
|
||
return {
|
||
success: true,
|
||
message: '初始化数据成功',
|
||
data: {
|
||
teams: teams.length,
|
||
events: events.length
|
||
}
|
||
}
|
||
} catch (error) {
|
||
console.error('Seed error:', error)
|
||
throw createError({
|
||
statusCode: 500,
|
||
message: '初始化数据失败: ' + error.message
|
||
})
|
||
}
|
||
})
|