Files
digital-pilates/docs/goal-management-implementation.md
richarjiang 136c800084 feat: 新增目标管理功能及相关组件
- 创建目标管理演示页面,展示高保真的目标管理界面
- 实现待办事项卡片的横向滑动展示,支持时间筛选功能
- 新增时间轴组件,展示选中日期的具体任务
- 更新底部导航,添加目标管理和演示页面的路由
- 优化个人页面菜单项,提供目标管理的快速访问
- 编写目标管理功能实现文档,详细描述功能和组件架构
2025-08-22 09:31:35 +08:00

166 lines
4.5 KiB
Markdown
Raw Permalink 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. **横向滑动的待办事项卡片** - 首屏展示1.5张卡片
2. **时间筛选选择器** - 支持按天/周/月筛选
3. **可滚动的时间轴** - 展示选中日期的具体任务,支持上下左右滑动
## 组件架构
### 核心组件
#### 1. TodoCard.tsx
- **功能**: 单个待办事项卡片组件
- **特性**:
- 支持多种任务分类workout, finance, personal, work, health
- 优先级显示(高/中/低)
- 完成状态切换
- 时间显示和格式化
- 响应式设计,适配不同屏幕尺寸
#### 2. TodoCarousel.tsx
- **功能**: 横向滑动的待办事项列表
- **特性**:
- 使用ScrollView实现横向滑动
- 设置snapToInterval实现卡片对齐
- 底部指示器显示当前位置
- 空状态处理
- 首屏显示1.5张卡片的设计
#### 3. TimeTabSelector.tsx
- **功能**: 时间筛选选择器
- **特性**:
- 支持天/周/月三种筛选模式
- 平滑的选择动画
- 符合设计系统的UI风格
#### 4. TimelineSchedule.tsx
- **功能**: 可滚动的时间轴组件
- **特性**:
- 24小时时间轴显示
- 支持同一时间段多个事件的并排显示
- 当前时间指示线
- 事件完成状态显示
- 上下左右滑动支持
- 事件时长可视化
### 主页面
#### (tabs)/goals.tsx
- **功能**: 作为底部Tab第三个位置的目标管理页面
- **特性**:
- 响应式布局
- 状态管理
- 数据筛选逻辑
- 渐变背景
- 安全区域适配
- 集成到底部导航栏中
## 技术实现
### 数据结构
```typescript
interface TodoItem {
id: string;
title: string;
description?: string;
time: string;
category: 'workout' | 'finance' | 'personal' | 'work' | 'health';
isCompleted?: boolean;
priority?: 'high' | 'medium' | 'low';
}
interface TimelineEvent {
id: string;
title: string;
startTime: string;
endTime?: string;
category: TodoItem['category'];
isCompleted?: boolean;
}
```
### 核心功能
1. **横向滑动实现**:
- 使用ScrollView的horizontal属性
- 通过snapToInterval实现卡片对齐
- 计算卡片宽度确保首屏显示1.5张
2. **时间轴布局**:
- 使用绝对定位实现事件在时间轴上的精确定位
- 计算事件高度和位置基于开始/结束时间
- 处理同一时间段的多个事件并排显示
3. **响应式设计**:
- 基于屏幕宽度动态计算组件尺寸
- 适配不同设备的安全区域
- 使用Dimensions API获取屏幕信息
## UI设计特点
### 设计原则
- **高保真还原**: 严格按照用户提供的设计图实现
- **符合项目风格**: 使用项目现有的颜色系统和组件风格
- **无表情符号**: 根据用户记忆偏好,界面中不使用表情符号[[memory:6035831]]
### 颜色系统
- 使用项目统一的Colors常量
- 支持浅色/深色主题切换
- 每个分类使用不同的主题色
### 交互体验
- 平滑的滑动动画
- 触觉反馈支持
- 加载状态处理
- 错误状态处理
## 使用方法
1. **访问页面**:
- 直接点击底部导航栏第三个位置的"目标"tab
- 或通过个人页面的"目标管理"菜单项
- 或访问"目标管理演示"查看功能介绍
2. **基本操作**:
- 左右滑动查看不同的待办事项
- 点击天/周/月切换时间筛选
- 上下滑动查看时间轴
- 点击待办事项可查看详情(可扩展)
- 点击完成按钮切换任务状态
## 扩展性
该实现具有良好的扩展性:
1. **数据源**: 可以轻松接入真实的API数据
2. **功能扩展**: 可以添加新增/编辑/删除任务功能
3. **样式定制**: 基于设计系统,可以轻松调整样式
4. **组件复用**: 各个组件都可以在其他页面中复用
## 文件结构
```
components/
├── TodoCard.tsx # 待办事项卡片
├── TodoCarousel.tsx # 横向滑动列表
├── TimeTabSelector.tsx # 时间筛选器
└── TimelineSchedule.tsx # 时间轴组件
app/
├── (tabs)/
│ └── goals.tsx # 目标管理tab页面第三个位置
└── goal-demo.tsx # 演示页面
constants/
└── Routes.ts # 路由配置(已更新)
```
## 总结
该目标管理功能完全按照用户需求实现,提供了高保真的用户界面和流畅的交互体验。代码结构清晰,易于维护和扩展。所有组件都遵循项目的设计规范,确保了一致的用户体验。