mo 2 years ago
parent
commit
2f21badfd4

+ 324 - 323
src/teacher/live-class/live-detail.tsx

@@ -1,323 +1,324 @@
-import CoursePlanStep from '@/business-components/course-plan-step'
-import SectionDetail from '@/business-components/section-detail'
-import UserDetail from '@/business-components/user-detail'
-import UserList from '@/business-components/user-list'
-import ColResult from '@/components/col-result'
-import ColShare from '@/components/col-share'
-import ColSticky from '@/components/col-sticky'
-import { postMessage } from '@/helpers/native-message'
-import request from '@/helpers/request'
-import { state } from '@/state'
-import LiveItem from '@/views/live-class/live-item'
-import dayjs from 'dayjs'
-import { Button, Popup, Sticky, Tab, Tabs, Toast } from 'vant'
-import { defineComponent } from 'vue'
-import styles from './live-detail.module.less'
-interface IProps {
-  courseTime: string
-  coursePlan: string
-  videoPosterUrl?: string
-  roomUid?: string
-  liveState?: number
-  id?: number | string
-}
-export default defineComponent({
-  name: 'LiveDetail',
-  data() {
-    const query = this.$route.query
-    return {
-      share: query.share,
-      joinRoom: query.joinRoom, // 原生传递过来的参数,判断是否进入直播间
-      groupId: query.groupId,
-      courseId: query.classId,
-      live: {} as any,
-      shareStatus: false,
-      shareUrl: '',
-      myself: false
-    }
-  },
-  computed: {
-    userInfo() {
-      const live = this.live as any
-      const planList = live.planList || []
-      const startTime = planList[0]?.startTime || new Date()
-      const endTime = planList[0]?.endTime || new Date()
-      return {
-        headUrl: live.avatar,
-        avatar: live.avatar,
-        username: live.userName,
-        id: live.teacherId,
-        startTime:
-          `${dayjs(startTime).format('YYYY-MM-DD')} ${dayjs(startTime).format(
-            'HH:mm'
-          )}~${dayjs(endTime).format('HH:mm')}` || '',
-        lessonPrice: live.coursePrice,
-        buyNum: live.studentCount || 0,
-        lessonId: live.courseGroupId,
-        lessonNum: live.courseNum || 0, // 课时数
-        lessonDesc: live.courseIntroduce,
-        lessonCoverUrl: live.backgroundPic || live.backgroundPicTemplate,
-        lessonName: live.courseGroupName,
-        subjectName: live.subjectName,
-        courseStartTime: live.courseStartTime
-      }
-    },
-    courseInfo() {
-      const tempArr = [] as IProps[]
-      const coursePlanList = this.live.planList || []
-      coursePlanList.forEach((item: any) => {
-        const startTime = item.startTime || new Date()
-        const endTime = item.endTime || new Date()
-        tempArr.push({
-          courseTime: `${dayjs(startTime).format('YYYY-MM-DD')} ${dayjs(
-            startTime
-          ).format('HH:mm')}~${dayjs(endTime).format('HH:mm')}`,
-          coursePlan: item.plan,
-          roomUid: item.roomUid,
-          liveState: item.liveState,
-          id: item.courseId
-        })
-      })
-      return tempArr || []
-    },
-    liveStatus() {
-      const coursePlanList = this.live.planList || []
-      const tempObj = {
-        status: false,
-        liveStatus: 0,
-        roomUid: ''
-      }
-      coursePlanList.forEach((item: any) => {
-        if (item.courseId === Number(this.courseId)) {
-          tempObj.status = true
-          tempObj.liveStatus = item.liveStatus
-          tempObj.roomUid = item.roomUid
-        }
-      })
-      return tempObj
-    },
-    studentList() {
-      const live = this.live as any
-      return live.studentList || []
-    },
-    courseOffStatus() {
-      const live = this.live as any
-      let status = false
-      if (
-        (live.status === 'APPLY' && live.studentList.length === 0) ||
-        live.status === 'NOT_SALE'
-      ) {
-        status = true
-      }
-      return status
-    }
-  },
-  async mounted() {
-    try {
-      const res = await request.get(
-        '/api-teacher/courseGroup/queryLiveCourseInfo',
-        {
-          params: {
-            groupId: this.groupId
-          }
-        }
-      )
-      this.live = res.data || {}
-
-      if (state.platformType === 'TEACHER') {
-        this.myself = !res.data.myself
-      }
-
-      this.shareUrl = `${location.origin}/teacher/#/shareLive?recomUserId=${state.user.data?.userId}&groupId=${this.groupId}`
-      // console.log(this.live)
-    } catch {
-      //
-    }
-  },
-  methods: {
-    async onJoinRoom() {
-      try {
-        const res = await request.get(
-          '/api-teacher/courseGroup/queryLiveCourseInfo',
-          {
-            params: {
-              groupId: this.groupId
-            }
-          }
-        )
-        const result = res.data || {}
-        const coursePlanList = result.planList || []
-        let tempObj: any = {}
-        coursePlanList.forEach((item: any) => {
-          if (item.courseId === Number(this.courseId)) {
-            tempObj = item
-          }
-        })
-        if (tempObj && tempObj.liveState === 1) {
-          postMessage({
-            api: 'joinLiveRoom',
-            content: {
-              roomId: tempObj.roomUid,
-              teacherId: this.live.teacherId
-            }
-          })
-        } else if (tempObj && tempObj.liveState === 2) {
-          setTimeout(() => {
-            Toast('课程已结束')
-          }, 100)
-        } else {
-          setTimeout(() => {
-            Toast('课程尚未开始,请耐心等候')
-          }, 100)
-        }
-      } catch {
-        //
-      }
-    },
-    async cancelCourseGroup() {
-      try {
-        await request.get('/api-teacher/courseGroup/cancelCourseGroup', {
-          params: {
-            groupId: this.groupId
-          }
-        })
-        Toast('下架成功')
-        setTimeout(() => {
-          postMessage({ api: 'back', content: {} })
-        }, 500)
-      } catch {
-        //
-      }
-    }
-  },
-  render() {
-    return (
-      <div class={[styles['live-detail'], 'mb12']}>
-        <UserDetail userInfo={this.userInfo} />
-        <SectionDetail border>
-          <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
-        </SectionDetail>
-
-        {this.myself ? (
-          <SectionDetail title="课程列表" icon="courseList" border={true}>
-            <CoursePlanStep
-              courseInfo={this.courseInfo}
-              courseId={Number(this.courseId) || 0}
-            />
-          </SectionDetail>
-        ) : (
-          <SectionDetail
-            title="课程列表"
-            icon="courseList"
-            titleShow={false}
-            contentStyle={{ paddingTop: '0' }}
-          >
-            <Tabs color="var(--van-primary)" lineWidth={20} sticky>
-              <Tab title="课程" titleClass="van-hairline--bottom">
-                <CoursePlanStep
-                  courseInfo={this.courseInfo}
-                  courseId={Number(this.courseId) || 0}
-                />
-              </Tab>
-              <Tab title="学员列表" titleClass="van-hairline--bottom">
-                {this.studentList.map((item: any) => (
-                  <UserList
-                    class="mb12"
-                    users={{
-                      avatar: item.avatar,
-                      studentId: item.studentId,
-                      studentName: item.userName,
-                      createTime: item.createTime
-                    }}
-                  />
-                ))}
-                {this.studentList.length === 0 && (
-                  <ColResult
-                    tips="暂无购买学员"
-                    classImgSize="SMALL"
-                    btnStatus={false}
-                  />
-                )}
-              </Tab>
-            </Tabs>
-          </SectionDetail>
-        )}
-
-        {this.live.status !== 'OUT_SALE' && (
-          <>
-            {this.courseOffStatus && (
-              <ColSticky position="bottom">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
-                  <Button
-                    block
-                    round
-                    type="primary"
-                    onClick={this.cancelCourseGroup}
-                  >
-                    下架
-                  </Button>
-                </div>
-              </ColSticky>
-            )}
-
-            {this.joinRoom == '1' && this.liveStatus.liveStatus !== 2 && (
-              <ColSticky position="bottom">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
-                  <Button block round type="primary" onClick={this.onJoinRoom}>
-                    进入直播间
-                  </Button>
-                </div>
-              </ColSticky>
-            )}
-
-            {this.share == '1' && this.courseInfo.length > 0 && (
-              <ColSticky position="bottom">
-                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
-                  <Button
-                    block
-                    round
-                    type="primary"
-                    onClick={() => {
-                      this.shareStatus = true
-                    }}
-                  >
-                    分享
-                  </Button>
-                </div>
-              </ColSticky>
-            )}
-          </>
-        )}
-
-        <Popup
-          v-model:show={this.shareStatus}
-          style={{ background: 'transparent' }}
-        >
-          <ColShare
-            teacherId={this.userInfo.id}
-            shareUrl={this.shareUrl}
-            shareType="live"
-          >
-            <LiveItem
-              class={styles.shareCourse}
-              liveInfo={{
-                backgroundPic: this.userInfo.lessonCoverUrl,
-                courseGroupId: this.userInfo.lessonId,
-                courseGroupName: this.userInfo.lessonName,
-                courseNum: this.userInfo.lessonNum,
-                coursePrice: this.userInfo.lessonPrice,
-                teacherName: this.userInfo.username,
-                teacherId: this.userInfo.id,
-                avatar: this.userInfo.avatar,
-                studentCount: this.userInfo.buyNum,
-                courseStartTime: this.userInfo.courseStartTime,
-                existBuy: 0,
-                subjectName: this.userInfo.subjectName
-              }}
-            />
-          </ColShare>
-        </Popup>
-      </div>
-    )
-  }
-})
+import CoursePlanStep from '@/business-components/course-plan-step'
+import SectionDetail from '@/business-components/section-detail'
+import UserDetail from '@/business-components/user-detail'
+import UserList from '@/business-components/user-list'
+import ColResult from '@/components/col-result'
+import ColShare from '@/components/col-share'
+import ColSticky from '@/components/col-sticky'
+import { postMessage } from '@/helpers/native-message'
+import request from '@/helpers/request'
+import { state } from '@/state'
+import LiveItem from '@/views/live-class/live-item'
+import dayjs from 'dayjs'
+import { Button, Popup, Sticky, Tab, Tabs, Toast } from 'vant'
+import { defineComponent } from 'vue'
+import styles from './live-detail.module.less'
+interface IProps {
+  courseTime: string
+  coursePlan: string
+  videoPosterUrl?: string
+  roomUid?: string
+  liveState?: number
+  id?: number | string
+}
+export default defineComponent({
+  name: 'LiveDetail',
+  data() {
+    const query = this.$route.query
+    return {
+      share: query.share,
+      joinRoom: query.joinRoom, // 原生传递过来的参数,判断是否进入直播间
+      groupId: query.groupId,
+      courseId: query.classId,
+      live: {} as any,
+      shareStatus: false,
+      shareUrl: '',
+      myself: false
+    }
+  },
+  computed: {
+    userInfo() {
+      const live = this.live as any
+      const planList = live.planList || []
+      const startTime = planList[0]?.startTime || new Date()
+      const endTime = planList[0]?.endTime || new Date()
+      return {
+        headUrl: live.avatar,
+        avatar: live.avatar,
+        username: live.userName,
+        id: live.teacherId,
+        startTime:
+          `${dayjs(startTime).format('YYYY-MM-DD')} ${dayjs(startTime).format(
+            'HH:mm'
+          )}~${dayjs(endTime).format('HH:mm')}` || '',
+        lessonPrice: live.coursePrice,
+        buyNum: live.studentCount || 0,
+        lessonId: live.courseGroupId,
+        lessonNum: live.courseNum || 0, // 课时数
+        lessonDesc: live.courseIntroduce,
+        lessonCoverUrl: live.backgroundPic || live.backgroundPicTemplate,
+        lessonName: live.courseGroupName,
+        subjectName: live.subjectName,
+        courseStartTime: live.courseStartTime,
+        auditVersion:0
+      }
+    },
+    courseInfo() {
+      const tempArr = [] as IProps[]
+      const coursePlanList = this.live.planList || []
+      coursePlanList.forEach((item: any) => {
+        const startTime = item.startTime || new Date()
+        const endTime = item.endTime || new Date()
+        tempArr.push({
+          courseTime: `${dayjs(startTime).format('YYYY-MM-DD')} ${dayjs(
+            startTime
+          ).format('HH:mm')}~${dayjs(endTime).format('HH:mm')}`,
+          coursePlan: item.plan,
+          roomUid: item.roomUid,
+          liveState: item.liveState,
+          id: item.courseId
+        })
+      })
+      return tempArr || []
+    },
+    liveStatus() {
+      const coursePlanList = this.live.planList || []
+      const tempObj = {
+        status: false,
+        liveStatus: 0,
+        roomUid: ''
+      }
+      coursePlanList.forEach((item: any) => {
+        if (item.courseId === Number(this.courseId)) {
+          tempObj.status = true
+          tempObj.liveStatus = item.liveStatus
+          tempObj.roomUid = item.roomUid
+        }
+      })
+      return tempObj
+    },
+    studentList() {
+      const live = this.live as any
+      return live.studentList || []
+    },
+    courseOffStatus() {
+      const live = this.live as any
+      let status = false
+      if (
+        (live.status === 'APPLY' && live.studentList.length === 0) ||
+        live.status === 'NOT_SALE'
+      ) {
+        status = true
+      }
+      return status
+    }
+  },
+  async mounted() {
+    try {
+      const res = await request.get(
+        '/api-teacher/courseGroup/queryLiveCourseInfo',
+        {
+          params: {
+            groupId: this.groupId
+          }
+        }
+      )
+      this.live = res.data || {}
+
+      if (state.platformType === 'TEACHER') {
+        this.myself = !res.data.myself
+      }
+
+      this.shareUrl = `${location.origin}/teacher/#/shareLive?recomUserId=${state.user.data?.userId}&groupId=${this.groupId}`
+      // console.log(this.live)
+    } catch {
+      //
+    }
+  },
+  methods: {
+    async onJoinRoom() {
+      try {
+        const res = await request.get(
+          '/api-teacher/courseGroup/queryLiveCourseInfo',
+          {
+            params: {
+              groupId: this.groupId
+            }
+          }
+        )
+        const result = res.data || {}
+        const coursePlanList = result.planList || []
+        let tempObj: any = {}
+        coursePlanList.forEach((item: any) => {
+          if (item.courseId === Number(this.courseId)) {
+            tempObj = item
+          }
+        })
+        if (tempObj && tempObj.liveState === 1) {
+          postMessage({
+            api: 'joinLiveRoom',
+            content: {
+              roomId: tempObj.roomUid,
+              teacherId: this.live.teacherId
+            }
+          })
+        } else if (tempObj && tempObj.liveState === 2) {
+          setTimeout(() => {
+            Toast('课程已结束')
+          }, 100)
+        } else {
+          setTimeout(() => {
+            Toast('课程尚未开始,请耐心等候')
+          }, 100)
+        }
+      } catch {
+        //
+      }
+    },
+    async cancelCourseGroup() {
+      try {
+        await request.get('/api-teacher/courseGroup/cancelCourseGroup', {
+          params: {
+            groupId: this.groupId
+          }
+        })
+        Toast('下架成功')
+        setTimeout(() => {
+          postMessage({ api: 'back', content: {} })
+        }, 500)
+      } catch {
+        //
+      }
+    }
+  },
+  render() {
+    return (
+      <div class={[styles['live-detail'], 'mb12']}>
+        <UserDetail userInfo={this.userInfo} />
+        <SectionDetail border>
+          <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
+        </SectionDetail>
+
+        {this.myself ? (
+          <SectionDetail title="课程列表" icon="courseList" border={true}>
+            <CoursePlanStep
+              courseInfo={this.courseInfo}
+              courseId={Number(this.courseId) || 0}
+            />
+          </SectionDetail>
+        ) : (
+          <SectionDetail
+            title="课程列表"
+            icon="courseList"
+            titleShow={false}
+            contentStyle={{ paddingTop: '0' }}
+          >
+            <Tabs color="var(--van-primary)" lineWidth={20} sticky>
+              <Tab title="课程" titleClass="van-hairline--bottom">
+                <CoursePlanStep
+                  courseInfo={this.courseInfo}
+                  courseId={Number(this.courseId) || 0}
+                />
+              </Tab>
+              <Tab title="学员列表" titleClass="van-hairline--bottom">
+                {this.studentList.map((item: any) => (
+                  <UserList
+                    class="mb12"
+                    users={{
+                      avatar: item.avatar,
+                      studentId: item.studentId,
+                      studentName: item.userName,
+                      createTime: item.createTime
+                    }}
+                  />
+                ))}
+                {this.studentList.length === 0 && (
+                  <ColResult
+                    tips="暂无购买学员"
+                    classImgSize="SMALL"
+                    btnStatus={false}
+                  />
+                )}
+              </Tab>
+            </Tabs>
+          </SectionDetail>
+        )}
+
+        {this.live.status !== 'OUT_SALE' && (
+          <>
+            {this.courseOffStatus && (
+              <ColSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+                  <Button
+                    block
+                    round
+                    type="primary"
+                    onClick={this.cancelCourseGroup}
+                  >
+                    下架
+                  </Button>
+                </div>
+              </ColSticky>
+            )}
+
+            {this.joinRoom == '1' && this.liveStatus.liveStatus !== 2 && (
+              <ColSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+                  <Button block round type="primary" onClick={this.onJoinRoom}>
+                    进入直播间
+                  </Button>
+                </div>
+              </ColSticky>
+            )}
+
+            {this.share == '1' && this.courseInfo.length > 0 && (
+              <ColSticky position="bottom">
+                <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
+                  <Button
+                    block
+                    round
+                    type="primary"
+                    onClick={() => {
+                      this.shareStatus = true
+                    }}
+                  >
+                    分享
+                  </Button>
+                </div>
+              </ColSticky>
+            )}
+          </>
+        )}
+
+        <Popup
+          v-model:show={this.shareStatus}
+          style={{ background: 'transparent' }}
+        >
+          <ColShare
+            teacherId={this.userInfo.id}
+            shareUrl={this.shareUrl}
+            shareType="live"
+          >
+            <LiveItem
+              class={styles.shareCourse}
+              liveInfo={{
+                backgroundPic: this.userInfo.lessonCoverUrl,
+                courseGroupId: this.userInfo.lessonId,
+                courseGroupName: this.userInfo.lessonName,
+                courseNum: this.userInfo.lessonNum,
+                coursePrice: this.userInfo.lessonPrice,
+                teacherName: this.userInfo.username,
+                teacherId: this.userInfo.id,
+                avatar: this.userInfo.avatar,
+                studentCount: this.userInfo.buyNum,
+                courseStartTime: this.userInfo.courseStartTime,
+                existBuy: 0,
+                subjectName: this.userInfo.subjectName
+              }}
+            />
+          </ColShare>
+        </Popup>
+      </div>
+    )
+  }
+})

