From 524523976fc308b2ecd3adcb20eba5ae96f28d6b Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Thu, 17 Jul 2025 14:51:19 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=20Function=20=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=A2=E0=B8=81=E0=B8=B2=E0=B8=A3=E0=B8=9B?= =?UTF-8?q?=E0=B8=A3=E0=B8=B0=E0=B8=A7=E0=B8=B1=E0=B8=95=E0=B8=B4=E0=B8=95?= =?UTF-8?q?=E0=B8=B3=E0=B9=81=E0=B8=AB=E0=B8=99=E0=B9=88=E0=B8=87/?= =?UTF-8?q?=E0=B9=80=E0=B8=87=E0=B8=B4=E0=B8=99=E0=B9=80=E0=B8=94=E0=B8=B7?= =?UTF-8?q?=E0=B8=AD=E0=B8=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interface/request/Edit.ts | 1 + .../views/edit/components/DialogForm.vue | 147 ++++++++++++++---- .../views/edit/components/FormPosition.vue | 25 ++- .../views/edit/components/Table.vue | 32 +++- 4 files changed, 171 insertions(+), 34 deletions(-) diff --git a/src/modules/04_registryPerson/interface/request/Edit.ts b/src/modules/04_registryPerson/interface/request/Edit.ts index cca7de5ed..7c8353da6 100644 --- a/src/modules/04_registryPerson/interface/request/Edit.ts +++ b/src/modules/04_registryPerson/interface/request/Edit.ts @@ -21,6 +21,7 @@ interface FormDataSalary { positionLine: string; // สายงาน positionPathSide: string; //ด้าน/สาขา positionExecutive: string; //ตำแหน่งทางการบริหาร + positionExecutiveField: string; //ด้านทางการบริหาร amount: number | null; //เงินเดือน amountSpecial: number | null; //เงินค่าตอบแทนพิเศษ positionSalaryAmount: number | null; //เงินประจำตำแหน่ง diff --git a/src/modules/04_registryPerson/views/edit/components/DialogForm.vue b/src/modules/04_registryPerson/views/edit/components/DialogForm.vue index 282c9a8b8..ad12ede48 100644 --- a/src/modules/04_registryPerson/views/edit/components/DialogForm.vue +++ b/src/modules/04_registryPerson/views/edit/components/DialogForm.vue @@ -2,6 +2,7 @@ import { ref, reactive, onMounted, nextTick, watch } from "vue"; import { useQuasar } from "quasar"; +import { useRoute } from "vue-router"; import { useCounterMixin } from "@/stores/mixin"; import { useEditPosDataStore } from "@/modules/04_registryPerson/stores/Edit"; import http from "@/plugins/http"; @@ -22,6 +23,7 @@ import DialogHeader from "@/components/DialogHeader.vue"; import FormPosition from "@/modules/04_registryPerson/views/edit/components/FormPosition.vue"; const $q = useQuasar(); +const route = useRoute(); const { dialogConfirm, showLoader, @@ -32,10 +34,13 @@ const { } = useCounterMixin(); const store = useEditPosDataStore(); +const profileId = ref(route.params.id.toString()); + const modal = defineModel("modal", { required: true }); const empType = defineModel("empType", { required: true }); const rowData = defineModel("rowData", { required: true }); const rowIndex = defineModel("rowIndex", { required: true }); +const isAddPosition = defineModel("isAddPosition", { required: true }); const props = defineProps({ fetchData: { type: Function, required: true }, @@ -56,6 +61,7 @@ const formData = reactive({ positionLine: "", // สายงาน positionPathSide: "", //ด้าน/สาขา positionExecutive: "", //ตำแหน่งทางการบริหาร + positionExecutiveField: "", //ด้านทางการบริหาร amount: null, //เงินเดือน amountSpecial: null, //เงินค่าตอบแทนพิเศษ positionSalaryAmount: null, //เงินประจำตำแหน่ง @@ -84,6 +90,7 @@ const formReadonly = reactive({ positionLine: "", // สายงาน positionPathSide: "", //ด้าน/สาขา positionExecutive: "", //ตำแหน่งทางการบริหาร + positionExecutiveField: "", //ด้านทางการบริหาร amount: null, //เงินเดือน amountSpecial: null, //เงินค่าตอบแทนพิเศษ positionSalaryAmount: null, //เงินประจำตำแหน่ง @@ -249,14 +256,10 @@ async function fetchDataOptionExecutive() { * @param status แก่ไข , เพิ่ม */ async function updateSelectType(val: string, status: boolean = false) { - console.log(val); - console.log(dataLevel.value); - const listLevel = val ? dataLevel.value.find((e: DataPosType) => e.posTypeName === val) : null; - console.log("เช็คประเภทตำแหน่งงาน", listLevel); // เช็คประเภทตำแหน่งงาน if (listLevel) { store.posLevelData = listLevel.posLevels.map((e: DataPosLevel) => ({ @@ -308,6 +311,7 @@ async function onDefineData(index: number) { formData.positionLine = salaryNew.positionLine; formData.positionPathSide = salaryNew.positionPathSide; formData.positionExecutive = salaryNew.positionExecutive; + formData.positionExecutiveField = salaryNew.positionExecutiveField; formData.amount = salaryNew.amount; formData.amountSpecial = salaryNew.amountSpecial; formData.positionSalaryAmount = salaryNew.positionSalaryAmount; @@ -335,6 +339,7 @@ async function onDefineData(index: number) { formReadonly.positionLine = salaryOld.positionLine; formReadonly.positionPathSide = salaryOld.positionPathSide; formReadonly.positionExecutive = salaryOld.positionExecutive; + formReadonly.positionExecutiveField = salaryOld.positionExecutiveField; formReadonly.amount = salaryOld.amount; formReadonly.positionSalaryAmount = salaryOld.positionSalaryAmount; formReadonly.mouthSalaryAmount = salaryOld.mouthSalaryAmount; @@ -357,31 +362,95 @@ async function onNavigateRow(action: string) { function onClickCloseDialog() { modal.value = false; + formData.commandCode = ""; + formData.commandNo = ""; + formData.commandYear = null; + formData.commandDateAffect = null; + formData.commandDateSign = null; + formData.posNoAbb = ""; + formData.posNo = ""; + formData.positionName = ""; + formData.positionType = ""; + formData.positionLevel = ""; + formData.positionCee = ""; + formData.positionLine = ""; + formData.positionPathSide = ""; + formData.positionExecutive = ""; + formData.positionExecutiveField = ""; + formData.amount = null; + formData.amountSpecial = null; + formData.positionSalaryAmount = null; + formData.mouthSalaryAmount = null; + formData.orgRoot = ""; + formData.orgChild1 = ""; + formData.orgChild2 = ""; + formData.orgChild3 = ""; + formData.orgChild4 = ""; + formData.remark = ""; + formData.posNumCodeSit = ""; + formData.posNumCodeSitAbb = ""; + + formReadonly.commandCode = ""; + formReadonly.commandNo = ""; + formReadonly.commandYear = null; + formReadonly.commandDateAffect = null; + formReadonly.commandDateSign = null; + formReadonly.posNoAbb = ""; + formReadonly.posNo = ""; + formReadonly.positionName = ""; + formReadonly.positionType = ""; + formReadonly.positionLevel = ""; + formReadonly.positionCee = ""; + formReadonly.positionLine = ""; + formReadonly.positionPathSide = ""; + formReadonly.positionExecutive = ""; + formReadonly.positionExecutiveField = ""; + formReadonly.amount = null; + formReadonly.positionSalaryAmount = null; + formReadonly.mouthSalaryAmount = null; + formReadonly.orgRoot = ""; + formReadonly.orgChild1 = ""; + formReadonly.orgChild2 = ""; + formReadonly.orgChild3 = ""; + formReadonly.orgChild4 = ""; + formReadonly.remark = ""; + formReadonly.posNumCodeSit = ""; + formReadonly.posNumCodeSitAbb = ""; } function onSubmit() { - console.log(formData); dialogConfirm($q, async () => { showLoader(); - await http - .patch(config.API.salaryTemp + `/${salaryId.value}`, { - ...formData, - type: empType.value?.toLocaleUpperCase(), - commandDateAffect: convertDateToAPI(formData.commandDateAffect), - commandDateSign: convertDateToAPI(formData.commandDateSign), - amount: formData.amount - ? Number(String(formData.amount)?.replace(/,/g, "")) - : null, - amountSpecial: formData.amountSpecial - ? Number(String(formData.amountSpecial)?.replace(/,/g, "")) - : null, - positionSalaryAmount: formData.positionSalaryAmount - ? Number(String(formData.positionSalaryAmount)?.replace(/,/g, "")) - : null, - mouthSalaryAmount: formData.mouthSalaryAmount - ? Number(String(formData.mouthSalaryAmount)?.replace(/,/g, "")) - : null, - }) + const path = isAddPosition.value + ? config.API.salaryTemp + : config.API.salaryTemp + `/${salaryId.value}`; + const method = isAddPosition.value ? "post" : "patch"; + await http[method](path, { + ...formData, + profileId: + isAddPosition.value && empType.value === "officer" + ? profileId.value + : undefined, + profileEmployeeId: + isAddPosition.value && empType.value !== "officer" + ? profileId.value + : undefined, + type: empType.value?.toLocaleUpperCase(), + commandDateAffect: convertDateToAPI(formData.commandDateAffect), + commandDateSign: convertDateToAPI(formData.commandDateSign), + amount: formData.amount + ? Number(String(formData.amount)?.replace(/,/g, "")) + : null, + amountSpecial: formData.amountSpecial + ? Number(String(formData.amountSpecial)?.replace(/,/g, "")) + : null, + positionSalaryAmount: formData.positionSalaryAmount + ? Number(String(formData.positionSalaryAmount)?.replace(/,/g, "")) + : null, + mouthSalaryAmount: formData.mouthSalaryAmount + ? Number(String(formData.mouthSalaryAmount)?.replace(/,/g, "")) + : null, + }) .then(async () => { await props.fetchData?.(); success($q, "บันทึกข้อมูลสำเร็จ"); @@ -415,7 +484,7 @@ watch(modal, async (val) => { posLineOptions.value = store.posLineData; posPathSideOptions.value = store.posPathSideData; posExecutiveOptions.value = store.posExecutiveData; - await onDefineData(rowIndex.value); + !isAddPosition.value && (await onDefineData(rowIndex.value)); hideLoader(); } }); @@ -426,17 +495,19 @@ onMounted(async () => {