From 7175fac96ba9e00674fb3a3a48e014881c022010 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Tue, 7 Oct 2025 10:52:23 +0700 Subject: [PATCH] fix(leave):bug watch --- .../components/FormLeave/01_SickForm.vue | 121 ++++++++---------- .../components/FormLeave/03_Birth.vue | 105 +++++++-------- .../FormLeave/04_HelpWifeBirthForm.vue | 19 ++- .../components/FormLeave/05_VacationForm.vue | 14 +- .../FormLeave/06_OrdinationForm.vue | 19 ++- .../components/FormLeave/07_HajjForm.vue | 23 ++-- .../components/FormLeave/08_MilitaryForm.vue | 23 ++-- .../components/FormLeave/09_StudyForm.vue | 18 +-- .../components/FormLeave/10_TrainForm.vue | 9 +- .../FormLeave/11_WorkInternationalForm.vue | 26 ++-- .../FormLeave/12_FollowSpouseForm.vue | 25 ++-- .../FormLeave/13_RehabilitationForm.vue | 20 +-- src/modules/05_leave/components/ListView.vue | 7 +- src/modules/05_leave/components/Table.vue | 3 +- src/modules/05_leave/interface/index/main.ts | 17 ++- src/modules/05_leave/store.ts | 3 +- src/modules/05_leave/views/EditPage.vue | 43 +++---- 17 files changed, 257 insertions(+), 238 deletions(-) diff --git a/src/modules/05_leave/components/FormLeave/01_SickForm.vue b/src/modules/05_leave/components/FormLeave/01_SickForm.vue index 5f3759a..f1e754e 100644 --- a/src/modules/05_leave/components/FormLeave/01_SickForm.vue +++ b/src/modules/05_leave/components/FormLeave/01_SickForm.vue @@ -7,6 +7,10 @@ import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; +import type { + DocumentLists, + DataOptions, +} from "@/modules/05_leave/interface/index/main"; import type { FormRef } from "@/modules/05_leave/interface/request/SickForm"; /** Use */ @@ -52,7 +56,7 @@ const formDataSick = reactive({ leaveDetail: "", leaveDocument: [], }); -const leaveDocumentList = ref(); +const leaveDocumentList = ref([]); /** ตัวแปร ref สำหรับแสดง validate */ const leaveWroteRef = ref(null); @@ -79,14 +83,27 @@ const FormRef: FormRef = { leaveDetail: leaveDetailRef, }; -/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ -const nameFile = ref(""); -const fileDocDataUpload = ref([]); -async function fileUploadDoc(files: any) { - files.forEach((file: any) => { - fileDocDataUpload.value.push(file); - }); -} +const isLeave = ref(true); // check ว่าลาได้ไหม จาก api +const reasonLeave = ref(""); // ข้อความแจ้งเตือน กรณีลาไม่ได้ +const leaveId = ref(""); +const statusCheck = ref(""); + +/** ตรวจสอบวันลา */ +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataSick.leaveStartDate) == + convertDateToAPI(formDataSick.leaveEndDate) + ) { + return true; + } else { + return false; + } +}); + +/** แจ้งเมื่อวันลาไม่ถูกต้อง */ +const dateEndInputStyle = computed(() => { + return !isLeave.value ? "input-alert" : ""; +}); /** ฟังก์ชั่นตรวจสอบความถูกต้องของข้อมูลในฟอร์ม */ function onValidate() { @@ -129,25 +146,7 @@ function onValidate() { } } -/** - * check ว่าลาได้ไหม จาก api - * @param formData - */ -const isLeave = ref(true); -const reasonLeave = ref(""); - -const checkDate = computed(() => { - if ( - convertDateToAPI(formDataSick.leaveStartDate) == - convertDateToAPI(formDataSick.leaveEndDate) - ) { - return true; - } else { - return false; - } -}); - -// const totalCheck = ref(null); +/** ฟังก์ชันตรวจสอบวันลา */ async function fetchCheck() { if (formDataSick.leaveStartDate && formDataSick.leaveEndDate) { isLoadLeaveDate.value = true; @@ -161,12 +160,11 @@ async function fetchCheck() { ? formDataSick.leaveRange : formDataSick.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; formDataSick.leaveTotal = data.totalDate - data.sumDateWork - data.sumDateHoliday; - // totalCheck.value = - // data.totalDate - data.sumDateWork - data.sumDateHoliday; + reasonLeave.value = data.message != "" ? data.message @@ -175,9 +173,8 @@ async function fetchCheck() { : "ช่วงวันลาที่ระบุไม่ถูกต้อง"; isLeave.value = formDataSick.leaveTotal > 0 ? data.isLeave : false; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); - // totalCheck.value = null; }) .finally(() => { leaveDocumentRef.value.resetValidation(); @@ -186,41 +183,16 @@ async function fetchCheck() { } } -/** แจ้งเมื่อวันลาไม่ถูกต้อง */ -const dateEndInputStyle = computed(() => { - return !isLeave.value ? "input-alert" : ""; -}); - -const leaveId = ref(""); -/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const statusCheck = ref(""); -watch( - () => props.data, - () => { - if (props.data) { - // totalCheck.value = null; - formDataSick.leaveWrote = props.data.leaveWrote; - formDataSick.leaveStartDate = new Date(props.data.leaveStartDate); - formDataSick.leaveEndDate = new Date(props.data.leaveEndDate); - formDataSick.contractTel = props.data.contractTel; - formDataSick.leaveTotal = props.data.leaveTotal; - formDataSick.leaveDetail = props.data.leaveDetail; - formDataSick.leaveRange = props.data.leaveRange; - formDataSick.leaveRangeEnd = props.data.leaveRangeEnd; - leaveDocumentList.value = props.data.leaveDocument; - statusCheck.value = props.data.status; - formDataSick.leaveDocument = []; - } - } -); - -/** Hook */ -onMounted(() => { +/** ฟังก์ชันสำหรับ map ข้อมูลจาก props เข้า form */ +function mapPropsToFormData() { if (props.data) { - // totalCheck.value = null; formDataSick.leaveWrote = props.data.leaveWrote; - formDataSick.leaveStartDate = new Date(props.data.leaveStartDate); - formDataSick.leaveEndDate = new Date(props.data.leaveEndDate); + formDataSick.leaveStartDate = props.data.leaveStartDate + ? new Date(props.data.leaveStartDate) + : null; + formDataSick.leaveEndDate = props.data.leaveEndDate + ? new Date(props.data.leaveEndDate) + : null; formDataSick.contractTel = props.data.contractTel; formDataSick.leaveTotal = props.data.leaveTotal; formDataSick.leaveDetail = props.data.leaveDetail; @@ -229,7 +201,22 @@ onMounted(() => { leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; leaveId.value = props.data.id; + formDataSick.leaveDocument = []; + console.log(props.data.leaveDocument); } +} + +watch( + () => props.data, + () => { + mapPropsToFormData(); + }, + { deep: true } +); + +/** Hook */ +onMounted(() => { + mapPropsToFormData(); }); @@ -391,7 +378,7 @@ onMounted(() => { dense bg-color="white" v-model="formDataSick.leaveRangeEnd" - :options="dataStore.rangeOptions.filter((items:any)=> items.id !== 'AFTERNOON')" + :options="dataStore.rangeOptions.filter((items:DataOptions)=> items.id !== 'AFTERNOON')" emit-value map-options option-value="id" diff --git a/src/modules/05_leave/components/FormLeave/03_Birth.vue b/src/modules/05_leave/components/FormLeave/03_Birth.vue index 5b11938..2889e71 100644 --- a/src/modules/05_leave/components/FormLeave/03_Birth.vue +++ b/src/modules/05_leave/components/FormLeave/03_Birth.vue @@ -8,6 +8,10 @@ import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { FormRef } from "@/modules/05_leave/interface/request/BirthForm"; +import type { + DocumentLists, + DataOptions, +} from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -64,6 +68,12 @@ const leaveAddressRef = ref(null); const leaveDetailRef = ref(null); const leaveDocumentRef = ref(null); +const isLeave = ref(true); // ตัวแปรตรวจสอบการลา +const reasonLeave = ref(""); // ตัวแปรเก็บข้อความแจ้งเตือนการลา +const fileDocDataUpload = ref([]); // ตัวแปรเก็บไฟล์เอกสารประกอบ +const leaveDocumentList = ref([]); // ตัวแปรเก็บรายการเอกสารประกอบ +const statusCheck = ref(""); // ตัวแปรเก็บสถานะการลา + /** maping ref เข้าตัวแปรเพื่อเตรียมตรวจสอบ */ const FormRef: FormRef = { leaveWrote: leaveWroteRef, @@ -76,11 +86,29 @@ const FormRef: FormRef = { leaveDocument: leaveDocumentRef, }; -/** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ -const nameFile = ref(""); -const fileDocDataUpload = ref([]); -async function fileUploadDoc(files: any) { - files.forEach((file: any) => { +/** ตรวจสอบวันลา */ +const checkDate = computed(() => { + if ( + convertDateToAPI(formDataBirth.leaveEndDate) == + convertDateToAPI(formDataBirth.leaveStartDate) + ) { + return true; + } else { + return false; + } +}); + +/** แจ้งเมื่อวันลาไม่ถูกต้อง */ +const dateEndInputStyle = computed(() => { + return !isLeave.value ? "input-alert" : ""; +}); + +/** + * ฟังก์ชั่นอัพโหลดเอกสารประกอบ + * @param files ไฟล์เอกสารประกอบ + */ +async function fileUploadDoc(files: File[]) { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); } @@ -126,20 +154,6 @@ function onValidate() { } } -const isLeave = ref(true); -const reasonLeave = ref(""); - -const checkDate = computed(() => { - if ( - convertDateToAPI(formDataBirth.leaveEndDate) == - convertDateToAPI(formDataBirth.leaveStartDate) - ) { - return true; - } else { - return false; - } -}); - /** ตรวจสอบวันลา */ async function fetchCheck() { if (formDataBirth.leaveStartDate && formDataBirth.leaveEndDate) { @@ -185,47 +199,38 @@ async function fetchCheck() { } } -/** แจ้งเมื่อวันลาไม่ถูกต้อง */ -const dateEndInputStyle = computed(() => { - return !isLeave.value ? "input-alert" : ""; -}); - -/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); -const statusCheck = ref(""); -watch( - () => props.data, - () => { - if (props.data) { - // totalCheck.value = null; - formDataBirth.leaveWrote = props.data.leaveWrote; - formDataBirth.leaveStartDate = props.data.leaveStartDate; - formDataBirth.leaveEndDate = props.data.leaveEndDate; - formDataBirth.leaveTotal = props.data.leaveTotal; - formDataBirth.leaveDetail = props.data.leaveDetail; - formDataBirth.leaveRangeEnd = props.data.leaveRangeEnd; - leaveDocumentList.value = props.data.leaveDocument; - statusCheck.value = props.data.status; - formDataBirth.leaveDocument = []; - } - } -); - -/** Hook */ -onMounted(() => { +/** ฟังก์ชันสำหรับ map ข้อมูลจาก props เข้า form */ +async function onMapDataProps() { if (props.data) { - // totalCheck.value = null; formDataBirth.leaveWrote = props.data.leaveWrote; formDataBirth.leaveStartDate = props.data.leaveStartDate; formDataBirth.leaveEndDate = props.data.leaveEndDate; formDataBirth.leaveTotal = props.data.leaveTotal; formDataBirth.leaveDetail = props.data.leaveDetail; - leaveDocumentList.value = props.data.leaveDocument; formDataBirth.leaveRange = props.data.leaveRange; formDataBirth.leaveRangeEnd = props.data.leaveRangeEnd; + leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; leaveId.value = props.data.id; } +} + +/** ตรวจสอบการเปลี่ยนแปลงข้อมูลใน props */ +watch( + () => props.data, + async () => { + await onMapDataProps(); + formDataBirth.leaveDocument = []; + }, + { deep: true } +); + +/** Hook */ +onMounted(() => { + if (props.data) { + onMapDataProps(); + leaveId.value = props.data.id; + } }); @@ -387,7 +392,7 @@ onMounted(() => { dense bg-color="white" v-model="formDataBirth.leaveRangeEnd" - :options="dataStore.rangeOptions.filter((items:any)=> items.id !== 'AFTERNOON')" + :options="dataStore.rangeOptions.filter((items:DataOptions)=> items.id !== 'AFTERNOON')" emit-value map-options option-value="id" diff --git a/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue b/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue index 9f8739c..a24ab84 100644 --- a/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue +++ b/src/modules/05_leave/components/FormLeave/04_HelpWifeBirthForm.vue @@ -8,6 +8,10 @@ import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { FormRef } from "@/modules/05_leave/interface/request/HelpWifeForm"; +import type { + DocumentLists, + DataOptions, +} from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -65,8 +69,8 @@ const leaveAddressRef = ref(null); const leaveDetailRef = ref(null); const leaveDocumentRef = ref(null); -const leaveDocumentList = ref(); -const statusCheck = ref(""); +const leaveDocumentList = ref([]); +const statusCheck = ref(""); const isLeave = ref(true); const dateEndInputStyle = computed(() => { return !isLeave.value ? "input-alert" : ""; @@ -88,8 +92,8 @@ const FormRef: FormRef = { /** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; @@ -168,7 +172,7 @@ async function fetchCheck() { ? formDataHelpWife.leaveRange : formDataHelpWife.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; formDataHelpWife.leaveTotal = data.totalDate - data.sumDateWork - data.sumDateHoliday; @@ -207,7 +211,8 @@ watch( leaveDocumentList.value = props.data.leaveDocument; statusCheck.value = props.data.status; } - } + }, + { deep: true } ); /**Hook */ @@ -386,7 +391,7 @@ onMounted(async () => { dense bg-color="white" v-model="formDataHelpWife.leaveRangeEnd" - :options="dataStore.rangeOptions.filter((items:any)=> items.id !== 'AFTERNOON')" + :options="dataStore.rangeOptions.filter((items:DataOptions)=> items.id !== 'AFTERNOON')" emit-value map-options option-value="id" diff --git a/src/modules/05_leave/components/FormLeave/05_VacationForm.vue b/src/modules/05_leave/components/FormLeave/05_VacationForm.vue index 87b440d..6781ac3 100644 --- a/src/modules/05_leave/components/FormLeave/05_VacationForm.vue +++ b/src/modules/05_leave/components/FormLeave/05_VacationForm.vue @@ -9,6 +9,7 @@ import { useLeaveStore } from "@/modules/05_leave/store"; import type { FormRef } from "@/modules/05_leave/interface/request/VacationForm"; import type { DataOption } from "@/modules/14_IDP/interface/Main"; +import type { DocumentLists } from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -84,14 +85,14 @@ const FormRef: FormRef = { /** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); +const leaveDocumentList = ref([]); const statusCheck = ref(""); /** แจ้งเมื่อวันลาไม่ถูกต้อง */ @@ -173,7 +174,7 @@ async function fetchCheck() { ? formDataVacation.leaveRange : formDataVacation.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; formDataVacation.leaveTotal = data.totalDate - data.sumDateWork - data.sumDateHoliday; @@ -186,7 +187,7 @@ async function fetchCheck() { : "ช่วงวันลาที่ระบุไม่ถูกต้อง"; isLeave.value = formDataVacation.leaveTotal > 0 ? data.isLeave : false; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -213,7 +214,8 @@ watch( formDataVacation.leaveRange = props.data.leaveRange; formDataVacation.leaveDocument = []; } - } + }, + { deep: true } ); /**Hook */ diff --git a/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue b/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue index 64f6500..3c0a590 100644 --- a/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue +++ b/src/modules/05_leave/components/FormLeave/06_OrdinationForm.vue @@ -8,6 +8,10 @@ import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { OrdinationForm } from "@/modules/05_leave/interface/request/AddAbsence"; +import type { + DocumentLists, + DataOptions, +} from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -92,8 +96,8 @@ const formRef: OrdinationForm = { /** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; @@ -195,7 +199,7 @@ async function fetchCheck() { ? formDataOrdination.leaveRange : formDataOrdination.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; formDataOrdination.leaveTotal = data.totalDate; reasonLeave.value = @@ -207,7 +211,7 @@ async function fetchCheck() { isLeave.value = formDataOrdination.leaveTotal > 0 ? data.isLeave : false; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -222,7 +226,7 @@ const dateEndInputStyle = computed(() => { }); /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); +const leaveDocumentList = ref([]); const statusCheck = ref(""); watch( @@ -253,7 +257,8 @@ watch( statusCheck.value = props.data.status; formDataOrdination.leaveDocument = []; } - } + }, + { deep: true } ); /** Hook */ @@ -450,7 +455,7 @@ onMounted(async () => { dense bg-color="white" v-model="formDataOrdination.leaveRangeEnd" - :options="dataStore.rangeOptions.filter((items:any)=> items.id !== 'AFTERNOON')" + :options="dataStore.rangeOptions.filter((items:DataOptions)=> items.id !== 'AFTERNOON')" emit-value map-options option-value="id" diff --git a/src/modules/05_leave/components/FormLeave/07_HajjForm.vue b/src/modules/05_leave/components/FormLeave/07_HajjForm.vue index 475c8a9..7634b86 100644 --- a/src/modules/05_leave/components/FormLeave/07_HajjForm.vue +++ b/src/modules/05_leave/components/FormLeave/07_HajjForm.vue @@ -8,6 +8,10 @@ import config from "@/app.config"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { HajiForm } from "@/modules/05_leave/interface/request/AddAbsence"; +import type { + DocumentLists, + DataOptions, +} from "@/modules/05_leave/interface/index/main"; /** Use */ const dataStore = useLeaveStore(); @@ -22,7 +26,7 @@ const { } = mixin; const edit = ref(true); -const leaveId = ref(""); +const leaveId = ref(""); const leaveText = ref(""); /** ตัวแปร ref สำหรับแสดง validate */ @@ -78,8 +82,8 @@ const formRef: HajiForm = { /** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; @@ -156,7 +160,7 @@ async function fetchCheck() { ? formDataHaji.leaveRange : formDataHaji.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; formDataHaji.leaveTotal = data.totalDate; leaveText.value = calculateDurationYmd( @@ -171,7 +175,7 @@ async function fetchCheck() { : "ช่วงวันลาที่ระบุไม่ถูกต้อง"; isLeave.value = formDataHaji.leaveTotal > 0 ? data.isLeave : false; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -186,8 +190,8 @@ const dateEndInputStyle = computed(() => { }); /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); -const statusCheck = ref(""); +const leaveDocumentList = ref([]); +const statusCheck = ref(""); watch( () => props.data, async () => { @@ -205,7 +209,8 @@ watch( statusCheck.value = props.data.status; formDataHaji.leaveDocument = []; } - } + }, + { deep: true } ); /**Hook */ @@ -377,7 +382,7 @@ onMounted(async () => { class="col-12 col-md-3 col-sm-6 inputgreen" bg-color="white" v-model="formDataHaji.leaveRangeEnd" - :options="dataStore.rangeOptions.filter((items:any)=> items.id !== 'AFTERNOON')" + :options="dataStore.rangeOptions.filter((items:DataOptions)=> items.id !== 'AFTERNOON')" emit-value map-options option-value="id" diff --git a/src/modules/05_leave/components/FormLeave/08_MilitaryForm.vue b/src/modules/05_leave/components/FormLeave/08_MilitaryForm.vue index aa3b740..b5bb06e 100644 --- a/src/modules/05_leave/components/FormLeave/08_MilitaryForm.vue +++ b/src/modules/05_leave/components/FormLeave/08_MilitaryForm.vue @@ -8,6 +8,10 @@ import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { MilitaryForm } from "@/modules/05_leave/interface/request/AddAbsence"; +import type { + DocumentLists, + DataOptions, +} from "@/modules/05_leave/interface/index/main"; /** Use */ const dataStore = useLeaveStore(); @@ -69,8 +73,8 @@ const formDataMilitary = reactive({ const isLeave = ref(true); const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; @@ -81,8 +85,8 @@ const dateEndInputStyle = computed(() => { }); /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); -const statusCheck = ref(""); +const leaveDocumentList = ref([]); +const statusCheck = ref(""); /** maping ref เข้าตัวแปรเพื่อเตรียมตรวจสอบ */ const formRef: MilitaryForm = { @@ -173,7 +177,7 @@ async function fetchCheck() { ? formDataMilitary.leaveRange : formDataMilitary.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; isLeave.value = data.isLeave; formDataMilitary.leaveTotal = data.totalDate; @@ -184,7 +188,7 @@ async function fetchCheck() { reasonLeave.value = data.message != "" ? data.message : "จำนวนวันลาเกินที่กำหนด"; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -209,7 +213,7 @@ watch( formDataMilitary.absentDayAt = props.data.absentDayAt; formDataMilitary.leaveRange = props.data.leaveRange; formDataMilitary.leaveRangeEnd = props.data.leaveRangeEnd; - const leaveTotal = await calculateDurationYmd( + const leaveTotal = calculateDurationYmd( props.data.leaveStartDate, props.data.leaveEndDate ); @@ -219,7 +223,8 @@ watch( statusCheck.value = props.data.status; formDataMilitary.leaveDocument = []; } - } + }, + { deep: true } ); /**Hook */ @@ -239,7 +244,7 @@ onMounted(async () => { formDataMilitary.leaveRange = props.data.leaveRange; formDataMilitary.leaveRangeEnd = props.data.leaveRangeEnd; - const leaveTotal = await calculateDurationYmd( + const leaveTotal = calculateDurationYmd( props.data.leaveStartDate, props.data.leaveEndDate ); diff --git a/src/modules/05_leave/components/FormLeave/09_StudyForm.vue b/src/modules/05_leave/components/FormLeave/09_StudyForm.vue index 4252799..c8a0fb5 100644 --- a/src/modules/05_leave/components/FormLeave/09_StudyForm.vue +++ b/src/modules/05_leave/components/FormLeave/09_StudyForm.vue @@ -8,6 +8,7 @@ import { useLeaveStore } from "@/modules/05_leave/store"; import { useCounterMixin } from "@/stores/mixin"; import type { studyDaySubjectForm } from "@/modules/05_leave/interface/request/AddAbsence"; +import type { DocumentLists } from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -99,15 +100,15 @@ const formRef: studyDaySubjectForm = { }; const fileDocDataUpload = ref([]); -const leaveDocumentList = ref(); +const leaveDocumentList = ref([]); const statusCheck = ref(""); const isLeave = ref(true); const dateEndInputStyle = computed(() => { return !isLeave.value ? "input-alert" : ""; }); -async function fileUploadDoc(files: any) { - files.forEach((file: any) => { +async function fileUploadDoc(files: File[]) { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); } @@ -193,7 +194,7 @@ async function fetchCheck() { ? formDataStudy.leaveRange : formDataStudy.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; isLeave.value = data.isLeave; formDataStudy.leaveTotal = data.totalDate; @@ -206,7 +207,7 @@ async function fetchCheck() { ? data.message : "จำนวนวันลาเกินที่กำหนด"; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -240,14 +241,15 @@ watch( formDataStudy.leaveRangeEnd = props.data.leaveRangeEnd; formDataStudy.leaveDocument = []; leaveDocumentList.value = props.data.leaveDocument; - const leaveTotal = await calculateDurationYmd( + const leaveTotal = calculateDurationYmd( props.data.leaveStartDate, props.data.leaveEndDate ); leaveText.value = leaveTotal; statusCheck.value = props.data.status; } - } + }, + { deep: true } ); /**Hook */ @@ -275,7 +277,7 @@ onMounted(async () => { leaveDocumentList.value = props.data.leaveDocument; formDataStudy.leaveTotal = props.data.leaveTotal; - const leaveTotal = await calculateDurationYmd( + const leaveTotal = calculateDurationYmd( props.data.leaveStartDate, props.data.leaveEndDate ); diff --git a/src/modules/05_leave/components/FormLeave/10_TrainForm.vue b/src/modules/05_leave/components/FormLeave/10_TrainForm.vue index 9da1296..cdb3ff2 100644 --- a/src/modules/05_leave/components/FormLeave/10_TrainForm.vue +++ b/src/modules/05_leave/components/FormLeave/10_TrainForm.vue @@ -8,6 +8,7 @@ import { useQuasar } from "quasar"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { TrainForm } from "@/modules/05_leave/interface/request/AddAbsence"; +import type { DocumentLists } from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -23,7 +24,7 @@ const { const leaveText = ref(""); const edit = ref(true); -const leaveId = ref(""); +const leaveId = ref(""); /** รับ props มาจากหน้าหลัก */ const props = defineProps({ @@ -96,7 +97,7 @@ const formRef: TrainForm = { }; const isLeave = ref(true); -const leaveDocumentList = ref(); +const leaveDocumentList = ref([]); const statusCheck = ref(""); const dateEndInputStyle = computed(() => { return !isLeave.value ? "input-alert" : ""; @@ -180,7 +181,7 @@ async function fetchCheck() { ? formDataTrain.leaveRange : formDataTrain.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; isLeave.value = data.isLeave; formDataTrain.leaveTotal = data.totalDate; @@ -193,7 +194,7 @@ async function fetchCheck() { ? data.message : "จำนวนวันลาเกินที่กำหนด"; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { diff --git a/src/modules/05_leave/components/FormLeave/11_WorkInternationalForm.vue b/src/modules/05_leave/components/FormLeave/11_WorkInternationalForm.vue index 140a25d..b904013 100644 --- a/src/modules/05_leave/components/FormLeave/11_WorkInternationalForm.vue +++ b/src/modules/05_leave/components/FormLeave/11_WorkInternationalForm.vue @@ -9,6 +9,7 @@ import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { FormRef } from "@/modules/05_leave/interface/request/WorkInternationalForm"; +import type { DocumentLists } from "@/modules/05_leave/interface/index/main"; /** Use */ const $q = useQuasar(); @@ -79,8 +80,8 @@ const FormRef: FormRef = { /** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; @@ -187,7 +188,7 @@ async function fetchCheck() { ? formDataWorkInternational.leaveRange : formDataWorkInternational.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; isLeave.value = data.isLeave; formDataWorkInternational.leaveTotal = data.totalDate; @@ -199,7 +200,7 @@ async function fetchCheck() { ? data.message : "จำนวนวันลาเกินที่กำหนด"; }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -214,7 +215,7 @@ const dateEndInputStyle = computed(() => { }); /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); +const leaveDocumentList = ref([]); const leaveDraftDocument = ref(); const statusCheck = ref(""); @@ -245,21 +246,10 @@ watch( ); leaveText.value = leaveTotal; } - } + }, + { deep: true } ); -// watch( -// () => formDataWorkInternational.leaveEndDate, -// () => { -// if ( -// formDataWorkInternational.leaveStartDate !== null && -// formDataWorkInternational.leaveEndDate !== null -// ) { -// fetchCheck(); -// } -// } -// ); - /**Hook */ onMounted(async () => { if (props.data) { diff --git a/src/modules/05_leave/components/FormLeave/12_FollowSpouseForm.vue b/src/modules/05_leave/components/FormLeave/12_FollowSpouseForm.vue index 5dced28..b0b699e 100644 --- a/src/modules/05_leave/components/FormLeave/12_FollowSpouseForm.vue +++ b/src/modules/05_leave/components/FormLeave/12_FollowSpouseForm.vue @@ -8,6 +8,7 @@ import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; import type { FormRef } from "@/modules/05_leave/interface/request/FollowSpouseForm"; +import type { DocumentLists } from "@/modules/05_leave/interface/index/main"; /** Use */ const dataStore = useLeaveStore(); @@ -116,10 +117,9 @@ const FormRef: FormRef = { }; /** ส่วนของการประกาศและเลือกไฟล์เอกสารประกอบ */ -const nameFile = ref(""); const fileDocDataUpload = ref([]); -const fileUploadDoc = async (files: any) => { - files.forEach((file: any) => { +const fileUploadDoc = async (files: File[]) => { + files.forEach((file: File) => { fileDocDataUpload.value.push(file); }); }; @@ -220,7 +220,7 @@ async function fetchCheck() { ? formDataFollowSpouse.leaveRange : formDataFollowSpouse.leaveRangeEnd, }) - .then((res: any) => { + .then((res) => { const data = res.data.result; isLeave.value = data.isLeave; formDataFollowSpouse.leaveTotal = data.totalDate; @@ -234,7 +234,7 @@ async function fetchCheck() { : "จำนวนวันลาเกินที่กำหนด"; checkTotalHistory(); }) - .catch((e: any) => { + .catch((e) => { messageError($q, e); }) .finally(() => { @@ -275,8 +275,8 @@ const dateEndInputStyle = computed(() => { }); /** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */ -const leaveDocumentList = ref(); -const statusCheck = ref(""); +const leaveDocumentList = ref([]); +const statusCheck = ref(""); watch( () => props.data, async () => { @@ -308,13 +308,13 @@ watch( props.data.coupleDayEndDateHistory; leaveDocumentList.value = props.data.leaveDocument; checkTotalHistory(); - const leaveTotal = await calculateDurationYmd( + const leaveTotal = calculateDurationYmd( props.data.leaveStartDate, props.data.leaveEndDate ); leaveText.value = leaveTotal; - const coupleDayTotalHistory = await calculateDurationYmd( + const coupleDayTotalHistory = calculateDurationYmd( props.data.coupleDayStartDateHistory, props.data.coupleDayEndDateHistory ); @@ -322,7 +322,8 @@ watch( statusCheck.value = props.data.status; formDataFollowSpouse.leaveDocument = []; } - } + }, + { deep: true } ); /**Hook */ @@ -356,13 +357,13 @@ onMounted(async () => { props.data.coupleDayEndDateHistory; leaveDocumentList.value = props.data.leaveDocument; checkTotalHistory(); - const leaveTotal = await calculateDurationYmd( + const leaveTotal = calculateDurationYmd( props.data.leaveStartDate, props.data.leaveEndDate ); leaveText.value = leaveTotal; - const coupleDayTotalHistory = await calculateDurationYmd( + const coupleDayTotalHistory = calculateDurationYmd( props.data.coupleDayStartDateHistory, props.data.coupleDayEndDateHistory ); diff --git a/src/modules/05_leave/components/FormLeave/13_RehabilitationForm.vue b/src/modules/05_leave/components/FormLeave/13_RehabilitationForm.vue index 0aba695..297d9ce 100644 --- a/src/modules/05_leave/components/FormLeave/13_RehabilitationForm.vue +++ b/src/modules/05_leave/components/FormLeave/13_RehabilitationForm.vue @@ -1,6 +1,6 @@