+ 2 - 1
src/teacher/share-page/share-live/index.tsx

@@ -55,7 +55,8 @@ export default defineComponent({
         lessonNum: live.courseNum || 0, // 课时数
         lessonDesc: live.courseIntroduce,
         lessonCoverUrl: live.backgroundPic || live.backgroundPicTemplate,
-        lessonName: live.courseGroupName
+        lessonName: live.courseGroupName,
+        auditVersion:0
       }
     },
     courseInfo() {

+ 106 - 105
src/teacher/video-class/create-submit.tsx

@@ -1,105 +1,106 @@
-import { defineComponent } from 'vue'
-import styles from './create-submit.module.less'
-import UserDetail from '@/business-components/user-detail'
-import SectionDetail from '@/business-components/section-detail'
-import CourseVideoItem from '@/business-components/course-video-item'
-import { Button, Sticky, Toast } from 'vant'
-import { createState } from './createState'
-import { state } from '@/state'
-import request from '@/helpers/request'
-import { postMessage } from '@/helpers/native-message'
-
-export default defineComponent({
-  name: 'CreateSubmit',
-  computed: {
-    userInfo() {
-      const videoDetail = createState.lessonGroup
-      const users = state.user.data || {}
-      return {
-        username: users.username || `游客${users.id || ''}`,
-        headUrl: users.headUrl,
-        lessonName: videoDetail.lessonName,
-        buyNum: 0,
-        lessonDesc: videoDetail.lessonDesc,
-        lessonPrice: videoDetail.lessonPrice,
-        lessonCoverUrl:
-          videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl,
-        lessonNum: createState.lessonList.length
-      }
-    },
-    lessonList() {
-      return createState.lessonList || []
-    }
-  },
-  methods: {
-    async onSubmit() {
-      try {
-        const videoDetail = createState.lessonGroup
-        let params = {
-          lessonList: this.lessonList,
-          lessonGroup: {
-            ...videoDetail,
-            lessonCoverUrl:
-              videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl
-          }
-        }
-        if (createState.groupId) {
-          await request.post('/api-teacher/videoLessonGroup/update', {
-            data: params
-          })
-          Toast.success('修改成功')
-        } else {
-          await request.post('/api-teacher/videoLessonGroup/add', {
-            data: params
-          })
-          Toast.success('创建成功')
-        }
-        setTimeout(() => {
-          postMessage({ api: 'back' })
-        }, 1000)
-      } catch {}
-    }
-  },
-  render() {
-    return (
-      <div class={[styles.createSubmit]}>
-        <UserDetail userInfo={this.userInfo} />
-        <SectionDetail>
-          <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
-        </SectionDetail>
-
-        <SectionDetail title="课程列表" icon="courseList" class="mb12">
-          {this.lessonList.map((item: any) => (
-            <CourseVideoItem
-              class={'mb12'}
-              detail={{
-                title: item.videoTitle,
-                content: item.videoContent,
-                imgUrl: item.coverUrl
-              }}
-            />
-          ))}
-        </SectionDetail>
-
-        <Sticky offsetBottom={0} position="bottom">
-          <div class={['btnGroup', 'btnMore']}>
-            <Button
-              block
-              round
-              type="primary"
-              plain
-              onClick={() => {
-                createState.active = 2
-              }}
-            >
-              返回编辑
-            </Button>
-            <Button block round type="primary" onClick={this.onSubmit}>
-              创建完成
-            </Button>
-          </div>
-        </Sticky>
-      </div>
-    )
-  }
-})
+import { defineComponent } from 'vue'
+import styles from './create-submit.module.less'
+import UserDetail from '@/business-components/user-detail'
+import SectionDetail from '@/business-components/section-detail'
+import CourseVideoItem from '@/business-components/course-video-item'
+import { Button, Sticky, Toast } from 'vant'
+import { createState } from './createState'
+import { state } from '@/state'
+import request from '@/helpers/request'
+import { postMessage } from '@/helpers/native-message'
+
+export default defineComponent({
+  name: 'CreateSubmit',
+  computed: {
+    userInfo() {
+      const videoDetail = createState.lessonGroup
+      const users = state.user.data || {}
+      return {
+        username: users.username || `游客${users.id || ''}`,
+        headUrl: users.headUrl,
+        lessonName: videoDetail.lessonName,
+        buyNum: 0,
+        lessonDesc: videoDetail.lessonDesc,
+        lessonPrice: videoDetail.lessonPrice,
+        lessonCoverUrl:
+          videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl,
+        lessonNum: createState.lessonList.length,
+        auditVersion:0
+      }
+    },
+    lessonList() {
+      return createState.lessonList || []
+    }
+  },
+  methods: {
+    async onSubmit() {
+      try {
+        const videoDetail = createState.lessonGroup
+        let params = {
+          lessonList: this.lessonList,
+          lessonGroup: {
+            ...videoDetail,
+            lessonCoverUrl:
+              videoDetail.lessonCoverTemplateUrl || videoDetail.lessonCoverUrl
+          }
+        }
+        if (createState.groupId) {
+          await request.post('/api-teacher/videoLessonGroup/update', {
+            data: params
+          })
+          Toast.success('修改成功')
+        } else {
+          await request.post('/api-teacher/videoLessonGroup/add', {
+            data: params
+          })
+          Toast.success('创建成功')
+        }
+        setTimeout(() => {
+          postMessage({ api: 'back' })
+        }, 1000)
+      } catch {}
+    }
+  },
+  render() {
+    return (
+      <div class={[styles.createSubmit]}>
+        <UserDetail userInfo={this.userInfo} />
+        <SectionDetail>
+          <p class={styles.introduction}>{this.userInfo.lessonDesc}</p>
+        </SectionDetail>
+
+        <SectionDetail title="课程列表" icon="courseList" class="mb12">
+          {this.lessonList.map((item: any) => (
+            <CourseVideoItem
+              class={'mb12'}
+              detail={{
+                title: item.videoTitle,
+                content: item.videoContent,
+                imgUrl: item.coverUrl
+              }}
+            />
+          ))}
+        </SectionDetail>
+
+        <Sticky offsetBottom={0} position="bottom">
+          <div class={['btnGroup', 'btnMore']}>
+            <Button
+              block
+              round
+              type="primary"
+              plain
+              onClick={() => {
+                createState.active = 2
+              }}
+            >
+              返回编辑
+            </Button>
+            <Button block round type="primary" onClick={this.onSubmit}>
+              创建完成
+            </Button>
+          </div>
+        </Sticky>
+      </div>
+    )
+  }
+})