create-submit.tsx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import { defineComponent } from 'vue'
  2. import styles from './create-submit.module.less'
  3. import UserDetail from '@/business-components/user-detail'
  4. import SectionDetail from '@/business-components/section-detail'
  5. import CourseVideoItem from '@/business-components/course-video-item'
  6. import { Button, Sticky, Toast } from 'vant'
  7. import { createState } from './createState'
  8. import { state } from '@/state'
  9. import request from '@/helpers/request'
  10. import { postMessage } from '@/helpers/native-message'
  11. export default defineComponent({
  12. name: 'CreateSubmit',
  13. computed: {
  14. userInfo() {
  15. const videoDetail = createState.lessonGroup
  16. const users = state.user.data || {}
  17. return {
  18. username: users.username || `游客${users.id || ''}`,
  19. headUrl: users.headUrl,
  20. lessonName: videoDetail.lessonName,
  21. buyNum: 0,
  22. lessonDesc: videoDetail.lessonDesc,
  23. lessonPrice: videoDetail.lessonPrice,
  24. lessonCoverUrl:
  25. videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl,
  26. lessonNum: createState.lessonList.length,
  27. auditVersion: 0
  28. }
  29. },
  30. lessonList() {
  31. const lessonList = createState.lessonList || []
  32. lessonList.forEach((item: any) => {
  33. const relationList = item.relationList
  34. const temp = [] as any
  35. relationList.forEach((relation: any) => {
  36. // 判断是否有选择专辑或曲目
  37. if (relation.musicAlbumId) {
  38. temp.push(relation)
  39. }
  40. })
  41. item.relationList = temp
  42. })
  43. return createState.lessonList || []
  44. },
  45. groupId() {
  46. const query = this.$route.query
  47. return query.groupId || ''
  48. }
  49. },
  50. methods: {
  51. async onSubmit() {
  52. try {
  53. const videoDetail = createState.lessonGroup
  54. const params = {
  55. lessonList: this.lessonList,
  56. lessonGroup: {
  57. ...videoDetail,
  58. lessonCoverUrl:
  59. videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl
  60. }
  61. }
  62. if (createState.groupId) {
  63. await request.post('/api-teacher/videoLessonGroup/update', {
  64. data: params
  65. })
  66. Toast.success('修改成功')
  67. } else {
  68. await request.post('/api-teacher/videoLessonGroup/add', {
  69. data: params
  70. })
  71. Toast.success('创建成功')
  72. }
  73. setTimeout(() => {
  74. postMessage({ api: 'back' })
  75. }, 1000)
  76. } catch {}
  77. }
  78. },
  79. render() {
  80. return (
  81. <div class={[styles.createSubmit]}>
  82. <UserDetail userInfo={this.userInfo} />
  83. <SectionDetail>
  84. <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
  85. </SectionDetail>
  86. <SectionDetail title="课程列表" icon="courseList" class="mb12">
  87. {this.lessonList.map((item: any) => {
  88. const relationList = item.relationList || []
  89. const temp = relationList.map((relation: any) => {
  90. return {
  91. relationMusicAlbum: relation.relationMusicAlbum,
  92. musicAlbumName: relation.musicAlbumName,
  93. musicAlbumId: relation.musicAlbumId
  94. }
  95. })
  96. return (
  97. <CourseVideoItem
  98. musicAlbumInfos={temp}
  99. detail={{
  100. title: item.videoTitle,
  101. content: item.videoContent,
  102. imgUrl: item.coverUrl
  103. }}
  104. />
  105. )
  106. })}
  107. </SectionDetail>
  108. <Sticky offsetBottom={0} position="bottom">
  109. <div class={['btnGroup', 'btnMore']}>
  110. <Button
  111. block
  112. round
  113. type="primary"
  114. plain
  115. onClick={() => {
  116. createState.active = 2
  117. }}
  118. >
  119. 返回编辑
  120. </Button>
  121. <Button block round type="primary" onClick={this.onSubmit}>
  122. {this.groupId ? '修改完成' : '创建完成'}
  123. </Button>
  124. </div>
  125. </Sticky>
  126. </div>
  127. )
  128. }
  129. })