hrms-recruit/src/modules/01_exam/components/ExamCard.vue

250 lines
9.4 KiB
Vue
Raw Normal View History

2023-04-28 00:08:35 +07:00
<template>
<q-card bordered flat class="col-12 row" id="print">
<div class="text-bold col-12 row q-px-md q-py-sm items-center bg-grey-2">
ใบทานขอมลการสมคร
2023-04-28 00:08:35 +07:00
<q-space />
<q-btn dense size="12px" flat color="primary" @click="download" icon="mdi-download">
2023-10-04 16:49:13 +07:00
<q-tooltip>มพใบทานขอม</q-tooltip>
2023-04-28 00:08:35 +07:00
</q-btn>
</div>
<div class="col-12 row q-pa-md">
<div class="col-xs-12 col-sm-8">
<div class="q-pt-xs row">
<div class=""> :</div>
<div class="text-black text-bold q-pl-sm">{{ fullName }}</div>
2023-04-28 00:08:35 +07:00
</div>
<div class="q-pt-xs row">
<div class="">เลขประจำตวประชาชน :</div>
<div class="text-black text-bold q-pl-sm">{{ citizenId }}</div>
</div>
<div class="q-pt-xs row">
<div class="">เลขประจำตวสอบ :</div>
<div class="text-black text-bold q-pl-sm">{{ examNumber }}</div>
</div>
<div class="q-pt-xs row">
<div class="">เลขทงสอบ :</div>
<div class="text-black text-bold q-pl-sm">{{ examSeat }}</div>
</div>
<div class="row">
<div class="">นสอบ :</div>
<div class="text-black text-bold q-pl-sm">25 .. 2568</div>
</div>
<div class="row">
<div class="">ครงทสอบ :</div>
<div class="text-black text-bold q-pl-sm">1</div>
</div>
<div class="row">
<div class="">ดขอสอบ :</div>
<div class="text-black text-bold q-pl-sm">ทดสอบ</div>
</div>
2023-04-28 00:08:35 +07:00
</div>
<div class="col-xs-12 col-sm-4 row justify-center">
<q-img
v-if="avatar == ''"
class="rounded-borders"
src="@/assets/avatar_user.jpg"
:ratio="1"
style="width: 150px; height: 600px"
/>
<q-img
v-else
class="rounded-borders"
:src="avatar"
:ratio="1"
style="width: 150px; height: 600px"
/>
2023-04-28 00:08:35 +07:00
</div>
</div>
</q-card>
<q-card bordered flat class="q-pa-md q-mt-sm">
2023-10-04 09:46:36 +07:00
<div class="col-12 text-weight-bold" v-if="scoreSumFull != 0">ผลคะแนนสอบ</div>
<div class="row items-center q-gutter-y-sm col-12" v-if="scoreSumFull != 0">
<div class="col-xs-4 col-sm-5 text-weight-medium text-grey-7">ประเภท</div>
<div class="col-xs-3 col-sm-2 text-primary text-weight-bold text-center">คะแนนเต</div>
<div class="col-xs-3 col-sm-2 text-primary text-weight-bold text-center">คะแนนทได</div>
<div class="col-xs-2 col-sm-2 text-primary text-weight-bold"></div>
<div class="col-xs-4 col-sm-5 text-grey-7">ภาค </div>
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreAFull }}
2023-04-28 00:08:35 +07:00
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreA }}
2023-06-30 17:57:40 +07:00
</div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>
<div class="col-xs-4 col-sm-5 text-grey-7">ภาค </div>
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreBFull }}
2023-06-30 17:57:40 +07:00
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreB }}
2023-06-30 17:57:40 +07:00
</div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>
2023-04-28 00:08:35 +07:00
<div class="col-xs-4 col-sm-5 text-grey-7">ภาค </div>
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreCFull }}
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreC }}
</div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>
2023-04-28 00:08:35 +07:00
<div class="col-xs-4 col-sm-5 text-grey-7">รวมทงหมด</div>
2023-09-26 13:01:53 +07:00
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreSumFull }}
</div>
2023-09-26 13:01:53 +07:00
<div class="col-xs-3 col-sm-2 q-pr-xs text-center">
{{ scoreSum }}
</div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>
2023-04-28 00:08:35 +07:00
<div class="col-xs-4 col-sm-5 text-grey-7">ลำดบทสอบได</div>
<div class="col-xs-8 col-sm-6 q-pr-xs text-grey-7">
{{ number }}
</div>
<div class="col-xs-4 col-sm-5 text-weight-bold q-pt-sm">ผลการสอบ</div>
<div class="col-xs-8 col-sm-6 q-pr-xs text-weight-bold text-subtitle1">
<span :class="examResultinscore != 'ได้' ? 'text-red' : 'text-positive'">{{
examResultinscore
}}</span>
</div>
2023-10-04 09:46:36 +07:00
</div>
<div class="row items-center q-gutter-y-sm col-12 q-pt-md">
<div class="col-xs-6 col-sm-5 text-grey-7">ตำแหน</div>
<div class="col-xs-6 col-sm-7 q-pr-xs">
{{ position }}
</div>
<div class="col-xs-6 col-sm-5 text-grey-7">ระด</div>
<div class="col-xs-6 col-sm-7 q-pr-xs">
{{ positionLevel }}
</div>
- [x] หมดเขตรับสมัตรสอบ เพิ่ม icon กับสี - [ ] ขาด รวมระยะเวลา > เพิ่ม row รวมระยะเวลา ในตารางในแล้ว เหลือแค่ต่อ api ค่ารวม - [x] ปฏิทินเพิ่ม > ประวัติการทำงาน > ไม่สามารถลื่นลงมาข้างล่างได้ พอเอาเม้าส์ไปที่ bar ด้านข้าง ปฏิทินก้ปิด - [x] เลขบัตร > เมื่อกดเข้ามาอีกครั้ง เลขควรติดมาด้วย - [ ] เลขประจำตัวสอบ ไม่ออก - [x] ลำดับที่สอบได้ รอแก้เอาออกจากรอบนี้ - [ ] อายุถ้าไม่ได้ใส่ค่า ระบบไม่เช็ค แต่ถ้าเลือกวัน มันจะเช็คช่วง - [x] คัดเลือกสำเร็จ เปลี่ยนเป็น ผลการสอบ - [x] สมัครสอบสำเร็จ เปลี่ยนเป็น ใบทานข้อมูลการสมัคร - [ ] เพิ่ม ui ในใบสมัคร ข้อ 7 บุคคลที่สามารถติดต่อได้ และเรียงลำดับตามเอกสาร > เพิ่ม ข้อมูลส่วนบุคคลที่สามารถติดต่อได้แล้ว เหลือแค่ต่อ api - [x] เปลี่ยนข้อความเป็น กรุณากรอกเลขประจำตัวประชาชนให้ถูกต้อง - [x] หัวข้อ ขาดระดับท้ายตำแหน่ง
2023-10-05 14:31:39 +07:00
<!-- <div class="col-xs-6 col-sm-5 text-grey-7">ลำดบทสอบได</div>
<div class="col-xs-6 col-sm-7 q-pr-xs">
{{ number }}
- [x] หมดเขตรับสมัตรสอบ เพิ่ม icon กับสี - [ ] ขาด รวมระยะเวลา > เพิ่ม row รวมระยะเวลา ในตารางในแล้ว เหลือแค่ต่อ api ค่ารวม - [x] ปฏิทินเพิ่ม > ประวัติการทำงาน > ไม่สามารถลื่นลงมาข้างล่างได้ พอเอาเม้าส์ไปที่ bar ด้านข้าง ปฏิทินก้ปิด - [x] เลขบัตร > เมื่อกดเข้ามาอีกครั้ง เลขควรติดมาด้วย - [ ] เลขประจำตัวสอบ ไม่ออก - [x] ลำดับที่สอบได้ รอแก้เอาออกจากรอบนี้ - [ ] อายุถ้าไม่ได้ใส่ค่า ระบบไม่เช็ค แต่ถ้าเลือกวัน มันจะเช็คช่วง - [x] คัดเลือกสำเร็จ เปลี่ยนเป็น ผลการสอบ - [x] สมัครสอบสำเร็จ เปลี่ยนเป็น ใบทานข้อมูลการสมัคร - [ ] เพิ่ม ui ในใบสมัคร ข้อ 7 บุคคลที่สามารถติดต่อได้ และเรียงลำดับตามเอกสาร > เพิ่ม ข้อมูลส่วนบุคคลที่สามารถติดต่อได้แล้ว เหลือแค่ต่อ api - [x] เปลี่ยนข้อความเป็น กรุณากรอกเลขประจำตัวประชาชนให้ถูกต้อง - [x] หัวข้อ ขาดระดับท้ายตำแหน่ง
2023-10-05 14:31:39 +07:00
</div> -->
<div class="col-xs-6 col-sm-5 text-grey-7">นหมดอายญชดเลอก</div>
<div class="col-xs-6 col-sm-7 q-pr-xs">
{{ score_expired == null ? '-' : date2Thai(score_expired) }}
2023-04-28 00:08:35 +07:00
</div>
</div>
</q-card>
<q-card bordered flat class="col-12 row q-mt-md">
<div class="q-pa-md row">
<div class="col-12 text-weight-bold row items-center">
แบบสอบถามความพงพอใจ
<q-space />
</div>
<div class="row items-center q-gutter-y-sm col-12">
<div class="col-xs-4 col-sm-5 q-pr-sm text-grey-7">คะแนนความพงพอใจ</div>
<div class="col-xs-8 col-sm-6 q-pr-xs">
<q-rating
v-model="reviewPoint"
:max="reviewPoint"
size="2em"
color="orange"
class="full-width"
readonly
/>
</div>
<div class="col-xs-4 col-sm-5 q-pr-sm text-grey-7">ความคดเห/อแนะนำ</div>
<div class="col-xs-8 col-sm-6 q-pr-xs">
{{ review }}
</div>
</div>
</div>
</q-card>
2023-04-28 00:08:35 +07:00
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { useRoute } from 'vue-router'
import { useCounterMixin } from '@/stores/mixin'
2023-05-16 22:23:32 +07:00
import { useDataStore } from '@/stores/data'
2023-04-28 00:08:35 +07:00
import http from '@/plugins/http'
import config from '@/app.config'
2023-05-16 22:23:32 +07:00
import { useQuasar } from 'quasar'
2023-04-28 00:08:35 +07:00
2023-05-16 22:23:32 +07:00
const $q = useQuasar()
2023-04-28 00:08:35 +07:00
const route = useRoute()
const mixin = useCounterMixin() //เรียกฟังก์ชันกลาง
2023-05-16 22:23:32 +07:00
const { date2Thai, messageError } = mixin
const dataStore = useDataStore()
const { loaderPage } = dataStore
2023-04-28 00:08:35 +07:00
const examId = ref<string>(route.params.id.toString())
const positionId = ref<string>(route.params.positionId.toString())
const fullName = ref<string>('')
const examNumber = ref<string>('')
const position = ref<string>('')
const positionLevel = ref<string>('')
2023-04-28 00:08:35 +07:00
const citizenId = ref<string>('')
const examSeat = ref<string>('')
const scoreAFull = ref<number | null>(null)
const scoreA = ref<number | null>(null)
2023-04-28 00:08:35 +07:00
const scoreBFull = ref<number | null>(null)
const scoreB = ref<number | null>(null)
const scoreCFull = ref<number | null>(null)
const scoreC = ref<number | null>(null)
const scoreSumFull = ref<number | null>(null)
const scoreSum = ref<number | null>(null)
const examResultinscore = ref<string>('')
const avatar = ref<string>('')
const score_expired = ref<Date | null>(new Date())
const number = ref<string>('')
const reviewPoint = ref<number>(0)
const review = ref<string>('-')
2023-04-28 00:08:35 +07:00
onMounted(async () => {
await fetchStatus()
})
const fetchStatus = async () => {
2023-05-16 22:23:32 +07:00
loaderPage(true)
2023-04-28 00:08:35 +07:00
await http
.get(config.API.candidateCard(examId.value, positionId.value))
.then((res) => {
const data = res.data.result
fullName.value = data.prefix + data.firstName + ' ' + data.lastName
examNumber.value = data.examIdenNumber
citizenId.value = data.citizenId
examSeat.value = data.seatNumber
scoreAFull.value = data.pointTotalA
scoreA.value = data.pointA
2023-04-28 00:08:35 +07:00
scoreBFull.value = data.pointTotalB
scoreB.value = data.pointB
scoreCFull.value = data.pointTotalC
scoreC.value = data.pointC
scoreSum.value =
parseInt(data.pointA == null ? 0 : data.pointA) +
parseInt(data.pointB == null ? 0 : data.pointB) +
parseInt(data.pointC == null ? 0 : data.pointC)
scoreSumFull.value =
parseInt(data.pointTotalA == null ? 0 : data.pointTotalA) +
parseInt(data.pointTotalB == null ? 0 : data.pointTotalB) +
parseInt(data.pointTotalC == null ? 0 : data.pointTotalC)
2023-04-28 00:08:35 +07:00
examResultinscore.value = data.pass
avatar.value = data.avatar
score_expired.value = data.announcementDate == null ? null : new Date(data.announcementDate)
number.value = data.number
position.value = data.position
positionLevel.value = data.positionLevel
reviewPoint.value = data.reviewPoint
review.value = data.review == null ? '-' : data.review
2023-04-28 00:08:35 +07:00
})
2023-05-16 22:23:32 +07:00
.catch((e) => {
messageError($q, e)
2023-04-28 00:08:35 +07:00
})
.finally(() => {
2023-05-16 22:23:32 +07:00
loaderPage(false)
2023-04-28 00:08:35 +07:00
})
}
const download = () => {
window.print()
}
</script>
<style scoped></style>