完成内容: ✅ 第一层保护: 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行代码 - 完整的注释和使用说明
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
/**
|
||
* Mock 数据 - 登录模块
|
||
* 模拟登录验证和用户信息返回
|
||
*/
|
||
|
||
/**
|
||
* 登录验证
|
||
* @param {Object} params
|
||
* @param {String} params.matchCode - 比赛编码
|
||
* @param {String} params.inviteCode - 邀请码(pub 或 admin)
|
||
* @returns {Object} 用户信息和Token
|
||
*/
|
||
export function login(params) {
|
||
const { matchCode, inviteCode } = params
|
||
|
||
// 模拟验证逻辑
|
||
const role = inviteCode.toLowerCase()
|
||
|
||
if (role !== 'pub' && role !== 'admin') {
|
||
throw new Error('邀请码错误,请使用 pub 或 admin')
|
||
}
|
||
|
||
// 返回Mock登录数据
|
||
return {
|
||
token: 'mock_token_' + Date.now(),
|
||
userRole: role, // 'pub' 或 'admin'
|
||
matchId: '123',
|
||
matchName: '2025年全国武术散打锦标赛暨第十七届世界武术锦标赛选拔赛',
|
||
matchTime: '2025年6月25日 9:00',
|
||
judgeId: '456',
|
||
judgeName: '欧阳丽娜',
|
||
// 普通评委有固定场地,裁判长可以查看所有场地
|
||
venueId: role === 'pub' ? '1' : null,
|
||
venueName: role === 'pub' ? '第一场地' : null,
|
||
// 分配的项目列表
|
||
projects: role === 'pub'
|
||
? ['女子组长拳', '男子组陈氏太极拳']
|
||
: ['女子组长拳', '男子组陈氏太极拳', '女子组双剑(含长穗双剑)', '男子组杨氏太极拳', '女子组刀术', '男子组棍术', '女子组枪术', '男子组剑术']
|
||
}
|
||
}
|
||
|
||
export default {
|
||
login
|
||
}
|