hrms-user/src/plugins/genreport.ts
2026-05-29 13:55:05 +07:00

54 lines
1.5 KiB
TypeScript

import axios from "axios";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const { showLoader, hideLoader } = mixin;
async function genReport(data: any, fileName: string, type: string = "docx") {
showLoader();
await axios
.post(config.API.reportTemplate + `/docx`, data, {
headers: {
"content-Type": "application/json",
accept:
type === "docx"
? "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
: "application/pdf",
},
responseType: "arraybuffer",
})
.then(async (res) => {
const responseData = res.data;
if (responseData) {
const mimeType =
type === "docx"
? "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
: "application/pdf";
const blob = new Blob([responseData], { type: mimeType });
const url = URL.createObjectURL(blob);
const baseName = fileName.trim();
const extension = type === "docx" ? "docx" : "pdf";
const link = document.createElement("a");
link.href = url;
link.download = `${baseName}.${extension}`;
document.body.appendChild(link);
link.click();
setTimeout(() => {
document.body.removeChild(link);
URL.revokeObjectURL(url);
}, 100);
}
})
.catch((err) => {
console.log(err);
})
.finally(() => {
hideLoader();
});
}
export default genReport;