auditModal.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <!-- auditModal.vue -->
  2. <template>
  3. <a-modal v-model:visible="visibles" title="资源审核" @ok="handleOk" @cancel="handleCancel">
  4. <div class="audit-content">
  5. <video-player v-if="record.suffix === 'mp4'" :options="playerOptions" @ready="playerReadied"></video-player>
  6. <!-- 其他格式文件的展示方式 -->
  7. <div v-else-if="record.suffix === 'ppt'">PPT展示区域</div>
  8. <div v-else-if="record.suffix === 'word'">Word展示区域</div>
  9. <div v-else-if="record.suffix === 'pdf'">PDF展示区域</div>
  10. <div v-else>其他格式文件展示区域</div>
  11. <div class="audit-info">
  12. <p><strong>授课老师:</strong>{{ record.teacherName }}</p>
  13. <p><strong>所属院系:</strong>{{ record.collegeName }}</p>
  14. <p><strong>所属专业:</strong>{{ record.majorName }}</p>
  15. <p><strong>课程类型:</strong>{{ record.courseType }}</p>
  16. <p><strong>课件格式:</strong>{{ record.suffix }}</p>
  17. <p><strong>视频时长:</strong>{{ record.duration }}</p>
  18. <p><strong>视频大小:</strong>{{ record.fileSize }}</p>
  19. <p><strong>发布时间:</strong>{{ record.publishTime }}</p>
  20. <p><strong>课程介绍:</strong>{{ record.courseDescription }}</p>
  21. </div>
  22. <a-radio-group v-model:value="auditResult">
  23. <a-radio :value="1">通过</a-radio>
  24. <a-radio :value="0">不通过</a-radio>
  25. </a-radio-group>
  26. </div>
  27. </a-modal>
  28. </template>
  29. <script setup>
  30. import { ref, defineProps, defineEmits, computed } from 'vue'
  31. // import videoPlayer from 'vue-video-player'
  32. const props = defineProps({
  33. record: Object
  34. })
  35. const emit = defineEmits(['confirm'])
  36. const auditResult = ref(1) // 默认为通过
  37. const visibles = ref(true)
  38. const playerOptions = computed(() => ({
  39. sources: [
  40. {
  41. type: 'video/mp4',
  42. src: props.record.filePath // 视频文件路径
  43. }
  44. ],
  45. poster: props.record.posterPath // 封面图片路径
  46. }))
  47. const handleOk = () => {
  48. emit('confirm', { ...props.record, auditResult: auditResult.value })
  49. }
  50. const handleCancel = () => {
  51. emit('update:visible', false)
  52. }
  53. const playerReadied = (player) => {
  54. // player ready
  55. }
  56. </script>
  57. <style scoped>
  58. .audit-content {
  59. display: flex;
  60. flex-direction: column;
  61. align-items: center;
  62. }
  63. .audit-info {
  64. margin-top: 20px;
  65. text-align: left;
  66. }
  67. </style>