diff --git a/src/components/SongList.vue b/src/components/SongList.vue index 09fb952..8b7f142 100644 --- a/src/components/SongList.vue +++ b/src/components/SongList.vue @@ -1,15 +1,20 @@ + - + + + - + + + + + - - 共 {{ songsComputed.length }} 首 - - + + + + + 共 {{ songsComputed.length }} / {{ songsInternal.length }} 首 + + + + 批量操作 ({{ selectedColumn.length }}) + + + + + + volume = newVol" + @close="playingSong = undefined" /> - + - - - 批量编辑 - - - + + + - - 修改信息 - + + + + + + - 点歌设置 - + 点歌要求 + - + - 这个不是控制是否允许点歌的! 启用后将会覆盖点歌功能中的设置, 用于单独设置歌曲要求 + 启用后将覆盖全局点歌设置,用于单独设置歌曲要求。不启用则遵循全局设置。 + { - updateSongModel.options = checked - ? ({ - needJianzhang: false, - needTidu: false, - needZongdu: false, - } as SongRequestOption) - : undefined - } - " + updateSongModel.options = checked ? { + needJianzhang: false, + needTidu: false, + needZongdu: false, + scMinPrice: undefined, + fanMedalMinLevel: undefined, + } : undefined; // 使用 undefined 表示禁用 + }" > - 是否启用 + 启用独立要求 - + + - - 需要舰长 + + 舰长 - - 需要提督 + + 提督 - - 需要总督 + + 总督 { - if (updateSongModel.options) updateSongModel.options.scMinPrice = checked ? 30 : undefined - } - " + :checked="updateSongModel.options!.scMinPrice != null" + @update:checked="(checked: boolean) => updateSongModel.options!.scMinPrice = checked ? 30 : undefined" > - 需要SC + SC点歌 - SC最低价格 + + 最低 + + + 元 + { - if (updateSongModel.options) updateSongModel.options.fanMedalMinLevel = checked ? 5 : undefined - } - " + :checked="updateSongModel.options!.fanMedalMinLevel != null" + @update:checked="(checked: boolean) => updateSongModel.options!.fanMedalMinLevel = checked ? 1 : undefined" > - 需要粉丝牌 - + 粉丝牌 + - + - 这个即使不开也会遵循全局点歌设置的粉丝牌等级 + 启用此项会覆盖全局粉丝牌等级要求。 - 最低等级 + + 最低 + + + 级 + + + + + + + 非自定义来源的歌曲链接通常无法修改。 + - - - 更新 - + + + + + 取消 + + + 确认更新 + + + + + - + + - + 确定要删除选中的 {{ selectedColumn.length }} 首歌曲吗?此操作不可恢复。 + + - - 批量删除 + + 执行删除 - 确定删除 {{ selectedColumn.length }} 首曲目吗? + 确认执行批量删除操作? + - 更新 + 更新选中歌曲作者 + - 更新 + 更新选中歌曲标签 + - 更新 + 更新选中歌曲语言 + { - batchUpdate_Option = checked - ? ({ - needJianzhang: false, - needTidu: false, - needZongdu: false, - } as SongRequestOption) - : undefined - } - " + batchUpdate_Option = checked ? { + needJianzhang: false, + needTidu: false, + needZongdu: false, + scMinPrice: undefined, + fanMedalMinLevel: undefined, + } : undefined; + }" > - 是否启用 + 启用/禁用独立要求 (将覆盖原有设置) - + - - 需要舰长 + + 舰长 - - 需要提督 + + 提督 - - 需要总督 + + 总督 { - if (batchUpdate_Option) batchUpdate_Option.scMinPrice = checked ? 30 : undefined - } - " + :checked="batchUpdate_Option!.scMinPrice != null" + @update:checked="(checked: boolean) => batchUpdate_Option!.scMinPrice = checked ? 30 : undefined" > - 需要SC + SC点歌 - SC最低价格 + + 最低 + + + 元 + { - if (batchUpdate_Option) batchUpdate_Option.fanMedalMinLevel = checked ? 5 : undefined - } - " + :checked="batchUpdate_Option!.fanMedalMinLevel != null" + @update:checked="(checked: boolean) => batchUpdate_Option!.fanMedalMinLevel = checked ? 1 : undefined" > - 需要粉丝牌 - - - - - 这个即使不开也会遵循全局点歌设置的粉丝牌等级 - + 粉丝牌 - 最低等级 + + 最低 + + + 级 + - 更新 + 更新选中歌曲要求 - + + \ No newline at end of file diff --git a/src/components/SongPlayer.vue b/src/components/SongPlayer.vue index 7a1efdd..60324ff 100644 --- a/src/components/SongPlayer.vue +++ b/src/components/SongPlayer.vue @@ -11,7 +11,7 @@ const props = defineProps<{ song: SongsInfo | undefined isLrcLoading?: string }>() -const emits = defineEmits(['update:isLrcLoading']) +const emits = defineEmits(['update:isLrcLoading', 'update:close', 'update:volume']) const aplayerMusic = ref({ title: '', diff --git a/src/views/OBSLayout.vue b/src/views/OBSLayout.vue index 0e2440e..35b4b94 100644 --- a/src/views/OBSLayout.vue +++ b/src/views/OBSLayout.vue @@ -5,6 +5,8 @@ import { onMounted, onUnmounted, ref } from 'vue' const timer = ref() const visible = ref(true) const active = ref(true) + +const originalBackgroundColor = ref('') onMounted(() => { timer.value = setInterval(() => { if (!visible.value || !active.value) return @@ -22,9 +24,21 @@ onMounted(() => { active.value = a } } + // 使 .n-layout-content 背景透明 + const layoutContent = document.querySelector('.n-layout-content'); + if (layoutContent instanceof HTMLElement) { + originalBackgroundColor.value = layoutContent.style.backgroundColor + layoutContent.style.setProperty('background-color', 'transparent'); + } }) + onUnmounted(() => { clearInterval(timer.value) + // 还原 .n-layout-content 背景颜色 + const layoutContent = document.querySelector('.n-layout-content'); + if (layoutContent instanceof HTMLElement) { + layoutContent.style.setProperty('background-color', originalBackgroundColor.value); + } }) @@ -46,9 +60,3 @@ onUnmounted(() => { - - diff --git a/src/views/OpenLiveLayout.vue b/src/views/OpenLiveLayout.vue index 4313146..e3cd0ec 100644 --- a/src/views/OpenLiveLayout.vue +++ b/src/views/OpenLiveLayout.vue @@ -1,11 +1,11 @@ + 请前往 @@ -140,177 +184,288 @@ onUnmounted(() => { > 幻星平台 | VTsuru - 并点击 获取 , 再点击 获取 H5 插件链接来获取可用链接 - - 或者直接在那个页面用也可以, 虽然并不推荐 + 获取 H5 插件链接。 + + + - - - - - {{ danmakuClient.connected ? `已连接 | ${danmakuClient.authInfo?.anchor_info?.uname}` : '未连接' }} - - (themeType = value ? ThemeType.Light : ThemeType.Dark) - " + + + + + + + + + VTsuru 开放平台 + + + + + + + + {{ $route.meta.title as string ?? '功能模块' }} + + + + + + + + + + + + {{ danmakuClient.connected ? `已连接: ${danmakuClient.authInfo?.anchor_info?.uname ?? '主播'}` : '连接中...' }} + + + - + - + - - - - VTSURU | 开放平台 - - - + + + - + + + - + + - - - - {{ danmakuClient.authInfo?.anchor_info?.uname }} - - - + {{ danmakuClient.authInfo.anchor_info.uname }} + + + + + + + - + + + - 有更多功能建议请 + 遇到问题或有建议? - 反馈 + 点此反馈 + + + {{ danmakuClientError }} - - + + + + + + + + 正在加载主播信息并连接服务... + + + + + + + - - {{ }} - - - - - + + + + + - + © {{ new Date().getFullYear() }} vtsuru.live - + - 由 VTsuru 提供支持 + + + \ No newline at end of file