一个基于 Vue 3 + TypeScript + Vite 构建的 Mario Worker 杯比赛官方网站。
- 赛程安排: 查看各届比赛的详细赛程安排
- 评分查询: 按轮次查询比赛评分结果和统计数据
- 关卡查询: 搜索和浏览参赛关卡文件
- 冠军统计: 查看历届冠军获奖情况统计
- 关卡排名: 全新的排名系统,支持多种排名模式
- 单关排名: 基于得分率的单个关卡排名
- 多关排名: 多关题目的关卡排名
- 原始得分率排名: 对比原始分与最终分的排名变化
- 按选手名称搜索
- 按关卡名称搜索
- 按届次筛选
- 实时过滤结果
- 响应式设计,支持移动端
- 橙色主题配色
- 玻璃拟态效果
- 流畅的动画过渡
- 前端框架: Vue 3 (Composition API)
- 开发语言: TypeScript
- 构建工具: Vite
- 样式方案: CSS3 (CSS Variables + 模块化)
- 数据处理: js-yaml, papaparse
npm install
npm run dev
npm run build
npm run deploy
src/
├── components/ # Vue 组件
│ ├── AttendanceStats.vue # 上传率(出勤率)模块
│ ├── ChampionStatistics.vue # 冠军统计 & 举办情况
│ ├── DocumentDisplay.vue # 赛事文档显示模块
│ ├── FoldButton.vue # 折叠展开按钮
│ ├── JudgeRecords.vue # 评委数据
│ ├── LevelFileSearch.vue # 关卡搜索
│ ├── PlayerRecords.vue # 选手战绩
│ ├── RankingModule.vue # 关卡排名
│ ├── RoundSelector.vue # 轮次选择模块
│ ├── ScheduleTable.vue # 赛程表
│ ├── ScoreTable.vue # 分轮次评分数据
│ ├── StatsAnalysis.vue # 数据统计 Tab
│ ├── SubjectDisplay.vue # 比赛试题显示
│ ├── TotalPointsRanking.vue # 积分排行
│ ├── UploadSystem.vue # 上传系统 iframe
│ └── UserManagement.vue # 用户一览
├── styles/ # 样式文件
│ ├── style.css # 主样式文件
│ ├── theme.css # 主题配色
│ ├── components.css # 通用组件样式
│ ├── layout.css # 布局样式
│ └── animations.css # 动画效果
├── types/ # TypeScript 类型定义
│ └── ranking.ts # 排名相关类型
├── utils/ # 工具函数
│ ├── dataAnalyzer.ts # 数据统计分析
│ ├── editionHelper.ts # 届数计算
│ ├── levelFileHelper.ts # 关卡索引读取
│ ├── levelMatcher.ts # 获取分组的显示名称
│ ├── preliminaryValidInfoHelper.ts # 初赛有效题目信息获取
│ ├── rankingCalculator.ts # 排名计算
│ ├── resultFormatter.ts # 战绩格式处理
│ ├── roundNames.ts # 轮次名称映射
│ ├── scheduleHelper.ts # 赛程数据处理
│ ├── scoreCalculator.ts # 评分计算
│ ├── totalPointsCalculator.ts # 积分排行计算
│ ├── userDataProcessor.ts # 用户数据处理
│ ├── userMapper.ts # 用户映射
│ └── yamlLoader.ts # YAML 解析
└── App.vue # 主应用组件
项目使用以下数据源:
public/data/docs/*.md
- 赛事文档public/data/levels/index.json
- 关卡索引public/data/scores/*.csv
- 各轮次评分数据public/data/subjects/*.md
- 比赛试题public/data/maxScore.json
- 满分配置public/data/mwcup.yaml
- 比赛配置public/data/specialLevels.json
- 特殊关卡映射public/data/users.csv
- 用户列表public/data/validLevel.json
- 初赛有效关卡数据