59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
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 genReport(data: any, fileName: string, type: string = "docx") {
|
|
showLoader();
|
|
await axios
|
|
.post(`${config.API.reportTemplate}/docx`, data, {
|
|
headers:
|
|
type == "docx"
|
|
? {
|
|
accept:
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
"content-Type": "application/json",
|
|
}
|
|
: {
|
|
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}.${type === "docx" ? "docx" : "pdf"}`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
|
|
// ลบ URL ที่สร้างขึ้นหลังจากใช้งาน
|
|
URL.revokeObjectURL(url);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
messageError($q, err);
|
|
})
|
|
.finally(() => {
|
|
hideLoader();
|
|
});
|
|
}
|
|
|
|
export default genReport;
|