vue如何在线预览各类型文件

 更新时间:2023年11月17日 10:44:33   作者:如果会御剑  
这篇文章主要介绍了vue如何在线预览各类型文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

此文章是在vue-admin-template后台上做的功能

1.新建组件previewFile => index.vue

<template>
  <div :class="['dialog-box',isCollapse?'analysis-dialog':'analysis']">
    <el-dialog
      :title="`${file.title}文件预览`"
      :visible.sync="file.dialogVisible"
      :before-close="handleClose"
      :width="isCollapse?'calc(100% - 54px)':'calc(100% - 238px)'"
      top="0"
    >
      <div>
        <iframe
          class="child"
          frameborder="0"
          :src="'http://view.xdocin.com/xdoc?_xdoc=' + file.fileurl"
          :style="{ height: height }"
        />
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
  props: {
    file: {
      type: Object,
      default: function() {
        return {
          fileurl: '',
          dialogVisible: false,
          title: ''
        }
      }
    }
  },
  data() {
    return {
      height: window.innerHeight - 120 + 'px',
      dialogVisible: false
    }
  },
    // 这里是用来判断左边菜单栏是否打开
  computed: {
    ...mapGetters(['sidebar']),
    isCollapse() {
      return !this.sidebar.opened
    }
  },
  methods: {
    handleClose() {
      this.file.dialogVisible = false
    }
  }
}
</script>
<style scoped>
.child {
  width: 100%;
  height: 100%;
  border: 0;
}
.dialog-box>>>.el-dialog__headerbtn{
  font-size: 34px;
}
.analysis>>>.el-dialog{
  left: 119px;
}
.analysis-dialog>>>.el-dialog{
  left: 27px;
}
</style>

上面用到vuex只是用来判断左边菜单栏是否打开,用来适配弹窗的宽度而已,如果不需要可以删除,不影响功能。

2.引用组件

<div>
    <div>
    <el-button
       size="mini"
       type="success"
        @click="handlepreview"
     >预览</el-button>
</div>
<!-- 预览文件 -->
    <preview-file :file="file" />
</div>
 
<script>
    export default {
        components: {
            PreviewFile: () => import('@/components/previewFile/index.vue')
      },
        data(){
            return{
                file: {
                    fileurl: '',
                    dialogVisible: false,
                    title: ''
                  }
            }
        },
        methods:{
             // 预览
    handlepreview() {
      // console.log(index, row)
        // 这里的id是传给后端接口的id,没有可以不传
      downtemplate({ id: row.id }).then(res => {
        this.file.fileurl = encodeURIComponent(res.data),//后端请求回来的文件地址url
        this.file.dialogVisible = true,//弹窗
        this.file.title = row.title,//文件名称
      })
    },
        }
    }
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue.js双向绑定操作技巧(初级入门)

    Vue.js双向绑定操作技巧(初级入门)

    这篇文章主要介绍了Vue.js双向绑定操作技巧(初级入门)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • 关于在vue-cli中使用微信自动登录和分享的实例

    关于在vue-cli中使用微信自动登录和分享的实例

    本篇文章主要介绍了关于在vue-cli中使用微信自动登录和分享的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • vue2.0 实现导航守卫(路由守卫)

    vue2.0 实现导航守卫(路由守卫)

    vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards)。这篇文章主要介绍了vue2.0 实现导航守卫(路由守卫)的相关知识,需要的朋友可以参考下
    2018-05-05
  • Vue Router修改query参数url参数没有变化问题及解决

    Vue Router修改query参数url参数没有变化问题及解决

    这篇文章主要介绍了Vue Router修改query参数url参数没有变化问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 解决elementui表格操作列自适应列宽

    解决elementui表格操作列自适应列宽

    这篇文章主要介绍了解决elementui表格操作列自适应列宽,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Vue3封装localStorage基本使用示例详解

    Vue3封装localStorage基本使用示例详解

    localStorage 和 sessionStorage 属性允许在浏览器中存储 key/value 对的数据,localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除,本文给大家介绍Vue3封装localStorage-基本使用,感兴趣的朋友一起看看吧
    2023-12-12
  • Vue实现前端页面缓存的过程

    Vue实现前端页面缓存的过程

    这篇文章主要介绍了Vue实现前端页面缓存的过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue中根据时间戳判断对应的时间(今天 昨天 前天)

    vue中根据时间戳判断对应的时间(今天 昨天 前天)

    这篇文章主要介绍了vue中 根据时间戳 判断对应的时间(今天 昨天 前天),需要的朋友可以参考下
    2019-12-12
  • 基于element-ui封装可搜索的懒加载tree组件的实现

    基于element-ui封装可搜索的懒加载tree组件的实现

    这篇文章主要介绍了基于element-ui封装可搜索的懒加载tree组件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Vue项目中常用的实用技巧汇总

    Vue项目中常用的实用技巧汇总

    如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优,这篇文章主要给大家汇总介绍了关于Vue项目中常用的实用技巧,需要的朋友可以参考下
    2021-07-07

最新评论