完成内容: ✅ 第一层保护: Git分支隔离 - 创建 v1.0-mock 标签 - 创建 feature/api-integration 分支 ✅ 第二层保护: 配置开关控制 - config/env.config.js (环境配置,支持Mock/API模式切换) ✅ 第三层保护: 代码架构分离 - utils/request.js (网络请求封装,支持Blade-Auth) - utils/dataAdapter.js (核心适配器,自动选择数据源) ✅ Mock数据模块 (4个文件): - mock/index.js (统一入口) - mock/login.js (登录Mock数据) - mock/athlete.js (选手Mock数据,含场地、项目) - mock/score.js (评分Mock数据,含扣分项、详情、修改) ✅ API接口模块 (4个文件): - api/index.js (统一入口) - api/auth.js (认证API,含后端接口规范) - api/athlete.js (选手API,含SQL示例) - api/score.js (评分API,含实现逻辑说明) 特性: - 通过修改 config/env.config.js 的 dataMode 即可切换Mock/API模式 - Mock模式: 完全离线,无需后端,UI功能完整 - API模式: 调用真实后端接口(需后端实现5个专用接口) - 零UI修改: 原有页面代码完全保护,仅替换数据源 下一步: - 修改5个页面使用 dataAdapter - 测试Mock模式功能 - 后端开发5个小程序专用接口 代码统计: - 新增11个文件 - 约1000行代码 - 完整的注释和使用说明
163 lines
3.5 KiB
JavaScript
163 lines
3.5 KiB
JavaScript
/**
|
|
* Mock 数据 - 选手模块
|
|
* 模拟选手列表数据
|
|
*/
|
|
|
|
/**
|
|
* 获取我的选手列表(普通评委)
|
|
* @param {Object} params
|
|
* @param {String} params.judgeId - 评委ID
|
|
* @param {String} params.venueId - 场地ID
|
|
* @param {String} params.projectId - 项目ID
|
|
* @returns {Array} 选手列表(带评分状态)
|
|
*/
|
|
export function getMyAthletes(params) {
|
|
// 模拟3个选手数据
|
|
return [
|
|
{
|
|
athleteId: '1',
|
|
name: '张三',
|
|
idCard: '123456789000000000',
|
|
team: '少林寺武术大学院',
|
|
number: '123-4567898275',
|
|
myScore: 8.906, // 我的评分
|
|
totalScore: 8.907, // 总分
|
|
scored: true, // 已评分
|
|
scoreTime: '2025-06-25 09:15:00'
|
|
},
|
|
{
|
|
athleteId: '2',
|
|
name: '李四',
|
|
idCard: '123456789000000001',
|
|
team: '武当山武术学院',
|
|
number: '123-4567898276',
|
|
myScore: 8.901,
|
|
totalScore: 8.902,
|
|
scored: true,
|
|
scoreTime: '2025-06-25 09:20:00'
|
|
},
|
|
{
|
|
athleteId: '3',
|
|
name: '王五',
|
|
idCard: '123456789000000002',
|
|
team: '峨眉派武术学校',
|
|
number: '123-4567898277',
|
|
myScore: null, // 未评分
|
|
totalScore: null,
|
|
scored: false,
|
|
scoreTime: null
|
|
}
|
|
]
|
|
}
|
|
|
|
/**
|
|
* 获取选手列表(裁判长)
|
|
* @param {Object} params
|
|
* @param {String} params.competitionId - 比赛ID
|
|
* @param {String} params.venueId - 场地ID
|
|
* @param {String} params.projectId - 项目ID
|
|
* @returns {Array} 选手列表(带评分统计)
|
|
*/
|
|
export function getAthletesForAdmin(params) {
|
|
// 模拟5个选手数据
|
|
return [
|
|
{
|
|
athleteId: '1',
|
|
name: '张三',
|
|
idCard: '123456789000000000',
|
|
team: '少林寺武术大学院',
|
|
number: '123-4567898275',
|
|
totalScore: 8.907,
|
|
judgeCount: 6, // 已评分评委数
|
|
totalJudges: 6, // 总评委数
|
|
canModify: true // 可以修改(所有评委已评分)
|
|
},
|
|
{
|
|
athleteId: '2',
|
|
name: '李四',
|
|
idCard: '123456789000000001',
|
|
team: '武当山武术学院',
|
|
number: '123-4567898276',
|
|
totalScore: 8.902,
|
|
judgeCount: 6,
|
|
totalJudges: 6,
|
|
canModify: true
|
|
},
|
|
{
|
|
athleteId: '3',
|
|
name: '王五',
|
|
idCard: '123456789000000002',
|
|
team: '峨眉派武术学校',
|
|
number: '123-4567898277',
|
|
totalScore: null,
|
|
judgeCount: 3, // 只有3位评委评分
|
|
totalJudges: 6,
|
|
canModify: false // 不能修改(未全部评分)
|
|
},
|
|
{
|
|
athleteId: '4',
|
|
name: '赵六',
|
|
idCard: '123456789000000003',
|
|
team: '华山武术学院',
|
|
number: '123-4567898278',
|
|
totalScore: 8.899,
|
|
judgeCount: 6,
|
|
totalJudges: 6,
|
|
canModify: true
|
|
},
|
|
{
|
|
athleteId: '5',
|
|
name: '孙七',
|
|
idCard: '123456789000000004',
|
|
team: '崆峒派武术学校',
|
|
number: '123-4567898279',
|
|
totalScore: 8.912,
|
|
judgeCount: 6,
|
|
totalJudges: 6,
|
|
canModify: true
|
|
}
|
|
]
|
|
}
|
|
|
|
/**
|
|
* 获取场地列表
|
|
* @param {Object} params
|
|
* @param {String} params.competitionId - 比赛ID
|
|
* @returns {Array} 场地列表
|
|
*/
|
|
export function getVenues(params) {
|
|
return [
|
|
{ id: '1', name: '第一场地' },
|
|
{ id: '2', name: '第二场地' },
|
|
{ id: '3', name: '第三场地' },
|
|
{ id: '4', name: '第四场地' },
|
|
{ id: '5', name: '第五场地' }
|
|
]
|
|
}
|
|
|
|
/**
|
|
* 获取项目列表
|
|
* @param {Object} params
|
|
* @param {String} params.competitionId - 比赛ID
|
|
* @returns {Array} 项目列表
|
|
*/
|
|
export function getProjects(params) {
|
|
return [
|
|
'女子组长拳',
|
|
'男子组陈氏太极拳',
|
|
'女子组双剑(含长穗双剑)',
|
|
'男子组杨氏太极拳',
|
|
'女子组刀术',
|
|
'男子组棍术',
|
|
'女子组枪术',
|
|
'男子组剑术'
|
|
]
|
|
}
|
|
|
|
export default {
|
|
getMyAthletes,
|
|
getAthletesForAdmin,
|
|
getVenues,
|
|
getProjects
|
|
}
|