ソースを参照

Merge remote-tracking branch 'origin/liu-v1.3' into newVersion

lex 2 年 前
コミット
955b3bb981

+ 1 - 1
src/components/col-steps/index.tsx

@@ -78,7 +78,7 @@ export default defineComponent({
     this.stepLength = this.list[this.type].length
   },
   render() {
-    console.log(this.active)
+    // console.log(this.active)
     return (
       <div class={[styles.steps, 'flex items-center justify-between bg-white']}>
         {this.list[this.type].map((item: any, index: number) => (

+ 9 - 0
src/views/user-info/components/item/index.tsx

@@ -25,6 +25,15 @@ export default defineComponent({
               }
             })
           }
+          if (item.type === 'live' && item.status === "CANCEL"){ // 直播课
+            this.$router.push({
+              path: '/userInfo/liveOperation',
+              query:{
+                type: 'edit',
+                groupId: item.courseGroupId
+              }
+            })
+          }
         }}
       >
         {/* {item.subjectName && (

+ 76 - 44
src/views/user-info/live-operation/course-class/index.tsx

@@ -111,6 +111,22 @@ export default defineComponent({
           scrollAnimation(currentY, 0)
         })
       }
+    },
+    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-website/courseGroup/updateLiveCourse', {
+        data: params
+      })
+      ElMessage.success('编辑成功')
+      this.$router.replace('/userInfo/liveClass')
     }
   },
   render() {
@@ -152,6 +168,7 @@ export default defineComponent({
               }}
               placeholder="请输入开售日期"
               type="date"
+              disabled={createState.live.courseGroupId ? true : false}
             />
           </ElFormItem>
           <ElFormItem
@@ -184,6 +201,7 @@ export default defineComponent({
               }}
               placeholder="请输入停售日期"
               type="date"
+              disabled={createState.live.courseGroupId ? true : false}
             />
           </ElFormItem>
           <ElFormItem
@@ -205,10 +223,11 @@ export default defineComponent({
               v-slots={{
                 suffix: () => <span class="text-base text-[#999]">人</span>
               }}
+              disabled={createState.live.courseGroupId ? true : false}
             />
           </ElFormItem>
-         {/*  <ElFormItem label="课程封面" class="!mb-0" required> */}
-            {/* <ElTabs
+          {/*  <ElFormItem label="课程封面" class="!mb-0" required> */}
+          {/* <ElTabs
               v-model={createState.tabIndex}
               class={styles.tabs}
               onTab-change={(name: any) => {
@@ -220,35 +239,35 @@ export default defineComponent({
             </ElTabs>
 
             */}
-              <ElFormItem
-              label="课程封面"
-              prop="backgroundPic"
-              rules={[
-                {
-                  required: true,
-                  message: '请上传课程封面',
-                  trigger: 'change'
-                }
-              ]}
-            >
-              <ColCropper
-                modelValue={createState.live.backgroundPic}
-                bucket="video-course"
-                cropUploadSuccess={(data: any) => {
-                  createState.live.backgroundPic = data
-                  createState.live.backgroundPicTemplate = ''
-                }}
-                options={{
-                  title: '课程封面',
-                  fixedNumber: [3.34, 2],
-                  autoCropWidth: 375,
-                  autoCropHeight: 212
-                  // fixedNumber: [3, 2],
-                  // autoCropWidth: 300,
-                  // autoCropHeight: 200
-                }}
-              />
-            </ElFormItem>
+          <ElFormItem
+            label="课程封面"
+            prop="backgroundPic"
+            rules={[
+              {
+                required: true,
+                message: '请上传课程封面',
+                trigger: 'change'
+              }
+            ]}
+          >
+            <ColCropper
+              modelValue={createState.live.backgroundPic}
+              bucket="video-course"
+              cropUploadSuccess={(data: any) => {
+                createState.live.backgroundPic = data
+                createState.live.backgroundPicTemplate = ''
+              }}
+              options={{
+                title: '课程封面',
+                fixedNumber: [3.34, 2],
+                autoCropWidth: 375,
+                autoCropHeight: 212
+                // fixedNumber: [3, 2],
+                // autoCropWidth: 300,
+                // autoCropHeight: 200
+              }}
+            />
+          </ElFormItem>
           {/* </ElFormItem> */}
 
           {/* {createState.tabIndex === 1 && (
@@ -297,11 +316,13 @@ export default defineComponent({
             onClick={() => {
               // console.log(true)
               createState.active = 2
-              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
+              }
             }}
           >
             上一步
@@ -340,14 +361,25 @@ export default defineComponent({
                 >
                   返回编辑
                 </ElButton>
-                <ElButton
-                  size="large"
-                  round
-                  type="primary"
-                  onClick={this.onSubmit}
-                >
-                  创建完成
-                </ElButton>
+                {createState.live.courseGroupId ? (
+                  <ElButton
+                    size="large"
+                    round
+                    type="primary"
+                    onClick={this.onUpdate}
+                  >
+                    确定修改
+                  </ElButton>
+                ) : (
+                  <ElButton
+                    size="large"
+                    round
+                    type="primary"
+                    onClick={this.onSubmit}
+                  >
+                    创建完成
+                  </ElButton>
+                )}
               </span>
             )
           }}

+ 24 - 14
src/views/user-info/live-operation/course-content/index.tsx

@@ -118,6 +118,10 @@ export default defineComponent({
       })
     },
     async onSubmit() {
+      if (createState.live.courseGroupId){
+        createState.active = 3
+        return
+      }
       if (createState.selectCourseList.length <= 0) {
         Toast('请选择课程时间')
         return
@@ -243,17 +247,19 @@ export default defineComponent({
     return (
       <div class={[styles.arrange]}>
         <div class="px-12 pt-7">
-          <div class="px-8 pt-4 pb-6 bg-[#FCFCFC] rounded-[10px]">
-            <ColCalendar
-              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}
-            />
-          </div>
+          {createState.live.courseGroupId ? null : (
+            <div class="px-8 pt-4 pb-6 bg-[#FCFCFC] rounded-[10px]">
+              <ColCalendar
+                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}
+              />
+            </div>
+          )}
 
           <div class={[styles.arrangeCell, '!my-4']}>
             <div class={styles.rTitle}>
@@ -268,7 +274,7 @@ export default defineComponent({
                     size="large"
                     effect="light"
                     class={['mb-2 !border-[#2DC7AA] !color-[#2DC7AA] mr-2']}
-                    closable
+                    closable={createState.live.courseGroupId ? false : true}
                     onClose={() => this.onCloseTag(item)}
                   >
                     {item.title}
@@ -285,10 +291,14 @@ export default defineComponent({
             round
             class="!w-44 !h-[48px] !text-base"
             onClick={() => {
-              this.onReset()
+              if (!createState.live.courseGroupId) {
+                this.onReset()
+              }
               createState.active = 1
               // 重置选择的课次
-              createState.selectCourseList = []
+              if (!createState.live.courseGroupId) {
+                createState.selectCourseList = []
+              }
             }}
           >
             上一步

+ 39 - 23
src/views/user-info/live-operation/course-info/index.tsx

@@ -29,24 +29,36 @@ export default defineComponent({
   data() {
     return {
       url: '',
-      calcRatePrice: 0 as any,
-      calcSingleRatePrice: 0 as any
+      // calcRatePrice: 0 as any,
+      // calcSingleRatePrice: 0 as any
     }
   },
   computed: {
     subjectList() {
       // 学科列表
       return createState.subjectList || []
+    },
+    calcSingleRatePrice() {
+      let rate = createState.rate || 0
+      let nums = createState.live.courseNum
+      let price = createState.live.coursePrice || 0
+      return nums ? ((price / nums) * (1 - rate / 100)).toFixed(2) : 0
+    },
+    calcRatePrice() {
+      // 计算手续费
+      let rate = createState.rate || 0
+      let price = createState.live.coursePrice || 0
+      return (price - (rate / 100) * price).toFixed(2)
     }
   },
   async mounted() {
-    const rate = createState.rate || 0
-    const nums = createState.live.courseNum
-    const tempPrice = createState.live.coursePrice || 0
-    this.calcRatePrice = (tempPrice - (rate / 100) * tempPrice).toFixed(2)
-    this.calcSingleRatePrice = nums
-      ? ((tempPrice / nums) * (1 - rate / 100)).toFixed(2)
-      : 0
+    // const rate = createState.rate || 0
+    // const nums = createState.live.courseNum
+    // const tempPrice = createState.live.coursePrice || 0
+    // this.calcRatePrice = (tempPrice - (rate / 100) * tempPrice).toFixed(2)
+    // this.calcSingleRatePrice = nums
+    //   ? ((tempPrice / nums) * (1 - rate / 100)).toFixed(2)
+    //   : 0
     try {
       // 获取手续费和分钟数
       let config = await request.get(
@@ -77,6 +89,9 @@ export default defineComponent({
 
       let teacher = await request.post('/api-website/teacher/querySubject')
       createState.subjectList = teacher.data || []
+      if (createState.live.subjectName){
+        createState.live.subjectId = (createState.subjectList.find((n:any) => n.name === createState.live.subjectName) as any)?.id || ''
+      }
     } catch (err: any) {
       console.log(err)
     }
@@ -91,9 +106,9 @@ export default defineComponent({
       let rate = createState.rate || 0
       let nums = createState.live.courseNum
       let tempPrice = createState.live.coursePrice || 0
-      this.calcSingleRatePrice = nums
-        ? ((tempPrice / nums) * (1 - rate / 100)).toFixed(2)
-        : 0
+      // this.calcSingleRatePrice = nums
+      //   ? ((tempPrice / nums) * (1 - rate / 100)).toFixed(2)
+      //   : 0
     },
     onFormatter(e: any) {
       e.target.value = verifyNumberIntegerAndFloat(e.target.value)
@@ -101,13 +116,13 @@ export default defineComponent({
       // 计算手续费
       let rate = createState.rate || 0
       let price = e.target.value || 0
-      this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
+      // this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
 
       let nums = createState.live.courseNum
       // let tempPrice = createState.live.coursePrice || 0
-      this.calcSingleRatePrice = nums
-        ? ((price / nums) * (1 - rate / 100)).toFixed(2)
-        : 0
+      // this.calcSingleRatePrice = nums
+      //   ? ((price / nums) * (1 - rate / 100)).toFixed(2)
+      //   : 0
     }
   },
   render() {
@@ -120,6 +135,7 @@ export default defineComponent({
           labelWidth={'120px'}
           labelPosition="left"
           model={createState.live}
+          disabled={createState.live.courseGroupId ? true : false}
         >
           <ElFormItem
             label="课程名称"
@@ -252,14 +268,14 @@ export default defineComponent({
                   verifyNumberIntegerAndFloat(value)
 
                 // 计算手续费
-                const rate = createState.rate || 0
-                const price = createState.live.coursePrice || 0
-                this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
+                // const rate = createState.rate || 0
+                // const price = createState.live.coursePrice || 0
+                // this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
 
-                const nums = createState.live.courseNum
-                this.calcSingleRatePrice = nums
-                  ? ((price / nums) * (1 - rate / 100)).toFixed(2)
-                  : 0
+                // const nums = createState.live.courseNum
+                // this.calcSingleRatePrice = nums
+                //   ? ((price / nums) * (1 - rate / 100)).toFixed(2)
+                //   : 0
               }}
               maxlength={8}
               v-slots={{

+ 3 - 1
src/views/user-info/live-operation/course-plan/index.tsx

@@ -93,7 +93,9 @@ export default defineComponent({
             class="!w-44 !h-[48px] !text-base"
             onClick={() => {
               createState.active = 0
-              createState.live.coursePlanList = [{ ...basePlan }]
+              if (!createState.live.courseGroupId) {
+                createState.live.coursePlanList = [{ ...basePlan }]
+              }
             }}
           >
             上一步

+ 3 - 0
src/views/user-info/live-operation/createState.ts

@@ -23,8 +23,11 @@ const original = () => {
     selectCourseList: [] as any, // 选择课程列表
     coursePlanStatus: false, // 是否有锁课程
     live: {
+      courseGroupId: '',
+      teacherId: '',
       name: '',
       subjectId: null as any,
+      subjectName: '',
       courseIntroduce: '',
       courseNum: null as any,
       singleCourseMinutes: 0,

+ 37 - 0
src/views/user-info/live-operation/index.tsx

@@ -17,6 +17,43 @@ export default defineComponent({
   },
   created() {
     resestState()
+    this.getLiveClassDetail()
+  },
+  methods: {
+    // 获取直播课详情
+    async getLiveClassDetail() {
+      const groupId = this.$route.query.groupId
+      if (!groupId) return
+      const res = await request.get(
+        `/api-website/courseGroup/queryLiveCourseInfo?groupId=${groupId}`
+      )
+      console.log(res, [...createState.subjectList])
+      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.subjectName = data.subjectName
+        createState.live.courseIntroduce = data.courseIntroduce
+        createState.live.courseNum = data.courseNum
+        createState.live.singleMins = data.singleCourseMinutes
+        createState.live.coursePrice = data.coursePrice
+        const list = data.planList.map(n => {
+          if (n.startTime && n.endTime) {
+            n.start = n.startTime.split(' ')[1]
+            n.end = n.endTime.split(' ')[1]
+          }
+          return n
+        })
+        createState.live.coursePlanList = list
+        createState.selectCourseList = list
+        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 (

+ 2 - 1
src/views/user-info/music-class/item.tsx

@@ -47,7 +47,8 @@ export default defineComponent({
       }
     )
     const gotoMusicDetail = () => {
-      router.push({ path: '/muiscDetial', query: { id: state.item.id } })
+      console.log(1)
+      // router.push({ path: '/muiscDetial', query: { id: state.item.id } })
     }
     return () => (
       <div

+ 4 - 2
src/views/user-info/music-class/list.tsx

@@ -111,6 +111,9 @@ export default defineComponent({
                 {this.list.map((item: any) => (
                   <MusicItem
                     onClick={(item: any) => {
+                      if (['PASS', 'DOING'].includes(this.auditStatus)) {
+                        this.$router.push({ path: '/muiscDetial', query: { id: item.id } })
+                      }
                       if (this.auditStatus === 'UNPASS') {
                         console.log(item)
                         this.$router.push({
@@ -120,9 +123,8 @@ export default defineComponent({
                             id: item.id
                           }
                         })
-                      } else {
-                        // 跳转对应详情 个人中心不跳转到详情
                       }
+                      
                     }}
                     item={{
                       id: item.id,

+ 1 - 1
src/views/user-info/video-operation/course-content/index.tsx

@@ -315,7 +315,7 @@ export default defineComponent({
                   type="primary"
                   onClick={this.createSubmit}
                 >
-                  创建完成
+                  {createState.groupId ? '确认修改' : '创建完成'}
                 </ElButton>
               </span>
             )

+ 11 - 9
src/views/user-info/video-operation/course-info/index.tsx

@@ -27,7 +27,7 @@ export default defineComponent({
   data() {
     return {
       url: '',
-      calcRatePrice: 0 as any
+      // calcRatePrice: 0 as any
     }
   },
   computed: {
@@ -51,13 +51,13 @@ export default defineComponent({
         }
       })
       return tempStr
+    },
+    calcRatePrice() {
+      // 计算手续费
+      let rate = createState.rate || 0
+      let price = createState.lessonGroup.lessonPrice || 0
+      return (price - (rate / 100) * price).toFixed(2)
     }
-    // calcRatePrice() {
-    //   // 计算手续费
-    //   let rate = createState.rate || 0
-    //   let price = createState.lessonGroup.lessonPrice || 0
-    //   return (price - (rate / 100) * price).toFixed(2)
-    // }
   },
   async mounted() {
     try {
@@ -68,7 +68,7 @@ export default defineComponent({
 
       const rate = createState.rate || 0
       const price = createState.lessonGroup.lessonPrice || 0
-      this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
+      // this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
       // setInterval(() => {
       //   console.log(
       //     createState.lessonGroup.lessonCoverTemplateUrl,
@@ -90,7 +90,7 @@ export default defineComponent({
       // 计算手续费
       let rate = createState.rate || 0
       let price = e.target.value || 0
-      this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
+      // this.calcRatePrice = (price - (rate / 100) * price).toFixed(2)
     },
     tabChange(name: number) {
       ;(this as any).$refs.form.clearValidate('lessonCoverTemplateUrl')
@@ -143,6 +143,7 @@ export default defineComponent({
               class="w-full"
               v-model={createState.lessonGroup.lessonSubject}
               placeholder="请选择课程声部"
+              disabled={createState.lessonGroup.id ? true : false}
             >
               {createState.subjectList.map((item: any) => (
                 <ElOption key={item.id} value={item.id} label={item.name} />
@@ -188,6 +189,7 @@ export default defineComponent({
               v-slots={{
                 suffix: () => <span class="text-base text-[#999]">元</span>
               }}
+              disabled={createState.lessonGroup.id ? true : false}
             />
           </ElFormItem>
           <div class="text-sm text-[#999] pl-[120px] leading-relaxed pb-2">