一个基于Flutter框架开发的跨平台企业员工排班管理系统,支持管理员进行班次管理、自动排班和请求审批,员工可以查看个人排班、提交调班和请假申请。
本项目是一个完整的企业员工排班解决方案,具有以下核心功能:
- 员工信息管理
- 班次创建与管理
- 自动排班算法
- 调班申请流程
- 请假申请流程
- 请求审批机制
- 多角色访问(管理员/员工)
- 日/周/月视图切换的班次日历
- 框架: Flutter 3.0+
- 语言: Dart
- 状态管理: Provider
- 网络请求: http
- 代码规范: flutter_lints
lib/
├── main.dart # 应用入口文件
├── models/ # 数据模型
│ ├── employee.dart # 员工模型
│ ├── shift.dart # 班次模型
│ ├── request.dart # 请求模型
│ └── scheduling_algorithm.dart # 排班算法模型
├── providers/ # 状态管理
│ ├── schedule_provider.dart # 排班状态管理
│ └── request_provider.dart # 请求状态管理
├── screens/ # 页面组件
│ ├── role_selection_screen.dart # 角色选择页面
│ ├── admin_screen.dart # 管理员主页面
│ ├── employee_screen.dart # 员工主页面
│ ├── admin_requests_screen.dart # 管理员请求管理页面
│ └── employee_requests_screen.dart # 员工请求查看页面
├── services/ # 服务层
│ └── api_service.dart # API服务
├── utils/ # 工具类
│ └── connectivity_utils.dart # 网络连接工具
└── widgets/ # 自定义组件
└── shift_calendar.dart # 班次日历组件
-
班次管理
- 创建新的班次(设置名称、时间、所需技能、最大人数)
- 查看所有班次信息
- 通过日历视图查看班次安排
-
自动排班
- 基于员工技能、可用性和偏好进行智能排班
- 冲突检测机制(时间冲突、人员不足)
- 支持手动调整排班结果
-
请求管理
- 查看所有员工提交的调班和请假申请
- 审批或拒绝申请
- 查看申请历史记录
-
排班查看
- 查看个人排班信息
- 支持日/周/月视图切换
- 点击班次卡片查看详情
-
调班申请
- 选择当前班次和目标班次
- 填写调班理由
- 提交调班申请并等待审批
-
请假申请
- 选择请假日期范围
- 填写请假理由
- 提交请假申请并等待审批
-
申请记录
- 查看自己提交的申请记录
- 查看申请状态(待审批/已批准/已拒绝)
id: 员工唯一标识name: 员工姓名seniority: 工龄skills: 技能列表unavailableDates: 不可排班日期
id: 班次唯一标识name: 班次名称startTime: 开始时间endTime: 结束时间requiredSkills: 所需技能maxCount: 最大人数assignedEmployees: 已分配员工列表
id: 请求唯一标识employeeId: 员工IDemployeeName: 员工姓名type: 请求类型(调班/请假)status: 状态(待审批/已批准/已拒绝)details: 详细信息createdAt: 创建时间
项目实现了智能排班算法,主要特性包括:
- 根据员工技能匹配班次需求
- 考虑员工不可排班日期
- 检测时间冲突并避免重复排班
- 平衡员工工作量分配
- 支持手动调整和优化
后端服务通过以下API接口提供数据支持:
GET /employees: 获取员工列表GET /shifts: 获取班次列表GET /requests: 获取请求列表POST /requests/shift-change: 提交调班申请POST /requests/leave: 提交请假申请PUT /requests/{id}/approve: 审批请求POST /shifts: 创建新班次POST /schedules/auto: 执行自动排班
所有接口均包含网络连接检查和错误处理机制。
- 确保已安装Flutter开发环境
- 克隆项目代码
- 运行
flutter pub get安装依赖 - 运行
flutter run启动应用
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
http: ^0.13.3
provider: ^6.0.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0项目遵循以下开发规范:
- 使用Provider进行状态管理
- 遵循Flutter官方代码风格指南
- 所有异步操作使用async/await处理
- 网络请求包含完整的错误处理
- UI组件拆分以提高可维护性
- 代码添加必要的注释说明