mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-04-24 16:27:23 +08:00
播放 空格控制播放 播放进度条
This commit is contained in:
@@ -17,7 +17,11 @@
|
|||||||
<div class="recommend-music-list-item-operating-like">
|
<div class="recommend-music-list-item-operating-like">
|
||||||
<i class="iconfont icon-likefill"></i>
|
<i class="iconfont icon-likefill"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="recommend-music-list-item-operating-play" @click="playMusic(item)">
|
<div
|
||||||
|
class="recommend-music-list-item-operating-play bg-black"
|
||||||
|
:class="isPlaying ? 'bg-green-600' : ''"
|
||||||
|
@click="playMusicEvent(item)"
|
||||||
|
>
|
||||||
<i class="iconfont icon-playfill"></i>
|
<i class="iconfont icon-playfill"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -28,6 +32,7 @@
|
|||||||
import { setAnimationDelay, setAnimationClass } from "@/utils";
|
import { setAnimationDelay, setAnimationClass } from "@/utils";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import type { SongResult } from "@/type/music";
|
import type { SongResult } from "@/type/music";
|
||||||
|
import { computed, } from "vue";
|
||||||
import type { PropType } from "vue";
|
import type { PropType } from "vue";
|
||||||
|
|
||||||
|
|
||||||
@@ -42,8 +47,21 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const playMusic = (item: SongResult) => {
|
|
||||||
|
const playMusic = computed(() => store.state.playMusic);
|
||||||
|
|
||||||
|
|
||||||
|
// 判断是否为正在播放的音乐
|
||||||
|
const isPlaying = computed(() => {
|
||||||
|
console.log(1231223, playMusic.value.id, props.item.id);
|
||||||
|
|
||||||
|
return playMusic.value.id == props.item.id;
|
||||||
|
})
|
||||||
|
|
||||||
|
// 播放音乐 设置音乐详情 打开音乐底栏
|
||||||
|
const playMusicEvent = (item: SongResult) => {
|
||||||
store.commit("setPlay", item);
|
store.commit("setPlay", item);
|
||||||
store.commit("setIsPlay", true);
|
store.commit("setIsPlay", true);
|
||||||
};
|
};
|
||||||
@@ -84,7 +102,7 @@ const playMusic = (item: SongResult) => {
|
|||||||
@apply mr-2 cursor-pointer;
|
@apply mr-2 cursor-pointer;
|
||||||
}
|
}
|
||||||
&-play {
|
&-play {
|
||||||
@apply bg-black cursor-pointer border border-gray-500 rounded-full w-10 h-10 flex justify-center items-center hover:bg-green-600 transition;
|
@apply cursor-pointer border border-gray-500 rounded-full w-10 h-10 flex justify-center items-center hover:bg-green-600 transition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-2
@@ -20,6 +20,7 @@ let state = {
|
|||||||
text: "hello",
|
text: "hello",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
play: false,
|
||||||
isPlay: false,
|
isPlay: false,
|
||||||
playMusic: {} as SongResult,
|
playMusic: {} as SongResult,
|
||||||
playMusicUrl: "",
|
playMusicUrl: "",
|
||||||
@@ -29,13 +30,17 @@ let mutations = {
|
|||||||
setMenus(state: any, menus: any[]) {
|
setMenus(state: any, menus: any[]) {
|
||||||
state.menus = menus;
|
state.menus = menus;
|
||||||
},
|
},
|
||||||
setPlay(state: any, playMusic: SongResult) {
|
async setPlay(state: any, playMusic: SongResult) {
|
||||||
state.playMusic = playMusic;
|
state.playMusic = playMusic;
|
||||||
state.playMusicUrl = getSongUrl(playMusic.id);
|
state.playMusicUrl = await getSongUrl(playMusic.id);
|
||||||
|
state.play = true;
|
||||||
},
|
},
|
||||||
setIsPlay(state: any, isPlay: boolean) {
|
setIsPlay(state: any, isPlay: boolean) {
|
||||||
state.isPlay = isPlay;
|
state.isPlay = isPlay;
|
||||||
},
|
},
|
||||||
|
setPlayMusic(state: any, play: boolean) {
|
||||||
|
state.play = play;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const getSongUrl = async (id: number) => {
|
const getSongUrl = async (id: number) => {
|
||||||
|
|||||||
@@ -10,3 +10,14 @@ export const setAnimationClass = (type: String) => {
|
|||||||
export const setAnimationDelay = (index: number = 6, time: number = 50) => {
|
export const setAnimationDelay = (index: number = 6, time: number = 50) => {
|
||||||
return "animation-delay:" + index * time + "ms";
|
return "animation-delay:" + index * time + "ms";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//将秒转换为分钟和秒
|
||||||
|
export const secondToMinute = (s: number) => {
|
||||||
|
let minute: number = Math.floor(s / 60);
|
||||||
|
let second: number = Math.floor(s % 60);
|
||||||
|
let minuteStr: string =
|
||||||
|
minute > 9 ? minute.toString() : "0" + minute.toString();
|
||||||
|
let secondStr: string =
|
||||||
|
second > 9 ? second.toString() : "0" + second.toString();
|
||||||
|
return minuteStr + ":" + secondStr;
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user