Refactoring code module 03_recruiting
This commit is contained in:
parent
b223c2433e
commit
87e2e3b080
36 changed files with 6139 additions and 6335 deletions
|
|
@ -1,3 +1,388 @@
|
|||
<script setup lang="ts">
|
||||
import type { QTableProps } from "quasar";
|
||||
import { onMounted, ref, watch } from "vue";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
import { checkPermission } from "@/utils/permissions";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
import type { DataNumObject } from "@/modules/01_metadata/interface/request/Calendar";
|
||||
|
||||
import TableCandidate from "@/modules/03_recruiting/components/TableCandidate.vue";
|
||||
import ExamFinished from "@/modules/03_recruiting/components/ExamFinished.vue";
|
||||
|
||||
const $q = useQuasar();
|
||||
const mixin = useCounterMixin(); //เรียกฟังก์ชันกลาง
|
||||
const { genColor15, date2Thai, messageError, showLoader, hideLoader } = mixin;
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
const status = ref<string>("all");
|
||||
const filter = ref<string>(""); //search data table
|
||||
const name = ref<string>("");
|
||||
const candidateId = ref<string>("");
|
||||
const statusPayment = ref<boolean>(false);
|
||||
const setSeat = ref<boolean>(false);
|
||||
const modal = ref<boolean>(false);
|
||||
const round = ref<number | null>(null);
|
||||
const yearly = ref<number | null>(null);
|
||||
const examId = ref<string>(route.params.examId.toString());
|
||||
const visible = ref(true); //เปิดปิด card สรุปข้อมูล
|
||||
const dataNum = ref<DataNumObject[]>([]); //จำนวนสรุปจำนวนข้อมูลหลัก
|
||||
const rows = ref<any[]>([]);
|
||||
const visibleColumns = ref<String[]>([
|
||||
"no",
|
||||
"number",
|
||||
"position",
|
||||
"registerDate",
|
||||
"examIdenNumber",
|
||||
"seatNumber",
|
||||
"resultB",
|
||||
"resultC",
|
||||
"pass",
|
||||
"citizenId",
|
||||
"fullname",
|
||||
"career",
|
||||
"office",
|
||||
"edu",
|
||||
"status",
|
||||
]);
|
||||
const optionsStatus = ref<any>([
|
||||
{
|
||||
id: "all",
|
||||
name: "ทั้งหมด",
|
||||
},
|
||||
{
|
||||
id: "checkRegister",
|
||||
name: "รอกดรับใบสมัคร",
|
||||
},
|
||||
{
|
||||
id: "payment",
|
||||
name: "รอชำระค่าสมัครสอบ",
|
||||
},
|
||||
{
|
||||
id: "checkPayment",
|
||||
name: "ตรวจสอบหลักฐานชำระเงิน",
|
||||
},
|
||||
{
|
||||
id: "rejectPayment",
|
||||
name: "หลักฐานชำระเงินไม่ถูกต้อง",
|
||||
},
|
||||
{
|
||||
id: "checkSeat",
|
||||
name: "กดรับใบสมัครแล้ว",
|
||||
},
|
||||
{
|
||||
id: "checkPoint",
|
||||
name: "รอสรุปคะแนนสอบ",
|
||||
},
|
||||
{
|
||||
id: "done",
|
||||
name: "คัดเลือกสำเร็จ",
|
||||
},
|
||||
{
|
||||
id: "waiver",
|
||||
name: "สละสิทธิ์สอบ",
|
||||
},
|
||||
]);
|
||||
const columns = ref<QTableProps["columns"]>([
|
||||
{
|
||||
name: "no",
|
||||
align: "left",
|
||||
label: "ลำดับ",
|
||||
sortable: false,
|
||||
field: "no",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
sort: (a: string, b: string) =>
|
||||
a.localeCompare(b, undefined, {
|
||||
numeric: true,
|
||||
sensitivity: "base",
|
||||
}),
|
||||
},
|
||||
{
|
||||
name: "position",
|
||||
align: "left",
|
||||
label: "ตำแหน่งที่สมัคร",
|
||||
sortable: true,
|
||||
field: "position",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "citizenId",
|
||||
align: "left",
|
||||
label: "เลขประจำตัวประชาชน",
|
||||
sortable: true,
|
||||
field: "citizenId",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "fullname",
|
||||
align: "left",
|
||||
label: "ชื่อ-นามสกุล",
|
||||
sortable: true,
|
||||
field: "fullname",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "examIdenNumber",
|
||||
align: "left",
|
||||
label: "เลขประจำตัวสอบ",
|
||||
sortable: true,
|
||||
field: "examIdenNumber",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "seatNumber",
|
||||
align: "left",
|
||||
label: "สนามสอบ",
|
||||
sortable: true,
|
||||
field: "seatNumber",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "number",
|
||||
align: "left",
|
||||
label: "ลำดับที่สอบได้",
|
||||
sortable: true,
|
||||
field: "number",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "resultB",
|
||||
align: "left",
|
||||
label: "ผลสอบภาค ข",
|
||||
sortable: true,
|
||||
field: "resultB",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "resultC",
|
||||
align: "left",
|
||||
label: "ผลสอบภาค ค",
|
||||
sortable: true,
|
||||
field: "resultC",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "pass",
|
||||
align: "left",
|
||||
label: "ผลสอบ",
|
||||
sortable: true,
|
||||
field: "pass",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "registerDate",
|
||||
align: "left",
|
||||
label: "วันและเวลาที่สมัคร",
|
||||
sortable: true,
|
||||
field: "registerDate",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "status",
|
||||
align: "left",
|
||||
label: "สถานะ",
|
||||
sortable: false,
|
||||
field: "status",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
sort: (a: string, b: string) =>
|
||||
a.localeCompare(b, undefined, {
|
||||
numeric: true,
|
||||
sensitivity: "base",
|
||||
}),
|
||||
},
|
||||
]);
|
||||
|
||||
// paging
|
||||
const page = ref<number>(1);
|
||||
const pageSize = ref<number>(25);
|
||||
const total = ref<number>(0);
|
||||
const maxPage = ref<number>(1);
|
||||
|
||||
async function fetchDataCom() {
|
||||
await fetchDataSummary();
|
||||
await fetchPeriodExam();
|
||||
await fetchData();
|
||||
}
|
||||
|
||||
/** เปลี่ยน page */
|
||||
async function changePage(
|
||||
pageVal: number,
|
||||
pageSizeVal: number,
|
||||
loading: boolean = false
|
||||
) {
|
||||
page.value = await pageVal;
|
||||
pageSize.value = await pageSizeVal;
|
||||
fetchData(loading);
|
||||
}
|
||||
|
||||
/** ดึงข้อมูล */
|
||||
async function fetchData(loading: boolean = true) {
|
||||
loading === true ?? showLoader();
|
||||
await http
|
||||
.get(
|
||||
config.API.candidateOfPeriodExam(status.value, examId.value) +
|
||||
`?page=${page.value}&pageSize=${pageSize.value}&keyword=${filter.value}`
|
||||
)
|
||||
.then(async (res) => {
|
||||
const data = res.data.result;
|
||||
if (data.data) {
|
||||
total.value = data.total;
|
||||
maxPage.value = await Math.ceil(data.total / pageSize.value);
|
||||
maxPage.value = maxPage.value < 1 ? 1 : maxPage.value;
|
||||
|
||||
rows.value = [];
|
||||
data.data.map((r: any) => {
|
||||
rows.value.push({
|
||||
id: r.id,
|
||||
fullname: `${r.prefixName}${r.firstName} ${r.lastName}`,
|
||||
avatar: r.profileImg != null ? r.profileImg.detail : "",
|
||||
citizenId: r.citizenId,
|
||||
number: r.number,
|
||||
registerDate: date2Thai(r.registerDate, false, true),
|
||||
examIdenNumber: r.examIdenNumber,
|
||||
seatNumber: r.seatNumber,
|
||||
resultC: r.resultC,
|
||||
resultB: r.resultB,
|
||||
pass: r.pass,
|
||||
email: r.email,
|
||||
status: r.status,
|
||||
position: `${r.positionName}${r.positionLevelName}`,
|
||||
positionLevel: r.positionLevelName,
|
||||
check: false,
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
loading === true ?? hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/** ดึงข้อมูล สอบคัดเลือก */
|
||||
async function fetchPeriodExam() {
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.periodExamStatus(examId.value))
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
name.value = data.name;
|
||||
round.value = data.round;
|
||||
yearly.value = data.year;
|
||||
statusPayment.value = data.status;
|
||||
setSeat.value = data.setSeat;
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* สรุปจำนวน
|
||||
*/
|
||||
async function fetchDataSummary() {
|
||||
dataNum.value = [];
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.countDashbordPeriodExam(examId.value))
|
||||
.then((res) => {
|
||||
let data = res.data.result;
|
||||
data.map((e: DataNumObject) => {
|
||||
dataNum.value.push({
|
||||
id: e.id,
|
||||
count: e.count,
|
||||
name: e.name,
|
||||
color: genColor15(e.id),
|
||||
});
|
||||
});
|
||||
})
|
||||
.catch((e) => {
|
||||
dataNum.value = [];
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* รอสรุปคะแนนสอบ
|
||||
*/
|
||||
async function clickPointRow(row: any) {
|
||||
candidateId.value = row.id;
|
||||
modal.value = true;
|
||||
}
|
||||
|
||||
/** ไปหน้ารายละเอียด */
|
||||
function viewDetail(id: string, status: string) {
|
||||
if (status == "checkPayment") {
|
||||
router.push(`${route.fullPath}/payment/${id}`);
|
||||
} else {
|
||||
router.push(`${route.fullPath}/profile/${id}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* แปลง สถานะเป็น text
|
||||
* @param status
|
||||
*/
|
||||
function statusCandidate(status: string) {
|
||||
switch (status) {
|
||||
case "register":
|
||||
return "ยังไม่สมัครสอบ";
|
||||
case "checkRegister":
|
||||
return "รอกดรับใบสมัคร";
|
||||
case "payment":
|
||||
return "รอชำระค่าสมัครสอบ";
|
||||
case "rejectRegister":
|
||||
return "คุณสมบัติสมัครสอบไม่ผ่าน";
|
||||
case "checkPayment":
|
||||
return "ตรวจสอบหลักฐานชำระเงิน";
|
||||
case "rejectPayment":
|
||||
return "หลักฐานชำระเงินไม่ถูกต้อง";
|
||||
case "checkSeat":
|
||||
return "กดรับใบสมัครแล้ว";
|
||||
case "checkPoint":
|
||||
return "รอสรุปคะแนนสอบ";
|
||||
case "done":
|
||||
return "คัดเลือกสำเร็จ";
|
||||
case "waiver":
|
||||
return "สละสิทธิ์สอบ";
|
||||
default:
|
||||
return "-";
|
||||
}
|
||||
}
|
||||
|
||||
watch(status, (count: String, prevCount: String) => {
|
||||
fetchData();
|
||||
});
|
||||
|
||||
onMounted(async () => {
|
||||
hideLoader();
|
||||
await fetchDataCom();
|
||||
});
|
||||
</script>
|
||||
<template>
|
||||
<div class="toptitle text-dark col-12 row items-center">
|
||||
<q-btn
|
||||
|
|
@ -218,407 +603,3 @@
|
|||
</q-card>
|
||||
</q-dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import type { QTableProps } from "quasar";
|
||||
import { checkPermission } from "@/utils/permissions";
|
||||
import { onMounted, ref, watch } from "vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import type { Pagination } from "@/modules/03_recruiting/interface/index/Main";
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
|
||||
import TableCandidate from "@/modules/03_recruiting/components/TableCandidate.vue";
|
||||
import ExamFinished from "@/modules/03_recruiting/components/ExamFinished.vue";
|
||||
import type { DataNumObject } from "@/modules/01_metadata/interface/request/Calendar";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
const $q = useQuasar();
|
||||
const mixin = useCounterMixin(); //เรียกฟังก์ชันกลาง
|
||||
const {
|
||||
genColor15,
|
||||
dateToISO,
|
||||
date2Thai,
|
||||
messageError,
|
||||
showLoader,
|
||||
hideLoader,
|
||||
} = mixin;
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const status = ref<string>("all");
|
||||
const filter = ref<string>(""); //search data table
|
||||
const name = ref<string>("");
|
||||
const candidateId = ref<string>("");
|
||||
const statusPayment = ref<boolean>(false);
|
||||
const setSeat = ref<boolean>(false);
|
||||
const modal = ref<boolean>(false);
|
||||
const round = ref<number | null>(null);
|
||||
const yearly = ref<number | null>(null);
|
||||
const examId = ref<string>(route.params.examId.toString());
|
||||
const visible = ref(true); //เปิดปิด card สรุปข้อมูล
|
||||
const dataNum = ref<DataNumObject[]>([]); //จำนวนสรุปจำนวนข้อมูลหลัก
|
||||
const rows = ref<any[]>([]);
|
||||
const checkProfile = ref<any>([]);
|
||||
const visibleColumns = ref<String[]>([
|
||||
// "check",
|
||||
"no",
|
||||
"number",
|
||||
"position",
|
||||
// "positionLevel",
|
||||
"registerDate",
|
||||
"examIdenNumber",
|
||||
"seatNumber",
|
||||
"resultB",
|
||||
"resultC",
|
||||
"pass",
|
||||
"citizenId",
|
||||
"fullname",
|
||||
"career",
|
||||
"office",
|
||||
"edu",
|
||||
"status",
|
||||
]);
|
||||
const optionsStatus = ref<any>([
|
||||
{
|
||||
id: "all",
|
||||
name: "ทั้งหมด",
|
||||
},
|
||||
{
|
||||
id: "checkRegister",
|
||||
name: "รอกดรับใบสมัคร",
|
||||
},
|
||||
{
|
||||
id: "payment",
|
||||
name: "รอชำระค่าสมัครสอบ",
|
||||
},
|
||||
{
|
||||
id: "checkPayment",
|
||||
name: "ตรวจสอบหลักฐานชำระเงิน",
|
||||
},
|
||||
{
|
||||
id: "rejectPayment",
|
||||
name: "หลักฐานชำระเงินไม่ถูกต้อง",
|
||||
},
|
||||
{
|
||||
id: "checkSeat",
|
||||
name: "กดรับใบสมัครแล้ว",
|
||||
},
|
||||
{
|
||||
id: "checkPoint",
|
||||
name: "รอสรุปคะแนนสอบ",
|
||||
},
|
||||
{
|
||||
id: "done",
|
||||
name: "คัดเลือกสำเร็จ",
|
||||
},
|
||||
{
|
||||
id: "waiver",
|
||||
name: "สละสิทธิ์สอบ",
|
||||
},
|
||||
]);
|
||||
const columns = ref<QTableProps["columns"]>([
|
||||
// {
|
||||
// name: "check",
|
||||
// align: "left",
|
||||
// label: "",
|
||||
// sortable: true,
|
||||
// field: "check",
|
||||
// headerStyle: "font-size: 14px;",
|
||||
// style: "font-size: 14px; ",
|
||||
// },
|
||||
{
|
||||
name: "no",
|
||||
align: "left",
|
||||
label: "ลำดับ",
|
||||
sortable: false,
|
||||
field: "no",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
sort: (a: string, b: string) =>
|
||||
a.localeCompare(b, undefined, {
|
||||
numeric: true,
|
||||
sensitivity: "base",
|
||||
}),
|
||||
},
|
||||
{
|
||||
name: "position",
|
||||
align: "left",
|
||||
label: "ตำแหน่งที่สมัคร",
|
||||
sortable: true,
|
||||
field: "position",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
// {
|
||||
// name: "positionLevel",
|
||||
// align: "left",
|
||||
// label: "ระดับ",
|
||||
// sortable: true,
|
||||
// field: "positionLevel",
|
||||
// headerStyle: "font-size: 14px; min-width: 200px",
|
||||
// style: "font-size: 14px; ",
|
||||
// },
|
||||
{
|
||||
name: "citizenId",
|
||||
align: "left",
|
||||
label: "เลขประจำตัวประชาชน",
|
||||
sortable: true,
|
||||
field: "citizenId",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "fullname",
|
||||
align: "left",
|
||||
label: "ชื่อ-นามสกุล",
|
||||
sortable: true,
|
||||
field: "fullname",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "examIdenNumber",
|
||||
align: "left",
|
||||
label: "เลขประจำตัวสอบ",
|
||||
sortable: true,
|
||||
field: "examIdenNumber",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "seatNumber",
|
||||
align: "left",
|
||||
label: "สนามสอบ",
|
||||
sortable: true,
|
||||
field: "seatNumber",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "number",
|
||||
align: "left",
|
||||
label: "ลำดับที่สอบได้",
|
||||
sortable: true,
|
||||
field: "number",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "resultB",
|
||||
align: "left",
|
||||
label: "ผลสอบภาค ข",
|
||||
sortable: true,
|
||||
field: "resultB",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "resultC",
|
||||
align: "left",
|
||||
label: "ผลสอบภาค ค",
|
||||
sortable: true,
|
||||
field: "resultC",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "pass",
|
||||
align: "left",
|
||||
label: "ผลสอบ",
|
||||
sortable: true,
|
||||
field: "pass",
|
||||
headerStyle: "font-size: 14px;",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "registerDate",
|
||||
align: "left",
|
||||
label: "วันและเวลาที่สมัคร",
|
||||
sortable: true,
|
||||
field: "registerDate",
|
||||
headerStyle: "font-size: 14px; min-width: 200px",
|
||||
style: "font-size: 14px; ",
|
||||
},
|
||||
{
|
||||
name: "status",
|
||||
align: "left",
|
||||
label: "สถานะ",
|
||||
sortable: false,
|
||||
field: "status",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
sort: (a: string, b: string) =>
|
||||
a.localeCompare(b, undefined, {
|
||||
numeric: true,
|
||||
sensitivity: "base",
|
||||
}),
|
||||
},
|
||||
]);
|
||||
|
||||
watch(status, (count: String, prevCount: String) => {
|
||||
fetchData();
|
||||
});
|
||||
|
||||
onMounted(async () => {
|
||||
hideLoader();
|
||||
await fetchDataCom();
|
||||
});
|
||||
|
||||
const fetchDataCom = async () => {
|
||||
await fetchDataSummary();
|
||||
await fetchPeriodExam();
|
||||
await fetchData();
|
||||
};
|
||||
|
||||
// paging
|
||||
const page = ref<number>(1);
|
||||
const pageSize = ref<number>(25);
|
||||
const total = ref<number>(0);
|
||||
const maxPage = ref<number>(1);
|
||||
|
||||
async function changePage(
|
||||
pageVal: number,
|
||||
pageSizeVal: number,
|
||||
loading: boolean = false
|
||||
) {
|
||||
page.value = await pageVal;
|
||||
pageSize.value = await pageSizeVal;
|
||||
fetchData(loading);
|
||||
}
|
||||
|
||||
const fetchData = async (loading: boolean = true) => {
|
||||
loading === true ?? showLoader();
|
||||
await http
|
||||
.get(
|
||||
config.API.candidateOfPeriodExam(status.value, examId.value) +
|
||||
`?page=${page.value}&pageSize=${pageSize.value}&keyword=${filter.value}`
|
||||
)
|
||||
.then(async (res) => {
|
||||
const data = res.data.result;
|
||||
if (data.data) {
|
||||
total.value = data.total;
|
||||
maxPage.value = await Math.ceil(data.total / pageSize.value);
|
||||
maxPage.value = maxPage.value < 1 ? 1 : maxPage.value;
|
||||
|
||||
rows.value = [];
|
||||
data.data.map((r: any) => {
|
||||
rows.value.push({
|
||||
id: r.id,
|
||||
fullname: `${r.prefixName}${r.firstName} ${r.lastName}`,
|
||||
avatar: r.profileImg != null ? r.profileImg.detail : "",
|
||||
citizenId: r.citizenId,
|
||||
number: r.number,
|
||||
registerDate: date2Thai(r.registerDate, false, true),
|
||||
examIdenNumber: r.examIdenNumber,
|
||||
seatNumber: r.seatNumber,
|
||||
resultC: r.resultC,
|
||||
resultB: r.resultB,
|
||||
pass: r.pass,
|
||||
email: r.email,
|
||||
status: r.status,
|
||||
position: `${r.positionName}${r.positionLevelName}`,
|
||||
positionLevel: r.positionLevelName,
|
||||
check: false,
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
loading === true ?? hideLoader();
|
||||
});
|
||||
};
|
||||
|
||||
const fetchPeriodExam = async () => {
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.periodExamStatus(examId.value))
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
name.value = data.name;
|
||||
round.value = data.round;
|
||||
yearly.value = data.year;
|
||||
statusPayment.value = data.status;
|
||||
setSeat.value = data.setSeat;
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* สรุปจำนวน
|
||||
*/
|
||||
const fetchDataSummary = async () => {
|
||||
dataNum.value = [];
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.countDashbordPeriodExam(examId.value))
|
||||
.then((res) => {
|
||||
let data = res.data.result;
|
||||
data.map((e: DataNumObject) => {
|
||||
dataNum.value.push({
|
||||
id: e.id,
|
||||
count: e.count,
|
||||
name: e.name,
|
||||
color: genColor15(e.id),
|
||||
});
|
||||
});
|
||||
})
|
||||
.catch((e) => {
|
||||
dataNum.value = [];
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* รอสรุปคะแนนสอบ
|
||||
*/
|
||||
const clickPointRow = async (row: any) => {
|
||||
candidateId.value = row.id;
|
||||
modal.value = true;
|
||||
};
|
||||
|
||||
const viewDetail = (id: string, status: string) => {
|
||||
if (status == "checkPayment") {
|
||||
router.push(`${route.fullPath}/payment/${id}`);
|
||||
} else {
|
||||
router.push(`${route.fullPath}/profile/${id}`);
|
||||
}
|
||||
};
|
||||
|
||||
const statusCandidate = (status: string) => {
|
||||
switch (status) {
|
||||
case "register":
|
||||
return "ยังไม่สมัครสอบ";
|
||||
case "checkRegister":
|
||||
return "รอกดรับใบสมัคร";
|
||||
case "payment":
|
||||
return "รอชำระค่าสมัครสอบ";
|
||||
case "rejectRegister":
|
||||
return "คุณสมบัติสมัครสอบไม่ผ่าน";
|
||||
case "checkPayment":
|
||||
return "ตรวจสอบหลักฐานชำระเงิน";
|
||||
case "rejectPayment":
|
||||
return "หลักฐานชำระเงินไม่ถูกต้อง";
|
||||
case "checkSeat":
|
||||
return "กดรับใบสมัครแล้ว";
|
||||
case "checkPoint":
|
||||
return "รอสรุปคะแนนสอบ";
|
||||
case "done":
|
||||
return "คัดเลือกสำเร็จ";
|
||||
case "waiver":
|
||||
return "สละสิทธิ์สอบ";
|
||||
default:
|
||||
return "-";
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue