From 5cb03ea3d7195a39d609c928e881aef3c1951850 Mon Sep 17 00:00:00 2001 From: riefive Date: Wed, 3 Dec 2025 14:20:18 +0700 Subject: [PATCH] fix: update page ambulatory, inpatient + emergency --- app/lib/page-checker.ts | 41 ++++++++++++++++ .../encounter/[id]/detail.vue | 31 ++++++------ .../ambulatory/encounter/[id]/edit.vue | 47 +++++++------------ .../ambulatory/encounter/[id]/index.vue | 47 ------------------- .../ambulatory/encounter/[id]/process.vue | 42 ++++++++--------- .../(features)/ambulatory/encounter/add.vue | 29 +++++------- .../emergency/encounter/[id]/detail.vue | 31 ++++++------ .../emergency/encounter/[id]/edit.vue | 35 ++++++-------- .../emergency/encounter/[id]/process.vue | 46 +++++++++--------- .../(features)/emergency/encounter/add.vue | 31 ++++++------ .../inpatient/encounter/[id]/detail.vue | 31 ++++++------ .../inpatient/encounter/[id]/edit.vue | 37 ++++++--------- .../inpatient/encounter/[id]/process.vue | 46 +++++++++--------- .../(features)/inpatient/encounter/add.vue | 35 +++++++------- 14 files changed, 238 insertions(+), 291 deletions(-) create mode 100644 app/lib/page-checker.ts rename app/pages/(features)/{outpatient => ambulatory}/encounter/[id]/detail.vue (56%) delete mode 100644 app/pages/(features)/ambulatory/encounter/[id]/index.vue diff --git a/app/lib/page-checker.ts b/app/lib/page-checker.ts new file mode 100644 index 00000000..3f5c8132 --- /dev/null +++ b/app/lib/page-checker.ts @@ -0,0 +1,41 @@ +import type { Permission } from "~/models/role" + +const route = useRoute() + +const { checkRole, hasCreateAccess, hasReadAccess, hasUpdateAccess, hasDeleteAccess } = useRBAC() + +export function getRouteTitle() { + return route.meta.title as string +} + +export function getParamsId() { + const id = route.params.id + return typeof id === 'string' ? parseInt(id) : 0 +} + +export function checkPageAccess(roleAccess: Record, type: 'create' | 'read' | 'update' | 'delete') { + // Check if user has access to this page, need to use try - catch for proper handling + const hasAccess = checkRole(roleAccess) + if (!hasAccess) { + navigateTo('/403') + } + + // Define permission-based computed properties + const canCreate = hasCreateAccess(roleAccess) + const canRead = hasReadAccess(roleAccess) + const canUpdate = hasUpdateAccess(roleAccess) + const canDelete = hasDeleteAccess(roleAccess) + + switch (type) { + case 'create': + return canCreate + case 'read': + return canRead + case 'update': + return canUpdate + case 'delete': + return canDelete + default: + return false + } +} diff --git a/app/pages/(features)/outpatient/encounter/[id]/detail.vue b/app/pages/(features)/ambulatory/encounter/[id]/detail.vue similarity index 56% rename from app/pages/(features)/outpatient/encounter/[id]/detail.vue rename to app/pages/(features)/ambulatory/encounter/[id]/detail.vue index 39bc5e13..09413f9f 100644 --- a/app/pages/(features)/outpatient/encounter/[id]/detail.vue +++ b/app/pages/(features)/ambulatory/encounter/[id]/detail.vue @@ -1,7 +1,15 @@