| 
					
				 | 
			
			
				@@ -1,301 +1,301 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { NButton } from 'naive-ui'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  defineComponent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  nextTick, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  onMounted, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  onUnmounted, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  reactive, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ref, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  watch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import styles from './index.module.less'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { getImage } from './images'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { eventGlobal, px2vw, px2vwH } from '@/utils/index'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { getGuidance, setGuidance } from './api'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  name: 'music-guide', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  emits: ['close'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  setup(props, { emit }) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const data = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      box: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        height: '0px' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      show: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width:  px2vw(840), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height:  px2vw(295) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      steps: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ele: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          eleRect: {} as DOMRect, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          img: getImage('music1.png'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          handStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: '0.91rem' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          imgStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: px2vw(-4), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: px2vw(0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: px2vw(533), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: px2vw(271) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          btnsStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bottom: px2vw(40), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: px2vw(-10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          eleRectPadding: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: 14, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: 14 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          boxStyle: {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ele: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          img: getImage('music2.png'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          imgStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: px2vw(-4), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: px2vw(-205), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: px2vw(420), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: px2vw(228) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          btnsStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bottom: px2vw(35), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: px2vw(-48) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          boxStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            borderRadius: '25px' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          eleRectPadding: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: 14, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: 14 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ele: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          img: getImage('music3.png'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          imgStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: '100%', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: px2vw(-130), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: px2vw(401), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: px2vw(304) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          btnsStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bottom: px2vw(100), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: px2vw(30) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          boxStyle: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            borderRadius: '40px' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          eleRectPadding: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            left: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            top: 7, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            width: 14, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            height: 14 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          type: 'bottom' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      step: 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const tipShow = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const guideInfo = ref({} as any); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const getAllGuidance = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const res = await getGuidance({ guideTag: 'teacher-guideInfo' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (res.data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          guideInfo.value = JSON.parse(res.data?.guideValue) || null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          guideInfo.value = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (guideInfo.value && guideInfo.value.musicGuide) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          tipShow.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          tipShow.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // const guideInfo = localStorage.getItem('teacher-guideInfo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getAllGuidance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // const guideInfo = localStorage.getItem('teacher-guideInfo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // if (guideInfo && JSON.parse(guideInfo).musicGuide) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   tipShow.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //   tipShow.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const getStepELe = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const ele: HTMLElement = document.getElementById(`music-${data.step}`)!; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (ele) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const eleRect = ele.getBoundingClientRect(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        console.log(ele.style.display, 'ele'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (ele.style.display == 'none') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const left = data.steps[data.step].eleRectPadding?.left || 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const top = data.steps[data.step].eleRectPadding?.top || 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const width = data.steps[data.step].eleRectPadding?.width || 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const height = data.steps[data.step].eleRectPadding?.height || 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        data.box = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          left: eleRect.x - left + 'px', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          top: eleRect.y - top + 'px', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          width: eleRect.width + width + 'px', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          height: eleRect.height + height + 'px' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // console.log(`coai-${data.step}`, data.box); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        handleNext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const onResetGuide = async (name: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (name !== 'xiaoku-music') return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!guideInfo.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          guideInfo.value = { musicGuide: false }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          guideInfo.value.musicGuide = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          await setGuidance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            guideTag: 'teacher-guideInfo', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            guideValue: JSON.stringify(guideInfo.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        data.step = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        getStepELe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tipShow.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onMounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getStepELe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      window.addEventListener('resize', resetSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      eventGlobal.on('teacher-guideInfo', onResetGuide); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const resetSize = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getStepELe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onUnmounted(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      window.removeEventListener('resize', resetSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      eventGlobal.off('teacher-guideInfo', onResetGuide); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const handleNext = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (data.step >= 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        endGuide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      data.step = data.step + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      getStepELe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const endGuide = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // let guideInfo = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //   JSON.parse(localStorage.getItem('teacher-guideInfo')|| '{}') || null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!guideInfo.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        guideInfo.value = { musicGuide: true }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        guideInfo.value.musicGuide = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // localStorage.setItem('teacher-guideInfo', JSON.stringify(guideInfo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const res = await setGuidance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          guideTag: 'teacher-guideInfo', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          guideValue: JSON.stringify(guideInfo.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      tipShow.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //  localStorage.setItem('endC') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {tipShow.value ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            v-model:show={tipShow.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            class={['n-modal-mask', 'n-modal-mask-guide']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div class={styles.content} onClick={() => handleNext()}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={styles.backBtn} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={(e: Event) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  e.stopPropagation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  endGuide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                跳过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={styles.box} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                style={{ ...data.box, ...data.steps[data.step].boxStyle }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                id={`modeType-${data.step}`}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {data.steps.map((item: any, index) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    onClick={(e: Event) => e.stopPropagation()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    class={styles.item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    style={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      item.type == 'bottom' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        ? { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            display: index === data.step ? '' : 'none', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            left: `${item.eleRect?.left}px`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            top: `-${item.imgStyle?.height}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        : { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            display: index === data.step ? '' : 'none', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            left: `${item.eleRect?.left}px`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            top: `${data.box?.height}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      class={styles.img} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      style={item.imgStyle} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      src={item.img} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    {/* <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      class={styles.iconHead} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      style={item.handStyle} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      src={getImage('indexDot.png')} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    /> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <div class={styles.btns} style={item.btnsStyle}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      {data.step + 1 == data.steps.length ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            class={[styles.endBtn]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            onClick={() => endGuide()}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            完成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            class={styles.nextBtn} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              data.step = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              getStepELe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            }}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            再看一遍 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        <div class={styles.btn} onClick={() => handleNext()}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          下一步 ({data.step + 1}/{data.steps.length}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) : null} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { NButton } from 'naive-ui';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  defineComponent,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  nextTick,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  onMounted,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  onUnmounted,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  reactive,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ref,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from 'vue';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import styles from './index.module.less';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getImage } from './images';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { eventGlobal, px2vw, px2vwH } from '@/utils/index';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getGuidance, setGuidance } from './api';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default defineComponent({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: 'music-guide',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  emits: ['close'],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setup(props, { emit }) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const data = reactive({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      box: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        height: '0px'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } as any,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      show: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /**
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       *
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width:  px2vw(840),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height:  px2vw(295)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      steps: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ele: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          eleRect: {} as DOMRect,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          img: getImage('music1.png'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: '0.91rem'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          imgStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: px2vw(-4),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: px2vw(0),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: px2vw(533),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: px2vw(271)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          btnsStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bottom: px2vw(40),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: px2vw(-10)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          eleRectPadding: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: 7,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: 7,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 14,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 14
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          boxStyle: {}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ele: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          img: getImage('music2.png'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          imgStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: px2vw(-4),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: px2vw(-205),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: px2vw(420),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: px2vw(228)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          btnsStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bottom: px2vw(35),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: px2vw(-48)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          boxStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            borderRadius: '25px'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          eleRectPadding: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: 7,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: 7,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 14,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 14
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ele: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          img: getImage('music3.png'),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          imgStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: '100%',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: px2vw(-130),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: px2vw(401),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: px2vw(304)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          btnsStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bottom: px2vw(100),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: px2vw(30)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          boxStyle: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            borderRadius: '40px'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          eleRectPadding: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            left: 7,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            top: 7,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 14,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 14
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'bottom'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      step: 0
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const tipShow = ref(false);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const guideInfo = ref({} as any);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getAllGuidance = async () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await getGuidance({ guideTag: 'teacher-guideInfo' });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res.data) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          guideInfo.value = JSON.parse(res.data?.guideValue) || null;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          guideInfo.value = {};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (guideInfo.value && guideInfo.value.musicGuide) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          tipShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          tipShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (e) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(e);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // const guideInfo = localStorage.getItem('teacher-guideInfo');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getAllGuidance();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // const guideInfo = localStorage.getItem('teacher-guideInfo');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // if (guideInfo && JSON.parse(guideInfo).musicGuide) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   tipShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //   tipShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getStepELe = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const ele: HTMLElement = document.getElementById(`music-${data.step}`)!;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (ele) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const eleRect = ele.getBoundingClientRect();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(ele.style.display, 'ele');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ele.style.display == 'none') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handleNext();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const left = data.steps[data.step].eleRectPadding?.left || 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const top = data.steps[data.step].eleRectPadding?.top || 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const width = data.steps[data.step].eleRectPadding?.width || 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const height = data.steps[data.step].eleRectPadding?.height || 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data.box = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          left: eleRect.x - left + 'px',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          top: eleRect.y - top + 'px',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          width: eleRect.width + width + 'px',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          height: eleRect.height + height + 'px'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // console.log(`coai-${data.step}`, data.box);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        handleNext();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onResetGuide = async (name: string) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (name !== 'xiaoku-music') return;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!guideInfo.value) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          guideInfo.value = { musicGuide: false };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          guideInfo.value.musicGuide = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          await setGuidance({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            guideTag: 'teacher-guideInfo',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            guideValue: JSON.stringify(guideInfo.value)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (e) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log(e);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data.step = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getStepELe();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tipShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMounted(() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getStepELe();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      window.addEventListener('resize', resetSize);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      eventGlobal.on('teacher-guideInfo', onResetGuide);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const resetSize = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getStepELe();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onUnmounted(() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      window.removeEventListener('resize', resetSize);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      eventGlobal.off('teacher-guideInfo', onResetGuide);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleNext = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (data.step >= 3) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        endGuide();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.step = data.step + 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getStepELe();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const endGuide = async () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // let guideInfo =
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //   JSON.parse(localStorage.getItem('teacher-guideInfo')|| '{}') || null;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!guideInfo.value) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        guideInfo.value = { musicGuide: true };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        guideInfo.value.musicGuide = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // localStorage.setItem('teacher-guideInfo', JSON.stringify(guideInfo));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await setGuidance({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          guideTag: 'teacher-guideInfo',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          guideValue: JSON.stringify(guideInfo.value)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (e) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(e);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tipShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //  localStorage.setItem('endC')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return () => (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {tipShow.value ? (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-model:show={tipShow.value}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class={['n-modal-mask', 'n-modal-mask-guide']}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class={styles.content} onClick={() => handleNext()}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class={styles.backBtn}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                onClick={(e: Event) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  e.stopPropagation();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  endGuide();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                跳过
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class={styles.box}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                style={{ ...data.box, ...data.steps[data.step].boxStyle }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                id={`modeType-${data.step}`}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {data.steps.map((item: any, index) => (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    onClick={(e: Event) => e.stopPropagation()}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    class={styles.item}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    style={
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      item.type == 'bottom'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ? {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            display: index === data.step ? '' : 'none',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            left: `${item.eleRect?.left}px`,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            top: `-${item.imgStyle?.height}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        : {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            display: index === data.step ? '' : 'none',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            left: `${item.eleRect?.left}px`,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            top: `${data.box?.height}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <img
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class={styles.img}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      style={item.imgStyle}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      src={item.img}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {/* <img
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class={styles.iconHead}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      style={item.handStyle}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      src={getImage('indexDot.png')}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /> */}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class={styles.btns} style={item.btnsStyle}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {data.step + 1 == data.steps.length ? (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            class={[styles.endBtn]}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            onClick={() => endGuide()}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            完成
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          {/* <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            class={styles.nextBtn}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            onClick={() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              data.step = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              getStepELe();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            }}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            再看一遍
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          </div> */}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      ) : (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class={styles.btn} onClick={() => handleNext()}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          下一步 ({data.step + 1}/{data.steps.length})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      )}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ))}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) : null}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    );
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+});
 
			 |