Skip to content

Commit 57f567a

Browse files
authored
Merge pull request #999 from MoYingJi/pr/i
2 parents 9730f57 + 5cdce75 commit 57f567a

2 files changed

Lines changed: 31 additions & 9 deletions

File tree

src/composables/useSongMenu.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ export const useSongMenu = () => {
3535
const localStore = useLocalStore();
3636

3737
// 删除本地歌曲
38-
const deleteLocalSong = (song: SongType, emit: (event: "removeSong", args: any[]) => void) => {
38+
const deleteLocalSong = (song: SongType, emit?: (event: "removeSong", args: any[]) => void) => {
39+
if (emit === undefined) return;
3940
if (!song.path) return;
4041
window.$dialog.warning({
4142
title: "确认删除",
@@ -151,10 +152,10 @@ export const useSongMenu = () => {
151152
// 生成菜单选项
152153
const getMenuOptions = (
153154
song: SongType,
154-
index: number,
155+
index: number = -1,
155156
playListId: number = 0,
156157
isDailyRecommend: boolean = false,
157-
emit: (event: "removeSong", args: any[]) => void,
158+
emit?: (event: "removeSong", args: any[]) => void,
158159
): DropdownOption[] => {
159160
const userPlaylistsData = dataStore.userLikeData.playlists?.filter(
160161
(pl) => pl.userId === dataStore.userData.userId,
@@ -321,13 +322,14 @@ export const useSongMenu = () => {
321322
label: "从歌单中删除",
322323
show:
323324
settingStore.contextMenuOptions.deleteFromPlaylist &&
325+
emit !== undefined &&
324326
isUserPlaylist &&
325327
(isLocalPlaylist || isLoginNormal) &&
326328
!isCloud,
327329
props: {
328330
onClick: () =>
329331
deleteSongs(playListId!, [song.id], {
330-
callback: () => emit("removeSong", [song.id]),
332+
callback: () => emit?.("removeSong", [song.id]),
331333
songName: song.name,
332334
}),
333335
},
@@ -345,7 +347,11 @@ export const useSongMenu = () => {
345347
{
346348
key: "delete-local",
347349
label: "从本地磁盘中删除",
348-
show: settingStore.contextMenuOptions.deleteFromLocal && isLocal && !isCurrent,
350+
show:
351+
settingStore.contextMenuOptions.deleteFromLocal &&
352+
emit !== undefined &&
353+
isLocal &&
354+
!isCurrent,
349355
props: {
350356
onClick: () => deleteLocalSong(song, emit),
351357
},

src/views/Song/wiki.vue

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
<n-text class="text-hidden">{{ publishTime }}</n-text>
7474
</div>
7575
</div>
76-
<div class="actions">
76+
<n-flex class="actions">
7777
<n-button
7878
type="primary"
7979
strong
@@ -87,7 +87,18 @@
8787
</template>
8888
播放
8989
</n-button>
90-
</div>
90+
<n-dropdown
91+
:options="currentSong ? getMenuOptions(currentSong) : []"
92+
trigger="click"
93+
placement="bottom-start"
94+
>
95+
<n-button :focusable="false" class="more" circle strong secondary>
96+
<template #icon>
97+
<SvgIcon name="List" />
98+
</template>
99+
</n-button>
100+
</n-dropdown>
101+
</n-flex>
91102
</div>
92103
</div>
93104
<!-- 数据展示区域 -->
@@ -301,12 +312,15 @@ import {
301312
import { formatSongsList, removeBrackets } from "@/utils/format";
302313
import { useSettingStore } from "@/stores";
303314
import dayjs from "dayjs";
315+
import { useSongMenu } from "@/composables/useSongMenu";
304316
import { formatTimestamp } from "@/utils/time";
305317
306318
const route = useRoute();
307319
const player = usePlayerController();
308320
const settingStore = useSettingStore();
309321
322+
const { getMenuOptions } = useSongMenu();
323+
310324
const loading = ref(true);
311325
const currentSongId = ref<number>(0);
312326
const currentSong = ref<SongType | null>(null);
@@ -591,8 +605,10 @@ onActivated(() => {
591605
margin-top: auto;
592606
:deep(.n-button) {
593607
height: 40px;
594-
padding: 0 24px;
595-
font-size: 16px;
608+
transition: all 0.3s var(--n-bezier);
609+
}
610+
.more {
611+
width: 40px;
596612
}
597613
@media (max-width: 768px) {
598614
:deep(.n-button) {

0 commit comments

Comments
 (0)