You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

339 lines
17 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 组织架构
> 模块编码org
> 端侧Web + 小程序(双端)
> 关联文档01-模块划分 §3.4 / 02-功能清单-物业公司 §4 / 03-业务流转逻辑-物业公司 §4 / 05-接口规范 §9.2
## 功能概览
| 项目 | 说明 |
|------|------|
| 菜单名称 | 组织架构 |
| 子菜单 | 班组管理、人员管理、人员分配、排班管理、技能管理、打卡点分配、下属账号管理 |
| 功能编号 | PR-O-01 ~ PR-O-11 |
| 权限编码前缀 | org:team:* / org:staff:* |
---
## 页面1班组管理页
**页面编号**PR-O-01-P01
**端侧归属**Web专属
**页面路径**/org/teams
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 组织架构 > 班组管理 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 班组名称[____] 班组类型[▼] 状态[▼] [查询] [重置] │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏] [新增班组] │
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 序号| 班组名称 | 类型 | 班组长 | 人数 | 负责区域 | 状态 | 操作 │
│ 1 | 水电维修班| 维修 | 张三 | 8 | 门诊楼 | 启用 | 编辑 停用│
│ 2 | 巡检一班 | 巡检 | 李四 | 5 | 全院 | 启用 | 编辑 停用│
│ 3 | 保洁早班 | 保洁 | 王五 | 12 | 门诊+住院| 启用 | 编辑 停用│
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共10条 │
└──────────────────────────────────────────────────────────────────┘
```
### 表单字段(新增/编辑弹窗)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 班组名称 | 文本输入 | 是 | — | 自填 | 最大30字同租户唯一 |
| 班组类型 | 下拉单选 | 是 | — | 字典管理-班组类型 | 维修/巡检/保洁/综合 |
| 班组长 | 下拉单选 | 是 | — | 人员列表 | — |
| 负责区域 | 级联多选 | 否 | — | 区域五级架构 | — |
| 描述 | 多行文本 | 否 | — | 自填 | 最大200字 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 新增班组 | org:team:create | 操作栏 | 始终 | — |
| 编辑 | org:team:update | 行操作 | 始终 | — |
| 停用 | org:team:update | 行操作 | 始终 | 有未完成任务时不可停用 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/teams | GET | — |
| 新增 | /api/v1/teams | POST | — |
| 编辑 | /api/v1/teams/{id} | PUT | — |
---
## 页面2人员管理页
**页面编号**PR-O-02-P01
**端侧归属**Web专属
**页面路径**/org/staffs
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 姓名 | 文本输入 | 否 | — | 模糊匹配 |
| 所属班组 | 下拉单选 | 否 | 全部 | — |
| 技能标签 | 下拉多选 | 否 | 全部 | — |
| 状态 | 下拉单选 | 否 | 全部 | 在职/离职 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 姓名 | 80px | 否 | — |
| 2 | 手机号 | 120px | 否 | 脱敏显示 |
| 3 | 所属班组 | 120px | 是 | 支持一人多班组,逗号分隔 |
| 4 | 技能标签 | 150px | 否 | 标签样式 |
| 5 | 角色 | 100px | 否 | 下属账号角色 |
| 6 | 状态 | 80px | 是 | 在职/离职 |
| 7 | 操作 | 160px | — | 编辑/分配/查看排班 |
### 表单字段(新增/编辑弹窗)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 姓名 | 文本输入 | 是 | — | 自填 | 最大20字 |
| 手机号 | 文本输入 | 是 | — | 自填 | 手机号格式 |
| 所属班组 | 下拉多选 | 是 | — | 班组列表 | 支持一人多班组 |
| 技能标签 | 下拉多选 | 否 | — | 技能管理 | — |
| 入职日期 | 日期选择 | 否 | — | 自填 | — |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 新增人员 | org:staff:create | 操作栏 | 始终 | — |
| 编辑 | org:staff:update | 行操作 | 始终 | — |
| 分配 | org:staff:update | 行操作 | 始终 | 分配到班组/区域 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/staffs | GET | — |
| 新增 | /api/v1/staffs | POST | — |
| 编辑 | /api/v1/staffs/{id} | PUT | — |
---
## 页面3排班管理页
**页面编号**PR-O-04-P01
**端侧归属**Web专属
**页面路径**/org/schedules
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 组织架构 > 排班管理 │
├──────────────────────────────────────────────────────────────────┤
│ [视图切换] 📅周视图 📆月视图 班组:[▼] [◀ 本周 ▶] │
├──────────────────────────────────────────────────────────────────┤
│ [周视图] │
│ 人员 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日│
│ 张三 | 早班 | 早班 | 晚班 | 早班 | 早班 | 休息 | 休息│
│ 李四 | 晚班 | 晚班 | 早班 | 晚班 | 晚班 | 休息 | 休息│
├──────────────────────────────────────────────────────────────────┤
│ [操作] [保存] [批量排班] [模板排班] [导出] │
└──────────────────────────────────────────────────────────────────┘
```
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 批量排班 | org:team:create | 操作栏 | 始终 | 选择多人同一班次 |
| 模板排班 | org:team:create | 操作栏 | 始终 | 从已有模板加载 |
| 保存 | org:team:update | 操作栏 | 始终 | — |
| 导出 | org:team:export | 操作栏 | 始终 | 导出排班表 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 排班查询 | /api/v1/team-schedules | GET | — |
| 保存 | /api/v1/team-schedules/batch | POST | — |
---
## 页面4技能管理页
**页面编号**PR-O-05-P01
**端侧归属**Web专属
**页面路径**/org/skills
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 技能名称 | 150px | 否 | 如:水电维修、空调维修 |
| 2 | 关联班组 | 150px | 否 | 使用该技能的班组 |
| 3 | 持有人员数 | 100px | 是 | — |
| 4 | 操作 | 100px | — | 编辑/删除 |
### 表单字段(新增/编辑弹窗)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 技能名称 | 文本输入 | 是 | — | 自填 | 最大30字同租户唯一 |
| 关联班组 | 下拉多选 | 否 | — | 班组列表 | — |
| 描述 | 多行文本 | 否 | — | 自填 | 最大200字 |
---
## 页面5打卡点分配页
**页面编号**PR-O-06-P01
**端侧归属**Web专属
**页面路径**/org/check-in-points
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 班组 | 120px | 否 | — |
| 2 | 打卡点名称 | 150px | 否 | — |
| 3 | 位置 | 150px | 否 | — |
| 4 | 蓝牙Beacon | 120px | 否 | — |
| 5 | 适用角色 | 100px | 否 | 全部/主管/员工 |
| 6 | 操作 | 100px | — | 编辑/删除 |
### 表单字段(新增/编辑弹窗)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 打卡点名称 | 文本输入 | 是 | — | 自填 | 最大30字 |
| 适用班组 | 下拉单选 | 是 | — | 班组列表 | — |
| 位置描述 | 文本输入 | 是 | — | 自填 | — |
| 蓝牙Beacon | 下拉单选 | 是 | — | 蓝牙设备管理 | — |
| 适用角色 | 下拉多选 | 是 | 全部 | 固定选项 | — |
---
## 页面6下属账号管理页
**页面编号**PR-O-07-P01
**端侧归属**Web专属
**页面路径**/org/subordinates
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 组织架构 > 下属账号管理 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 姓名[____] 班组[▼] 角色[▼] 状态[▼] [查询] [重置] │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏] [新增下属] [批量分配角色] [批量启停] │
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ ☐| 姓名 | 手机号 | 班组 | 角色 | 状态 | 操作 │
│ ☐| 张三 | 138****12| 水电班 | 主管 | 启用 | 编辑 角色 权限 启停│
│ ☐| 李四 | 139****34| 水电班 | 维修员 | 启用 | 编辑 角色 权限 启停│
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共50条 每页[20▼] < 1 2 3 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 姓名 | 文本输入 | 否 | — | 模糊匹配 |
| 班组 | 下拉单选 | 否 | 全部 | — |
| 角色 | 下拉单选 | 否 | 全部 | 数据来源:超管定义的角色 |
| 状态 | 下拉单选 | 否 | 全部 | 启用/禁用 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | ☐勾选 | 40px | — | 批量操作用 |
| 2 | 姓名 | 80px | 否 | — |
| 3 | 手机号 | 120px | 否 | 脱敏 |
| 4 | 所属班组 | 120px | 是 | — |
| 5 | 角色 | 120px | 否 | — |
| 6 | 数据权限 | 100px | 否 | 本班组/指定区域 |
| 7 | 状态 | 80px | 是 | — |
| 8 | 操作 | 220px | — | 编辑/分配角色/权限覆盖/启停 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 新增下属 | org:staff:create | 操作栏 | 始终 | 弹窗 |
| 批量分配角色 | permission:user:update | 操作栏 | 勾选≥1条 | 弹窗选择角色 |
| 批量启停 | org:staff:update | 操作栏 | 勾选≥1条 | 二次确认 |
| 编辑 | org:staff:update | 行操作 | 始终 | — |
| 分配角色 | permission:user:update | 行操作 | 始终 | 选择角色 |
| 权限覆盖 | permission:user:update | 行操作 | 始终 | 在角色基础上自定义权限(四级树形) |
| 启停 | org:staff:update | 行操作 | 始终 | 二次确认 |
### 新增下属弹窗
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 姓名 | 文本输入 | 是 | — | 自填 | 最大20字 |
| 手机号 | 文本输入 | 是 | — | 自填 | 手机号格式 |
| 所属班组 | 下拉多选 | 是 | — | 班组列表 | — |
| 分配角色 | 下拉单选 | 是 | — | 超管定义的角色列表 | — |
| 是否自定义权限 | 开关 | 否 | 否 | — | 开启后显示四级权限树 |
| 数据权限范围 | 下拉单选 | 是 | 本班组 | 固定选项 | 本班组/指定区域 |
### 通知触发
| 触发操作 | 通知对象 | 通知方式 | 消息模板 | 文档来源 |
|----------|----------|----------|----------|----------|
| 下属账号创建 | 下属人员 | 小程序推送 | 账号开通通知 | 03-物业公司 §4 |
| 角色变更 | 下属人员 | Redis Pub/Sub | 权限实时生效 | 03-物业公司 §4 |
| 账号禁用 | 下属人员 | — | session失效+小程序下线 | 03-物业公司 §4 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/subordinates | GET | — |
| 新增 | /api/v1/subordinates | POST | — |
| 分配角色 | /api/v1/subordinates/{id}/assign-role | PUT | — |
| 权限覆盖 | /api/v1/subordinates/{id}/override-permissions | PUT | 四级树形权限 |
| 批量操作 | /api/v1/subordinates/batch | POST | 批量启停/分配角色 |
---
## 需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| PR-O-01 | 班组管理 | 02-物业公司 §4 | 班组→人员分配→排班 | 巡检管理(巡检班组) / 保洁管理(保洁班组) |
| PR-O-02 | 人员管理 | 02-物业公司 §4 | 人员→技能标签→工单分配 | 在线报修(维修人员) |
| PR-O-03 | 人员分配 | 02-物业公司 §4 | 分配→班组关联 | 班组管理 / 技能管理 |
| PR-O-04 | 排班管理 | 02-物业公司 §4 | 排班→保洁任务生成 | 保洁管理(排班) / 小程序端我的排班(MP-OR-02) |
| PR-O-05 | 技能管理 | 02-物业公司 §4 | 技能→工单自动分配依据 | 在线报修(自动分配) |
| PR-O-06 | 打卡点分配 | 02-物业公司 §4 | 打卡点→考勤蓝牙绑定 | 考勤打卡(打卡点管理) / 系统配置(蓝牙设备) |
| PR-O-07 | 下属账号管理 | 02-物业公司 §4 / 03-物业公司 §4 | 创建下属→分配角色→权限覆盖 | 超管权限管理(角色定义) |
| PR-O-08 | 下属角色分配 | 02-物业公司 §4 | 选择超管定义的角色→分配 | 超管权限管理(角色管理) |
| PR-O-09 | 下属权限覆盖 | 02-物业公司 §4 / 03-物业公司 §4 | 在角色基础上调整权限(四级树形) | 超管权限管理(权限分配) |
| PR-O-10 | 下属批量操作 | 02-物业公司 §4 | 批量启停/分配角色 | — |
| PR-O-11 | 下属数据权限 | 02-物业公司 §4 / 01 §1.3 | 设置数据可见范围 | 数据权限校验 |
## 业务规则
1. **一人多班组**支持一个人员属于多个班组来源02-物业公司 PR-O-02
2. **下属角色来源于超管**物业公司管理员从超管定义的角色中选择分配给下属来源03-物业公司 §4 / 01 §8.4
3. **权限覆盖**可在角色权限基础上自定义调整使用四级树形勾选来源03-物业公司 §4
4. **下属不单独设有效期**随物业公司管理员账号到期而自动失效来源01 §1.4
5. **数据权限**主管仅看本班组数据员工仅看本人数据来源01 §1.3
6. **权限实时生效**:角色/权限变更后毫秒级生效无需重新登录来源01 §8.3
7. **操作日志**下属创建、角色分配、权限覆盖均记录审计日志来源06 §4.5