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:
No files matched your search
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user