外观
15. 资质与排班
15.0 快速上手:10 分钟完成从资质录入到排班发布
你是一名运维主管,需要为电工团队录入资质证书,配置班次模板,并编排本月的值班表。以下步骤带你完成从资质管理到排班发布的全链路。
Step 1:录入人员资质证书 → 详见 §15.3.2
进入「人员管理」→「资质证书」页面 → 点击「添加证书」→ 选择用户 → 填写证书名称、编号、类型(电气资质)、发证机构、发证日期与到期日期 → 上传证书扫描件 → 点击确定。
Step 2:查看即将到期的证书 → 详见 §15.3.3
切换到「即将到期」Tab → 系统自动列出 90 天内到期的所有证书 → 到期 7 天内的红色标记、30 天内的橙色标记。
Step 3:创建班次模板 → 详见 §15.4.2
进入「人员管理」→「班次模板」页面 → 点击「新建模板」→ 填写名称(如"早班")、起止时间(08:00-16:00)、颜色(蓝色)、所需资质(电气资质)→ 保存。
Step 4:编排排班表 → 详见 §15.5.2
进入「人员管理」→「排班管理」页面 → 选择部门与月份 → 在月视图表格中逐格点击编辑或使用「批量排班」按星期模式自动填充 → 校验面板实时提示冲突/资质缺失/覆盖率不足等问题。
Step 5:发布排班 → 详见 §15.5.7
确认排班无误后 → 点击「发布」按钮 → 系统锁定当月排班并生成版本号 → 相关人员收到通知。
Step 6:查看我的排班 → 详见 §15.5.11
员工登录后进入「我的排班」→ 以 FullCalendar 日历形式查看个人当月班次 → 支持拖拽调整个人班次时间(需权限)。
💡 完成以上步骤后,你已完成「录入资质 → 配置模板 → 编排排班 → 发布 → 个人查看」的完整人员管理链路。
15.1 功能概述
本章介绍「人员管理」菜单组下的四个子页面。资质与排班模块是设备运维系统的核心人员能力保障与调度中心,确保「合适的人、在合适的时间、具备合适的资质」上岗:
| 子页面 | 定位 | 核心功能 |
|---|---|---|
| 资质证书 | 人员资质全生命周期管理 | 证书 CRUD、附件上传(扫描件)、多类型分类(安全/电气/特种设备/专业/其他)、到期统计、即将到期预警 |
| 班次模板 | 班次标准化定义 | 模板 CRUD、起止时间与颜色配置、所需资质类型绑定、加班/节假日标记、部门授权矩阵 |
| 排班管理 | 排班编排与发布 | 月视图(表格+日历)/ 周视图 / 日视图、单元格点击编辑 / 右键菜单 / 拖拽换班、批量排班、批量改班、资质实时校验、冲突检测、覆盖率热力图、发布/撤回、Excel 导出、变更历史 |
| 我的排班 | 个人排班查看与自助调整 | FullCalendar 日历视图、按月份查看个人班次、自助调整班次时间(需权限)、换班申请、请假申请 |
架构说明
- 后端:基于 FastAPI 的 REST API,排班数据按租户库级隔离
- 前端:Vue 3 组合式模块(
shift-schedule.js/certification-management.js),多个 Tab 统一在一个视图中切换 - 日历组件:FullCalendar v6(MIT)用于「我的排班」日历视图
- 校验引擎:前后端双重校验(资质缺失 / 时间冲突 / 最小休息间隔 / 覆盖率不足),编辑时实时防抖校验(300ms)
- 撤销/重做:Ctrl+Z / Ctrl+Y 内存命令栈(前端,最多 50 步,刷新后清空)
- 资质到期预警:定时任务自动扫描即将到期证书,30 天内到期标记为
expiring_soon(系统内触发通知的具体阈值与频率参见调度配置)
15.2 页面入口
- PC端:左侧菜单「人员管理 👥」→ 四个子菜单(需要对应权限,按权限可见)
- 「资质证书 📜」:需要
certification:view权限 - 「班次模板 🕘」:需要
shift_template:view或shift_schedule:view权限(向后兼容) - 「排班管理 📅」:需要
shift_schedule:view权限 - 「我的排班 🗓️」:需要
shift_schedule:my_view权限
- 「资质证书 📜」:需要
- 排班与点检联动:排班数据可为工单/点检模块的执行人筛选提供参考
- 资质到期通知:系统自动向证书持有人及部门主管推送到期提醒通知
15.3 PC端 - 资质证书
15.3.1 页面布局
资质证书页面采用上下布局,包含两个 Tab:
- 「用户证书」Tab:
- 统计概览条:总数 / 有效数(绿色)/ 即将到期数(橙色)/ 已过期数(红色)
- 筛选控栏:用户筛选下拉(支持搜索)、「添加证书」按钮
- 证书列表表格(8 列):
- 列:用户、证书名称、证书编号、类型、发证机构、到期日期、状态(颜色标签)、操作
- 操作列(按权限显示):编辑、删除;点击操作列可进入附件抽屉查看/管理证书扫描件
- 「即将到期」Tab:
- 列出 90 天内到期的所有证书
- 列:用户、证书名称、到期日期、剩余天数(颜色标签)、状态


