create-submit.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. return createState.lessonList || []
  32. }
  33. },
  34. methods: {
  35. async onSubmit() {
  36. try {
  37. const videoDetail = createState.lessonGroup
  38. let params = {
  39. lessonList: this.lessonList,
  40. lessonGroup: {
  41. ...videoDetail,
  42. lessonCoverUrl:
  43. videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl
  44. }
  45. }
  46. if (createState.groupId) {
  47. await request.post('/api-teacher/videoLessonGroup/update', {
  48. data: params
  49. })
  50. Toast.success('修改成功')
  51. } else {
  52. await request.post('/api-teacher/videoLessonGroup/add', {
  53. data: params
  54. })
  55. Toast.success('创建成功')
  56. }
  57. setTimeout(() => {
  58. postMessage({ api: 'back' })
  59. }, 1000)
  60. } catch {}
  61. }
  62. },
  63. render() {
  64. return (
  65. <div class={[styles.createSubmit]}>
  66. <UserDetail userInfo={this.userInfo} />
  67. <SectionDetail>
  68. <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
  69. </SectionDetail>
  70. <SectionDetail title="课程列表" icon="courseList" class="mb12">
  71. {this.lessonList.map((item: any) => (
  72. <CourseVideoItem
  73. class={'mb12'}
  74. detail={{
  75. title: item.videoTitle,
  76. content: item.videoContent,
  77. imgUrl: item.coverUrl
  78. }}
  79. />
  80. ))}
  81. </SectionDetail>
  82. <Sticky offsetBottom={0} position="bottom">
  83. <div class={['btnGroup', 'btnMore']}>
  84. <Button
  85. block
  86. round
  87. type="primary"
  88. plain
  89. onClick={() => {
  90. createState.active = 2
  91. }}
  92. >
  93. 返回编辑
  94. </Button>
  95. <Button block round type="primary" onClick={this.onSubmit}>
  96. 创建完成
  97. </Button>
  98. </div>
  99. </Sticky>
  100. </div>
  101. )
  102. }
  103. })