李志伟 3 years ago
parent
commit
7c0505cbed
4 changed files with 24 additions and 4 deletions
  1. 1
    2
      src/api/register.js
  2. 8
    0
      src/utils/download.js
  3. 8
    1
      src/utils/request.js
  4. 7
    1
      src/views/register/list.vue

+ 1
- 2
src/api/register.js View File

24
 * @returns
24
 * @returns
25
 */
25
 */
26
 export const excelRegister = (params) => request({
26
 export const excelRegister = (params) => request({
27
-  url: '/taRegister',
28
-  method: 'post',
27
+  url: '/admin/register/export',
29
   params,
28
   params,
30
   responseType: 'blob'
29
   responseType: 'blob'
31
 })
30
 })

+ 8
- 0
src/utils/download.js View File

1
+export function downloadBlob(blob, fileName) {
2
+  const url = window.URL.createObjectURL(blob)
3
+  const link = document.createElement('a')
4
+  link.href = url
5
+  link.setAttribute('download', fileName)
6
+  link.click()
7
+  window.URL.revokeObjectURL(url)
8
+}

+ 8
- 1
src/utils/request.js View File

2
 import { Message } from 'element-ui'
2
 import { Message } from 'element-ui'
3
 import store from '@/store'
3
 import store from '@/store'
4
 import { getToken, getUserId } from '@/utils/auth'
4
 import { getToken, getUserId } from '@/utils/auth'
5
+import { downloadBlob } from './download'
5
 
6
 
6
 // create an axios instance
7
 // create an axios instance
7
 const service = axios.create({
8
 const service = axios.create({
46
   response => {
47
   response => {
47
     const res = response.data
48
     const res = response.data
48
     // if the custom code is not 20000, it is judged as an error.
49
     // if the custom code is not 20000, it is judged as an error.
49
-    if (res.code !== 1000) {
50
+    const contextType = response.headers['content-type']
51
+    if (contextType.indexOf('application/vnd.ms-excel') > -1) {
52
+      const data = new Blob([res])
53
+      const content = response.headers['content-disposition']
54
+      const fileName = content.replace('attachment;filename=', '')
55
+      downloadBlob(data, decodeURIComponent(fileName))
56
+    } else if (res.code !== 1000) {
50
       Message({
57
       Message({
51
         message: res.message || 'Error',
58
         message: res.message || 'Error',
52
         type: 'error',
59
         type: 'error',

+ 7
- 1
src/views/register/list.vue View File

211
       this.onSearch()
211
       this.onSearch()
212
     },
212
     },
213
     excelOut() {
213
     excelOut() {
214
-      excelRegister({ startDate: this.startDate, endDate: this.endDate })
214
+      excelRegister({
215
+        personType: this.personType,
216
+        name: this.name,
217
+        phone: this.phone,
218
+        area: this.area,
219
+        startDate: this.startDate,
220
+        endDate: this.endDate })
215
     }
221
     }
216
   }
222
   }
217
 }
223
 }