Explorar o código

直播课,视频课,乐谱修改

skyblued %!s(int64=2) %!d(string=hai) anos
pai
achega
0eb8a14d06

+ 2 - 2
src/student/invite-teacher/teacher-change/index.tsx

@@ -24,9 +24,9 @@ export default defineComponent({
     teacherInfo() {
       const { old, now } = this.changeInfo
       return {
-        oldName: old.realName,
+        oldName: old.username,
         oldAvatar: old.avatar,
-        nowName: now.realName,
+        nowName: now.username,
         nowAvatar: now.avatar
       }
     }

+ 68 - 40
src/teacher/live-class/create-components/arrange.tsx

@@ -112,6 +112,11 @@ export default defineComponent({
       })
     },
     async onSubmit() {
+      const groupId = this.$route.query.groupId
+      if (groupId){
+        createState.active = 4
+        return
+      }
       if (createState.selectCourseList.length <= 0) {
         Toast('请选择课程时间')
         return
@@ -230,49 +235,72 @@ export default defineComponent({
     }
   },
   render() {
+    const groupId = this.$route.query.groupId
     return (
       <div class={styles.arrange}>
-        <Calendar
-          selectList={createState.selectCourseList}
-          list={this.calendarList}
-          maxDays={createState.live.courseNum || 0}
-          nextMonth={(date: Date) => this.getList(date)}
-          prevMonth={(date: Date) => this.getList(date)}
-          selectDay={this.onSelectDay}
-          v-model:calendarDate={this.calendarDate}
-        />
-
-        <Cell
-          class={[styles.arrangeCell, 'mb12']}
-          v-slots={{
-            title: () => (
-              <div class={styles.rTitle}>
-                <span>已选择课程时间</span>
-              </div>
-            ),
-            label: () => (
-              <div class={styles.rTag}>
-                {this.showSelectList.map((item: any) => (
-                  <>
-                    <Tag
-                      plain
-                      round
-                      closeable
-                      size="large"
-                      type="primary"
-                      class={styles.tag}
-                      onClose={() => this.onCloseTag(item)}
-                    >
-                      {item.title}
-                    </Tag>
-                    <br />
-                  </>
-                ))}
-              </div>
-            )
-          }}
-        ></Cell>
+        {!groupId ? (
+          <>
+            <Calendar
+              selectList={createState.selectCourseList}
+              list={this.calendarList}
+              maxDays={createState.live.courseNum || 0}
+              nextMonth={(date: Date) => this.getList(date)}
+              prevMonth={(date: Date) => this.getList(date)}
+              selectDay={this.onSelectDay}
+              v-model:calendarDate={this.calendarDate}
+            />
 
+            <Cell
+              class={[styles.arrangeCell, 'mb12']}
+              v-slots={{
+                title: () => (
+                  <div class={styles.rTitle}>
+                    <span>已选择课程时间</span>
+                  </div>
+                ),
+                label: () => (
+                  <div class={styles.rTag}>
+                    {this.showSelectList.map((item: any) => (
+                      <>
+                        <Tag
+                          plain
+                          round
+                          closeable
+                          size="large"
+                          type="primary"
+                          class={styles.tag}
+                          onClose={() => this.onCloseTag(item)}
+                        >
+                          {item.title}
+                        </Tag>
+                        <br />
+                      </>
+                    ))}
+                  </div>
+                )
+              }}
+            ></Cell>
+          </>
+        ): (
+          <>
+            <Cell
+                class={[styles.arrangeCell, 'mb12']}
+                v-slots={{
+                  title: () => (
+                    <div class={styles.rTitle}>
+                      <span>已选择课程时间</span>
+                    </div>
+                  ),
+                }}
+            ></Cell>
+            {createState.live.coursePlanList.map(item => {
+              return (
+                <Cell title={`${item.startTime} ~ ${item.endTime}`}></Cell>
+              )
+            })}
+            <div class={['mb12']}></div>
+          </>
+        )}
         <Sticky offsetBottom={0} position="bottom">
           <div class={['btnGroup', 'btnMore']}>
             <Button

+ 3 - 1
src/teacher/live-class/create-components/course-plan.tsx

@@ -73,7 +73,9 @@ export default defineComponent({
               plain
               onClick={() => {
                 createState.active = 1
-                createState.live.coursePlanList = [{ ...basePlan }]
+                if (!createState.live.courseGroupId){ // 修改时不重置
+                  createState.live.coursePlanList = [{ ...basePlan }]
+                }
               }}
             >
               上一步

+ 19 - 7
src/teacher/live-class/create-components/course-start.tsx

@@ -39,9 +39,12 @@ export default defineComponent({
     }
   },
   mounted() {
-    this.maxDate = dayjs(createState.selectCourseList[0].startTime)
+    if (createState.selectCourseList[0]?.startTime) {
+      this.maxDate = dayjs(createState.selectCourseList[0].startTime)
       .subtract(1, 'day')
       .toDate()
+    }
+    
 
     createState.live.salesStartDate =
       createState.live.salesStartDate ||
@@ -87,6 +90,7 @@ export default defineComponent({
         class={styles.courseStart}
         onSubmit={() => (createState.active = 5)}
         scrollToError
+        disabled={createState.live.courseGroupId ? true : false}
       >
         <ColFieldGroup>
           <ColField title="开售日期" required>
@@ -97,6 +101,9 @@ export default defineComponent({
               isLink
               placeholder="请选择开售日期"
               onClick={() => {
+                if (createState.live.courseGroupId) {
+                  return
+                }
                 this.minDate = dayjs().toDate()
                 this.currentDate = dayjs(
                   createState.live.salesStartDate
@@ -114,6 +121,9 @@ export default defineComponent({
               readonly
               isLink
               onClick={() => {
+                if (createState.live.courseGroupId) {
+                  return
+                }
                 this.minDate = dayjs(createState.live.salesStartDate).toDate()
                 this.currentDate = dayjs(createState.live.salesEndDate).toDate()
                 this.typeDateTime = 'end'
@@ -165,7 +175,7 @@ export default defineComponent({
                   color="var(--van-primary)"
                   lineWidth={20}
                 >
-                  <Tab title="图片模板" name={1}></Tab>
+                  {/* <Tab title="图片模板" name={1}></Tab> */}
                   <Tab title="自定义模板" name={2}></Tab>
                 </Tabs>
               )
@@ -277,11 +287,13 @@ export default defineComponent({
               plain
               onClick={() => {
                 createState.active = 3
-                createState.live.salesStartDate = ''
-                createState.live.salesEndDate = ''
-                createState.live.backgroundPic = ''
-                createState.live.backgroundPicTemplate = ''
-                createState.live.mixStudentNum = null
+                if(!createState.live.courseGroupId){
+                  createState.live.salesStartDate = ''
+                  createState.live.salesEndDate = ''
+                  createState.live.backgroundPic = ''
+                  createState.live.backgroundPicTemplate = ''
+                  createState.live.mixStudentNum = null
+                }
               }}
             >
               上一步

+ 8 - 1
src/teacher/live-class/create-components/course.tsx

@@ -83,6 +83,7 @@ export default defineComponent({
         class={styles.classInfo}
         onSubmit={() => (createState.active = 2)}
         scrollToError
+        disabled={createState.live.courseGroupId ? true : false}
       >
         <ColFieldGroup>
           <ColField title="课程名称" required>
@@ -96,11 +97,15 @@ export default defineComponent({
           </ColField>
           <ColField title="课程声部" required>
             <Field
+              
               modelValue={this.lessonSubjectName}
               name="subjectId"
               readonly
               isLink
               onClick={() => {
+                if (createState.live.courseGroupId) {
+                  return
+                }
                 this.subjectStatus = true
               }}
               rules={[{ required: true, message: '请选择课程声部' }]}
@@ -145,7 +150,9 @@ export default defineComponent({
               readonly
               isLink
               onClick={() => {
-                this.classTimeStatus = true
+                if (!createState.live.courseGroupId){
+                  this.classTimeStatus = true
+                }
               }}
               rules={[{ required: true, message: '请选择单课时时长' }]}
               placeholder="请选择单课时时长"

+ 2 - 0
src/teacher/live-class/create-components/createState.ts

@@ -22,6 +22,8 @@ export const createState = reactive({
   selectCourseList: [] as any, // 选择课程列表
   coursePlanStatus: false, // 是否有锁课程
   live: {
+    teacherId: '',
+    courseGroupId: '',
     name: '',
     subjectId: null as any,
     courseIntroduce: '',

+ 34 - 3
src/teacher/live-class/create-components/detail.tsx

@@ -94,6 +94,30 @@ export default defineComponent({
           createState.coursePlanStatus = false
         })
       }
+    },
+
+    async onUpdate(){
+      
+      const params = {
+        id: createState.live.courseGroupId,
+        ...createState.live,
+        startTime: createState.live.coursePlanList[0].startTime,
+        backgroundPic:
+          createState.live.backgroundPic ||
+          createState.live.backgroundPicTemplate,
+      }
+      console.log({...params})
+      await request.post('/api-teacher/courseGroup/updateLiveCourse', {
+        data: params
+      })
+      Toast({
+        type: 'success',
+        message: '编辑成功',
+        duration: 1000,
+        onClose: () => {
+          postMessage({ api: 'back' })
+        }
+      })
     }
   },
   render() {
@@ -127,9 +151,16 @@ export default defineComponent({
             >
               返回编辑
             </Button>
-            <Button block round type="primary" onClick={this.onSubmit}>
-              创建成功
-            </Button>
+            {createState.live.courseGroupId ? (
+              <Button block round type="primary" onClick={this.onUpdate}>
+                确认修改
+              </Button>
+            ) : (
+              <Button block round type="primary" onClick={this.onSubmit}>
+                创建成功
+              </Button>
+            )}
+            
           </div>
         </Sticky>
       </div>

+ 27 - 0
src/teacher/live-class/create.tsx

@@ -46,6 +46,33 @@ export default defineComponent({
     } catch (err: any) {
       console.log(err)
     }
+    this.getLiveClassDetail()
+  },
+  methods:{
+     // 获取直播课详情
+    async getLiveClassDetail(){
+      const groupId = this.$route.query.groupId
+      if (!groupId) return
+      const res = await request.get(`/api-teacher/courseGroup/queryLiveCourseInfo?groupId=${groupId}`)
+      console.log(res, createState)
+      if (res.code == 200){
+        const data = res.data
+        createState.live.courseGroupId = data.courseGroupId
+        createState.live.teacherId = data.teacherId
+        createState.live.name = data.courseGroupName
+        createState.live.subjectId = (createState.subjectList.find((n:any) => n.name === data.subjectName) as any)?.id || ''
+        createState.live.courseIntroduce = data.courseIntroduce
+        createState.live.courseNum = data.courseNum
+        createState.live.singleMins = data.singleCourseMinutes
+        createState.live.coursePrice = data.coursePrice
+        createState.live.coursePlanList = data.planList
+        createState.live.salesStartDate = data.salesStartDate
+        createState.live.salesEndDate = data.salesEndDate
+        createState.live.mixStudentNum = data.mixStudentNum
+        // createState.live.coursePrice = data.singleCourseMinutes
+        createState.live.backgroundPic = data.backgroundPic
+      }
+    }
   },
   render() {
     return (

+ 31 - 18
src/teacher/music/upload/index.tsx

@@ -194,7 +194,7 @@ export default defineComponent({
             res.data.audioType === 'MIDI'
               ? 1
               : 0
-          this.mp3Url = res.data.audioFileUrl //res.data.metronomeUrl || res.data.url
+          this.mp3Url = res.data.audioFileUrl || res.data.url //res.data.metronomeUrl || res.data.url
         } else {
           this.midiUrl = res.data.midiUrl
         }
@@ -245,6 +245,7 @@ export default defineComponent({
       }
     },
     async submit(vals: any) {
+      console.log(vals)
       this.submitLoading = true
       try {
         if (this.$route.params.id) {
@@ -409,11 +410,14 @@ export default defineComponent({
                           : '上传文件'}
                       </Button>
                     ) : (
-                      <Upload
-                        onUpdate:modelValue={val => (this.xmlFileUrl = val)}
-                        accept=".xml"
-                        formatFile={this.readerFile}
-                      />
+                      <>
+                        <Upload
+                          onUpdate:modelValue={val => (this.xmlFileUrl = val)}
+                          accept=".xml"
+                          formatFile={this.readerFile}
+                        />
+                        <div style={{marginLeft: '8px'}}>{this.fileName(this.xmlFileUrl)}</div>
+                      </>
                     )
                 }}
               />
@@ -477,10 +481,13 @@ export default defineComponent({
                               : '上传文件'}
                           </Button>
                         ) : (
-                          <Upload
-                            onUpdate:modelValue={val => (this.mp3Url = val)}
-                            accept=".mp3"
-                          />
+                          <>
+                            <Upload
+                              onUpdate:modelValue={val => (this.mp3Url = val)}
+                              accept=".mp3"
+                            />
+                            <div style={{marginLeft: '8px'}}>{this.fileName(this.mp3Url)}</div>
+                          </>
                         )
                     }}
                   />
@@ -520,10 +527,13 @@ export default defineComponent({
                                 : '上传文件'}
                             </Button>
                           ) : (
-                            <Upload
-                              onUpdate:modelValue={val => (this.bgmp3Url = val)}
-                              accept=".mp3"
-                            />
+                            <>
+                              <Upload
+                                onUpdate:modelValue={val => (this.bgmp3Url = val)}
+                                accept=".mp3"
+                              />
+                              <div style={{marginLeft: '8px'}}>{this.fileName(this.bgmp3Url)}</div>
+                            </>
                           )
                       }}
                     />
@@ -551,10 +561,13 @@ export default defineComponent({
                             : '上传文件'}
                         </Button>
                       ) : (
-                        <Upload
-                          onUpdate:modelValue={val => (this.midiUrl = val)}
-                          accept=".mid"
-                        />
+                        <>
+                          <Upload
+                            onUpdate:modelValue={val => (this.midiUrl = val)}
+                            accept=".mid"
+                          />
+                          <div style={{marginLeft: '8px'}}>{this.fileName(this.midiUrl)}</div>
+                        </>
                       )
                   }}
                 />