From 1fc7882918111ff885937f6d8997470c13f43ad4 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Fri, 17 Oct 2025 17:22:40 +0700 Subject: [PATCH] fix:convertDateToAPI --- .../interface/response/organizational.ts | 16 +++++++++++++++- .../02_organization/store/organizational.ts | 5 +++-- .../03_recruiting/views/01_compete/Detail.vue | 4 ++-- .../views/02_qualify/DisableDetail.vue | 12 +++++++++--- .../components/Repatriate/RepatriateDetail.vue | 2 +- .../06_retirement/views/04_exitInterview.vue | 3 ++- .../components/DialogRecordPerson.vue | 8 +++++++- .../components/scholarship/DialogReturn.vue | 5 +++-- 8 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/modules/02_organization/interface/response/organizational.ts b/src/modules/02_organization/interface/response/organizational.ts index 5adbcfbb7..ab9c2c1d9 100644 --- a/src/modules/02_organization/interface/response/organizational.ts +++ b/src/modules/02_organization/interface/response/organizational.ts @@ -133,6 +133,20 @@ interface Position2 { positionExecutiveField: string; // ด้านทางการบริหาร positionArea: string; // ด้าน/สาขา positionIsSelected: string; // เป็นตำแหน่งที่ถูกเลือกในรอบนั้นๆ หรือไม่? + orgShortname: string; // อักษรย่อตำแหน่ง + posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ) + posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข + posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช. + fullNameCurrentHolder: string | null; + fullNameNextHolder: string | null; + positions: Position[]; // ตำแหน่ง + isSit: boolean; + profilePosition: string; + profilePostype: string; + profilePoslevel: string; + conditionReason: string; + isCondition: boolean; + isDirector: boolean; } interface PosMaster2 { @@ -162,7 +176,7 @@ interface PosMaster2 { current_holderId?: string; next_holderId?: string; isSit?: boolean; - ancestorDNA: string; + ancestorDNA?: string; } interface HistoryPos { diff --git a/src/modules/02_organization/store/organizational.ts b/src/modules/02_organization/store/organizational.ts index b51b5dd79..db9136246 100644 --- a/src/modules/02_organization/store/organizational.ts +++ b/src/modules/02_organization/store/organizational.ts @@ -9,6 +9,7 @@ import type { DataActive, SumPosition, PosMaster, + PosMaster2, } from "@/modules/02_organization/interface/response/organizational"; export const useOrganizational = defineStore("organizationalStore", () => { @@ -88,7 +89,7 @@ export const useOrganizational = defineStore("organizationalStore", () => { * @returns ข้อมูลตำแหน่งที่ผ่านการประมวลผลแล้ว */ function fetchPosMaster(data: PosMaster[]) { - const newPosMaster = data.map((e: PosMaster) => ({ + const newPosMaster: PosMaster2[] = data.map((e: PosMaster) => ({ ...e, positionIsSelected: typeOrganizational.value === "draft" && e.fullNameNextHolder !== null @@ -109,7 +110,7 @@ export const useOrganizational = defineStore("organizationalStore", () => { isSit: e.isSit, })); - return newPosMaster; + return newPosMaster || []; } /** diff --git a/src/modules/03_recruiting/views/01_compete/Detail.vue b/src/modules/03_recruiting/views/01_compete/Detail.vue index ce46b2d2d..7db754df5 100644 --- a/src/modules/03_recruiting/views/01_compete/Detail.vue +++ b/src/modules/03_recruiting/views/01_compete/Detail.vue @@ -20,7 +20,7 @@ const $q = useQuasar(); const router = useRouter(); const route = useRoute(); const mixin = useCounterMixin(); -const { messageError, success, showLoader, hideLoader, onSearchDataTable } = +const { messageError, success, showLoader, hideLoader, onSearchDataTable,convertDateToAPI } = mixin; const initialPagination = ref({ @@ -370,7 +370,7 @@ function onSubmitCandidates(date: Date) { showLoader(); await http .post(config.API.periodRecruitToPlacement(importId.value), { - accountStartDate: date, + accountStartDate: convertDateToAPI(date), }) .then(() => { success($q, "นำผู้ผ่านสอบแข่งขันเข้าสู่ระบบบรรจุ"); diff --git a/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue b/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue index 10aeb9776..89d2625bc 100644 --- a/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue +++ b/src/modules/03_recruiting/views/02_qualify/DisableDetail.vue @@ -20,8 +20,14 @@ const $q = useQuasar(); const router = useRouter(); const route = useRoute(); const mixin = useCounterMixin(); -const { messageError, success, showLoader, hideLoader, onSearchDataTable } = - mixin; +const { + messageError, + success, + showLoader, + hideLoader, + onSearchDataTable, + convertDateToAPI, +} = mixin; const year = ref("2566"); const round = ref("1"); @@ -341,7 +347,7 @@ async function onSubmitCandidates(date: Date) { showLoader(); await http .post(config.API.periodDisableToPlacement(importId.value), { - accountStartDate: date, + accountStartDate: convertDateToAPI(date), }) .then(() => { success($q, "นำผู้ผ่านคัดเลือกคนพิการเข้าสู่ระบบบรรจุ"); diff --git a/src/modules/05_placement/components/Repatriate/RepatriateDetail.vue b/src/modules/05_placement/components/Repatriate/RepatriateDetail.vue index c0c72194f..ce538b3ba 100644 --- a/src/modules/05_placement/components/Repatriate/RepatriateDetail.vue +++ b/src/modules/05_placement/components/Repatriate/RepatriateDetail.vue @@ -95,7 +95,7 @@ function onSubmit() { positionNumberOld: positionNumberOld.value, amountOld: salary.value, organization: organization.value, - date: date.value, + date: convertDateToAPI(date.value), dateRepatriation: convertDateToAPI(dateRepatriation.value), reason: reason.value, }; diff --git a/src/modules/06_retirement/views/04_exitInterview.vue b/src/modules/06_retirement/views/04_exitInterview.vue index d4396037e..3cd085d29 100644 --- a/src/modules/06_retirement/views/04_exitInterview.vue +++ b/src/modules/06_retirement/views/04_exitInterview.vue @@ -27,6 +27,7 @@ const { success, dialogConfirm, onSearchDataTable, + convertDateToAPI } = mixin; /** คอลัมน์ */ @@ -206,7 +207,7 @@ async function saveAppoint() { if (result) { dialogConfirm($q, async () => { const body = { - appointDate: dateBreak.value, + appointDate: convertDateToAPI(dateBreak.value), }; showLoader(); await http diff --git a/src/modules/15_development/components/DialogRecordPerson.vue b/src/modules/15_development/components/DialogRecordPerson.vue index 03a488880..6b94fa1a5 100644 --- a/src/modules/15_development/components/DialogRecordPerson.vue +++ b/src/modules/15_development/components/DialogRecordPerson.vue @@ -27,6 +27,7 @@ const { hideLoader, date2Thai, calculateDurationYmd, + convertDateToAPI, } = useCounterMixin(); /** @@ -77,7 +78,12 @@ function onSubmit() { dialogConfirm($q, () => { showLoader(); http - .post(config.API.devUploadUser + projectId.value, formData) + .post(config.API.devUploadUser + projectId.value, { + ...formData, + dateStart: convertDateToAPI(formData.dateStart), + dateEnd: convertDateToAPI(formData.dateEnd), + commandDate: convertDateToAPI(formData.commandDate), + }) .then(async (res) => { await props?.fetchData(); tab.value = res.data.result ? "IN" : "OUT"; diff --git a/src/modules/15_development/components/scholarship/DialogReturn.vue b/src/modules/15_development/components/scholarship/DialogReturn.vue index f229e1a72..0c0199316 100644 --- a/src/modules/15_development/components/scholarship/DialogReturn.vue +++ b/src/modules/15_development/components/scholarship/DialogReturn.vue @@ -21,6 +21,7 @@ const { messageError, dialogConfirm, success, + convertDateToAPI, } = mixin; const modal = defineModel("modal", { required: true }); @@ -61,8 +62,8 @@ function onSubmit() { .put(config.API.devScholarship + `/admin/detail/${id.value}`, { bookNumber: bookNumber.value, bookDate: bookDate.value, - governmentDate: governmentDate.value, - governmentEndDate: governmentEndDate.value, + governmentDate: convertDateToAPI(governmentDate.value), + governmentEndDate: convertDateToAPI(governmentEndDate.value), isGraduated: isGraduated.value, graduatedDate: isGraduated.value == "true" ? graduatedDate.value : null,