diff --git a/components/layout/full/Main.vue b/components/layout/full/Main.vue
index b81a1a2..9b769ca 100644
--- a/components/layout/full/Main.vue
+++ b/components/layout/full/Main.vue
@@ -5,8 +5,15 @@ import sidebarItems from "~/components/layout/full/vertical-sidebar/sidebarItem"
import Customizer from "~/components/layout/full/customizer/Customizer.vue";
import { Menu2Icon } from "vue-tabler-icons";
import { useCustomizerStore } from "~/store/customizer";
+import { usePendaftaranStore } from "~/store/pendaftaran";
+import { storeToRefs } from 'pinia';
+
const sidebarMenu = shallowRef(sidebarItems);
const customizer = useCustomizerStore();
+const pendaftaranStore = usePendaftaranStore();
+
+const { snackbar, snackbarMessage, snackbarColor } = storeToRefs(pendaftaranStore);
+
const { mdAndDown } = useDisplay();
const sDrawer = ref(true);
onMounted(() => {
@@ -66,6 +73,24 @@ watch(mdAndDown, (val) => {
© 2026 RSUD Dr. Saiful Anwar Provinsi Jawa Timur. All rights reserved.
+
+
+
+ {{ snackbarMessage }}
+
+
+ Close
+
+
+
diff --git a/components/pendaftaran/RencanaOperasi.vue b/components/pendaftaran/RencanaOperasi.vue
index d566131..8a86f4e 100644
--- a/components/pendaftaran/RencanaOperasi.vue
+++ b/components/pendaftaran/RencanaOperasi.vue
@@ -59,7 +59,7 @@ const kategoriOperasiOptions = computed(() => {
const fetchSubSpesialis = async (idSpesialis: number) => {
try {
isLoadingSubSpesialis.value = true;
- const response = await api.get(`/sub-spesialis?id_spesialis=${idSpesialis}`);
+ const response = await api.get(`/reference/sub-spesialis?id_spesialis=${idSpesialis}`);
if (response.data.success && response.data.data) {
subSpesialisList.value = response.data.data;
@@ -86,7 +86,7 @@ watch(() => rencanaOperasiData.value.spesialis, (newSpesialis) => {
const fetchSpesialis = async () => {
try {
isLoadingSpesialis.value = true;
- const response = await api.get('/spesialis');
+ const response = await api.get('/reference/spesialis');
if (response.data.success && response.data.data) {
spesialisList.value = response.data.data;
@@ -103,7 +103,7 @@ const fetchSpesialis = async () => {
const fetchKategoriOperasi = async () => {
try {
isLoadingKategori.value = true;
- const response = await api.get('/kategori');
+ const response = await api.get('/reference/kategori');
if (response.data.success && response.data.data) {
kategoriOperasiList.value = response.data.data;
@@ -145,7 +145,7 @@ const fetchDokter = async () => {
offset: offset.toString()
});
- const response = await api.get(`/dokter?${params}`);
+ const response = await api.get(`/reference/dokter?${params}`);
if (response.data.success && response.data.data) {
dokterList.value = response.data.data;
diff --git a/components/pendaftaran/TableAntrian.vue b/components/pendaftaran/TableAntrian.vue
index ee458f8..0c81ef2 100644
--- a/components/pendaftaran/TableAntrian.vue
+++ b/components/pendaftaran/TableAntrian.vue
@@ -72,78 +72,143 @@ watch(itemsPerPageLocal, (newVal) => {
-
-
-
-
-
-
-
-
-
-
-
- {{ item.JenisKelamin }}
-
-
-
-
-
-
-
-
- {{ getStatusText(item.StatusOperasi) }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
- {{ action.icon }}
-
- {{ action.tooltip }}
-
-
-
-
-
-
+ {{ item.JenisKelamin }}
+
+
+
+
+
+
+
+
+ {{ getStatusText(item.StatusOperasi) }}
+
+
+
+
+
+
+
+
+
+ {{ action.icon }}
+
+ {{ action.tooltip }}
+
+
+
+
+
+
+
+
+
+
diff --git a/config.ts b/config.ts
index 062e7ec..9274c18 100644
--- a/config.ts
+++ b/config.ts
@@ -1,4 +1,4 @@
-import {CYAN_THEME} from "~/theme/LightTheme";
+import {RSSA_THEME} from "~/theme/LightTheme";
export type ConfigProps = {
Sidebar_drawer: any;
@@ -17,7 +17,7 @@ const config: ConfigProps = {
mini_sidebar: false,
setHorizontalLayout: false, // Horizontal layout
setRTLLayout: false, // RTL layout
- actTheme: 'BLUE_THEME',
+ actTheme: 'RSSA_THEME',
boxed: true,
setBorderCard: false
};
diff --git a/data/users.db b/data/users.db
index 45f6817..20722f7 100644
Binary files a/data/users.db and b/data/users.db differ
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 6c431d8..1c3cc76 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -100,7 +100,7 @@ export default defineNuxtConfig({
// authUrl: process.env.AUTH_ORIGIN || "http://10.10.150.175:3001",
// authUrl: process.env.AUTH_ORIGIN || "http://localhost:3001",
wsBaseUrl: process.env.WS_BASE_URL || 'ws://10.10.150.100:8084/api/v1/ws',
- baseUrl: process.env.BASE_URL || 'http://localhost:8080/api',
+ baseUrl: process.env.BASE_URL || 'http://10.10.150.144:8080/api',
baseUrlGomed: process.env.BASE_URL_GOMED || 'https://gomed.rssa.my.id/api',
},
},
diff --git a/pages/antrean/kategori/[id].vue b/pages/antrean/kategori/[id].vue
index 53b20b2..0912c79 100644
--- a/pages/antrean/kategori/[id].vue
+++ b/pages/antrean/kategori/[id].vue
@@ -22,7 +22,7 @@ const totalItems = ref(0);
const fetchKategoriInfo = async () => {
try {
isLoadingKategori.value = true;
- const response = await api.get('/kategori');
+ const response = await api.get('/reference/kategori');
if (response.data.success && response.data.data) {
kategoriInfo.value = response.data.data.find((k: KategoriOperasi) => k.id === parseInt(idKategori));
diff --git a/pages/antrean/list-kategori.vue b/pages/antrean/list-kategori.vue
index eb50ea9..a0e465a 100644
--- a/pages/antrean/list-kategori.vue
+++ b/pages/antrean/list-kategori.vue
@@ -1,7 +1,7 @@
@@ -72,18 +68,18 @@ const countAntreanByKategori = (idKategoriOperasi: number) => {
-
+
{{ kategori.kategori }}
mdi-chevron-right
- {{ countAntreanByKategori(kategori.id) }} Antrean
+ {{ kategori.jumlah_antrean}} Antrean
diff --git a/pages/antrean/pendaftaran.vue b/pages/antrean/pendaftaran.vue
index c04ced6..a02811c 100644
--- a/pages/antrean/pendaftaran.vue
+++ b/pages/antrean/pendaftaran.vue
@@ -24,10 +24,7 @@ const {
rencanaOperasiData,
dokterPelaksanaItems,
statusPasienData,
- loading,
- snackbar,
- snackbarMessage,
- snackbarColor
+ loading
} = storeToRefs(pendaftaranStore);
const form = ref();
@@ -126,8 +123,8 @@ const handleSimpan = async () => {
const result = await pendaftaranStore.submitForm();
if (result.success) {
- // Navigate back or to list page
- // router.push('/antrean/list');
+ // Navigate back immediately, snackbar will persist due to global state
+ router.back();
}
} else {
// Validate using store method
@@ -236,22 +233,4 @@ const handleKembali = () => {
-
-
-
- {{ snackbarMessage }}
-
-
- Close
-
-
-
\ No newline at end of file
diff --git a/plugins/vuetify.ts b/plugins/vuetify.ts
index 697ae0f..3134517 100644
--- a/plugins/vuetify.ts
+++ b/plugins/vuetify.ts
@@ -8,6 +8,7 @@ import "@mdi/font/css/materialdesignicons.css";
import "~/scss/style.scss";
import {
BLUE_THEME,
+ RSSA_THEME,
AQUA_THEME,
PURPLE_THEME,
GREEN_THEME,
@@ -27,8 +28,9 @@ export default defineNuxtPlugin((nuxtApp) => {
components,
directives,
theme: {
- defaultTheme: "BLUE_THEME",
+ defaultTheme: "RSSA_THEME",
themes: {
+ RSSA_THEME,
BLUE_THEME,
AQUA_THEME,
PURPLE_THEME,
diff --git a/theme/LightTheme.ts b/theme/LightTheme.ts
index bb754fa..cec4de6 100644
--- a/theme/LightTheme.ts
+++ b/theme/LightTheme.ts
@@ -210,4 +210,39 @@ const ORANGE_THEME: ThemeTypes = {
}
};
-export { BLUE_THEME, AQUA_THEME, ORANGE_THEME, PURPLE_THEME, GREEN_THEME, CYAN_THEME };
+const RSSA_THEME: ThemeTypes = {
+ name: 'RSSA_THEME',
+ dark: false,
+ variables: {
+ 'border-color': '#e0e6eb',
+ 'border-opacity': 1
+ },
+ colors: {
+ primary: '#4C71CF',
+ secondary: '#F06D02',
+ info: '#3B82F6',
+ success: '#10B981',
+ warning: '#FFAE1F',
+ error: '#EF4444',
+ lightprimary: '#B7C6EC',
+ lightsecondary: '#F9C59A',
+ lightsuccess: '#9FE3CD',
+ lighterror: '#F9B4B4',
+ lightinfo: '#B1CDFB',
+ lightwarning: '#FEF5E5',
+ textPrimary: '#29343D',
+ textSecondary: '#6B7F93',
+ borderColor: '#e0e6eb',
+ containerBg: '#ffffff',
+ background: '#F4F7FB',
+ hoverColor: '#f6f9fc',
+ surface: '#fff',
+ grey100: '#F6F7F9',
+ grey200: '#29343d',
+ darkgray: '#0a2540',
+ light: '#EFF4FA',
+ muted:'#6B7F93'
+ }
+};
+
+export { BLUE_THEME, AQUA_THEME, ORANGE_THEME, PURPLE_THEME, GREEN_THEME, CYAN_THEME, RSSA_THEME };
diff --git a/types/antrean.ts b/types/antrean.ts
index f76d969..8c56778 100644
--- a/types/antrean.ts
+++ b/types/antrean.ts
@@ -40,3 +40,9 @@ export interface KategoriOperasi {
id: number;
kategori: string;
}
+
+export interface AntreanKategoriOperasi {
+ id_kategori: number;
+ kategori: string;
+ jumlah_antrean: number;
+}