15.3.2 添加/编辑证书
点击「添加证书」按钮(需要 certification:manage 权限)→ 弹出证书编辑弹窗:
基本信息区:
| 字段 | 说明 | 必填 |
|---|---|---|
| 用户 | 下拉选择用户(编辑模式下不可修改) | 是 |
| 证书名称 | 证书名称,如「高压电工作业证」 | 是 |
| 证书编号 | 证书唯一编号 | 否 |
| 证书类型 | 下拉选择:安全资质 / 电气资质 / 特种设备 / 专业资质 / 其他 | 是 |
| 发证机构 | 证书颁发机构名称 | 否 |
有效期区:
| 字段 | 说明 | 必填 |
|---|---|---|
| 发证日期 | 证书颁发日期 | 否 |
| 到期日期 | 证书有效期截止日期 | 否 |
| 备注 | 附加说明文字 | 否 |
附件区:
- 支持上传证书扫描件(图片或 PDF)
- 已上传附件显示缩略图 + 文件名,点击预览/下载
- 新增模式下附件暂存,保存证书后自动上传
- 编辑模式下附件实时上传/删除

15.3.3 查看即将到期证书
切换到「即将到期」Tab → 系统自动加载 90 天内到期的所有证书:
| 剩余天数 | 标签颜色 | 说明 |
|---|---|---|
| ≤ 7 天 | 红色 | 紧急,需立即处理 |
| 8 ~ 30 天 | 橙色 | 预警,需近期安排续证 |
| 31 ~ 90 天 | 默认色 | 关注,可提前准备 |
15.3.4 附件管理
在证书详情或列表中可以进行附件操作:
- 查看附件:在操作列中点击附件入口 → 打开附件抽屉,列出该证书下所有附件
- 预览:图片格式附件点击预览弹窗查看原图,PDF 附件通过浏览器内置查看器打开
- 上传:编辑模式下通过拖拽或点击上传按钮添加附件
- 删除:编辑模式下每个附件旁有删除按钮
15.3.5 删除证书
点击证书列表操作列的「删除」按钮 → 弹出确认提示 → 确认后删除证书及其关联附件。需要 certification:manage 权限。
15.4 PC端 - 班次模板
15.4.1 页面布局
班次模板页面包含两个 Tab:
- 「模板列表」Tab:
- 顶部操作栏:部门树形选择器 + 搜索框 +「新建模板」按钮
- 模板列表表格(9 列):名称(含颜色圆点)、时间(含跨夜标签)、类别、归属部门、适用部门(最多显示 2 个,超出显示"+N"可展开)、最少人数、所需资质、启用(✓/✗)、操作(编辑/删除)
- 点击行展开可查看完整的适用部门列表
- 「授权矩阵」Tab:部门 × 模板 的授权矩阵(§15.4.3)

