跳到主要内容

请假申请

请假申请是休假管理工作流的核心。员工提交休假请求,然后经过审批流程。系统跟踪从提交到审批或拒绝的完整生命周期,每个步骤都会自动更新余额。


提交请假申请

作为员工(门户)

  1. 从侧边栏导航到请假申请
  2. 点击创建
  3. 选择请假类型
  4. 输入开始日期结束日期
  5. 输入天数(支持半天增量,例如 0.5、1.5)。
  6. 可选添加原因
  7. 点击保存

员工字段会自动设置为已登录的员工——它不会显示在表单上。

作为管理员

管理员看到相同的表单,但有一个额外的员工字段用于选择请假的员工。他们还可以填写管理员备注字段(对员工隐藏)。

从员工详情视图

管理员可以直接从员工的详情页面使用创建请假申请操作创建请假申请。员工已预填,并提供了一个额外的半天切换按钮以方便使用。


验证规则

系统在提交或编辑请假申请时执行多项验证规则:

天数验证

天数必须与日期范围匹配:

  • 全天:天数必须等于 end_date - start_date + 1
  • 半天:天数必须等于 (end_date - start_date + 1) * 0.5

其他任何值都会被拒绝并显示错误消息。

重叠检测

系统检查同一员工的重叠请假申请。如果日期范围与任何现有的已批准待审批申请重叠,该申请将被阻止。

两个日期范围重叠条件:start_date_1 <= end_date_2 AND start_date_2 <= end_date_1

编辑现有申请时,重叠检查会排除当前记录。


申请状态

状态标记描述
待审批黄色等待审批。余额已在 pending_days 中预留。
已批准绿色已被经理批准。天数从 pending_days 移至 used_days
已拒绝红色已被经理拒绝。天数从 pending_days 中移除。
已取消灰色被员工或管理员取消。天数已恢复。

审批工作流

标准流程

员工提交申请
|
状态:待审批
(pending_days 增加)
|
经理审查申请
|
+--- 批准 ---> 状态:已批准
| (pending_days -> used_days)
| 通知员工
|
+--- 拒绝 ---> 状态:已拒绝
| (pending_days 移除)
| 记录拒绝原因
| 通知员工
|
+--- (员工) 取消 --> 状态:已取消
(pending_days 移除)

自动审批流程

对于配置了自动审批的请假类型(在设置 > 请假管理中):

员工提交申请
|
观察者检测到自动审批配置
|
状态:立即批准
(used_days 增加)
不向经理发送通知

审批工作流设置

导航到设置 > HRM 配置 > 请假管理来配置工作流:

设置选项默认值
审批工作流单级 / 多级 / 自动审批单级
自动审批请假类型选择特定的请假类型

批准请假申请

需要 approve leave requests 权限。

  1. 导航到请假申请或从待审批申请仪表板卡片打开。
  2. 选择一个或多个待审批申请。
  3. 点击批准操作。
  4. 可选添加管理员备注
  5. 确认。

发生的事情:

  • 状态变为已批准
  • approved_by 设置为当前用户
  • approved_at 设置为当前时间戳
  • 请假余额:pending_days 减少,used_days 增加
  • 员工收到通知

拒绝请假申请

需要 approve leave requests 权限。

  1. 选择一个或多个待审批申请。
  2. 点击拒绝操作。
  3. 输入拒绝原因(必填)。
  4. 可选添加管理员备注
  5. 确认。

发生的事情:

  • 状态变为已拒绝
  • rejection_reason 被记录并对员工可见
  • 请假余额:pending_days 减少
  • 员工收到通知

取消请假申请

需要 cancel leave requests 权限。员工和管理员都可以取消申请。

  1. 选择一个待审批或已批准的申请。
  2. 点击取消操作。
  3. 确认。

发生的事情:

  • 状态变为已取消
  • 如果申请是待审批的:pending_days 减少
  • 如果申请是已批准的:used_days 减少(天数被退回)
信息

