From 6b087030f509e1ee3cd3389733983fb7c893e1e7 Mon Sep 17 00:00:00 2001 From: Megghy Date: Sun, 19 Nov 2023 23:29:13 +0800 Subject: [PATCH] add song request filter --- src/router/index.ts | 2 +- src/views/manage/LiveLotteryManage.vue | 22 ++++++++++++ src/views/open_live/MusicRequest.vue | 46 ++++++++++++++++++++++---- src/views/open_live/OpenLottery.vue | 2 +- 4 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 src/views/manage/LiveLotteryManage.vue diff --git a/src/router/index.ts b/src/router/index.ts index c5bfa81..d18965b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -183,7 +183,7 @@ const routes: Array = [ { path: 'live-lottery', name: 'manage-liveLottery', - component: () => import('@/views/open_live/OpenLottery.vue'), + component: () => import('@/views/manage/LiveLotteryManage.vue'), meta: { title: '直播抽奖', keepAlive: true, diff --git a/src/views/manage/LiveLotteryManage.vue b/src/views/manage/LiveLotteryManage.vue new file mode 100644 index 0000000..31f8616 --- /dev/null +++ b/src/views/manage/LiveLotteryManage.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/views/open_live/MusicRequest.vue b/src/views/open_live/MusicRequest.vue index e4a1fd9..d65c798 100644 --- a/src/views/open_live/MusicRequest.vue +++ b/src/views/open_live/MusicRequest.vue @@ -111,7 +111,17 @@ const props = defineProps<{ }>() const localActiveSongs = useStorage('SongRequest.ActiveSongs', [] as SongRequestInfo[]) -const songs = ref(await getAllSong()) +const originSongs = ref(await getAllSong()) +const songs = computed(() => { + return originSongs.value.filter((s) => { + return ( + (filterSongName.value == '' || filterSongNameContains.value + ? s.songName.toLowerCase().includes(filterSongName.value.toLowerCase()) + : s.songName.toLowerCase() == filterSongName.value.toLowerCase()) && + (filterName.value == '' || filterNameContains.value ? s.user?.name.toLowerCase().includes(filterName.value.toLowerCase()) : s.user?.name.toLowerCase() == filterName.value.toLowerCase()) + ) + }) +}) const activeSongs = computed(() => { return (accountInfo ? songs.value : localActiveSongs.value) .sort((a, b) => b.status - a.status) @@ -128,6 +138,10 @@ const historySongs = computed(() => { }) const newSongName = ref('') +const filterSongName = ref('') +const filterSongNameContains = ref(false) +const filterName = ref('') +const filterNameContains = ref(false) const defaultPrefix = useStorage('Settings.SongRequest.DefaultPrefix', '点歌') const configCanEdit = computed(() => { @@ -186,7 +200,7 @@ async function addSong(danmaku: EventModel) { .then((data) => { if (data.code == 200) { message.success(`[${danmaku.name}] 添加曲目: ${data.data.songName}`) - songs.value.unshift(data.data) + originSongs.value.unshift(data.data) } else { //message.error(`[${danmaku.name}] 添加曲目失败: ${data.message}`) const time = Date.now() @@ -237,7 +251,7 @@ async function addSongManual() { .then((data) => { if (data.code == 200) { message.success(`已手动添加曲目: ${data.data.songName}`) - activeSongs.value.unshift(data.data) + originSongs.value.unshift(data.data) newSongName.value = '' console.log(`[OPEN-LIVE-Song-Request] 已手动添加曲目: ${data.data.songName}`) } else { @@ -414,7 +428,7 @@ async function deleteSongs(values: SongRequestInfo[]) { .then((data) => { if (data.code == 200) { message.success('删除成功') - songs.value = songs.value.filter((s) => !values.includes(s)) + originSongs.value = originSongs.value.filter((s) => !values.includes(s)) } else { message.error('删除失败: ' + data.message) console.error('删除失败: ' + data.message) @@ -541,7 +555,7 @@ const columns = [ break } } - return h(NTag, { type: statusType, size: 'small' }, () => STATUS_MAP[data.status]) + return h(NTag, { type: statusType, size: 'small', style: data.status == SongRequestStatus.Singing ? 'animation: animated-border 2.5s infinite;' : '' }, () => STATUS_MAP[data.status]) }, }, { @@ -678,7 +692,7 @@ onUnmounted(() => {
- + @@ -811,6 +825,26 @@ onUnmounted(() => { + + + + 筛选曲名 + + + + + + 筛选用户 + + + + + + { :loading="isLottering" :disabled="isStartLottery || isLotteried" data-umami-event="Open-Live Use Lottery" - :data-umami-event-uid="client.roomAuthInfo.value?.anchor_info.uid" + :data-umami-event-uid="client?.roomAuthInfo?.value?.anchor_info?.uid" > 进行抽取