15.4.2 创建/编辑模板
点击「新建模板」按钮 → 弹出模板弹窗:
| 字段 | 说明 | 必填 |
|---|---|---|
| 名称 | 模板显示名称,如「早班」「中班」「晚班」 | 是 |
| 开始时间 | 班次开始时间(HH:mm) | 是 |
| 结束时间 | 班次结束时间(HH:mm,允许跨天,如次日 06:00) | 是 |
| 颜色 | 班次在日历/排班表中的显示颜色 | 是 |
| 归属部门 | 模板所属部门(留空=全局模板,所有部门可用;有值=该部门为负责维护方) | 否 |
| 适用部门 | 额外授权使用本模板的部门(归属部门自动可用,无需重复勾选;留空=不额外授权) | 否 |
| 类别 | 白班(day) / 晚班(evening) / 夜班(night) / 加班(overtime) / 休息(rest) | 是 |
| 所需人数 | 该班次最低人数要求(用于覆盖率告警) | 否 |
| 所需资质 | 多选资质类型(空=无资质要求),用于排班校验 | 否 |
| 加班模板 | 开关,标记为加班模板,影响出勤统计 | 否 |
| 启用 | 开关,控制该模板是否在排班下拉中可选(默认启用) | 否 |
💡 跨天夜班:当结束时间早于开始时间(如 22:00-次日 06:00),系统自动标记为跨天班次,在周视图和日视图中跨零点显示。

15.4.3 模板授权矩阵
每个模板可配置授权部门(bound departments),控制该模板在哪些部门可用:
- 在模板编辑弹窗中设置「所属部门」列表
- 支持批量保存:一次提交多个模板的部门授权变更
- 选择器降级接口(
/options)仅需登录即可访问,确保排班页下拉始终有数据

15.4.4 删除模板
点击模板列表操作列的「删除」按钮 → 弹出确认提示 → 确认后删除。需要 shift_template:manage 或 shift_schedule:manage 权限。
15.5 PC端 - 排班管理
15.5.1 页面布局
排班管理是本章最核心的页面,从上到下分为:
顶部工具栏:
- 标题 + 版本状态徽标(草稿/已发布 v1)
- 多选计数徽标(批量改班入口)
- 部门树形选择器
- 时间导航(月份/周/日 前后切换)
- 撤销/重做按钮(Ctrl+Z / Ctrl+Y)
- 批量排班 / 发布 / 撤回 / 复制到其他部门 / 导出 Excel
- 「含下级部门」复选框(只读汇总模式)
校验提示面板(可折叠):
- 级别筛选徽标:错误 / 警告 / 提示(点选切换过滤)
- 搜索框:按日期/姓名/类型搜索
- 校验规则设置按钮
- 紧凑行列表:日期、姓名、问题类型、说明
视图切换 Tab:[ 月(表格) | 周 | 日 | 统计(需权限)| 历史 ]
⚠️ 注:我的排班(独立菜单
my-schedule)和班次模板(独立菜单shift-template)已从排班管理页面 Tab 中拆分为独立页面入口,不再以 Tab 形式嵌套在此。
- 内容区域:根据当前 Tab 渲染不同视图


