MrShi
2025-03-12 69a1b3bf45738f048361ee4ccb6bdc64fce35720
admin/src/views/meeting/components/common/FileLink.vue
对比新文件
@@ -0,0 +1,92 @@
<template>
  <div>
    <FileLinkItem
      v-for="(item, index) in links"
      :key="index"
      :link="item[linkName]"
      :name="item.name"
      :isUpload="isUpload"
      @showFile="showFile"
      @deleteAction="deleteFile(index)"
    />
    <PDFPreview ref="PDFPreview" />
    <el-image-viewer
      v-if="showViewer"
      :on-close="close"
      :initialIndex="tempIndex"
      :url-list="srcList"
      :zIndex="3000"
    />
  </div>
</template>
<script>
// import { fileType } from '@/utils/util';
import FileLinkItem from './FileLinkItem.vue';
import PDFPreview from './PDFPreview'
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
export default {
  components: {
    FileLinkItem,
    PDFPreview,
    ElImageViewer
  },
  props: {
    links: {
      type: Array,
      required: true
    },
    isUpload: {
      type: Boolean,
      default: true
    },
    linkName: {
      type: String,
      required: true
    }
  },
  data() {
    return {
      showViewer: false
    }
  },
  computed: {
    // 鍥剧墖鍦板潃
    // srcList() {
    //   return this.links.filter(item => {
    //     let link = item[this.linkName]
    //     return fileType(link) == 1
    //   }).map(item => item[this.linkName])
    // }
  },
  methods: {
    deleteFile(index) {
      this.links.splice(index, 1)
    },
    downloadFile(url) {
      window.open(url, '_blank')
    },
    showFile(url) {
      debugger
      // let type = fileType(url)
      // switch (type) {
      //   case 1:
      //     this.tempIndex = this.srcList.findIndex(item => item == url)
      //     this.showViewer = true
      //     break;
      //   case 2:
      //     this.$refs.PDFPreview.open('', { url })
      //     break;
      //   case 3:
      //     window.open(url, '_blank')
      //     break;
      //   default:
      //     break;
      // }
    },
    close() {
      this.showViewer = false
    }
  },
}
</script>