index.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import ColSteps from '@/components/col-steps'
  2. import request from '@/helpers/request'
  3. import { defineComponent } from 'vue'
  4. import CourseContent from './course-content'
  5. import CourseInfo from './course-info'
  6. import { createState, resestState } from './createState'
  7. export default defineComponent({
  8. name: 'video-operation',
  9. data() {
  10. const query = this.$route.query
  11. return {
  12. type: query.type || 'create'
  13. }
  14. },
  15. async created() {
  16. // 重置数据
  17. resestState()
  18. const query = this.$route.query
  19. createState.groupId = Number(query.groupId) || 0
  20. // 判断是否是编辑
  21. if (!createState.groupId) {
  22. return false
  23. }
  24. try {
  25. createState.loadingStatus = true
  26. const res = await request.get(
  27. '/api-website/videoLessonGroup/selectVideoLesson',
  28. {
  29. params: {
  30. groupId: createState.groupId
  31. }
  32. }
  33. )
  34. const result = res.data
  35. const {
  36. auditStatus,
  37. lessonCoverUrl,
  38. lessonPrice,
  39. lessonDesc,
  40. lessonSubject,
  41. lessonName,
  42. id,
  43. relationType,
  44. ...group
  45. } = result.lessonGroup
  46. // 判断模板图片是否在模板列表中,如果不在则是用户自己上传的图片
  47. // const statusUrl = createState.templateList.includes(lessonCoverUrl)
  48. // ? true
  49. // : false
  50. createState.lessonGroup = {
  51. id: id,
  52. lessonName: lessonName,
  53. lessonSubject: Number(lessonSubject),
  54. lessonDesc: lessonDesc,
  55. lessonPrice: lessonPrice,
  56. relationType,
  57. // lessonCoverTemplateUrl: statusUrl ? lessonCoverUrl : '',
  58. lessonCoverUrl: lessonCoverUrl
  59. }
  60. createState.lessonList = []
  61. result.detailList &&
  62. result.detailList.forEach((item: any) => {
  63. const tempInfo = item.musicAlbumInfos || []
  64. const relationList = tempInfo.map((info: any) => {
  65. return {
  66. relationMusicAlbum: info.relationType,
  67. musicAlbumName: info.name,
  68. musicAlbumId: info.musicAlbumId,
  69. relationId: info.id
  70. }
  71. })
  72. createState.lessonList.push({
  73. videoTitle: item.videoTitle,
  74. videoContent: item.videoContent,
  75. videoUrl: item.videoUrl,
  76. coverUrl: item.coverUrl,
  77. relationList,
  78. posterUrl: item.posterUrl // 视频封面图
  79. })
  80. })
  81. createState.loadingStatus = false
  82. } catch {}
  83. if (
  84. createState.lessonGroup.lessonCoverUrl &&
  85. !createState.templateList.includes(createState.lessonGroup.lessonCoverUrl)
  86. ) {
  87. createState.tabIndex = 2
  88. } else {
  89. createState.tabIndex = 1
  90. }
  91. },
  92. async mounted() {
  93. document.title = this.type === 'create' ? '新建视频课' : '编辑视频课'
  94. try {
  95. const sysConfig = await request.get(
  96. '/api-website/sysConfig/queryByParamName',
  97. {
  98. params: {
  99. paramName: 'video_lesson_service_fee'
  100. }
  101. }
  102. )
  103. createState.rate = sysConfig.data.paramValue
  104. } catch {}
  105. },
  106. render() {
  107. return (
  108. <>
  109. <div class="text-2xl font-semibold text-black leading-none px-6 py-5 ">
  110. {this.type === 'create' ? '新建视频课' : '编辑视频课'}
  111. </div>
  112. <div class="pt-12">
  113. <ColSteps
  114. class="pl-[60px] pr-7"
  115. type="large"
  116. active={createState.active}
  117. />
  118. {createState.active === 0 && <CourseInfo />}
  119. {createState.active === 1 && <CourseContent />}
  120. </div>
  121. </>
  122. )
  123. }
  124. })