| 
					
				 | 
			
			
				@@ -1,4 +1,4 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { defineComponent, onMounted, reactive } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent, onMounted, reactive, ref } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import WaveSurfer from 'wavesurfer.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import styles from './index.module.less'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import MSticky from '@/components/m-sticky'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,11 +11,12 @@ import iconZ from './images/icon-z.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import iconPlay from './images/icon-play.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import iconPause from './images/icon-pause.png'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { browser, getGradeCh, getSecondRPM } from '@/helpers/utils'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { useRoute, useRouter } from 'vue-router'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   api_openUserMusicDetail, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   api_openUserMusicPage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  api_userMusicStar 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  api_userMusicStar, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  api_verification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } from './api'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import MEmpty from '@/components/m-empty'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { nextTick } from 'process'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -23,6 +24,8 @@ import MVideo from '@/components/m-video'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import LoginModel from './login-model'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { removeAuth } from '../student-register/layout/utils'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { setLogout } from '@/state'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { storage } from '@/helpers/storage'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ACCESS_TOKEN } from '@/store/mutation-types'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   name: 'creation-detail', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -34,7 +37,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const state = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       id: route.query.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       loginTag: false, // 是否登录标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      loginStatus: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loginStatus: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       playType: '' as 'Audio' | 'Video' | '', // 播放类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       musicDetail: {} as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       timer: null as any, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,6 +58,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rows: 20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const wavesurfer = ref(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const audioDom = new Audio(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     audioDom.controls = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     audioDom.style.width = '100%'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -90,10 +94,17 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const { data } = await api_userMusicStar({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          userMusicId: '1698984095609106434', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          star: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await api_userMusicStar({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          userMusicId: state.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          star: !state.musicDetail.starFlag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.musicDetail.starFlag = !state.musicDetail.starFlag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (state.musicDetail.starFlag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          state.musicDetail.likeNum += 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          state.musicDetail.likeNum -= 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -127,8 +138,18 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onDetail = (item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(item, 'item'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      router.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        path: '/shareCreation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        query: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          id: item.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const initAudio = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const wavesurfer = WaveSurfer.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      wavesurfer.value = WaveSurfer.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         container: document.querySelector(`#${audioId}`) as HTMLElement, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         waveColor: '#fff', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         progressColor: '#2FA1FD', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -151,15 +172,15 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         media: audioDom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      wavesurfer.once('interaction', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // wavesurfer.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      wavesurfer.value.once('interaction', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // wavesurfer.value.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      wavesurfer.once('ready', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      wavesurfer.value.once('ready', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         state.paused = audioDom.paused; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         state.duration = audioDom.duration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      wavesurfer.on('finish', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      wavesurfer.value.on('finish', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         state.paused = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -169,14 +190,22 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onMounted(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 判断是否登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!state.loginTag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        removeAuth(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        setLogout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const __init = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 判断是否登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const Authorization = storage.get(ACCESS_TOKEN) || ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Authorization) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const res = await api_verification({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            token: Authorization 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log(res, 'res'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          state.loginTag = res.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (!res.data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            removeAuth(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setLogout(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const { data } = await api_openUserMusicDetail(state.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         state.musicDetail = data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         getList(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -193,6 +222,17 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMounted(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      __init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onBeforeRouteUpdate((to: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      state.id = to.query.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      state.playType = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      state.params.page = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      __init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div class={styles.creation}> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -289,7 +329,10 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             value: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <div class={styles.zan} onClick={onStarChange}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <img src={iconZanActive} class={styles.iconZan} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  src={state.musicDetail.starFlag ? iconZanActive : iconZan} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class={styles.iconZan} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {state.musicDetail.likeNum} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -318,9 +361,13 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               immediateCheck={false}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <div class={styles.cellGroup}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 {state.list.map((item: any) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <div class={styles.cell}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.cell} onClick={() => onDetail(item)}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     <div class={styles.cellImg}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      <Image class={styles.cellImage} src={item.img} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <Image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        class={styles.cellImage} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        src={item.img} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        fit="cover" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                       <div class={styles.iconZan}>{item.likeNum}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     </div> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -347,6 +394,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             onClose={() => (state.loginStatus = false)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             onConfirm={async (val: boolean) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               state.loginStatus = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              state.loginStatus = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               const { data } = await api_openUserMusicDetail(state.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               state.musicDetail = data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }} 
			 |