# 院方管理角色 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` 表。