From d978ba870baf3a5366461a54a3d3aca33085d6a9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 20 May 2026 15:59:10 +0700 Subject: [PATCH 01/72] refactor(placement): display columns posMasterNo --- src/components/Dialogs/DialogOrgSelectEmployee.vue | 8 ++++---- src/modules/05_placement/stores/storeSelect.ts | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/Dialogs/DialogOrgSelectEmployee.vue b/src/components/Dialogs/DialogOrgSelectEmployee.vue index 80d5950f4..b9a7b1ee5 100644 --- a/src/components/Dialogs/DialogOrgSelectEmployee.vue +++ b/src/components/Dialogs/DialogOrgSelectEmployee.vue @@ -232,7 +232,8 @@ function close() { async function getDataTable(id: string, level: number = 0) { showLoader(); - + positionNo.value = []; + rowsData.value = []; const body = { node: level, nodeId: id, @@ -265,6 +266,7 @@ async function getDataTable(id: string, level: number = 0) { posMasterNo: e.orgShortname + (e.posMasterNoPrefix != null ? e.posMasterNoPrefix : "") + + " " + e.posMasterNo + (e.posMasterNoSuffix != null ? e.posMasterNoSuffix : ""), positionName: e.positionName, @@ -302,9 +304,7 @@ async function getDataTable(id: string, level: number = 0) { messageError($q, err); }) .finally(() => { - setTimeout(() => { - hideLoader(); - }, 1000); + hideLoader(); }); } diff --git a/src/modules/05_placement/stores/storeSelect.ts b/src/modules/05_placement/stores/storeSelect.ts index 48020472d..c07f26fcb 100644 --- a/src/modules/05_placement/stores/storeSelect.ts +++ b/src/modules/05_placement/stores/storeSelect.ts @@ -14,9 +14,10 @@ export const useSelectOrgStore = defineStore("selectorg", () => { isPosition: e.isPosition, posMasterNo: e.orgShortname + - (e.posMasterNoPrefix != null ? e.posMasterNoPrefix : " ") + + (e.posMasterNoPrefix != null ? e.posMasterNoPrefix : "") + + " " + e.posMasterNo + - (e.posMasterNoSuffix != null ? e.posMasterNoSuffix : " "), + (e.posMasterNoSuffix != null ? e.posMasterNoSuffix : ""), positionName: e.positionName, posTypeName: e.posTypeName, posLevelName: e.posLevelName, From 019b43b450621587a3bf52a83c452c84271aa53d Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Wed, 20 May 2026 18:09:13 +0700 Subject: [PATCH 02/72] feat(registry-edit): add function SortDataByDate --- .../views/edit/components/Table.vue | 89 ++++++------------- 1 file changed, 28 insertions(+), 61 deletions(-) diff --git a/src/modules/04_registryPerson/views/edit/components/Table.vue b/src/modules/04_registryPerson/views/edit/components/Table.vue index f470254c6..cef3e5e81 100644 --- a/src/modules/04_registryPerson/views/edit/components/Table.vue +++ b/src/modules/04_registryPerson/views/edit/components/Table.vue @@ -437,66 +437,6 @@ function classColorRow(isDelete: boolean, isEdit: boolean, isEntry: boolean) { /** ฟังก์ชันดาวน์โหลดไฟล Excel */ function exportToExcel() { exportToExcelPosition(rows.value); - // const newData = rows.value.map((e: DataPosition) => { - // return { - // commandDateAffect: date2Thai(e.commandDateAffect), - // positionName: e.positionName, - // positionType: e.positionType, - // positionLevel: e.positionLevel - // ? e.positionLevel - // : e.positionCee - // ? e.positionCee - // : "", - // positionExecutive: e.positionExecutive, - // amount: e.amount, - // mouthSalaryAmount: e.mouthSalaryAmount, - // positionSalaryAmount: e.positionSalaryAmount, - // organization: findOrgName({ - // root: e.orgRoot, - // child1: e.orgChild1, - // child2: e.orgChild2, - // child3: e.orgChild3, - // child4: e.orgChild4, - // }), - // posNo: - // e.posNoAbb && e.posNo - // ? `${e.posNoAbb} ${e.posNo}` - // : e.posNo - // ? e.posNo - // : "", - // posNumCodeSit: - // e.posNumCodeSitAbb && e.posNumCodeSit - // ? `${e.posNumCodeSit} (${e.posNumCodeSitAbb})` - // : e.posNumCodeSit - // ? e.posNumCodeSit - // : "", - // commandNo: - // e.commandNo && e.commandYear - // ? `${e.commandNo}/${Number(e.commandYear) + 543}` - // : "", - // commandDateSign: date2Thai(e.commandDateSign), - // commandCode: store.convertCommandCodeName(e.commandCode), - // remark: e.remark, - // }; - // }); - - // const headers = columns.value.map((item: any) => item.label) || []; // หัวคอลัมน์ภาษาไทย - // const worksheet = XLSX.utils.json_to_sheet(newData, { - // header: visibleColumns.value, - // }); - - // //แทรกหัวคอลัมน์ภาษาไทย (ใช้ A1, B1, C1 แทน) - // XLSX.utils.sheet_add_aoa(worksheet, [headers], { origin: "A1" }); - - // // Create a new workbook and append the worksheet - // const workbook = XLSX.utils.book_new(); - - // XLSX.utils.book_append_sheet( - // workbook, - // worksheet, - // `รายการประวัติตำแหน่งเงินเดือน` - // ); - // XLSX.writeFile(workbook, "รายการประวัติตำแหน่งเงินเดือน.xlsx"); } const commandCodeOptions = ref(store.commandCodeData); //รายการปรเภทคำสั่ง @@ -931,6 +871,18 @@ function onCancelUpload() { excelPreviewModal.value = false; } +async function handleSortByDate() { + try { + showLoader(); + // http.get(config.API.SortByDate) + await fetchData() + } catch (error) { + messageError($q, error); + } finally { + hideLoader(); + } +} + onMounted(async () => { await Promise.all([fetchData(), fetchType()]); }); @@ -966,8 +918,23 @@ onMounted(async () => { icon="mdi-sort" @click="modalSort = true" > - จัดลำดับข้อมูลจัดลำดับข้อมูล + + + + เรียงลำดับข้อมูล +
Date: Fri, 22 May 2026 09:53:21 +0700 Subject: [PATCH 03/72] fix(placement): send posExecutiveId field in payload --- src/components/Dialogs/DialogOrgSelect.vue | 2 ++ .../components/PersonalList/DialogSelectOrg.vue | 12 +++++++++--- .../05_placement/components/PersonalList/Table.vue | 4 ++-- src/modules/05_placement/interface/request/Main.ts | 1 + src/modules/05_placement/views/03_receiveMain.vue | 1 + .../05_placement/views/06_appointPromoteMain.vue | 1 + src/modules/05_placement/views/08_otherMain.vue | 1 + 7 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/Dialogs/DialogOrgSelect.vue b/src/components/Dialogs/DialogOrgSelect.vue index e3c5e4634..e0173febc 100644 --- a/src/components/Dialogs/DialogOrgSelect.vue +++ b/src/components/Dialogs/DialogOrgSelect.vue @@ -512,12 +512,14 @@ function onSubmit() { posLevelId: selectedPos.value[0].posLevelId, //ชื่อตำแหน่ง posLevelName: selectedPos.value[0].posLevelName, //ชื่อตำแหน่ง posExecutiveName: selectedPos.value[0].posExecutiveName, //ชื่อตำแหน่ง + posExecutiveId: selectedPos.value[0].posExecutiveId, //ชื่อตำแหน่ง reportingDate: convertDateToAPI(datePos.value), posmasterId: dataPosMaster.id, typeCommand: type.value, positionExecutiveField: selectedPos.value[0].positionExecutiveField, //ด้านทางการบริหาร positionArea: selectedPos.value[0].positionArea, //ด้าน/สาขา }; + console.log(body); await props.onSubmit?.(body); close(); diff --git a/src/modules/05_placement/components/PersonalList/DialogSelectOrg.vue b/src/modules/05_placement/components/PersonalList/DialogSelectOrg.vue index e54741069..ad1028738 100644 --- a/src/modules/05_placement/components/PersonalList/DialogSelectOrg.vue +++ b/src/modules/05_placement/components/PersonalList/DialogSelectOrg.vue @@ -165,7 +165,9 @@ async function fetchDataTable(id: string, level: number = 0) { (e) => e !== props.dataRow?.posmasterId ); - positionNo.value = posMain.filter((e: DataPositionNo) => !newUse.includes(e.id)); + positionNo.value = posMain.filter( + (e: DataPositionNo) => !newUse.includes(e.id) + ); } else { positionNo.value = posMain.filter( (e: DataPositionNo) => !positionUse.value.includes(e.id) @@ -241,6 +243,7 @@ async function onClickSubmit() { posLevelId: selectedPos.value[0].posLevelId, //ชื่อตำแหน่ง posLevelName: selectedPos.value[0].posLevelName, //ชื่อตำแหน่ง posExecutiveName: selectedPos.value[0].posExecutiveName, + posExecutiveId: selectedPos.value[0].posExecutiveId, reportingDate: convertDateToAPI(datePos.value), posmasterId: dataPosMaster.id, positionExecutiveField: selectedPos.value[0].positionExecutiveField, //ด้านทางการบริหาร @@ -290,7 +293,10 @@ watch( if (modal.value) { await fetchPositionUes(); if (props?.dataRow?.node !== null && props?.dataRow?.nodeId !== null) { - await fetchPosFind(props?.dataRow?.node ?? 0, props?.dataRow?.nodeId ?? ""); + await fetchPosFind( + props?.dataRow?.node ?? 0, + props?.dataRow?.nodeId ?? "" + ); } else { expanded.value = []; } @@ -345,7 +351,7 @@ function onPosType() { watch( [isAll, isBlank, () => isPosition.value], ([newAll, newBlank, newPos], [oldAll, oldBlank, oldPos]) => { - const shouldFetch = (newAll !== oldAll) || (newBlank !== oldBlank); + const shouldFetch = newAll !== oldAll || newBlank !== oldBlank; const isSelectMode = newPos === "select" && oldPos !== "select"; if (shouldFetch || isSelectMode) { diff --git a/src/modules/05_placement/components/PersonalList/Table.vue b/src/modules/05_placement/components/PersonalList/Table.vue index 1d43085e9..1e151ee01 100644 --- a/src/modules/05_placement/components/PersonalList/Table.vue +++ b/src/modules/05_placement/components/PersonalList/Table.vue @@ -1,5 +1,5 @@ +