feat(encounter): laporan tindakan cru

feat(treatment-report): add view mode for treatment reports

- Introduce new View component for displaying treatment report details
- Extend useQueryCRUDMode to support 'view' mode
- Update List component to handle view actions
- Implement navigation between list, entry and view modes

refactor(treatment-report): improve navigation flow between views

- Add fromView flag to track navigation origin
- Implement smart back navigation (goBack) that returns to previous view
- Update edit handlers to pass navigation context
- Clean up unused back handlers in form component

cleanup

set responsive details
This commit is contained in:
Khafid Prayoga
2025-12-02 13:48:43 +07:00
parent be1b86141f
commit dfc25f0048
10 changed files with 181 additions and 291 deletions

No files matched your search

+49 -5
View File
@@ -5,8 +5,15 @@ export function useQueryCRUDMode(key: string = 'mode') {
const route = useRoute()
const router = useRouter()
const mode = computed<'list' | 'entry'>({
get: () => (route.query[key] && route.query[key] === 'entry' ? 'entry' : 'list'),
const mode = computed<'list' | 'entry' | 'view'>({
get: () => {
const q = route.query[key]
if (q === 'entry') return 'entry'
if (q === 'view') return 'view'
return 'list'
},
set: (val) => {
router.push({
path: route.path,
@@ -18,20 +25,57 @@ export function useQueryCRUDMode(key: string = 'mode') {
},
})
const goToEntry = () => (mode.value = 'entry')
// Cek apakah form diakses dari view/detail
const fromView = computed(() => route.query['from'] === 'view')
const goToEntry = (options?: { fromView?: boolean }) => {
router.push({
path: route.path,
query: {
...route.query,
[key]: 'entry',
from: options?.fromView ? 'view' : undefined,
},
})
}
const goToView = () => (mode.value = 'view')
const backToList = () => {
router.push({
path: route.path,
query: {
...route.query,
mode: 'list',
// HAPUS record-id
// HAPUS record-id dan from
'record-id': undefined,
from: undefined,
},
})
}
return { mode, goToEntry, backToList }
const backToView = () => {
router.push({
path: route.path,
query: {
...route.query,
mode: 'view',
// HAPUS from
from: undefined,
},
})
}
// Fungsi back yang otomatis menentukan kemana harus kembali
const goBack = () => {
if (fromView.value) {
backToView()
} else {
backToList()
}
}
return { mode, fromView, goToEntry, goToView, backToList, backToView, goBack }
}
export function useQueryCRUDRecordId(key: string = 'record-id') {