| 
					
				 | 
			
			
				@@ -61,14 +61,40 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <img class="itemImg" src="./imgs/yp.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <div class="tit">乐谱</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <!-- <div class="handler-item"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <img class="itemImg" src="./imgs/jzlx.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class="tit">节奏练习</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="handler-item" @click="expandedKnowledgeVisible = true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <img class="itemImg" src="./imgs/kzzs.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Popover trigger="click" v-model:value="expandedKnowledgeVisible" :offset="10" @click.stop> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <template #content> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <PopoverMenuItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  expandedKnowledgeVisible = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  listeningPracticeVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="menuItem"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <img src="./imgs/tylx.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class="tit">听音练习</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </PopoverMenuItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <PopoverMenuItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @click=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  expandedKnowledgeVisible = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  rhythmPracticeVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="menuItem"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <img src="./imgs/jzlx.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class="tit">节奏练习</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </PopoverMenuItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="tit">扩展知识</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Popover> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <div class="handler-item"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <img class="itemImg" src="./imgs/tylx.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class="tit">听音练习</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div class="handler-item" @click="resourcesListVisible = true"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <img class="itemImg" src="./imgs/zyk.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <div class="tit">资源库</div> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -267,6 +293,26 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </Modal> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <Modal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :contentStyle="{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        width: '742px', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        height: '570px', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boxShadow: '0px 2px 10px 0px rgba(0,0,0,0.08)', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        borderRadius: '16px', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border: '1px solid #DEDEDE', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        padding: '0' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-model:visible="listeningPracticeVisible" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <listeningPracticeList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @update="handleAddListeningPractice" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @close=" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            listeningPracticeVisible = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </Modal> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -294,6 +340,7 @@ import PopoverMenuItem from "@/components/PopoverMenuItem.vue" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { ElUpload, ElMessage, type UploadRequestOptions } from "element-plus" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cloudCoachList from "@/views/components/element/cloudCoachElement/cloudCoachList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import resourcesList from "@/views/components/element/enjoyElement/resourcesList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import listeningPracticeList from "@/views/components/element/listeningPracticeElement/listeningPracticeList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import fileUpload from "@/utils/oss-file-upload" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import usePptWork from "@/store/pptWork" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -326,7 +373,8 @@ const { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   createVideoElement, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   createAudioElement, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   createCloudCoachElement, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  createEnjoyElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  createEnjoyElement, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  createListeningPracticeElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } = useCreateElement() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const insertImageElement = (files: FileList) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -345,6 +393,9 @@ const shapeMenuVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const cloudCoachVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const resourcesListVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const moreToolsVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const expandedKnowledgeVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const listeningPracticeVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const rhythmPracticeVisible = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 音视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function handleUpload(fileData: UploadRequestOptions) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -371,6 +422,11 @@ function handleCloudCoach(id: string, name: string) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   createCloudCoachElement(id, name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cloudCoachVisible.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 处理听音练习创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function handleAddListeningPractice(item: Record<string, any>) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  createListeningPracticeElement(item.code, item.img, item.name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  listeningPracticeVisible.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 处理资源创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function handleResources(item: Record<string, any>) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (item.type === "SONG") { 
			 |