Appearance
BizShiftCalendar 排班日历
排班日历:月视图网格(行 = 成员、列 = 日期;成员列 sticky 左、双行表头 sticky 上、容器双向滚动)、班次徽标(五色映射 EP 主题变量,超出 cell-max 折叠 +N、tooltip 列全部)、点击编辑浮层(班次复选 + 清空 + 确定)、拖拽换班(同成员 = 整格班次移动 / 跨成员 = 两人当日班次交换)、容量冲突检测(超容单元格 warning 虚线框 + 底部提示条)、当月统计(班次 chips + 成员行尾总数)、月份导航(1900-2100 钳制,schedule 按日期键存、切月天然保留)。值班排班、门店轮班、医护三班倒、客服坐席排班。
基础用法
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟店长31
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
李李娜收银31
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
中班
中班
早班
王王强理货31
晚班
早班
早班
早班
晚班
早班
早班
早班
晚班
早班
早班
早班
晚班
早班
早班
早班
晚班
早班
早班
早班
晚班
早班
早班
早班
晚班
早班
早班
早班
晚班
早班
早班
赵赵敏收银7
中班
中班
中班
中班
中班
中班
中班
刘刘洋客服5
晚班
晚班
晚班
晚班
晚班
早班 50 中班 27 晚班 28 合计 105 班
一人多班与折叠
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
陈陈晨全科医生13
白班+1
大夜+1
白班+2
白班
小夜+1
白班+1
大夜
周周凯住院医师6
小夜
大夜+1
白班+1
大夜
白班 7 小夜 6 大夜 6 合计 19 班
cell-max = 1:每格直显 1 个徽标,多班折叠为 +N,悬浮查看当日全部班次。
拖拽换班
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟收银台 A10
早班
晚班
早班
晚班
早班
晚班
早班
晚班
早班
晚班
李李娜收银台 B10
晚班
晚班
早班
晚班
晚班
早班
晚班
晚班
早班
晚班
王王强理货区2
早班
早班
早班 10 晚班 12 合计 22 班
cell-change: 按住某成员有班次的格子,横向拖到同成员另一天 = 移动;拖到其他成员同一天 = 交换
冲突检测
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟电工3
早班
中班
夜班
李李娜操作工3
早班
中班
早班
王王强操作工2
早班
中班
赵赵敏巡检员1
早班
刘刘洋操作工2
早班
夜班
10-03 早班 5/2 超容10-07 中班 3/1 超容
早班 6 中班 3 夜班 2 合计 11 班
当前冲突 2 处:相关单元格橙色虚线框,底部提示条逐条列出「日期 班次 已排/容量 超容」。
统计
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
韩韩梅客服一组20
值班
值班
高峰支援
值班
值班
高峰支援
值班
值班
高峰支援
值班
值班
高峰支援
值班
值班
高峰支援
值班
值班
高峰支援
值班
值班
李李雷客服二组10
值班
值班
值班
值班
值班
值班
值班
值班
值班
值班
JJim客服一组8
值班高峰支援
值班高峰支援
值班高峰支援
值班高峰支援
#stats 插槽:值班 28 次 / 高峰支援 10 次 | 最忙成员 20 班
自定义插槽
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
高新(前端)12 班
场
程
场
程
场
程
场
程
场
程
场
程
休
休
休
休
苏珊(测试)4 班
场
休
场
场
休
场
休
休
休
休
阿明(运维)3 班
班
休
班
休
班
休
休
休
休
远程 6 驻场 10 值班 3 合计 19 班
月份导航与跨月数据
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
值值班长 A中控室15
白班
夜班
白班
夜班
白班
夜班
白班
夜班
白班
夜班
白班
夜班
白班
夜班
白班
值值班长 B中控室0
白班 8 夜班 7 合计 15 班
当前 2026-10 排班 15 班; 切到 2026-11 仍能看到下月预排数据(schedule 以 'YYYY-MM-DD' 为键,与月份无关)。
只读
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
麻麻醉组·周一手术室8
上午台下午台
上午台下午台
上午台下午台
上午台下午台
麻麻醉组·周三手术室4
下午台
下午台
下午台
下午台
麻麻醉组·周五手术室10
上午台急诊备班
上午台急诊备班
上午台急诊备班
上午台急诊备班
上午台急诊备班
上午台 9 下午台 8 急诊备班 5 合计 22 班
班次配色
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
吴吴倩导诊10
早班晚班
午班
调休
急诊
早班午班
晚班急诊
调休
郑郑爽药房6
午班晚班
调休
早班
急诊
午班
早班 3 午班 4 晚班 3 急诊 3 调休 3 合计 16 班
考勤实况模式
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟早班组长0
李李娜收银员0
王王强理货员0
早班 0 中班 0 晚班 0 合计 0 班
考勤异常清单
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟9
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
迟到
缺卡
早退
迟到
缺卡
迟到
缺卡
早退
迟到
·
·
·
·
·
李李娜9
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
迟到
缺卡
正常
缺卡
迟到
正常
迟到
缺卡
正常
·
·
·
·
·
王王强9
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
正常
正常
正常
正常
迟到
正常
正常
正常
正常
·
·
·
·
·
10-18 张伟 迟到10-18 李娜 迟到10-19 张伟 缺卡10-19 李娜 缺卡10-20 张伟 早退10-21 张伟 迟到…共 16 条异常
正常 11 迟到 8 早退 2 缺卡 6 请假 0 外勤 0 记录 27 条 · 出勤率 78%
出勤率统计
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟客服4
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
正常
迟到
正常
正常
·
·
·
·
·
李李娜客服4
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
外勤
正常
正常
请假
·
·
·
·
·
10-24 张伟 迟到
正常 5 迟到 1 早退 0 缺卡 0 请假 1 外勤 1 记录 8 条 · 出勤率 88%
考勤插槽
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟0
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
李李娜0
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
自定义统计:记录 6 条 · 出勤率 83%
受控模式切换
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟2
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
迟到
正常
·
·
·
·
·
李李娜2
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
正常
外勤
·
·
·
·
·
10-25 张伟 迟到
正常 2 迟到 1 早退 0 缺卡 0 请假 0 外勤 1 记录 4 条 · 出勤率 100%
实况只读归档
成员当月班次
四五六日一二三四五六日一二三四五六日一二三四五六日一二三四五六
12345678910111213141516171819202122232425262728293031
张张伟值班经理3
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
请假
正常
正常
·
·
·
·
·
正常 2 迟到 0 早退 0 缺卡 0 请假 1 外勤 0 记录 3 条 · 出勤率 67%
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model:month | string | 当月 | 展示月份 'YYYY-MM';非法值回退当月 |
| members | BizShiftMember[] | [] | 成员列表(每成员一行;id / name / avatar / role) |
| shift-types | BizShiftType[] | [] | 班次类型(key / name / color / start / end) |
| v-model:schedule | BizShiftSchedule | {} | 排班表 memberId -> 'YYYY-MM-DD' -> shiftKey[];内部 copy-on-write,不改写传入对象 |
| start-week | 0 | 1 | 1 | 周起始:0 周日 / 1 周一 |
| editable | boolean | true | 可编辑(点击弹层 + 拖拽换班) |
| capacity | Record<string, number> | — | 班次日容量:shiftKey -> 每日最多人数;超容警示 |
| show-stats | boolean | true | 底部统计条 |
| cell-max | number | 2 | 单元格直显徽标数,超出折叠 +N(tooltip 列全部) |
| v-model:mode | 'plan' | 'attendance' | plan(初始内部态) | 展示模式:plan 计划排班 / attendance 考勤实况(attendance 未传入时恒为 plan);未绑定 v-model 时由工具栏按钮内部切换 |
| attendance | BizAttendanceMap | — | 考勤记录 memberId -> 'YYYY-MM-DD' -> 'normal' | 'late' | 'early' | 'absent' | 'leave' | 'field';传入后启用实况模式 |
Events
| 事件名 | 参数 | 说明 |
|---|---|---|
| update:month | (month: string) | 月份变化(v-model:month) |
| update:mode | (mode: 'plan' | 'attendance') | 展示模式切换(v-model:mode) |
| update:schedule | (schedule: BizShiftSchedule) | 排班表变化(v-model:schedule,新对象) |
| month-change | (month: string) | 月份切换(与 update:month 同时抛出) |
| cell-change | (payload: BizShiftCellChange) | 单元格变化:{ memberId, date, shifts, type };type = edit 编辑 / move 同成员拖拽移动 / swap 跨成员交换(交换双方各抛一次) |
| conflicts | (conflicts: BizShiftConflict[]) | 冲突重算(schedule / month 变化触发;挂载即抛一次初始值) |
Slots
| 插槽名 | 参数 | 说明 |
|---|---|---|
| member-name | { member, count } | 自定义成员格(count = 该成员当月班次总数) |
| cell | { member, date, shifts, attendance? } | 自定义单元格(整体接管默认徽标渲染;实况模式附当日考勤状态) |
| stats | { byShift, byMember, attendance } | 自定义统计条(byShift / byMember 计划口径;attendance 实况统计) |
| header-extra | — | 工具栏右侧扩展区 |
Expose
| 名称 | 类型 | 说明 |
|---|---|---|
| getStats | () => { byShift: Record<string, number>; byMember: Record<string, number> } | 当月统计 |
| getConflicts | () => BizShiftConflict[] | 当前冲突列表 |
| getAttendanceStats | () => BizAttendanceStats | 考勤统计:{ total, byStatus 六态计数, attendanceRate 出勤率 } |
| setCell | (memberId, date, shifts) => void | 编程式设置单元格班次(触发 update:schedule + cell-change,type='edit') |
| clearDay | (date: string) => void | 清空指定日期全部成员排班(逐成员抛 cell-change) |
| getMonthDays | () => string[] | 当前展示月份的全部日期('YYYY-MM-DD' 升序) |