diff --git a/pages/Anjungan/AntreanMasuk/[id].vue b/pages/Anjungan/AntreanMasuk/[id].vue index ef3b872..4afd791 100644 --- a/pages/Anjungan/AntreanMasuk/[id].vue +++ b/pages/Anjungan/AntreanMasuk/[id].vue @@ -9,12 +9,11 @@ src="/Rumah_Sakit_Umum_Daerah_Dr._Saiful_Anwar.webp" alt="RSUD Logo" class="header-logo" - /> + >
-

ANTREAN MASUK

-

RSUD dr. Saiful Anwar Provinsi Jawa Timur

-

{{ loketData.namaLoket }}

+

RSUD dr. Saiful Anwar Provinsi Jawa Timur

+
@@ -25,50 +24,57 @@
- -
- -
-

{{ loketData?.namaLoket || 'LOKET A' }}

-
- - -
- +
+ +
+
- - -
-
- {{ queue.noAntrian.split(" |")[0] }} -
- - -
- - mdi-flash - -
- - -
- - {{ queue.klinik }} - + +
+
{{ loketData.nama }}
+
+ mdi-account-multiple + {{ loketData.totalQueues }} +
+
+ + +
+ +
+
+ +
+ mdi-flash +
+
{{ queue.noAntrian?.split(" |")[0] || queue.no || '' }}
+
- - -
- -
- mdi-clock-outline -

Tidak Ada Antrian yang Dipanggil

