import axios from "axios"; import config from "@/app.config"; import { useQuasar } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; const $q = useQuasar(); const mixin = useCounterMixin(); const { showLoader, hideLoader, messageError } = mixin; async function genReportXLSX( data: any, fileName: string, type: string = "xlsx" ) { showLoader(); await axios .post(`${config.API.reportTemplate}/xlsx`, data, { headers: type == "xlsx" ? { accept: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "content-Type": "application/json", } : { accept: "application/pdf", "content-Type": "application/json", }, responseType: "blob", }) .then((res) => { const data = res.data; if (data) { // สร้าง Blob จาก array buffer const blob = new Blob([data]); // สร้าง URL สำหรับไฟล์ Blob const url = URL.createObjectURL(blob); // สร้างลิงก์เพื่อดาวน์โหลดไฟล์ const link = document.createElement("a"); link.href = url; link.download = `${fileName}.${type}`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด document.body.appendChild(link); link.click(); // ลบ URL ที่สร้างขึ้นหลังจากใช้งาน URL.revokeObjectURL(url); } }) .catch(async (e) => { messageError($q, JSON.parse(await e.response.data.text())); }) .finally(() => { hideLoader(); }); } export default genReportXLSX;