|
|
@ -375,7 +375,7 @@ const initAll = async () => { |
|
|
|
prizes.value.forEach((item, index) => { |
|
|
|
item.type = index; |
|
|
|
item.count = item.amount; |
|
|
|
item.leftCount = item.amount; //剩余次数(用于计算奖品下方的进度条的百分比) |
|
|
|
item.leftCount = item.remainNum; //剩余次数(用于计算奖品下方的进度条的百分比) |
|
|
|
item.hasCount = item.amount; //已抽次数(用于计算出奖) |
|
|
|
item.isLook = false; // |
|
|
|
EACH_COUNT.push(item.perWin); |
|
|
@ -916,7 +916,7 @@ function switchPage(direction) { |
|
|
|
const object = threeDCards[cardIndex]; |
|
|
|
const cardPage = Math.floor(index / cardsPerPage); |
|
|
|
const isVisible = cardPage === newPage; |
|
|
|
|
|
|
|
const wasVisible = cardPage === pageIndex.value; |
|
|
|
// 计算在当前页中的索引 |
|
|
|
const pageNowIndex = index % cardsPerPage; |
|
|
|
const pageLocate = pageLocates[cardPage][pageNowIndex]; |
|
|
@ -929,11 +929,53 @@ function switchPage(direction) { |
|
|
|
// "pageLocate", |
|
|
|
// pageLocate |
|
|
|
// ); |
|
|
|
|
|
|
|
// 根据切换方向决定动画效果 |
|
|
|
let targetY; |
|
|
|
if (isVisible) { |
|
|
|
// 当前页要显示的卡片 |
|
|
|
if (direction === "next") { |
|
|
|
// 索引增大:从下方飞出 |
|
|
|
targetY = pageLocate.y; |
|
|
|
} else { |
|
|
|
// 索引减少:从上方飞出 |
|
|
|
targetY = pageLocate.y; |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 当前页要隐藏的卡片 |
|
|
|
if (direction === "next") { |
|
|
|
// 索引增大:向上飞走 |
|
|
|
targetY = pageLocate.y + 1000; |
|
|
|
} else { |
|
|
|
// 索引减少:向下飞走 |
|
|
|
targetY = pageLocate.y - 1000; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 设置起始位置 |
|
|
|
let startY; |
|
|
|
if (wasVisible) { |
|
|
|
// 当前页的卡片从当前位置开始 |
|
|
|
startY = object.position.y; |
|
|
|
} else { |
|
|
|
// 非当前页的卡片从隐藏位置开始 |
|
|
|
if (direction === "next") { |
|
|
|
// 索引增大:从下方开始 |
|
|
|
startY = pageLocate.y - 1000; |
|
|
|
} else { |
|
|
|
// 索引减少:从上方开始 |
|
|
|
startY = pageLocate.y + 1000; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 先设置起始位置 |
|
|
|
object.position.y = startY; |
|
|
|
|
|
|
|
new TWEEN.Tween(object.position) |
|
|
|
.to( |
|
|
|
{ |
|
|
|
x: pageLocate.x, |
|
|
|
y: isVisible ? pageLocate.y : pageLocate.y + 1000, |
|
|
|
y: targetY, |
|
|
|
z: 2100, |
|
|
|
}, |
|
|
|
duration |
|
|
@ -1072,16 +1114,17 @@ const lotteryBtn = () => { |
|
|
|
|
|
|
|
getPrizeUsers.value = []; |
|
|
|
let params = { |
|
|
|
gradeName: currentPrize.value.gradeName, |
|
|
|
prizeName: currentPrize.value.prizeName, |
|
|
|
gradeId: currentPrize.value.gradeId, |
|
|
|
prizeId: currentPrize.value.prizeId, |
|
|
|
perWin: currentPrize.value.perWin, |
|
|
|
remainNum: currentPrize.value.leftCount, |
|
|
|
}; |
|
|
|
// 异步调用API,不阻塞后续代码执行 |
|
|
|
startLotteryApi(params) |
|
|
|
.then((res) => { |
|
|
|
// API返回结果时赋值 |
|
|
|
getPrizeUsers.value = res.data || []; |
|
|
|
console.log("API返回结果:", res.data); |
|
|
|
getPrizeUsers.value = res.data.data || []; |
|
|
|
console.log("API返回结果:", res.data.data); |
|
|
|
}) |
|
|
|
.catch((err) => { |
|
|
|
console.error("API调用失败:", err); |
|
|
@ -1113,7 +1156,8 @@ const lottery = () => { |
|
|
|
selectedCardIndex = []; |
|
|
|
// 当前同时抽取的数目,当前奖品抽完还可以继续抽,但是不记录数据 |
|
|
|
|
|
|
|
for (let i = 0; i < getPrizeUsers.value; i++) { |
|
|
|
for (let i = 0; i < getPrizeUsers.value.length; i++) { |
|
|
|
console.log("111", getPrizeUsers.value[i]); |
|
|
|
currentLuckys.push(getPrizeUsers.value[i]); |
|
|
|
currentPrize.value.hasCount--; |
|
|
|
|
|
|
@ -1163,7 +1207,7 @@ function random(num) { |
|
|
|
*/ |
|
|
|
function changeCard(cardIndex, user) { |
|
|
|
let card = threeDCards[cardIndex].element; |
|
|
|
|
|
|
|
// console.log("user", user); |
|
|
|
card.innerHTML = `<div class="name">${user.jwcode}</div>`; |
|
|
|
} |
|
|
|
|
|
|
@ -1175,7 +1219,7 @@ function changeSelectedCard(cardIndex, user) { |
|
|
|
|
|
|
|
let card = threeDCards[cardIndex].element; |
|
|
|
|
|
|
|
card.innerHTML = `<div class="name">${user[1]}</div>`; |
|
|
|
card.innerHTML = `<div class="name">${user.jwcode}</div>`; |
|
|
|
} |
|
|
|
/** |
|
|
|
* 切换名牌背景 |
|
|
|