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
};
});