ali vor 3 Jahren
Ursprung
Commit
9124b4d5a5

+ 17 - 0
src/api/models/User.js

@@ -7,6 +7,7 @@ export default class UserAPI extends APIRepository {
     super('user', appApi, '/uma/users', User)
     this.APIAdresses = {
       base: '/uma/users',
+      exportReport: '/uma/users/export_report',
       verify: '/uma/users/verify',
       current: '/uma/users/current',
       byId: (id) => '/uma/users/' + id,
@@ -54,6 +55,22 @@ export default class UserAPI extends APIRepository {
     })
   }
 
+  exportReport(data) {
+    return this.sendRequest({
+      apiMethod: 'get',
+      api: this.api,
+      request: this.APIAdresses.exportReport,
+      data,
+      responseType: 'blob',
+      resolveCallback: (response) => {
+        return response.data // xlsxData
+      },
+      rejectCallback: (error) => {
+        return error
+      }
+    })
+  }
+
   updateCurrent(data = {}) {
     return this.sendRequest({
       apiMethod: 'put',

+ 2 - 2
src/pages/Admin/DiscussionCirclesClassroom/show.vue

@@ -706,8 +706,8 @@ 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(() => {

+ 23 - 0
src/pages/Admin/User/index.vue

@@ -10,6 +10,13 @@
                   :show-expand-button="false"
                   :show-reload-button="false"
                   :show-search-button="false">
+      <template #toolbar>
+        <q-btn color="primary"
+               :loading="exportReportLoading"
+               @click="exportExcel">
+          خروجی اکسل
+        </q-btn>
+      </template>
       <template v-slot:entity-index-table-cell="{inputData, showConfirmRemoveDialog}">
         <template v-if="inputData.col.name === 'number'">
           {{ inputData.rowNumber }}
@@ -46,6 +53,7 @@
 <script>
 import { shallowRef } from 'vue'
 import { EntityIndex } from 'quasar-crud'
+import Assist from 'src/assets/js/Assist.js'
 import { APIGateway } from 'src/api/APIGateway.js'
 import BtnControl from 'src/components/Control/btn.vue'
 import DeleteBtn from 'src/components/Control/DeleteBtn.vue'
@@ -61,6 +69,7 @@ export default {
   data () {
     return {
       mounted: false,
+      exportReportLoading: false,
       inputs: [
         { type: 'input', name: 'id', value: null, label: 'شناسه', placeholder: ' ', col: 'col-md-4 col-12' },
         { type: 'input', name: 'national_code', value: null, label: 'کد ملی', placeholder: ' ', col: 'col-md-4 col-12' },
@@ -153,6 +162,20 @@ export default {
     this.mounted = true
   },
   methods: {
+    exportExcel () {
+      const params = this.$refs.entityIndex.createParams()
+      this.exportReportLoading = true
+      delete params.btn
+      params.type = 'users'
+      APIGateway.user.exportReport(params)
+        .then((xlsxData) => {
+          Assist.saveXlsx(xlsxData, 'لیست کاربران')
+          this.exportReportLoading = false
+        })
+        .catch(() => {
+          this.exportReportLoading = false
+        })
+    },
     setActionBtn () {
       this.inputs.forEach((item, index) => {
         if (item.name === 'btn') {