Files
taiheEhu/docs/superpowers/specs/2026-05-07-message-page-design.md
2026-05-07 16:44:13 +08:00

174 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 消息页面设计说明
## 1. 目标
在当前微信小程序项目中新增一个“消息”页面,页面风格参考提供的设计图,并与现有首页形成双向页面跳转。
本次目标是让项目从“只有首页”扩展为“首页 + 消息页”的可预览状态,同时保留后续继续新增“报告”“我的”等页面的扩展空间。
## 2. 本次范围
本次实现包含:
- 新增消息页面
- 首页与消息页之间的底部导航跳转
- 抽取一个可复用的底部导航组件
- 在消息页中实现顶部双标签、消息卡片列表、未读红点视觉
- 更新页面注册配置
- 更新 README补充当前页面结构和消息页说明
本次不包含:
- 真正的后端消息接口
- 消息已读、删除、下拉刷新、分页加载
- “系统消息”标签下的真实内容切换接口
- “报告”“小e”“我的”真实业务页
## 3. 设计原则
- 保持项目结构简单,适合新手继续修改
- 尽量复用现有首页的深色视觉语言
- 不额外引入新的大型依赖
- 先完成静态页面和页面跳转,再为后续真实接口预留清晰结构
## 4. 页面与组件设计
### 4.1 消息页面
新增目录:
- `src/pages/message/index.tsx`
- `src/pages/message/index.scss`
- `src/pages/message/index.config.ts`
页面内容分为三块:
1. 顶部标签区
2. 消息卡片列表区
3. 底部导航区
顶部标签区使用两个标签:
- `体征消息`
- `系统消息`
默认高亮 `体征消息``系统消息` 右侧显示一个小红点作为未读提示。首版只做前端本地切换,切换后可展示不同的本地占位数据,不接接口。
消息卡片列表区使用 3 条演示数据,卡片字段参考设计图:
- 标题
- 设备 ID
- 使用人员
- 消息类型
- 检测数值
- 发生时间
页面整体继续使用深色背景、圆角卡片、浅色文字和青绿色高亮色,尽量与首页统一。
### 4.2 底部导航组件
新增目录:
- `src/components/tab-bar/index.tsx`
- `src/components/tab-bar/index.scss`
组件负责:
- 渲染统一的 5 个底部导航项
- 根据传入的当前页面 key 控制高亮状态
- 处理首页与消息页之间的跳转
- 对暂未实现的页面继续保留轻提示
组件入参保持简单,建议至少包含:
- 当前激活项 key
组件内部统一维护导航项配置,避免首页和消息页各自重复维护一份。
## 5. 交互设计
### 5.1 页面跳转
- 首页点击底部 `消息`,跳转到消息页
- 消息页点击底部 `首页`,跳转到首页
- 点击当前已激活 tab 不重复跳转
- 点击 `报告``小e``我的` 时,继续提示“功能待接入”
为了避免多层页面堆栈,首页与消息页之间的 tab 切换优先使用 `Taro.redirectTo`
### 5.2 消息标签切换
- 点击 `体征消息`,显示体征消息列表
- 点击 `系统消息`,显示系统消息占位列表
- 当前仅做前端状态切换,不持久化
### 5.3 消息列表滚动
如果卡片数量超过一屏,允许页面自然纵向滚动。底部导航固定在底部,页面内容区域保留足够底部内边距,避免被遮挡。
## 6. 数据设计
消息页首版使用本地静态数据。建议定义明确的 TypeScript 类型,例如:
- `MessageTabKey`
- `MessageItem`
数据至少包含:
- `id`
- `title`
- `deviceId`
- `userName`
- `messageType`
- `valueText`
- `occurredAt`
- `category`
其中 `category` 用于区分 `vital``system` 两类消息,便于本地筛选。
## 7. 文件修改范围
预计涉及文件:
- `src/app.config.ts`
- `src/pages/index/index.tsx`
- `src/pages/index/index.scss`
- `src/pages/message/index.tsx`
- `src/pages/message/index.scss`
- `src/pages/message/index.config.ts`
- `src/components/tab-bar/index.tsx`
- `src/components/tab-bar/index.scss`
- `README.md`
## 8. 测试与验证
至少验证以下内容:
- 项目可以正常编译
- 首页底部 `消息` 可跳转到消息页
- 消息页底部 `首页` 可跳回首页
- 消息页顶部双标签可以切换
- 当前激活 tab 样式正确
- 页面底部内容不会被固定导航遮挡
## 9. 风险与控制
风险 1底部导航从首页内联实现改为组件后可能影响首页现有视觉。
控制方式:保留原有视觉结构,优先抽取已有样式命名和布局逻辑,避免大改。
风险 2tab 切换若使用 `navigateTo`,可能导致页面堆栈不断增加。
控制方式:首页与消息页之间统一使用 `redirectTo`
风险 3消息页完全照搬图片可能与当前项目样式不一致。
控制方式:保留设计图核心布局,但颜色、阴影、圆角与首页现有风格保持同一体系。
## 10. 完成标准
满足以下条件即可认为本次任务完成:
- 小程序内已存在独立消息页
- 首页与消息页可通过底部导航双向切换
- 消息页主要视觉与提供的参考图接近
- 代码结构对新手友好,文件职责清晰
- README 已同步说明当前新增页面