ソースを参照

Merge branch 'master' of http://git.dayaedu.com/lex/orchestra-app

lex 2 年 前
コミット
76b738e25d

+ 8 - 0
src/school/orchestra/compontent/photo.module.less

@@ -90,4 +90,12 @@
 
 .photos {
   padding: 0 16px 16px;
+}
+:global{
+  .van-image-preview{
+    .van-image-preview__close-icon,
+    .van-image-preview__index{
+      top: 50px
+    }
+  }
 }

+ 13 - 9
src/views/coursewarePlay/index.tsx

@@ -168,7 +168,7 @@ export default defineComponent({
         )
         if (res?.data) {
           data.isCourse =
-          res.data.status === 'ING' && state.platformType == 'TEACHER' ? true : false
+            res.data.status === 'ING' && state.platformType == 'TEACHER' ? true : false
           data.isRecordPlay = Date.now() > dayjs(res.data.startTime).valueOf()
         }
       } catch (e) {
@@ -240,14 +240,16 @@ export default defineComponent({
       }
       // console.log('🚀 ~ list', list)
       data.itemList = list
+      nextTick(() => {
+        postMessage({
+          api: 'courseLoading',
+          content: {
+            show: false,
+            type: 'fullscreen'
+          }
+        })
+      })
       // setTimeout(() => {
-      //   postMessage({
-      //     api: 'courseLoading',
-      //     content: {
-      //       show: false,
-      //       type: 'fullscreen'
-      //     }
-      //   })
       // }, 300)
     }
     const getDetail = async () => {
@@ -642,7 +644,9 @@ export default defineComponent({
               返回
             </div>
             <div class={styles.menu}>{popupData.tabName}</div>
-            {data.isCourse && data.isRecordPlay && <PlayRecordTime ref={playRef} list={data.itemList} />}
+            {data.isCourse && data.isRecordPlay && (
+              <PlayRecordTime ref={playRef} list={data.itemList} />
+            )}
           </div>
 
           <Transition name="right">

+ 47 - 80
src/views/exercise-after-class/index.tsx

@@ -87,7 +87,6 @@ export default defineComponent({
     const headeRef = ref()
     const data = reactive({
       videoData: null as any,
-      details: [] as any,
       trainings: [] as any[],
       trainingTimes: 0,
       itemList: [] as any,
@@ -101,40 +100,32 @@ export default defineComponent({
       timer: null as any,
       item: null as any
     })
-    const getDetail = async () => {
-      data.itemList = []
-      let details = []
+    // 获取课后练习记录
+    const getTrainingRecord = async () => {
       try {
-        const res: any = await request.get(
-          state.platformApi + `/lessonTraining/courseSchedule/${route.query.courseScheduleId}`,
+        const res: any = await request.post(
+          state.platformApi +
+            `/studentLessonTraining/trainingRecord/${query.courseScheduleId}?userId=${state.user?.data?.id}`,
           {
             hideLoading: true
           }
         )
-        if (Array.isArray(res?.data)) {
-          const studentLevel = state.user?.data?.studentLevel || 1
-          details = res.data.find((n: any) => n.studentLevel === studentLevel)?.details || []
+        if (Array.isArray(res?.data?.trainings)) {
+          return res.data.trainings
         }
-      } catch (error) {
-        console.log('error')
-      }
-      if (details.length) {
-        details.forEach((n: any) => {
+      } catch (error) {}
+      return []
+    }
+    const setRecord = async (trainings: any[]) => {
+      if (Array.isArray(trainings)) {
+        data.trainings = trainings.map((n: any) => {
           try {
-            n.trainingConfigJson = JSON.parse(n.lessonTrainingTemp.trainingConfigJson)
+            n.trainingContent = JSON.parse(n.trainingContent)
           } catch (error) {
-            n.trainingConfigJson = {}
+            n.trainingContent = ''
           }
-        })
-        data.details = details
-        // console.log("🚀 ~ data.details", data.details)
-        data.videoData = details.find((n: any) => n.materialId == route.query.materialId) || null
-        // console.log('🚀 ~ data.videoData', data.videoData)
-        data.itemList = [
-          {
-            ...data.videoData,
-            id: data.videoData?.materialId || '',
-            loaded: false,
+          return {
+            ...n,
             currentTime: 0,
             duration: 100,
             paused: true,
@@ -144,34 +135,15 @@ export default defineComponent({
             muted: true, // 静音
             autoplay: true //自动播放
           }
-        ]
+        })
+        data.itemList = data.trainings.filter((n: any) => n.materialId == route.query.materialId)
+        data.videoData = data.itemList[0]
+        handleExerciseCompleted()
       }
     }
-    // 获取课后练习记录
-    const trainingRecord = async () => {
-      try {
-        const res: any = await request.post(
-          state.platformApi +
-            `/studentLessonTraining/trainingRecord/${query.courseScheduleId}?userId=${state.user?.data?.id}`,
-          {
-            hideLoading: true
-          }
-        )
-        if (Array.isArray(res?.data.trainings)) {
-          data.trainings = res.data.trainings
-          handleExerciseCompleted()
-        }
-      } catch (error) {}
-    }
-    const currentNum = computed(() => {
-      const item = data.trainings.find((n: any) => n.materialId == data.videoData?.materialId)
-      // console.log(item)
-      if (item) handleExerciseCompleted()
-      return item?.trainingTimes || 0
-    })
     onMounted(async () => {
-      await getDetail()
-      trainingRecord()
+      const trainings = await getTrainingRecord()
+      setRecord(trainings)
     })
     // 返回
     const goback = () => {
@@ -215,9 +187,20 @@ export default defineComponent({
             hideLoading: true
           }
         )
-        trainingRecord()
+        
       } catch (error) {}
       data.recordLoading = false
+      
+      try {
+        const _res: any = await getTrainingRecord()
+        if (Array.isArray(_res?.data.trainings)){
+        const item  = _res.data.trainings.filter((n: any) => n.materialId == route.query.materialId)
+        data.videoData.trainingTimes = item.trainingTimes
+        handleExerciseCompleted()
+        }
+      } catch (error) {
+        
+      }
     }
     // 停止所有的播放
     const handleStopVideo = () => {
@@ -229,14 +212,15 @@ export default defineComponent({
     // 判断练习是否完成
     const handleExerciseCompleted = () => {
       if (
-        currentNum.value != 0 &&
-        currentNum.value + '' === data.videoData?.trainingConfigJson?.practiceTimes
+        data?.videoData.trainingTimes != 0 &&
+        data?.videoData.trainingTimes + '' === data.videoData?.trainingContent?.practiceTimes
       ) {
         // handleStopVideo()
-        const itemIndex = data.details.findIndex(
+        const itemIndex = data.trainings.findIndex(
           (n: any) => n.materialId == data.videoData?.materialId
-        )
-        const isLastIndex = itemIndex === data.details.length - 1
+          )
+          // console.log(itemIndex ,data.trainings, data.videoData?.materialId)
+        const isLastIndex = itemIndex === data.trainings.length - 1
         showConfirmDialog({
           title: '课后训练',
           message: '你已完成该练习~',
@@ -246,26 +230,11 @@ export default defineComponent({
         })
           .then(() => {
             if (!isLastIndex) {
-              const nextItem = data.details[itemIndex + 1]
+              const nextItem = data.trainings[itemIndex + 1]
               if (nextItem?.type === materialType.视频) {
+                data.itemList = [nextItem]
                 data.videoData = nextItem
-                data.itemList = [
-                  {
-                    ...nextItem,
-                    id: nextItem?.materialId || '',
-                    currentTime: 0,
-                    duration: 100,
-                    paused: true,
-                    loop: false,
-                    videoEle: null,
-                    timer: null,
-                    muted: true, // 静音
-                    autoplay: true //自动播放
-                  }
-                ]
-                nextTick(() => {
-                  console.log(data.itemList[0].videoEle)
-                })
+                handleExerciseCompleted()
               }
               if (nextItem?.type === materialType.曲目) {
                 handleInit(1)
@@ -293,7 +262,7 @@ export default defineComponent({
             }
           })
           .catch(() => {
-            data.details[itemIndex].currentTime = 0
+            data.trainings[itemIndex].currentTime = 0
           })
       }
     }
@@ -337,8 +306,6 @@ export default defineComponent({
                           m.duration = videoEle.duration
                           m.videoEle = videoEle
                           m.loaded = true
-                          console.time('播放')
-                          videoEle.play()
                         }}
                         onTimeupdate={(e: Event) => {
                           if (!m.loaded) return
@@ -431,8 +398,8 @@ export default defineComponent({
                 </div>
                 <div class={styles.menu}>{popupData.tabName}</div>
                 <div class={styles.nums}>
-                  练习次数:{currentNum.value}/
-                  {data.videoData?.trainingConfigJson?.practiceTimes || 0}
+                  练习次数:{data.videoData?.trainingTimes || 0}/
+                  {data.videoData?.trainingContent?.practiceTimes || 0}
                 </div>
               </div>
             )}

+ 1 - 1
src/views/mine-orchestra/photo-list/detail.tsx

@@ -73,7 +73,7 @@ export default defineComponent({
           <OHeader title={(route.query.name as string) || '我的乐团'} />
         </OSticky>
         <div class={styles.phoneDetail}>
-          {!data.loading && !!data.list.length && (
+          {!!data.list.length && (
             <List
               // v-model:loading={data.loading}
               finished={data.finished}