|
@ -13,21 +13,9 @@ |
|
|
<Mascot /> |
|
|
<Mascot /> |
|
|
|
|
|
|
|
|
<!-- 透明弹窗 --> |
|
|
<!-- 透明弹窗 --> |
|
|
<div v-if="showPrizeExhaustedModal" class="prize-exhausted-modal"> |
|
|
|
|
|
|
|
|
<div v-if="modalConfig.show" class="prize-exhausted-modal"> |
|
|
<div class="modal-content"> |
|
|
<div class="modal-content"> |
|
|
<p class="modal-text">该礼品已抽取完毕,请揭秘下一个礼品</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div v-if="showPrizeExhaustedModal1" class="prize-exhausted-modal"> |
|
|
|
|
|
<div class="modal-content"> |
|
|
|
|
|
<p class="modal-text">请先揭秘一个礼品</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div v-if="showPrizeExhaustedModal2" class="prize-exhausted-modal"> |
|
|
|
|
|
<div class="modal-content"> |
|
|
|
|
|
<p class="modal-text">该礼品已抽取完毕</p> |
|
|
|
|
|
|
|
|
<p class="modal-text">{{ modalConfig.text }}</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
@ -53,7 +41,7 @@ import ControlBar from "./lottery/ControlBar.vue"; |
|
|
import Qipao from "./lottery/Qipao.vue"; |
|
|
import Qipao from "./lottery/Qipao.vue"; |
|
|
import UserList from "./lottery/UserList.vue"; |
|
|
import UserList from "./lottery/UserList.vue"; |
|
|
import Mascot from "./lottery/Mascot.vue"; |
|
|
import Mascot from "./lottery/Mascot.vue"; |
|
|
import { ref, onMounted, nextTick, computed, watch } from "vue"; |
|
|
|
|
|
|
|
|
import { ref, onMounted, onBeforeMount, nextTick, computed, watch } from "vue"; |
|
|
import { useDataManager } from "./lottery/dataManager.js"; |
|
|
import { useDataManager } from "./lottery/dataManager.js"; |
|
|
import { useLotteryEngine } from "./lottery/lotteryEngine.js"; |
|
|
import { useLotteryEngine } from "./lottery/lotteryEngine.js"; |
|
|
|
|
|
|
|
@ -62,9 +50,24 @@ import { drawLottery } from "../../api/API"; |
|
|
|
|
|
|
|
|
const qipaoText = ref(""); |
|
|
const qipaoText = ref(""); |
|
|
const showQipao = ref(false); |
|
|
const showQipao = ref(false); |
|
|
const showPrizeExhaustedModal = ref(false); |
|
|
|
|
|
const showPrizeExhaustedModal1 = ref(false); |
|
|
|
|
|
const showPrizeExhaustedModal2 = ref(false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 弹窗配置 |
|
|
|
|
|
const modalConfig = ref({ |
|
|
|
|
|
show: false, |
|
|
|
|
|
text: "" |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 显示弹窗的方法 |
|
|
|
|
|
function showModal(text, duration = 1000) { |
|
|
|
|
|
modalConfig.value = { |
|
|
|
|
|
show: true, |
|
|
|
|
|
text: text |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
modalConfig.value.show = false; |
|
|
|
|
|
}, duration); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// const lotteryState = ref('idle'); // idle, ready, rotating, result |
|
|
// const lotteryState = ref('idle'); // idle, ready, rotating, result |
|
|
|
|
|
|
|
@ -109,6 +112,16 @@ const lotteryEngine = useLotteryEngine(dataManager, { |
|
|
selectCard: (...args) => lottery3DRef.value?.selectCard?.(...args), |
|
|
selectCard: (...args) => lottery3DRef.value?.selectCard?.(...args), |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 页面加载之前的钩子函数 |
|
|
|
|
|
onBeforeMount(() => { |
|
|
|
|
|
console.log("页面即将加载(onBeforeMount)"); |
|
|
|
|
|
lastRevealed.value = -1; |
|
|
|
|
|
lotteryState.value="idle"; |
|
|
|
|
|
|
|
|
|
|
|
// 可以在这里做一些初始化操作,比如重置store、准备数据等 |
|
|
|
|
|
// 例如:lotteryStore.resetState && lotteryStore.resetState(); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
onMounted(async () => { |
|
|
onMounted(async () => { |
|
|
isDisabled.value = true; |
|
|
isDisabled.value = true; |
|
|
|
|
|
|
|
@ -253,10 +266,7 @@ async function handleLotteryClick() { |
|
|
if (waitingForNextReveal.value) { |
|
|
if (waitingForNextReveal.value) { |
|
|
console.log("waitingForNextReveal.value", waitingForNextReveal.value); |
|
|
console.log("waitingForNextReveal.value", waitingForNextReveal.value); |
|
|
// 显示弹窗提示 |
|
|
// 显示弹窗提示 |
|
|
showPrizeExhaustedModal.value = true; |
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
showPrizeExhaustedModal.value = false; |
|
|
|
|
|
}, 1000); |
|
|
|
|
|
|
|
|
showModal("该礼品已抽取完毕,请揭秘下一个礼品"); |
|
|
isDisabled.value = false; |
|
|
isDisabled.value = false; |
|
|
|
|
|
|
|
|
break; |
|
|
break; |
|
@ -264,10 +274,7 @@ async function handleLotteryClick() { |
|
|
|
|
|
|
|
|
if (lastRevealed.value === -1) { |
|
|
if (lastRevealed.value === -1) { |
|
|
console.log("lastRevealed.value", lastRevealed.value); |
|
|
console.log("lastRevealed.value", lastRevealed.value); |
|
|
showPrizeExhaustedModal1.value = true; |
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
showPrizeExhaustedModal1.value = false; |
|
|
|
|
|
}, 1000); |
|
|
|
|
|
|
|
|
showModal("请先揭秘一个礼品"); |
|
|
isDisabled.value = false; |
|
|
isDisabled.value = false; |
|
|
|
|
|
|
|
|
break; |
|
|
break; |
|
@ -280,10 +287,7 @@ async function handleLotteryClick() { |
|
|
// 如果是最后一个奖品且剩余数量为0,则跳出 |
|
|
// 如果是最后一个奖品且剩余数量为0,则跳出 |
|
|
// const currentPrize = dataManager.state.basicData.prizes[lastRevealed.value]; |
|
|
// const currentPrize = dataManager.state.basicData.prizes[lastRevealed.value]; |
|
|
// if (currentPrize && currentPrize.remainNum === 0) { |
|
|
// if (currentPrize && currentPrize.remainNum === 0) { |
|
|
showPrizeExhaustedModal2.value = true; |
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
showPrizeExhaustedModal2.value = false; |
|
|
|
|
|
}, 1000); |
|
|
|
|
|
|
|
|
showModal("该礼品已抽取完毕"); |
|
|
isDisabled.value = false; |
|
|
isDisabled.value = false; |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
@ -304,12 +308,23 @@ async function handleLotteryClick() { |
|
|
|
|
|
|
|
|
// 同时请求接口 |
|
|
// 同时请求接口 |
|
|
try { |
|
|
try { |
|
|
winnerList.value = await drawLottery({ |
|
|
|
|
|
|
|
|
const res = await drawLottery({ |
|
|
perWin: prize.perWin, |
|
|
perWin: prize.perWin, |
|
|
remainNum: prize.remainNum, |
|
|
remainNum: prize.remainNum, |
|
|
gradeId: prize.gradeId, |
|
|
gradeId: prize.gradeId, |
|
|
prizeId: prize.prizeId, |
|
|
prizeId: prize.prizeId, |
|
|
}); |
|
|
}); |
|
|
|
|
|
console.log("res是", res); |
|
|
|
|
|
winnerList.value = res; |
|
|
|
|
|
if(res.data.round === false && res.data.data.length === 0){ |
|
|
|
|
|
isDisabled.value = true; |
|
|
|
|
|
console.log("isDisabled.value是", isDisabled.value); |
|
|
|
|
|
showModal("用户已抽完",100000); |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
setTimeout(() => { |
|
|
isDisabled.value = false; |
|
|
isDisabled.value = false; |
|
|
}, 2000); |
|
|
}, 2000); |
|
|