Newer
Older
smart-metering-front / src / components / filePreview / excelOreview.vue
<!-- 文件预览组件(通过文件名获取文件url) -->
<script lang="ts" setup name="WordOreview">
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'
import { ElLoading } from 'element-plus'
import { getPhotoUrl } from '@/api/file'
// 打印文件url
const props = defineProps({
  printFileName: {
    type: String,
  },
})
const wordUrl = ref('')

/**
 * 初始化
 */
function init() {
  const loading = ElLoading.service({
    lock: true,
    text: '加载中...',
    background: 'rgba(255, 255, 255, 0.6)',
  })
  getPhotoUrl(props.printFileName!).then((res: any) => {
    console.log('文件名称', props.printFileName)
    wordUrl.value = res.data
    console.log('wordUrl', wordUrl.value)
    loading.close()
  })
}

watch(() => props.printFileName, (newVal) => {
  // console.log('newVal', newVal)

  if (newVal) {
    // init()
    wordUrl.value = newVal
  }
}, { immediate: true })
const rendered = () => {
  console.log('渲染完成')
}
const errorHandler = () => {
  console.log('渲染失败')
}
onMounted(() => {
  // init()
})
</script>

<template>
  <vue-office-excel src="http://static.shanhuxueyuan.com/demo/excel.xlsx" style="width: 300px;height: 600px;" @rendered="rendered" @error="errorHandler" />
</template>

<style lang="scss">
// 样式
.docx-wrapper {
  background: transparent !important;
}
</style>