Kaynağa Gözat

exportActivitySheetReport

خروجی گرفتن از فعالیت های کلاسی
hgh 2 yıl önce
ebeveyn
işleme
ddbc527130

+ 21 - 0
src/api/models/Classroom.js

@@ -21,6 +21,7 @@ export default class ClassroomAPI extends APIRepository {
       getClassroomAndCorrespondingRegistration: (classroomId, ownerId) => '/lma/classrooms/' + classroomId + '/get_classroom_and_corresponding_registration/' + ownerId,
       members: '/lma/registrations',
       activitySheet: '/lma/registrations/activity_sheet',
+      exportActivitySheetReport: '/lma/registrations/export_report',
       enrollByAdmin: (classroomId, userId) => '/lma/classrooms/' + classroomId + '/enrolll?user_id=' + userId,
       dropByAdmin: (classroomId) => '/lma/classrooms/' + classroomId + '/drop',
       createInvoice: (id) => '/lma/classrooms/' + id + '/create_invoice'
@@ -64,6 +65,26 @@ export default class ClassroomAPI extends APIRepository {
     })
   }
 
+  exportActivitySheetReport(data) {
+    return this.sendRequest({
+      apiMethod: 'get',
+      api: this.api,
+      request: this.APIAdresses.exportActivitySheetReport,
+      data: this.getNormalizedSendData({
+        classroom: null, // Number
+        type: null, // String
+        status: null // String
+      }, data),
+      responseType: 'blob',
+      resolveCallback: (response) => {
+        return response.data // xlsxData
+      },
+      rejectCallback: (error) => {
+        return error
+      }
+    })
+  }
+
   get (id) {
     return this.sendRequest({
       apiMethod: 'get',

+ 25 - 0
src/components/Widgets/Classroom/AdminClassroomShow/components/ActivitySheetList.vue

@@ -9,6 +9,13 @@
                 :show-search-button="false"
                 :show-reload-button="false"
                 :show-expand-button="false">
+    <template #toolbar>
+      <q-btn color="primary"
+             :loading="exportReportLoading"
+             @click="getActivitySheetExcel">
+        خروجی اکسل
+      </q-btn>
+    </template>
     <template v-slot:entity-index-table-cell="{inputData, showConfirmRemoveDialog}">
       <template v-if="inputData.col.name === 'is_project_done'">
         <q-badge rounded
@@ -60,6 +67,7 @@ import { EntityIndex } from 'quasar-crud'
 import { APIGateway } from 'src/api/APIGateway.js'
 import BtnControl from 'src/components/Control/btn.vue'
 import DeleteBtn from 'src/components/Control/DeleteBtn.vue'
+import Assist from 'assets/js/Assist'
 
 const BtnControlComp = shallowRef(BtnControl)
 
@@ -81,6 +89,7 @@ export default {
       mounted: false,
       createInvoiceLoading: false,
 
+      exportReportLoading: false,
       activitySheetListInputs: [
         { type: 'hidden', name: 'classroom', value: classroomId },
         { type: 'input', name: 'owner__national_code', value: null, label: 'کد ملی', placeholder: ' ', col: 'col-md-3 col-12' },
@@ -187,6 +196,22 @@ export default {
     },
     getRemoveMessage (row) {
       return 'آیا از حذف ' + row.owner_info.firstname + ' ' + row.owner_info.lastname + ' اطمینان دارید؟'
+    },
+    getActivitySheetExcel () {
+      this.exportReportLoading = true
+      const status = null
+      APIGateway.classroom.exportActivitySheetReport({
+        classroom: this.$route.params.id,
+        type: 'activity_sheet_export',
+        status
+      })
+        .then((xlsxData) => {
+          Assist.saveXlsx(xlsxData, this.classroomId)
+          this.exportReportLoading = false
+        })
+        .catch((e) => {
+          this.exportReportLoading = false
+        })
     }
   }
 }