| 
					
				 | 
			
			
				@@ -1,9 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  closeToast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Icon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Popup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   showConfirmDialog, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  showToast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Slider, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Swipe, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   SwipeItem 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -12,12 +9,10 @@ import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   defineComponent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   onMounted, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   reactive, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  nextTick, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   onUnmounted, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ref, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   watch, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   Transition, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  computed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import styles from './index.module.less' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import 'plyr/dist/plyr.css' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,10 +67,13 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const route = useRoute() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    watch(() => route.query, () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getDetail() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      trainingRecord() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    watch( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      () => route.query, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getDetail() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        trainingRecord() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const router = useRouter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const query = route.query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const browserInfo = browser() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,21 +93,8 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       timer: null as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       item: null as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 获取缓存路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const getCacheFilePath = async (material: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const res = await promisefiyPostMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        api: 'getCourseFilePath', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        content: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          url: material.content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          localPath: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          materialId: material.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          updateTime: material.updateTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          type: material.type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return res 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const getDetail = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.itemList = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let details = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const res: any = await request.get( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -129,16 +114,6 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           videoData.training = JSON.parse(videoData?.lessonTrainingTemp?.trainingConfigJson) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //请求本地缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (browserInfo.isApp && videoData.updateTime && ['VIDEO'].includes(videoData.type)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          console.log('开始检查本地缓存') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          const localData = await getCacheFilePath(videoData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          console.log("🚀 ~ 本地缓存数据", localData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (localData?.content?.localPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            videoData.url = videoData.content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            videoData.content = localData.content.localPath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         data.itemList.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           ...videoData, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           id: videoData.materialId, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -148,7 +123,8 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           loop: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           videoEle: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           timer: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          playModel: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          muted: true, // 静音 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          autoplay: true, //自动播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         popupData.itemActive = videoData.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         popupData.tabName = videoData.materialName 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -199,27 +175,10 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       itemName: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 双击 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const handleDbClick = (item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (item && item.type === 'VIDEO') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const videoEle: HTMLVideoElement = document.querySelector(`[data-vid='${item.id}']`)! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (videoEle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (videoEle.paused) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            closeToast() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            videoEle.play() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            showToast('已暂停') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            videoEle.pause() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        item.timer = setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          activeData.model = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, 3000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 达到指标,记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const addTrainingRecord = async (m: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (data.recordLoading) return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('记录观看次数') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       data.recordLoading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const query = route.query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const body = { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -243,9 +202,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         trainingRecord() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        data.recordLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 2000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.recordLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 停止所有的播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const handleStopVideo = () => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -271,45 +228,50 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           confirmButtonColor: 'var(--van-primary)', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           confirmButtonText: isLastIndex ? '完成' : '下一题', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           cancelButtonText: '继续' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (!isLastIndex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            const nextItem = data.details[itemIndex + 1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (nextItem?.type === materialType.视频) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              console.log('下一题视频',data.details[itemIndex].materialId, nextItem.materialId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              router.replace({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                path: '/exerciseAfterClass', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                query: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  ...query, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!isLastIndex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              const nextItem = data.details[itemIndex + 1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (nextItem?.type === materialType.视频) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // console.log('下一题视频', data.details[itemIndex].materialId, nextItem.materialId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                router.replace({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  path: '/exerciseAfterClass', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  query: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ...query, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    materialId: nextItem.materialId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (nextItem?.type === materialType.曲目) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                handleInit(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                goback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const parmas = qs.stringify({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  id: nextItem.content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  courseScheduleId: query.courseScheduleId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  lessonTrainingId: query.lessonTrainingId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   materialId: nextItem.materialId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let src = `${location.origin}/orchestra-music-score/?` + parmas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // console.log("🚀 ~ src", src) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                postMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  api: 'openAccompanyWebView', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  content: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    url: src, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orientation: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    isHideTitle: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    statusBarTextColor: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    isOpenLight: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (nextItem?.type === materialType.曲目) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              handleInit(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              goback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              const parmas = qs.stringify({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                id: nextItem.content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                courseScheduleId: query.courseScheduleId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                lessonTrainingId: query.lessonTrainingId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                materialId: nextItem.materialId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let src = `${location.origin}/orchestra-music-score/?` + parmas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // console.log("🚀 ~ src", src) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              postMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                api: 'openAccompanyWebView', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                content: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  url: src, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  orientation: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  isHideTitle: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  statusBarTextColor: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  isOpenLight: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.details[itemIndex].currentTime = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div class={styles.coursewarePlay}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <Swipe 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -328,16 +290,8 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     class={styles.itemDiv} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      clearTimeout(activeData.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       clearTimeout(m.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      if (Date.now() - activeData.nowTime < 300) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        handleDbClick(m) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      activeData.nowTime = Date.now() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      activeData.timer = setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        activeData.model = !activeData.model 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      }, 300) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      activeData.model = !activeData.model 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     <video 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -348,101 +302,81 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       data-vid={m.id} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       src={m.content} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       loop={m.loop} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      onLoadedmetadata={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      autoplay={m.autoplay} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      muted={m.muted} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onLoadedmetadata={async (e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const videoEle = e.target as unknown as HTMLVideoElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        m.currentTime = videoEle.currentTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         m.duration = videoEle.duration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         m.videoEle = videoEle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       onTimeupdate={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         const videoEle = e.target as unknown as HTMLVideoElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         m.currentTime = videoEle.currentTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (m.duration - m.currentTime < 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          if (data.recordLoading) return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          console.log('完成观看次数') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          addTrainingRecord(m) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       onPlay={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         // 播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         m.paused = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (m.muted){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          m.muted = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          m.videoEle.pause() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       onPause={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //暂停 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        clearTimeout(m.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         m.paused = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onEnded={() => addTrainingRecord(m)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       <source src={m.content} type="video/mp4" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     </video> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <Transition name="bottom"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      {activeData.model && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        <div class={styles.bottomFixedContainer}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          <div class={styles.time}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            <span>{getSecondRPM(m.currentTime)}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            <span>{getSecondRPM(m.duration)}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          <div class={styles.slider}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <Transition name="bottom"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {activeData.model && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <div class={styles.bottomFixedContainer}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class={styles.time}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <span>{getSecondRPM(m.currentTime)}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <span>{getSecondRPM(m.duration)}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class={styles.slider}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          {m.duration && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             <Slider 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               buttonSize={16} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              step={0.01} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               modelValue={m.currentTime} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               min={0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               max={m.duration} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          <div class={styles.actions}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              {m.paused ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                <Icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  name={iconplay} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    e.stopPropagation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    clearTimeout(m.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    closeToast() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.videoEle?.play() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.paused = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.timer = setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                      activeData.model = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    }, 3000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                <Icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  name={iconpause} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    e.stopPropagation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    console.log('点击暂停') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.videoEle?.pause() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.paused = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              {m.loop ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                <Icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  name={iconLoopActive} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    e.stopPropagation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.loop = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                <Icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  name={iconLoop} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    e.stopPropagation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    m.loop = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            <div>{m.name}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class={styles.actions}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <div class={styles.actionBtn}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            {m.paused ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                src={iconplay} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  clearTimeout(m.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  m.videoEle?.play() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  m.paused = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  m.timer = setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    activeData.model = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  }, 4000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                src={iconpause} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  clearTimeout(m.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  m.videoEle?.pause() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                  m.paused = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    </Transition> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </Transition> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 |