- miniprogram/config.js: BASE_URL 指向 http://192.227.237.8:3001 - 动作标题中文化(nameZh),搜索匹配 name/nameZh/nameEn - 新增计划/收藏/我的 等页面与组件 - 后端 Docker 化(Dockerfile/.dockerignore)与翻译脚本 - .gitignore 补充 .DS_Store
61 lines
3.9 KiB
Markdown
61 lines
3.9 KiB
Markdown
# FITCOACH 微信小程序(前端)
|
||
|
||
高端暗金风格(dark luxe)的健身动作推荐小程序。所有数据来自 NestJS 后端 API。
|
||
|
||
## 设计系统
|
||
设计令牌定义在 `app.wxss` 的 `page` 选择器(CSS 变量):
|
||
- 背景 `#0E1110`、表面 `#171C19`、金 `#D9B36C`、次强调 `#58C9B9`
|
||
- 圆角 `--radius:28rpx`、发丝分隔线 `--line`、阴影 `--shadow`
|
||
- 图标统一使用 **emoji + CSS 渐变**(不依赖二进制图片资源)
|
||
|
||
## 配置
|
||
打开 `config.js`:
|
||
```js
|
||
module.exports = { BASE_URL: 'http://localhost:3000' };
|
||
```
|
||
- 本地调试:填写电脑局域网 IP,如 `http://192.168.1.10:3000`
|
||
- 真机/发布:**必须**改为 HTTPS 且已在小程序后台配置为 request 合法域名
|
||
|
||
## 运行
|
||
1. 微信开发者工具 → 导入项目 → 选择本目录(AppID 可用测试号)
|
||
2. 本地调试可在「详情 → 本地设置」勾选「不校验合法域名、TLS 版本以及 HTTPS 证书」
|
||
3. 编译预览
|
||
|
||
## 页面
|
||
| 页面 | 文件 | 说明 |
|
||
|------|------|------|
|
||
| 首页 | `pages/index` | Hero + 快捷入口 + 精选轮播 + 官方计划分级入口 + 按部位/器械浏览 |
|
||
| 分类浏览 | `pages/category` | 按 dimension(bodyPart/equipment/target/type/muscleGroup) 筛选列表 |
|
||
| 智能推荐 | `pages/recommend` | 选目标肌群(按部位分组)+ 可选器械 → 评分排序结果 |
|
||
| 动作详情 | `pages/detail` | GIF + 中文步骤 + 主要/协同肌群 + 收藏按钮 + 加入计划 + 相关推荐 + 分享 |
|
||
| 官方计划 | `pages/collection` | 按水平分级(新手/进阶/高级/全阶段)的官方推荐计划列表 |
|
||
| 计划详情 | `pages/collection-detail` | 官方计划动作列表 + 收藏/一键导入我的计划 |
|
||
| 搜索 | `pages/search` | 模糊搜索;`mode=select` 时用于向计划添加动作 |
|
||
| **我的** | `pages/profile` | 个人中心:登录态、资料编辑、收藏/计划统计、菜单入口 |
|
||
| **收藏动作** | `pages/favorites` | 我收藏的动作,可管理移除 |
|
||
| **我的计划** | `pages/my-plans` | 计划列表,新建/进入 |
|
||
| **编辑计划** | `pages/plan-edit` | 新建/编辑计划(名称/描述/图标/主题色) |
|
||
| **计划详情** | `pages/plan-detail` | 我的计划动作管理(增删/编辑/删除) |
|
||
| **收藏计划** | `pages/plan-favorites` | 我收藏的官方计划 |
|
||
|
||
## 用户体系
|
||
- **登录**:`utils/auth.js` 封装 `wx.login → POST /api/auth/login`;后端未配 `WX_APPID` 时走开发降级(任意 code 建号)。登录态存于 `wx.storage`(`access_token`/`openid`/`user_profile`)。
|
||
- **自动重登**:`utils/request.js` 在收到 401 时调用注册的 `unauthorizedHandler` 重新登录并重试一次原请求,页面无需感知。
|
||
- **个人中心** `pages/profile`:未登录显示登录卡片;已登录显示头像/昵称/统计/菜单,支持改昵称与 emoji 头像、退出登录。
|
||
- **收藏**:动作收藏(详情页心形)、官方计划收藏(计划详情页)。
|
||
- **计划**:可新建/编辑计划、向计划添加或移除动作(搜索页 `select` 模式)、从官方计划一键导入为个人副本。
|
||
|
||
## 组件
|
||
`exercise-card`(动作卡)、`section-header`(分区标题)、`chip`(筛选标签)、
|
||
`navbar`(自定义导航栏,处理状态栏高度)、`bottom-nav`(底部导航:首页/分类/我的)、
|
||
`level-tag`(难度等级标签)、`avatar`(emoji 头像)、`plan-card`(计划卡)。
|
||
|
||
## 接口映射
|
||
- `services/exercise.js`:列表/详情/分类/推荐/官方计划/搜索/统计。
|
||
- `services/user.js`、`services/favorite.js`、`services/plan.js`:用户资料、收藏、计划,字段与后端响应一一对应。
|
||
|
||
## 注意事项
|
||
- 小程序 `<image>` 支持 GIF,动作演示直接使用 `gifUrl`。
|
||
- 所有请求经 `utils/request.js` 单点封装,自动带 `Authorization` 头、失败统一 toast。
|
||
- 包体保持精简:主包仅含页面与组件,无大体积本地资源。
|