|
@@ -2,7 +2,7 @@ import { defineComponent, onMounted, reactive, ref } from 'vue';
|
|
// import WaveSurfer from 'wavesurfer.js';
|
|
// import WaveSurfer from 'wavesurfer.js';
|
|
// import Regions from 'wavesurfer.js/dist/plugins/regions.js';
|
|
// import Regions from 'wavesurfer.js/dist/plugins/regions.js';
|
|
import styles from './index.module.less';
|
|
import styles from './index.module.less';
|
|
-import { Cell, Image, List, Popup, Slider } from 'vant';
|
|
|
|
|
|
+import { Cell, Image, List, Popup, Slider, showDialog } from 'vant';
|
|
import iconMember from './images/icon-member.png';
|
|
import iconMember from './images/icon-member.png';
|
|
import iconZan from './images/icon-zan.png';
|
|
import iconZan from './images/icon-zan.png';
|
|
import iconZanActive from './images/icon-zan-active.png';
|
|
import iconZanActive from './images/icon-zan-active.png';
|
|
@@ -25,6 +25,7 @@ import { removeAuth } from '../student-register/layout/utils';
|
|
import { setLogout } from '@/state';
|
|
import { setLogout } from '@/state';
|
|
import { storage } from '@/helpers/storage';
|
|
import { storage } from '@/helpers/storage';
|
|
import { ACCESS_TOKEN } from '@/store/mutation-types';
|
|
import { ACCESS_TOKEN } from '@/store/mutation-types';
|
|
|
|
+import MWxTip from '@/components/m-wx-tip';
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'creation-detail',
|
|
name: 'creation-detail',
|
|
@@ -56,7 +57,9 @@ export default defineComponent({
|
|
params: {
|
|
params: {
|
|
page: 1,
|
|
page: 1,
|
|
rows: 20
|
|
rows: 20
|
|
- }
|
|
|
|
|
|
+ },
|
|
|
|
+ messageStatus: false,
|
|
|
|
+ message: ''
|
|
});
|
|
});
|
|
const wavesurfer = ref();
|
|
const wavesurfer = ref();
|
|
// window.AudioContext = window.AudioContext || window.webkitAudioContext;
|
|
// window.AudioContext = window.AudioContext || window.webkitAudioContext;
|
|
@@ -141,7 +144,6 @@ export default defineComponent({
|
|
};
|
|
};
|
|
|
|
|
|
const onDetail = (item: any) => {
|
|
const onDetail = (item: any) => {
|
|
- console.log(item, 'item');
|
|
|
|
router.push({
|
|
router.push({
|
|
path: '/shareCreation',
|
|
path: '/shareCreation',
|
|
query: {
|
|
query: {
|
|
@@ -160,6 +162,7 @@ export default defineComponent({
|
|
};
|
|
};
|
|
// 播放时监听
|
|
// 播放时监听
|
|
audioDom.addEventListener('timeupdate', () => {
|
|
audioDom.addEventListener('timeupdate', () => {
|
|
|
|
+ state.duration = audioDom.duration;
|
|
state.currentTime = audioDom.currentTime;
|
|
state.currentTime = audioDom.currentTime;
|
|
const rate = (state.currentTime / state.duration) * 100;
|
|
const rate = (state.currentTime / state.duration) * 100;
|
|
state.audioWidth = rate > 100 ? 100 : rate;
|
|
state.audioWidth = rate > 100 ? 100 : rate;
|
|
@@ -223,19 +226,26 @@ export default defineComponent({
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- const { data } = await api_openUserMusicDetail(state.id);
|
|
|
|
- state.musicDetail = data;
|
|
|
|
- getList();
|
|
|
|
- // 判断是视频还是音频
|
|
|
|
|
|
+ const res = await api_openUserMusicDetail(state.id);
|
|
|
|
|
|
- if (data.videoUrl.lastIndexOf('mp4') !== -1) {
|
|
|
|
- state.playType = 'Video';
|
|
|
|
|
|
+ if (res.code === 999) {
|
|
|
|
+ state.message = res.message;
|
|
|
|
+ state.messageStatus = true;
|
|
|
|
+ return;
|
|
} else {
|
|
} else {
|
|
- state.playType = 'Audio';
|
|
|
|
- // 初始化
|
|
|
|
- nextTick(() => {
|
|
|
|
- initAudio();
|
|
|
|
- });
|
|
|
|
|
|
+ state.musicDetail = res.data;
|
|
|
|
+ getList();
|
|
|
|
+ // 判断是视频还是音频
|
|
|
|
+
|
|
|
|
+ if (res.data.videoUrl.lastIndexOf('mp4') !== -1) {
|
|
|
|
+ state.playType = 'Video';
|
|
|
|
+ } else {
|
|
|
|
+ state.playType = 'Audio';
|
|
|
|
+ // 初始化
|
|
|
|
+ nextTick(() => {
|
|
|
|
+ initAudio();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} catch (err) {
|
|
} catch (err) {
|
|
//
|
|
//
|
|
@@ -337,7 +347,7 @@ export default defineComponent({
|
|
title: () => (
|
|
title: () => (
|
|
<div class={styles.userInfo}>
|
|
<div class={styles.userInfo}>
|
|
<p class={styles.name}>
|
|
<p class={styles.name}>
|
|
- {state.musicDetail.username}
|
|
|
|
|
|
+ <span>{state.musicDetail.username}</span>
|
|
{state.musicDetail.vipFlag && (
|
|
{state.musicDetail.vipFlag && (
|
|
<img src={iconMember} class={styles.iconMember} />
|
|
<img src={iconMember} class={styles.iconMember} />
|
|
)}
|
|
)}
|
|
@@ -368,10 +378,10 @@ export default defineComponent({
|
|
<div class={styles.musicSection}>
|
|
<div class={styles.musicSection}>
|
|
<div class={styles.musicName}>
|
|
<div class={styles.musicName}>
|
|
<span class={styles.musicTag}>曲目名称</span>
|
|
<span class={styles.musicTag}>曲目名称</span>
|
|
- {state.musicDetail.musicSheetName}
|
|
|
|
|
|
+ {state.musicDetail?.musicSheetName}
|
|
</div>
|
|
</div>
|
|
- {state.musicDetail.desc && (
|
|
|
|
- <div class={styles.musicDesc}>{state.musicDetail.desc}</div>
|
|
|
|
|
|
+ {state.musicDetail?.desc && (
|
|
|
|
+ <div class={styles.musicDesc}>{state.musicDetail?.desc}</div>
|
|
)}
|
|
)}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -426,6 +436,12 @@ export default defineComponent({
|
|
}}
|
|
}}
|
|
/>
|
|
/>
|
|
</Popup>
|
|
</Popup>
|
|
|
|
+
|
|
|
|
+ <MWxTip
|
|
|
|
+ v-model:show={state.messageStatus}
|
|
|
|
+ message={state.message}
|
|
|
|
+ showButton={false}
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
);
|
|
);
|
|
}
|
|
}
|