diff --git a/assets/images/backgrounds/undraw_wait-in-line_login.svg b/assets/images/backgrounds/undraw_wait-in-line_login.svg
new file mode 100644
index 0000000..913cdbe
--- /dev/null
+++ b/assets/images/backgrounds/undraw_wait-in-line_login.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/components/layout/full/vertical-header/ProfileDD.vue b/components/layout/full/vertical-header/ProfileDD.vue
index 24b7958..676fbf8 100644
--- a/components/layout/full/vertical-header/ProfileDD.vue
+++ b/components/layout/full/vertical-header/ProfileDD.vue
@@ -151,44 +151,8 @@ const sessionInfo = computed(() => {
-
-
-
-
-
-
-
-
-
-
-
- {{ item.title }}
-
-
-
- {{ item.subtitle }}
-
-
-
-
-
@@ -203,24 +167,7 @@ const sessionInfo = computed(() => {
Logout
-
-
- Full Logout
-
-
-
-
-
- Full logout akan menghapus semua sesi dan data lokal
-
-
+
diff --git a/components/layout/full/vertical-header/VerticalHeader.vue b/components/layout/full/vertical-header/VerticalHeader.vue
index 8c9314e..a7177e1 100644
--- a/components/layout/full/vertical-header/VerticalHeader.vue
+++ b/components/layout/full/vertical-header/VerticalHeader.vue
@@ -44,13 +44,13 @@ watch(priority, (newPriority) => {
-
+
-
+
@@ -85,7 +85,7 @@ watch(priority, (newPriority) => {
-
+
diff --git a/components/layout/full/vertical-sidebar/VerticalSidebar.vue b/components/layout/full/vertical-sidebar/VerticalSidebar.vue
index 3953071..4a11733 100644
--- a/components/layout/full/vertical-sidebar/VerticalSidebar.vue
+++ b/components/layout/full/vertical-sidebar/VerticalSidebar.vue
@@ -51,60 +51,7 @@ const sidebarMenu = shallowRef(sidebarItems);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ menu.tooltip }}
-
-
-
-
-
-
-
-
+
+const formData = defineModel<{
+ noRekamMedis: string;
+ noKtp: string;
+ namaPasien: string;
+ jenisKelamin: string;
+ tanggalLahir: string;
+ umur: string;
+ alamat: string;
+ nomorTelepon: string[];
+}>({ required: true });
+
+const rules = {
+ required: (value: string) => !!value || 'Field ini wajib diisi'
+};
+
+// Modal state
+const showModal = ref(false);
+const newPhoneNumber = ref('');
+const editingIndex = ref(null);
+
+// Initialize nomorTelepon as array if not already
+if (!Array.isArray(formData.value.nomorTelepon)) {
+ formData.value.nomorTelepon = [];
+}
+
+const openAddModal = () => {
+ newPhoneNumber.value = '';
+ editingIndex.value = null;
+ showModal.value = true;
+};
+
+const editPhoneNumber = (index: number) => {
+ const phone = formData.value.nomorTelepon[index];
+ // Remove +62 prefix for editing
+ newPhoneNumber.value = phone.startsWith('+62') ? phone.substring(3) : phone;
+ editingIndex.value = index;
+ showModal.value = true;
+};
+
+// Handle only numeric input
+const handlePhoneInput = (event: Event) => {
+ const input = event.target as HTMLInputElement;
+ const value = input.value;
+
+ // Only allow numbers
+ const numericValue = value.replace(/\D/g, '');
+ newPhoneNumber.value = numericValue;
+};
+
+const savePhoneNumber = () => {
+ if (!newPhoneNumber.value.trim()) return;
+
+ const fullPhoneNumber = `+62${newPhoneNumber.value}`;
+
+ if (editingIndex.value !== null) {
+ formData.value.nomorTelepon[editingIndex.value] = fullPhoneNumber;
+ } else {
+ formData.value.nomorTelepon.push(fullPhoneNumber);
+ }
+
+ showModal.value = false;
+ newPhoneNumber.value = '';
+ editingIndex.value = null;
+};
+
+const deletePhoneNumber = (index: number) => {
+ formData.value.nomorTelepon.splice(index, 1);
+};
+
+
+
+
+
+ Data Biodata Pasien
+
+
+
+
+
+
+ No Rekam Medis *
+
+
+
+
+
+ No Ktp
+
+
+
+
+
+ Nama Pasien
+
+
+
+
+
+ Jenis Kelamin
+
+
+
+
+
+
+
+
+ Tanggal Lahir
+
+
+
+
+
+ Umur
+
+
+
+
+
+ Alamat
+
+
+
+
+
+ Nomor Telepon
+
+
+
+
+ No items
+
+
+
+
+
+
+
+
+ {{ phone }}
+
+ mdi-delete
+
+
+
+
+
+
+
+
+ Tambah Nomor Telepon
+
+
+
+
+
+
+
+
+
+
+
+ mdi-package-variant
+ {{ editingIndex !== null ? 'Edit' : 'Tambah' }} Item Data Telepon Pasien Operasi
+
+
+ mdi-close
+
+
+
+
+
+
+ Nomor Telepon
+
+
+ +62
+
+
+
+
+
+
+
+
+ mdi-check
+ Save
+
+
+
+
+
diff --git a/components/pendaftaran/MedisPasien.vue b/components/pendaftaran/MedisPasien.vue
new file mode 100644
index 0000000..f3500bf
--- /dev/null
+++ b/components/pendaftaran/MedisPasien.vue
@@ -0,0 +1,422 @@
+
+
+
+
+
+ Data Medis Pasien
+
+
+
+
+
+
Diagnosa
+
+
+
+ No items
+
+
+
+
+
+
+
+
{{ item.kodeDiagnosa }} - {{ item.diagnosa }}
+
+ {{ item.jenisDiagnosa === 'utama' ? 'Diagnosa Utama' : 'Diagnosa Tambahan' }}
+
+
+
+ mdi-delete
+
+
+
+
+
+
+
+ Tambah Diagnosa
+
+
+
+
+
+
Tindakan
+
+
+
+ No items
+
+
+
+
+
+
+
+
{{ item.kodeTindakan }} - {{ item.tindakan }}
+
+ {{ item.tindakanTambahan }}
+
+
+
+ mdi-delete
+
+
+
+
+
+
+
+ Tambah Tindakan
+
+
+
+
+
+
+
+
+
+
+ mdi-package-variant
+ {{ editingDiagnosisIndex !== null ? 'Edit' : 'Tambah' }} Item Data Diagnosa Pasien Operasi
+
+
+ mdi-close
+
+
+
+
+
+
+
+
+
+ Kode Diagnosa
+
+
+
+
+
+ Diagnosa
+
+
+
+
+
+ Jenis Diagnosa
+
+
+
+
+
+
+
+
+
+
+
+
+ mdi-check
+ Save
+
+
+
+
+
+
+
+
+
+
+ mdi-package-variant
+ {{ editingTindakanIndex !== null ? 'Edit' : 'Tambah' }} Item Data Tindakan Pasien Operasi
+
+
+ mdi-close
+
+
+
+
+
+
+
+
+
+ Kode Tindakan
+
+
+
+
+
+ Tindakan
+
+
+
+
+
+ Tindakan Tambahan
+
+
+
+
+
+
+
+
+
+ mdi-check
+ Save
+
+
+
+
+
diff --git a/components/pendaftaran/RencanaOperasi.vue b/components/pendaftaran/RencanaOperasi.vue
new file mode 100644
index 0000000..7da361a
--- /dev/null
+++ b/components/pendaftaran/RencanaOperasi.vue
@@ -0,0 +1,365 @@
+
+
+
+
+
+ Data Rencana Operasi
+
+
+
+
+
+
+ Spesialis *
+
+
+
+
+
+ Sub Spesialis *
+
+
+
+
+
+ Dokter Pelaksana
+
+
+
+ No items
+
+
+
+
+
+
+
+
{{ item.nama }}
+
+ {{ item.nip }} - {{ item.satuan_kerja }}
+
+
+
+ mdi-delete
+
+
+
+
+
+
+
+ Tambah Dokter Pelaksana
+
+
+
+
+
+ Tanggal Daftar *
+
+
+
+
+
+ Kategori Operasi *
+
+
+
+
+
+ Rencana Operasi
+
+
+
+
+
+ Keterangan
+
+
+
+
+
+
+
+
+
+
+
+ mdi-database
+ Select Item
+
+
+ mdi-close
+
+
+
+
+
+
+
+
+
+
+
+ 1-{{ filteredDokterList.length }} of {{ dokterList.length }} Items
+
+
+
+
+
+
+ |
+
+ |
+ Display |
+ Nip |
+ Nama Lengkap |
+
+
+
+
+ |
+
+ |
+ Doctor |
+ {{ dokter.nip }} |
+ {{ dokter.nama }} |
+
+
+
+
+
+
+
mdi-information-outline
+
No results found
+
+
+
+
+
+
+
+ mdi-check
+ Save ({{ selectedDokters.length }})
+
+
+
+
+
diff --git a/components/pendaftaran/StatusPasienOperasi.vue b/components/pendaftaran/StatusPasienOperasi.vue
new file mode 100644
index 0000000..dc917c1
--- /dev/null
+++ b/components/pendaftaran/StatusPasienOperasi.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+ Data Status Pasien Operasi
+
+
+
+
+
+
+ Status Operasi *
+
+
+
+ {{ statusPasienData.statusOperasi === 'Belum' ? 'mdi-radiobox-marked' : 'mdi-radiobox-blank' }}
+ Belum
+
+
+
+
+ {{ statusPasienData.statusOperasi === 'Selesai' ? 'mdi-radiobox-marked' : 'mdi-radiobox-blank' }}
+ Selesai
+
+
+
+
+ {{ statusPasienData.statusOperasi === 'Tunda' ? 'mdi-radiobox-marked' : 'mdi-radiobox-blank' }}
+ Tunda
+
+
+
+
+ {{ statusPasienData.statusOperasi === 'Batal' ? 'mdi-radiobox-marked' : 'mdi-radiobox-blank' }}
+ Batal
+
+
+
+
+
+
+
+ Tanggal Selesai Operasi
+
+
+
+
+
+ Keterangan Status Pasien
+
+
+
+
+
+
diff --git a/components/shared/BaseBreadcrumb.vue b/components/shared/BaseBreadcrumb.vue
index aa6499c..1f4d066 100644
--- a/components/shared/BaseBreadcrumb.vue
+++ b/components/shared/BaseBreadcrumb.vue
@@ -11,27 +11,19 @@ const props = defineProps({
-
{{ title }}
-
-
-
-
-
-
-
-
-
-
- {{ item.text }}
-
-
-
+
+
+
+
+
+ {{ breadcrumbs?.map(item => item.text).join(' / ') }}
+
+
-