fix: sep searching

This commit is contained in:
riefive
2025-11-11 12:01:50 +07:00
parent 5b1c69fd77
commit 3b75c06c4b
3 changed files with 12 additions and 18 deletions
+4 -2
View File
@@ -20,6 +20,7 @@ import type { TreeItem } from '~/components/pub/my-ui/select-tree/type'
// Helpers
import { toTypedSchema } from '@vee-validate/zod'
import { useForm } from 'vee-validate'
import { refDebounced } from '@vueuse/core'
const props = defineProps<{
isLoading?: boolean
@@ -92,8 +93,9 @@ watch(subSpecialistId, async (newValue) => {
}
})
// Watch SEP number changes to notify parent
watch(sepNumber, (newValue) => {
// Debounced SEP number watcher: emit change only after user stops typing
const debouncedSepNumber = refDebounced(sepNumber, 500)
watch(debouncedSepNumber, (newValue) => {
emit('event', 'sep-number-changed', newValue)
})
+5 -16
View File
@@ -259,9 +259,9 @@ async function handleEvent(menu: string, value?: any) {
})
} else if (menu === 'sep-number-changed') {
// Update sepNumber when it changes in form (only if different to prevent loop)
if (sepNumber.value !== value) {
sepNumber.value = value || ''
}
// When SEP number changes from child form, trigger validation/getList immediately
// so parent can react (this will also be picked up by the debounced watcher)
await validateSepNumber(String(value || ''))
} else if (menu === 'save') {
await handleSaveEncounter(value)
} else if (menu === 'cancel') {
@@ -298,26 +298,15 @@ async function validateSepNumber(sepNumberValue: string) {
return
}
// Only check if payment type is JKN
// We need to check from formObjects
const paymentType = formObjects.value?.paymentType
if (paymentType !== 'jkn') {
isSepValid.value = false
return
}
try {
isSepValid.value = false
isCheckingSep.value = true
const result = await getSepList({ number: sepNumberValue.trim() })
// Check if SEP is found
// If response is not null, SEP is found
// If response is null with metaData code "201", SEP is not found
if (result.success && result.body?.response !== null) {
isSepValid.value = true
} else {
// SEP not found (response null with metaData code "201")
isSepValid.value = false
isSepValid.value = result.body?.response?.metaData?.code === '200'
}
} catch (error) {
console.error('Error checking SEP:', error)
+3
View File
@@ -386,6 +386,9 @@ async function handleEvent(menu: string, value: any) {
})
return
}
if (menu === 'sep-number-changed') {
// Update sepNumber when it changes in form (only if different to prevent loop)
}
if (menu === 'back') {
navigateTo('/integration/bpjs/sep')
}