Initial commit: Complete工时统计系统 implementation

This commit is contained in:
2025-11-13 01:00:27 +08:00
commit b554c14ce6
47 changed files with 6040 additions and 0 deletions

166
README.md Normal file
View File

@@ -0,0 +1,166 @@
# 工时统计系统
一个基于 React 的现代化工时统计与管理系统,帮助团队高效追踪和管理工时记录。
## 功能特性
### 核心功能
- 📅 **工时录入**: 便捷的表单界面,支持选择日期、项目、任务类型和时长
- 📊 **统计报表**: 多维度的数据可视化,包括月度趋势图和项目占比环形图
- 📈 **仪表板**: 实时显示本周、本月和累计工时,以及记录总数
- 📋 **记录查询**: 完整的工时记录列表,支持筛选和分页
- 💾 **数据持久化**: 使用本地存储保存数据,无需后端支持
- 🎨 **响应式设计**: 完美适配各种屏幕尺寸
### 技术亮点
- **组件化架构**: 使用 Material-UI 构建美观且一致的用户界面
- **状态管理**: React Context API 实现全局状态共享
- **数据可视化**: Recharts 提供强大的图表功能
- **表单验证**: 完善的前端验证确保数据完整性
- **类型安全**: 清晰的数据结构设计
## 技术栈
| 技术栈 | 版本 | 用途 |
|--------------|----------|-----------------------------|
| React | ^19.2.0 | 前端框架 |
| React Router | ^7.9.5 | 路由管理 |
| Material-UI | ^7.3.5 | UI 组件库 |
| Recharts | ^2.13.0 | 图表库 |
| Vite | ^6.0.1 | 构建工具 |
## 快速开始
### 安装依赖
```bash
npm install
```
### 启动开发服务器
```bash
npm run dev
```
应用将在 http://localhost:3000 自动打开。
### 构建生产版本
```bash
npm run build
```
### 预览生产版本
```bash
npm run preview -- --port 3000
```
## 项目结构
```
time-tracking-system/
├── src/
│ ├── components/ # 通用组件
│ │ └── AppLayout.jsx # 应用布局组件
│ ├── context/ # React Context
│ │ └── TimesheetContext.jsx # 工时记录上下文
│ ├── pages/ # 页面组件
│ │ ├── DashboardPage.jsx # 仪表板
│ │ ├── TimesheetPage.jsx # 工时录入
│ │ ├── RecordsPage.jsx # 记录查询
│ │ └── ReportsPage.jsx # 统计报表
│ ├── App.jsx # 应用入口
│ ├── index.jsx # React 渲染入口
│ └── index.css # 全局样式
├── .gitignore # Git 忽略文件
├── package.json # 项目配置
└── vite.config.js # Vite 配置
```
## 使用指南
### 1. 工时录入
1. 进入「工时录入」页面
2. 选择工作日期(默认为当天)
3. 选择项目项目1/项目2/项目3
4. 输入任务内容(详细描述工作内容)
5. 输入时长0-24小时支持0.5小时为单位)
6. 选择任务类型(开发/测试/文档/会议/其他)
7. 点击「保存记录」按钮完成录入
### 2. 仪表板
- **本周工时**: 显示本周累计工时
- **本月工时**: 显示本月累计工时
- **累计工时**: 显示所有记录的累计工时
- **记录总数**: 显示总记录条数
- **项目工时分布**: 按项目分类的工时占比
- **最近记录**: 显示最新的5条工时记录
### 3. 记录查询
- 显示所有工时记录的完整列表
- 支持分页查询每页5/10/20条
- 支持多选操作,可以批量删除记录
- 点击「查看详情」可以查看记录的完整信息
- 点击「删除」可以删除单条记录
### 4. 统计报表
- **月度趋势图**: 按周显示不同项目的工时分布
- **项目占比环形图**: 显示各项目的工时占比情况
- 支持按时间范围筛选数据(本周/上周/本月/上月/本季度/上季度)
- 支持生成不同类型的报表
## 数据结构
### 工时记录数据结构
```javascript
{
id: 'string', // 唯一标识
date: Date, // 工作日期
project: 'string', // 项目名称
task: 'string', // 任务内容
hours: 'number', // 时长(小时)
taskType: 'string', // 任务类型
createdAt: Date // 创建时间
}
```
## 浏览器支持
- Chrome (推荐)
- Firefox
- Safari
- Edge
## 许可证
ISC
## 开发说明
### 表单验证规则
1. 日期:必填
2. 项目:必填
3. 任务内容:必填,不能为空
4. 时长必填必须是0-24之间的数字支持0.5小时为单位
5. 任务类型:必填
### 数据持久化
- 使用 `localStorage` 保存工时记录
- 数据自动格式化:
- `date``createdAt` 转换为 Date 对象
- 确保数据的一致性和正确性
## 更新日志
### v1.0.0 (2025-01-13)
- 初始版本发布
- 实现所有核心功能