mirror of
https://github.com/Megghy/vtsuru.live.git
synced 2025-12-06 18:36:55 +08:00
queue add danmaku content
This commit is contained in:
@@ -543,6 +543,7 @@ export interface ResponseQueueModel {
|
|||||||
status: QueueStatus
|
status: QueueStatus
|
||||||
from: QueueFrom
|
from: QueueFrom
|
||||||
giftPrice?: number
|
giftPrice?: number
|
||||||
|
content?: string
|
||||||
user?: DanmakuUserInfo
|
user?: DanmakuUserInfo
|
||||||
createAt: number
|
createAt: number
|
||||||
finishAt?: number | null
|
finishAt?: number | null
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { FeedbackStatus, FeedbackType, ResponseFeedbackModel } from '@/api/api-models'
|
import { FeedbackStatus, FeedbackType, ResponseFeedbackModel } from '@/api/api-models'
|
||||||
import { NCard, NTag, NEllipsis, NDivider, NSpin, NText, NSpace, NTooltip, NTime } from 'naive-ui'
|
import { NCard, NTag, NEllipsis, NDivider, NSpin, NText, NSpace, NTooltip, NTime, NFlex } from 'naive-ui'
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
@@ -9,7 +9,7 @@ defineProps<{
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<NCard v-bind:key="item.createAt" size="small" embedded style="min-width: 300px; max-width: 500px">
|
<NCard v-bind:key="item.createAt" size="small" embedded style="width: 400px; height: 150px">
|
||||||
<template #header>
|
<template #header>
|
||||||
<NTag v-if="item.status == FeedbackStatus.Padding" :bordered="false"> 等待 </NTag>
|
<NTag v-if="item.status == FeedbackStatus.Padding" :bordered="false"> 等待 </NTag>
|
||||||
<NTag v-else-if="item.status == FeedbackStatus.Progressing" type="success">
|
<NTag v-else-if="item.status == FeedbackStatus.Progressing" type="success">
|
||||||
@@ -77,14 +77,20 @@ defineProps<{
|
|||||||
其他
|
其他
|
||||||
</NTag>
|
</NTag>
|
||||||
</template>
|
</template>
|
||||||
{{ item.message }}
|
<NFlex justify="space-between" align="center" style="height: 100%;">
|
||||||
|
<NEllipsis :line-clamp="item.replyMessage ? 1 : 3">
|
||||||
|
{{ item.message }}
|
||||||
|
</NEllipsis>
|
||||||
|
</NFlex>
|
||||||
<template v-if="item.replyMessage" #footer>
|
<template v-if="item.replyMessage" #footer>
|
||||||
<NDivider style="margin: 0px 0 10px 0" />
|
<NDivider style="margin: 0px 0 10px 0" />
|
||||||
<NSpace align="center" :wrap="false">
|
<NSpace align="center" :wrap="false">
|
||||||
<div :style="`border-radius: 4px; background-color: #75c37f; width: 10px; height: 15px`"></div>
|
<div :style="`border-radius: 4px; background-color: #75c37f; width: 10px; height: 15px`"></div>
|
||||||
<NText>
|
<NEllipsis :line-clamp="1">
|
||||||
{{ item.replyMessage }}
|
<NText>
|
||||||
</NText>
|
{{ item.replyMessage }}
|
||||||
|
</NText>
|
||||||
|
</NEllipsis>
|
||||||
</NSpace>
|
</NSpace>
|
||||||
</template>
|
</template>
|
||||||
</NCard>
|
</NCard>
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import {
|
|||||||
import { computed, h, onMounted, ref } from 'vue'
|
import { computed, h, onMounted, ref } from 'vue'
|
||||||
import PointUserDetailCard from './PointUserDetailCard.vue'
|
import PointUserDetailCard from './PointUserDetailCard.vue'
|
||||||
import { Info24Filled } from '@vicons/fluent'
|
import { Info24Filled } from '@vicons/fluent'
|
||||||
|
import { objectsToCSV } from '@/Utils'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
goods: ResponsePointGoodModel[]
|
goods: ResponsePointGoodModel[]
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { useRoute } from 'vue-router'
|
|||||||
import { Vue3Marquee } from 'vue3-marquee'
|
import { Vue3Marquee } from 'vue3-marquee'
|
||||||
import { NCard, NDivider, NEmpty, NSpace, NText, useMessage } from 'naive-ui'
|
import { NCard, NDivider, NEmpty, NSpace, NText, useMessage } from 'naive-ui'
|
||||||
import { List } from 'linqts'
|
import { List } from 'linqts'
|
||||||
|
import { isSameDay } from 'date-fns'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
id?: number
|
id?: number
|
||||||
@@ -63,7 +64,10 @@ const activeItems = computed(() => {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case QueueSortType.FansMedalFirst: {
|
case QueueSortType.FansMedalFirst: {
|
||||||
list = list.OrderByDescending(q => q.user?.fans_medal_wearing_status ? 1 : 0).ThenByDescending((q) => q.user?.fans_medal_level ?? 0).ThenBy((q) => q.createAt)
|
list = list
|
||||||
|
.OrderByDescending((q) => (q.user?.fans_medal_wearing_status ? 1 : 0))
|
||||||
|
.ThenByDescending((q) => q.user?.fans_medal_level ?? 0)
|
||||||
|
.ThenBy((q) => q.createAt)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -198,7 +202,7 @@ onUnmounted(() => {
|
|||||||
</p>
|
</p>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<NDivider v-if="isMoreThanContainer" class="queue-footer-divider" style="margin: 10px 0 10px 0" />
|
<NDivider v-if="isMoreThanContainer" class="queue-footer-divider" style="margin: 10px 0 10px 0" />
|
||||||
</Vue3Marquee>
|
</Vue3Marquee>
|
||||||
</template>
|
</template>
|
||||||
<div v-else style="position: relative; top: 20%">
|
<div v-else style="position: relative; top: 20%">
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ const queue = computed(() => {
|
|||||||
: q?.user?.name.toLowerCase() == filterName.value.toLowerCase()),
|
: q?.user?.name.toLowerCase() == filterName.value.toLowerCase()),
|
||||||
)
|
)
|
||||||
.Where((q) => (q?.status ?? QueueStatus.Cancel) < QueueStatus.Finish)
|
.Where((q) => (q?.status ?? QueueStatus.Cancel) < QueueStatus.Finish)
|
||||||
//.OrderByDescending((q) => q.from == QueueFrom.Manual)
|
//.OrderByDescending((q) => q.from == QueueFrom.Manual)
|
||||||
switch (settings.value.sortType) {
|
switch (settings.value.sortType) {
|
||||||
case QueueSortType.TimeFirst: {
|
case QueueSortType.TimeFirst: {
|
||||||
list = list.OrderBy((q) => q.createAt)
|
list = list.OrderBy((q) => q.createAt)
|
||||||
@@ -173,7 +173,10 @@ const queue = computed(() => {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case QueueSortType.FansMedalFirst: {
|
case QueueSortType.FansMedalFirst: {
|
||||||
list = list.OrderByDescending(q => q.user?.fans_medal_wearing_status ? 1 : 0).ThenByDescending((q) => q.user?.fans_medal_level ?? 0).ThenBy((q) => q.createAt)
|
list = list
|
||||||
|
.OrderByDescending((q) => (q.user?.fans_medal_wearing_status ? 1 : 0))
|
||||||
|
.ThenByDescending((q) => q.user?.fans_medal_level ?? 0)
|
||||||
|
.ThenBy((q) => q.createAt)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -909,6 +912,22 @@ onUnmounted(() => {
|
|||||||
</template>
|
</template>
|
||||||
<NTime :time="queueData.createAt" />
|
<NTime :time="queueData.createAt" />
|
||||||
</NTooltip>
|
</NTooltip>
|
||||||
|
|
||||||
|
<NTooltip v-if="queueData.content" content-style="margin: 0">
|
||||||
|
<template #trigger>
|
||||||
|
<NText strong style="font-size: 18px">
|
||||||
|
<NIcon :component="Info24Filled" />
|
||||||
|
</NText>
|
||||||
|
</template>
|
||||||
|
<NCard size="small" :bordered="false">
|
||||||
|
<template #header>
|
||||||
|
<span style="font-size: small; color: gray;">
|
||||||
|
{{ '来自' + (queueData?.from == QueueFrom.Gift ? '礼物' : '弹幕') + ': ' }}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
{{ queueData?.content }}
|
||||||
|
</NCard>
|
||||||
|
</NTooltip>
|
||||||
</NSpace>
|
</NSpace>
|
||||||
<NSpace justify="end" align="center">
|
<NSpace justify="end" align="center">
|
||||||
<NTooltip>
|
<NTooltip>
|
||||||
|
|||||||
Reference in New Issue
Block a user