Skip to content

hejianhong2025/flutter_paiban

Repository files navigation

企业员工排班系统

一个基于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    # 班次日历组件

核心功能

管理员功能

  1. 班次管理

    • 创建新的班次(设置名称、时间、所需技能、最大人数)
    • 查看所有班次信息
    • 通过日历视图查看班次安排
  2. 自动排班

    • 基于员工技能、可用性和偏好进行智能排班
    • 冲突检测机制(时间冲突、人员不足)
    • 支持手动调整排班结果
  3. 请求管理

    • 查看所有员工提交的调班和请假申请
    • 审批或拒绝申请
    • 查看申请历史记录

员工功能

  1. 排班查看

    • 查看个人排班信息
    • 支持日/周/月视图切换
    • 点击班次卡片查看详情
  2. 调班申请

    • 选择当前班次和目标班次
    • 填写调班理由
    • 提交调班申请并等待审批
  3. 请假申请

    • 选择请假日期范围
    • 填写请假理由
    • 提交请假申请并等待审批
  4. 申请记录

    • 查看自己提交的申请记录
    • 查看申请状态(待审批/已批准/已拒绝)

数据模型

Employee (员工)

  • id: 员工唯一标识
  • name: 员工姓名
  • seniority: 工龄
  • skills: 技能列表
  • unavailableDates: 不可排班日期

Shift (班次)

  • id: 班次唯一标识
  • name: 班次名称
  • startTime: 开始时间
  • endTime: 结束时间
  • requiredSkills: 所需技能
  • maxCount: 最大人数
  • assignedEmployees: 已分配员工列表

Request (请求)

  • id: 请求唯一标识
  • employeeId: 员工ID
  • employeeName: 员工姓名
  • type: 请求类型(调班/请假)
  • status: 状态(待审批/已批准/已拒绝)
  • details: 详细信息
  • createdAt: 创建时间

排班算法

项目实现了智能排班算法,主要特性包括:

  • 根据员工技能匹配班次需求
  • 考虑员工不可排班日期
  • 检测时间冲突并避免重复排班
  • 平衡员工工作量分配
  • 支持手动调整和优化

API接口

后端服务通过以下API接口提供数据支持:

  • GET /employees: 获取员工列表
  • GET /shifts: 获取班次列表
  • GET /requests: 获取请求列表
  • POST /requests/shift-change: 提交调班申请
  • POST /requests/leave: 提交请假申请
  • PUT /requests/{id}/approve: 审批请求
  • POST /shifts: 创建新班次
  • POST /schedules/auto: 执行自动排班

所有接口均包含网络连接检查和错误处理机制。

快速开始

  1. 确保已安装Flutter开发环境
  2. 克隆项目代码
  3. 运行 flutter pub get 安装依赖
  4. 运行 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组件拆分以提高可维护性
  • 代码添加必要的注释说明

About

这是一个用flutter进行开发的排班应用程序,有Windows系统、Macos系统,还有Windows系统以及iOS、安卓的版本都有

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors