diff --git a/src/renderer/layout/components/PlayBar.vue b/src/renderer/layout/components/PlayBar.vue index 35e4573..81874c7 100644 --- a/src/renderer/layout/components/PlayBar.vue +++ b/src/renderer/layout/components/PlayBar.vue @@ -162,7 +162,14 @@ @@ -454,6 +461,15 @@ watch( ); const isEQVisible = ref(false); + +// 在 script setup 部分添加删除歌曲的处理函数 +const handleDeleteSong = (song: SongResult) => { + // 如果删除的是当前播放的歌曲,先切换到下一首 + if (song.id === playMusic.value.id) { + playerStore.nextPlay(); + } + playerStore.removeFromPlayList(song.id); +}; diff --git a/src/renderer/store/modules/player.ts b/src/renderer/store/modules/player.ts index 7c33d80..fe8c009 100644 --- a/src/renderer/store/modules/player.ts +++ b/src/renderer/store/modules/player.ts @@ -344,6 +344,21 @@ export const usePlayerStore = defineStore('player', () => { localStorage.setItem('favoriteList', JSON.stringify(favoriteList.value)); }; + const removeFromPlayList = (id: number) => { + const index = playList.value.findIndex((item) => item.id === id); + if (index === -1) return; + + // 如果删除的是当前播放的歌曲,先切换到下一首 + if (id === playMusic.value.id) { + nextPlay(); + } + + // 从播放列表中移除,使用不可变的方式 + const newPlayList = [...playList.value]; + newPlayList.splice(index, 1); + setPlayList(newPlayList); + }; + // 初始化播放状态 const initializePlayState = async () => { const settingStore = useSettingsStore(); @@ -450,6 +465,7 @@ export const usePlayerStore = defineStore('player', () => { initializePlayState, initializeFavoriteList, addToFavorite, - removeFromFavorite + removeFromFavorite, + removeFromPlayList }; });