15.5.2 月视图(表格式)— 编辑主界面
月视图以人员×日期的网格表格展示排班情况:
- 行:部门人员(按姓名拼音排序),显示用户名称
- 列:当月的每一天(1~31),日期数字为表头,周六日高亮
- 右侧汇总列:出勤班次 / 请假天数 / 加班班次
- 单元格颜色:
- 各色块 = 对应班次模板颜色
- 灰色 = 请假(leave)
- 粉色高亮 = 换班(swapped)
- 红色边框高亮 = 存在校验错误
- 橙色边框高亮 = 存在校验警告
- 蓝色虚线边框 = 被选中(多选模式)
- 蓝色框选范围 = marquee 拖拽选区
方案B:同日多班次 — 每人每天允许排多个班次,单元格内垂直排列多达 3 个色条,超出部分显示"+N"徽标。
单元格操作
单击编辑(普通模式):
- 点击目标单元格 → 弹出编辑弹窗
- 同日多班次时,弹窗内显示多行编辑列表,每行包含:班次模板选择器、状态、备注
- 编辑后点确定 → 实时校验 → 保存
多选模式(Shift+Click / Ctrl+Click):
- 按住 Shift 点击连续范围或 Ctrl 点击逐个选择
- 选中单元格出现蓝色虚线边框
- 顶部出现「已选 N — 批量改班」徽标
- 点击徽标 → 弹出批量改班弹窗 → 统一修改模板/状态
框选模式(鼠标拖拽):
- 在单元格上按住鼠标左键拖动 → 蓝色选区扩大
- 松开后自动进入多选状态
- 可批量改班或清空
右键菜单:
- 在单元格上右键 → 弹出上下文菜单
- 菜单项:编辑排班 / 标记请假 / 复制 / 粘贴 / 查看历史 / 清空
- 方案B支持chip级右键:对同日多班次中的某一条独立操作
拖拽换班
- 鼠标按住已有排班的单元格(可拖拽标记)→ 拖到目标人员同一天的单元格
- 释放后系统直接执行移动:在目标位置新建排班,同时删除原位置排班
- 按住 Alt 键拖拽 = 替换模式(swap),覆盖目标已有班次
- 拖拽的班次信息随鼠标显示,目标单元格悬停高亮


15.5.3 周视图
切换到「周」Tab,以人员×日期的网格展示一周排班:
- 行:部门人员(按姓名排序)
- 列:周一至周日(显示日期 + 星期几),含周六日高亮
- 每格:纵向排列该日所有班次色条,显示模板名称、起止时间,含校验提示角标
- 跨天夜班:按实际日期显示在当天列中
- 操作:
- 点击单元格 → 编辑弹窗
- 右键 → 上下文菜单
- 拖拽换班到其他人员当天列

15.5.4 日视图
切换到「日」Tab,展示某一天所有人员的排班情况:
- 甘特图风格:按人员分行的横向时间轴(0h~24h)
- 顶部:24 小时覆盖率柱状图(每小时的排班人数分布)
- 班次条:按颜色渲染,起止位置对应实际时间
- 操作:拖拽调整起止时间、右键菜单

15.5.5 实时校验
排班编辑器内置前后端双重校验引擎,编辑时 300ms 防抖实时调用 /validate 端点:
| 校验类别 | 级别 | 触发条件 |
|---|---|---|
| 资质缺失 | 🔴 错误 | 班次模板要求的资质类型,被排班人未持有 |
| 资质即将到期 | 🟠 警告 | 被排班人资质在 30 天内到期 |
| 时间重叠 | 🔴 错误 | 同一人同一天两个班次存在时间重叠(重叠 ≤ 5 分钟降级为 🟠 警告,视为交接短重叠) |
| 最小休息间隔 | 🟠 警告 | 距前一相邻班次(跨日)结束不足 10 小时(可配置开关;同日多班次之间的空档不计入检查) |
| 覆盖率不足 | 🔵 提示 | 当日某班次实际人数低于模板要求的最少人数 |
| 同日多班次提示 | 🟠 警告 | 同一人同一天存在 2 个及以上班次(可配置开关,默认关闭) |
校验规则开关:
- 点击校验面板头的设置按钮 → 弹出规则开关面板
- 可单独启用/禁用:重叠检测、资质缺失、资质到期、最小休息、覆盖率、同日多班次
- 设置记忆到 localStorage,按用户保存
- 默认状态:重叠检测/资质缺失/资质到期/覆盖率 默认开启;最小休息间隔/同日多班次 默认关闭
校验响应:
- 错误级别 → 弹确认框问「仍要提交?」
- 警告级别 → Toast 提示,允许继续
- 提示级别 → 角标显示,不打断操作
15.5.6 批量排班
点击「批量排班」按钮(需要 shift_schedule:manage 权限)→ 弹出批量排班弹窗:
| 字段 | 说明 |
|---|---|
| 部门 | 固定为当前页面所选部门(不可更改) |
| 年月 | 排班月份 |
| 模式 | 按星期配置:周一至周日,每天可选择多个班次模板 |
| 覆盖已有排班 | 复选框,开启后将覆盖当月已有排班 |
按「星期 → 模板」模式,系统自动为部门成员按星期分配班次。例如:
- 周一、二、三:部门全员默认排「早班」模板
- 周四、五:部门全员默认排「中班」模板
- 周六、日:自动排「休息」

