Bladeren bron

Merge branch 'master' of http://git.hghweb.ir/ali.s/palizvani-front-vite into production

HgH 2 jaren geleden
bovenliggende
commit
d5a52a2ebd

+ 22 - 0
src/api/models/AnswerBook.js

@@ -8,6 +8,7 @@ export default class AnswerBookAPI extends APIRepository {
     this.APIAdresses = {
       base: '/lma/answer_books',
       getOrCreate: '/lma/answer_books/get_or_create',
+      exportReport: '/lma/answer_books/export_report',
       byId: (id) => '/lma/answer_books/' + id,
       submitGraderDescription: (id) => '/lma/answer_books/' + id + '/submit_grader_description',
       confirmAnswers: (id) => '/lma/answer_books/' + id + '/confirm_answers',
@@ -186,4 +187,25 @@ export default class AnswerBookAPI extends APIRepository {
       }
     })
   }
+
+  exportReport(data) {
+    return this.sendRequest({
+      apiMethod: 'get',
+      api: this.api,
+      request: this.APIAdresses.exportReport,
+      data: this.getNormalizedSendData({
+        registration__status: null, // String
+        type: null, // String
+        test: null, // Number
+        test__classroom: null // Number
+      }, data),
+      responseType: 'blob',
+      resolveCallback: (response) => {
+        return response.data // xlsxData
+      },
+      rejectCallback: (error) => {
+        return error
+      }
+    })
+  }
 }

+ 24 - 1
src/components/Widgets/Classroom/AdminClassroomAnswerBookList/AdminClassroomAnswerBookList.vue

@@ -24,6 +24,15 @@
                   :show-reload-button="false"
                   :show-search-button="false"
                   @onPageChanged="onPageChanged">
+      <template #toolbar>
+        <q-btn v-if="$route.query.classroom_type === 'EVENT'"
+               outline
+               color="primary"
+               :loading="exportExcelLoading"
+               @click="exportExcel">
+          خروجی اکسل
+        </q-btn>
+      </template>
       <template v-slot:entity-index-table-cell="{inputData}">
         <template v-if="inputData.col.name === 'number'">
           {{ inputData.rowNumber }}
@@ -47,6 +56,7 @@
 
 <script>
 import { shallowRef } from 'vue'
+import Assist from 'assets/js/Assist.js'
 import { EntityIndex } from 'quasar-crud'
 import { Test } from 'src/models/Test.js'
 import Enums from 'src/assets/Enums/Enums.js'
@@ -59,7 +69,6 @@ import BtnControl from 'src/components/Control/btn.vue'
 import { UnitCategory } from 'src/models/UnitCategory.js'
 import { mixinWidget, mixinAuth } from 'src/mixin/Mixins.js'
 import Breadcrumbs from 'src/components/Widgets/Breadcrumbs/Breadcrumbs.vue'
-import Assist from 'assets/js/Assist'
 
 const BtnControlComp = shallowRef(BtnControl)
 
@@ -74,6 +83,7 @@ export default {
     return {
       mounted: false,
       entityLoading: true,
+      exportExcelLoading: false,
       test: new Test(),
       classroom: new Classroom(),
       defaultOptions: {
@@ -410,6 +420,19 @@ export default {
       }
 
       return target.label
+    },
+    exportExcel () {
+      const filter = this.$refs.entityIndex.createParams()
+      filter.type = 'list'
+      this.exportExcelLoading = true
+      APIGateway.answerBook.exportReport(filter)
+        .then((xlsxData) => {
+          Assist.saveXlsx(xlsxData, this.classroom.title)
+          this.exportExcelLoading = false
+        })
+        .catch(() => {
+          this.exportExcelLoading = false
+        })
     }
   }
 }