Bladeren bron

fixed #204

ali 3 jaren geleden
bovenliggende
commit
7998a716ec

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

@@ -7,6 +7,7 @@ export default class SessionAttendanceSheetsAPI extends APIRepository {
     super('session', appApi, '/lma/session_attendance_sheets', SessionAttendanceSheets)
     this.APIAdresses = {
       base: '/lma/session_attendance_sheets',
+      exportReport: '/lma/session_attendance_sheets/export_report',
       sessionSheets: '/lma/session_attendance_sheets/session_sheets',
       submitAssignment: '/lma/session_attendance_sheets/submit_assignment',
       submitAttendanceStatus: '/lma/session_attendance_sheets/submit_attendance_status',
@@ -127,4 +128,24 @@ export default class SessionAttendanceSheetsAPI extends APIRepository {
       }
     })
   }
+
+  exportReport(data) {
+    return this.sendRequest({
+      apiMethod: 'get',
+      api: this.api,
+      request: this.APIAdresses.exportReport,
+      data: this.getNormalizedSendData({
+        session: null, // Number
+        type: 'list', // String
+        registration__status: null // String -> ex: REGISTERED
+      }, data),
+      responseType: 'blob',
+      resolveCallback: (response) => {
+        return response.data // xlsxData
+      },
+      rejectCallback: (error) => {
+        return error
+      }
+    })
+  }
 }

+ 25 - 0
src/components/Widgets/SessionAttendanceSheet/AdminSessionAttendanceSheetList/AdminSessionAttendanceSheetList.vue

@@ -22,6 +22,13 @@
                   :show-search-button="false"
                   :show-expand-button="false"
                   :show-reload-button="false">
+      <template #toolbar>
+        <q-btn color="primary"
+               :loading="exportReportLoading"
+               @click="getReportExcel">
+          خروجی اکسل
+        </q-btn>
+      </template>
       <template #entity-index-table-cell="{inputData}">
         <template v-if="inputData.col.name === 'number'">
           {{ inputData.rowNumber }}
@@ -63,6 +70,7 @@ import BtnControl from 'src/components/Control/btn.vue'
 import { Registration } from 'src/models/Registration.js'
 import Breadcrumbs from 'src/components/Widgets/Breadcrumbs/Breadcrumbs.vue'
 import { SessionAttendanceSheets } from 'src/models/SessionAttendanceSheets.js'
+import Assist from 'assets/js/Assist'
 
 const BtnControlComp = shallowRef(BtnControl)
 
@@ -141,6 +149,7 @@ export default {
         ]
       },
       mounted: false,
+      exportReportLoading: false,
       createRouteName: ''
     }
   },
@@ -177,6 +186,22 @@ export default {
     search () {
       this.$refs.entityIndex.search()
     },
+    getReportExcel () {
+      this.exportReportLoading = true
+      const status = FormBuilderAssist.getInputsByName(this.inputs, 'registration__status').value ? FormBuilderAssist.getInputsByName(this.inputs, 'registration__status').value : null
+      APIGateway.sessionAttendanceSheets.exportReport({
+        session: this.$route.params.session_id,
+        type: 'list',
+        registration__status: status
+      })
+        .then((xlsxData) => {
+          Assist.saveXlsx(xlsxData, this.classroom.title)
+          this.exportReportLoading = false
+        })
+        .catch((e) => {
+          this.exportReportLoading = false
+        })
+    },
     setActionBtn () {
       FormBuilderAssist.setAttributeByName(this.inputs, 'btn', 'atClick', this.search)
     },