From fe14f67965a16808b74f77087619e3b02666cfab Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 27 Apr 2026 15:30:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/views/consumer/assistant/index.vue | 6 +- admin/src/views/permission/role/edit.vue | 13 + admin/src/views/permission/role/index.vue | 17 + admin/src/views/tcm/diagnosis/index_h5.vue | 2218 +++++++++++++---- .../controller/order/OrderController.php | 2 +- .../controller/tcm/DiagnosisController.php | 4 +- server/app/adminapi/lists/auth/AdminLists.php | 48 +- server/app/adminapi/lists/auth/RoleLists.php | 2 +- .../lists/doctor/AppointmentLists.php | 30 + .../app/adminapi/lists/order/OrderLists.php | 10 +- .../app/adminapi/lists/tcm/DiagnosisLists.php | 10 + .../adminapi/lists/tcm/PrescriptionLists.php | 4 + .../lists/tcm/PrescriptionOrderLists.php | 36 + server/app/adminapi/logic/auth/RoleLogic.php | 17 +- .../app/adminapi/logic/order/OrderLogic.php | 27 +- .../app/adminapi/logic/tcm/DiagnosisLogic.php | 41 +- .../adminapi/validate/auth/RoleValidate.php | 6 +- .../lists/Traits/HasDataScopeFilter.php | 122 + .../service/DataScope/DataScopeService.php | 148 ++ server/config/project.php | 14 + .../2026_04_24_system_role_data_scope.sql | 9 + 21 files changed, 2335 insertions(+), 449 deletions(-) create mode 100644 server/app/common/lists/Traits/HasDataScopeFilter.php create mode 100644 server/app/common/service/DataScope/DataScopeService.php create mode 100644 server/database/migrations/2026_04_24_system_role_data_scope.sql diff --git a/admin/src/views/consumer/assistant/index.vue b/admin/src/views/consumer/assistant/index.vue index d4c72f30..185c6024 100644 --- a/admin/src/views/consumer/assistant/index.vue +++ b/admin/src/views/consumer/assistant/index.vue @@ -99,11 +99,13 @@ import EditPopup from './edit.vue' const editRef = shallowRef>() -// 表单数据 - 固定role_id=1查询医助 +// 表单数据 - 固定role_id=2查询医助 const formData = reactive({ account: '', name: '', - role_id: 2 // 固定为医助角色 + role_id: 2, // 固定为医助角色 + // 启用数据范围隔离:上级管理员只看到自己可见的医助;root/全部范围不受影响 + apply_data_scope: 1 }) const showEdit = ref(false) diff --git a/admin/src/views/permission/role/edit.vue b/admin/src/views/permission/role/edit.vue index 7a2d35be..c87114fe 100644 --- a/admin/src/views/permission/role/edit.vue +++ b/admin/src/views/permission/role/edit.vue @@ -36,6 +36,18 @@ + + + + + + + + @@ -58,6 +70,7 @@ const formData = reactive({ name: '', desc: '', sort: 0, + data_scope: 1, menu_id: [] }) diff --git a/admin/src/views/permission/role/index.vue b/admin/src/views/permission/role/index.vue index 026c5aaa..ac06c78c 100644 --- a/admin/src/views/permission/role/index.vue +++ b/admin/src/views/permission/role/index.vue @@ -21,6 +21,11 @@ show-overflow-tooltip /> + + + @@ -98,6 +103,18 @@ const handleAuth = async (data: any) => { authRef.value?.setFormData(data) } +const dataScopeLabel = (scope: number | string | null | undefined) => { + const s = Number(scope) || 1 + return ( + ({ + 1: '全部数据(免隔离)', + 2: '本部门及下级部门', + 3: '仅本部门', + 4: '仅本人' + } as Record)[s] || '全部数据(免隔离)' + ) +} + // 删除角色 const handleDelete = async (id: number) => { await feedback.confirm('确定要删除?') diff --git a/admin/src/views/tcm/diagnosis/index_h5.vue b/admin/src/views/tcm/diagnosis/index_h5.vue index 76b20a6d..ad860cfd 100644 --- a/admin/src/views/tcm/diagnosis/index_h5.vue +++ b/admin/src/views/tcm/diagnosis/index_h5.vue @@ -1,137 +1,488 @@