| 
					
				 | 
			
			
				@@ -62,18 +62,17 @@ import Chapter from './model/chapter'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useRouter } from 'vue-router'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useUserStore } from '@/store/modules/users'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconBeatIcon from './new-image/icon-beatIcon.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconChange from './new-image/icon-change.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconDown from './new-image/icon-down.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconMenu from './new-image/icon-menu.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconBeatIcon from './new-image/icon-beatIcon.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconChange from './new-image/icon-change.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconDown from './new-image/icon-down.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconMenu from './new-image/icon-menu.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import iconNote from './new-image/icon-note.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconOverClass from './new-image/icon-overclass.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconSetTime from './new-image/icon-setTime.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconToneIcon from './new-image/icon-toneIcon.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconUp from './new-image/icon-up.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconOverClass from './new-image/icon-overclass.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconSetTime from './new-image/icon-setTime.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconToneIcon from './new-image/icon-toneIcon.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconUp from './new-image/icon-up.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import iconWhite from './new-image/icon-white.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconWork from './new-image/icon-work.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import dayjs from 'dayjs'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import iconWork from './new-image/icon-work.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import rightIconEnd from './image/right_icon1.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import rightIconArrange from './image/right_icon2.png'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -83,11 +82,13 @@ import rightIconMetronome from './image/right_icon5.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import rightIconTuner from './image/right_icon6.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import rightIconTimer from './image/right_icon7.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import rightIconPackUp from './image/right_icon8.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import rightIconMusic from './image/right_icon9.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import bottomIconSwitch from './image/bottom_icon1.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import bottomIconResource from './image/bottom_icon2.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import bottomIconPre from './image/bottom_icon3.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import bottomIconNext from './image/bottom_icon4.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import rightHideIcon from './image/right_hide_icon.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import SelectResources from '../prepare-lessons/model/select-resources'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export type ToolType = 'init' | 'pen' | 'whiteboard'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export type ToolItem = { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -187,6 +188,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       removeTitle: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       removeContent: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectResourceStatus: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       videoState: 'init' as 'init' | 'play', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       videoItemRef: null as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       animationState: 'start' as 'start' | 'end' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -244,8 +246,8 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          data.animationState = 'end' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, 500) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data.animationState = 'end'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -314,23 +316,23 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       getDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       getLessonCoursewareDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (data.type === 'preview') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        rightList.splice(1,1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rightList.splice(1, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const onFullScreen = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (data.type === 'preview') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const el: any = document.querySelector('#app'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (el.mozRequestFullScreen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          el.mozRequestFullScreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (el.webkitRequestFullscreen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          el.webkitRequestFullscreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (el.requestFullScreen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          el.requestFullscreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const onFullScreen = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   if (data.type === 'preview') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     const el: any = document.querySelector('#app'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     if (el.mozRequestFullScreen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       el.mozRequestFullScreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     } else if (el.webkitRequestFullscreen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       el.webkitRequestFullscreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     } else if (el.requestFullScreen) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       el.requestFullscreen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const popupData = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       open: false, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -388,25 +390,25 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const activeName = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let name = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // data.knowledgePointList.forEach((item: any, index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   if (popupData.activeIndex === index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //     name = item.title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      popupData.chapterDetails.forEach((chapter: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (chapter.id === data.lessonCoursewareDetailId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          name = chapter.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          chapter.knowledgeList?.forEach((know: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (know.id === data.detailId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              name += ' - ' + know.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const activeName = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   let name = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   // data.knowledgePointList.forEach((item: any, index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   //   if (popupData.activeIndex === index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   //     name = item.title; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   popupData.chapterDetails.forEach((chapter: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     if (chapter.id === data.lessonCoursewareDetailId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       name = chapter.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       chapter.knowledgeList?.forEach((know: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         if (know.id === data.detailId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //           name += ' - ' + know.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   return name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /**停止所有的播放 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const handleStop = () => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -494,16 +496,16 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // ppt iframe 点击事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // const iframeClick = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 	if(document.all) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 		document.getElementById("iframe-ppt")?.attachEvent("click", () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 	if(document.all) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 		document.getElementById("iframe-ppt")?.attachEvent("click", () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //       activeData.model = !activeData.model 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 		document.getElementById("iframe-ppt")?.contentWindow?.postMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 		document.getElementById("iframe-ppt")?.contentWindow?.postMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //       api: 'onAttendToggleMenu' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //     }, '*'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 切换播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // const togglePlay = (m: any, isPlay: boolean) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -579,8 +581,8 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const handleSwipeChange = (index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // 如果是当前正在播放 或者是视频最后一个 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (popupData.activeIndex == index) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      data.animationState = 'start' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      data.videoState = 'init' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.animationState = 'start'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.videoState = 'init'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       handleStop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       clearTimeout(acitveTimer.value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       activeData.model = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -590,7 +592,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       acitveTimer.value = setTimeout( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           const item = data.itemList[index]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (item.type == 'MUSIC') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               activeData.model = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -615,7 +617,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   item.error = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   //   item.videoEle?.onPlay(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                data.animationState = 'end' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data.animationState = 'end'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (item.type === 'PPT') { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -858,28 +860,28 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const toggleListenerKeyUp = (type: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (type === 'remove') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        document.body.removeEventListener('keyup', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          listenerKeyUpState.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 监听页面键盘事件 - 上下切换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        document.body.addEventListener('keyup', (e: KeyboardEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // console.log(e, 'e'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (e.code === 'ArrowLeft') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // if (popupData.activeIndex === 0) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            setModalOpen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            handlePreAndNext('up'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } else if (e.code === 'ArrowRight') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // if (popupData.activeIndex === data.itemList.length - 1) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            setModalOpen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            handlePreAndNext('down'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        listenerKeyUpState.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const toggleListenerKeyUp = (type: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   if (type === 'remove') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     document.body.removeEventListener('keyup', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       listenerKeyUpState.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     // 监听页面键盘事件 - 上下切换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     document.body.addEventListener('keyup', (e: KeyboardEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       // console.log(e, 'e'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       if (e.code === 'ArrowLeft') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         // if (popupData.activeIndex === 0) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         setModalOpen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         handlePreAndNext('up'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       } else if (e.code === 'ArrowRight') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         // if (popupData.activeIndex === data.itemList.length - 1) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         setModalOpen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //         handlePreAndNext('down'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //     listenerKeyUpState.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 监听切换到ppt课件时,手动移除键盘监听器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // watch(() => popupData.activeIndex, () => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -911,20 +913,21 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 打开教学工具 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const openStudyTool = (item: ToolItem) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const activeItem = data.itemList[popupData.activeIndex]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 暂停视频和曲谱的播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (activeItem.type === 'VIDEO' && activeItem.videoEle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        activeItem.videoEle?.pause(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (activeItem.type === 'SONG' && activeItem.audioEle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        activeItem.audioEle?.stop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (activeItem.type === 'MUSIC') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        activeItem.iframeRef?.contentWindow?.postMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          { api: 'setPlayState' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          '*' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // const activeItem = data.itemList[popupData.activeIndex]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // // 暂停视频和曲谱的播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if (activeItem.type === 'VIDEO' && activeItem.videoEle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   activeItem.videoEle?.pause(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if (activeItem.type === 'SONG' && activeItem.audioEle) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   activeItem.audioEle?.stop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // if (activeItem.type === 'MUSIC') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   activeItem.iframeRef?.contentWindow?.postMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     { api: 'setPlayState' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //     '*' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      handleStop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       clearModel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       popupData.toolOpen = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       studyData.type = item.type; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -957,12 +960,6 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (val == 'toneIcon') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         showModalTone.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // if (val == 'iconNote2') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   if (NPopoverRef.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //     NPopoverRef.value.setShow(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   eventGlobal.emit('teacher-guideInfo-attend-class', 'attend-class'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 是否允许上一页 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -974,7 +971,6 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        * 4,判断当前章节上面还没有其它章节; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        * 5,判断上面章节里面课程是否有资源; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (popupData.activeIndex > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1099,12 +1095,12 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const activeVideoItem = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const item = data.itemList[popupData.activeIndex] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const item = data.itemList[popupData.activeIndex]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (item && item.type && item.type.toLocaleUpperCase() === 'VIDEO') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return item; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 右侧菜单栏 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const rightList = reactive([ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1112,43 +1108,48 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '结束课程', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name2: '结束预览', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconEnd, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '布置作业', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconArrange, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name: '曲目资源', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        icon: rightIconMusic, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '批注', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconPostil, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '白板', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconWhiteboard, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '节拍器', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconMetronome, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '调音器', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconTuner, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '计时器', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconTimer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '收起', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: rightIconPackUp, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 8, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 8 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 底部菜单栏 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1156,26 +1157,25 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '切换章节', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: bottomIconSwitch, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '资源列表', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: bottomIconResource, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '上一张', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: bottomIconPre, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: '下一张', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         icon: bottomIconNext, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: 4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const rightColumnShow = ref(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 右边栏操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const operateRightBtn = async (id: number) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1202,50 +1202,54 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rows: 99 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (res.data.rows && res.data.rows.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            data.modalAttendMessage = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              '本节课已设置课后作业,是否布置?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.modalAttendMessage = '本节课已设置课后作业,是否布置?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          data.modelAttendStatus = true;           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data.modelAttendStatus = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           openStudyTool({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             type: 'pen', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             icon: iconNote, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             name: '批注' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          })           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 4: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           openStudyTool({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             type: 'whiteboard', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             icon: iconWhite, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             name: '白板' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          })           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 5: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          startShowModal('beatIcon') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          startShowModal('beatIcon'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 6: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          startShowModal('toneIcon') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          startShowModal('toneIcon'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 7: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          startShowModal('setTimeIcon') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          startShowModal('setTimeIcon'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 8: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          rightColumnShow.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          break;                                                                   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rightColumnShow.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        case 9: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // 选择曲目时需要暂停所有播放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handleStop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data.selectResourceStatus = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 底部悬浮按钮操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const operateBottomBtn = (id: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       switch (id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          popupData.chapterOpen = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          popupData.chapterOpen = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          popupData.open = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          popupData.open = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 3: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (!isUpArrow.value) return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1254,15 +1258,14 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case 4: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (!isDownArrow.value) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           handlePreAndNext('down'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          break;       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div id="playContent" class={[styles.playContent, 'wrap']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             clearTimeout(activeData.timer); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1290,23 +1293,21 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       : { opacity: 0, zIndex: -1 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  class={styles.itemDiv} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class={styles.itemDiv}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   <VideoPlay 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ref={(el: any) => data.videoItemRef = el} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ref={(el: any) => (data.videoItemRef = el)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     item={activeVideoItem.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     showModel={activeData.model} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     onClose={setModelOpen} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     onCanplay={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      data.videoState = 'play' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      data.videoState = 'play'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     onPause={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      clearTimeout(activeData.timer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      activeData.model = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      clearTimeout(activeData.timer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      activeData.model = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     onEnded={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      const _index = popupData.activeIndex + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      const _index = popupData.activeIndex + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       if (_index < data.itemList.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         handleSwipeChange(_index); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1364,9 +1365,12 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       {m.type === 'VIDEO' ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          <img src={m.coverImg} onLoad={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            m.isprepare = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          }} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            src={m.coverImg} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            onLoad={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              m.isprepare = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           {/* <VideoPlay 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             ref={(v: any) => (data.videoRefs[mIndex] = v)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             item={m} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1394,12 +1398,12 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           /> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           <Transition name="van-fade"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               <div class={styles.loadWrap}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 <Vue3Lottie 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                   animationData={playLoadData}></Vue3Lottie> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           </Transition> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       ) : m.type === 'IMG' ? ( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1432,13 +1436,19 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      )  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      // : m.type === 'PPT' ? <div class={styles.iframePpt}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      ) : // : m.type === 'PPT' ? <div class={styles.iframePpt}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       //   <div class={styles.pptBox}></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       //   <iframe src={`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(m.content)}`} width='100%' height='100%' frameborder='1'></iframe> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       // </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      : m.type === 'PPT' ? <iframe src={`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(m.content)}`} width='100%' height='100%' frameborder='1'></iframe>                      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      m.type === 'PPT' ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <iframe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          src={`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            m.content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          )}`} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          width="100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          height="100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          frameborder="1"></iframe> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         <MusicScore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           activeModel={activeData.model} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                           activeStatus={popupData.activeIndex === mIndex} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1459,182 +1469,59 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {/* 头部样式 */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {/* <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          style={{ transform: activeData.model ? '' : 'translateY(-100%)' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          class={styles.headerContainer}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div class={styles.menu}>{activeName.value}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </div> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {/* 布置作业按钮 */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {/* <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          onClick={(e: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            e.stopPropagation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (activeData.timer){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              setModelOpen(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {/* 右边操作栏 */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            styles.switchDisplaySection, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            activeData.model ? '' : styles.sectionAnimate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            styles.rightColumn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            !rightColumnShow.value ? styles.rightColumnHide : '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studyData.type !== 'init' && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            (studyData.penShow || studyData.whiteboardShow) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ? styles.rightColumnZ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           ]}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <NSpace class={styles.switchSpace}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (data.type === 'preview') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  handleStop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.removeVisiable = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.removeTitle = '结束预览'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.removeContent = '请确认是否结束预览?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.removeVisiable = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.removeTitle = '结束课程'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.removeContent = '请确认是否结束课程?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconOverClass} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>{data.type !== 'preview' ? '结束课程' : '结束预览'}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {data.type !== 'preview' && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  styles.btnItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.preStudentNum <= 0 ? styles.btnsDisabled : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  // 学生人数必须大于0,才可以布置作业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if (data.preStudentNum <= 0) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  const res = await lessonPreTrainingPage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    coursewareKnowledgeDetailId: data.detailId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    subjectId: data.subjectId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    page: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    rows: 99 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if (res.data.rows && res.data.rows.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    data.modalAttendMessage = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      '本节课已设置课后作业,是否布置?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  data.modelAttendStatus = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <img src={iconWork} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <p>布置作业</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                openStudyTool({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  type: 'pen', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  icon: iconNote, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  name: '批注' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconNote} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>批注</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                openStudyTool({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  type: 'whiteboard', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  icon: iconWhite, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  name: '白板' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconWhite} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>白板</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => startShowModal('beatIcon')}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconToneIcon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>节拍器</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => startShowModal('toneIcon')}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconSetTime} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>调音器</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => startShowModal('setTimeIcon')}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconBeatIcon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>计时器</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </NSpace> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <NSpace class={styles.switchSpace}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.btnItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => (popupData.chapterOpen = true)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconChange} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>切换章节</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div class={styles.btnItem} onClick={() => (popupData.open = true)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconMenu} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>资源列表</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                styles.btnItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                !isUpArrow.value ? styles.btnsDisabled : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!isUpArrow.value) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                handlePreAndNext('up'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconUp} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>上一个</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {rightList.map((item: any, index: number) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                styles.btnItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                !isDownArrow.value ? styles.btnsDisabled : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                styles.rightItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                item.id === 2 && data.preStudentNum <= 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? styles.itemDisabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!isDownArrow.value) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                handlePreAndNext('down'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <img src={iconDown} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <p>下一个</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </NSpace> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </div> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {/* 右边操作栏 */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class={[styles.rightColumn, !rightColumnShow.value ? styles.rightColumnHide : '', studyData.type !== 'init' && (studyData.penShow || studyData.whiteboardShow) ? styles.rightColumnZ : '' ]}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          {rightList.map((item: any, index: number) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  styles.rightItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  (item.id === 2 && data.preStudentNum <= 0) ? styles.itemDisabled : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ]}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={() => operateRightBtn(item.id)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <img src={item.icon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles.rightTips}>{index === 0 && data.type === 'preview' ? item.name2 : item.name}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onClick={() => operateRightBtn(item.id)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <img src={item.icon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.rightTips}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {index === 0 && data.type === 'preview' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? item.name2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : item.name} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </div>  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          !rightColumnShow.value && <img  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            class={[styles.rightHideIcon, !rightColumnShow.value ? styles.rightIconShow : '']}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {!rightColumnShow.value && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              styles.rightHideIcon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              !rightColumnShow.value ? styles.rightIconShow : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             src={rightHideIcon} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            onClick={() => rightColumnShow.value = true } /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onClick={() => (rightColumnShow.value = true)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {/* 右下角悬浮按钮 */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <div class={styles.bottomColumn}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           {bottomList.map((item: any, index: number) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  styles.bottomItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  ((item.id === 3 && !isUpArrow.value) || (item.id === 4 && !isDownArrow.value)) ? styles.itemDisabled : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ]}  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={() => operateBottomBtn(item.id)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <img src={item.icon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles.bottomTips}>{item.name}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                styles.bottomItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (item.id === 3 && !isUpArrow.value) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (item.id === 4 && !isDownArrow.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? styles.itemDisabled 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onClick={() => operateBottomBtn(item.id)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <img src={item.icon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.bottomTips}>{item.name}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           ))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1729,7 +1616,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {/* <div class={styles.modelAttendContent}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               {data.modalAttendMessage} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             </div> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <NSpace class={styles.btnGroupModal}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <NSpace class={styles.btnGroupModal} justify="center"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <NButton 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 type="default" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 round 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1824,6 +1711,14 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <TimerMeter></TimerMeter> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </NModal> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <NModal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model:show={data.selectResourceStatus} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class={['modalTitle', styles.selectMusicModal]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          preset="card" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          title={'选择资源'}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <SelectResources from="class" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </NModal> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <NModal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           transformOrigin="center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           v-model:show={data.removeVisiable} 
			 |