From 3e812db8eb7459c2331f3ab5c764317aab861203 Mon Sep 17 00:00:00 2001 From: Hasyim Kai Date: Fri, 5 Dec 2025 14:15:54 +0700 Subject: [PATCH] Fix: refactor Kai CRUD UI to no redirect --- .../control-letter/_common/select-unit.vue | 2 +- .../surgery-report/_common/history-dialog.vue | 2 +- app/components/content/control-letter/add.vue | 11 ++--- .../content/control-letter/detail.vue | 24 ++++------- .../content/control-letter/edit.vue | 29 ++++--------- .../content/control-letter/list.vue | 37 ++++++++-------- .../content/control-letter/main.vue | 31 ++++++++++++++ .../content/document-upload/add.vue | 28 ++++--------- .../content/document-upload/edit.vue | 27 +++++------- .../content/document-upload/list.vue | 39 +++++++---------- .../content/document-upload/main.vue | 22 ++++++++++ app/components/content/kfr/entry.vue | 21 +++++----- app/components/content/kfr/list.vue | 26 +++++------- app/components/content/kfr/main.vue | 23 ++++++++++ app/components/content/prb/detail.vue | 11 ++--- app/components/content/prb/entry.vue | 24 +++-------- app/components/content/prb/list.vue | 21 +++++----- app/components/content/prb/main.vue | 28 +++++++++++++ app/components/content/resume/add.vue | 8 +++- app/components/content/resume/list.vue | 19 +++++++-- app/components/content/resume/main.vue | 23 ++++++++++ .../content/surgery-report/detail.vue | 15 +++---- .../content/surgery-report/entry.vue | 17 ++++---- .../content/surgery-report/list.vue | 33 ++++++--------- .../content/surgery-report/main.vue | 28 +++++++++++++ .../content/vaccine-data/detail.vue | 11 ++--- app/components/content/vaccine-data/entry.vue | 25 +++-------- app/components/content/vaccine-data/list.vue | 22 +++++----- app/components/content/vaccine-data/main.vue | 28 +++++++++++++ app/composables/useQueryCRUD.ts | 12 +++--- app/handlers/encounter-init.handler.ts | 14 +++---- app/lib/system-constants.ts | 5 +++ .../document-upload/[document_id]/edit.vue | 41 ------------------ .../encounter/[id]/document-upload/add.vue | 42 ------------------- 34 files changed, 396 insertions(+), 353 deletions(-) create mode 100644 app/components/content/control-letter/main.vue create mode 100644 app/components/content/document-upload/main.vue create mode 100644 app/components/content/kfr/main.vue create mode 100644 app/components/content/prb/main.vue create mode 100644 app/components/content/resume/main.vue create mode 100644 app/components/content/surgery-report/main.vue create mode 100644 app/components/content/vaccine-data/main.vue create mode 100644 app/lib/system-constants.ts delete mode 100644 app/pages/(features)/rehab/encounter/[id]/document-upload/[document_id]/edit.vue delete mode 100644 app/pages/(features)/rehab/encounter/[id]/document-upload/add.vue diff --git a/app/components/app/control-letter/_common/select-unit.vue b/app/components/app/control-letter/_common/select-unit.vue index afe0ca0a..0aef857f 100644 --- a/app/components/app/control-letter/_common/select-unit.vue +++ b/app/components/app/control-letter/_common/select-unit.vue @@ -33,7 +33,7 @@ const { const units = ref>([]) async function fetchData() { - units.value = await getUnitLabelList({}, true) + units.value = await getUnitLabelList({}) } const selectedUnitId = inject>("selectedUnitId")! diff --git a/app/components/app/surgery-report/_common/history-dialog.vue b/app/components/app/surgery-report/_common/history-dialog.vue index d92da4a5..4172aaec 100644 --- a/app/components/app/surgery-report/_common/history-dialog.vue +++ b/app/components/app/surgery-report/_common/history-dialog.vue @@ -42,7 +42,7 @@ const itemsCount = computed(() => items.length || 0) {{ item?.createdAt.toLocaleDateString('id-ID') }}

Ditambahkan Oleh : {{ item.updatedBy }}

- + Lihat Detail diff --git a/app/components/content/control-letter/add.vue b/app/components/content/control-letter/add.vue index 44f03a2f..4ca1d089 100644 --- a/app/components/content/control-letter/add.vue +++ b/app/components/content/control-letter/add.vue @@ -10,13 +10,14 @@ import Confirmation from '~/components/pub/my-ui/confirmation/confirmation.vue' import { type ControlLetter } from '~/models/control-letter' // #region Props & Emits -const props = defineProps<{ +const props = withDefaults(defineProps<{ + encounter_id: number callbackUrl?: string -}>() +}>(), { + +}) // form related state -const route = useRoute() -const encounterId = typeof route.params.id == 'string' ? parseInt(route.params.id) : 0 const controlLetterForm = ref | null>(null) // #endregion @@ -72,7 +73,7 @@ async function composeFormData(): Promise { if (!allValid) return Promise.reject('Form validation failed') const formData = controlLetter?.values - formData.encounter_id = encounterId + formData.encounter_id = props.encounter_id return new Promise((resolve) => resolve(formData)) } // #endregion region diff --git a/app/components/content/control-letter/detail.vue b/app/components/content/control-letter/detail.vue index d9019d57..effabb7f 100644 --- a/app/components/content/control-letter/detail.vue +++ b/app/components/content/control-letter/detail.vue @@ -1,9 +1,6 @@ + + diff --git a/app/components/content/document-upload/add.vue b/app/components/content/document-upload/add.vue index 9d099189..95febcca 100644 --- a/app/components/content/document-upload/add.vue +++ b/app/components/content/document-upload/add.vue @@ -10,13 +10,13 @@ import { toFormData } from '~/lib/utils' import { uploadAttachment } from '~/services/supporting-document.service' // #region Props & Emits -const props = defineProps<{ - callbackUrl?: string -}>() +const props = withDefaults(defineProps<{ + encounter_id: number +}>(), { + +}) // form related state -const route = useRoute() -const encounterId = typeof route.params.id == 'string' ? parseInt(route.params.id) : 0 const inputForm = ref | null>(null) const { user } = useUserStore() // #endregion @@ -43,20 +43,14 @@ async function handleConfirmAdd() { const inputFormData: FormData = toFormData(inputData) const response = await handleActionSave(inputFormData, () => { }, () => { }, toast, ) - const data = (response?.body?.data ?? null) - if (!data) return - - // // If has callback provided redirect to callback with patientData - if (props.callbackUrl) { - navigateTo(props.callbackUrl + '?control-letter-id=' + inputData.id) - } + // const data = (response?.body?.data ?? null) goBack() } async function composeFormData(): Promise { inputForm.value?.setValues({ ...inputForm.value?.values, - ref_id: encounterId, + ref_id: props.encounter_id, upload_employee_id: user.employee_id }) @@ -83,13 +77,7 @@ async function handleActionClick(eventType: string) { isConfirmationOpen.value = true } - if (eventType === 'back') { - if (props.callbackUrl) { - await navigateTo(props.callbackUrl) - return - } - goBack() - } + if (eventType === 'back') goBack() } function handleCancelAdd() { diff --git a/app/components/content/document-upload/edit.vue b/app/components/content/document-upload/edit.vue index c4033fb2..1719c274 100644 --- a/app/components/content/document-upload/edit.vue +++ b/app/components/content/document-upload/edit.vue @@ -8,15 +8,15 @@ import Confirmation from '~/components/pub/my-ui/confirmation/confirmation.vue' import { DocumentUploadSchema } from '~/schemas/document-upload.schema' import { getDetail } from '~/services/supporting-document.service' -// #region Props & Emits -const props = defineProps<{ - callbackUrl?: string -}>() +const props = withDefaults(defineProps<{ + encounter_id: number + record_id: number +}>(), { + +}) // form related state -const route = useRoute() -const encounterId = typeof route.params.id == 'string' ? parseInt(route.params.id) : 0 -const docId = typeof route.params.document_id == 'string' ? parseInt(route.params.document_id) : 0 +const docId = props.record_id const inputForm = ref | null>(null) // #endregion @@ -77,7 +77,7 @@ async function composeFormData(): Promise { if (!allValid) return Promise.reject('Form validation failed') const formData = inputFormState?.values - formData.encounter_id = encounterId + formData.encounter_id = props.encounter_id return new Promise((resolve) => resolve(formData)) } // #endregion region @@ -88,14 +88,7 @@ async function handleActionClick(eventType: string) { isConfirmationOpen.value = true } - if (eventType === 'back') { - if (props.callbackUrl) { - await navigateTo(props.callbackUrl) - return - } - - goBack() - } + if (eventType === 'back') goBack() } function handleCancelAdd() { @@ -109,7 +102,7 @@ function handleCancelAdd() {