Files
time-tracking-system-nodejs/README.md

166 lines
4.7 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.

# 工时统计系统
一个基于 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)
- 初始版本发布
- 实现所有核心功能