| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <template>
- <section>
- <!-- 图片预览 -->
- <el-dialog title="图片预览" :append-to-body="true" :visible.sync="previewVisible" width="50%">
- <div v-viewer>
- <img :src="previewPath" :alt="previewName" style="width:100%;height:100%" />
- </div>
- </el-dialog>
- </section>
- </template>
- <script>
- import { downloadUrl } from '@/api/file'
- import { getFileExt } from '@/api/util'
- import { component as Viewer } from 'v-viewer';
- export default {
- name: 'preview-component',
- components: { Viewer },
- data () {
- return {
- previewPath: '',
- previewName: '',
- previewVisible: false
- }
- },
- methods: {
- init (fileName, url) {
- this.handlePreview(fileName, url)
- },
- // 预览
- handlePreview (fileName, url) {
- if (!fileName || !url) {
- this.$message.error('没有可预览的文件!')
- return
- }
- let ext = getFileExt(fileName)
- if (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif') {
- this.previewPath = downloadUrl + url
- this.previewName = fileName
- this.previewVisible = false
- this.$viewerApi({
- images: [this.previewPath],
- options: { toolbar: false } // 隐藏工具栏
- });
- } else {
- // 弹出新页面显示下载文件
- window.open(downloadUrl + url, '_blank')
- }
- }
- }
- }
- </script>
- <style scoped>
- </style>
|