ShortVideoAudit.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <view class="short-video-audit" v-if="data">
  3. <!-- 短视频审核表单 -->
  4. <view class="info-section">
  5. <view class="section-header">
  6. <view class="section-indicator"></view>
  7. <text class="section-title">短视频信息</text>
  8. </view>
  9. <view class="info-list">
  10. <!-- 基本信息 -->
  11. <view class="info-item">
  12. <text class="info-label">视频标题</text>
  13. <text class="info-value">{{ data.videoTitle || '-' }}</text>
  14. </view>
  15. <view class="info-item">
  16. <text class="info-label">公司</text>
  17. <text class="info-value">{{ data.companyName || '-' }}</text>
  18. </view>
  19. <view class="info-item">
  20. <text class="info-label">作者</text>
  21. <text class="info-value">{{ data.authorName || '-' }}</text>
  22. </view>
  23. <view class="info-item">
  24. <text class="info-label">是否原创</text>
  25. <text class="info-value">{{ data.isOriginal ? '是' : '否' }}</text>
  26. </view>
  27. <view class="info-item">
  28. <text class="info-label">分组</text>
  29. <text class="info-value">{{ data.groupName || '-' }}</text>
  30. </view>
  31. <view class="info-item">
  32. <text class="info-label">标签</text>
  33. <text class="info-value">{{ data.tags || '-' }}</text>
  34. </view>
  35. <view class="info-item">
  36. <text class="info-label">摘要</text>
  37. <text class="info-value">{{ data.summary || '-' }}</text>
  38. </view>
  39. <view class="info-item">
  40. <text class="info-label">上下架</text>
  41. <text class="info-value">{{ data.isPublish ? '上架' : '下架' }}</text>
  42. </view>
  43. </view>
  44. </view>
  45. <!-- 视频预览 -->
  46. <view class="info-section" v-if="data.videoUrl">
  47. <view class="section-header">
  48. <view class="section-indicator"></view>
  49. <text class="section-title">视频预览</text>
  50. </view>
  51. <view class="video-container">
  52. <video
  53. :src="data.videoUrl"
  54. :poster="data.coverImageUrl || ''"
  55. style="width: 100%; height: 400rpx; background-color: #000;"
  56. controls
  57. @error="videoError"
  58. ></video>
  59. </view>
  60. </view>
  61. <!-- 封面图 -->
  62. <view class="info-section" v-if="data.coverImageUrl">
  63. <view class="section-header">
  64. <view class="section-indicator"></view>
  65. <text class="section-title">封面图</text>
  66. </view>
  67. <view class="image-container">
  68. <image
  69. :src="data.coverImageUrl"
  70. style="width: 200rpx; height: 200rpx;"
  71. mode="aspectFill"
  72. @click="previewImage(data.coverImageUrl)"
  73. ></image>
  74. </view>
  75. </view>
  76. </view>
  77. </template>
  78. <script>
  79. export default {
  80. name: 'ShortVideoAudit',
  81. props: {
  82. data: {
  83. type: Object,
  84. default: null
  85. }
  86. },
  87. methods: {
  88. // 视频播放错误处理
  89. videoError(err) {
  90. console.error('视频播放错误:', err)
  91. },
  92. // 预览图片
  93. previewImage(url) {
  94. uni.previewImage({
  95. urls: [url],
  96. current: url
  97. })
  98. }
  99. }
  100. }
  101. </script>
  102. <style lang="scss" scoped>
  103. .info-section {
  104. margin-bottom: 24rpx;
  105. background: #fff;
  106. border-radius: 16rpx;
  107. padding: 24rpx;
  108. .section-header {
  109. display: flex;
  110. align-items: center;
  111. margin-bottom: 24rpx;
  112. .section-indicator {
  113. width: 8rpx;
  114. height: 32rpx;
  115. background: #388BFF;
  116. border-radius: 4rpx;
  117. margin-right: 16rpx;
  118. }
  119. .section-title {
  120. font-size: 32rpx;
  121. font-weight: 500;
  122. color: #333;
  123. }
  124. }
  125. .info-list {
  126. .info-item {
  127. display: flex;
  128. justify-content: space-between;
  129. align-items: flex-start;
  130. margin-bottom: 20rpx;
  131. padding-bottom: 20rpx;
  132. border-bottom: 1rpx solid #F0F0F0;
  133. &:last-child {
  134. margin-bottom: 0;
  135. padding-bottom: 0;
  136. border-bottom: none;
  137. }
  138. .info-label {
  139. font-size: 28rpx;
  140. color: #666;
  141. width: 200rpx;
  142. }
  143. .info-value {
  144. font-size: 28rpx;
  145. color: #333;
  146. flex: 1;
  147. text-align: right;
  148. word-break: break-all;
  149. }
  150. }
  151. }
  152. .video-container {
  153. margin-top: 16rpx;
  154. border-radius: 8rpx;
  155. overflow: hidden;
  156. }
  157. .image-container {
  158. margin-top: 16rpx;
  159. display: flex;
  160. gap: 16rpx;
  161. image {
  162. border-radius: 8rpx;
  163. cursor: pointer;
  164. }
  165. }
  166. }
  167. </style>