publish.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <template>
  2. <div class="page">
  3. <div class="page-content">
  4. <el-form label-position="top" :model="formData" :rules="rules">
  5. <el-form-item label="发布抖音视:" prop="description">
  6. <el-input
  7. type="textarea"
  8. rows="6"
  9. v-model="formData.description"
  10. placeholder="添加作品描述,能让更多的人看到..."
  11. ></el-input>
  12. </el-form-item>
  13. <el-form-item label="视频封面:" prop="coverImage">
  14. <el-input v-show="false" v-model="formData.coverImage"></el-input>
  15. <div>
  16. <SimpleUploadImage
  17. :limit="1"
  18. :image-list="coverList"
  19. :before-upload="beforeCoverImageUpload"
  20. @success="uploadCoverImageSuccess"
  21. @remove="handleCoverImageRemove"
  22. ></SimpleUploadImage>
  23. </div>
  24. </el-form-item>
  25. <el-form-item label="视频文件:" prop="fileUrl">
  26. <SimpleOssUpload
  27. @success="onVideoUploadSuccess"
  28. :limit="1"
  29. ></SimpleOssUpload>
  30. <el-input v-show="false" v-model="formData.fileUrl"></el-input>
  31. </el-form-item>
  32. </el-form>
  33. <div class="tip">
  34. <div class="title">温馨提示:</div>
  35. <div class="content">
  36. 视频文件大小不超过8G,时长在30分钟以内;分辨率为720p(720x1280)及以上;
  37. 支持常用视频格式,推荐使用mp4、webm
  38. </div>
  39. </div>
  40. <div class="control">
  41. <div class="button cancel">取消</div>
  42. <div class="button publish">发布</div>
  43. </div>
  44. </div>
  45. </div>
  46. </template>
  47. <script>
  48. export default {
  49. layout: 'app-ross',
  50. data() {
  51. return {
  52. formData: {
  53. coverImage: '',
  54. fileUrl: '',
  55. description: '',
  56. },
  57. rules: {
  58. coverImage: [
  59. {
  60. required: true,
  61. message: '请上传视频封面图片',
  62. trigger: ['change'],
  63. },
  64. ],
  65. fileUrl: [
  66. {
  67. required: true,
  68. message: '请上传视频',
  69. trigger: ['change'],
  70. },
  71. ],
  72. description: [
  73. {
  74. required: true,
  75. message: '请上传视频',
  76. trigger: ['blur'],
  77. },
  78. ],
  79. },
  80. coverList: [],
  81. }
  82. },
  83. methods: {
  84. // 发票上传
  85. beforeCoverImageUpload(file) {
  86. const flag = file.size / 1024 / 1024 < 5
  87. if (!flag) {
  88. this.$message.error('发票图片大小不能超过 5MB!')
  89. }
  90. return flag
  91. },
  92. uploadCoverImageSuccess({ response, file, fileList }) {
  93. this.coverList = fileList
  94. this.formData.coverImage = response.data
  95. },
  96. handleCoverImageRemove({ file, fileList }) {
  97. this.coverList = []
  98. this.formData.coverImage = ''
  99. },
  100. // 视频上传成功
  101. onVideoUploadSuccess({ file, fileList }) {
  102. this.formData.fileUrl = file.url
  103. },
  104. },
  105. }
  106. </script>
  107. <style lang="scss" scoped>
  108. @media screen and (min-width: 768px) {
  109. ::v-deep {
  110. .el-form-item__label {
  111. font-size: 16px;
  112. }
  113. }
  114. .page {
  115. background: #fff;
  116. padding: 40px 0;
  117. .page-content {
  118. width: 568px;
  119. margin: 0 auto;
  120. .tip {
  121. margin: 60px 0;
  122. font-size: 14px;
  123. line-height: 1.8;
  124. .title {
  125. color: #666666;
  126. margin-bottom: 8px;
  127. }
  128. .content {
  129. color: #999999;
  130. }
  131. }
  132. .control {
  133. .button {
  134. width: 295px;
  135. height: 50px;
  136. margin: 0 auto;
  137. border-radius: 4px;
  138. cursor: pointer;
  139. display: flex;
  140. justify-content: center;
  141. align-items: center;
  142. font-size: 16px;
  143. &.cancel {
  144. border: 1px solid #c2c2c2;
  145. color: #666666;
  146. }
  147. &.publish {
  148. background: #f3920d;
  149. color: #fff;
  150. margin-top: 16px;
  151. }
  152. }
  153. }
  154. }
  155. }
  156. }
  157. </style>