+ +
+ mdi-minus-circle-outline +
Tidak Ada Antrian
+
+
+
@@ -84,7 +90,7 @@
-
+
@@ -96,7 +102,7 @@
-
+
@@ -117,9 +123,10 @@ @@ -432,160 +652,208 @@ onUnmounted(() => { opacity: 0.95; } -/* ========== QUEUE GRID CONTAINER ========== */ -.queue-grid-container { +/* ========== LOKET GRID CONTAINER ========== */ +.loket-grid-container { flex: 1 1 auto; display: flex; flex-direction: column; margin-bottom: 24px; - background: #FFFFFF; - border-radius: 20px; - border: 2px solid var(--color-primary-200); - overflow: auto; - padding: 24px; min-height: 0; - max-height: calc(100vh - 280px); box-sizing: border-box; - box-shadow: 0 4px 16px rgba(25, 118, 210, 0.08); } -.loket-header { - background: linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-700) 100%); - padding: 16px 20px; - text-align: center; - border-radius: 12px; - margin-bottom: 20px; - flex-shrink: 0; - height: 70px; +.lokets-grid { + display: grid; + gap: 16px; + width: 100%; + box-sizing: border-box; + /* grid-template-columns is set dynamically via :style binding */ +} + +.loket-card { + background: #FFFFFF; + border-radius: 8px; + border: 1px solid #E0E0E0; + overflow: hidden; display: flex; - align-items: center; - justify-content: center; - box-sizing: border-box; + flex-direction: column; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + min-height: 400px; + /* Calculate: viewport - header (~120px) - footer (100px) - container padding (48px) - margins (44px) */ + max-height: calc(100vh - 312px); } -.loket-header .loket-title { - font-size: 36px; - font-weight: 800; - color: #FFFFFF; - margin: 0; +/* Loket Header */ +.loket-header-bar { + background: #FFFFFF; + padding: 16px 20px; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 3px solid #FF9B1B; + flex-shrink: 0; +} + +.loket-name { + font-size: 20px; + font-weight: 700; + color: #212121; letter-spacing: 0.5px; text-transform: uppercase; -} - -/* Patient Cards Grid - Fixed for 1920x1080, 5 columns */ -.patient-cards-grid { - display: grid; - grid-template-columns: repeat(5, 1fr); - gap: 20px; flex: 1; - overflow: hidden; - padding: 0; - width: 100%; - box-sizing: border-box; - align-content: start; - height: 100%; } -.patient-card-display { - position: relative; - border-radius: 16px; - border: 2px solid var(--color-primary-200); - background: #FFFFFF; - transition: all 0.3s ease; - height: 100%; - min-height: 280px; - display: flex; - flex-direction: column; - box-shadow: 0 4px 16px rgba(25, 118, 210, 0.08); - width: 100%; - box-sizing: border-box; -} - -.patient-card-display:hover { - box-shadow: 0 8px 24px rgba(25, 118, 210, 0.15); - transform: translateY(-2px); - border-color: var(--color-primary-600); -} - -.card-text-content { - padding: 20px !important; - height: 100%; - display: flex; - box-sizing: border-box; -} - -.card-content { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - flex: 1; - gap: 12px; - text-align: center; - width: 100%; -} - -.queue-number-large { - font-size: 72px; - font-weight: 900; - color: #212121; - letter-spacing: 2px; - line-height: 1; -} - -.fast-track-badge { +.queue-count { display: flex; align-items: center; + gap: 6px; + background: var(--color-primary-600); + padding: 6px 12px; + border-radius: 20px; + min-width: 50px; justify-content: center; } -.fast-track-icon { - animation: pulse 2s ease-in-out infinite; +.queue-count .v-icon { + color: white !important; } -@keyframes pulse { - 0%, 100% { - opacity: 1; - transform: scale(1); - } - 50% { - opacity: 0.7; - transform: scale(1.1); - } -} - -.klinik-info { - margin-top: 8px; -} - -.klinik-chip-large { - font-size: 14px; +.count-number { + font-size: 16px; font-weight: 700; - padding: 6px 14px; - border: 2px solid var(--color-primary-600); - color: var(--color-primary-600); - height: auto; - white-space: nowrap; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - background: rgba(25, 118, 210, 0.05); + color: #FFFFFF; } -.empty-state { +/* Queue Display - Vertical Scrollable */ +.queue-display { + flex: 1; + padding: 20px; + padding-bottom: 120px; /* Extra padding to prevent footer overlap */ + overflow-y: auto; + overflow-x: hidden; + background: #FFFFFF; + min-height: 0; + scroll-behavior: smooth; + box-sizing: border-box; +} + +.queue-display.has-scroll { + max-height: calc(100vh - 400px); +} + +/* Hide scrollbar */ +.queue-display { + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE and Edge */ +} + +.queue-display::-webkit-scrollbar { + display: none; /* Chrome, Safari, Opera */ +} + +.ticket-cards-list { + display: grid; + gap: 10px; + width: 100%; + padding-bottom: 20px; /* Additional bottom padding for last card */ + /* grid-template-columns is set dynamically via :style binding */ +} + +.ticket-card { + background: #F5F7FA ; + border: 1px solid #E0E0E0; + border-radius: 8px; + padding: 12px 16px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 6px; + transition: all 0.2s ease; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + min-height: 80px; + position: relative; /* Untuk absolute positioning fast track icon */ +} + +.ticket-card-fast-track { + background: rgba(255, 132, 65, 0.4) !important; /* #FF8441 dengan 40% opacity (66 hex = 102/255) */ +} + +.ticket-card:hover { + box-shadow: 0 2px 6px rgba(25, 118, 210, 0.2); + border-color: var(--color-primary-600); + transform: translateY(-1px); +} + +.ticket-number { + font-size: 28px; + font-weight: 800; + color: #3556AE; + letter-spacing: 1px; + line-height: 1.2; +} + +.ticket-klinik { + font-size: 11px; + font-weight: 500; + color: #717171; + text-align: center; + margin-top: 4px; +} + +.ticket-fast-track { + position: absolute; + top: 8px; + right: 8px; + width: 32px; + height: 32px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: rgba(239, 83, 80, 0.15); /* Red background dengan opacity */ + border: 2px solid rgba(229, 57, 53, 0.4); /* Red border */ + transition: all 0.2s ease; + z-index: 10; + box-shadow: 0 2px 8px rgba(229, 57, 53, 0.2); +} + +.ticket-fast-track:hover { + background: #E53935; /* Solid red on hover */ + border-color: #E53935; + transform: scale(1.1); + box-shadow: 0 4px 12px rgba(229, 57, 53, 0.4); +} + +.ticket-fast-track .v-icon { + color: #E53935 !important; + transition: all 0.2s ease; +} + +.ticket-fast-track:hover .v-icon { + color: white !important; +} + +.empty-queue { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60px 20px; text-align: center; + min-height: 300px; +} + +.empty-queue .v-icon { + color: #BDBDBD !important; + margin-bottom: 12px; } .empty-text { - font-size: 18px; + font-size: 14px; color: #89939E; - margin-top: 12px; - font-weight: 600; + margin-top: 8px; + font-weight: 500; } /* ========== FOOTER STATS ========== */ @@ -759,27 +1027,19 @@ onUnmounted(() => { font-size: 28px; } - .loket-header-bar { - padding: 20px 24px; + .lokets-grid { + gap: 12px; + /* grid-template-columns is set dynamically via :style binding */ } - .loket-title { + .loket-name { + font-size: 20px; + } + + .ticket-number { font-size: 28px; } - .loket-content { - padding: 32px; - } - - .current-number { - font-size: 96px; - } - - .next-item { - font-size: 24px; - padding: 10px 20px; - } - .footer-stats-bar { padding: 16px 32px; } @@ -842,53 +1102,41 @@ onUnmounted(() => { } @media (max-width: 960px) { - .patient-cards-grid { - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 16px; + .lokets-grid { + gap: 12px; + /* grid-template-columns is set dynamically via :style binding */ } - .queue-number-large { - font-size: 64px; + .ticket-number { + font-size: 20px; + color: #3556AE; } - .patient-card-display { - min-height: 240px; + .ticket-card { + min-height: 70px; + padding: 10px; } } @media (min-width: 961px) and (max-width: 1400px) { - .patient-cards-grid { - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); - } - - .queue-number-large { - font-size: 80px; + .lokets-grid { + gap: 12px; + /* grid-template-columns is set dynamically via :style binding */ } } @media (min-width: 1401px) and (max-width: 1919px) { - .patient-cards-grid { - grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); - } - - .queue-number-large { - font-size: 96px; + .lokets-grid { + gap: 14px; + /* grid-template-columns is set dynamically via :style binding */ } } -/* Fixed layout for 1920x1080 */ +/* Fixed layout for 1920x1080 and above */ @media (min-width: 1920px) { - .patient-cards-grid { - grid-template-columns: repeat(5, 1fr); - gap: 20px; - } - - .queue-number-large { - font-size: 72px; - } - - .patient-card-display { - min-height: 280px; + .lokets-grid { + gap: 16px; + /* grid-template-columns is set dynamically via :style binding */ } } @@ -901,12 +1149,13 @@ onUnmounted(() => { font-size: 36px; } - .loket-header .loket-title { - font-size: 28px; + .loket-name { + font-size: 18px; } - .queue-grid-container { - padding: 16px; + .ticket-number { + font-size: 20px; + color: #3556AE; } } diff --git a/pages/Anjungan/AntreanMasuk/index.vue b/pages/Anjungan/AntreanMasuk/index.vue index 451464a..002c95d 100644 --- a/pages/Anjungan/AntreanMasuk/index.vue +++ b/pages/Anjungan/AntreanMasuk/index.vue @@ -1,56 +1,56 @@