create.tsx 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { defineComponent } from 'vue'
  2. import Steps from './create-components/steps'
  3. import { createState } from './create-components/createState'
  4. import Course from './create-components/course'
  5. import CoursePlan from './create-components/course-plan'
  6. import CourseStart from './create-components/course-start'
  7. import Detail from './create-components/detail'
  8. import { Popup, Sticky } from 'vant'
  9. import Arrange from './create-components/arrange'
  10. import request from '@/helpers/request'
  11. import styles from './create.module.less'
  12. import ColHeader from '@/components/col-header'
  13. import TheSticky from '@/components/the-sticky'
  14. import iconQuestion from '@/teacher/practice-class/tip-model/images/icon-question.png'
  15. import TipModel from '../practice-class/tip-model'
  16. export default defineComponent({
  17. name: 'LiveCreate',
  18. data() {
  19. return {
  20. tipStatus: false
  21. }
  22. },
  23. async mounted() {
  24. try {
  25. // 获取手续费和分钟数
  26. const config = await request.get(
  27. '/api-teacher/sysConfig/queryByParamNameList',
  28. {
  29. params: {
  30. paramNames: 'group_service_rate,group_time_setting,group_max_student_num'
  31. }
  32. }
  33. )
  34. const configData = config.data || []
  35. configData.forEach((item: any) => {
  36. if (item.paramName === 'group_time_setting') {
  37. const mins = item.paramValue ? JSON.parse(item.paramValue) : []
  38. const tempArr = [] as any
  39. mins.forEach((item: any) => {
  40. tempArr.push({
  41. ...item,
  42. name: item.courseMinutes
  43. })
  44. })
  45. createState.minutes = [...tempArr]
  46. }
  47. if (item.paramName === 'group_service_rate') {
  48. createState.rate = item.paramValue
  49. }
  50. // 最大成课人数
  51. if(item.paramName === "group_max_student_num") {
  52. createState.live.maxStudentNum = item.paramValue
  53. }
  54. })
  55. const teacher = await request.post('/api-teacher/teacher/querySubject')
  56. createState.subjectList = teacher.data || []
  57. } catch (err: any) {
  58. console.log(err)
  59. }
  60. this.getLiveClassDetail()
  61. },
  62. methods: {
  63. // 获取直播课详情
  64. async getLiveClassDetail() {
  65. const groupId = this.$route.query.groupId
  66. if (!groupId) return
  67. const res = await request.get(
  68. `/api-teacher/courseGroup/queryLiveCourseInfo?groupId=${groupId}`
  69. )
  70. console.log(res, createState)
  71. if (res.code == 200) {
  72. const data = res.data
  73. createState.live.courseGroupId = data.courseGroupId
  74. createState.live.teacherId = data.teacherId
  75. createState.live.name = data.courseGroupName
  76. createState.live.subjectId =
  77. (
  78. createState.subjectList.find(
  79. (n: any) => n.name === data.subjectName
  80. ) as any
  81. )?.id || ''
  82. createState.live.courseIntroduce = data.courseIntroduce
  83. createState.live.courseNum = data.courseNum
  84. createState.live.singleMins = data.singleCourseMinutes
  85. createState.live.coursePrice = data.coursePrice
  86. createState.live.coursePlanList = data.planList
  87. createState.live.salesStartDate = data.salesStartDate
  88. createState.live.salesEndDate = data.salesEndDate
  89. createState.live.mixStudentNum = data.mixStudentNum
  90. createState.live.backgroundPic = data.backgroundPic
  91. }
  92. }
  93. },
  94. render() {
  95. return (
  96. <div class={styles['live-create']}>
  97. <TheSticky position="top">
  98. <ColHeader border={false} v-slots={{
  99. right: () => (
  100. <img
  101. src={iconQuestion}
  102. class={styles.iconQuestion}
  103. onClick={() => (this.tipStatus = true)}
  104. />
  105. )
  106. }} />
  107. {createState.active !== 5 && (
  108. <Steps
  109. style={{ backgroundColor: '#f6f8f9', paddingBottom: '12px' }}
  110. />
  111. )}
  112. </TheSticky>
  113. {createState.active === 1 && <Course />}
  114. {createState.active == 2 && <CoursePlan />}
  115. {createState.active == 3 && <Arrange />}
  116. {createState.active == 4 && <CourseStart />}
  117. {createState.active == 5 && <Detail />}
  118. <Popup
  119. show={this.tipStatus}
  120. class={styles.tipPopup}
  121. closeable
  122. onClose={() => (this.tipStatus = false)}
  123. >
  124. <TipModel
  125. onClose={() => (this.tipStatus = false)}
  126. title={'什么是小组课?'}
  127. content={
  128. '小组课是老师根据教学目的编排的课程,固定时间进行1V5线上授课。您可根据老师开放的课程内容和您的时间安排,选择您感兴趣的课程组进行学习。'
  129. }
  130. />
  131. </Popup>
  132. </div>
  133. )
  134. }
  135. })