refactor(cleanup): 清理第二轮非酷狗组件残留(PlaylistSelection/NeteaseUpload/BilibiliIframe)
- RequestForm.vue:删除 PlaylistSelectionModal.vue / NeteaseUploadDialog.vue 2 行无效 import
(2 组件在合并阶段已物理删除,grep 确认无 ref / 赋值 / template 渲染段残留)
- AudioPlayer.vue:彻底清理 BilibiliIframeModal 相关 8 处残留:
① 封面点击事件 @click 三元嵌套语法 bug 修复 → 简化为 !isMobile ? toggleLyrics()
② 删除 v-if=false 的「观看视频」Icon 按钮(保留歌词按钮)
③ 删除 ClientOnly 包裹的 BilibiliIframeModal 渲染段
④ 删除 BilibiliIframeModal.vue / getBilibiliUrl 2 行 import
⑤ 删除 showBilibiliIframe ref 定义
⑥ 删除 resolveFallbackUrl 中 if(false) 包裹的 bilibili 死代码分支
⑦ 删除整个 openBilibiliVideo 函数(含 iframe 预览 + 新窗口跳转逻辑)
⑧ handlePlayerClick 移动端逻辑简化为直接 toggleLyrics(移除 bilibili 平台分支)
- 验证:
・IDE GetDiagnostics 0 error / 0 warning
・grep 本轮 3 Modal 关键字在 app/components 下 0 命中(仅 utils/url.ts 保留 getBilibiliUrl
工具函数定义,未被 import,不影响 build)
・上一轮 4 Modal(NeteaseLogin/PodcastEpisodes/BilibiliEpisodes/RecentSongs)
grep 0 命中(持续干净)
This commit is contained in:
@@ -849,9 +849,7 @@ import Icon from '../UI/Icon.vue'
|
|||||||
import { convertToHttps, validateUrl } from '~/utils/url'
|
import { convertToHttps, validateUrl } from '~/utils/url'
|
||||||
|
|
||||||
import ImportSongsModal from './ImportSongsModal.vue'
|
import ImportSongsModal from './ImportSongsModal.vue'
|
||||||
import PlaylistSelectionModal from './PlaylistSelectionModal.vue'
|
|
||||||
import UserSearchModal from '../Common/UserSearchModal.vue'
|
import UserSearchModal from '../Common/UserSearchModal.vue'
|
||||||
import NeteaseUploadDialog from './NeteaseUploadDialog.vue'
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
loading: {
|
loading: {
|
||||||
|
|||||||
@@ -26,13 +26,7 @@
|
|||||||
<!-- 封面 -->
|
<!-- 封面 -->
|
||||||
<div
|
<div
|
||||||
class="cover-container"
|
class="cover-container"
|
||||||
@click.stop="
|
@click.stop="!isMobile ? toggleLyrics() : null"
|
||||||
isMobile
|
|
||||||
? false
|
|
||||||
? openBilibiliVideo()
|
|
||||||
: toggleLyrics()
|
|
||||||
: null
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<template v-if="activeSong && activeSong.cover && !coverError">
|
<template v-if="activeSong && activeSong.cover && !coverError">
|
||||||
<img
|
<img
|
||||||
@@ -107,15 +101,7 @@
|
|||||||
<!-- 控制按钮区域 -->
|
<!-- 控制按钮区域 -->
|
||||||
<div class="controls-frame">
|
<div class="controls-frame">
|
||||||
<!-- 左侧歌词按钮 -->
|
<!-- 左侧歌词按钮 -->
|
||||||
<span
|
<span class="lyrics-btn music-icon" title="歌词" @click="toggleLyrics">
|
||||||
v-if="false"
|
|
||||||
class="lyrics-btn music-icon"
|
|
||||||
title="观看视频"
|
|
||||||
@click="openBilibiliVideo"
|
|
||||||
>
|
|
||||||
<Icon name="video" size="20" />
|
|
||||||
</span>
|
|
||||||
<span v-else class="lyrics-btn music-icon" title="歌词" @click="toggleLyrics">
|
|
||||||
<Icon name="music" size="20" />
|
<Icon name="music" size="20" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
@@ -210,16 +196,6 @@
|
|||||||
<LyricsModal :is-visible="showFullscreenLyrics" @close="showFullscreenLyrics = false" />
|
<LyricsModal :is-visible="showFullscreenLyrics" @close="showFullscreenLyrics = false" />
|
||||||
</ClientOnly>
|
</ClientOnly>
|
||||||
|
|
||||||
<!-- 哔哩哔哩 iframe 预览模态 -->
|
|
||||||
<ClientOnly>
|
|
||||||
<BilibiliIframeModal
|
|
||||||
:show="showBilibiliIframe"
|
|
||||||
:bvid="activeSong?.musicId?.split(':')[0]"
|
|
||||||
:page="activeSong?.musicId?.split(':')[2] ? parseInt(activeSong.musicId.split(':')[2]) : 1"
|
|
||||||
@close="showBilibiliIframe = false"
|
|
||||||
/>
|
|
||||||
</ClientOnly>
|
|
||||||
|
|
||||||
<ConfirmDialog
|
<ConfirmDialog
|
||||||
:show="showFallbackOpenDialog"
|
:show="showFallbackOpenDialog"
|
||||||
title="打开投稿链接"
|
title="打开投稿链接"
|
||||||
@@ -238,7 +214,6 @@ import { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'
|
|||||||
import AppleMusicLyrics from './AppleMusicLyrics.vue'
|
import AppleMusicLyrics from './AppleMusicLyrics.vue'
|
||||||
import LyricsModal from './LyricsModal.vue'
|
import LyricsModal from './LyricsModal.vue'
|
||||||
import AudioElement from './AudioPlayer/AudioElement.vue'
|
import AudioElement from './AudioPlayer/AudioElement.vue'
|
||||||
import BilibiliIframeModal from './BilibiliIframeModal.vue'
|
|
||||||
import Icon from './Icon.vue'
|
import Icon from './Icon.vue'
|
||||||
import ConfirmDialog from './ConfirmDialog.vue'
|
import ConfirmDialog from './ConfirmDialog.vue'
|
||||||
import { useAudioPlayerControl } from '~/composables/useAudioPlayerControl'
|
import { useAudioPlayerControl } from '~/composables/useAudioPlayerControl'
|
||||||
@@ -246,7 +221,6 @@ import { useAudioPlayerSync } from '~/composables/useAudioPlayerSync'
|
|||||||
import { useAudioQuality } from '~/composables/useAudioQuality'
|
import { useAudioQuality } from '~/composables/useAudioQuality'
|
||||||
import { useAudioPlayerEnhanced } from '~/composables/useAudioPlayerEnhanced'
|
import { useAudioPlayerEnhanced } from '~/composables/useAudioPlayerEnhanced'
|
||||||
import { useMediaSession } from '~/composables/useMediaSession'
|
import { useMediaSession } from '~/composables/useMediaSession'
|
||||||
import { getBilibiliUrl } from '~/utils/url'
|
|
||||||
|
|
||||||
// 添加 router 导入
|
// 添加 router 导入
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -286,7 +260,6 @@ const showLyrics = ref(false)
|
|||||||
const showFullscreenLyrics = ref(false)
|
const showFullscreenLyrics = ref(false)
|
||||||
const coverError = ref(false)
|
const coverError = ref(false)
|
||||||
const useAppleMusicStyle = ref(true) // 默认使用Apple Music风格
|
const useAppleMusicStyle = ref(true) // 默认使用Apple Music风格
|
||||||
const showBilibiliIframe = ref(false) // 显示哔哩哔哩 iframe 预览
|
|
||||||
|
|
||||||
// 时长显示模式:'remaining' 显示剩余时长,'total' 显示总时长
|
// 时长显示模式:'remaining' 显示剩余时长,'total' 显示总时长
|
||||||
const timeDisplayMode = ref('remaining')
|
const timeDisplayMode = ref('remaining')
|
||||||
@@ -367,13 +340,6 @@ const resolveFallbackUrl = () => {
|
|||||||
const playUrl = normalizeHttpUrl(song.playUrl)
|
const playUrl = normalizeHttpUrl(song.playUrl)
|
||||||
if (playUrl) return playUrl
|
if (playUrl) return playUrl
|
||||||
|
|
||||||
if (false) {
|
|
||||||
const bilibiliUrl = getBilibiliUrl(song)
|
|
||||||
if (bilibiliUrl && bilibiliUrl !== '#') {
|
|
||||||
return bilibiliUrl
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -962,23 +928,6 @@ const toggleLyrics = () => {
|
|||||||
showFullscreenLyrics.value = true
|
showFullscreenLyrics.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
const openBilibiliVideo = () => {
|
|
||||||
const song = activeSong.value
|
|
||||||
if (!song) return
|
|
||||||
|
|
||||||
// 如果播放器有错误,显示 iframe 预览
|
|
||||||
if (control.hasError.value) {
|
|
||||||
showBilibiliIframe.value = true
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 否则在新窗口打开
|
|
||||||
const url = getBilibiliUrl(song)
|
|
||||||
if (url && url !== '#') {
|
|
||||||
window.open(url, '_blank')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleLyricSeek = async (time) => {
|
const handleLyricSeek = async (time) => {
|
||||||
// 如果当前处于暂停状态,先开始播放
|
// 如果当前处于暂停状态,先开始播放
|
||||||
if (!control.isPlaying.value) {
|
if (!control.isPlaying.value) {
|
||||||
@@ -1152,13 +1101,9 @@ const checkMobile = () => {
|
|||||||
// 移动端点击播放条处理
|
// 移动端点击播放条处理
|
||||||
const handlePlayerClick = () => {
|
const handlePlayerClick = () => {
|
||||||
if (isMobile.value) {
|
if (isMobile.value) {
|
||||||
if (activeSong.value?.musicPlatform === 'bilibili') {
|
|
||||||
openBilibiliVideo()
|
|
||||||
} else {
|
|
||||||
toggleLyrics()
|
toggleLyrics()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// 处理热重载清理
|
// 处理热重载清理
|
||||||
|
|||||||
Reference in New Issue
Block a user