feat: 新增目标管理功能及相关组件
- 创建目标管理演示页面,展示高保真的目标管理界面 - 实现待办事项卡片的横向滑动展示,支持时间筛选功能 - 新增时间轴组件,展示选中日期的具体任务 - 更新底部导航,添加目标管理和演示页面的路由 - 优化个人页面菜单项,提供目标管理的快速访问 - 编写目标管理功能实现文档,详细描述功能和组件架构
This commit is contained in:
165
docs/goal-management-implementation.md
Normal file
165
docs/goal-management-implementation.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# 目标管理功能实现文档
|
||||
|
||||
## 功能概述
|
||||
|
||||
根据用户需求,实现了一个高保真的目标管理页面,包含以下主要功能:
|
||||
|
||||
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 # 路由配置(已更新)
|
||||
```
|
||||
|
||||
## 总结
|
||||
|
||||
该目标管理功能完全按照用户需求实现,提供了高保真的用户界面和流畅的交互体验。代码结构清晰,易于维护和扩展。所有组件都遵循项目的设计规范,确保了一致的用户体验。
|
||||
Reference in New Issue
Block a user