Browse Source

当抽奖用户都抽完的时候,会弹出卡牌,展示恭喜所有中奖用户

wangyi/feature-20250710191445-抽奖
Ethereal 1 week ago
parent
commit
da797abe76
  1. 125
      src/views/choujiang/index.vue

125
src/views/choujiang/index.vue

@ -18,6 +18,11 @@
<p class="modal-text">{{ modalConfig.text }}</p>
</div>
</div>
<div v-if="yonghuyichouwan" class="yonghuyichouwan-modal">
<div class="yonghuyichouwan-modal-content">
<p class="yonghuyichouwan-modal-text">恭喜所有中奖用户</p>
</div>
</div>
<!-- <UserList
:lucky-users="
@ -179,6 +184,7 @@ const playing = ref(false);
const musicSrc1 = musicFile1;
const audioRef1 = ref(null);
const playing1 = ref(false);
const yonghuyichouwan = ref(false);
async function toggleMusic() {
if (!audioRef.value) return;
@ -319,7 +325,10 @@ async function handleLotteryClick() {
if(res.data.round === false && res.data.data.length === 0){
isDisabled.value = true;
console.log("isDisabled.value是", isDisabled.value);
showModal("用户已抽完",100000);
// showModal("",100000);
yonghuyichouwan.value = true;
break;
}
@ -480,4 +489,118 @@ function handleNextPrize() {
opacity: 0;
}
}
/* 用户已抽完弹窗样式 - 从下方飞入到中央 */
.yonghuyichouwan-modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
z-index: 10000;
background: rgba(0, 0, 0, 0.7);
animation: modalFadeIn 0.5s ease-out;
}
.yonghuyichouwan-modal-content {
background: linear-gradient(135deg, #e68907 0%, #b01717 100%);
border-radius: 20px;
padding: 40px 60px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
text-align: center;
min-width: 800px;
min-height: 600px;
display: flex;
align-items: center;
justify-content: center;
animation: cardFlyIn 0.8s ease-out;
border: 3px solid #fff;
position: relative;
overflow: hidden;
}
.yonghuyichouwan-modal-content::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.1) 50%, transparent 70%);
animation: shimmer 2s infinite;
}
.yonghuyichouwan-modal-text {
color: #fbff11;
font-size: 80px;
font-weight: bold;
margin: 0;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
position: relative;
z-index: 1;
}
/* 弹窗淡入动画 */
@keyframes modalFadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* 卡牌从下方飞入动画 */
@keyframes cardFlyIn {
0% {
transform: translateY(100vh) scale(0.3);
opacity: 0;
}
50% {
transform: translateY(-20px) scale(1.1);
opacity: 0.8;
}
100% {
transform: translateY(0) scale(1);
opacity: 1;
}
}
/* 闪光效果 */
@keyframes shimmer {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
/* 响应式设计 */
@media (max-width: 768px) {
.yonghuyichouwan-modal-content {
min-width: 300px;
min-height: 150px;
padding: 30px 40px;
}
.yonghuyichouwan-modal-text {
font-size: 24px;
}
}
@media (max-width: 480px) {
.yonghuyichouwan-modal-content {
min-width: 250px;
min-height: 120px;
padding: 20px 30px;
}
.yonghuyichouwan-modal-text {
font-size: 20px;
}
}
</style>
Loading…
Cancel
Save