From cbd8f44b50af09fc596f3318ec4ab290ca8bd635 Mon Sep 17 00:00:00 2001 From: bagus-arie05 Date: Mon, 19 Jan 2026 10:11:09 +0700 Subject: [PATCH] update flow klinik ruang, dan design consistency --- pages/AdminKlinikRuang/[kodeKlinik].vue | 379 +++++++++++++----- pages/Anjungan/AntreanMasuk/index.vue | 2 +- .../AntrianKlinikRuang/[kodeKlinik].vue | 65 ++- pages/Anjungan/AntrianKlinikRuang/index.vue | 44 +- pages/Anjungan/AntrianLoket/index.vue | 24 +- pages/MonitoringPasien/monitoringPasien.vue | 262 +++++++++--- pages/Setting/HakAkses.vue | 6 - pages/Setting/UserLogin.vue | 15 - pages/verifikasiAkun/VerifikasiAkun.vue | 243 +++++++++-- 9 files changed, 809 insertions(+), 231 deletions(-) diff --git a/pages/AdminKlinikRuang/[kodeKlinik].vue b/pages/AdminKlinikRuang/[kodeKlinik].vue index 6d851b3..6a8b293 100644 --- a/pages/AdminKlinikRuang/[kodeKlinik].vue +++ b/pages/AdminKlinikRuang/[kodeKlinik].vue @@ -62,43 +62,66 @@
- +
+ +
+ + + + + + +
+
{{ getCurrentProcessingForRoom(ruang)?.noAntrian?.split(" |")[0] || '-' }}
+ + mdi-bullhorn + Pemeriksaan Awal + mdi-bullhorn Panggil Tindakan - - mdi-check - Selesai - - - mdi-pause - Pending -
@@ -226,16 +249,6 @@ mdi-eye Lihat Detail - - mdi-bullhorn - Pemeriksaan Awal - -
-
-
-
{{ klinikRuangOption.namaKlinik }}
-
{{ klinikRuangOption.namaRuang }} (R.{{ klinikRuangOption.nomorRuang }})
- - Saat Ini - -
-
+
+ + + + + +
+ + {{ klinikRuang.kodeKlinik }} + + {{ klinikRuang.namaKlinik }} +
+ +
+ + +
+
+ mdi-door +
+ Ruang {{ ruang.nomorRuang }} - {{ ruang.namaRuang }} + Screen: {{ ruang.nomorScreen }} +
+
+ + Saat Ini + + + mdi-check-circle + + + mdi-chevron-right + +
+
+
+
+
+
@@ -612,8 +680,7 @@ Fast Track {{ selectedPatientDetail.fastTrack === 'YA' ? 'Ya' : 'Tidak' }} @@ -801,6 +868,7 @@ const sortOptions = ref({}); const searchPatientQuery = ref(''); const showFilterDialog = ref({}); const filterOptions = ref({}); +const klinikRuangSearch = ref(''); // Initialize filter options for each room const initializeFilterOptions = (ruang) => { @@ -1075,6 +1143,7 @@ const closeKelolaPasienDialog = () => { selectedRuangBaru.value = null; selectedKlinikRuangBaru.value = null; searchPatientQuery.value = ''; + klinikRuangSearch.value = ''; }; // Get all available klinik ruang options (for pindah klinik and konsultasi) @@ -1097,6 +1166,43 @@ const getAllKlinikRuangOptions = () => { return options; }; +// Get klinik ruang data grouped by klinik (for expansion panels) +const klinikRuangList = computed(() => { + return masterStore.ruangData || []; +}); + +// Filtered klinik ruang based on search query +const filteredKlinikRuang = computed(() => { + if (!klinikRuangSearch.value) return klinikRuangList.value; + + const searchLower = klinikRuangSearch.value.toLowerCase(); + return klinikRuangList.value + .map(klinikRuang => { + // Check if klinik name or code matches + const klinikMatches = + klinikRuang.namaKlinik?.toLowerCase().includes(searchLower) || + klinikRuang.kodeKlinik?.toLowerCase().includes(searchLower); + + // Filter ruangList based on search + const filteredRuangList = klinikRuang.ruangList?.filter(ruang => + ruang.namaRuang?.toLowerCase().includes(searchLower) || + ruang.nomorRuang?.toString().includes(searchLower) || + ruang.nomorScreen?.toString().includes(searchLower) + ) || []; + + // Return klinik if klinik matches or has matching ruang + if (klinikMatches || filteredRuangList.length > 0) { + return { + ...klinikRuang, + ruangList: klinikMatches ? klinikRuang.ruangList : filteredRuangList + }; + } + + return null; + }) + .filter(k => k !== null && k.ruangList && k.ruangList.length > 0); +}); + const confirmPindahRuang = () => { if (!selectedRuangBaru.value || !selectedPatientForKelola.value) { showSnackbar('Pilih ruang tujuan', 'error'); @@ -1849,11 +1955,43 @@ onMounted(() => { margin-bottom: 4px; } +.current-patient-header { + display: flex; + align-items: center; + justify-content: space-between; +} + .action-grid { display: grid; - grid-template-columns: repeat(3, 1fr); + grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 16px; + align-items: center; +} + +.action-icon-buttons { + display: flex; + gap: 8px; + align-items: center; +} + +.action-icon-btn { + min-width: 40px !important; + width: 40px !important; + height: 40px !important; + padding: 0 !important; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important; + transition: all 0.2s ease !important; +} + +.action-icon-btn:hover { + transform: translateY(-1px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15) !important; +} + +.action-icon-btn:active { + transform: translateY(0); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important; } .action-grid .v-btn { @@ -2098,6 +2236,11 @@ onMounted(() => { line-height: 24px; } +.body-3 { + font-size: 14px; + line-height: 20px; +} + .caption-2 { font-size: 12px; line-height: 16px; @@ -2436,7 +2579,7 @@ onMounted(() => { } .action-grid { - grid-template-columns: repeat(3, 1fr); + grid-template-columns: 1fr 1fr; gap: 8px; } @@ -2449,6 +2592,12 @@ onMounted(() => { .action-grid .v-btn .v-icon { font-size: 16px; } + + .action-icon-btn { + min-width: 36px !important; + width: 36px !important; + height: 36px !important; + } } @media (max-width: 960px) { @@ -2500,7 +2649,7 @@ onMounted(() => { } .action-grid { - grid-template-columns: repeat(3, 1fr); + grid-template-columns: 1fr 1fr; gap: 8px; } @@ -2514,6 +2663,26 @@ onMounted(() => { font-size: 14px; } + .action-icon-btn { + min-width: 32px !important; + width: 32px !important; + height: 32px !important; + } + + .action-icon-btn .v-icon { + font-size: 16px; + } + + .action-icon-btn { + min-width: 32px !important; + width: 32px !important; + height: 32px !important; + } + + .action-icon-btn .v-icon { + font-size: 16px; + } + .patient-queue-actions { gap: 4px; flex-wrap: nowrap; @@ -2847,68 +3016,96 @@ onMounted(() => { margin-bottom: 4px; } -/* Klinik Ruang Selection Styles */ -.klinik-ruang-selection-list { - max-height: 400px; - overflow-y: auto; +/* Klinik Ruang Selection Styles - Expansion Panels */ +.expansion-panels { + background: transparent; +} + +.expansion-panel { + background: var(--color-neutral-100); + border: 1px solid var(--color-neutral-400); + border-radius: 12px !important; + margin-bottom: 12px; + overflow: hidden; +} + +.expansion-panel::before { + box-shadow: none !important; +} + +.expansion-title { + background: var(--color-neutral-100); + min-height: 60px; +} + +.expansion-header { + display: flex; + align-items: center; +} + +.ruang-list { display: flex; flex-direction: column; gap: 8px; + padding: 8px 0; } -.klinik-ruang-selection-card { +.ruang-item { display: flex; align-items: center; - justify-content: space-between; - padding: 16px; - background: var(--color-neutral-100); - border: 2px solid var(--color-neutral-300); + gap: 12px; + padding: 12px 16px; + background: var(--color-neutral-300); + border: 1px solid var(--color-neutral-400); border-radius: 8px; cursor: pointer; transition: all 0.2s ease; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } -.klinik-ruang-selection-card:hover:not(.klinik-ruang-selection-card-disabled) { - background: var(--color-neutral-200); +.ruang-item:hover:not(.ruang-item-disabled) { border-color: var(--color-primary-400); + background: rgba(58, 97, 201, 0.1); transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } -.klinik-ruang-selection-card-selected { - background: var(--color-primary-100); - border-color: var(--color-primary-600); - box-shadow: 0 2px 8px rgba(255, 152, 0, 0.2); +.ruang-item:active:not(.ruang-item-disabled) { + transform: translateY(0); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } -.klinik-ruang-selection-card-disabled { +.ruang-item-selected { + background: var(--color-primary-100); + border-color: var(--color-primary-600); + box-shadow: 0 2px 8px rgba(58, 97, 201, 0.2); +} + +.ruang-item-disabled { background: var(--color-neutral-200); border-color: var(--color-neutral-400); cursor: not-allowed; opacity: 0.6; } -.klinik-ruang-selection-card-disabled:hover { +.ruang-item-disabled:hover { transform: none; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + border-color: var(--color-neutral-400); + background: var(--color-neutral-200); } -.klinik-ruang-selection-content { +.ruang-info { flex: 1; + display: flex; + flex-direction: column; + gap: 2px; } -.klinik-ruang-selection-name { - font-size: 16px; - line-height: 24px; - font-weight: 600; - color: var(--color-neutral-900); - margin-bottom: 4px; -} - -.klinik-ruang-selection-room { - font-size: 14px; - line-height: 20px; - color: var(--color-neutral-600); +.ruang-actions { + display: flex; + align-items: center; + gap: 8px; } /* Filter and Sort Actions */ diff --git a/pages/Anjungan/AntreanMasuk/index.vue b/pages/Anjungan/AntreanMasuk/index.vue index 002c95d..2f8e33c 100644 --- a/pages/Anjungan/AntreanMasuk/index.vue +++ b/pages/Anjungan/AntreanMasuk/index.vue @@ -56,7 +56,7 @@ variant="flat" size="large" block - class="btn-view" + class="btn-view text-white" > mdi-eye Tampilkan diff --git a/pages/Anjungan/AntrianKlinikRuang/[kodeKlinik].vue b/pages/Anjungan/AntrianKlinikRuang/[kodeKlinik].vue index e813dca..78436ff 100644 --- a/pages/Anjungan/AntrianKlinikRuang/[kodeKlinik].vue +++ b/pages/Anjungan/AntrianKlinikRuang/[kodeKlinik].vue @@ -92,7 +92,7 @@