From 650de029f361be2cd37d0954e1f7c1b5a97743bd Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Fri, 29 May 2026 11:35:50 +0700 Subject: [PATCH] feat(leave): DownloadFile form leave --- .../05_leave/components/DialogDetail.vue | 147 ++++++++++++++++-- 1 file changed, 135 insertions(+), 12 deletions(-) diff --git a/src/modules/05_leave/components/DialogDetail.vue b/src/modules/05_leave/components/DialogDetail.vue index 3333374..7874515 100644 --- a/src/modules/05_leave/components/DialogDetail.vue +++ b/src/modules/05_leave/components/DialogDetail.vue @@ -6,7 +6,7 @@ import http from "@/plugins/http"; import config from "@/app.config"; import { useCounterMixin } from "@/stores/mixin"; import { useLeaveStore } from "@/modules/05_leave/store"; -import { useDataStore } from "@/stores/data"; +import genReport from "@/plugins/genreport"; /** import type*/ import type { @@ -16,8 +16,6 @@ import type { FromCancelDetail, } from "@/modules/05_leave/interface/response/leave"; -import DialogHeader from "@/components/DialogHeader.vue"; -import Workflow from "@/components/Workflow/Main.vue"; import FormLeave from "@/modules/05_leave/components/formDetail/01_SickForm.vue"; import FormChildbirth from "@/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue"; import FormHoliday from "@/modules/05_leave/components/formDetail/05_VacationForm.vue"; @@ -33,7 +31,6 @@ import FormCancel from "@/modules/05_leave/components/formDetail/formCancel.vue" const $q = useQuasar(); const dataStore = useLeaveStore(); -const mainStore = useDataStore(); const { convertStatud } = dataStore; const mixin = useCounterMixin(); const { @@ -411,6 +408,28 @@ async function onSubmit() { }); } +/** + * ฟังก์ชันดาวน์โหลดไฟล์ + * @param id รหัสการลา + * @param fileName ชื่อไฟล์ + * @param type ประเภทไฟล์ + */ +async function onClickDownloadFile(id: string, fileName: string, type: string) { + showLoader(); + await http + .get(config.API.leaveReport(id)) + .then(async (res) => { + const data = res.data.result; + await genReport(data, fileName, type); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + /**** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาแล้วเปิด modal */ watch( () => props.modal, @@ -434,10 +453,62 @@ watch( v-if="props.leaveStatus != 'DELETE'" style="width: 900px; max-width: 80vw" > - + + + {{ ` ${titleMain} ${titleName}` }} + + ดาวน์โหลดไฟล์ + + + + + + + ไฟล์ .DOCX + + + + + + ไฟล์ .pdf + + + + + + + @@ -580,10 +651,62 @@ watch( - + + + {{ ` ${titleMainCancle} ${titleName}` }} + + ดาวน์โหลดไฟล์ + + + + + + + ไฟล์ .DOCX + + + + + + ไฟล์ .pdf + + + + + + +