Files
peko-h5/view/peko/modules/spirit/js/main.js
2023-01-11 11:48:35 +08:00

610 lines
21 KiB
JavaScript

let browser = checkVersion()
let urlPrefix = getUrlPrefix();//判斷正式環境或者測試環境
const toastMsg = (content = '操作完成', time = 2) => {
layer.open({
content,
skin: 'msg',
time
});
}
const showLoading = (content = '加載中...') => {
layer.open({
type: 2,
shadeClose: false,
content,
success(e) {
layerIndex = $(e).attr('index')
}
})
}
const hideLoading = (index) => {
layer.close(index)
}
let roomId = null;
let userDiamonds = 0 //用戶鉆石數量
const MAX_NUM = 9 //後臺限購關閉時最大選擇數
let currentNum = 0
let time = null;
let cardID = [];
let requestStatus = false;
let prizeRecord = [];//中獎記錄
var page = 0;// 頁數
var size = 10;// 每頁展示n個
let selectDays = window.sessionStorage.getItem('selectDays')
let userSelectInfo = JSON.parse(window.sessionStorage.getItem('userSelectInfo'))
// let { diamondNum, selectSrc, prodID, limitPurchaseSwitch, giftName } = JSON.parse(window.sessionStorage.getItem('userSelectInfo'))
var limitPurchaseSwitch;
var giftNameArr = [];
var giftName = [];
var diamondNum = 500;
let prodIDArr = [];
var selectSrcArr = [];
var selectSrc = [];
var remainDayArr = [];
var userRemainDay;
var prodID;
var prodRewardPriceArr = [];
var prodRewardPrice;
// 小動物數組
let animalArr = [
{
animalPic: 'https://img.pekolive.com/elfin-animal1.png',
animalName: '小熊'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal2.png',
animalName: '小兔'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal3.png',
animalName: '小狗'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal4.png',
animalName: '小貓'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal5.png',
animalName: '小猴'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal6.png',
animalName: '小羊'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal7.png',
animalName: '小虎'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal8.png',
animalName: '小雞'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal9.png',
animalName: '小牛'
},
{
animalPic: 'https://img.pekolive.com/elfin-animal10.png',
animalName: '小豬'
}
]
$(function () {
getInfoFromClient()
setTimeout(() => {
getUserInfo();
headwearFun();
getLimitInfo();
}, 50)
if (EnvCheck() == 'test') {
new VConsole();
}
if (browser.app) {
if (browser.android) {
roomId = window.androidJsObj.getRoomUid()
} else {
window.webkit.messageHandlers.getRoomUid.postMessage(null)
setTimeout(() => {
roomId = pubInfo.roomUid;
console.log(roomId)
}, 200);
}
} else {
roomId = 1351326
}
console.log(window.screen.height);
if (window.screen.height > 667) {
$('.explore').css('margin', '0.8rem auto 0rem')
} else if (window.screen.height < 667) {
$('html,body').css('height', "18rem")
}
// 獲取頭飾限購信息
function getLimitInfo() {
networkRequest({
type: 'GET',
url: urlPrefix + '/seekElfin/limit/purchase/display',
success: function (res) {
if (res.code == 200) {
limitPurchaseSwitch = res.data.limitPurchaseSwitch
if (limitPurchaseSwitch) {
list = res.data.list
let str = ''
list.map((item) => {
remainDayArr.push(item.remainDay)
})
userRemainDay = [remainDayArr[0]]
}
}
},
error: function (res) {
console.log(res, '報錯啦');
}
})
}
// 獲取頭飾請求
function headwearFun() {
networkRequest({
type: 'GET',
url: urlPrefix + '/seekElfin/product/list',
data: {
uid: pubInfo.uid
},
success: function (res) {
if (res.code == 200) {
res.data.forEach((res, index) => {
$('.tabBox div').eq(index).find('b').html(res.prodNeedPrice)
if (res.prodId == 1) {
prodIDArr[0] = res.prodId
prodRewardPriceArr[0] = res.prodRewardPrice
prodID = res.prodId
diamondNum = res.prodNeedPrice
prodRewardPrice = res.prodRewardPrice
} else if (res.prodId == 2) {
prodIDArr[1] = res.prodId
prodRewardPriceArr[1] = res.prodRewardPrice
} else {
prodIDArr[2] = res.prodId
prodRewardPriceArr[2] = res.prodRewardPrice
}
})
console.log('prodIDArr', prodIDArr);
console.log('prodRewardPriceArr', prodRewardPriceArr);
headwearArr = res.data;
// 設置頭飾
headwearArr.map((item, index) => {
giftNameArr[index] = item.giftName;
selectSrcArr[index] = item.headwearPic;
selectSrc = selectSrcArr[0];
giftName = giftNameArr[0];
})
console.log('giftNameArr', giftNameArr);
} else if (res.code == 80002) {
isNeedUpgrade = true
return toastMsg('當前版本過低,請前往升級最高版本使用~')
}
},
error: function (res) {
console.log(res, '報錯啦');
}
})
}
// tab切换
$('.tabBox div').click(function () {
var index = $(this).index();
$(this).addClass('active').siblings().removeClass('active');
diamondNum = Number($(this).children('span').children('b').html());
// diamondNum = index == 0 ? 500 : index == 1 ? 5000 : 50000
selectSrc = selectSrcArr[index];
giftName = giftNameArr[index];
userRemainDay = remainDayArr[index];
prodID = prodIDArr[index];
prodRewardPrice = prodRewardPriceArr[index];
$('.prob').html(`獲得${prodRewardPrice}钻的概率為${currentNum * 10}%`)
$('.select-area .desc').hide();
})
const animation = () => {
$('.select-area')
.animate({ scale: 0.25 }, 0)
.animate({ scale: 1.0, opacity: 1.0 }, 2000, function () {
$('.desc, .prob').show()
$('.select-area').on('click', 'div', function () {
if ($('.explore').hasClass('again')) {
return;
} else {
let index = $(this).index()
if (!$(this).hasClass('active')) {
currentNum++
if (true) {//!limitPurchaseSwitch
if (currentNum <= MAX_NUM) {
$(this).addClass('active')
$('.prob').html(`獲得${prodRewardPrice}钻的概率為${currentNum * 10}%`)
$('.prob').show()
$('.desc').hide()
cardID.push(index)
} else {
currentNum = MAX_NUM
}
} else {
if (window.sessionStorage.getItem('leftDays') != null) {
if (window.sessionStorage.getItem('leftDays') <= 0) {
console.log('leftDays', window.sessionStorage.getItem('leftDays'));
toastMsg('該頭飾已達限購上限')
setTimeout(() => {
sessionStorage.clear()
history.go(-1)
}, 1000)
return;
}
console.log('leftDays', window.sessionStorage.getItem('leftDays'));
userRemainDay = window.sessionStorage.getItem('leftDays') > MAX_NUM ? MAX_NUM : window.sessionStorage.getItem('leftDays')
} else {
userRemainDay = userSelectInfo.userRemainDay > MAX_NUM ? MAX_NUM : userSelectInfo.userRemainDay
}
if (currentNum <= userRemainDay) {
$(this).addClass('active')
$('.prob').html(`獲得${diamondNum * 10}钻的概率為${currentNum * 10}%`)
$('.prob').show()
$('.desc').hide()
cardID.push(index)
} else {
if (userRemainDay < MAX_NUM) {
toastMsg('選擇數量不能超過限購天數')
}
currentNum = userRemainDay
}
console.log('cardID', cardID);
}
} else {
currentNum--
$(this).removeClass('active')
$('.prob').html(`獲得${prodRewardPrice}钻的概率為${currentNum * 10}%`)
const currentIndex = cardID.indexOf(index)
cardID.splice(currentIndex, 1)
console.log(cardID);
}
}
})
})
}
animation()
// 打開介紹彈窗
$('.introduction-btn').on('click', function () {
$('.shade-mask').show()
$('body').css('overflow', 'hidden')
})
// 關閉彈窗
$('.shade-mask').on('click', () => {
$('.shade-mask').hide()
$('body').css('overflow', 'auto')
})
$('.shade-content').click((e) => {
e.stopPropagation()
})
$('.close-record').click(() => {
bodyScroolFun(false)
requestStatus = false;
$('.table-shade').hide()
})
$('.result-shade').on('click', () => {
$('.result-shade').hide()
})
$('.result-content').click((e) => {
e.stopPropagation()
})
$('.not-enough').click(() => {
$('.not-enough').hide()
})
$('.not-enough-content').click((e) => {
e.stopPropagation()
})
// 關閉青少年 未成年提示彈窗
$('.know').on('click', () => {
$('.shade-mask-teen').hide()
})
// 關閉認證彈窗
$('.button-cancel, .button-agree').on('click', function () {
$(this).parents('.identity-mask').hide();
});
// 記錄
$('.record-btn').click(() => {
bodyScroolFun(true)
page = 0;
// $('.dropload-refresh').css({ display: 'block' })
// $('.dropload-down').hide()
// $('.dom').hide();
$('.table li').remove();
prizeRecord = [];
prizeRecordFun()
$('.table-shade').show()
})
// 跳轉充值頁面
$('.go-to-recharge, .recharge-icon').click(() => {
if (browser.app) {
if (browser.android) {
window.androidJsObj.openChargePage(7);
} else if (browser.ios) {
window.webkit.messageHandlers.chargePayClickPage.postMessage(7);
window.location.href = urlPrefix + '/peko/modules/pay/index.html?channelType=4';
}
} else {
toastMsg('請在app內打開')
}
$('.not-enough').hide()
})
$('.canSelect span').html(selectDays ? selectDays : 0)
$('.explore').on('click', function () {
if (currentNum == 0) {
toastMsg('請選擇小動物~')
}
// else if (selectDays != currentNum && !$(this).hasClass('again')) {
// let headwearName = diamondNum == 1000 ? '初級探訪' : (diamondNum == 10000 ? '中級探訪' : '高級探訪')
// $('.planet-num span').html(currentNum)
// $('.headwear img').attr('src', selectSrc)
// $('.headwear-day').html(`${headwearName}${currentNum}天`)
// $('.headwear-price span').html(diamondNum * currentNum)
// $('.shade-mask-recharge').show()
// }
// else if (selectDays == currentNum && !$(this).hasClass('again')) {
else if (!$(this).hasClass('again')) {
let leftDays;
if (window.sessionStorage.getItem('leftDays') != null) {
leftDays = window.sessionStorage.getItem('leftDays') - currentNum
} else {
// leftDays = userSelectInfo.userRemainDay - currentNum
leftDays = userRemainDay - currentNum
}
window.sessionStorage.setItem('leftDays', leftDays)
if (userDiamonds < diamondNum * currentNum) {
return $('.not-enough').show()
}
draw()
} else if ($(this).hasClass('again')) {
window.location.reload()
}
})
// 關閉支付彈窗
$('.shade-mask-recharge').click(function () {
$(this).hide()
})
$('.shade-content-recharge').click(function (e) {
e.stopPropagation()
})
$('.no-explore').on('click', function () {
sessionStorage.clear()
history.go(-1)
})
// 抽獎支付按鈕點擊事件
// $('.recharge-btn').click(function () {
// let leftDays;
// if (window.sessionStorage.getItem('leftDays') != null) {
// leftDays = window.sessionStorage.getItem('leftDays') - currentNum
// } else {
// // leftDays = userSelectInfo.userRemainDay - currentNum
// leftDays = userRemainDay - currentNum
// }
// window.sessionStorage.setItem('leftDays', leftDays)
// $('.shade-mask-recharge').hide()
// if (userDiamonds < diamondNum * currentNum) {
// $('.not-enough').show()
// return
// }
// draw()
// });
})
//中獎記錄請求
function prizeRecordFun() {
showLoading()
var result = '';
if (!requestStatus) {
requestStatus = true;
page++;
networkRequest({
type: 'GET',
url: urlPrefix + '/seekElfin/record/page',
data: {
uid: pubInfo.uid,
current: page,
size: size,
},
success: function (res) {
if (res.code == 200) {
prizeRecord = res.data.records;
var arrLen = res.data.records.length;
if (arrLen > 0) {
requestStatus = false;
result = prizeRecordDom();
$('.table').append(result)
if(arrLen <10){
$('.table').append(`<li class="dropload-noData">沒有更多了</li>`)
$('.table .dropload-noData').show()
}
} else {// 如果沒有數據
requestStatus = true
if (page == 1) {
$('.table').append(`<li class="dropload-noData">暫無數據</li>`)
$('.table .dropload-noData').show()
}else {
$('.table .dropload-noData').remove()
$('.table').append(`<li class="dropload-noData">沒有更多了</li>`)
$('.table .dropload-noData').show()
}
}
}
hideLoading(layerIndex)
},
error: function (res) {
// $('.dropload-down').hide()
requestStatus = false;
console.log(res, '報錯啦');
$('.table').css({ display: 'none' })
// $('.noData').css({ display: 'block' })
hideLoading(layerIndex)
}
})
}
};
// 中獎記錄渲染
function prizeRecordDom() {
let result = ''
prizeRecord.forEach((res, i) => {
// console.log(res);
result += `
<li class='dom'>
<div>${res.prodName}</div>
<div><span>${res.selectdNo}</span></div>
<div>${res.drawNum == undefined ? 0 : res.drawNum}</div>
<div>${res.win ? '是' : '否'}<p>${res.win ? res.receiveGoldNum + '鉆' : ''}</p></div>
<div>${dateFormat(res.createTime, "yyyy.MM.dd")}<p>${dateFormat(res.createTime, "hh:mm:ss")}</p></div>
</li>`
});
return result
};
// 记录监听滚动
$('.table-content .table-wrap .table').scroll(function () {
let scrollTop = $(this).scrollTop()
let scrollHeight = $('.table-content .table-wrap .table')[0].scrollHeight
let ulHeight = $(this).innerHeight()
if (scrollTop + ulHeight + 100 >= scrollHeight) {
if (!requestStatus) {
prizeRecordFun();
}
}
})
// 獲取用戶信息
const getUserInfo = () => {
networkRequest({
type: 'POST',
url: urlPrefix + '/seekElfin/user/info',
data: {
uid: pubInfo.uid
},
success: function (res) {
if (res.code == 200) {
userDiamonds = res.data.diamonds
$('.mine .avatar img').attr('src', res.data.avatar)
$('.mine .nick').html(res.data.nick.length > 8 ? res.data.nick.slice(0, 8) + '...' : res.data.nick)
$('.mine .diamond-num span').html(res.data.diamonds)
}
},
error: function (res) {
console.log(res, '報錯啦');
}
})
}
const draw = () => {
playAnimate()
const prodId = prodID;
const roomUid = roomId;
const cardList = cardID;
networkRequest({
type: 'POST',
url: urlPrefix + '/seekElfin/draw',
data: JSON.stringify({
prodId,
selectedNo: cardList,
roomUid,
}),
headers: { 'Content-Type': 'application/json;charset=utf8' },
success: function (res) {
if (res.code == 200) {
getUserInfo()
setTimeout(() => {
$('.svga').hide()
result = res.data
console.log('結果', res.data);
renderResult()
}, 1000)
}
},
error: function (res) {
console.log(res, '報錯啦');
}
})
}
// 播放過場動畫
const playAnimate = () => {
$('.explore').addClass('again')
$('.shade-mask-recharge').hide()
$('.svga').show()
let player = new SVGA.Player('.svga');
let parser = new SVGA.Parser('.svga');
parser.load('https://img.pekolive.com/elfin-animate.svga', function (videoItem) {
// player.loops = 1;
player.clearsAfterStop = false;
player.setVideoItem(videoItem);
player.startAnimation();
})
}
const renderResult = () => {
let index = result.drawNum
$('.result-content .animal').attr('src', animalArr[index].animalPic)
$('.result-content p span').html(animalArr[index].animalName)
$('.result-content .awardD span').html(result.receiveGoldNum)
$('.result-content .headwear').attr('src', result.headwearPic)
$('.result-content .indate').html(`${result.headwearName}${result.headwearDays}`)
if (result.win) {
$('.result-content').addClass('success')
$('.prob').hide()
$('.desc').addClass('success')
$('.desc').html(`
成功找到小精靈!</br>
<span>小精靈將送你${result.receiveGiftPrice}鉆石</span>
`).show()
} else {
$('.result-content').addClass('fail')
$('.prob').hide()
$('.desc').addClass('fail')
$('.desc').html('很遺憾未能找到小精靈</br>下次再接再厲哦!').show()
$('.select-area div').eq(index).find('.default').hide().siblings('.fail').show()
}
$('.result-shade').show()
}
// 控制body是否可以滑动
function bodyScroolFun(bool) {
if (bool) {
$('body').css('overflow', 'hidden');
} else {
$('body').css('overflow', 'auto');
}
}
//返回頁面 重新請求接口
var hiddenProperty = 'hidden' in document ? 'hidden' :
'webkitHidden' in document ? 'webkitHidden' :
'mozHidden' in document ? 'mozHidden' : null;
var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');
var onVisibilityChange = function () {
if (!document[hiddenProperty]) {
getUserInfo()
}
}
document.addEventListener(visibilityChangeEvent, onVisibilityChange);