diff --git a/src/store/useOBSNotification.ts b/src/store/useOBSNotification.ts index 63d1bd3..7a10044 100644 --- a/src/store/useOBSNotification.ts +++ b/src/store/useOBSNotification.ts @@ -44,32 +44,30 @@ export const useOBSNotification = defineStore('obs-notification', () => { } function showNotification(payload: ObsNotificationPayload) { - const notification = window.$notification - if (!notification) { - console.warn('[OBS] notification instance missing') + const message = window.$message + if (!message) { + console.warn('[OBS] message instance missing') return } console.log('[OBS] 收到通知', payload) const method = payload.Type === 'success' ? 'success' : 'error' const title = resolveTitle(payload) - const description = payload.Message || '未知通知' const meta = resolveMeta(payload) + const prefix = [title, meta].filter(Boolean).join(' · ') + const description = payload.Message || '未知通知' + const finalContent = prefix ? `${prefix}\n${description}` : description - if (typeof notification[method] === 'function') { - notification[method]({ - title: payload.Type === 'success' ? '成功' : `失败`, - description, - duration: method === 'error' ? 8000 : 5000, - keepAliveOnHover: true, + if (typeof message[method] === 'function') { + message[method](finalContent, { + duration: method === 'error' ? 6000 : 4000, + closable: true, }) } else { - notification.create({ - title: payload.Type === 'success' ? '成功' : `失败`, - content: description, - duration: method === 'error' ? 8000 : 5000, - keepAliveOnHover: true, + message.create(finalContent, { type: method, + duration: method === 'error' ? 6000 : 4000, + closable: true, }) } } diff --git a/src/views/manage/point/PointManage.vue b/src/views/manage/point/PointManage.vue index 65c7464..2272f95 100644 --- a/src/views/manage/point/PointManage.vue +++ b/src/views/manage/point/PointManage.vue @@ -68,6 +68,7 @@ import { copyToClipboard } from '@/Utils' import PointOrderManage from './PointOrderManage.vue' import PointSettings from './PointSettings.vue' import PointUserManage from './PointUserManage.vue' +import PointTestPanel from './PointTestPanel.vue' const message = useMessage() const accountInfo = useAccount() @@ -734,6 +735,15 @@ onMounted(() => { }) > + + + + + diff --git a/src/views/manage/point/PointTestPanel.vue b/src/views/manage/point/PointTestPanel.vue new file mode 100644 index 0000000..19ecbed --- /dev/null +++ b/src/views/manage/point/PointTestPanel.vue @@ -0,0 +1,331 @@ + + + + + diff --git a/src/views/obs/live-request/MinimalRequestOBS.vue b/src/views/obs/live-request/MinimalRequestOBS.vue index dcaab81..d80bb89 100644 --- a/src/views/obs/live-request/MinimalRequestOBS.vue +++ b/src/views/obs/live-request/MinimalRequestOBS.vue @@ -172,6 +172,39 @@ onUnmounted(() => { description="暂无人点歌" /> +
+
+
+ 前缀 + {{ settings.orderPrefix || '-' }} +
+
+ 允许 + {{ settings.allowAllDanmaku ? '所有弹幕' : allowGuardTypes.length > 0 ? allowGuardTypes.join('/') : '无' }} +
+
+
+
+ SC + {{ settings.allowSC ? `≥ ¥${settings.scMinPrice}` : '不允许' }} +
+
+ 粉丝牌 + + {{ + settings.needWearFanMedal + ? settings.fanMedalMinLevel > 0 + ? `≥ ${settings.fanMedalMinLevel}级` + : '需佩戴' + : '无需' + }} + +
+
+
@@ -370,4 +403,50 @@ onUnmounted(() => { .minimal-list-inner.animating:hover { animation-play-state: paused; } + +.minimal-requirements { + margin-top: 6px; + padding: 4px 4px 0; + display: flex; + flex-direction: column; + gap: 4px; + font-size: 11px; + color: #e2e8f0; + text-shadow: 0 2px 6px rgba(0, 0, 0, 0.85); +} + +.minimal-requirements-row { + display: flex; + gap: 8px; +} + +.minimal-requirements-tag { + flex: 1; + min-width: 0; + display: inline-flex; + align-items: center; + gap: 4px; + padding: 3px 8px; + border-radius: 999px; + background: rgba(0, 0, 0, 0.35); + backdrop-filter: blur(2px); +} + +.tag-label { + font-size: 10px; + letter-spacing: 0.08em; + color: rgba(226, 232, 240, 0.75); + text-transform: uppercase; + opacity: 0.8; +} + +.tag-value { + margin-top: 0; + font-size: 12px; + font-weight: 600; + color: #e2e8f0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/src/views/open_live/LiveRequest.vue b/src/views/open_live/LiveRequest.vue index fd8480c..f34a6b8 100644 --- a/src/views/open_live/LiveRequest.vue +++ b/src/views/open_live/LiveRequest.vue @@ -151,19 +151,43 @@ onUnmounted(() => {