queue add danmaku content

This commit is contained in:
2024-07-30 20:25:05 +08:00
parent 1546d0a2bd
commit 6ab0c6dba5
5 changed files with 41 additions and 10 deletions

View File

@@ -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

View File

@@ -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>
<NFlex justify="space-between" align="center" style="height: 100%;">
<NEllipsis :line-clamp="item.replyMessage ? 1 : 3">
{{ item.message }} {{ 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>
<NEllipsis :line-clamp="1">
<NText> <NText>
{{ item.replyMessage }} {{ item.replyMessage }}
</NText> </NText>
</NEllipsis>
</NSpace> </NSpace>
</template> </template>
</NCard> </NCard>

View File

@@ -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[]

View File

@@ -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
} }
} }

View File

@@ -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>