只有待审批和已批准的申请可以被取消。已拒绝和已取消的申请不能被取消。


表格视图

请假申请列表包含四个预配置视图:

视图筛选条件
所有请假申请无筛选
待审批申请状态 = 待审批
已批准申请状态 = 已批准
已拒绝申请状态 = 已拒绝

可用筛选器

  • 状态 — 待审批、已批准、已拒绝、已取消
  • 开始日期 — 日期范围
  • 结束日期 — 日期范围
  • 天数 — 数字范围

通知

系统在请假申请生命周期的关键时刻发送电子邮件通知:

当申请被提交时

通知将发送给所有拥有 approve leave requests 权限的用户。电子邮件包含:

  • 员工姓名和电子邮件
  • 请假类型、开始/结束日期、总天数
  • 原因(如提供)
  • 查看申请的链接

当申请状态变更时

当员工的申请被批准、拒绝或取消时,员工会收到通知。电子邮件包含:

  • 请假类型、日期和总天数
  • 新状态
  • 拒绝原因(如被拒绝)
  • 审批人姓名
  • 查看申请的链接

电子邮件模板可以从设置 > 邮箱账户 > 模板自定义。


仪表板卡片

请假管理系统提供三个仪表板卡片:

卡片类型描述
按状态分类的请假申请饼图按状态分布的申请
按类型分类的请假申请柱状图按请假类型分组的申请数量
待审批请假申请表格最近 15 个需要处理的待审批申请

审批与拒绝工作流

请假审批工作流控制请假申请如何从提交到解决。HRM 模块支持三种工作流模式,可从设置页面配置。


工作流模式

设置 > HRM 配置 > 请假管理中配置工作流模式。

单级(默认)

最简单的工作流。一个授权用户审查并批准或拒绝申请。

员工 -> 提交 -> 经理/HR 批准或拒绝 -> 完成

任何拥有 approve leave requests 权限的用户都可以批准或拒绝申请。

多级

申请经过多个审批阶段。适用于需要直接经理和 HR 双重签批的组织。

员工 -> 提交 -> 经理批准 -> HR 批准 -> 完成

自动审批

所有请假申请在提交时自动批准。无需人工审查。

员工 -> 提交 -> 自动批准 -> 完成

提示

您可以将工作流模式与自动审批请假类型设置结合使用,自动批准特定类型(例如远程办公),同时要求其他类型(例如年假)需要审批。


特定请假类型的自动审批

您可以选择特定的请假类型来跳过审批,而不是自动批准所有申请:

  1. 前往设置 > HRM 配置 > 请假管理
  2. 自动审批请假类型中,选择类型(例如远程办公、调休)。
  3. 保存。

当员工提交自动审批请假类型的申请时:

  • 状态立即设置为已批准
  • 请假余额被更新(used_days 直接增加,无 pending_days 步骤)。
  • 不向经理发送通知。
  • 员工不会收到审批通知(因为是即时的)。

非自动审批请假类型的申请遵循标准审批工作流,不受此设置影响。


按操作更新余额

操作待审批天数已使用天数可用天数
提交申请+天数减少
批准申请-天数+天数不变
拒绝申请-天数增加
取消(原为待审批)-天数增加
取消(原为已批准)-天数增加

谁可以审批

审批操作由 approve leave requests 权限控制。此权限必须明确授予角色——它包含在默认的员工角色中。

通常应拥有此权限的角色:

  • HR 经理
  • 部门主管
  • 团队领导
  • 任何管理员角色

超级管理员可以始终批准申请(通过 Gate::before 绕过)。


拒绝原因

拒绝请假申请时,拒绝原因是必填项。此原因:

  • 存储在请假申请记录中
  • 在员工的请假申请详情视图中对员工可见
  • 包含在状态变更通知电子邮件中

管理员还可以在审批或拒绝期间添加管理员备注。管理员备注仅对其他管理员可见,对员工不可见。


取消请假申请

员工和管理员可以取消处于待审批已批准状态的请假申请。取消会将已消耗或预留的请假天数恢复到员工余额中。


