You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.4 KiB
4.4 KiB
院方管理角色 Building 权限设置说明
一、数据库迁移
首先需要运行数据库迁移,创建 admin_building_links 表:
php artisan migrate
这将创建 admin_building_links 表,用于存储管理员与楼栋的关联关系。
二、角色设置
1. 确保存在"院方管理"角色
在系统中需要有一个角色名称包含"院方管理"的角色(例如:"院方管理"、"院方管理员"等)。
2. 为管理员分配角色
- 进入 系统管理 > 管理员管理
- 编辑需要设置为"院方管理"的管理员
- 在角色设置中,为该管理员分配"院方管理"角色
- 确保该管理员的
project_ids字段包含其需要管理的项目ID(逗号分隔)
三、楼栋权限关联设置
方法一:创建新楼栋时设置
- 进入 医院/项目管理 > 床位管理
- 选择对应的项目
- 点击楼栋下拉框旁边的 "+" 按钮,创建新楼栋
- 在弹出的对话框中:
- 填写楼栋名称
- 设置排序号
- 在"院方管理"下拉框中选择需要关联的院方管理员(可多选)
- 点击"保存"
方法二:编辑现有楼栋时设置
- 进入 医院/项目管理 > 床位管理
- 选择对应的项目
- 选择需要编辑的楼栋
- 点击楼栋下拉框旁边的 "编辑" 按钮(铅笔图标)
- 在弹出的对话框中:
- 可以修改楼栋名称和排序号
- 在"院方管理"下拉框中选择需要关联的院方管理员(可多选)
- 点击"保存"
四、权限控制效果
设置完成后,具有"院方管理"角色的管理员将:
1. 订单列表页面 (/admin/orders)
- 只能查看其管理的楼栋下的所有订单
- 楼栋下拉框只显示其有权限的楼栋
- 病区下拉框只显示其有权限楼栋下的病区
2. 统计页面
- 财务统计 (
/admin/statistics/finance):只能查看其管理楼栋下的充值、退款记录 - 护理统计 (
/admin/statistics/huli):只能查看其管理楼栋下的病区数据
3. 陪护一览页面 (/admin/orders/artboard)
- 只显示其管理楼栋下的病区和床位信息
五、权限层级说明
系统的权限控制采用三级结构:
- 项目级权限:通过
admins.project_ids字段控制,管理员只能访问其关联的项目 - 角色级权限:
- 护士长:通过
admin_area_links表关联病区,只能查看其管理病区下的数据 - 院方管理:通过
admin_building_links表关联楼栋,只能查看其管理楼栋下的数据(包括该楼栋下所有病区)
- 护士长:通过
- 数据级权限:根据角色和关联关系,自动过滤查询结果
六、注意事项
-
一个管理员可以同时拥有多个角色,但权限控制逻辑为:
- 如果同时是"护士长"和"院方管理",优先使用"护士长"的权限(更细粒度)
- 如果只是"院方管理",则使用楼栋级别的权限
-
一个楼栋可以关联多个院方管理员,这些管理员都可以查看该楼栋下的所有数据
-
删除楼栋时,相关的
admin_building_links记录会通过软删除保留,但权限会失效 -
修改楼栋关联时,系统会先删除旧的关联关系,再创建新的关联关系
七、数据表结构
admin_building_links 表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | int | 主键 |
| building_id | int | 楼栋ID |
| project_id | int | 项目ID |
| admin_id | string | 管理员ID |
| created_at | timestamp | 创建时间 |
| updated_at | timestamp | 更新时间 |
| deleted_at | timestamp | 软删除时间 |
八、API 接口
新增的接口:
GET /admin/project/get-yuanfang:获取院方管理列表- 参数:
project_id(必填)、building_id(可选,用于编辑时标记已选中的管理员)
- 参数:
九、常见问题
Q1: 为什么设置了权限但看不到数据?
A: 请检查:
- 管理员是否已分配"院方管理"角色
- 管理员的
project_ids是否包含当前项目ID - 楼栋是否已正确关联到该管理员
Q2: 如何查看某个楼栋关联了哪些管理员?
A: 可以通过编辑该楼栋,在"院方管理"下拉框中查看已选中的管理员。
Q3: 如何批量设置多个楼栋的权限?
A: 目前需要逐个楼栋进行设置,或者可以通过数据库直接操作 admin_building_links 表。