diff --git a/src/views/api/Music.vue b/src/views/api/Music.vue index a2633f8..bc2194a 100644 --- a/src/views/api/Music.vue +++ b/src/views/api/Music.vue @@ -168,8 +168,23 @@ - - + + @@ -181,7 +196,7 @@ import { useBaseList } from '@/model/baselist' import { MsgResult, Page } from '@/model/common.dto' import { UploadInstance, ElMessage, ElMessageBox } from 'element-plus' import { MusicModel, MusicLibModel, MusicLyricModel, MusicPlayerItem } from '@/model/api/music' -import APlayer from './aplayer/vue-aplayer.vue' +import MusicPlayerPanel from './aplayer/music-player-panel.vue' import prettyBytes from 'pretty-bytes' // 格式化秒为 mm:ss function formatDuration(seconds?: number): string { @@ -225,7 +240,7 @@ const musicList = ref([]) const currentMusic = ref() const lyricForm = ref() const musicUpload = ref() -const player = ref>() +const player = ref>() const lyricLoading = ref(false) const libDrawerVisible = ref(false) const libTableData = ref<(MusicLibModel & { _isNew?: boolean })[]>([]) @@ -384,20 +399,39 @@ function musicPlay() { player.value?.pause() }) navigator.mediaSession.setActionHandler('previoustrack', () => { - if (currentId === 0) { - player.value?.switch(musicList.value.length - 1) - } else { - player.value?.switch(currentId - 1) - } + switchPrev() }) navigator.mediaSession.setActionHandler('nexttrack', () => { - if (currentId === musicList.value.length - 1) { - player.value?.switch(0) - } else { - player.value?.switch(currentId + 1) - } + switchNext() }) } +function switchPrev() { + if (!currentMusic.value) return + const idx = musicList.value.indexOf(currentMusic.value) + const prevIdx = idx <= 0 ? musicList.value.length - 1 : idx - 1 + player.value?.switch(prevIdx) +} +function switchNext() { + if (!currentMusic.value) return + const idx = musicList.value.indexOf(currentMusic.value) + const nextIdx = idx >= musicList.value.length - 1 ? 0 : idx + 1 + player.value?.switch(nextIdx) +} +function cycleRepeatMode() { + if (!player.value) return + if (player.value.repeatMode === 'no_repeat') player.value.repeatMode = 'repeat_all' + else if (player.value.repeatMode === 'repeat_all') player.value.repeatMode = 'repeat_one' + else player.value.repeatMode = 'no_repeat' +} +function togglePlayerMute() { + if (!player.value?.audio) return + const audio = player.value.audio as unknown as HTMLAudioElement + audio.muted = !audio.muted +} +function onSelectSong(song: MusicPlayerItem) { + const idx = musicList.value.indexOf(song) + if (idx >= 0) player.value?.switch(idx) +} function loadLibs() { return http.get('/music/lib/list').then(data => { diff --git a/src/views/api/aplayer/assets/loading.svg b/src/views/api/aplayer/assets/loading.svg deleted file mode 100644 index 0ab9175..0000000 --- a/src/views/api/aplayer/assets/loading.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/lrc.svg b/src/views/api/aplayer/assets/lrc.svg deleted file mode 100644 index 57fac17..0000000 --- a/src/views/api/aplayer/assets/lrc.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/menu.svg b/src/views/api/aplayer/assets/menu.svg deleted file mode 100644 index 2806d05..0000000 --- a/src/views/api/aplayer/assets/menu.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/no_repeat.svg b/src/views/api/aplayer/assets/no_repeat.svg deleted file mode 100644 index 182635c..0000000 --- a/src/views/api/aplayer/assets/no_repeat.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/pause.svg b/src/views/api/aplayer/assets/pause.svg deleted file mode 100644 index ae0cd59..0000000 --- a/src/views/api/aplayer/assets/pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/play.svg b/src/views/api/aplayer/assets/play.svg deleted file mode 100644 index a856703..0000000 --- a/src/views/api/aplayer/assets/play.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/repeat_all.svg b/src/views/api/aplayer/assets/repeat_all.svg deleted file mode 100644 index f346d77..0000000 --- a/src/views/api/aplayer/assets/repeat_all.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/repeat_one.svg b/src/views/api/aplayer/assets/repeat_one.svg deleted file mode 100644 index 9325e37..0000000 --- a/src/views/api/aplayer/assets/repeat_one.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/shuffle.svg b/src/views/api/aplayer/assets/shuffle.svg deleted file mode 100644 index 37eb42e..0000000 --- a/src/views/api/aplayer/assets/shuffle.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/skip.svg b/src/views/api/aplayer/assets/skip.svg deleted file mode 100644 index e7a23dd..0000000 --- a/src/views/api/aplayer/assets/skip.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/volume_down.svg b/src/views/api/aplayer/assets/volume_down.svg deleted file mode 100644 index 4e94d08..0000000 --- a/src/views/api/aplayer/assets/volume_down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/volume_off.svg b/src/views/api/aplayer/assets/volume_off.svg deleted file mode 100644 index 7f0fab3..0000000 --- a/src/views/api/aplayer/assets/volume_off.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/assets/volume_up.svg b/src/views/api/aplayer/assets/volume_up.svg deleted file mode 100644 index 4476774..0000000 --- a/src/views/api/aplayer/assets/volume_up.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-controller-progress.vue b/src/views/api/aplayer/components/aplayer-controller-progress.vue deleted file mode 100644 index 6c3d734..0000000 --- a/src/views/api/aplayer/components/aplayer-controller-progress.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-controller-volume.vue b/src/views/api/aplayer/components/aplayer-controller-volume.vue deleted file mode 100644 index 1a2e987..0000000 --- a/src/views/api/aplayer/components/aplayer-controller-volume.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-controller.vue b/src/views/api/aplayer/components/aplayer-controller.vue deleted file mode 100644 index a3f0903..0000000 --- a/src/views/api/aplayer/components/aplayer-controller.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-icon.vue b/src/views/api/aplayer/components/aplayer-icon.vue deleted file mode 100644 index b275bba..0000000 --- a/src/views/api/aplayer/components/aplayer-icon.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-iconbutton.vue b/src/views/api/aplayer/components/aplayer-iconbutton.vue deleted file mode 100644 index 099984a..0000000 --- a/src/views/api/aplayer/components/aplayer-iconbutton.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-list.vue b/src/views/api/aplayer/components/aplayer-list.vue deleted file mode 100644 index 0fc80a2..0000000 --- a/src/views/api/aplayer/components/aplayer-list.vue +++ /dev/null @@ -1,136 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-lrc.vue b/src/views/api/aplayer/components/aplayer-lrc.vue deleted file mode 100644 index 5a10d5e..0000000 --- a/src/views/api/aplayer/components/aplayer-lrc.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/components/aplayer-thumbnail.vue b/src/views/api/aplayer/components/aplayer-thumbnail.vue deleted file mode 100644 index 3f57729..0000000 --- a/src/views/api/aplayer/components/aplayer-thumbnail.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/api/aplayer/less/variables.less b/src/views/api/aplayer/less/variables.less deleted file mode 100644 index 02c0268..0000000 --- a/src/views/api/aplayer/less/variables.less +++ /dev/null @@ -1,3 +0,0 @@ -@aplayer-height: 66px; -@lrc-height: 30px; -@aplayer-height-lrc: @aplayer-height + @lrc-height - 6; diff --git a/src/views/api/aplayer/music-player-panel.vue b/src/views/api/aplayer/music-player-panel.vue new file mode 100644 index 0000000..7b69937 --- /dev/null +++ b/src/views/api/aplayer/music-player-panel.vue @@ -0,0 +1,1005 @@ + + + + + diff --git a/src/views/api/aplayer/vue-aplayer.vue b/src/views/api/aplayer/vue-aplayer.vue deleted file mode 100644 index 1172036..0000000 --- a/src/views/api/aplayer/vue-aplayer.vue +++ /dev/null @@ -1,834 +0,0 @@ - - - - \ No newline at end of file