ali 3 tahun lalu
induk
melakukan
5111a38d9c

+ 1 - 1
src/api/classes/APIInstanceWrapper.js

@@ -217,7 +217,7 @@ export default class APIInstanceWrapper {
 
   static getRequest(req, option) {
     if (req === 'get') {
-      return option.api.get(option.request, { params: option.data, timeout })
+      return option.api.get(option.request, { params: option.data, responseType: option.responseType, timeout })
     } else if (req === 'post') {
       return option.api.post(option.request, option.data)
     } else if (req === 'put') {

+ 2 - 1
src/api/classes/APIRepository.js

@@ -38,7 +38,7 @@ export default class APIRepository {
    * @param requestData - { apiMethod, api, request, cacheKey, cache, resolveCallback, rejectCallback, data, params }
    * @returns A promise that will resolve or reject based on the response from the API call.
    */
-  sendRequest({ apiMethod, api, request, cacheKey, cache, resolveCallback, rejectCallback, data, params }) {
+  sendRequest({ apiMethod, api, request, cacheKey, cache, resolveCallback, rejectCallback, data, params, responseType }) {
     return new Promise((resolve, reject) => {
       APIInstanceWrapper[apiMethod]({
         api,
@@ -46,6 +46,7 @@ export default class APIRepository {
         cacheKey,
         cache,
         params,
+        responseType,
         data
       })
         .then((response) => {

+ 2 - 1
src/api/models/Registration.js

@@ -59,8 +59,9 @@ export default class RegistrationAPI extends APIRepository {
         type: null, // String
         status: null // String
       }, data),
+      responseType: 'blob',
       resolveCallback: (response) => {
-        return response.data // csv string
+        return response.data // xlsxData
       },
       rejectCallback: (error) => {
         return error

+ 8 - 7
src/assets/js/Assist.js

@@ -77,14 +77,15 @@ class Assist {
     exportLink.setAttribute('download', fileName + '.csv')
     exportLink.setAttribute('target', '_blank')
     exportLink.click()
-    // exportLink.appendChild(document.createTextNode('test.csv'));
-
-    // document.getElementById('results').appendChild(exportLink);
+  }
 
-    // const exportLink = document.createElement('a')
-    // exportLink.setAttribute('href', 'data:text/csv;base64,' + window.btoa(data))
-    // exportLink.appendChild(document.createTextNode(fileName + '.csv'))
-    // document.getElementById('results').appendChild(exportLink)
+  static saveXlsx (data, fileName) {
+    const xlsxData = window.URL.createObjectURL(new Blob([data]))
+    const exportLink = document.createElement('a')
+    exportLink.setAttribute('href', xlsxData)
+    exportLink.setAttribute('download', fileName + '.xlsx')
+    exportLink.setAttribute('target', '_blank')
+    exportLink.click()
   }
 }
 

+ 4 - 3
src/pages/Admin/Classroom/show.vue

@@ -705,11 +705,12 @@ export default {
         type: 'users',
         status
       })
-        .then((csvData) => {
-          Assist.saveCSV(csvData, this.classroom.title)
+        .then((xlsxData) => {
+          Assist.saveXlsx(xlsxData, this.classroom.title)
           this.exportReportLoading = false
         })
-        .catch(() => {
+        .catch((e) => {
+          console.log('e', e)
           this.exportReportLoading = false
         })
     },