From de6ed189bddef67b144fbd994f7d5d8399dcb703 Mon Sep 17 00:00:00 2001 From: setthawutttty Date: Tue, 9 Sep 2025 09:51:05 +0700 Subject: [PATCH] fix: download xlsx new api --- src/api/recruiting/api.recruit.ts | 1 + .../03_recruiting/views/01_compete/Period.vue | 38 ++++++++++++++----- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/api/recruiting/api.recruit.ts b/src/api/recruiting/api.recruit.ts index c67ee9d65..bc2344e66 100644 --- a/src/api/recruiting/api.recruit.ts +++ b/src/api/recruiting/api.recruit.ts @@ -47,6 +47,7 @@ export default { exportCandidateListNew: (id: string) => `${recruit_report}candidate-new/${id}`, + reportCandidateListNew: (id: string) => `${recruit}report/candidate-new/${id}`, examReport: (id: string,no:string) => `${recruit}report/exam/${id}/${no}`, }; diff --git a/src/modules/03_recruiting/views/01_compete/Period.vue b/src/modules/03_recruiting/views/01_compete/Period.vue index 0c182fd7b..21cafa6e6 100644 --- a/src/modules/03_recruiting/views/01_compete/Period.vue +++ b/src/modules/03_recruiting/views/01_compete/Period.vue @@ -248,11 +248,34 @@ async function clickPassExam(id: string) { async function clickCandidateList(id: string) { showLoader(); await http - .get(config.API.exportCandidateListNew(id)) + .get(config.API.reportCandidateListNew(id), { + headers: { + accept: + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "content-Type": "application/json", + }, + + responseType: "blob", + }) .then(async (res) => { - const data = res.data.result; - data.reportName = `CandidateList`; - await genReport(data, "รายชื่อผู้มีสิทธิ์สอบ", "pdf"); + 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 = `CandidateList.xlsx`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด + document.body.appendChild(link); + link.click(); + + // ลบ URL ที่สร้างขึ้นหลังจากใช้งาน + URL.revokeObjectURL(url); + } }) .catch(async (e) => { messageError($q, JSON.parse(await e.response.data.text())); @@ -705,9 +728,7 @@ onMounted(async () => { " > - นำเข้าไฟล์ผลการสอบ (บัญชีรายชื่อ) + นำเข้าไฟล์ผลการสอบ (บัญชีรายชื่อ)
{{ props.row.score.resultCount }} @@ -722,8 +743,7 @@ onMounted(async () => { icon="mdi-file-excel-outline" > นำเข้าไฟล์ผลการสอบ (บัญชีรายชื่อ) - อีกครั้งนำเข้าไฟล์ผลการสอบ (บัญชีรายชื่อ) อีกครั้ง