fix: คัดเลือกผู้พิการ

This commit is contained in:
setthawutttty 2025-09-05 14:42:12 +07:00
parent c51c28483a
commit 86b98eac0d
10 changed files with 271 additions and 102 deletions

View file

@ -332,10 +332,10 @@ onMounted(async () => {
ภาคความรความสามารถทใชเฉพาะตำแหน (ภาค ) ภาคความรความสามารถทใชเฉพาะตำแหน (ภาค )
</div> </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreAFull }} {{ scoreAFull ? scoreAFull:'-' }}
</div> </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreA }} {{ scoreA ? scoreA:'-' }}
</div> </div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div> <div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>

View file

@ -296,7 +296,7 @@ async function clickEdit(id: string) {
*/ */
async function clickResult(id: string) { async function clickResult(id: string) {
modalResult.value = true; modalResult.value = true;
textTittleResult.value = "นำเข้าไฟล์ผลการสอบแข่งขันฯ (บัญชีรายชื่อ)"; textTittleResult.value = "นำเข้าไฟล์ผลการสอบ";
selected_row_id.value = id; selected_row_id.value = id;
} }
@ -706,7 +706,7 @@ onMounted(async () => {
> >
<q-icon name="mdi-file-excel-outline" size="20px" /> <q-icon name="mdi-file-excel-outline" size="20px" />
<q-tooltip <q-tooltip
>นำเขาไฟลผลการสอบแขงขนฯ (ญชรายช)</q-tooltip >นำเขาไฟลผลการสอบ (ญชรายช)</q-tooltip
> >
</q-btn> </q-btn>
<div v-else> <div v-else>
@ -722,7 +722,7 @@ onMounted(async () => {
icon="mdi-file-excel-outline" icon="mdi-file-excel-outline"
> >
<q-tooltip <q-tooltip
>นำเขาไฟลผลการสอบแขงขนฯ (ญชรายช) >นำเขาไฟลผลการสอบ (ญชรายช)
กคร</q-tooltip กคร</q-tooltip
> >
</q-btn> </q-btn>
@ -956,7 +956,7 @@ onMounted(async () => {
<DialogHeadTemplate <DialogHeadTemplate
:title="textTittleResult" :title="textTittleResult"
:close="clickCloseResult" :close="clickCloseResult"
title-type="ผลการสอบแข่งขันฯ (บัญชีรายชื่อ)" title-type="ผลการสอบ (บัญชีรายชื่อ)"
/> />
<q-separator /> <q-separator />
<q-card-section> <q-card-section>
@ -965,7 +965,7 @@ onMounted(async () => {
<q-file <q-file
v-model="files_result" v-model="files_result"
dense dense
label="เลือกไฟล์ผลการสอบแข่งขันฯ (บัญชีรายชื่อ)" label="เลือกไฟล์การสอบ"
outlined outlined
use-chips use-chips
multiple multiple

View file

@ -40,6 +40,7 @@ const visibleColumns = ref<String[]>([
"examID", "examID",
"profileID", "profileID",
"fullName", "fullName",
"hddPosition",
"dateOfBirth", "dateOfBirth",
"gender", "gender",
"position_name", "position_name",
@ -83,6 +84,15 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px; min-width: 250px", headerStyle: "font-size: 14px; min-width: 250px",
style: "font-size: 14px; ", style: "font-size: 14px; ",
}, },
{
name: "hddPosition",
align: "left",
label: "บัญชีสอบ",
sortable: true,
field: "hddPosition",
headerStyle: "font-size: 14px; min-width: 250px",
style: "font-size: 14px; ",
},
{ {
name: "dateOfBirth", name: "dateOfBirth",
align: "left", align: "left",

View file

@ -35,6 +35,9 @@ const scoreSumFull = ref<string>("");
const scoreSum = ref<string>(""); const scoreSum = ref<string>("");
const examOrder = ref<string>(""); const examOrder = ref<string>("");
const number = ref<string>(""); const number = ref<string>("");
const scoreDFull = ref<string>("");
const scoreD = ref<string>("");
const typeTest = ref<string>("");
const score_expired = ref<string>(""); const score_expired = ref<string>("");
const examID = ref<string>("62150001"); const examID = ref<string>("62150001");
const prefix = ref<string>("นาย"); const prefix = ref<string>("นาย");
@ -64,6 +67,7 @@ async function fetchData() {
number.value = data.number; number.value = data.number;
examOrder.value = data.examOrder; examOrder.value = data.examOrder;
score_expired.value = data.scoreExpire; score_expired.value = data.scoreExpire;
typeTest.value = data.typeTest;
if (data.scoreResult != null) { if (data.scoreResult != null) {
scoreAFull.value = data.scoreResult.scoreAFull; scoreAFull.value = data.scoreResult.scoreAFull;
scoreA.value = data.scoreResult.scoreA; scoreA.value = data.scoreResult.scoreA;
@ -74,6 +78,8 @@ async function fetchData() {
scoreSumFull.value = data.scoreResult.scoreSumFull; scoreSumFull.value = data.scoreResult.scoreSumFull;
scoreSum.value = data.scoreResult.scoreSum; scoreSum.value = data.scoreResult.scoreSum;
examResultinscore.value = data.scoreResult.examResult; examResultinscore.value = data.scoreResult.examResult;
scoreDFull.value = data.scoreResult.scoreDFull;
scoreD.value = data.scoreResult.scoreD;
} }
} else { } else {
dialogMessageNotify($q, "แข่งขัน ไม่พบข้อมูล"); dialogMessageNotify($q, "แข่งขัน ไม่พบข้อมูล");
@ -160,82 +166,82 @@ onMounted(async () => {
เลขประจำตวประชาชน เลขประจำตวประชาชน
</div> </div>
<div class="col-6 text-black" v-if="profile_id !== null"> <div class="col-6 text-black" v-if="profile_id !== null">
{{ profile_id }} {{ profile_id ? profile_id : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="prefix !== null"> <div class="col-6 text-grey-7" v-if="prefix !== null">
คำนำหนาชอนาม คำนำหนาชอนาม
</div> </div>
<div class="col-6 text-black" v-if="prefix !== null"> <div class="col-6 text-black" v-if="prefix !== null">
{{ prefix }} {{ prefix ? prefix : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="fullname !== null"> <div class="col-6 text-grey-7" v-if="fullname !== null">
-นามสก -นามสก
</div> </div>
<div class="col-6 text-black" v-if="fullname !== null"> <div class="col-6 text-black" v-if="fullname !== null">
{{ fullname }} {{ fullname ? fullname : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="birthdate !== null"> <div class="col-6 text-grey-7" v-if="birthdate !== null">
/เดอน/ เก /เดอน/ เก
</div> </div>
<div class="col-6 text-black" v-if="birthdate !== null"> <div class="col-6 text-black" v-if="birthdate !== null">
{{ birthdate }} {{ birthdate ? birthdate : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="gender !== null">เพศ</div> <div class="col-6 text-grey-7" v-if="gender !== null">เพศ</div>
<div class="col-6 text-black" v-if="gender !== null"> <div class="col-6 text-black" v-if="gender !== null">
{{ gender }} {{ gender ? gender : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="position_name !== null"> <div class="col-6 text-grey-7" v-if="position_name !== null">
ตำแหนงทสมคร ตำแหนงทสมคร
</div> </div>
<div class="col-6 text-black" v-if="position_name !== null"> <div class="col-6 text-black" v-if="position_name !== null">
{{ position_name }} {{ position_name ? position_name : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="university !== null"> <div class="col-6 text-grey-7" v-if="university !== null">
สถานศกษา สถานศกษา
</div> </div>
<div class="col-6 text-black" v-if="university !== null"> <div class="col-6 text-black" v-if="university !== null">
{{ university }} {{ university ? university : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="degree !== null"> <div class="col-6 text-grey-7" v-if="degree !== null">
การศกษา การศกษา
</div> </div>
<div class="col-6 text-black" v-if="degree !== null"> <div class="col-6 text-black" v-if="degree !== null">
{{ degree }} {{ degree ? degree : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="major !== null"> <div class="col-6 text-grey-7" v-if="major !== null">
สาขาวชาเอก สาขาวชาเอก
</div> </div>
<div class="col-6 text-black" v-if="major !== null"> <div class="col-6 text-black" v-if="major !== null">
{{ major }} {{ major ? major : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="major !== null"> <div class="col-6 text-grey-7" v-if="major !== null">
ครงทประกาศรบสมคร ครงทประกาศรบสมคร
</div> </div>
<div class="col-6 text-black" v-if="major !== null"> <div class="col-6 text-black" v-if="major !== null">
{{ examOrder }} {{ examOrder ? examOrder : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="cert_issuedate !== null"> <div class="col-6 text-grey-7" v-if="cert_issuedate !== null">
ใบอนญาตประกอบวชาช เดอน ได ใบอนญาตประกอบวชาช เดอน ได
</div> </div>
<div class="col-6 text-black" v-if="cert_issuedate !== null"> <div class="col-6 text-black" v-if="cert_issuedate !== null">
{{ cert_issuedate }} {{ cert_issuedate ? cert_issuedate : "-" }}
</div> </div>
<div class="col-6 text-grey-7" v-if="examAttribute !== null"> <div class="col-6 text-grey-7" v-if="examAttribute !== null">
สถานะการคดกรองคณสมบ สถานะการคดกรองคณสมบ
</div> </div>
<div class="col-6 text-black" v-if="examAttribute !== null"> <div class="col-6 text-black" v-if="examAttribute !== null">
{{ examAttribute }} {{ examAttribute ? examAttribute : "-" }}
</div> </div>
</div> </div>
</q-card> </q-card>
@ -288,10 +294,23 @@ onMounted(async () => {
<q-tooltip>ดาวนโหลดผลคะแนน</q-tooltip> <q-tooltip>ดาวนโหลดผลคะแนน</q-tooltip>
</q-btn> </q-btn>
</div> </div>
<div class="row items-center q-gutter-y-sm col-12"> <div class="row items-top q-gutter-y-sm col-12">
<div class="col-xs-4 col-sm-5 text-weight-medium text-grey-7"> <div class="col-xs-12 col-sm-12 text-weight-medium text-grey-7">
ประเภท ประเภท
</div> </div>
<div class="col-xs-4 col-sm-5 text-grey-7">
ภาคความรความสามารถทวไป (ภาค )
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs">
{{ typeTest == "bangkok" ? "กทม." : "ก.พ." }}
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs"></div>
<div class="col-12">
<q-separator />
</div>
<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"> <div class="col-xs-3 col-sm-2 text-primary text-weight-bold">
คะแนนเต คะแนนเต
</div> </div>
@ -301,40 +320,46 @@ onMounted(async () => {
<div <div
class="col-xs-2 col-sm-2 text-primary text-weight-bold" class="col-xs-2 col-sm-2 text-primary text-weight-bold"
></div> ></div>
<div class="col-xs-4 col-sm-5 text-grey-7">
<div class="col-xs-4 col-sm-5 text-grey-7">ภาค </div> ภาคความรความสามารถทใชเฉพาะตำแหน (ภาค )
<div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreAFull }}
</div> </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreA }} {{ scoreAFull ? scoreAFull : "-" }}
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreA ? scoreA : "-" }}
</div> </div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</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-12 col-sm-12 text-grey-7">
<div class="col-xs-3 col-sm-2 q-pr-xs"> ภาคความเหมาะสมกบตำแหน (ภาค )
{{ scoreBFull }} </div>
<div class="col-xs-4 col-sm-5 text-grey-7">
- ทดสอบสมรรถนะ และทดสอบจตวทยาฯ
</div> </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreB }} {{ scoreCFull ? scoreCFull : "-" }}
</div>
<div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreC ? scoreC : "-" }}
</div> </div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</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-4 col-sm-5 text-grey-7">ภาค </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreCFull }} {{ scoreDFull ? scoreDFull : "-" }}
</div> </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreC }} {{ scoreD ? scoreD : "-" }}
</div> </div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</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-4 col-sm-5 text-grey-7">รวมทงหมด</div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreSumFull }} {{ scoreSumFull ? scoreSumFull : "-" }}
</div> </div>
<div class="col-xs-3 col-sm-2 q-pr-xs"> <div class="col-xs-3 col-sm-2 q-pr-xs">
{{ scoreSum }} {{ scoreSum ? scoreSum : "-" }}
</div> </div>
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div> <div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>
@ -356,7 +381,7 @@ onMounted(async () => {
นหมดอายญชดเลอกคนพการ นหมดอายญชดเลอกคนพการ
</div> </div>
<div class="col-xs-6 col-sm-7 q-pr-xs"> <div class="col-xs-6 col-sm-7 q-pr-xs">
{{ score_expired }} {{ score_expired ? score_expired : "-" }}
</div> </div>
</div> </div>
</div> </div>

View file

@ -41,10 +41,12 @@ const year = ref<number>(new Date().getFullYear() + 543);
const round = ref<number>(1); const round = ref<number>(1);
const files = ref<any>(null); const files = ref<any>(null);
const files_score = ref<any>(null); const files_score = ref<any>(null);
const files_result = ref<any>(null);
const files_candidate = ref<any>(null); const files_candidate = ref<any>(null);
const modalAdd = ref<boolean>(false); const modalAdd = ref<boolean>(false);
const modalScore = ref<boolean>(false); const modalScore = ref<boolean>(false);
const modalCandidate = ref<boolean>(false); const modalCandidate = ref<boolean>(false);
const modalResult = ref<boolean>(false);
const selected_row_id = ref<string>(""); const selected_row_id = ref<string>("");
const rowsHistory = ref<ResponseHistoryObject[]>([]); //select data history const rowsHistory = ref<ResponseHistoryObject[]>([]); //select data history
const tittleHistory = ref<string>("ประวัติการนำเข้าข้อมูล"); // const tittleHistory = ref<string>("ประวัติการนำเข้าข้อมูล"); //
@ -56,6 +58,7 @@ const filterHistory = ref<string>(""); //search data table
const textTittle = ref<string>(""); const textTittle = ref<string>("");
const textTittleScore = ref<string>(""); const textTittleScore = ref<string>("");
const textTittleCandidate = ref<string>(""); const textTittleCandidate = ref<string>("");
const textTittleResult = ref<string>("");
const initialPagination = ref<Pagination>({ const initialPagination = ref<Pagination>({
rowsPerPage: 0, rowsPerPage: 0,
sortBy: "year", sortBy: "year",
@ -67,6 +70,7 @@ const visibleColumns = ref<String[]>([
"year", "year",
"examCount", "examCount",
"scoreCount", "scoreCount",
"result",
]); ]);
const columns = ref<QTableProps["columns"]>([ const columns = ref<QTableProps["columns"]>([
@ -112,7 +116,7 @@ const columns = ref<QTableProps["columns"]>([
}, },
{ {
name: "examCount", name: "examCount",
label: "จำนวนผู้สอบทั้งหมด", label: "ข้อมูลผู้สมัครสอบ",
align: "right", align: "right",
field: "examCount", field: "examCount",
sortable: true, sortable: true,
@ -121,13 +125,22 @@ const columns = ref<QTableProps["columns"]>([
}, },
{ {
name: "scoreCount", name: "scoreCount",
label: "จำนวนที่บันทึกผลสอบ", label: "บัญชีรวมคะแนน",
align: "right", align: "right",
field: "scoreCount", field: "scoreCount",
sortable: true, sortable: true,
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "result",
label: "ผลการสอบ",
align: "right",
field: "result",
sortable: true,
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]); ]);
const columnsHistory = ref<QTableProps["columns"]>([ const columnsHistory = ref<QTableProps["columns"]>([
@ -177,7 +190,7 @@ async function clickPassExam(id: string) {
.then(async (res) => { .then(async (res) => {
const data = res.data.result; const data = res.data.result;
data.reportName = `CandidateList`; data.reportName = `CandidateList`;
await genReport(data, data.reportName, "pdf"); await genReport(data, "รายชื่อผู้สอบแข่งขันได้", "pdf");
}) })
.catch(async (e) => { .catch(async (e) => {
messageError($q, e); messageError($q, e);
@ -195,7 +208,7 @@ async function clickCandidateList(id: string) {
.then(async (res) => { .then(async (res) => {
const data = res.data.result; const data = res.data.result;
data.reportName = `CandidateList`; data.reportName = `CandidateList`;
await genReport(data, data.reportName, "pdf"); await genReport(data, "รายชื่อผู้มีสิทธิ์สอบ", "pdf");
}) })
.catch(async (e) => { .catch(async (e) => {
messageError($q, e); messageError($q, e);
@ -256,14 +269,24 @@ function clickDetail(id: string) {
/** นำเข้าไฟล์ผลคะแนนสอบ */ /** นำเข้าไฟล์ผลคะแนนสอบ */
async function clickEdit(id: string) { async function clickEdit(id: string) {
modalScore.value = true; modalScore.value = true;
textTittleScore.value = "นำเข้าผลการคัดเลือกคนพิการ"; textTittleScore.value = "นำเข้าบัญชีรวมคะแนน";
selected_row_id.value = id; selected_row_id.value = id;
} }
/** นำเข้าไฟล์ผู้สมัครสอบ */ /** นำเข้าไฟล์ผู้สมัครสอบ */
async function clickUpload(id: string) { async function clickUpload(id: string) {
modalCandidate.value = true; modalCandidate.value = true;
textTittleCandidate.value = "นำเข้าผู้สมัครคัดเลือกคนพิการ"; textTittleCandidate.value = "นำเข้าผู้สมัครสอบคัดเลือก";
selected_row_id.value = id;
}
/**
* นำเขาไฟลลำด
* @param id รอบสอบเเขงข
*/
async function clickResult(id: string) {
modalResult.value = true;
textTittleResult.value = "นำเข้าไฟล์ผลการสอบ";
selected_row_id.value = id; selected_row_id.value = id;
} }
@ -345,6 +368,12 @@ async function clickCloseCandidate() {
files_candidate.value = null; files_candidate.value = null;
} }
/** ปิด dialog เลือกไฟล์ผลการสอบ */
async function clickCloseResult() {
modalResult.value = false;
files_result.value = null;
}
/** บันทึก รอบการคัดเลือก */ /** บันทึก รอบการคัดเลือก */
async function checkSaveCandidate() { async function checkSaveCandidate() {
const fd = new FormData(); const fd = new FormData();
@ -387,6 +416,28 @@ async function checkSaveScore() {
}); });
} }
/** บันทึกข้อมูล เลือกไฟล์ผลการสอบแข่งขันฯ */
async function checkSaveResult() {
const fd = new FormData();
fd.append("attachment", files_result.value[0]);
showLoader();
await http
.post(config.API.uploadResult(selected_row_id.value), fd)
.then((res) => {
success($q, "นำเข้าข้อมูลผลการสอบแข่งขันฯ (บัญชีรายชื่อ)");
modalResult.value = false;
files_result.value = null;
selected_row_id.value = "";
fetchData();
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
/** บันทึกข้อมูล */ /** บันทึกข้อมูล */
async function checkSave() { async function checkSave() {
const fd = new FormData(); const fd = new FormData();
@ -513,7 +564,9 @@ onMounted(async () => {
name="mdi-history" name="mdi-history"
/> />
</q-item-section> </q-item-section>
<q-item-section>แสดงประวการนำเขาขอม</q-item-section> <q-item-section
>แสดงประวการนำเขาขอม</q-item-section
>
</q-item> </q-item>
</q-list> </q-list>
</q-menu> </q-menu>
@ -526,54 +579,6 @@ onMounted(async () => {
<div v-else-if="col.name == 'name'" class="table_ellipsis2"> <div v-else-if="col.name == 'name'" class="table_ellipsis2">
{{ col.value }} {{ col.value }}
</div> </div>
<div v-else-if="col.name == 'scoreCount'" class="table_ellipsis2">
<q-btn
flat
dense
size="12px"
round
color="green"
:disable="props.row.examCount == 0"
@click.stop.prevent="clickEdit(props.row.id)"
v-if="
col.value == null && checkPermission($route)?.attrIsUpdate
"
>
<q-icon name="mdi-file-excel-outline" size="20px" />
<!-- นำเขาไฟลผลคะแนนสอบ -->
<q-tooltip>นำเขาไฟลผลคะแนนสอบ</q-tooltip>
</q-btn>
<div v-else>
{{ col.value }}
<q-btn
v-if="checkPermission($route)?.attrIsUpdate"
dense
size="12px"
flat
round
color="green"
@click.stop.prevent="clickEdit(props.row.id)"
icon="mdi-file-excel-outline"
>
<q-tooltip>นำเขาไฟลผลคะแนนสอบอกคร</q-tooltip>
</q-btn>
<q-btn
v-if="checkPermission($route)?.attrIsGet"
dense
size="12px"
flat
round
color="indigo"
@click.stop.prevent="clickPassExam(props.row.id)"
icon="mdi-clipboard-arrow-down"
>
<q-tooltip
>ดาวนโหลดรายชอผสอบคดเลอกคนพการได</q-tooltip
>
</q-btn>
</div>
</div>
<div v-else-if="col.name == 'examCount'" class="table_ellipsis2"> <div v-else-if="col.name == 'examCount'" class="table_ellipsis2">
<q-btn <q-btn
flat flat
@ -620,6 +625,91 @@ onMounted(async () => {
</q-btn> </q-btn>
</div> </div>
</div> </div>
<div v-else-if="col.name == 'scoreCount'" class="table_ellipsis2">
<q-btn
flat
dense
size="12px"
round
color="green"
:disable="props.row.examCount == 0"
@click.stop.prevent="clickEdit(props.row.id)"
v-if="
col.value == null && checkPermission($route)?.attrIsUpdate
"
>
<q-icon name="mdi-file-excel-outline" size="20px" />
<!-- นำเขาไฟลผลคะแนนสอบ -->
<q-tooltip>นำเขาไฟลผลคะแนนสอบ</q-tooltip>
</q-btn>
<div v-else>
{{ col.value }}
<q-btn
v-if="checkPermission($route)?.attrIsUpdate"
dense
size="12px"
flat
round
color="green"
@click.stop.prevent="clickEdit(props.row.id)"
icon="mdi-file-excel-outline"
>
<q-tooltip>นำเขาไฟลผลคะแนนสอบอกคร</q-tooltip>
</q-btn>
</div>
</div>
<div v-else-if="col.name == 'result'" class="table_ellipsis2">
<q-btn
:disable="props.row.score == null"
flat
dense
size="12px"
color="green"
round
@click.stop.prevent="clickResult(props.row.id)"
v-if="
(props.row.score == null || props.row.score.resultCount == 0) &&
checkPermission($route)?.attrIsUpdate
"
>
<q-icon name="mdi-file-excel-outline" size="20px" />
<q-tooltip>นำเขาไฟลผลการสอบ (ญชรายช)</q-tooltip>
</q-btn>
<div v-else>
{{ props.row.score.resultCount }}
<q-btn
v-if="checkPermission($route)?.attrIsUpdate"
dense
size="12px"
flat
round
color="green"
@click.stop.prevent="clickResult(props.row.id)"
icon="mdi-file-excel-outline"
>
<q-tooltip
>นำเขาไฟลผลการสอบ (ญชรายช) กคร</q-tooltip
>
</q-btn>
<q-btn
v-if="checkPermission($route)?.attrIsGet"
dense
size="12px"
flat
round
color="indigo"
@click.stop.prevent="clickPassExam(props.row.id)"
icon="mdi-clipboard-arrow-down"
>
<q-tooltip
>ดาวนโหลดรายชอผสอบแขงขนได</q-tooltip
>
</q-btn>
</div>
</div>
<div v-else> <div v-else>
{{ col.value }} {{ col.value }}
</div> </div>
@ -738,13 +828,57 @@ onMounted(async () => {
</q-card> </q-card>
</q-dialog> </q-dialog>
<q-dialog v-model="modalScore" persistent> <q-dialog v-model="modalCandidate" persistent>
<q-card style="width: 600px"> <q-card style="width: 600px">
<q-form ref="myFormScore"> <q-form ref="myFormScore">
<DialogHeadTemplate <DialogHeadTemplate
:title="textTittleCandidate" :title="textTittleCandidate"
:close="clickCloseCandidate"
title-type="ข้อมูลผู้สมัครสอบ"
/>
<q-separator />
<q-card-section>
<div class="col-12 row items-center q-col-gutter-sm">
<div class="col-12">
<q-file
v-model="files_candidate"
dense
label="เลือกไฟล์ผู้สมัครสอบคัดเลือก"
outlined
use-chips
multiple
>
<template v-slot:prepend>
<q-icon name="attach_file" />
</template>
</q-file>
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions class="text-primary q-py-sm">
<q-space />
<q-btn
flat
round
color="public"
@click="checkSaveCandidate"
icon="mdi-content-save-outline"
>
<q-tooltip>นท</q-tooltip>
</q-btn>
</q-card-actions>
</q-form>
</q-card>
</q-dialog>
<q-dialog v-model="modalScore" persistent>
<q-card style="width: 600px">
<q-form ref="myFormScore">
<DialogHeadTemplate
:title="textTittleScore"
:close="clickCloseScore" :close="clickCloseScore"
title-type="สรรหา_สอบคัดเลือกคนพิการ_จำนวนที่บันทึกผลสอบ" title-type="บัญชีรวมคะแนน"
/> />
<q-separator /> <q-separator />
<q-card-section> <q-card-section>
@ -753,7 +887,7 @@ onMounted(async () => {
<q-file <q-file
v-model="files_score" v-model="files_score"
dense dense
label="เลือกไฟล์ผลการคัดเลือกคนพิการ" label="เลือกไฟล์บัญชีรวมคะแนน"
outlined outlined
use-chips use-chips
multiple multiple
@ -782,22 +916,22 @@ onMounted(async () => {
</q-card> </q-card>
</q-dialog> </q-dialog>
<q-dialog v-model="modalCandidate" persistent> <q-dialog v-model="modalResult" persistent>
<q-card style="width: 600px"> <q-card style="width: 600px">
<q-form ref="myFormScore"> <q-form ref="myFormScore">
<DialogHeadTemplate <DialogHeadTemplate
:title="textTittleCandidate" :title="textTittleResult"
:close="clickCloseCandidate" :close="clickCloseResult"
title-type="สรรหา_สอบคัดเลือกคนพิการ_จำนวนผู้สอบทั้งหมด" title-type="ผลการสอบ (บัญชีรายชื่อ)"
/> />
<q-separator /> <q-separator />
<q-card-section> <q-card-section>
<div class="col-12 row items-center q-col-gutter-sm"> <div class="col-12 row items-center q-col-gutter-sm">
<div class="col-12"> <div class="col-12">
<q-file <q-file
v-model="files_candidate" v-model="files_result"
dense dense
label="เลือกไฟล์ผู้สมัครคัดเลือกคนพิการ" label="เลือกไฟล์การสอบ"
outlined outlined
use-chips use-chips
multiple multiple
@ -816,7 +950,7 @@ onMounted(async () => {
flat flat
round round
color="public" color="public"
@click="checkSaveCandidate" @click="checkSaveResult"
icon="mdi-content-save-outline" icon="mdi-content-save-outline"
> >
<q-tooltip>นท</q-tooltip> <q-tooltip>นท</q-tooltip>