|
|
|
|
|
# 院方管理角色 Building 权限设置说明
|
|
|
|
|
|
|
|
|
|
|
|
## 一、数据库迁移
|
|
|
|
|
|
|
|
|
|
|
|
首先需要运行数据库迁移,创建 `admin_building_links` 表:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
php artisan migrate
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
这将创建 `admin_building_links` 表,用于存储管理员与楼栋的关联关系。
|
|
|
|
|
|
|
|
|
|
|
|
## 二、角色设置
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 确保存在"院方管理"角色
|
|
|
|
|
|
|
|
|
|
|
|
在系统中需要有一个角色名称包含"院方管理"的角色(例如:"院方管理"、"院方管理员"等)。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 为管理员分配角色
|
|
|
|
|
|
|
|
|
|
|
|
1. 进入 **系统管理 > 管理员管理**
|
|
|
|
|
|
2. 编辑需要设置为"院方管理"的管理员
|
|
|
|
|
|
3. 在角色设置中,为该管理员分配"院方管理"角色
|
|
|
|
|
|
4. 确保该管理员的 `project_ids` 字段包含其需要管理的项目ID(逗号分隔)
|
|
|
|
|
|
|
|
|
|
|
|
## 三、楼栋权限关联设置
|
|
|
|
|
|
|
|
|
|
|
|
### 方法一:创建新楼栋时设置
|
|
|
|
|
|
|
|
|
|
|
|
1. 进入 **医院/项目管理 > 床位管理**
|
|
|
|
|
|
2. 选择对应的项目
|
|
|
|
|
|
3. 点击楼栋下拉框旁边的 **"+"** 按钮,创建新楼栋
|
|
|
|
|
|
4. 在弹出的对话框中:
|
|
|
|
|
|
- 填写楼栋名称
|
|
|
|
|
|
- 设置排序号
|
|
|
|
|
|
- **在"院方管理"下拉框中选择需要关联的院方管理员**(可多选)
|
|
|
|
|
|
5. 点击"保存"
|
|
|
|
|
|
|
|
|
|
|
|
### 方法二:编辑现有楼栋时设置
|
|
|
|
|
|
|
|
|
|
|
|
1. 进入 **医院/项目管理 > 床位管理**
|
|
|
|
|
|
2. 选择对应的项目
|
|
|
|
|
|
3. 选择需要编辑的楼栋
|
|
|
|
|
|
4. 点击楼栋下拉框旁边的 **"编辑"** 按钮(铅笔图标)
|
|
|
|
|
|
5. 在弹出的对话框中:
|
|
|
|
|
|
- 可以修改楼栋名称和排序号
|
|
|
|
|
|
- **在"院方管理"下拉框中选择需要关联的院方管理员**(可多选)
|
|
|
|
|
|
6. 点击"保存"
|
|
|
|
|
|
|
|
|
|
|
|
## 四、权限控制效果
|
|
|
|
|
|
|
|
|
|
|
|
设置完成后,具有"院方管理"角色的管理员将:
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 订单列表页面 (`/admin/orders`)
|
|
|
|
|
|
- 只能查看其管理的楼栋下的所有订单
|
|
|
|
|
|
- 楼栋下拉框只显示其有权限的楼栋
|
|
|
|
|
|
- 病区下拉框只显示其有权限楼栋下的病区
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 统计页面
|
|
|
|
|
|
- **财务统计** (`/admin/statistics/finance`):只能查看其管理楼栋下的充值、退款记录
|
|
|
|
|
|
- **护理统计** (`/admin/statistics/huli`):只能查看其管理楼栋下的病区数据
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 陪护一览页面 (`/admin/orders/artboard`)
|
|
|
|
|
|
- 只显示其管理楼栋下的病区和床位信息
|
|
|
|
|
|
|
|
|
|
|
|
## 五、权限层级说明
|
|
|
|
|
|
|
|
|
|
|
|
系统的权限控制采用三级结构:
|
|
|
|
|
|
|
|
|
|
|
|
1. **项目级权限**:通过 `admins.project_ids` 字段控制,管理员只能访问其关联的项目
|
|
|
|
|
|
2. **角色级权限**:
|
|
|
|
|
|
- **护士长**:通过 `admin_area_links` 表关联病区,只能查看其管理病区下的数据
|
|
|
|
|
|
- **院方管理**:通过 `admin_building_links` 表关联楼栋,只能查看其管理楼栋下的数据(包括该楼栋下所有病区)
|
|
|
|
|
|
3. **数据级权限**:根据角色和关联关系,自动过滤查询结果
|
|
|
|
|
|
|
|
|
|
|
|
## 六、注意事项
|
|
|
|
|
|
|
|
|
|
|
|
1. **一个管理员可以同时拥有多个角色**,但权限控制逻辑为:
|
|
|
|
|
|
- 如果同时是"护士长"和"院方管理",优先使用"护士长"的权限(更细粒度)
|
|
|
|
|
|
- 如果只是"院方管理",则使用楼栋级别的权限
|
|
|
|
|
|
|
|
|
|
|
|
2. **一个楼栋可以关联多个院方管理员**,这些管理员都可以查看该楼栋下的所有数据
|
|
|
|
|
|
|
|
|
|
|
|
3. **删除楼栋时**,相关的 `admin_building_links` 记录会通过软删除保留,但权限会失效
|
|
|
|
|
|
|
|
|
|
|
|
4. **修改楼栋关联**时,系统会先删除旧的关联关系,再创建新的关联关系
|
|
|
|
|
|
|
|
|
|
|
|
## 七、数据表结构
|
|
|
|
|
|
|
|
|
|
|
|
### 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: 请检查:
|
|
|
|
|
|
1. 管理员是否已分配"院方管理"角色
|
|
|
|
|
|
2. 管理员的 `project_ids` 是否包含当前项目ID
|
|
|
|
|
|
3. 楼栋是否已正确关联到该管理员
|
|
|
|
|
|
|
|
|
|
|
|
### Q2: 如何查看某个楼栋关联了哪些管理员?
|
|
|
|
|
|
A: 可以通过编辑该楼栋,在"院方管理"下拉框中查看已选中的管理员。
|
|
|
|
|
|
|
|
|
|
|
|
### Q3: 如何批量设置多个楼栋的权限?
|
|
|
|
|
|
A: 目前需要逐个楼栋进行设置,或者可以通过数据库直接操作 `admin_building_links` 表。
|
|
|
|
|
|
|