feat: 修复排行播放列表问题 优化暂停播放逻辑

This commit is contained in:
alger
2024-09-13 17:07:45 +08:00
parent 008f2183de
commit c55544df46
2 changed files with 17 additions and 24 deletions
+5
View File
@@ -63,6 +63,11 @@ const emits = defineEmits(['play']);
// 播放音乐 设置音乐详情 打开音乐底栏 // 播放音乐 设置音乐详情 打开音乐底栏
const playMusicEvent = async (item: SongResult) => { const playMusicEvent = async (item: SongResult) => {
if (playMusic.value.id === item.id) { if (playMusic.value.id === item.id) {
if (play.value) {
store.commit('setPlayMusic', false);
} else {
store.commit('setPlayMusic', true);
}
return; return;
} }
await store.commit('setPlay', item); await store.commit('setPlay', item);
+12 -24
View File
@@ -38,11 +38,12 @@ const loadPage = async () => {
const { data: playlistData } = await getUserPlaylist(user.value.userId); const { data: playlistData } = await getUserPlaylist(user.value.userId);
playList.value = playlistData.playlist; playList.value = playlistData.playlist;
// getUserRecord(user.value.userId).then(({ data: recordData }) => {
// recordList.value = recordData.allData;
// });
const { data: recordData } = await getUserRecord(user.value.userId); const { data: recordData } = await getUserRecord(user.value.userId);
recordList.value = recordData.allData; recordList.value = recordData.allData.map((item: any) => ({
...item,
...item.song,
picUrl: item.song.al.picUrl,
}));
infoLoading.value = false; infoLoading.value = false;
}; };
@@ -64,19 +65,6 @@ const showPlaylist = async (id: number) => {
list.value = data.playlist; list.value = data.playlist;
}; };
// 格式化歌曲列表项
const formatDetail = computed(() => (detail: any) => {
const song = {
artists: detail.ar,
name: detail.al.name,
id: detail.al.id,
};
detail.song = song;
detail.picUrl = detail.al.picUrl;
return detail;
});
const handlePlay = () => { const handlePlay = () => {
const tracks = recordList.value || []; const tracks = recordList.value || [];
store.commit('setPlayList', tracks); store.commit('setPlayList', tracks);
@@ -113,8 +101,8 @@ const handlePlay = () => {
<div class="uesr-signature">{{ userDetail.profile.signature }}</div> <div class="uesr-signature">{{ userDetail.profile.signature }}</div>
<div class="play-list" :class="setAnimationClass('animate__fadeInLeft')"> <div class="play-list" :class="setAnimationClass('animate__fadeInLeft')">
<div class=" ">创建的歌单</div> <div class="title">创建的歌单</div>
<n-scrollbar v-loading="infoLoading"> <n-scrollbar>
<div v-for="(item, index) in playList" :key="index" class="play-list-item" @click="showPlaylist(item.id)"> <div v-for="(item, index) in playList" :key="index" class="play-list-item" @click="showPlaylist(item.id)">
<n-image :src="getImgUrl(item.coverImgUrl, '50y50')" class="play-list-item-img" lazy preview-disabled /> <n-image :src="getImgUrl(item.coverImgUrl, '50y50')" class="play-list-item-img" lazy preview-disabled />
<div class="play-list-item-info"> <div class="play-list-item-info">
@@ -127,18 +115,18 @@ const handlePlay = () => {
</div> </div>
</div> </div>
</div> </div>
<div v-if="!isMobile" class="right" :class="setAnimationClass('animate__fadeInRight')"> <div v-if="!isMobile" v-loading="infoLoading" class="right" :class="setAnimationClass('animate__fadeInRight')">
<div class="title">听歌排行</div> <div class="title">听歌排行</div>
<div class="record-list"> <div class="record-list">
<n-scrollbar v-loading="infoLoading"> <n-scrollbar>
<div <div
v-for="(item, index) in recordList" v-for="(item, index) in recordList"
:key="item.song.id" :key="item.id"
class="record-item" class="record-item"
:class="setAnimationClass('animate__bounceInUp')" :class="setAnimationClass('animate__bounceInUp')"
:style="setAnimationDelay(index, 50)" :style="setAnimationDelay(index, 25)"
> >
<song-item class="song-item" :item="formatDetail(item.song)" @play="handlePlay" /> <song-item class="song-item" :item="item" @play="handlePlay" />
<div class="play-count">{{ item.playCount }}</div> <div class="play-count">{{ item.playCount }}</div>
</div> </div>
<play-bottom /> <play-bottom />