fix: handle file upload

This commit is contained in:
riefive
2025-10-28 15:01:33 +07:00
parent aeaefb9478
commit b330609212
3 changed files with 55 additions and 100 deletions
+16 -74
View File
@@ -10,6 +10,7 @@ import Select from '~/components/pub/ui/select/Select.vue'
import Combobox from '~/components/pub/my-ui/combobox/combobox.vue'
import DatepickerSingle from '~/components/pub/my-ui/datepicker/datepicker-single.vue'
import TreeSelect from '~/components/pub/my-ui/select-tree/tree-select.vue'
import FileUpload from '~/components/pub/my-ui/form/file-field.vue'
// Types
import { IntegrationEncounterSchema, type IntegrationEncounterFormData } from '~/schemas/integration-encounter.schema'
@@ -59,10 +60,6 @@ const [medicalRecordNumber, medicalRecordNumberAttrs] = defineField('medicalReco
const mode = props.isLoading !== undefined ? props.isLoading : false
const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false
// File refs
const sepFileInput = ref<HTMLInputElement | null>(null)
const sippFileInput = ref<HTMLInputElement | null>(null)
const doctorOpts = computed(() => {
// Add default option
const defaultOption = [{ label: 'Pilih', value: '' }]
@@ -114,25 +111,6 @@ watch(props, (value) => {
}
})
// File handling functions
function pickSepFile() {
sepFileInput.value?.click()
}
function pickSippFile() {
sippFileInput.value?.click()
}
function onSepFileChange(e: Event) {
const f = (e.target as HTMLInputElement).files?.[0]
console.log('sep file', f)
}
function onSippFileChange(e: Event) {
const f = (e.target as HTMLInputElement).files?.[0]
console.log('sipp file', f)
}
function onAddSep() {
const formValues = {
patientName: patientName.value,
@@ -416,57 +394,21 @@ const onSubmit = handleSubmit((values) => {
</Field>
</Cell>
<Cell>
<Label height="compact">Dokumen SEP</Label>
<Field>
<div class="flex items-center gap-2">
<input
ref="sepFileInput"
type="file"
class="hidden"
@change="onSepFileChange"
/>
<Button
variant="ghost"
size="sm"
class="bg-primary"
@click.prevent="pickSepFile"
>
Pilih Berkas
</Button>
<Input
readonly
placeholder="Unggah dokumen SEP"
/>
</div>
</Field>
</Cell>
<Cell>
<Label height="compact">Dokumen SIPP</Label>
<Field>
<div class="flex items-center gap-2">
<input
ref="sippFileInput"
type="file"
class="hidden"
@change="onSippFileChange"
/>
<Button
variant="ghost"
size="sm"
class="bg-primary"
@click.prevent="pickSippFile"
>
Pilih Berkas
</Button>
<Input
readonly
placeholder="Unggah dokumen SIPP"
/>
</div>
</Field>
</Cell>
<FileUpload
field-name="sepFile"
label="Dokumen SEP"
placeholder="Unggah dokumen SEP"
:accept="['pdf', 'jpg', 'png']"
:max-size-mb="1"
/>
<FileUpload
field-name="sippFile"
label="Dokumen SIPP"
placeholder="Unggah dokumen SIPP"
:accept="['pdf', 'jpg', 'png']"
:max-size-mb="1"
/>
</Block>
</template>
+7 -2
View File
@@ -118,6 +118,10 @@ watch(props, (value) => {
nationalId.value = objects?.nationalIdentity || '-'
medicalRecordNumber.value = objects?.medicalRecordNumber || '-'
patientName.value = objects?.patientName || '-'
// Set admission type to 1 (rujukan) if sepType exists in query params
if (objects?.sepType) {
admissionType.value = '1'
}
}
if (Object.keys(patient).length > 0) {
bpjsNumber.value = '-'
@@ -327,13 +331,14 @@ onMounted(() => {
v-model="referralLetterNumber"
v-bind="referralLetterNumberAttrs"
:disabled="isLoading || isReadonly"
@change="emit('event', 'search-letter', { admissionType, serviceType, search: $event })"
/>
<Button
variant="outline"
type="button"
class="h-[40px] rounded-md border-orange-400 text-orange-400 hover:bg-green-50"
@click="
emit('event', 'search-letter', { admissionType, serviceType, search: referralLetterNumber || '' })
emit('event', 'open-letter', { admissionType, serviceType, search: referralLetterNumber || '' })
"
>
<Icon
@@ -357,7 +362,7 @@ onMounted(() => {
v-model="referralLetterDate"
v-bind="referralLetterDateAttrs"
:disabled="true"
placeholder="Pilih tanggal surat kontrol"
placeholder="Pilih tanggal surat"
/>
</Field>
</Cell>
+32 -24
View File
@@ -181,31 +181,32 @@ async function getLetterMappers(admissionType: string, search: string) {
}
if (result && result.success && result.body) {
const lettersRaw = result.body?.response || null
console.log(lettersRaw)
// {
// noSurat: 'SK22334442',
// tglRencana: '12 Agustus 2025',
// noSep: 'SEP3232332',
// namaPasien: 'Ahmad Baidowi',
// noBpjs: '33442331214',
// klinik: 'Penyakit Dalam',
// dokter: 'dr. Andi Prasetyo, Sp.PD-KHOM',
// },
// {
// noSurat: 'SK99120039',
// tglRencana: '12 Agustus 2025',
// noSep: 'SEP4443232',
// namaPasien: 'Bian Maulana',
// noBpjs: '33442367656',
// klinik: 'Gigi',
// dokter: 'dr. Achmad Suparjo',
// },
if (!lettersRaw) return
lettersRaw.forEach((result: any) => {
// letters.value.push({})
})
if (admissionType === '3') {
letters.value = [
{
letterNumber: lettersRaw.noSuratKontrol || '',
plannedDate: lettersRaw.tglRencanaKontrol || '',
sepNumber: lettersRaw.sep.noSep || '',
patientName: lettersRaw.sep.peserta.nama || '',
bpjsCardNo: lettersRaw.sep.peserta.noKartu,
clinic: lettersRaw.sep.poli || '',
doctor: lettersRaw.sep.namaDokter || '',
},
]
} else {
letters.value = [
{
letterNumber: lettersRaw.rujukan.noRujukan || '',
plannedDate: lettersRaw.rujukan.tglKunjungan || '',
sepNumber: lettersRaw.rujukan.informasi.eSEP || '',
patientName: lettersRaw.rujukan.peserta.nama || '',
bpjsCardNo: lettersRaw.rujukan.peserta.noKartu || '',
clinic: lettersRaw.rujukan.poliRujukan.nama || '',
doctor: lettersRaw.rujukan.namaDokter || '',
},
]
}
}
}
@@ -240,7 +241,14 @@ async function handleEvent(menu: string, value: any) {
return
}
if (menu === 'search-letter') {
getLetterMappers(value.admissionType, value.search).then(() => {
console.log('letters:', letters.value)
})
return
}
if (menu === 'open-letter') {
openLetter.value = true
return
}
if (menu === 'history-sep') {
getMonitoringHistoryMappers().then(() => {