谁可以取消

取消需要 cancel leave requests 权限。默认情况下,员工拥有此权限并可以取消自己的申请。

用户可以取消自己的可以取消他人的
员工是(有权限时)否(数据范围限制阻止查看他人)
管理员是(如果拥有权限)
超级管理员是(绕过所有检查)

如何取消

  1. 导航到请假申请
  2. 找到要取消的申请(必须是待审批或已批准)。
  3. 点击取消请假操作(在操作列中内联显示)。
  4. 确认取消。

取消时发生的事情

取消待审批申请

之前:pending_days = 5, used_days = 10, available_days = 3 取消 2 天待审批申请 之后:pending_days = 3, used_days = 10, available_days = 5

  • pending_days 减少申请的天数
  • available_days 相应增加
  • 申请状态变为已取消

取消已批准申请

之前:pending_days = 3, used_days = 12, available_days = 3 取消 2 天已批准申请 之后:pending_days = 3, used_days = 10, available_days = 5

  • used_days 减少申请的天数
  • available_days 相应增加
  • 申请状态变为已取消

限制

  • 已拒绝申请不能被取消(已经解决)。
  • 已取消申请不能再次取消。
  • 取消操作按钮仅对待审批或已批准状态的申请显示。

重叠验证

HRM 模块防止员工提交与其现有已批准或待审批申请重叠的请假申请。这确保了准确的请假跟踪并防止重复预订。


工作原理

当创建或更新请假申请时,系统检查日期范围是否重叠:

  1. 查询同一员工的所有请假申请。
  2. 仅筛选已批准待审批的申请(已拒绝和已取消的被忽略)。
  3. 编辑时,将当前申请从检查中排除。
  4. 使用公式测试重叠:existing_start <= new_end AND new_start <= existing_end

如果发现重叠,申请将被拒绝并显示验证错误。


示例

被阻止(重叠)

现有申请新申请结果
1月10-12日(已批准)1月11-14日被阻止——在1月11-12日重叠
1月15-15日(待审批)1月15-15日被阻止——完全相同的日期
1月1-31日(已批准)1月10-10日被阻止——包含在现有范围内

允许(无重叠)

现有申请新申请结果
1月10-12日(已批准)1月13-15日允许——相邻但不重叠
1月10-12日(已拒绝)1月10-12日允许——已拒绝申请被忽略
1月10-12日(已取消)1月10-12日允许——已取消申请被忽略

跨类型重叠

重叠验证适用于所有请假类型。员工不能有重叠的年假和病假申请——无论请假类型如何,日期不得冲突。


请假结转

请假结转允许将一个财年未使用的请假天数结转到下一个财年。此功能可在全局级别(设置)和单个请假类型级别进行配置。


结转工作原理

在每个财年末,系统为所有员工处理结转:

  1. 对于每位员工在结束年度的请假余额:
    • 检查请假类型是否启用了结转
    • 计算未使用天数:total_days - used_days - pending_days
    • 应用结转上限(请假类型的最大结转天数和全局最大结转天数设置中的较小值)。
    • 创建或更新下一年的请假余额,包含结转天数
  2. 结转天数根据结转到期设置有有效期。

配置

全局设置

导航到设置 > HRM 配置 > 请假管理

设置默认值描述
启用结转结转功能的主开关
最大结转天数10所有请假类型的全局结转天数上限
结转到期(月)3结转天数在新财年开始后这么多个月到期

按请假类型设置

每种请假类型有自己的结转配置:

字段描述
结转启用/禁用此特定请假类型的结转
最大结转天数此类型可结转的最大天数

有效结转上限是请假类型限制和全局限制中的较小值

示例:请假类型允许结转 10 天,但全局最大值为 5。只有 5 天会被结转。


处理结转

结转通过在财年开始月份第一天运行的计划命令自动处理:

php artisan hrm:process-leave-carryover

结转到期

结转天数不是永久的——它们在可配置的期限后到期。到期后,它们不再计入可用余额。