15.5.7 发布排班
确认排班无误后,点击「发布」按钮(需要 shift_schedule:manage 权限)→ 系统执行以下操作:
- 锁定排班:当前月份所有状态为
scheduled的排班记录变为published - 生成版本:创建或更新
ShiftScheduleVersion记录(revision 递增) - 通知推送:通过通知中心向部门所有成员发送排班发布通知
发布后:
- 月视图顶部版本徽标变为绿色「已发布 vN」
- 普通编辑操作被禁用(已锁定)
- 撤回按钮可用(需
shift_schedule:unpublish权限)
15.5.8 撤回发布
已发布的排班可以撤回(需要 shift_schedule:unpublish 权限):
- 点击「撤回」按钮 → 确认弹窗
- 当月排班记录状态恢复为
scheduled - 版本记录标记为
draft - 编辑权限恢复
15.5.9 复制到其他部门
将当前部门的排班模式复制到目标部门(需要 shift_schedule:manage 权限):
- 点击「复制到其他部门」按钮
- 选择目标部门
- 选择是否覆盖目标部门已有排班
- 系统按「星期 → 模板」模式(不复制用户级绑定)为目标的部门成员批量生成排班
⚠️ 注意:若目标部门当月排班已发布,复制操作将被拒绝(返回 400),需先撤回目标部门排班。
15.5.10 导出排班表
点击「导出」按钮 → 系统生成当月排班 Excel 文件并下载:
- 文件名:
shift_schedule_{部门ID}_{年-月}.xlsx - 内容:人员×日期的排班表,含班次名称、时间、部门
15.5.11 我的排班
"我的排班"功能在 PC 端和移动端分别独立实现:PC 端为独立菜单页面(FullCalendar 月历),移动端融合在现有"日历"页中通过子 Tab 切换。
PC 端我的排班
从菜单「人员管理」→「我的排班」进入独立页面:
- FullCalendar 日历视图:以月历形式展示个人当月所有班次
- 班次色块:不同颜色代表不同班次,颜色与模板设置一致
- 交互操作:
- 拖拽调整班次时间(需要
shift_schedule:self_adjust_time权限) - 点击班次查看详情
- 右上角月份前后切换
- 拖拽调整班次时间(需要
- 数据来源:
/api/v1/shift-schedules/my?year_month=...(页面入口由shift_schedule:my_view权限控制菜单可见性)

移动端我的排班
移动端不单独建页,而是融合在现有底部导航「日历」页面中,通过顶部子 Tab 切换。
入口与结构:
- 底部导航 →「日历」页 → 顶部出现子 Tab 切换条
[工单] [我的排班] - 「我的排班」子 Tab 仅对拥有
shift_schedule:my_view权限的用户可见 - 两种模式(工单 / 排班)共用同一套月网格组件、月份切换、底部抽屉
月视图网格(排班模式):
- 沿用日历页的 7×6 月网格布局,每个格子显示:
- 日期数字
- 班次首字:当日第一个班次名称的首字(如"早""晚""夜""加""休"),底色 = 模板颜色(白班蓝 / 晚间班绿 / 夜班紫 / 加班橙 / 休息灰 / 请假橙 / 换班粉)
- 多班次红点:若同日有多个班次,右上角显示红色圆点 + 数量(>9 显示"9+")
- 月份前后切换:◀ 上月 / 下月 ▶ 按钮(与工单模式共用)
- 今日按钮:跳回当月今天
- 选中日期后,底部抽屉自动展开

底部抽屉(选中日期展开):
每条排班以卡片形式展示:
| 卡片元素 | 说明 |
|---|---|
| 颜色圆点 + 班次名 | 模板名称,左侧 3px 彩色边框 |
| 时间段 | HH:mm - HH:mm,跨天夜班显示"次日 HH:mm" |
| 加班徽标 | 橙色 is_overtime 标签 |
| 节假日徽标 | 红色 is_holiday 标签 |
| 资质缺失徽标 | 红色 🛡️ 标签,显示缺失资质种类数(Phase 1.5) |
| 资质即将到期徽标 | 橙色 ⚠️ 标签,显示即将到期种类数(Phase 1.5) |
| 状态标签 | 已排班(灰) / 已发布(绿) / 已换班(粉) / 请假(橙) |
| 备注 | 灰色文字省略显示 |
| 操作按钮 | [调整时间] [换班] [请假](见下方) |

操作按钮:
| 按钮 | 权限要求 | 当前状态 |
|---|---|---|
| 调整时间 | shift_schedule:self_adjust_time | ✅ 可用(已发布排班禁用,需 shift_schedule:manage 解锁) |
| 换班 | shift_schedule:swap | 🔒 置灰「PC 端操作」(Phase 2 开放) |
| 请假 | shift_schedule:leave | 🔒 置灰「PC 端操作」(并入 G-20 全局请假) |
调整时间功能:
- 点击 [调整时间] → 弹出编辑弹窗
- 弹窗内容:日期(只读)+ 开始时间 HH:mm + 结束时间 HH:mm(小时/分钟下拉选择器,5 分钟步进)
- 若结束时间 ≤ 开始时间,显示"跨天"提示(结束时间自动视为次日)
- 提交 →
PUT /api/v1/shift-schedules/{id}更新start_datetime/end_datetime - 提交成功后自动刷新排班数据

变更历史查看(Phase 1.5):
- 每条排班卡片右侧有 🕒 按钮 → 点击弹出变更历史对话框
- 列表展示每次变更的操作类型(颜色标签:创建/更新/删除/换班/请假/发布/撤回)、时间、变更摘要
- 无权限时弹出提示
离线缓存回退:
- 每次成功加载排班数据写入 localStorage(key=
shift_schedule:my:YYYY-MM) - 缓存有效期 7 天
- 断网 / 5xx 错误时自动回退显示缓存数据,Toast 提示"网络异常,显示 N 小时前的离线数据"
数据来源:GET /api/v1/shift-schedules/my?year_month=YYYY-MM(页面入口由 shift_schedule:my_view 权限控制菜单可见性)
15.5.12 统计面板
切换到「统计」Tab(需要 shift_schedule:stats 权限)→ 展示当月排班统计:
概览指标卡片:
- 总排班次数 / 总工时 / 加班工时 / 请假天数 / 出勤率 / 部门人数
按人员统计表:
- 列:用户名、出勤班次、加班工时、请假天数、周末值班次数、夜班次数
按模板统计表:
- 各模板的使用频次和涉及人数
公平性分析:
- 周末值班标准差(越小越公平)
- 夜班次数标准差
- 加班工时标准差
覆盖率热力图:
- 按日期×模板的颜色热力,直观展示各日期各模板的排班密度

15.5.13 变更历史
切换到「历史」Tab → 展示当月所有排班变更记录:
- 列:变更时间、操作人、操作类型(创建/更新/删除/批量/发布/撤回)、涉及用户、变更日期、变更摘要
- 支持按部门筛选(含下级部门只读模式)
- 单条排班历史:右键菜单 → 查看历史 → 侧边栏展示该排班从创建至今的完整变更链

15.5.14 撤销/重做
排班编辑器支持 Ctrl+Z / Ctrl+Y 操作:
- 每个编辑动作封装为 Command(do / undo / describe)
- 内存栈最多 50 步(不持久化,刷新页面后清空)
- 批量操作(框选改班、批量排班)合并为一个 Command
- 工具栏提供撤销/重做按钮(含快捷键提示)
15.6 换班与请假
15.6.1 换班流程
发起换班:
- 在「我的排班」页面,点击目标班次的「换班」按钮(需要
shift_schedule:swap权限) - 或在「排班管理」页面,通过编辑弹窗修改
swap_with_user_id字段 - 选择目标同事(同部门下拉)和对方的班次
- 填写备注 → 提交申请
审批流程:
- 同事收到换班确认通知 → 确认/拒绝
- 主管收到换班审批通知 → 通过/驳回
- 审批通过后 → 双方排班自动互换,记录换班状态(swapped)
- 通知双方换班结果
15.6.2 请假流程
发起请假:
- 在「排班管理」页面右键目标班次 → 选择「标记请假」
- 或通过审批模块提交请假申请(统一走全局请假流程)
审批流程:
- 主管收到请假审批通知 → 审批
- 审批通过 → 该日班次状态变更为 leave
- 系统推荐补班人(基于当天休息的可补班同事)
15.6.3 发布通知
排班发布后:
- 系统向当月排班涉及的部门所有成员推送通知
- 标题:「YYYY-MM 排班已发布」
- 正文:「您所在部门的 YYYY-MM 排班表已发布,请查看。」
15.7 与工单/点检的联动
15.7.1 工单派单联动(当班人员筛选)
当系统参数 SHIFT_DISPATCH_ON_DUTY_ENABLED 开启时(→ Ch17 §17.3.10.7),工单分配弹窗的负责人候选列表默认仅显示当前部门 + 时间的当班人员(已发布排班中该时段在岗的人员)。开关关闭时,工单分配不受排班影响。
开关控制
开关位于「系统管理 → ⚙️ 系统参数 → 业务流程」分类下,配置键 SHIFT_DISPATCH_ON_DUTY_ENABLED,默认关闭。各租户独立设定,修改后立即生效。
PC端工单分配
新建 / 编辑工单弹窗中的负责人下拉:
| 交互状态 | 说明 |
|---|---|
| 开关开启 → 默认筛选当班人员 | 下拉列表仅展示当前部门 + 计划时间的当班人员,每个 Option 标注「· 当班」 |
| 筛选提示 | 下拉上方显示状态提示:"已按当前当班人员筛选" |
| ☑ 显示全部 | 勾选后下拉显示所有可见人员(不限当班),提示变为"正在显示全部可见人员" |
| 选择非当班人员 | 弹出黄色警告提示:"所选负责人当前不在该部门/时间的已发布排班中,系统允许保存,请确认现场安排" |

PC端批量分派
组合工单批量分派弹窗中,按首个子工单的部门归属 + 计划开始时间筛选当班人员,交互逻辑与单工单分配一致。

移动端快捷分配
首页「👷 快捷分配」中负责人下拉同样默认当班人员筛选,Option 标注「· 当班」;支持「☑ 显示全部」切换;选择非当班人员时橙色警告提示(→ 详见 Ch18 §18.13.4)。
部门兜底逻辑
当工单 department_id 为空但有关联设备时,系统通过 equipment_id 反查设备归属部门,按该部门筛选当班人员。
无当班人员处理
当所选部门 / 时间无已发布排班覆盖时,候选列表为空,提示"当前部门/时间无当班人员,可勾选显示全部"。

注意事项
- 仅
status=published的排班计入当班筛选,草稿/未发布排班不影响 - 当班筛选与作业资质校验(→ Ch14 §14.11)是两个独立开关,可同时启用
- 选择非当班人员仅提示不阻断,最终由主管确认现场安排
15.7.2 点检任务联动
点检任务分发时可参考排班在岗信息选择执行人:
- 排班模块 API 支持按部门/日期查询当日在岗人员
- 若当班所有人均无对应资质 → 可触发告警提示
15.7.3 交接班联动
排班记录可作为交接班模块的数据参考,交接班模块独立管理自身记录。
15.8 常见问题
Q: 为什么排班表是空的? A: 请确保选择了正确的部门和月份,且该部门下有成员。若部门空,检查部门档案配置。
Q: 校验提示"资质缺失"怎么办? A: 该人员缺少模板要求的资质类型。可以先为人员添加对应资质证书(§15.3.2),或修改模板的所需资质(§15.4.2),或在校验设置中关闭该规则(不推荐)。
Q: 已发布的排班是否可以修改? A: 已发布的排班被锁定,需要先点击「撤回」按钮恢复到草稿状态,修改后重新发布(revision 递增)。
Q: 批量排班后部分人员没排上? A: 批量排班按部门成员生成。如果某成员在特定星期没有对应的模板可应用,该日会保持为空。
Q: 我的排班页面看不到班次? A: 需要 shift_schedule:my_view 权限。联系管理员确认角色权限配置。同时确认月份选择正确。
Q: 拖拽换班和手动换班有什么区别? A: 拖拽换班通过鼠标拖拽快速完成换班操作(直接 upsert 修改数据库),手动换班则通过编辑弹窗逐项修改。拖拽换班无需额外审批流程。(注意:此处的拖拽换班指排班管理页面的管理员操作,与「我的排班」中的员工自行拖拽调整时间不是同一场景。)
Q: 资质证书到期后会自动删除吗? A: 不会自动删除,但会标记为 expired 状态并在即将到期列表中变红。需要手动续期或删除。
15.9 相关权限
资质与排班模块涉及的权限列表:
| 权限编码 | 中文名称 | 说明 |
|---|---|---|
certification:view | 查看资质证书 | 查看人员资质证书列表和详情 |
certification:manage | 管理资质证书 | 创建/编辑/删除人员资质证书 |
shift_template:view | 查看班次模板 | 查看班次模板列表 |
shift_template:manage | 管理班次模板 | 创建/编辑/删除班次模板 |
shift_schedule:view | 查看排班 | 查看排班表和全部排班数据 |
shift_schedule:manage | 管理排班 | 创建/编辑/删除排班、批量排班和发布 |
shift_schedule:my_view | 查看本人排班 | 查看本人的排班(我的排班页面) |
shift_schedule:unpublish | 撤回发布 | 撤回已发布的排班版本 |
shift_schedule:stats | 查看排班统计 | 查看排班统计/覆盖率/公平性分析 |
shift_schedule:swap | 发起换班 | 发起换班申请 |
shift_schedule:leave | 发起请假 | 发起请假申请 |
shift_schedule:approve | 审批换班/请假 | 审批换班和请假申请 |
shift_schedule:self_adjust_time | 自助调整班次时间 | 允许个人在「我的排班」中拖拽调整班次起止时间 |
角色默认权限分配:
| 角色 | 资质/排班相关权限 |
|---|---|
| 超级管理员 | 全部权限 |
| 租户管理员 | 全部权限 |
| 设备主管 | 查看/管理资质证书、查看/管理班次模板、查看/管理排班、撤回发布、查看统计、发起换班/请假、审批换班/请假、自助调整班次时间 |
| 技术员 | 查看资质证书、查看排班、查看本人排班、发起换班、发起请假、自助调整班次时间、查看班次模板 |
| 操作员 | 查看排班、查看本人排班、查看班次模板 |
| 仓库管理员 | 无排班/资质权限 |
| 只读用户 | 查看资质证书、查看排班、查看本人排班、查看班次模板 |
ACube 设备运维管理系统 - 操作手册 v1.2
