|
@@ -33,6 +33,7 @@ export default defineComponent({
|
|
|
const pageVisibility = usePageVisibility();
|
|
|
const state = reactive({
|
|
|
songPopup: false,
|
|
|
+ musicListenList: props.musicList || ([] as any),
|
|
|
playState: 'pause',
|
|
|
audioObj: {} as any,
|
|
|
listActive: 0,
|
|
@@ -77,7 +78,7 @@ export default defineComponent({
|
|
|
|
|
|
/** 播放曲目 */
|
|
|
const handlePlay = (item: any) => {
|
|
|
- const index = props.musicList.findIndex(
|
|
|
+ const index = state.musicListenList.findIndex(
|
|
|
(_item: any) => _item.id === item.id
|
|
|
);
|
|
|
if (index > -1) {
|
|
@@ -87,7 +88,7 @@ export default defineComponent({
|
|
|
state.playState = 'play';
|
|
|
}
|
|
|
state.listActive = index;
|
|
|
- state.audioObj = props.musicList[index];
|
|
|
+ state.audioObj = state.musicListenList[index];
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -98,14 +99,14 @@ export default defineComponent({
|
|
|
} else if (type === 'pause') {
|
|
|
state.playState = 'pause';
|
|
|
} else if (type === 'pre') {
|
|
|
- if (props.musicList[state.listActive - 1]) {
|
|
|
+ if (state.musicListenList[state.listActive - 1]) {
|
|
|
audioData.currentTime = 0;
|
|
|
- handlePlay(props.musicList[state.listActive - 1]);
|
|
|
+ handlePlay(state.musicListenList[state.listActive - 1]);
|
|
|
}
|
|
|
} else if (type === 'next') {
|
|
|
- if (props.musicList[state.listActive + 1]) {
|
|
|
+ if (state.musicListenList[state.listActive + 1]) {
|
|
|
audioData.currentTime = 0;
|
|
|
- handlePlay(props.musicList[state.listActive + 1]);
|
|
|
+ handlePlay(state.musicListenList[state.listActive + 1]);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -130,6 +131,17 @@ export default defineComponent({
|
|
|
}
|
|
|
);
|
|
|
|
|
|
+ watch(
|
|
|
+ () => props.musicList,
|
|
|
+ () => {
|
|
|
+ state.musicListenList = props.musicList;
|
|
|
+ const musicList = props.musicList;
|
|
|
+ if (musicList.length > 0) {
|
|
|
+ state.audioObj = musicList[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
nextTick(() => {
|
|
|
const musicList = props.musicList;
|
|
@@ -232,7 +244,7 @@ export default defineComponent({
|
|
|
<div class={styles.songTitle}>代表作</div>
|
|
|
|
|
|
<div class={styles.songCellGroup}>
|
|
|
- {props.musicList.map((item: any, index: number) => (
|
|
|
+ {state.musicListenList.map((item: any, index: number) => (
|
|
|
<Cell
|
|
|
border={false}
|
|
|
class={[
|
|
@@ -242,7 +254,7 @@ export default defineComponent({
|
|
|
center
|
|
|
onClick={() => {
|
|
|
if (index === state.listActive) return;
|
|
|
- state.audioObj = props.musicList[index];
|
|
|
+ state.audioObj = state.musicListenList[index];
|
|
|
state.listActive = index;
|
|
|
state.playState = 'play';
|
|
|
}}>
|