Browse Source

Merge branch 'master' of https://git.caner.top/Caner/busRoute

Caner 2 years ago
parent
commit
7e29352012
3 changed files with 30 additions and 25 deletions
  1. 0 2
      README.md
  2. 0 23
      src/services/downloadFile.ts
  3. 30 0
      src/services/net.service.ts

+ 0 - 2
README.md

@@ -1,5 +1,3 @@
-# 路桥报警系统
-
 ## 目录结构
 ```
 | - `src`

+ 0 - 23
src/services/downloadFile.ts

@@ -1,23 +0,0 @@
-export const downloadFile = (url: string | Blob, fileName: string) => {
-    const download = (blob: Blob, fileName: string) => {
-        const a = document.createElement('a')
-        document.body.appendChild(a)
-        a.style.display = 'none'
-        // 使用获取到的blob对象创建的url
-        const url = window.URL.createObjectURL(blob)
-        a.href = url
-        // 指定下载的文件名
-        a.download = fileName
-        a.click()
-        document.body.removeChild(a)
-        // 移除blob对象的url
-        window.URL.revokeObjectURL(url)
-    }
-    let newUrl: any = ''
-    if (url instanceof Blob) {
-        newUrl = URL.createObjectURL(newUrl) // 创建blob地址
-        download(newUrl, fileName)
-    } else {
-        fetch(newUrl).then((res) => res.blob()).then((blob) => download(blob, fileName))
-    }
-}

+ 30 - 0
src/services/net.service.ts

@@ -47,6 +47,36 @@ export default class NetService extends Service {
     return this.fetch(url, { method: 'PUT', body: JSON.stringify(params) }, timeout)
   }
 
+  /**
+   * 下载文件
+   * @param url url|blob
+   * @param fileName
+   */
+  downloadFile(url: string | Blob, fileName: string) {
+    const download = (blob: Blob, fileName: string) => {
+      const a = document.createElement('a')
+      document.body.appendChild(a)
+      a.style.display = 'none'
+      // 使用获取到的blob对象创建的url
+      const url = window.URL.createObjectURL(blob)
+      a.href = url
+      // 指定下载的文件名
+      a.download = fileName
+      a.click()
+      document.body.removeChild(a)
+      // 移除blob对象的url
+      window.URL.revokeObjectURL(url)
+    }
+    return new Promise<void>((resolve, reject) => {
+      if (url instanceof Blob) {
+        download(url, fileName)
+        resolve()
+      } else {
+        fetch(url).then((res) => res.blob()).then((blob) => download(blob, fileName)).finally(() => resolve())
+      }
+    })
+  }  
+  
   /** token 续期 */
   async refresh(token: string) {
     this.post('', { token }).then((res) => {