当前位置:   article > 正文

若依ruoyi系统docx的下载及预览_基于若依ruoyi的文档管理系统

基于若依ruoyi的文档管理系统

下载:

        方法一:使用标签<a>链接

  1. <el-button
  2. icon="el-icon-download"
  3. @click="handleDownload(scope.row)"
  4. >下载
  5. </el-button>
  6. handleDownload(row) {
  7. var name = row.contractTemplateName
  8. var url = row.contractTemplateFile
  9. var suffix = url.substring(url.lastIndexOf('.'), url.length)
  10. const a = document.createElement('a')
  11. a.setAttribute('download', name + suffix)
  12. a.setAttribute('target', '_blank')
  13. a.setAttribute('href', 'http://localhost/dev-api' + url)
  14. a.click()
  15. }

       方法二:后端下载方法.......

预览:

        预览插件

           可使用的插件或系统有:vue-office/docx-preview/kkFileView
           前端插件匹配文件预览:有两个思路,一个将blob流转成对应的文件格式,再进行预览。另一个是将文件地址映射出来,然后通过浏览器进行访问。两种方式各有优缺点,blob流方式相对于本地测试,部署到服务器时可能会出现文件流传输速度问题,如果是内网使用,速度还可以接收,但是外网使用,预览速度根本无法接收。因相当于下载完文件后,再进行预览,所以速度很慢。浏览器打开方式只支持浏览器支持预览的文件,很多文件格式不支持。

        vue-office

         笔者使用的是vue-office 附叶继增大佬开源链接:vue-office: 支持word(.docx)、excel(.xlsx)、pdf等各类型office文件预览的vue组件集合,提供一站式office文件预览方案,支持vue2和3icon-default.png?t=N7T8https://api.gitee.com/ye-jizeng/vue-office

         安装:

npm install @vue-office/docx vue-demi

         使用:

  1. <template>
  2. <vue-office-docx :src="docx" @rendered="rendered"/>
  3. </template>
  4. <script>
  5. //引入VueOfficeDocx组件
  6. import VueOfficeDocx from '@vue-office/docx'
  7. //引入相关样式
  8. import '@vue-office/docx/lib/index.css'
  9. export default {
  10. components:{
  11. VueOfficeDocx
  12. },
  13. data(){
  14. return {
  15. docx: 'http://static.shanhuxueyuan.com/test6.docx' //设置文档网络地址,可以是相对地址
  16. }
  17. },
  18. methods:{
  19. rendered(){
  20. console.log("渲染完成")
  21. }
  22. }
  23. }
  24. </script>

        跳转至新界面

         配置路由  

          /src/router/index

  1. {
  2. path: '/contract/preview', //对应方法中push的path
  3. component: Layout,
  4. hidden: true,
  5. permissions: ['contract:template:list'], //动态权限路由一定不能省会报404
  6. children: [
  7. {
  8. path: '',
  9. component: () => import('@/views/contract/template/data'),//标签页地址
  10. name: 'Data',
  11. meta: { title: '合同模板预览', activeMenu: '/system/dict' }
  12. }
  13. ]
  14. },

        跳转 

         方法一:使用方法
  1. <el-button
  2. @click="handlePreview(scope.row)"
  3. >预览
  4. </el-button>
  5. /** 预览按钮操作 */
  6. handlePreview(row){
  7. this.$router.push({
  8. path:"/contract/preview",
  9. query:{
  10. id:row.contractTemplateId
  11. }
  12. })
  13. },

         若路由配置符合ruoyi规范则会在系统内新开tab,否则会在浏览器中新打开标签页

        方法二:使用组件
  1. <template slot-scope="scope">
  2. <router-link :to="'/contract/preview/' + scope.row.contractTemplateId">
  3. 预览
  4. </router-link>
  5. </template>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/594994
推荐阅读
  

闽ICP备14008679号