diff --git a/src/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue b/src/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue index 01456479f..0fd35dba6 100644 --- a/src/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue +++ b/src/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue @@ -156,6 +156,7 @@ function classInput(val: boolean) { const checkFile = ref(null); // เช็คไฟล์อัปโหลด null ค่าเริ่มต้น, false ไม่มีไฟล์, "img" รูปภาพ, "doc" เอกสาร const urlDownload = ref(""); // url ไฟล์อัปโหลด +const fileDownloadName = ref(""); /** * function หาชื่อไฟล์ * @param id รายการยื่นคำร้องขอแก้ไขข้อมูล @@ -196,8 +197,9 @@ async function downloadUrl(id: string, fileName: string) { fileName ) ) - .then((res) => { + .then(async (res) => { urlDownload.value = res.data.downloadUrl; + fileDownloadName.value = res.data.fileName; if (dataRequest.value.topic == "ขอแก้ไขรูปภาพประจำตัว") { checkFile.value = "img"; } else { @@ -254,6 +256,34 @@ function fetchCheckIsofficer() { } } +async function onDownloadFil() { + try { + // ดึงข้อมูลไฟล์จาก URL + const response = await fetch(urlDownload.value); + + if (!response.ok) { + throw new Error("ไม่สามารถดาวน์โหลดไฟล์ได้"); + } + + // แปลงไฟล์เป็น Blob + const blob = await response.blob(); + + // สร้าง URL ชั่วคราว + const url = URL.createObjectURL(blob); + + // สร้าง เพื่อบังคับดาวน์โหลด + const link = document.createElement("a"); + link.href = url; + link.download = fileDownloadName.value; + link.click(); + + // ลบ URL ชั่วคราวเพื่อประหยัดหน่วยความจำ + URL.revokeObjectURL(url); + } catch (error) { + console.error("เกิดข้อผิดพลาด:", error); + } +} + onMounted(async () => { await Promise.all([fetchDataRequest(), fetchCheckIsofficer()]); }); @@ -402,11 +432,16 @@ onMounted(async () => { icon="mdi-download" dense flat - :label="checkFile == 'img' ? 'ดาวน์โหลดรูปภาพประจำตัว':'ดาวน์โหลดเอกสารหลักฐาน'" + :label=" + checkFile == 'img' + ? 'ดาวน์โหลดรูปภาพประจำตัว' + : 'ดาวน์โหลดเอกสารหลักฐาน' + " color="blue" - :href="urlDownload" - target="_blank" + @click="onDownloadFil" /> + +