diff --git a/src/renderer/layout/components/PlayBar.vue b/src/renderer/layout/components/PlayBar.vue index 25bdc0b..79f8ddf 100644 --- a/src/renderer/layout/components/PlayBar.vue +++ b/src/renderer/layout/components/PlayBar.vue @@ -165,7 +165,14 @@ @@ -477,6 +484,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 6e61261..0f75bdd 100644 --- a/src/renderer/store/modules/player.ts +++ b/src/renderer/store/modules/player.ts @@ -444,6 +444,22 @@ 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(); const savedPlayList = getLocalStorageItem('playList', []); @@ -551,6 +567,7 @@ export const usePlayerStore = defineStore('player', () => { initializePlayState, initializeFavoriteList, addToFavorite, - removeFromFavorite + removeFromFavorite, + removeFromPlayList }; });