This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-11-19 11:03:58 +07:00
parent 6f1318b55c
commit c95c4e9e8f
14 changed files with 363 additions and 229 deletions

View file

@ -45,5 +45,8 @@ export default {
candidateReport: (candidateId: string) => `${env.API_URI}/placement/candidate/pdf/${candidateId}`, candidateReport: (candidateId: string) => `${env.API_URI}/placement/candidate/pdf/${candidateId}`,
candidatePaymentExport: (examId: string) => `${candidate}period-exam/payment-export/${examId}` candidatePaymentExport: (examId: string) => `${candidate}period-exam/payment-export/${examId}`,
registerConfirm: (examId: string, positionId: string) =>
`${candidate}register-confirm/${examId}/${positionId}`
} }

View file

@ -3,7 +3,15 @@
<div class="text-bold col-12 row q-px-md q-py-sm items-center bg-grey-2"> <div class="text-bold col-12 row q-px-md q-py-sm items-center bg-grey-2">
อมลการสมคร อมลการสมคร
<q-space /> <q-space />
<q-btn dense size="12px" flat color="primary" @click="download" icon="mdi-download"> <q-btn
v-if="storeExam.isShowExamInfo"
dense
size="12px"
flat
color="primary"
@click="download"
icon="mdi-download"
>
<q-tooltip>ดาวนโหลดใบสมคร</q-tooltip> <q-tooltip>ดาวนโหลดใบสมคร</q-tooltip>
</q-btn> </q-btn>
</div> </div>
@ -17,11 +25,11 @@
<div class="">เลขประจำตวประชาชน :</div> <div class="">เลขประจำตวประชาชน :</div>
<div class="text-black text-bold q-pl-sm">{{ citizenId }}</div> <div class="text-black text-bold q-pl-sm">{{ citizenId }}</div>
</div> </div>
<div class="q-pt-xs row"> <div v-if="storeExam.isShowExamInfo" class="q-pt-xs row">
<div class="">เลขประจำตวผสมคร :</div> <div class="">เลขประจำตวผสมคร :</div>
<div class="text-black text-bold q-pl-sm">{{ examNumber }}</div> <div class="text-black text-bold q-pl-sm">{{ examNumber }}</div>
</div> </div>
<div class="q-pt-xs row"> <div v-if="storeExam.isShowExamInfo" class="q-pt-xs row">
<div class="">สนามสอบ :</div> <div class="">สนามสอบ :</div>
<div class="text-black text-bold q-pl-sm">{{ examSeat }}</div> <div class="text-black text-bold q-pl-sm">{{ examSeat }}</div>
</div> </div>
@ -131,7 +139,7 @@
</div> --> </div> -->
</div> </div>
</q-card> </q-card>
<q-card bordered flat class="col-12 row q-mt-md"> <!-- <q-card bordered flat class="col-12 row q-mt-md">
<div class="q-pa-md row"> <div class="q-pa-md row">
<div class="col-12 text-weight-bold row items-center"> <div class="col-12 text-weight-bold row items-center">
แบบสอบถามความพงพอใจ แบบสอบถามความพงพอใจ
@ -153,7 +161,7 @@
<div class="col-xs-8 col-sm-6 q-pr-xs">{{ review }}</div> <div class="col-xs-8 col-sm-6 q-pr-xs">{{ review }}</div>
</div> </div>
</div> </div>
</q-card> </q-card> -->
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -165,11 +173,13 @@ import http from '@/plugins/http'
import config from '@/app.config' import config from '@/app.config'
import { useCounterMixin } from '@/stores/mixin' import { useCounterMixin } from '@/stores/mixin'
import { useDataStore } from '@/stores/data' import { useDataStore } from '@/stores/data'
import { useExamDataStore } from '@/modules/01_exam/store'
import genReport from '@/plugins/genreport' import genReport from '@/plugins/genreport'
const $q = useQuasar() const $q = useQuasar()
const route = useRoute() const route = useRoute()
const storeExam = useExamDataStore()
const mixin = useCounterMixin() // const mixin = useCounterMixin() //
const { date2Thai, messageError } = mixin const { date2Thai, messageError } = mixin
const dataStore = useDataStore() const dataStore = useDataStore()
@ -217,7 +227,7 @@ const fetchStatus = async () => {
.get(config.API.candidateCard(examId.value, positionId.value)) .get(config.API.candidateCard(examId.value, positionId.value))
.then((res) => { .then((res) => {
const data = res.data.result const data = res.data.result
fullName.value = data.prefix ? data.prefix : '' + data.firstName + ' ' + data.lastName fullName.value = `${data.prefix ? data.prefix : ''}${data.firstName} ${data.lastName}`
examNumber.value = data.examIdenNumber examNumber.value = data.examIdenNumber
citizenId.value = data.citizenId citizenId.value = data.citizenId
examSeat.value = data.seatNumber examSeat.value = data.seatNumber

View file

@ -8,7 +8,7 @@
size="22px" size="22px"
color="orange-5" color="orange-5"
class="q-mr-sm" class="q-mr-sm"
/> />
</div> </div>
<div v-else-if="status == 'checkPoint'" class="text-orange-6 text-bold"> <div v-else-if="status == 'checkPoint'" class="text-orange-6 text-bold">
<q-icon <q-icon

View file

@ -3,6 +3,7 @@
<div> <div>
<Profile <Profile
:status="status" :status="status"
:isStatusRegister="isStatusRegister"
v-model:formInformation="formInformation" v-model:formInformation="formInformation"
v-model:formAddress="formAddress" v-model:formAddress="formAddress"
v-model:formOccupation="formOccupation" v-model:formOccupation="formOccupation"
@ -14,7 +15,7 @@
<div class="text-center q-pt-sm"> <div class="text-center q-pt-sm">
<q-checkbox <q-checkbox
v-model="acceptTermOfUse" v-model="acceptTermOfUse"
:disable="(status !== 'register' && status !== 'rejectRegister') || statusEdit" :disable="!isStatusRegister || statusEdit"
label="ข้าพเจ้าขอให้คำรับรองและแสดงความยินยอมตามเงื่อนไขทุกประการ" label="ข้าพเจ้าขอให้คำรับรองและแสดงความยินยอมตามเงื่อนไขทุกประการ"
/> />
</div> </div>
@ -54,7 +55,7 @@
outline outline
icon="mdi-content-save" icon="mdi-content-save"
@click="clickSave" @click="clickSave"
v-if="status === 'register' || status === 'rejectRegister'" v-if="isStatusRegister"
:disable="!acceptTermOfUse || statusEdit" :disable="!acceptTermOfUse || statusEdit"
/> />
<q-btn <q-btn
@ -62,8 +63,8 @@
class="q-ml-md" class="q-ml-md"
icon="mdi-check" icon="mdi-check"
label="ส่งใบสมัคร" label="ส่งใบสมัคร"
@click="dialogOpen" @click="status === 'checkRegister' && !stepPayment ? (secondDialog = true) : dialogOpen()"
v-if="status === 'register' || status === 'rejectRegister'" v-if="isStatusRegister"
:disable="!acceptTermOfUse || statusEdit" :disable="!acceptTermOfUse || statusEdit"
/> />
</div> </div>
@ -109,7 +110,37 @@
<q-btn class="" label="แก้ไข" color="red-5" outline @click="dialogClose" /> <q-btn class="" label="แก้ไข" color="red-5" outline @click="dialogClose" />
</div> </div>
<div class="col-6" align="center"> <div class="col-6" align="center">
<q-btn class="" label="ส่งใบสมัคร" color="primary" @click="okModalConfirm" /> <q-btn class="" label="ยืนยัน" color="primary" @click="okModalConfirm" />
</div>
</div>
</q-card-actions>
</q-card>
</q-dialog>
<q-dialog v-model="secondDialog" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 400px">
<q-card-section>
<!-- <div class="text-h6">เตอน</div> -->
</q-card-section>
<q-card-section>
<div class="text-body1 text-center text-red-8">
!!! โปรดตรวจสอบขอมลใหกตอง !!! <br />
อนสงใบสมคร
<br />
เมอสงใบสมครแลวจะแกไขไมได / สมครใหมไมได
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white text-teal">
<div class="col-12 row" align="center">
<div class="col-6" align="center">
<q-btn class="" label="แก้ไข" color="red-5" outline @click="secondDialog = false" />
</div>
<div class="col-6" align="center">
<q-btn class="" label="ส่งใบสมัคร" color="primary" @click="onSubmit" />
</div> </div>
</div> </div>
</q-card-actions> </q-card-actions>
@ -156,6 +187,14 @@ const props = defineProps({
positionLevel: { positionLevel: {
type: String, type: String,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
},
stepPayment: {
type: Boolean,
required: true
} }
}) })
@ -176,6 +215,7 @@ const formOccupation = ref<any>({})
const formContact = ref<any>({}) const formContact = ref<any>({})
const saveAuto = ref<boolean>(false) const saveAuto = ref<boolean>(false)
const dialog = ref<boolean>(false) const dialog = ref<boolean>(false)
const secondDialog = ref<boolean>(false)
onMounted(async () => { onMounted(async () => {
await fetchStatus() await fetchStatus()
@ -186,8 +226,6 @@ const dialogClose = () => {
} }
const dialogOpen = () => { const dialogOpen = () => {
console.log(defaultInformation.value)
dialog.value = true dialog.value = true
} }
@ -318,6 +356,10 @@ const saveData = async () => {
contacttel: defaultContact.value.contacttel contacttel: defaultContact.value.contacttel
}) })
.then(async () => { .then(async () => {
if (!props.stepPayment) {
dialog.value = false
secondDialog.value = true
}
success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ') success($q, 'บันทึกข้อมูลส่วนตัวสำเร็จ')
await saveForm() await saveForm()
await props.fetchStep() await props.fetchStep()
@ -354,8 +396,8 @@ const saveData = async () => {
loaderPage(true) loaderPage(true)
await http await http
.post(config.API.candidateId(examId.value, positionId.value), { .post(config.API.candidateId(examId.value, positionId.value), {
prefixId: defaultInformation.value.prefixId, // prefixId: defaultInformation.value.prefixId,
prefixName: defaultInformation.value.prefixId, prefixName: defaultInformation.value.prefix,
lastName: defaultInformation.value.lastname, lastName: defaultInformation.value.lastname,
dateOfBirth: dateOfBirth:
defaultInformation.value.birthDate == null defaultInformation.value.birthDate == null
@ -363,7 +405,8 @@ const saveData = async () => {
: dateToISO(defaultInformation.value.birthDate), : dateToISO(defaultInformation.value.birthDate),
citizenId: defaultInformation.value.cardid, citizenId: defaultInformation.value.cardid,
firstName: defaultInformation.value.firstname, firstName: defaultInformation.value.firstname,
religionId: defaultInformation.value.religionId, // religionId: defaultInformation.value.religionId,
religionName: defaultInformation.value.religionName,
nationality: defaultInformation.value.nationality, nationality: defaultInformation.value.nationality,
email: defaultInformation.value.email, email: defaultInformation.value.email,
mobilePhone: defaultInformation.value.phone, mobilePhone: defaultInformation.value.phone,
@ -400,7 +443,8 @@ const saveData = async () => {
educationScores: defaultEducation.value.educationScores, educationScores: defaultEducation.value.educationScores,
educationLevelHighId: defaultEducation.value.educationLevelHighId, educationLevelHighId: defaultEducation.value.educationLevelHighId,
contactprefixId: defaultContact.value.contactprefixId, // contactprefixId: defaultContact.value.contactprefixId,
contactprefixName: defaultContact.value.contactprefixName,
contactfirstname: defaultContact.value.contactfirstname, contactfirstname: defaultContact.value.contactfirstname,
contactlastname: defaultContact.value.contactlastname, contactlastname: defaultContact.value.contactlastname,
contactrelations: defaultContact.value.contactrelations, contactrelations: defaultContact.value.contactrelations,
@ -417,6 +461,16 @@ const saveData = async () => {
.finally(async () => {}) .finally(async () => {})
} }
} }
async function onSubmit() {
try {
await http.post(config.API.registerConfirm(examId.value, positionId.value))
await props.fetchStep()
// do something
} catch (error) {
console.error(error)
}
}
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View file

@ -12,14 +12,14 @@
<div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-xs"> <div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-xs">
<div class="col-xs-12"> <div class="col-xs-12">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
type="textarea" type="textarea"
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultAddress.address" v-model="defaultAddress.address"
:rules="[(val) => !!val || `${'กรุณากรอก ที่อยู่ตามทะเบียนบ้าน'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ที่อยู่ตามทะเบียนบ้าน'}`]"
:label="`${'ที่อยู่ตามทะเบียนบ้าน'}`" :label="`${'ที่อยู่ตามทะเบียนบ้าน'}`"
@ -27,11 +27,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก จังหวัด'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก จังหวัด'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultAddress.provinceId" v-model="defaultAddress.provinceId"
@ -46,11 +46,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultAddress.districtId" v-model="defaultAddress.districtId"
@ -65,11 +65,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก แขวง / ตำบล'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก แขวง / ตำบล'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultAddress.subdistrictId" v-model="defaultAddress.subdistrictId"
@ -84,12 +84,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'rejectRegister')" :readonly="!(status == 'rejectRegister')"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
v-model="defaultAddress.code" v-model="defaultAddress.code"
bottom-slots bottom-slots
:label="`${'รหัสไปรษณีย์'}`" :label="`${'รหัสไปรษณีย์'}`"
@ -109,7 +109,7 @@
val="1" val="1"
label="ใช่" label="ใช่"
dense dense
:disable="!(status == 'register' || status == 'rejectRegister')" :disable="!isStatusRegister"
/> />
<q-radio <q-radio
v-model="defaultAddress.same" v-model="defaultAddress.same"
@ -118,20 +118,20 @@
val="0" val="0"
label="ไม่" label="ไม่"
dense dense
:disable="!(status == 'register' || status == 'rejectRegister')" :disable="!isStatusRegister"
/> />
</div> </div>
<div class="col-xs-12" v-if="defaultAddress.same == '0'"> <div class="col-xs-12" v-if="defaultAddress.same == '0'">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
type="textarea" type="textarea"
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultAddress.addressC" v-model="defaultAddress.addressC"
:rules="[(val) => !!val || `${'กรุณากรอก ที่อยู่ปัจจุบัน'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ที่อยู่ปัจจุบัน'}`]"
:label="`${'ที่อยู่ปัจจุบัน'}`" :label="`${'ที่อยู่ปัจจุบัน'}`"
@ -139,11 +139,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'"> <div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก จังหวัด'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก จังหวัด'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultAddress.provinceIdC" v-model="defaultAddress.provinceIdC"
@ -158,11 +158,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'"> <div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultAddress.districtIdC" v-model="defaultAddress.districtIdC"
@ -177,11 +177,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'"> <div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก แขวง / ตำบล'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก แขวง / ตำบล'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultAddress.subdistrictIdC" v-model="defaultAddress.subdistrictIdC"
@ -196,13 +196,13 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'"> <div class="col-xs-12 col-sm-3 col-md-3" v-if="defaultAddress.same == '0'">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
dense dense
lazy-rules lazy-rules
bottom-slots bottom-slots
:readonly="!(status == 'rejectRegister')" :readonly="!(status == 'rejectRegister')"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
v-model="defaultAddress.codeC" v-model="defaultAddress.codeC"
:label="`${'รหัสไปรษณีย์'}`" :label="`${'รหัสไปรษณีย์'}`"
/> />
@ -235,6 +235,10 @@ const props = defineProps({
form: { form: {
type: Object, type: Object,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })
const emit = defineEmits(['update:form']) const emit = defineEmits(['update:form'])

View file

@ -14,8 +14,8 @@
:addData="false" :addData="false"
:bottom="true" :bottom="true"
:editBtn="false" :editBtn="false"
:boss="status == 'register' || status == 'rejectRegister'" :boss="isStatusRegister"
:editData="status == 'register' || status == 'rejectRegister'" :editData="isStatusRegister"
name="ประวัติการทำงาน (ตั้งแต่เริ่มปฏิบัติงานกับกรุงเทพมหานคร - ปัจจุบัน)" name="ประวัติการทำงาน (ตั้งแต่เริ่มปฏิบัติงานกับกรุงเทพมหานคร - ปัจจุบัน)"
icon="mdi-briefcase" icon="mdi-briefcase"
:is-showfilter="false" :is-showfilter="false"
@ -247,7 +247,7 @@
:validate="validateData" :validate="validateData"
:clickNext="clickNext" :clickNext="clickNext"
:clickPrevious="clickPrevious" :clickPrevious="clickPrevious"
:editData="status == 'register' || status == 'rejectRegister'" :editData="isStatusRegister"
v-model:editvisible="edit" v-model:editvisible="edit"
v-model:next="next" v-model:next="next"
v-model:previous="previous" v-model:previous="previous"
@ -281,6 +281,10 @@ const props = defineProps({
status: { status: {
type: String, type: String,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })

View file

@ -12,9 +12,9 @@
<div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-xs"> <div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-xs">
<div class="col-xs-12 col-sm-3 col-md-2"> <div class="col-xs-12 col-sm-3 col-md-2">
<!-- <q-select <!-- <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="status == 'register' || status == 'rejectRegister'"
dense dense
@ -28,11 +28,11 @@
:label="`${'คำนำหน้า'}`" :label="`${'คำนำหน้า'}`"
/> --> /> -->
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultContact.contactprefixName" v-model="defaultContact.contactprefixName"
@ -49,12 +49,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultContact.contactfirstname" v-model="defaultContact.contactfirstname"
:rules="[(val) => !!val || `${'กรุณากรอก ชื่อ'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ชื่อ'}`]"
:label="`${'ชื่อ'}`" :label="`${'ชื่อ'}`"
@ -62,12 +62,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultContact.contactlastname" v-model="defaultContact.contactlastname"
:rules="[(val) => !!val || `${'กรุณากรอก นามสกุล'}`]" :rules="[(val) => !!val || `${'กรุณากรอก นามสกุล'}`]"
:label="`${'นามสกุล'}`" :label="`${'นามสกุล'}`"
@ -75,12 +75,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-4"> <div class="col-xs-12 col-sm-3 col-md-4">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultContact.contactrelations" v-model="defaultContact.contactrelations"
:rules="[(val) => !!val || `${'กรุณากรอกความสัมพันธ์'}`]" :rules="[(val) => !!val || `${'กรุณากรอกความสัมพันธ์'}`]"
:label="`${'เกี่ยวข้องเป็น'}`" :label="`${'เกี่ยวข้องเป็น'}`"
@ -88,12 +88,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-4"> <div class="col-xs-12 col-sm-3 col-md-4">
<q-input <q-input
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultContact.contacttel" v-model="defaultContact.contacttel"
:label="`${'โทรศัพท์'}`" :label="`${'โทรศัพท์'}`"
:rules="[(val) => !!val || '* กรุณากรอกข้อมูลหมายเลขโทรศัพท์']" :rules="[(val) => !!val || '* กรุณากรอกข้อมูลหมายเลขโทรศัพท์']"
@ -134,6 +134,10 @@ const props = defineProps({
prefixOptions: { prefixOptions: {
type: Array as PropType<DataOption[]>, type: Array as PropType<DataOption[]>,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })
const emit = defineEmits(['update:form']) const emit = defineEmits(['update:form'])
@ -173,7 +177,7 @@ const fetchData = async () => {
defaultContact.value.contactlastname = data.contactLastname defaultContact.value.contactlastname = data.contactLastname
defaultContact.value.contactrelations = data.contactRelations defaultContact.value.contactrelations = data.contactRelations
defaultContact.value.contacttel = data.contactTel defaultContact.value.contacttel = data.contactTel
defaultContact.value.contactprefixName = data.contactPrefixName defaultContact.value.contactprefixName = data.contactPrefix
} }
}) })
.catch((e) => { .catch((e) => {

View file

@ -13,10 +13,10 @@
<div class="col-12 row q-col-gutter-sm"> <div class="col-12 row q-col-gutter-sm">
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
emit-value emit-value
@ -32,13 +32,13 @@
</div> </div>
<div class="col-xs-12 col-sm-3" v-if="showEducationName"> <div class="col-xs-12 col-sm-3" v-if="showEducationName">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultEducation.educationName" v-model="defaultEducation.educationName"
:rules="[(val) => !!val || `${'กรุณากรอก ชื่อปริญญา'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ชื่อปริญญา'}`]"
:label="`${'ชื่อปริญญา'}`" :label="`${'ชื่อปริญญา'}`"
@ -46,13 +46,13 @@
</div> </div>
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultEducation.educationMajor" v-model="defaultEducation.educationMajor"
:rules="[(val) => !!val || `${'กรุณากรอก สาขาวิชา/วิชาเอก'}`]" :rules="[(val) => !!val || `${'กรุณากรอก สาขาวิชา/วิชาเอก'}`]"
:label="`${'สาขาวิชา/วิชาเอก'}`" :label="`${'สาขาวิชา/วิชาเอก'}`"
@ -60,13 +60,13 @@
</div> </div>
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultEducation.educationLocation" v-model="defaultEducation.educationLocation"
:rules="[(val) => !!val || `${'กรุณากรอก ชื่อสถานศึกษา'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ชื่อสถานศึกษา'}`]"
:label="`${'ชื่อสถานศึกษา'}`" :label="`${'ชื่อสถานศึกษา'}`"
@ -74,10 +74,10 @@
</div> </div>
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
emit-value emit-value
@ -92,14 +92,14 @@
</div> </div>
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<datepicker <datepicker
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
v-model="defaultEducation.educationEndDate" v-model="defaultEducation.educationEndDate"
:locale="'th'" :locale="'th'"
autoApply autoApply
:enableTimePicker="false" :enableTimePicker="false"
week-start="0" week-start="0"
:max-date="dateCondition" :max-date="dateCondition"
:disabled="!(status == 'register' || status == 'rejectRegister')" :disabled="!isStatusRegister"
> >
<template #year="{ year }"> <template #year="{ year }">
{{ year + 543 }} {{ year + 543 }}
@ -109,12 +109,12 @@
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:model-value=" :model-value="
defaultEducation.educationEndDate == null defaultEducation.educationEndDate == null
? null ? null
@ -141,13 +141,13 @@
</div> </div>
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
:readonly="!isStatusRegister"
:borderless="!isStatusRegister"
dense dense
lazy-rules lazy-rules
type="number" type="number"
:readonly="!(status == 'register' || status == 'rejectRegister')"
:borderless="!(status == 'register' || status == 'rejectRegister')"
v-model="defaultEducation.educationScores" v-model="defaultEducation.educationScores"
:rules="[(val) => !!val || `${'กรุณากรอก คะแนนเฉลี่ยสะสม'}`]" :rules="[(val) => !!val || `${'กรุณากรอก คะแนนเฉลี่ยสะสม'}`]"
:label="`${'คะแนนเฉลี่ยสะสม'}`" :label="`${'คะแนนเฉลี่ยสะสม'}`"
@ -155,17 +155,17 @@
</div> </div>
<div class="col-xs-12 col-sm-3"> <div class="col-xs-12 col-sm-3">
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
emit-value emit-value
map-options map-options
option-label="name" option-label="name"
option-value="id" option-value="id"
:options="educationLevelOptions" :options="educationLevelHigherOptions"
v-model="defaultEducation.educationLevelHighId" v-model="defaultEducation.educationLevelHighId"
:rules="[(val) => !!val || `${'กรุณาเลือก วุฒิการศึกษาสูงสุด'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก วุฒิการศึกษาสูงสุด'}`]"
:label="`${'วุฒิการศึกษาสูงสุด'}`" :label="`${'วุฒิการศึกษาสูงสุด'}`"
@ -203,6 +203,14 @@ const props = defineProps({
educationLevelOptions: { educationLevelOptions: {
type: Array as PropType<DataOption[]>, type: Array as PropType<DataOption[]>,
required: true required: true
},
educationLevelHigherOptions: {
type: Array as PropType<DataOption[]>,
required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })

View file

@ -14,14 +14,14 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-4"> <div class="col-xs-12 col-sm-3 col-md-4">
<q-field <q-field
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
bottom-slots bottom-slots
:stack-label="defaultInformation.cardid != null" :stack-label="defaultInformation.cardid != null"
label="เลขประจำตัวประชาชน" label="เลขประจำตัวประชาชน"
dense dense
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[ :rules="[
(val) => (val) =>
(val != null && val.length == 13) || `${'กรุณากรอกเลขประจำตัวประชาชนให้ถูกต้อง'}`, (val != null && val.length == 13) || `${'กรุณากรอกเลขประจำตัวประชาชนให้ถูกต้อง'}`,
@ -48,15 +48,15 @@
</template> </template>
</q-field> </q-field>
<!-- <q-input <!-- <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
type="tel" type="tel"
mask="#############" mask="#############"
:counter="status == 'register' || status == 'rejectRegister' ? true : false" :counter="status == 'register' || status == 'rejectRegister' ? true : false"
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultInformation.cardid" v-model="defaultInformation.cardid"
maxlength="13" maxlength="13"
:rules="[ :rules="[
@ -68,11 +68,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-2"> <div class="col-xs-12 col-sm-3 col-md-2">
<!-- <q-select <!-- <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultInformation.prefixId" v-model="defaultInformation.prefixId"
@ -86,11 +86,11 @@
/> --> /> -->
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก คำนำหน้า'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultInformation.prefix" v-model="defaultInformation.prefix"
@ -107,12 +107,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultInformation.firstname" v-model="defaultInformation.firstname"
:rules="[(val) => !!val || `${'กรุณากรอก ชื่อ'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ชื่อ'}`]"
:label="`${'ชื่อ (ภาษาไทย)'}`" :label="`${'ชื่อ (ภาษาไทย)'}`"
@ -120,12 +120,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultInformation.lastname" v-model="defaultInformation.lastname"
:rules="[(val) => !!val || `${'กรุณากรอก นามสกุล'}`]" :rules="[(val) => !!val || `${'กรุณากรอก นามสกุล'}`]"
:label="`${'นามสกุล (ภาษาไทย)'}`" :label="`${'นามสกุล (ภาษาไทย)'}`"
@ -134,11 +134,11 @@
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<!-- :borderless="!false" --> <!-- :borderless="!false" -->
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
dense dense
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
lazy-rules lazy-rules
v-model="defaultInformation.nationality" v-model="defaultInformation.nationality"
:options="opNat" :options="opNat"
@ -148,11 +148,11 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<!-- <q-select <!-- <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก ศาสนา'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก ศาสนา'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultInformation.religionId" v-model="defaultInformation.religionId"
@ -164,11 +164,11 @@
:label="`${'ศาสนา'}`" :label="`${'ศาสนา'}`"
/> --> /> -->
<q-select <q-select
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:rules="[(val) => !!val || `${'กรุณาเลือก ศาสนา'}`]" :rules="[(val) => !!val || `${'กรุณาเลือก ศาสนา'}`]"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
v-model="defaultInformation.religionName" v-model="defaultInformation.religionName"
@ -203,12 +203,12 @@
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:model-value=" :model-value="
defaultInformation.birthDate == null defaultInformation.birthDate == null
? null ? null
@ -236,13 +236,13 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
dense dense
lazy-rules lazy-rules
bottom-slots bottom-slots
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
:readonly="!(status == 'rejectRegister')" :readonly="!(status == 'rejectRegister')"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
:model-value=" :model-value="
defaultInformation.birthDate == null ? null : calAge(defaultInformation.birthDate) defaultInformation.birthDate == null ? null : calAge(defaultInformation.birthDate)
" "
@ -251,12 +251,12 @@
</div> </div>
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultInformation.tel" v-model="defaultInformation.tel"
:label="`${'โทรศัพท์'}`" :label="`${'โทรศัพท์'}`"
:rules="[(val) => !!val || '* กรุณากรอกข้อมูลหมายเลขโทรศัพท์']" :rules="[(val) => !!val || '* กรุณากรอกข้อมูลหมายเลขโทรศัพท์']"
@ -271,16 +271,16 @@
</div> </div>
<!-- <div class="col-xs-12 col-sm-3 col-md-3"> <!-- <div class="col-xs-12 col-sm-3 col-md-3">
<q-input <q-input
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
:counter="status == 'register' || status == 'rejectRegister' ? true : false" :counter="status == 'register' || status == 'rejectRegister' ? true : false"
lazy-rules lazy-rules
type="tel" type="tel"
mask="##########" mask="##########"
maxlength="10" maxlength="10"
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultInformation.phone" v-model="defaultInformation.phone"
:rules="[ :rules="[
(val) => val.length == 10 || `${'กรุณากรอก โทรศัพท์มือถือ'}`, (val) => val.length == 10 || `${'กรุณากรอก โทรศัพท์มือถือ'}`,
@ -292,13 +292,13 @@
<div class="col-xs-12 col-sm-3 col-md-3"> <div class="col-xs-12 col-sm-3 col-md-3">
<!-- style="padding: 0 12px" --> <!-- style="padding: 0 12px" -->
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
dense dense
lazy-rules lazy-rules
bottom-slots bottom-slots
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
:readonly="!(status == 'rejectRegister')" :readonly="!(status == 'rejectRegister')"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultInformation.email" v-model="defaultInformation.email"
label="E-mail address" label="E-mail address"
/> />
@ -339,11 +339,11 @@
</div> </div>
<!-- <div class="col-xs-12 col-sm-9 col-md-12"> <!-- <div class="col-xs-12 col-sm-9 col-md-12">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!(status == 'register' || status == 'rejectRegister')"
v-model="defaultInformation.knowledge" v-model="defaultInformation.knowledge"
label="ความรู้ความสามารถพิเศษ" label="ความรู้ความสามารถพิเศษ"
@ -447,6 +447,10 @@ const props = defineProps({
form: { form: {
type: Object, type: Object,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })
const emit = defineEmits(['update:form']) const emit = defineEmits(['update:form'])
@ -520,8 +524,8 @@ const fetchData = async () => {
defaultInformation.value.phone = data.mobilePhone defaultInformation.value.phone = data.mobilePhone
defaultInformation.value.tel = data.telephone defaultInformation.value.tel = data.telephone
defaultInformation.value.knowledge = data.knowledge defaultInformation.value.knowledge = data.knowledge
defaultInformation.value.prefix = data.prefixName defaultInformation.value.prefix = data.prefix
defaultInformation.value.religionName = data.religionName defaultInformation.value.religionName = data.religion
}) })
.catch(() => { .catch(() => {
defaultInformation.value.email = defaultInformation.value.email =

View file

@ -16,33 +16,33 @@
label="ลูกจ้างประจำ" label="ลูกจ้างประจำ"
color="teal" color="teal"
val="prem" val="prem"
:disable="!(status == 'register' || status == 'rejectRegister')" :disable="!isStatusRegister"
/> />
<q-radio <q-radio
v-model="defaultOccupation.positionType" v-model="defaultOccupation.positionType"
label="ลูกจ้างชั่วคราว" label="ลูกจ้างชั่วคราว"
color="teal" color="teal"
val="temp" val="temp"
:disable="!(status == 'register' || status == 'rejectRegister')" :disable="!isStatusRegister"
/> />
<q-radio <q-radio
v-model="defaultOccupation.positionType" v-model="defaultOccupation.positionType"
label="ผู้ปฏิบัติงานอื่นในกรุงเทพมหานคร" label="ผู้ปฏิบัติงานอื่นในกรุงเทพมหานคร"
color="teal" color="teal"
val="other" val="other"
:disable="!(status == 'register' || status == 'rejectRegister')" :disable="!isStatusRegister"
/> />
</div> </div>
<div class="col-12 row"> <div class="col-12 row">
<div class="col-3"> <div class="col-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultOccupation.position" v-model="defaultOccupation.position"
:rules="[(val) => !!val || `${'กรุณากรอก ชื่อตำแหน่ง'}`]" :rules="[(val) => !!val || `${'กรุณากรอก ชื่อตำแหน่ง'}`]"
:label="`${'ชื่อตำแหน่ง'}`" :label="`${'ชื่อตำแหน่ง'}`"
@ -51,14 +51,14 @@
<div class="col-3"> <div class="col-3">
<CurrencyInput <CurrencyInput
class="q-pl-sm" class="q-pl-sm"
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
:options="{ :options="{
currency: 'THB' currency: 'THB'
}" }"
lazy-rules lazy-rules
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultOccupation.salary" v-model="defaultOccupation.salary"
:rules="[(val:number| undefined) => !!val || `${'กรุณากรอก เงินเดือน'}`]" :rules="[(val:number| undefined) => !!val || `${'กรุณากรอก เงินเดือน'}`]"
:label="`${'เงินเดือน'}`" :label="`${'เงินเดือน'}`"
@ -68,13 +68,13 @@
<div class="col-12 row"> <div class="col-12 row">
<div class="col-3"> <div class="col-3">
<q-input <q-input
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultOccupation.group" v-model="defaultOccupation.group"
:rules="[(val) => !!val || `${'กรุณากรอก กลุ่ม/ฝ่าย'}`]" :rules="[(val) => !!val || `${'กรุณากรอก กลุ่ม/ฝ่าย'}`]"
:label="`${'กลุ่ม/ฝ่าย'}`" :label="`${'กลุ่ม/ฝ่าย'}`"
@ -83,13 +83,13 @@
<div class="col-3"> <div class="col-3">
<q-input <q-input
class="q-pl-sm" class="q-pl-sm"
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultOccupation.pile" v-model="defaultOccupation.pile"
:rules="[(val) => !!val || `${'กรุณากรอก กอง'}`]" :rules="[(val) => !!val || `${'กรุณากรอก กอง'}`]"
:label="`${'กอง'}`" :label="`${'กอง'}`"
@ -98,13 +98,13 @@
<div class="col-3"> <div class="col-3">
<q-input <q-input
class="q-pl-sm" class="q-pl-sm"
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
lazy-rules lazy-rules
autogrow autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')" :readonly="!isStatusRegister"
:borderless="!(status == 'register' || status == 'rejectRegister')" :borderless="!isStatusRegister"
v-model="defaultOccupation.org" v-model="defaultOccupation.org"
:rules="[(val) => !!val || `${'กรุณากรอก สังกัด'}`]" :rules="[(val) => !!val || `${'กรุณากรอก สังกัด'}`]"
:label="`${'สังกัด'}`" :label="`${'สังกัด'}`"
@ -113,26 +113,22 @@
<div class="col-3"> <div class="col-3">
<q-input <q-input
class="q-pl-sm" class="q-pl-sm"
:class="getClass(status == 'register' || status == 'rejectRegister')" :class="getClass(isStatusRegister)"
:outlined="status == 'register' || status == 'rejectRegister'" :outlined="isStatusRegister"
dense dense
:counter="status == 'register' || status == 'rejectRegister' ? true : false"
maxlength="10"
lazy-rules lazy-rules
type="tel" :readonly="!isStatusRegister"
mask="##########" :borderless="!isStatusRegister"
autogrow
:readonly="!(status == 'register' || status == 'rejectRegister')"
:borderless="!(status == 'register' || status == 'rejectRegister')"
v-model="defaultOccupation.tel" v-model="defaultOccupation.tel"
:rules="[ :rules="[(val) => !!val || '* กรุณากรอกข้อมูลหมายเลขโทรศัพท์']"
(val) => !!val || '* กรุณากรอกข้อมูลหมายเลขโทรศัพท์',
(val) =>
(val.length >= 9 && val.length <= 10 && val.startsWith('0')) ||
'กรุณากรอกข้อมูลหมายเลขโทรศัพท์ให้ถูกต้อง'
]"
:label="`${'เบอร์โทรที่ทำงาน'}`" :label="`${'เบอร์โทรที่ทำงาน'}`"
/> />
<!-- :counter="isStatusRegister ? true : false" -->
<!-- (val) =>
(val.length >= 9 && val.length <= 10 && val.startsWith('0')) ||
'กรุณากรอกข้อมูลหมายเลขโทรศัพท์ให้ถูกต้อง' -->
<!-- type="tel" mask="##########" autogrow -->
<!-- maxlength="10" -->
</div> </div>
</div> </div>
</div> </div>
@ -159,6 +155,10 @@ const props = defineProps({
form: { form: {
type: Object, type: Object,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })
const emit = defineEmits(['update:form']) const emit = defineEmits(['update:form'])

View file

@ -7,6 +7,7 @@
:provinceOptions="provinceOptions" :provinceOptions="provinceOptions"
:status="status" :status="status"
v-model:form="formInformation" v-model:form="formInformation"
:isStatusRegister="isStatusRegister"
/> />
</div> </div>
@ -19,29 +20,45 @@
<div class="q-px-sm"> <div class="q-px-sm">
<Education <Education
:status="status" :status="status"
:isStatusRegister="isStatusRegister"
v-model:form="formEducation" v-model:form="formEducation"
:educationLevelOptions="educationLevelOptions" :educationLevelOptions="educationLevelOptions"
:educationLevelHigherOptions="educationLevelHigherOptions"
/> />
</div> </div>
<q-separator class="q-my-lg bg-gray" size="5px" /> <q-separator class="q-my-lg bg-gray" size="5px" />
<div class="q-px-sm"> <div class="q-px-sm">
<Occupation :status="status" v-model:form="formOccupation" /> <Occupation
:status="status"
:isStatusRegister="isStatusRegister"
v-model:form="formOccupation"
/>
</div> </div>
<q-separator class="q-my-lg bg-gray" size="5px" /> <q-separator class="q-my-lg bg-gray" size="5px" />
<div class="q-px-sm"> <div class="q-px-sm">
<Career :status="status" /> <Career :status="status" :isStatusRegister="isStatusRegister" />
</div> </div>
<q-separator class="q-my-lg bg-gray" size="5px" /> <q-separator class="q-my-lg bg-gray" size="5px" />
<div class="q-px-sm"> <div class="q-px-sm">
<Address :provinceOptions="provinceOptions" :status="status" v-model:form="formAddress" /> <Address
:provinceOptions="provinceOptions"
:status="status"
v-model:form="formAddress"
:isStatusRegister="isStatusRegister"
/>
</div> </div>
<q-separator class="q-my-lg bg-gray" size="5px" /> <q-separator class="q-my-lg bg-gray" size="5px" />
<div class="q-px-sm"> <div class="q-px-sm">
<Contact :status="status" :prefixOptions="prefixOptions" v-model:form="formContact" /> <Contact
:status="status"
:prefixOptions="prefixOptions"
v-model:form="formContact"
:isStatusRegister="isStatusRegister"
/>
</div> </div>
<q-separator class="q-my-lg bg-gray" size="5px" /> <q-separator class="q-my-lg bg-gray" size="5px" />
@ -91,6 +108,10 @@ const props = defineProps({
formContact: { formContact: {
type: Object, type: Object,
required: true required: true
},
isStatusRegister: {
type: Boolean,
required: true
} }
}) })
const emit = defineEmits([ const emit = defineEmits([
@ -111,6 +132,7 @@ const prefixOptions = ref<DataOption[]>([])
const religionOptions = ref<DataOption[]>([]) const religionOptions = ref<DataOption[]>([])
const provinceOptions = ref<DataOption[]>([]) const provinceOptions = ref<DataOption[]>([])
const educationLevelOptions = ref<DataOption[]>([]) const educationLevelOptions = ref<DataOption[]>([])
const educationLevelHigherOptions = ref<DataOption[]>([])
const formInformation = ref<any>({}) const formInformation = ref<any>({})
const formAddress = ref<any>({}) const formAddress = ref<any>({})
const formEducation = ref<any>({}) const formEducation = ref<any>({})
@ -166,6 +188,8 @@ const fetchPerson = async () => {
provinceOptions.value = optionProvince provinceOptions.value = optionProvince
let optionEducationLevel: DataOption[] = [] let optionEducationLevel: DataOption[] = []
let optionEducationLevelHigher: DataOption[] = []
let filterEducationLevels = data.educationLevels let filterEducationLevels = data.educationLevels
if (examStore.educationLevel === 'BACHELOR') { if (examStore.educationLevel === 'BACHELOR') {
@ -179,7 +203,12 @@ const fetchPerson = async () => {
filterEducationLevels.map((r: any) => { filterEducationLevels.map((r: any) => {
optionEducationLevel.push({ id: r.id.toString(), name: r.name.toString() }) optionEducationLevel.push({ id: r.id.toString(), name: r.name.toString() })
}) })
data.educationLevels.map((r: any) => {
optionEducationLevelHigher.push({ id: r.id.toString(), name: r.name.toString() })
})
educationLevelOptions.value = optionEducationLevel educationLevelOptions.value = optionEducationLevel
educationLevelHigherOptions.value = optionEducationLevelHigher
}) })
.catch((e) => { .catch((e) => {
messageError($q, e) messageError($q, e)

View file

@ -31,6 +31,7 @@ export const useExamDataStore = defineStore('exam', () => {
const examInfo = ref<DataExam>() const examInfo = ref<DataExam>()
const educationLevel = ref<string>('') const educationLevel = ref<string>('')
const isShowExamInfo = ref<boolean>(false)
const consend = ref<boolean>(false) const consend = ref<boolean>(false)
const status = ref<string>('') const status = ref<string>('')
@ -57,6 +58,7 @@ export const useExamDataStore = defineStore('exam', () => {
status, status,
changeStatus, changeStatus,
examInfo, examInfo,
educationLevel educationLevel,
isShowExamInfo
} }
}) })

View file

@ -15,6 +15,7 @@
{{ `ครั้งที่${round}/${yearly == null ? '' : yearly + 543}` }} {{ `ครั้งที่${round}/${yearly == null ? '' : yearly + 543}` }}
</q-toolbar-title> </q-toolbar-title>
</q-toolbar> --> </q-toolbar> -->
<q-stepper <q-stepper
v-model="step" v-model="step"
ref="stepper" ref="stepper"
@ -41,11 +42,13 @@
</div> </div>
</q-card-actions> </q-card-actions>
<ExamForm <ExamForm
:isStatusRegister="isStatusRegister"
:fetchStep="fetchStep" :fetchStep="fetchStep"
:status="status" :status="status"
:editorConfirm="editorConfirm" :editorConfirm="editorConfirm"
:position="position" :position="position"
:positionLevel="positionLevel" :positionLevel="positionLevel"
:stepPayment="stepPayment"
/> />
</q-card> </q-card>
</q-step> </q-step>
@ -117,7 +120,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref } from 'vue' import { computed, onMounted, ref } from 'vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { useCounterMixin } from '@/stores/mixin' import { useCounterMixin } from '@/stores/mixin'
import { useDataStore } from '@/stores/data' import { useDataStore } from '@/stores/data'
@ -226,12 +229,13 @@ const fetchStep = async () => {
const data = res.data.result const data = res.data.result
rejectMessage.value = data.rejectDetail rejectMessage.value = data.rejectDetail
status.value = data.status status.value = data.status
storeExam.isShowExamInfo = data.isShowExamInfo || false
if (status.value == 'register') { if (status.value == 'register') {
stepRaw.value = 2 stepRaw.value = 2
step.value = 2 step.value = 2
} else if (status.value == 'checkRegister') { } else if (status.value == 'checkRegister') {
stepRaw.value = 3 stepRaw.value = 2
step.value = 3 step.value = 2
} else if (status.value == 'payment') { } else if (status.value == 'payment') {
stepRaw.value = 3 stepRaw.value = 3
step.value = 3 step.value = 3
@ -257,7 +261,8 @@ const fetchStep = async () => {
if ( if (
stepPayment.value == false && stepPayment.value == false &&
status.value != 'register' && status.value != 'register' &&
status.value != 'rejectRegister' status.value != 'rejectRegister' &&
status.value != 'checkRegister'
) { ) {
stepRaw.value = 4 stepRaw.value = 4
step.value = 4 step.value = 4
@ -304,6 +309,13 @@ const consendOk = () => {
const logout = () => { const logout = () => {
keycloak.logout() keycloak.logout()
} }
const isStatusRegister = computed(() => {
const statuses = ['register', 'rejectRegister']
return stepPayment.value
? statuses.includes(status.value)
: [...statuses, 'checkRegister'].includes(status.value)
})
</script> </script>
<style> <style>
.q-stepper { .q-stepper {

View file

@ -487,7 +487,7 @@ export const useCounterMixin = defineStore('mixin', () => {
case 'register': case 'register':
return 'ยังไม่สมัครสอบ' return 'ยังไม่สมัครสอบ'
case 'checkRegister': case 'checkRegister':
return 'รอยืนยันสถานะการสมัคร' return 'ส่งใบสมัครแล้ว'
case 'payment': case 'payment':
return 'ชำระค่าสมัครสอบ' return 'ชำระค่าสมัครสอบ'
case 'rejectRegister': case 'rejectRegister':
@ -497,7 +497,7 @@ export const useCounterMixin = defineStore('mixin', () => {
case 'rejectPayment': case 'rejectPayment':
return 'หลักฐานชำระเงินไม่ถูกต้อง' return 'หลักฐานชำระเงินไม่ถูกต้อง'
case 'checkSeat': case 'checkSeat':
return 'ได้รับใบสมัครแล้ว' return 'ส่งใบสมัครแล้ว'
case 'checkPoint': case 'checkPoint':
return 'ติดตามประกาศทาง Website' return 'ติดตามประกาศทาง Website'
case 'done': case 'done':