diff --git a/src/api/11_discipline/api.discipline.ts b/src/api/11_discipline/api.discipline.ts index 4bb3f94a2..d8b2ff9d2 100644 --- a/src/api/11_discipline/api.discipline.ts +++ b/src/api/11_discipline/api.discipline.ts @@ -7,6 +7,7 @@ const appeal = `${env.API_URI}/discipline/complaint_appeal`; const disciplineReport = `${env.API_URI}/discipline/report`; export default { + directorListMain: `${disciplineMain}/director/`, directorList: ( page: number, pageSize: number, @@ -82,13 +83,8 @@ export default { `${discipline}/director/${disciplineId}/${id}`, /** ผู้ถูกพักราชการ */ - suspendMain: ( - page: number, - pageSize: number, - keyword: string, - type: string - ) => - `${suspend}?page=${page}&pageSize=${pageSize}&keyword=${keyword}&profileType=${type}`, + suspendMain: suspend, + suspendById: (id: string) => `${suspend}/${id}`, suspendReport: () => `${suspend}/report`, @@ -101,15 +97,7 @@ export default { deleteFileResult: (id: string, docId: string) => `${disciplineMain}/result/file/${id}/${docId}`, - appealMainList: ( - status: string, - type: string, - year: number, - page: number, - pageSize: number, - keyword: string - ) => - `${appeal}/admin?status=${status}&type=${type}&year=${year}&page=${page}&pageSize=${pageSize}&keyword=${keyword}`, + appealMainList: `${appeal}/admin?`, appealAdd: () => `${appeal}`, appealByID: (id: string) => `${appeal}/${id}`, appealByIDGet: (id: string) => `${appeal}/admin/${id}`, diff --git a/src/components/TablePagination.vue b/src/components/TablePagination.vue index 02ed5960a..5c8b2d1ca 100644 --- a/src/components/TablePagination.vue +++ b/src/components/TablePagination.vue @@ -11,7 +11,6 @@ :pagination-label="paginationLabel" v-model:pagination="pagination" @request="onRequest" - :grid="!$q.screen.gt.xs" :rows-per-page-options="[10, 25, 50, 100]" :loading="loading" > diff --git a/src/composables/usePagination.ts b/src/composables/usePagination.ts index 6cdb1b521..e5558f97c 100644 --- a/src/composables/usePagination.ts +++ b/src/composables/usePagination.ts @@ -34,7 +34,11 @@ export function usePagination( if (!newPagination?.page || !newPagination?.rowsPerPage) return; pagination.value = { ...newPagination }; - if (fetchFunction) { + if ( + fetchFunction && + pagination.value.rowsNumber && + pagination.value.rowsNumber > 0 + ) { await fetchFunction(); // เรียกฟังก์ชันที่ส่งเข้ามา } } diff --git a/src/modules/03_recruiting/components/DialogCandidates.vue b/src/modules/03_recruiting/components/DialogCandidates.vue new file mode 100644 index 000000000..92ad4348f --- /dev/null +++ b/src/modules/03_recruiting/components/DialogCandidates.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/modules/03_recruiting/views/01_compete/Detail.vue b/src/modules/03_recruiting/views/01_compete/Detail.vue index 4557d28d8..903288539 100644 --- a/src/modules/03_recruiting/views/01_compete/Detail.vue +++ b/src/modules/03_recruiting/views/01_compete/Detail.vue @@ -6,14 +6,16 @@ import { useRouter, useRoute } from "vue-router"; import http from "@/plugins/http"; import config from "@/app.config"; +import genReportXLSX from "@/plugins/genreportxlsx"; import { useCounterMixin } from "@/stores/mixin"; import { useQuasar } from "quasar"; import type { RecruitDetailResponse } from "@/modules/03_recruiting/interface/response/Period"; -import Table from "@/modules/03_recruiting/components/Table.vue"; -import genReportXLSX from "@/plugins/genreportxlsx"; import type { Pagination } from "@/modules/03_recruiting/interface/index/Main"; +import Table from "@/modules/03_recruiting/components/Table.vue"; +import DialogCandidates from "@/modules/03_recruiting/components/DialogCandidates.vue"; + const $q = useQuasar(); const router = useRouter(); const route = useRoute(); @@ -58,9 +60,9 @@ const visibleColumns = ref([ "examAttribute", "examScore", "examResult", + "exam_order", "applyDate", ]); - const columns = ref([ { name: "examID", @@ -269,7 +271,7 @@ const columns = ref([ { name: "examResult", align: "center", - label: "ผลคะแนนสอบ", + label: "ผลการสอบ", sortable: false, field: "examResult", headerStyle: "font-size: 14px", @@ -280,6 +282,15 @@ const columns = ref([ sensitivity: "base", }), }, + { + name: "exam_order", + align: "center", + label: "ลำดับที่สอบได้", + sortable: true, + field: "exam_order", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, { name: "applyDate", align: "left", @@ -295,6 +306,7 @@ const columns = ref([ }), }, ]); +const modalCandidates = ref(false); // dialog บรรจุผู้ผ่านการสอบแข่งขัน function clickDetail(examID: string) { router.push(`/compete/import/${importId.value}/${examID}`); @@ -401,7 +413,19 @@ async function fetchData() { }); } -async function candidateToPlacement() { +function onSearch() { + rows.value = onSearchDataTable( + filter.value, + rowsData.value, + columns.value ? columns.value : [] + ); +} + +/** + * ฟังก์ชันยืนยันการบันทึกส่งบรรจุผู้ผ่านการสอบแข่งขัน + * @param date วันที่บัญชีใช้ได้ตั้งแต่ + */ +function onSubmitCandidates(date: Date) { $q.dialog({ title: "ยืนยันการนำผู้ผ่านสอบแข่งขันเข้าสู่ระบบบรรจุ", message: "ต้องการนำผู้ผ่านสอบแข่งขันเข้าสู่ระบบบรรจุใช่หรือไม่?", @@ -414,28 +438,28 @@ async function candidateToPlacement() { .onOk(async () => { showLoader(); await http - .get(config.API.periodRecruitToPlacement(importId.value)) - .then((res) => { + .post(config.API.periodRecruitToPlacement(importId.value), { + accountStartDate: date, + }) + .then(() => { success($q, "นำผู้ผ่านสอบแข่งขันเข้าสู่ระบบบรรจุ"); + modalCandidates.value = false; + router.go(-1); }) .catch((e) => { messageError($q, e); }) .finally(async () => { hideLoader(); - router.go(-1); }); }) .onCancel(() => {}) .onDismiss(() => {}); } -function onSearch() { - rows.value = onSearchDataTable( - filter.value, - rowsData.value, - columns.value ? columns.value : [] - ); +/** ฟังก์ชันเปิดโมดัลสำหรับผู้ส่งผ่านการสอบแข่งขัน */ +function openModalCandidates() { + modalCandidates.value = true; } onMounted(async () => { @@ -443,6 +467,7 @@ onMounted(async () => { await fetchData(); }); + diff --git a/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue b/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue index 08d538298..25e2b3137 100644 --- a/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue +++ b/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue @@ -12,6 +12,7 @@ import { useCounterMixin } from "@/stores/mixin"; import type { RecruitDetailResponse } from "@/modules/03_recruiting/interface/response/Period"; import type { Pagination } from "@/modules/03_recruiting/interface/index/Main"; +import DialogCandidates from "@/modules/03_recruiting/components/DialogCandidates.vue"; import Table from "@/modules/03_recruiting/components/Table.vue"; import genReportXLSX from "@/plugins/genreportxlsx"; @@ -58,6 +59,7 @@ const visibleColumns = ref([ "examAttribute", "examScore", "examResult", + "exam_order", "applyDate", ]); const columns = ref([ @@ -210,7 +212,7 @@ const columns = ref([ { name: "examResult", align: "left", - label: "ผลคะแนนสอบ", + label: "ผลการสอบ", sortable: true, field: "examResult", headerStyle: "font-size: 14px", @@ -218,6 +220,15 @@ const columns = ref([ sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, + { + name: "exam_order", + align: "center", + label: "ลำดับที่สอบได้", + sortable: true, + field: "exam_order", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, { name: "applyDate", align: "left", @@ -339,7 +350,7 @@ async function fetchData() { } /** บรรจุผู้ผ่านการคัดเลือกผู้พิการ */ -async function candidateToPlacement() { +async function onSubmitCandidates() { $q.dialog({ title: "ยืนยันการนำผู้ผ่านคัดเลือกคนพิการเข้าสู่ระบบบรรจุ", message: "ต้องการนำผู้ผ่านคัดเลือกคนพิการเข้าสู่ระบบบรรจุใช่หรือไม่?", @@ -353,15 +364,16 @@ async function candidateToPlacement() { showLoader(); await http .get(config.API.periodDisableToPlacement(importId.value)) - .then((res) => { + .then(() => { success($q, "นำผู้ผ่านคัดเลือกคนพิการเข้าสู่ระบบบรรจุ"); + modalCandidates.value = false; + router.go(-1); }) .catch((e) => { messageError($q, e); }) .finally(async () => { hideLoader(); - router.go(-1); }); }) .onCancel(() => {}) @@ -376,6 +388,13 @@ function onSearch() { ); } +const modalCandidates = ref(false); // dialog บรรจุผู้ผ่านการสอบแข่งขัน + +/** ฟังก์ชันเปิดโมดัลสำหรับผู้ส่งผ่านคัดเลือก */ +function openModalCandidates() { + modalCandidates.value = true; +} + onMounted(async () => { hideLoader(); await fetchData(); @@ -403,7 +422,7 @@ onMounted(async () => { flat color="indigo" v-if="rows.length > 0" - @click="candidateToPlacement" + @click="openModalCandidates" > บรรจุผู้ผ่านการคัดเลือกผู้พิการ @@ -495,8 +514,11 @@ onMounted(async () => {
+
+ {{ col.value ? col.value : " " }} +
- {{ col.value }} + {{ col.value ? col.value : "-" }}
@@ -504,6 +526,12 @@ onMounted(async () => { + + diff --git a/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue b/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue index 6c715a085..f7520694d 100644 --- a/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue +++ b/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue @@ -1154,7 +1154,7 @@ onMounted(async () => {
- + { ? null : formData.commandYear + 543 " - :label="`${'พ.ศ.'}`" + label="ปี พ.ศ." > diff --git a/src/modules/11_discipline/components/4_Result/Table.vue b/src/modules/11_discipline/components/4_Result/Table.vue index 40efc64f6..bb6ea694b 100644 --- a/src/modules/11_discipline/components/4_Result/Table.vue +++ b/src/modules/11_discipline/components/4_Result/Table.vue @@ -1,22 +1,23 @@ - + diff --git a/src/modules/11_discipline/components/6_BasicInformation/Director/AddPage.vue b/src/modules/11_discipline/components/6_BasicInformation/Director/AddPage.vue index 8c2dcd239..6fbc4ecb0 100644 --- a/src/modules/11_discipline/components/6_BasicInformation/Director/AddPage.vue +++ b/src/modules/11_discipline/components/6_BasicInformation/Director/AddPage.vue @@ -19,32 +19,31 @@ const router = useRouter(); * @param id ระบุ บุคคล */ function onSubmit(formData: FormDataPost) { - dialogConfirm($q, () => addData(formData)); -} - -function addData(formData: FormDataPost) { - showLoader(); - http - .post(config.API.director(), { - personalId: formData.personalId ?? "", - prefix: formData.prefix, - firstName: formData.firstname, - lastName: formData.lastname, - position: formData.position, - email: formData.email, - phone: formData.phone, - qualification: formData.qualification, - rootDnaId: formData.rootDnaId, - }) - .then((res) => { - success($q, "บันทึกข้อมูลสำเร็จ"); - }) - .catch((e) => { - messageError($q, e); - }) - .finally(async () => { - router.push(`/discipline/director`); - }); + dialogConfirm($q, async () => { + showLoader(); + await http + .post(config.API.director(), { + personalId: formData.personalId ?? "", + prefix: formData.prefix, + firstName: formData.firstname, + lastName: formData.lastname, + position: formData.position, + email: formData.email, + phone: formData.phone, + qualification: formData.qualification, + rootDnaId: formData.rootDnaId, + }) + .then(async () => { + await success($q, "บันทึกข้อมูลสำเร็จ"); + await router.push(`/discipline/director`); + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + hideLoader(); + }); + }); }