import config from "@/app.config"; import { useQuasar } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import http from "@/plugins/http"; const $q = useQuasar(); const mixin = useCounterMixin(); const { showLoader, hideLoader, messageError } = mixin; async function generateTxt(id: string, fileName: string) { showLoader(); await http .post(`${config.API.log}/report/logsDetail?id=${id}`, "", { headers: { "Content-Type": "text/plain;charset=utf-8", }, responseType: "blob", }) .then(async (res) => { const data = await res.data.text(); if (data) { const formattedData = formatData(data); // สร้าง Blob จาก array buffer const blob = new Blob([formattedData], { type: "text/plain;charset=utf-8", }); // สร้าง URL สำหรับไฟล์ Blob const url = URL.createObjectURL(blob); // สร้างลิงก์เพื่อดาวน์โหลดไฟล์ const link = document.createElement("a"); link.href = url; link.download = `${fileName}.txt`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด document.body.appendChild(link); link.click(); // ลบ URL ที่สร้างขึ้นหลังจากใช้งาน URL.revokeObjectURL(url); } }) .catch((err) => { messageError($q, err); }) .finally(() => { hideLoader(); }); } function formatData(data: any) { // ตรวจสอบว่าเป็น JSON และจัดรูปแบบ try { const jsonData = JSON.parse(data); // แปลงข้อมูลเป็น JSON return JSON.stringify(jsonData, null, 2); // จัดให้สวยงาม (2 ช่องว่าง) } catch { // ถ้าไม่ใช่ JSON ให้คืนค่าข้อมูลดั้งเดิม return data; } } export default generateTxt;