y595705120 3 years ago
parent
commit
c936221c68
2 changed files with 96 additions and 57 deletions
  1. 26 15
      src/pages/other/file-info.vue
  2. 70 42
      src/utils/download.js

+ 26 - 15
src/pages/other/file-info.vue

@@ -6,14 +6,21 @@
           <h3>{{info.title}}</h3>
 
           <h4>
-            {{info.createAt|toDatetime}} &nbsp;&nbsp;
+            来源:{{info.department }}   &nbsp;&nbsp;
+            类型:{{categorys[info.category] }}  &nbsp;&nbsp;
+            时间:{{info.createAt|toDate}}  &nbsp;&nbsp;
             <span class="ml10"><i class="el-icon-view"></i> {{info.viewCount}}</span>
             <span class="ml10"><i class="el-icon-download"></i> {{info.downloadCount}}</span>
           </h4>
         </div>
 
 
-        <el-form :inline="true" class="p20" label-width="80px" label-position="left">
+        <div class="p20">
+          <div v-html="info.brief" />
+        </div>
+
+
+       <!-- <el-form :inline="true" class="p20" label-width="80px" label-position="left">
           <el-row>
             <el-col :span="8">
               <el-form-item label="所属部门">
@@ -60,13 +67,7 @@
           </el-row>
 
         </el-form>
-
-<!--        <div>
-          <h2> 文章简介 </h2>
-          <div class="content p20">
-            <div>{{info.brief}} </div>
-          </div>
-        </div> -->
+ -->
         <div class="p20">
           <el-button v-if="!isLike" icon="el-icon-star-off" @click="likeArtical"> 收藏文件</el-button>
           <el-button v-else icon="el-icon-star-on" type="info" @click="unLikeArtical">取消收藏</el-button>
@@ -77,6 +78,7 @@
 
 
         <div>
+          <h4 class="p20"> 操作记录 </h4>
           <el-table :data="logs" border stripe v-loading="loading">
             <el-table-column label="时间" prop="createAt" align="center">
               <template slot-scope="{ row }">
@@ -209,9 +211,8 @@
 <script>
   import IHeader from "./components/IHeader";
   import IFooter from "./components/IFooter";
-  import {
-    toDatetime
-  } from '@/utils/date.js'
+  import { authDB } from '@/db'
+  import {toDate,toDatetime} from '@/utils/date.js'
   import data from '../data/data.js'
   import {
     getArticalInfo,
@@ -240,7 +241,8 @@
       IFooter
     },
     filters: {
-      toDatetime
+      toDatetime,
+      toDate
     },
     data() {
       return {
@@ -276,8 +278,17 @@
     methods: {
       download() {
         let articalId = this.articalId
-        if (this.isLeader > 0) {
-          download(`/api/artical/downloadFile/${articalId}`)
+        if (this.isLeader > 0 || this.info.isOpen == 1) {
+          this.loading = true
+          // let token=  authDB.get("token")
+          // window.open( `/api/artical/downloadFile/${articalId}?token=${token}`)
+
+          download(`/api/artical/downloadFile/${articalId}`,  res=>{
+            this.loading = false
+            if( res.code == 200){
+              this.$message.successMsg("下载完成", 1)
+            }
+          })
         } else {
           this.$message.errorMsg("无权限下载", 1)
         }

+ 70 - 42
src/utils/download.js

@@ -1,51 +1,79 @@
 import axios from 'axios';
 import { authDB } from '@/db'
+import { Message } from 'element-ui';
 
 import fileDownload from 'js-file-download'
 
-export async function download(  url  ) {
-    const res = await axios({
-        baseURL: process.env.VUE_APP_BASE_API,
-        timeout: 2 * 60 * 60 * 1000,
-        headers:{
-          'Content-Type': 'application/json',
-          'x-token': authDB.get('token'),
-          'x-user-id': authDB.get('uid')
-        },
-        url:url,
-        method:"get",
-        responseType: "blob"
-    });
-    let disposition = res.headers['content-disposition'];
-    disposition= disposition.replace("attachment; filename=", "")
-    disposition= disposition.replace(" ", "")
-    let filename = decodeURI( disposition );
-    let fileType=res.headers['content-type'];
+export async function download(  url, cb  ) {
+    axios({
+       method: 'get',
+       url: url,
+       headers:{
+         'Content-Type': 'application/json',
+         'x-token': authDB.get('token'),
+         'x-user-id': authDB.get('uid')
+       },
+        responseType: 'blob'
+     }).then(res => {
+        let filename=res.headers['filename'];
+        console.log( res.headers  )
+        if( res.headers['success'] == "true" ){
+          filename = decodeURI( filename )
+          fileDownload(res.data, filename);
+          cb&&cb( {code:200})
+        }else{
+          Message({
+              duration:2000,
+              showClose: true,
+              message: "文件下载失败",
+              type: 'error'
+          })
+          cb&&cb( {code:7})
+        }
+        
+     });
 
-    let resBlob = res.data;
-    let resData = null;
-    try {
-        let resText = await new Promise((resolve, reject) => {
-            // 通过 FileReader 接受并解析
-            let reader = new FileReader();
-            reader.addEventListener('abort', reject);
-            reader.addEventListener('error', reject);
-            reader.addEventListener('loadend', () => {
-                resolve(reader.result);
-            });
-            // 文件
-            reader.readAsText(resBlob);
-        });
-        resData = JSON.parse(resText);
-    } catch (err) {
-    }
-    if (resData) {
-        if (resData.error) {
+    // const res = await axios({
+    //     baseURL: process.env.VUE_APP_BASE_API,
+    //     timeout: 2 * 60 * 60 * 1000,
+    //     headers:{
+    //       'Content-Type': 'application/json',
+    //       'x-token': authDB.get('token'),
+    //       'x-user-id': authDB.get('uid')
+    //     },
+    //     url:url,
+    //     method:"get",
+    //     responseType: "blob"
+    // });
+    // let disposition = res.headers['content-disposition'];
+    // disposition= disposition.replace("attachment; filename=", "")
+    // disposition= disposition.replace(" ", "")
+    // let filename = decodeURI( disposition );
+    // let fileType=res.headers['content-type'];
 
-        } else {
+    // let resBlob = res.data;
+    // let resData = null;
+    // try {
+    //     let resText = await new Promise((resolve, reject) => {
+    //         // 通过 FileReader 接受并解析
+    //         let reader = new FileReader();
+    //         reader.addEventListener('abort', reject);
+    //         reader.addEventListener('error', reject);
+    //         reader.addEventListener('loadend', () => {
+    //             resolve(reader.result);
+    //         });
+    //         // 文件
+    //         reader.readAsText(resBlob);
+    //     });
+    //     resData = JSON.parse(resText);
+    // } catch (err) {
 
-        }
-    } else {
-        fileDownload(resBlob, filename);
-    }
+    // }
+    // cb && cb( resData )
+
+    // if (resData) {
+
+    // } else {
+    //     fileDownload(resBlob, filename);
+    // }
 }