fix:validate
All checks were successful
Build & Deploy on Dev / build (push) Successful in 48s

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-11-19 15:58:03 +07:00
parent f851299d62
commit c56fec6a7a
9 changed files with 772 additions and 795 deletions

View file

@ -1,25 +1,26 @@
<!-- step กรอกขอม -->
<template>
<div>
<Profile
:status="status"
:isStatusRegister="isStatusRegister"
v-model:formInformation="formInformation"
v-model:formAddress="formAddress"
v-model:formOccupation="formOccupation"
v-model:formEducation="formEducation"
v-model:formContact="formContact"
/>
<!-- v-model:formFamily="formFamily" -->
<div v-html="editorConfirm"></div>
<div class="text-center q-pt-sm">
<q-checkbox
v-model="acceptTermOfUse"
:disable="!isStatusRegister || statusEdit"
label="ข้าพเจ้าขอให้คำรับรองและแสดงความยินยอมตามเงื่อนไขทุกประการ"
<q-form greedy @submit.prevent @validation-success="onSubmitForm">
<Profile
:status="status"
:isStatusRegister="isStatusRegister"
v-model:formInformation="formInformation"
v-model:formAddress="formAddress"
v-model:formOccupation="formOccupation"
v-model:formEducation="formEducation"
v-model:formContact="formContact"
/>
</div>
<!-- <div>
<!-- v-model:formFamily="formFamily" -->
<div v-html="editorConfirm"></div>
<div class="text-center q-pt-sm">
<q-checkbox
v-model="acceptTermOfUse"
:disable="!isStatusRegister || statusEdit"
label="ข้าพเจ้าขอให้คำรับรองและแสดงความยินยอมตามเงื่อนไขทุกประการ"
/>
</div>
<!-- <div>
1. าพเจาขอใหคำรบรองว
อความดงกลาวขางตนนเปนจรงทกประการและขาพเจามณสมบวไปและ ไมกษณะตองหาม
ตามมาตรา 43 แหงพระราชบญญระเบยบขาราชการกรงเทพมหานครและบคลากร-กรงเทพมหานคร .. 2554
@ -47,28 +48,34 @@
มาตรา 137
</div> -->
<div class="row justify-center q-pa-md">
<q-btn
color="blue"
class="q-ml-md"
label="บันทึกข้อมูล"
outline
icon="mdi-content-save"
@click="clickSave"
v-if="isStatusRegister"
:disable="!acceptTermOfUse || statusEdit"
/>
<q-btn
color="primary"
class="q-ml-md"
icon="mdi-check"
label="ส่งใบสมัคร"
@click="status === 'checkRegister' && !stepPayment ? (secondDialog = true) : dialogOpen()"
v-if="isStatusRegister"
:disable="!acceptTermOfUse || statusEdit"
/>
</div>
<div class="row justify-center q-pa-md">
<!-- @click="clickSave" -->
<q-btn
color="blue"
class="q-ml-md"
label="บันทึกข้อมูล"
outline
icon="mdi-content-save"
type="submit"
v-if="isStatusRegister"
:disable="!acceptTermOfUse || statusEdit"
@click="saveType = 'save'"
/>
<!-- @click="status === 'checkRegister' && !stepPayment ? (secondDialog = true) : dialogOpen()" -->
<q-btn
color="primary"
class="q-ml-md"
icon="mdi-check"
label="ส่งใบสมัคร"
type="submit"
v-if="isStatusRegister"
:disable="!acceptTermOfUse || statusEdit"
@click="saveType = 'confirm'"
/>
</div>
</q-form>
</div>
<q-dialog v-model="dialog" persistent>
<q-card>
<q-card-section class="row items-center q-pa-sm">
@ -221,6 +228,28 @@ onMounted(async () => {
await fetchStatus()
})
const saveType = ref<string>('')
function onSubmitForm() {
if (defaultInformation.value.profileImg == null || defaultInformation.value.profileImg == '') {
notifyError($q, 'กรุณาอัพโหลดรูปถ่าย')
return
}
if (!defaultCareer.value) {
notifyError($q, 'กรุณากรอกข้อมูลประวัติการทำงาน')
return
}
if (saveType.value === 'save') {
clickSave()
} else if (saveType.value === 'confirm') {
if (props.status === 'checkRegister' && !props.stepPayment) {
secondDialog.value = true
} else {
dialogOpen()
}
}
}
const dialogClose = () => {
dialog.value = false
}
@ -234,12 +263,6 @@ const okModalConfirm = () => {
modalError($q, 'ไม่สามารถสมัครสอบได้', 'มีข้อมูลที่ยังไม่ถูกบันทึกข้อมูล')
} else {
saveAuto.value = true
// modalConfirm(
// $q,
// '?',
// '',
// saveData
// )
saveData()
}
}
@ -248,10 +271,10 @@ const fetchStatus = async () => {
loaderPage(true)
await http
.get(config.API.candidateCard(examId.value, positionId.value))
.then((res) => {
.then(() => {
acceptTermOfUse.value = true
})
.catch((e) => {
.catch(() => {
acceptTermOfUse.value = false
})
.finally(() => {
@ -279,119 +302,76 @@ const clickSave = async () => {
const saveData = async () => {
if (saveAuto.value == true) {
if (defaultInformation.value.profileImg == null || defaultInformation.value.profileImg == '') {
notifyError($q, 'กรุณาอัพโหลดรูปถ่าย')
return
}
await formInformation.value.validate().then(async (suc: boolean) => {
if (suc) {
await formAddress.value.validate().then(async (suc: boolean) => {
if (suc) {
await formEducation.value.validate().then(async (suc: boolean) => {
if (suc) {
await formOccupation.value.validate().then(async (suc: boolean) => {
if (suc) {
if (defaultCareer.value == true) {
await formContact.value.validate().then(async (suc: boolean) => {
if (suc) {
loaderPage(true)
await http
.post(config.API.candidateId(examId.value, positionId.value), {
// prefixId: defaultInformation.value.prefixId,
prefixName: defaultInformation.value.prefix,
lastName: defaultInformation.value.lastname,
dateOfBirth:
defaultInformation.value.birthDate == null
? null
: dateToISO(defaultInformation.value.birthDate),
citizenId: defaultInformation.value.cardid,
firstName: defaultInformation.value.firstname,
// religionId: defaultInformation.value.religionId,
religionName: defaultInformation.value.religionName,
nationality: defaultInformation.value.nationality,
email: defaultInformation.value.email,
mobilePhone: defaultInformation.value.phone,
telephone: defaultInformation.value.tel,
knowledge: defaultInformation.value.knowledge,
occupationOrg: defaultOccupation.value.org,
occupationPile: defaultOccupation.value.pile,
occupationGroup: defaultOccupation.value.group,
occupationSalary: defaultOccupation.value.salary,
occupationPosition: defaultOccupation.value.position,
occupationPositionType: defaultOccupation.value.positionType,
occupationTelephone: defaultOccupation.value.tel,
registAddress: defaultAddress.value.address,
currentAddress: defaultAddress.value.addressC,
registProvinceId: defaultAddress.value.provinceId,
currentProvinceId: defaultAddress.value.provinceIdC,
registDistrictId: defaultAddress.value.districtId,
currentDistrictId: defaultAddress.value.districtIdC,
registSubDistrictId: defaultAddress.value.subdistrictId,
currentSubDistrictId: defaultAddress.value.subdistrictIdC,
registZipCode: defaultAddress.value.code,
currentZipCode: defaultAddress.value.codeC,
registSame:
defaultAddress.value.same == '1'
? true
: defaultAddress.value.same == '0'
? false
: null,
educationLevelExamId: defaultEducation.value.educationLevelExamId,
educationName: defaultEducation.value.educationName,
educationMajor: defaultEducation.value.educationMajor,
educationLocation: defaultEducation.value.educationLocation,
educationType: defaultEducation.value.educationType,
educationEndDate:
defaultEducation.value.educationEndDate == null
? null
: dateToISO(defaultEducation.value.educationEndDate),
educationScores: defaultEducation.value.educationScores,
educationLevelHighId: defaultEducation.value.educationLevelHighId,
loaderPage(true)
await http
.post(config.API.candidateId(examId.value, positionId.value), {
// prefixId: defaultInformation.value.prefixId,
prefixName: defaultInformation.value.prefix,
lastName: defaultInformation.value.lastname,
dateOfBirth:
defaultInformation.value.birthDate == null
? null
: dateToISO(defaultInformation.value.birthDate),
citizenId: defaultInformation.value.cardid,
firstName: defaultInformation.value.firstname,
// religionId: defaultInformation.value.religionId,
religionName: defaultInformation.value.religionName,
nationality: defaultInformation.value.nationality,
email: defaultInformation.value.email,
mobilePhone: defaultInformation.value.phone,
telephone: defaultInformation.value.tel,
knowledge: defaultInformation.value.knowledge,
occupationOrg: defaultOccupation.value.org,
occupationPile: defaultOccupation.value.pile,
occupationGroup: defaultOccupation.value.group,
occupationSalary: defaultOccupation.value.salary,
occupationPosition: defaultOccupation.value.position,
occupationPositionType: defaultOccupation.value.positionType,
occupationTelephone: defaultOccupation.value.tel,
registAddress: defaultAddress.value.address,
currentAddress: defaultAddress.value.addressC,
registProvinceId: defaultAddress.value.provinceId,
currentProvinceId: defaultAddress.value.provinceIdC,
registDistrictId: defaultAddress.value.districtId,
currentDistrictId: defaultAddress.value.districtIdC,
registSubDistrictId: defaultAddress.value.subdistrictId,
currentSubDistrictId: defaultAddress.value.subdistrictIdC,
registZipCode: defaultAddress.value.code,
currentZipCode: defaultAddress.value.codeC,
registSame:
defaultAddress.value.same == '1' ? true : defaultAddress.value.same == '0' ? false : null,
educationLevelExamId: defaultEducation.value.educationLevelExamId,
educationName: defaultEducation.value.educationName,
educationMajor: defaultEducation.value.educationMajor,
educationLocation: defaultEducation.value.educationLocation,
educationType: defaultEducation.value.educationType,
educationEndDate:
defaultEducation.value.educationEndDate == null
? null
: dateToISO(defaultEducation.value.educationEndDate),
educationScores: defaultEducation.value.educationScores,
educationLevelHighId: defaultEducation.value.educationLevelHighId,
// contactprefixId: defaultContact.value.contactprefixId,
contactprefixName: defaultContact.value.contactprefixName,
contactfirstname: defaultContact.value.contactfirstname,
contactlastname: defaultContact.value.contactlastname,
contactrelations: defaultContact.value.contactrelations,
contacttel: defaultContact.value.contacttel
})
.then(async () => {
if (!props.stepPayment) {
dialog.value = false
secondDialog.value = true
}
success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ')
await saveForm()
await props.fetchStep()
})
.catch((e) => {
messageError($q, e)
loaderPage(false)
})
.finally(async () => {})
} else {
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
}
})
} else {
notifyError($q, 'กรุณากรอกข้อมูลประวัติการทำงาน')
}
} else {
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
}
})
} else {
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
}
})
} else {
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
}
})
} else {
notifyError($q, 'กรุณากรอกข้อมูลให้ครบถ้วน')
}
})
// contactprefixId: defaultContact.value.contactprefixId,
contactprefixName: defaultContact.value.contactprefixName,
contactfirstname: defaultContact.value.contactfirstname,
contactlastname: defaultContact.value.contactlastname,
contactrelations: defaultContact.value.contactrelations,
contacttel: defaultContact.value.contacttel
})
.then(async () => {
if (!props.stepPayment) {
dialog.value = false
secondDialog.value = true
}
success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ')
await saveForm()
await props.fetchStep()
})
.catch((e) => {
messageError($q, e)
loaderPage(false)
})
} else {
loaderPage(true)
await http
@ -458,12 +438,13 @@ const saveData = async () => {
messageError($q, e)
loaderPage(false)
})
.finally(async () => {})
}
}
async function onSubmit() {
try {
saveAuto.value = false
await saveData()
await http.post(config.API.registerConfirm(examId.value, positionId.value))
await props.fetchStep()
// do something