update: move file into more manageable folder

This commit is contained in:
yosaphatprs 2025-11-25 16:44:11 +07:00
parent 433e6889cd
commit f7bffa86d5
16 changed files with 169 additions and 162 deletions

View File

@ -3,23 +3,23 @@ import { createRouter, createWebHistory } from "vue-router";
import DashboardView from "../views/dashboard/DashboardView.vue"; import DashboardView from "../views/dashboard/DashboardView.vue";
import Login from "../views/auth/Login.vue"; import Login from "../views/auth/Login.vue";
import NotFoundView from "../views/NotFoundView.vue"; import NotFoundView from "../views/NotFoundView.vue";
import RekamMedisView from "../views/dashboard/RekamMedisView.vue"; import RekamMedisView from "../views/dashboard/rekam-medis/RekamMedisView.vue";
import ObatView from "../views/dashboard/ObatView.vue"; import ObatView from "../views/dashboard/obat/ObatView.vue";
import TindakanView from "../views/dashboard/TindakanView.vue"; import TindakanView from "../views/dashboard/pemberian-tindakan/TindakanView.vue";
import UsersView from "../views/dashboard/UsersView.vue"; import UsersView from "../views/dashboard/users/UsersView.vue";
import RekamMedisDetailsView from "../views/dashboard/RekamMedisDetailsView.vue"; import RekamMedisDetailsView from "../views/dashboard/rekam-medis/DetailRekamMedisView.vue";
import PemberianObatDetailView from "../views/dashboard/PemberianObatDetailView.vue"; import PemberianObatDetailView from "../views/dashboard/obat/DetailObatView.vue";
import PemberianObatEditView from "../views/dashboard/PemberianObatEditView.vue"; import PemberianObatEditView from "../views/dashboard/obat/UpdateObatView.vue";
import CreateRekamMedisView from "../views/dashboard/CreateRekamMedisView.vue"; import CreateRekamMedisView from "../views/dashboard/rekam-medis/CreateRekamMedisView.vue";
import RekamMedisEditView from "../views/dashboard/RekamMedisEditView.vue"; import RekamMedisEditView from "../views/dashboard/rekam-medis/UpdateRekamMedisView.vue";
import CreateObatView from "../views/dashboard/CreateObatView.vue"; import CreateObatView from "../views/dashboard/obat/CreateObatView.vue";
import CreateTindakanDokterView from "../views/dashboard/CreateTindakanDokterView.vue"; import CreateTindakanDokterView from "../views/dashboard/pemberian-tindakan/CreateTindakanDokterView.vue";
import TindakanDokterEditView from "../views/dashboard/TindakanDokterEditView.vue"; import TindakanDokterEditView from "../views/dashboard/pemberian-tindakan/TindakanDokterEditView.vue";
import TindakanDokterDetailsView from "../views/dashboard/TindakanDokterDetailsView.vue"; import TindakanDokterDetailsView from "../views/dashboard/pemberian-tindakan/DetailTindakanDokterView.vue";
import AuditTrailView from "../views/dashboard/AuditTrailView.vue";
import ValidasiView from "../views/dashboard/validasi/ValidasiView.vue"; import ValidasiView from "../views/dashboard/validasi/ValidasiView.vue";
import ReviewValidasiView from "../views/dashboard/validasi/ReviewValidasiView.vue"; import ReviewValidasiView from "../views/dashboard/validasi/ReviewValidasiView.vue";
import CreateUserView from "../views/dashboard/users/CreateUserView.vue"; import CreateUserView from "../views/dashboard/users/CreateUserView.vue";
import AuditTrailView from "../views/dashboard/audit-trail/AuditTrailView.vue";
const routes = [ const routes = [
{ {

View File

@ -293,17 +293,19 @@ onMounted(() => {
</div> </div>
</div> </div>
<div class="flex gap-x-4 w-full"> <div class="flex gap-x-4 w-full">
<div class="flex-2 mt-4 bg-white p-4 rounded-lg shadow-md min-w-0"> <div
<h5 class="text-lg font-semibold mb-2 text-center"> class="flex flex-col flex-2 mt-4 bg-white p-4 rounded-lg shadow-md min-w-0"
>
<h5 class="flex-1 text-lg font-semibold text-center">
Jumlah Rekam Medis Baru 7 Hari Terakhir Jumlah Rekam Medis Baru 7 Hari Terakhir
</h5> </h5>
<div class="w-full"> <div class="flex-5 w-full">
<Line <Line
:data="rekamMedisCountLineChartData" :data="rekamMedisCountLineChartData"
:options="rekamMedisLineChartOptions" :options="rekamMedisLineChartOptions"
/> />
</div> </div>
<div class="flex justify-center mt-4"> <div class="flex flex-1 justify-center mt-4">
<RouterLink <RouterLink
to="/rekam-medis" to="/rekam-medis"
class="text-sm hover:opacity-75 transition-all" class="text-sm hover:opacity-75 transition-all"

View File

@ -1,24 +1,27 @@
<script setup lang="ts"> <script setup lang="ts">
import { onBeforeUnmount, onMounted, ref, watch } from "vue"; import { onBeforeUnmount, onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue"; import SearchInput from "../../../components/dashboard/SearchInput.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import { usePagination } from "../../composables/usePagination"; import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { import {
DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY, DEBOUNCE_DELAY,
ITEMS_PER_PAGE_OPTIONS, ITEMS_PER_PAGE_OPTIONS,
AUDIT_TABLE_COLUMNS, AUDIT_TABLE_COLUMNS,
} from "../../constants/pagination"; } from "../../../constants/pagination";
import ButtonDark from "../../components/dashboard/ButtonDark.vue"; import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import DialogConfirm from "../../components/DialogConfirm.vue"; import DialogConfirm from "../../../components/DialogConfirm.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue"; import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import type { AuditLogEntry, AuditLogType } from "../../constants/interfaces"; import type {
AuditLogEntry,
AuditLogType,
} from "../../../constants/interfaces";
import { io, Socket } from "socket.io-client"; import { io, Socket } from "socket.io-client";
interface AuditLogResponse { interface AuditLogResponse {

View File

@ -1,13 +1,13 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import FieldInput from "../../components/dashboard/FieldInput.vue"; import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue"; import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useApi, type ApiError } from "../../composables/useApi"; import { useApi, type ApiError } from "../../../composables/useApi";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { DEBOUNCE_DELAY } from "../../constants/pagination"; import { DEBOUNCE_DELAY } from "../../../constants/pagination";
interface CreateObatFormData { interface CreateObatFormData {
id_visit: string; id_visit: string;

View File

@ -1,13 +1,13 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import type { BlockchainLog, Obat } from "../../constants/interfaces"; import type { BlockchainLog, Obat } from "../../../constants/interfaces";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination"; import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
const data = ref<Obat>(); const data = ref<Obat>();
const dataLog = ref<BlockchainLog[]>([]); const dataLog = ref<BlockchainLog[]>([]);

View File

@ -1,22 +1,22 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue"; import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue"; import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue"; import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination"; import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import { import {
DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY, DEBOUNCE_DELAY,
ITEMS_PER_PAGE_OPTIONS, ITEMS_PER_PAGE_OPTIONS,
SORT_OPTIONS, SORT_OPTIONS,
} from "../../constants/pagination"; } from "../../../constants/pagination";
interface ObatData { interface ObatData {
id: number; id: number;

View File

@ -1,15 +1,15 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import type { BlockchainLog, Obat } from "../../constants/interfaces"; import type { BlockchainLog, Obat } from "../../../constants/interfaces";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination"; import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
import FieldInput from "../../components/dashboard/FieldInput.vue"; import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue"; import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
interface PostObat { interface PostObat {
obat: string; obat: string;

View File

@ -1,18 +1,18 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import FieldInput from "../../components/dashboard/FieldInput.vue"; import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue"; import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useApi, type ApiError } from "../../composables/useApi"; import { useApi, type ApiError } from "../../../composables/useApi";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { DEBOUNCE_DELAY, FILTER } from "../../constants/pagination"; import { DEBOUNCE_DELAY, FILTER } from "../../../constants/pagination";
import { import {
validateTindakanForm, validateTindakanForm,
type TindakanFormInput, type TindakanFormInput,
type TindakanFormErrors, type TindakanFormErrors,
} from "../../validation/tindakan"; } from "../../../validation/tindakan";
type CreateTindakanFormErrors = Partial<TindakanFormErrors>; type CreateTindakanFormErrors = Partial<TindakanFormErrors>;

View File

@ -1,13 +1,16 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import type { BlockchainLog, TindakanDokter } from "../../constants/interfaces"; import type {
import { useApi } from "../../composables/useApi"; BlockchainLog,
import { LOG_TABLE_COLUMNS } from "../../constants/pagination"; TindakanDokter,
} from "../../../constants/interfaces";
import { useApi } from "../../../composables/useApi";
import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
// Prevent TypeScript false positives for template-only usage. // Prevent TypeScript false positives for template-only usage.
const componentsInTemplate = { Sidebar, Footer, PageHeader, DataTable }; const componentsInTemplate = { Sidebar, Footer, PageHeader, DataTable };

View File

@ -1,25 +1,28 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import FieldInput from "../../components/dashboard/FieldInput.vue"; import FieldInput from "../../../components/dashboard/FieldInput.vue";
import ButtonDark from "../../components/dashboard/ButtonDark.vue"; import ButtonDark from "../../../components/dashboard/ButtonDark.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { useApi, type ApiError } from "../../composables/useApi"; import { useApi, type ApiError } from "../../../composables/useApi";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { import {
DEBOUNCE_DELAY, DEBOUNCE_DELAY,
FILTER, FILTER,
LOG_TABLE_COLUMNS, LOG_TABLE_COLUMNS,
} from "../../constants/pagination"; } from "../../../constants/pagination";
import type { BlockchainLog, TindakanDokter } from "../../constants/interfaces"; import type {
BlockchainLog,
TindakanDokter,
} from "../../../constants/interfaces";
import { import {
validateTindakanForm, validateTindakanForm,
type TindakanFormErrors, type TindakanFormErrors,
type TindakanFormInput, type TindakanFormInput,
} from "../../validation/tindakan"; } from "../../../validation/tindakan";
// Prevent TypeScript false positives for template-only usage. // Prevent TypeScript false positives for template-only usage.
const componentsInTemplate = { const componentsInTemplate = {

View File

@ -1,16 +1,16 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue"; import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue"; import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue"; import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination"; import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import { import {
DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY, DEBOUNCE_DELAY,
@ -18,8 +18,8 @@ import {
SORT_OPTIONS, SORT_OPTIONS,
TINDAKAN_TABLE_COLUMNS, TINDAKAN_TABLE_COLUMNS,
FILTER, FILTER,
} from "../../constants/pagination"; } from "../../../constants/pagination";
import type { TindakanDokter } from "../../constants/interfaces"; import type { TindakanDokter } from "../../../constants/interfaces";
interface ApiResponse { interface ApiResponse {
data: TindakanDokter[]; data: TindakanDokter[];

View File

@ -1,16 +1,16 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import FieldInput from "../../components/dashboard/FieldInput.vue"; import FieldInput from "../../../components/dashboard/FieldInput.vue";
import { FILTER } from "../../constants/pagination"; import { FILTER } from "../../../constants/pagination";
import { import {
validateRekamMedisForm, validateRekamMedisForm,
type RekamMedisFormErrors, type RekamMedisFormErrors,
} from "../../validation/rekamMedis"; } from "../../../validation/rekamMedis";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
const route = useRoute(); const route = useRoute();
const api = useApi(); const api = useApi();

View File

@ -1,13 +1,13 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import type { BlockchainLog, RekamMedis } from "../../constants/interfaces"; import type { BlockchainLog, RekamMedis } from "../../../constants/interfaces";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import { LOG_TABLE_COLUMNS } from "../../constants/pagination"; import { LOG_TABLE_COLUMNS } from "../../../constants/pagination";
const data = ref<RekamMedis>(); const data = ref<RekamMedis>();
const dataLog = ref<BlockchainLog[]>([]); const dataLog = ref<BlockchainLog[]>([]);
@ -21,7 +21,7 @@ const fetchData = async () => {
const result = await api.get<RekamMedis>(`/rekammedis/${route.params.id}`); const result = await api.get<RekamMedis>(`/rekammedis/${route.params.id}`);
data.value = result; data.value = result;
} catch (error) { } catch (error) {
console.error("Error fetching obat data:", error); console.error("Error fetching rekam medis data:", error);
data.value = undefined; data.value = undefined;
} }
}; };

View File

@ -1,16 +1,16 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue"; import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue"; import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue"; import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onBeforeUnmount, onMounted, ref, watch } from "vue"; import { onBeforeUnmount, onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination"; import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import { import {
DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY, DEBOUNCE_DELAY,
@ -18,11 +18,11 @@ import {
SORT_OPTIONS, SORT_OPTIONS,
FILTER, FILTER,
REKAM_MEDIS_TABLE_COLUMNS, REKAM_MEDIS_TABLE_COLUMNS,
} from "../../constants/pagination"; } from "../../../constants/pagination";
import "cally"; import "cally";
import noUiSlider from "nouislider"; import noUiSlider from "nouislider";
import "nouislider/dist/nouislider.css"; import "nouislider/dist/nouislider.css";
import type { RekamMedis } from "../../constants/interfaces"; import type { RekamMedis } from "../../../constants/interfaces";
interface ApiResponse { interface ApiResponse {
data: RekamMedis[]; data: RekamMedis[];
@ -274,16 +274,12 @@ const handleUpdate = (item: RekamMedis) => {
}; };
const handleDelete = async (item: RekamMedis) => { const handleDelete = async (item: RekamMedis) => {
if ( try {
confirm(`Apakah Anda yakin ingin menghapus rekam medis "${item.id_visit}"?`) await api.delete(`/rekammedis/${item.id_visit}`);
) { await fetchData();
try { } catch (error) {
await api.delete(`/rekammedis/${item.id_visit}`); console.error("Error deleting rekam medis:", error);
await fetchData(); alert("Gagal menghapus data rekam medis");
} catch (error) {
console.error("Error deleting rekam medis:", error);
alert("Gagal menghapus data rekam medis");
}
} }
}; };

View File

@ -1,17 +1,17 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import FieldInput from "../../components/dashboard/FieldInput.vue"; import FieldInput from "../../../components/dashboard/FieldInput.vue";
import { FILTER } from "../../constants/pagination"; import { FILTER } from "../../../constants/pagination";
import type { RekamMedis } from "../../constants/interfaces"; import type { RekamMedis } from "../../../constants/interfaces";
import { import {
validateRekamMedisForm, validateRekamMedisForm,
type RekamMedisFormErrors, type RekamMedisFormErrors,
} from "../../validation/rekamMedis"; } from "../../../validation/rekamMedis";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
const route = useRoute(); const route = useRoute();
const api = useApi(); const api = useApi();

View File

@ -1,24 +1,24 @@
<script setup lang="ts"> <script setup lang="ts">
import Sidebar from "../../components/dashboard/Sidebar.vue"; import Sidebar from "../../../components/dashboard/Sidebar.vue";
import Footer from "../../components/dashboard/Footer.vue"; import Footer from "../../../components/dashboard/Footer.vue";
import PageHeader from "../../components/dashboard/PageHeader.vue"; import PageHeader from "../../../components/dashboard/PageHeader.vue";
import SearchInput from "../../components/dashboard/SearchInput.vue"; import SearchInput from "../../../components/dashboard/SearchInput.vue";
import SortDropdown from "../../components/dashboard/SortDropdown.vue"; import SortDropdown from "../../../components/dashboard/SortDropdown.vue";
import DataTable from "../../components/dashboard/DataTable.vue"; import DataTable from "../../../components/dashboard/DataTable.vue";
import PaginationControls from "../../components/dashboard/PaginationControls.vue"; import PaginationControls from "../../../components/dashboard/PaginationControls.vue";
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { usePagination } from "../../composables/usePagination"; import { usePagination } from "../../../composables/usePagination";
import { useDebounce } from "../../composables/useDebounce"; import { useDebounce } from "../../../composables/useDebounce";
import { useApi } from "../../composables/useApi"; import { useApi } from "../../../composables/useApi";
import { import {
DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE,
DEBOUNCE_DELAY, DEBOUNCE_DELAY,
ITEMS_PER_PAGE_OPTIONS, ITEMS_PER_PAGE_OPTIONS,
SORT_OPTIONS, SORT_OPTIONS,
USERS_TABLE_COLUMNS, USERS_TABLE_COLUMNS,
} from "../../constants/pagination"; } from "../../../constants/pagination";
import type { Users } from "../../constants/interfaces"; import type { Users } from "../../../constants/interfaces";
interface ApiResponse { interface ApiResponse {
data: Users[]; data: Users[];