---
url: /docs/guide/uniapp/pages/my-plan.md
---
# pages/my-plan — 我的计划（训练打卡）

> `src/pages/my-plan/index.vue` · 183 行 · Vue3 setup · [调用 API：training](../api/training.md)

## 职责

展示当前用户已报名训练计划的打卡任务列表 + 提醒记录，支持手动打卡（T2 双轨之一；另一轨 = 当日完成对应 kind 运动自动 done）。

## 数据与依赖

| 项 | 值 |
|---|---|
| API | `listMyTasks(uid)` / `listMyReminders(uid)` / `checkinTask({userId, taskId})`（[training](../api/training.md)） |
| utils | `storage`（取 `user.id` 即 `u0000xx`） |
| 加载时机 | `onLoad` 一次性拉取（Promise.all 任务+提醒） |
| 空态 | 「暂无训练任务 — 完成新用户引导后自动生成」 |

## 关键逻辑

* 任务行：`plannedDate · 第N周` + kind 标签（running🏃/cycling🚴/strength💪）+ 打卡按钮
* 打卡：仅 `status==='pending'` 可点 → 成功后本地置 `done`（乐观更新）+ toast；`done` 显示「已完成 ✓」不可再点
* 打卡成功 = 后端 `status:done, completeSource:manual`（幂等，重复点无害）

## 入口

「我的」tab → 列表「我的计划」行。

## 变更记录（git）

| 日期 | 作者 | 说明 |
|---|---|---|
| 2026-09-18 | inkforge-deploy | fix: 响应未解包 data 链 + 模板 RN 语法污染（真机实锤三连） |
| 2026-09-17 | 外星动物 | feat: 向导三页化 + 我的计划页 — training C 端接线 |

> 生成：`scripts/gen_uniapp_docs.py`（重跑刷新）
