UploadPreviewPreview.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <div class="upload-preview" :style="getAreaStyle()">
  3. <SerialNumberPosition v-if="isEnable(data.property.sn_display_mode)" :property="data.property" />
  4. <div class="main">
  5. <template v-if="data.file_list.length > 0">
  6. <template
  7. v-if="
  8. data.file_list[0].file_name.indexOf('png') !== -1 ||
  9. data.file_list[0].file_name.indexOf('jpg') !== -1 ||
  10. data.file_list[0].file_name.indexOf('jpeg') !== -1
  11. "
  12. >
  13. <el-image
  14. style="width: 100%; height: 260px"
  15. :src="data.file_list[0].file_url"
  16. :fit="'contain'"
  17. :preview-src-list="[data.file_list[0].file_url]"
  18. >
  19. </el-image>
  20. </template>
  21. <template v-else-if="data.file_list[0].file_name.indexOf('pdf') !== -1">
  22. <iframe :src="data.file_list[0].newpath" id="ifm" width="100%" height="260px" frameborder="0"></iframe>
  23. </template>
  24. </template>
  25. </div>
  26. </div>
  27. </template>
  28. <script>
  29. import UploadFile from './components/UploadView.vue';
  30. import PreviewMixin from '../common/PreviewMixin';
  31. import { getConfig } from '@/utils/auth';
  32. import { GetFileURLMap } from '@/api/app';
  33. const Base64 = require('js-base64').Base64;
  34. import { getUploadPreviewData } from '@/views/book/courseware/data/uploadPreview';
  35. export default {
  36. name: 'UploadControlPreview',
  37. components: { UploadFile },
  38. mixins: [PreviewMixin],
  39. data() {
  40. return {
  41. data: getUploadPreviewData(),
  42. file_preview_url: getConfig() ? getConfig().doc_preview_service_address : '',
  43. };
  44. },
  45. watch: {
  46. 'data.file_list': {
  47. handler(val) {
  48. if (val.length > 0) {
  49. this.handleData();
  50. }
  51. },
  52. immediate: true,
  53. },
  54. },
  55. created() {},
  56. methods: {
  57. // 处理数据
  58. handleData() {
  59. this.data.file_list.forEach((item) => {
  60. GetFileURLMap({ file_id_list: [item.file_id] }).then(({ url_map }) => {
  61. this.$set(
  62. item,
  63. 'newpath',
  64. `${this.file_preview_url}/onlinePreview?url=` + Base64.encode(url_map[item.file_id]),
  65. );
  66. });
  67. });
  68. },
  69. },
  70. };
  71. </script>
  72. <style lang="scss" scoped>
  73. @use '@/styles/mixin.scss' as *;
  74. .upload-preview {
  75. @include preview-base;
  76. }
  77. </style>