Переглянути джерело

feature: 添加钉钉文件下载

liuyaqi 2 роки тому
батько
коміт
341498db11

+ 3 - 0
src/api/contract/index.js

@@ -36,6 +36,9 @@ export default {
   getDynamicsList(query) {
     return micro_request.postRequest(basePath, 'CtrContract', 'DynamicsList', query)
   },
+  downDingtalkFile(query) {
+    return micro_request.postRequest(basePath, 'CtrContract', 'DownloadDingtalkFile', query)
+  },
   // 提交审核
   commit(query) {
     return micro_request.postRequest(basePath, 'CtrContract', 'Commit', query)

+ 23 - 5
src/views/contract/components/DetailsEnclosure.vue

@@ -43,10 +43,7 @@
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作">
         <template slot-scope="scope">
-          <el-button
-            v-permissions="['contract:detail:enclosure:download']"
-            type="text"
-            @click="downFile(scope.row.fileUrl, scope.row.fileName)">
+          <el-button v-permissions="['contract:detail:enclosure:download']" type="text" @click="downFile(scope.row)">
             下载
           </el-button>
           <el-button v-permissions="['contract:detail:enclosure:rename']" type="text" @click="rename(scope.row.id)">
@@ -79,8 +76,10 @@
 <script>
   import to from 'await-to-js'
   import enclosureApi from '@/api/contract/enclosure'
+  import contractApi from '@/api/contract'
   import asyncUploadFile from '@/utils/uploadajax'
   import axios from 'axios'
+  import downloadFileByByte from '@/utils/base64ToFile'
 
   export default {
     name: 'DetailsEnclosure',
@@ -148,7 +147,14 @@
       /**
        * 下载文件以及自定义文件名称
        */
-      downFile(url, fileName) {
+      downFile(row) {
+        if (row.fileUrl.startsWith('dingtalk')) {
+          this.downDingtalkFile(row)
+          return
+        }
+
+        let url = row.fileUrl
+        let fileName = row.fileName
         const xhr = new XMLHttpRequest()
         xhr.open('GET', url, true)
         xhr.responseType = 'blob' // 通过文件下载url拿到对应的blob对象
@@ -166,6 +172,18 @@
 
         xhr.send()
       },
+      downDingtalkFile(row) {
+        contractApi
+          .downDingtalkFile({ id: row.id })
+          .then((res) => {
+            if (res.code == 200) {
+              downloadFileByByte(res.data, row.fileName)
+            }
+          })
+          .catch((err) => {
+            console.error(err)
+          })
+      },
       // 重命名
       rename(id) {
         this.editFiles.id = id