diff --git a/src/modules/10_registry/views/main.vue b/src/modules/10_registry/views/main.vue index b799c03..96a98b4 100644 --- a/src/modules/10_registry/views/main.vue +++ b/src/modules/10_registry/views/main.vue @@ -3,7 +3,7 @@ import avatar from "@/assets/avatar_user.jpg"; import { ref, reactive, onMounted } from "vue"; import { useCounterMixin } from "@/stores/mixin"; import { useRegistryInFormationStore } from "@/modules/10_registry/store/registry"; - +import axios from "axios"; //หน้าเมนู import InformationPage from "@/modules/10_registry/tabs/01_information.vue"; import GovernmentPage from "@/modules/10_registry/tabs/02_government.vue"; @@ -17,6 +17,8 @@ import http from "@/plugins/http"; import config from "@/app.config"; import { useQuasar } from "quasar"; +const apiGenReport = + "https://report-server.frappet.synology.me/api/v1/report-template/docx"; const store = useRegistryInFormationStore(); const $q = useQuasar(); const mixin = useCounterMixin(); @@ -98,29 +100,61 @@ function getType() { }); } -function onClickDownloadKp7(type: string) { +async function onClickDownloadKp7(type: string) { showLoader(); const url = type === "FULL" ? config.API.profileReportId(store.profileId) : config.API.profileKp7ShortId(store.profileId); const fileName = type === "FULL" ? "ก.พ.7/ก.ก.1" : "ประวัติแบบย่อ"; - http - .get(url, { - responseType: "arraybuffer", // - }) - .then((res) => { - const data = res.data; - const blob = new Blob([data], { type: "application/pdf" }); - const url = URL.createObjectURL(blob); - const link = document.createElement("a"); - link.href = url; - link.download = `${fileName}.pdf`; - document.body.appendChild(link); - link.click(); + await http + .get(url) + .then(async (res) => { + const data = await res.data.result; + await genReport(data, fileName); + hideLoader(); }) .catch((err) => { messageError($q, err); + hideLoader(); + }) + .finally(() => {}); +} + +async function genReport(data: any, fileName: string) { + showLoader(); + await axios + .post(apiGenReport, data, { + headers: { + accept: "application/pdf", + "content-Type": "application/json", + }, + responseType: "arraybuffer", + }) + .then((res) => { + const data = res.data; + if (data) { + // สร้าง Blob จาก array buffer + const blob = new Blob([data], { + type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + }); + + // สร้าง URL สำหรับไฟล์ Blob + const url = URL.createObjectURL(blob); + + // สร้างลิงก์เพื่อดาวน์โหลดไฟล์ + const link = document.createElement("a"); + link.href = url; + link.download = `${fileName}.pdf`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด + document.body.appendChild(link); + link.click(); + + // ลบ URL ที่สร้างขึ้นหลังจากใช้งาน + URL.revokeObjectURL(url); + } + }) + .catch((e) => { + messageError($q, e); }) .finally(() => { hideLoader();