From 8d06903553cdb18bd113f5b88e1e5faf07b16700 Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Thu, 23 Oct 2025 10:53:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=8A=BD=E5=A5=96=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E9=A1=B5):=20=E5=AF=B9=E6=8E=A5=E8=8E=B7=E5=8F=96=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E4=B8=AD=E5=A5=96=E7=94=A8=E6=88=B7=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/lottery.js | 14 +++++++++++++- src/components/Lottery/Barrage.vue | 19 +++++++++++++------ src/views/Activities/Lottery/Lottery.vue | 17 ++++++++++++----- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/api/lottery.js b/src/api/lottery.js index 1fb4d35..c2992d7 100644 --- a/src/api/lottery.js +++ b/src/api/lottery.js @@ -70,7 +70,7 @@ export const multiDraw = async (data) => { } } -// 获取中奖记录 +// 获取我的中奖记录 export const drawRecords = async () => { try { const response = await get(`/activity/lottery/my-records`) @@ -82,6 +82,18 @@ export const drawRecords = async () => { } } +// 获取历史中奖用户 +export const winnerHistory = async () => { + try { + const response = await get(`/activity/lottery/winner-history`) + return response + } catch (error) { + console.error('Failed to fetch get winners:', error) + console.error('error:' + error.response.errorMsg) + throw error + } +} + // 获取任务列表 export const ActTaskList = async () => { try { diff --git a/src/components/Lottery/Barrage.vue b/src/components/Lottery/Barrage.vue index 03d94a6..a24171e 100644 --- a/src/components/Lottery/Barrage.vue +++ b/src/components/Lottery/Barrage.vue @@ -31,7 +31,7 @@ @animationend="handleAnimationEnd(item.id)" > - {{ item.text }} + {{ barrageText(item) }} @@ -99,6 +99,13 @@ const currentIndex = ref(0) // 计算实际显示的轨道(过滤空轨道) const visibleTracks = computed(() => tracks.value.filter((track) => track.length > 0)) +// 显示的文本 +const barrageText = (item) => { + return item.prizeType == 'GOLD' || item.prizeType == 'MONEY' + ? `${item.nickname} won ${item.prizeName}` + : `${item.nickname} won the ${item.prizeName}` +} + const defaultAvatarUrl = (e) => { console.log('头像资源出错') e.target.onerror = null //防止循环 @@ -112,16 +119,16 @@ const getBarrageStyle = (item) => ({ '--start-pos': `${item.startPos}px`, - border: item.type == 'gift' ? '0.667px solid #FFF677' : '0.667px solid #77FF87', + border: item.type != '' ? '0.667px solid #FFF677' : '0.667px solid #77FF87', background: - item.type == 'gift' + item.type != '' ? 'linear-gradient(270deg, rgba(218, 103, 2, 0.60) -16.85%, rgba(124, 41, 0, 0.60) 82.7%)' : 'linear-gradient(270deg, rgba(2, 218, 60, 0.60) -16.85%, rgba(0, 124, 54, 0.60) 82.7%)', }) // 生成随机弹幕属性 const generateBarrageProps = (item) => { - const textLength = item.text.length + const textLength = barrageText(item).length return { duration: Math.max(8 - textLength * 0.2, 5) * (100 / props.speed), startPos: Math.floor(Math.random() * 21) - 10, diff --git a/src/views/Activities/Lottery/Lottery.vue b/src/views/Activities/Lottery/Lottery.vue index 909cab9..b0ea0ba 100644 --- a/src/views/Activities/Lottery/Lottery.vue +++ b/src/views/Activities/Lottery/Lottery.vue @@ -843,6 +843,7 @@ import { drawRecords, // 获取中奖记录 ActTaskList, // 获取任务列表 receiveTickets, // 领取任务奖励 + winnerHistory, //获取历史中奖用户 } from '@/api/lottery' import Barrage from '@/components/Lottery/Barrage.vue' @@ -861,13 +862,10 @@ const images = Object.fromEntries( ) // 弹幕数据(示例) -const barrageList = ref([ - { text: 'Junge won the jackpot', type: 'gift' }, - { text: 'Junge withdrew $10', type: 'doller' }, -]) +const barrageList = ref([]) // 活动详情 -const activity = ref({}) +const activity = ref({}) //活动详情和奖池 const userInfo = ref({}) //用户信息 const userIdentity = ref({}) //用户身份 @@ -1360,6 +1358,14 @@ const getDrawRecords = async () => { } } +//获取中奖记录 +const getWinners = async () => { + const resWinners = await winnerHistory() + if (resWinners.status && resWinners.body) { + barrageList.value = resWinners.body + } +} + //获取中奖记录 const receiveTaskReward = async (code) => { let data = { @@ -1380,6 +1386,7 @@ onMounted(() => { getDrawRecords() // 获取中奖记录 getTickets() //获取拥有的抽奖券 getTaskList() //获取任务列表 + getWinners() //获取历史中奖用户 }) onUnmounted(() => {