FilePreview.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <div class="file-preview">
  3. <iframe :src="url" frameborder="0" class="preview-frame"></iframe>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'FilePreview',
  9. props: {
  10. fileUrl: {
  11. type: String,
  12. default: '',
  13. },
  14. },
  15. computed: {
  16. url() {
  17. if (!this.fileUrl) {
  18. return ''
  19. }
  20. try {
  21. let fileUrl = ''
  22. if (this.fileUrl.startsWith('http')) {
  23. fileUrl = this.fileUrl
  24. } else {
  25. fileUrl = window.context.form + this.fileUrl
  26. }
  27. // 对文件URL进行Base64编码
  28. const encodedUrl = encodeURIComponent(Base64.encode(fileUrl))
  29. // 构建 kkFileView 预览URL,添加参数隐藏工具栏
  30. // officePreviewType=doc:使用文档预览模式
  31. // hideTopbar=true:隐藏顶部工具栏
  32. return `${host}:8012/onlinePreview?url=${encodedUrl}`
  33. } catch (error) {
  34. return ''
  35. }
  36. },
  37. },
  38. }
  39. </script>
  40. <style lang="scss" scoped>
  41. .preview-frame {
  42. width: 100%;
  43. height: 100vh;
  44. border: none;
  45. }
  46. </style>