dd33bbac8e
note: masih perlu cek terkait new api domain
62 lines
1.5 KiB
Vue
62 lines
1.5 KiB
Vue
<script setup lang="ts">
|
|
import type { ExposedForm } from '~/types/form'
|
|
import { type AssessmentEducationFormData, AssessmentEducationSchema, encode } from '~/schemas/assessment-education'
|
|
import Action from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
|
|
|
|
// Handlers
|
|
import {
|
|
isReadonly,
|
|
isProcessing,
|
|
onResetState,
|
|
handleActionSave,
|
|
handleCancelForm,
|
|
} from '~/handlers/assessment-education.handler'
|
|
|
|
// Helpers
|
|
import { toast } from '~/components/pub/ui/toast'
|
|
|
|
const form = ref<ExposedForm<AssessmentEducationFormData> | null>(null)
|
|
|
|
async function saveData(values: AssessmentEducationFormData) {
|
|
const transform = encode(1, values)
|
|
|
|
handleActionSave(
|
|
transform,
|
|
() => {
|
|
window.location.reload()
|
|
},
|
|
() => {},
|
|
toast,
|
|
)
|
|
}
|
|
|
|
async function cancelData() {}
|
|
|
|
async function handleActionClick(eventType: string) {
|
|
if (eventType === 'submit') {
|
|
const formValidate = await form.value?.validate()
|
|
console.log(formValidate)
|
|
if (!formValidate?.valid) return
|
|
saveData(formValidate?.values)
|
|
}
|
|
|
|
if (eventType === 'cancel') {
|
|
cancelData()
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="mb-5 border-b border-b-slate-300 pb-3 text-lg font-semibold xl:text-xl">Tambah Asesmen Edukasi</div>
|
|
<AppAssessmentEducationEntryForm
|
|
ref="form"
|
|
:is-readonly="isReadonly"
|
|
:is-loading="isProcessing"
|
|
:schema="AssessmentEducationSchema"
|
|
/>
|
|
|
|
<div class="my-2 flex justify-end py-2">
|
|
<Action @click="handleActionClick" />
|
|
</div>
|
|
</template>
|