feat(assessment-education): finish form entry data

finish form tambah assessment education

finish: form data and schema for content assessment eduction

todo: handler dan service
This commit is contained in:
Khafid Prayoga
2025-10-22 12:11:02 +07:00
parent 736e951f33
commit d879325496
6 changed files with 180 additions and 61 deletions

No files matched your search

@@ -1,60 +1,43 @@
<script setup lang="ts">
import * as z from 'zod'
import type { ExposedForm } from '~/types/form'
import { type AssessmentEducationFormData, AssessmentEducationSchema } from '~/schemas/assessment-education'
import Action from '~/components/pub/my-ui/nav-footer/ba-dr-su.vue'
const schema = z.object({
generalEducationNeeds: z
.array(z.string(), {
required_error: 'Mohon pilih setidaknya item',
})
.min(1, 'Mohon pilih setidaknya item'),
// Handlers
import { isReadonly, isProcessing, onResetState, handleActionSave, handleCancelForm } from '~/handlers/infra.handler'
specificEducationNeeds: z
.array(z.string(), {
required_error: 'Mohon pilih setidaknya item',
})
.min(1, 'Mohon pilih setidaknya item'),
// Helpers
import { toast } from '~/components/pub/ui/toast'
learningAbility: z.string({
required_error: 'Mohon pilih kemampuan belajar',
}),
// Services
import { getList, getDetail } from '~/services/infra.service'
learningWillingness: z.string({
required_error: 'Mohon pilih kemauan belajar',
}),
const form = ref<ExposedForm<AssessmentEducationFormData> | null>(null)
barrier: z.string({
required_error: 'Mohon pilih hambatan',
}),
async function saveData(values: AssessmentEducationFormData) {
handleActionSave(
values,
() => {
window.location.reload()
},
() => {},
toast,
)
console.log('sending data')
console.log(values)
}
learningMethod: z.string({
required_error: 'Mohon pilih metode pembelajaran',
}),
language: z.string({
required_error: 'Mohon pilih bahasa',
}),
languageBarrier: z.string({
required_error: 'Mohon pilih hambatan bahasa',
}),
beliefValue: z.string({
required_error: 'Mohon pilih keyakinan pada nilai-nilai yang dianut',
}),
})
const form = ref<ExposedForm<any> | null>(null)
async function cancelData() {}
async function handleActionClick(eventType: string) {
if (eventType === 'submit') {
const isValid = await form.value?.validate()
console.log(isValid)
const formValidate = await form.value?.validate()
if (!formValidate?.valid) return
saveData(formValidate?.values)
}
if (eventType === 'cancel') {
cancelData()
}
}
</script>
@@ -63,7 +46,11 @@ async function handleActionClick(eventType: string) {
<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"
:schema="schema"
:is-readonly="isReadonly"
:is-loading="isProcessing"
:schema="AssessmentEducationSchema"
@submit=""
@cancel=""
/>
<div class="my-2 flex justify-end py-2">