style(春节活动页面): 新增弹窗和充值信息展示,并修复两个弹窗同时存在的问题

This commit is contained in:
hzj 2026-02-11 17:13:29 +08:00
parent 5311d89076
commit 951ed222a4
6 changed files with 282 additions and 32 deletions

View File

@ -28,6 +28,7 @@ export const useSpringFestival = defineStore('springFestival', {
myRechargeRanking: {}, // 我的充值排名
// 充值奖池模块
myRechargeRecode: {}, // 我的充值记录
RechargeRewards: {}, // 充值奖池
resultShow: false,
@ -43,7 +44,8 @@ export const useSpringFestival = defineStore('springFestival', {
checkDate: '', // 对应几号
checkStatus: false, // 是否已看过
helpShow: false, // 帮助展示
earningsHelpShow: false, // 收益help展示
rechargeHelpShow: false, // 充值help展示
}),
actions: {
// 重置除了checkDate和checkStatus的属性

View File

@ -236,6 +236,7 @@ const {
myRechargeRanking, //
//
myRechargeRecode, //
RechargeRewards, //
resultShow,
@ -247,7 +248,8 @@ const {
receiveRecordShow,
receiveRecord, //
helpShow, //
earningsHelpShow, // help
rechargeHelpShow, // help
} = storeToRefs(springFestivalStore)
const langStore = useLangStore()

View File

@ -112,6 +112,7 @@ const {
myRechargeRanking, //
//
myRechargeRecode, //
RechargeRewards, //
resultShow,
@ -123,7 +124,8 @@ const {
receiveRecordShow,
receiveRecord, //
helpShow, //
earningsHelpShow, // help
rechargeHelpShow, // help
} = storeToRefs(springFestivalStore)
const langStore = useLangStore()

View File

@ -1,5 +1,98 @@
<template>
<div style="display: flex; flex-direction: column; gap: 2vw">
<!-- 个人充值信息 -->
<itemCenter
style="z-index: 0"
:imgUrl="imageUrl('earningInfoBg')"
:flip="true"
:contentStyle="`inset:11vw 10vw 9vw 9vw;justify-content: space-between;gap: 10vw;`"
>
<!-- 头像 -->
<img
v-smart-img
:src="myRechargeRecode?.userAvatar || ''"
alt=""
style="
position: relative;
z-index: -1;
width: 23vw;
min-width: 0;
border-radius: 50%;
aspect-ratio: 1/1;
object-fit: cover;
"
@error="handleAvatarImageError"
/>
<!-- 基本信息 -->
<div
style="
position: relative;
flex: 1;
min-width: 0;
height: 80%;
display: flex;
flex-direction: column;
justify-content: center;
gap: 1vw;
"
>
<!-- 充值帮助按钮 -->
<img
v-smart-img
src="/src/assets/icon/helpWhite.png"
alt=""
class="ruleBt"
@click="openPopup('rechargeHelp')"
/>
<!-- 名称 -->
<div
style="
max-width: 70%;
min-width: 0;
font-weight: 500;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
"
>
{{ myRechargeRecode?.userName || '' }}
</div>
<!-- 账号 -->
<div>{{ $t('user_id_prefix') }} {{ myRechargeRecode?.account }}</div>
<!-- 总充值 -->
<div style="display: flex; justify-content: space-between; align-items: center">
<div>
{{ t('Accumulated recharge') }}:${{
formatRechargeAmount(myRechargeRecode?.totalAmount)
}}
</div>
<img
v-show="rechargehidden"
v-smart-img
:src="imageUrl('rechargeNumHidden')"
alt=""
style="width: 5vw; display: block; object-fit: cover"
@click="rechargehidden = !rechargehidden"
/>
<img
v-show="!rechargehidden"
v-smart-img
:src="imageUrl('rechargeNumShow')"
alt=""
style="width: 5vw; display: block; object-fit: cover"
@click="rechargehidden = !rechargehidden"
/>
</div>
</div>
</itemCenter>
<itemCenter
v-for="(rewardsTop, index) in RechargeRewards"
style=""
@ -72,6 +165,13 @@
align-items: center;
"
>
<img
v-if="rewardsTop.claimStatus == -1"
class="grayscale-container"
:src="imageUrl('receiveBt')"
alt=""
style="width: 40vw; display: block; object-fit: cover"
/>
<img
v-if="rewardsTop.claimStatus == 0"
:src="imageUrl('receiveBt')"
@ -80,9 +180,8 @@
@click="receiveReward(rewardsTop)"
/>
<img
v-else
class="grayscale-container"
:src="imageUrl('receiveBt')"
v-if="rewardsTop.claimStatus == 1"
:src="imageUrl('receivedBt')"
alt=""
style="width: 40vw; display: block; object-fit: cover"
/>
@ -128,12 +227,15 @@ const {
//
lotteryRewards, //
tickets, //
luckyUsers, //
userInfo, //
userIdentity, //
currentEarnings, //
selectedPayee, //
taskList, //
//
lotteryPageNo, //
lotteryRanking, //
addLotteryRanking, //
myLotteryRanking, //
@ -142,11 +244,13 @@ const {
rankingRewards, //
//
rechargePageNo, //
rechargeRanking, //
addRechargeRanking, //
myRechargeRanking, //
//
myRechargeRecode, //
RechargeRewards, //
resultShow,
@ -158,7 +262,12 @@ const {
receiveRecordShow,
receiveRecord, //
helpShow, //
taskListShow, //
checkDate, //
checkStatus, //
earningsHelpShow, // help
rechargeHelpShow, // help
} = storeToRefs(springFestivalStore)
const langStore = useLangStore()
@ -175,6 +284,18 @@ const getImgName = (filename) => {
return currentLangType.value === 'ar' ? `filename_ar` : filename
}
const rechargehidden = ref(true) //
//
const formatRechargeAmount = (amount) => {
if (rechargehidden.value) {
// *
return String(amount || '0').replace(/\d/g, '*')
} else {
//
return amount || '0'
}
}
const topImg = ref([
imageUrl('rechargeReward100'),
imageUrl('rechargeReward500'),
@ -199,6 +320,54 @@ const rewardContentLayer = (index) => {
}
}
//
const openPopup = (type) => {
switch (type) {
case 'result':
closedPopup() //
resultShow.value = true
break
case 'drawRecord':
closedPopup() //
drawRecordShow.value = true
break
case 'receiveRecord':
closedPopup() //
receiveRecordShow.value = true
break
case 'earningsHelp':
closedPopup() //
earningsHelpShow.value = true
break
case 'rechargeHelp':
closedPopup() //
rechargeHelpShow.value = true
break
case 'taskList':
closedPopup() //
taskListShow.value = true
break
default:
closedPopup() //
break
}
}
//
const closedPopup = () => {
if (taskListShow.value) {
checkStatus.value = true
}
resultShow.value = false
drawRecordShow.value = false
receiveRecordShow.value = false
earningsHelpShow.value = false
rechargeHelpShow.value = false
taskListShow.value = false
}
//
const receiveReward = async (rewards) => {
let data = {
@ -348,6 +517,23 @@ onUnmounted(() => {})
}
}
.ruleBt {
width: 4vw;
min-width: 0;
display: block;
aspect-ratio: 1/1;
object-fit: cover;
position: absolute;
top: 0;
right: 0;
}
[dir='rtl'] .ruleBt {
left: 0;
right: auto;
}
.grayscale-container {
filter: grayscale(100%) brightness(90%);
}

View File

@ -259,7 +259,7 @@
src="/src/assets/icon/helpWhite.png"
alt=""
class="ruleBt"
@click="openPopup('help')"
@click="openPopup('earningsHelp')"
/>
<!-- 名称 -->
@ -717,6 +717,7 @@ const {
myRechargeRanking, //
//
myRechargeRecode, //
RechargeRewards, //
resultShow,
@ -730,7 +731,8 @@ const {
taskListShow, //
helpShow, //
earningsHelpShow, // help
rechargeHelpShow, // help
} = storeToRefs(springFestivalStore)
const langStore = useLangStore()
@ -823,29 +825,52 @@ const drawerShowBt = (type) => {
selectedCoin.value = null
}
//
//
const openPopup = (type) => {
switch (type) {
case 'result':
closedPopup() //
resultShow.value = true
break
case 'history':
case 'drawRecord':
closedPopup() //
drawRecordShow.value = true
break
case 'help':
helpShow.value = true
case 'receiveRecord':
closedPopup() //
receiveRecordShow.value = true
break
case 'earningsHelp':
closedPopup() //
earningsHelpShow.value = true
break
case 'rechargeHelp':
closedPopup() //
rechargeHelpShow.value = true
break
case 'taskList':
closedPopup() //
taskListShow.value = true
break
default:
closedPopup() //
break
}
}
//
const closedPopup = (clear = true) => {
resultShow.value = false
helpShow.value = false
helpShow.value = false
//
if (clear) {
const closedPopup = () => {
if (taskListShow.value) {
checkStatus.value = true
}
resultShow.value = false
drawRecordShow.value = false
receiveRecordShow.value = false
earningsHelpShow.value = false
rechargeHelpShow.value = false
taskListShow.value = false
}
//

View File

@ -587,11 +587,21 @@
</itemCenter>
</itemCenter>
<!-- help弹窗 -->
<!-- 收益help弹窗 -->
<img
v-smart-img
v-show="helpShow"
:src="imageUrl(getImgName('helpInfo'))"
v-show="earningsHelpShow"
:src="imageUrl(getImgName('earningsHelpInfo'))"
alt=""
style="display: block; width: 100%; object-fit: cover; margin-bottom: 6vw"
@click.stop
/>
<!-- 充值help弹窗 -->
<img
v-smart-img
v-show="rechargeHelpShow"
:src="imageUrl(getImgName('rechargeHelpInfo'))"
alt=""
style="display: block; width: 100%; object-fit: cover; margin-bottom: 6vw"
@click.stop
@ -631,6 +641,7 @@ import {
apigetRewardConfigs, // .
winnerHistory, //
withdrawableAmount, //
myRecharge, //
} from '@/api/lottery'
import Task from './Task.vue'
@ -673,6 +684,7 @@ const {
myRechargeRanking, //
//
myRechargeRecode, //
RechargeRewards, //
resultShow,
@ -688,7 +700,8 @@ const {
checkDate, //
checkStatus, //
helpShow, //
earningsHelpShow, // help
rechargeHelpShow, // help
} = storeToRefs(springFestivalStore)
const langStore = useLangStore()
@ -837,7 +850,8 @@ const maskLayerShow = computed(() => {
drawRecordShow.value ||
receiveRecordShow.value ||
taskListShow.value ||
helpShow.value
earningsHelpShow.value ||
rechargeHelpShow.value
)
})
@ -848,7 +862,8 @@ const centerPopupShow = computed(() => {
drawRecordShow.value ||
receiveRecordShow.value ||
taskListShow.value ||
helpShow.value
earningsHelpShow.value ||
rechargeHelpShow.value
)
})
@ -860,14 +875,14 @@ const checkShow = () => {
if (dailyDate != checkDate.value) {
checkDate.value = dailyDate //
checkStatus.value = false //
showPopup('taskList')
openPopup('taskList')
} else if (!checkStatus.value) {
showPopup('taskList')
openPopup('taskList')
}
}
//
const showPopup = (type) => {
const openPopup = (type) => {
switch (type) {
case 'result':
closedPopup() //
@ -881,9 +896,13 @@ const showPopup = (type) => {
closedPopup() //
receiveRecordShow.value = true
break
case 'help':
case 'earningsHelp':
closedPopup() //
helpShow.value = true
earningsHelpShow.value = true
break
case 'rechargeHelp':
closedPopup() //
rechargeHelpShow.value = true
break
case 'taskList':
closedPopup() //
@ -905,8 +924,9 @@ const closedPopup = () => {
resultShow.value = false
drawRecordShow.value = false
receiveRecordShow.value = false
earningsHelpShow.value = false
rechargeHelpShow.value = false
taskListShow.value = false
helpShow.value = false
}
//
@ -1224,6 +1244,16 @@ const getRechargeReward = async () => {
}
}
//
const getMyRecharge = async () => {
const resMyRecharge = await myRecharge('2007771533988204888')
if (resMyRecharge.status && resMyRecharge.body) {
myRechargeRecode.value = resMyRecharge.body
} else {
myRechargeRecode.value = {}
}
}
//
const initData = async () => {
await Promise.all([
@ -1243,6 +1273,7 @@ const initData = async () => {
getGameReward(), //
getRechargeReward(), //
getMyRecharge(), //
])
}
@ -1318,7 +1349,8 @@ const preloadOtherImages = async () => {
imageUrl('recordBg'),
// help
imageUrl(getImgName('helpInfo')),
imageUrl(getImgName('earningsHelpInfo')), // help
imageUrl(getImgName('rechargeHelpInfo')), // help
//
imageUrl('lotteryBg'),
@ -1342,6 +1374,7 @@ const preloadOtherImages = async () => {
//
imageUrl('receiveBt'),
imageUrl('receivedBt'),
imageUrl('rechargeReward100'),
imageUrl('rechargeReward500'),
imageUrl('rechargeReward1000'),