Browse Source

优化excl能力

YaolongHan 4 years ago
parent
commit
f42f07f1c3
4 changed files with 736 additions and 542 deletions
  1. 2 1
      package.json
  2. 4 0
      src/api/equipmentList.js
  3. 40 0
      src/api/httputils.js
  4. 690 541
      src/views/equipment/index.vue

+ 2 - 1
package.json

@@ -40,7 +40,8 @@
         "vue-pdf": "^4.1.0",
         "vue-quill-editor": "^3.0.6",
         "vue-router": "^3.1.3",
-        "vuex": "^3.4.0"
+        "vuex": "^3.4.0",
+        "xlsx": "^0.16.9"
     },
     "devDependencies": {
         "@typescript-eslint/eslint-plugin": "^2.26.0",

+ 4 - 0
src/api/equipmentList.js

@@ -78,3 +78,7 @@ export function uploadExcel({ getParams, data }) {
 export function downloadExcel({ getParams }) {
     return httputils.download(`/data/file/downloadExcel`, getParams)
 }
+// 设备设施-表格预览
+export function previewExecl({ getParams }) {
+    return httputils.preview(`/data/file/downloadExcel`, getParams)
+}

+ 40 - 0
src/api/httputils.js

@@ -204,5 +204,45 @@ export default {
         })
 
     },
+    // 预览
+    async preview(url, params) {
+        // 响应类型:arraybuffer, blob
+        return new Promise((resolve, reject) => {
+            axiosservice
+                .get(url, {
+                    params,
+                    responseType: 'blob',
+                })
+                .then((resp) => {
+                    let headers = resp.headers
+                    let contentType = headers['content-type']
+                    if (!resp.data?.size) {
+                        console.error('响应异常:', resp)
+                        resolve({ msg: '文件不存在,下载失败!' })
+                        return false
+                    } else {
+                        //console.log("下载文件:", resp)
+                        const blob = new Blob([resp.data], {
+                            type: contentType,
+                        })
+                        // const contentDisposition = resp.headers['content-disposition']
+                        // let fileName = 'unknown'
+                        // if (contentDisposition) {
+                        //     fileName = window.decodeURI(resp.headers['content-disposition'].split('=')[1])
+                        // }
+                        
+                      var reader = new FileReader()
+                        reader.onload = function() {
+                            resolve(this.result)
+                        }
+                        reader.readAsArrayBuffer(blob)
+                        
+                        
+                    }
+                })
+                .catch(function (error) { })
+        })
+
+    },
     axios: axiosservice,
 }

File diff suppressed because it is too large
+ 690 - 541
src/views/equipment/index.vue