From bae7da11d60fc070cb86bc12b28c2fef5724d9c5 Mon Sep 17 00:00:00 2001 From: MoYingJi Date: Fri, 27 Feb 2026 22:52:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(CopyLyrics):=20=E5=8F=AF=E4=BB=A5=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E5=A4=8D=E5=88=B6=E7=9A=84=E6=AD=8C=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E6=AD=8C=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Modal/CopyLyrics.vue | 51 ++++++++++++++++++----------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/src/components/Modal/CopyLyrics.vue b/src/components/Modal/CopyLyrics.vue index 9b62023b6..1645c567b 100644 --- a/src/components/Modal/CopyLyrics.vue +++ b/src/components/Modal/CopyLyrics.vue @@ -19,6 +19,12 @@ + + + + {{ displaySuffix }} + + 要复制的内容 @@ -73,6 +79,27 @@ const displayLyrics = computed(() => { }); }); +const displaySuffix = computed(() => { + const showSongName = selectedFilters.value.includes("songName"); + const showArtist = selectedFilters.value.includes("artist"); + + if (!showSongName && !showArtist) return ""; + + const songName = musicStore.playSong.name; + const artistName = Array.isArray(musicStore.playSong.artists) + ? musicStore.playSong.artists.map((ar) => ar.name).join("/") + : musicStore.playSong.artists; + + if (showSongName && showArtist) { + return `——《${songName}》 - ${artistName}`; + } else if (showSongName) { + return `——《${songName}》`; + } else if (showArtist) { + return `—— ${artistName}`; + } + return ""; +}); + const showTranslation = computed(() => selectedFilters.value.includes("translation")); const showRomaji = computed(() => selectedFilters.value.includes("romaji")); @@ -92,6 +119,8 @@ const selectAll = () => { * 复制歌词 */ const handleCopy = async () => { + const lineSeparator = selectedFilters.value.includes("emptyLine") ? "\n\n" : "\n"; + let linesToCopy = displayLyrics.value .filter((l) => selectedLines.value.includes(l.index)) .map((l) => { @@ -102,27 +131,9 @@ const handleCopy = async () => { return parts.join("\n"); }) .filter((s) => s) - .join(selectedFilters.value.includes("emptyLine") ? "\n\n" : "\n"); + .join(lineSeparator); - const showSongName = selectedFilters.value.includes("songName"); - const showArtist = selectedFilters.value.includes("artist"); - - if (showSongName || showArtist) { - const songName = musicStore.playSong.name; - const artistName = Array.isArray(musicStore.playSong.artists) - ? musicStore.playSong.artists.map((ar) => ar.name).join("/") - : musicStore.playSong.artists; - - let suffix = "\n\n——"; - if (showSongName && showArtist) { - suffix += `《${songName}》 - ${artistName}`; - } else if (showSongName) { - suffix += `《${songName}》`; - } else if (showArtist) { - suffix += ` ${artistName}`; - } - linesToCopy += suffix; - } + if (displaySuffix.value) linesToCopy += `${lineSeparator}${displaySuffix.value}`; if (linesToCopy) { await copyData(linesToCopy);