VideoTable.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <el-table :data="props.list" stripe border v-loading="props.loading" style="margin-top: 10px">
  3. <el-table-column label="编号" align="center" prop="mediaId" />
  4. <el-table-column label="文件名" align="center" prop="name" />
  5. <el-table-column label="标题" align="center" prop="title" />
  6. <el-table-column label="介绍" align="center" prop="introduction" />
  7. <el-table-column label="视频" align="center">
  8. <template #default="scope">
  9. <WxVideoPlayer v-if="scope.row.url" :url="scope.row.url" />
  10. </template>
  11. </el-table-column>
  12. <el-table-column
  13. label="上传时间"
  14. align="center"
  15. :formatter="dateFormatter"
  16. prop="createTime"
  17. width="180"
  18. >
  19. <template #default="scope">
  20. <span>{{ scope.row.createTime }}</span>
  21. </template>
  22. </el-table-column>
  23. <el-table-column label="操作" align="center" fixed="right">
  24. <template #default="scope">
  25. <el-button type="primary" link @click="handleDownload(scope.row.url)">
  26. <Icon icon="ep:download" />下载
  27. </el-button>
  28. <el-button
  29. type="primary"
  30. link
  31. @click="emit('delete', scope.row.id)"
  32. v-hasPermi="['mp:material:delete']"
  33. >
  34. <Icon icon="ep:delete" />删除
  35. </el-button>
  36. </template>
  37. </el-table-column>
  38. </el-table>
  39. </template>
  40. <script setup lang="ts">
  41. import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue'
  42. import { dateFormatter } from '@/utils/formatTime'
  43. const props = defineProps<{
  44. list: any[]
  45. loading: boolean
  46. }>()
  47. const emit = defineEmits<{
  48. (e: 'delete', v: number)
  49. (e: 'download', v: string)
  50. }>()
  51. // 下载文件
  52. const handleDownload = (url: string) => {
  53. window.open(url, '_blank')
  54. }
  55. </script>