Files
peko-h5/view/peko/modules/spirit/js/main.js

558 lines
20 KiB
JavaScript

let browser = checkVersion()
let urlPrefix = getUrlPrefix();//判斷正式環境或者測試環境
const toastMsg = (content = '操作完成', time = 2) => {
layer.open({
content,
skin: 'msg',
time
});
}
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 = 1000;
let prodIDArr = [];
var selectSrcArr = [];
var selectSrc = [];
var remainDayArr = [];
var userRemainDay;
var prodID;
// 小動物數組
let animalArr = [
{
animalPic: './image/animal/1.png',
animalName: '小熊'
},
{
animalPic: './image/animal/2.png',
animalName: '小兔'
},
{
animalPic: './image/animal/3.png',
animalName: '小狗'
},
{
animalPic: './image/animal/4.png',
animalName: '小貓'
},
{
animalPic: './image/animal/5.png',
animalName: '小猴'
},
{
animalPic: './image/animal/6.png',
animalName: '小羊'
},
{
animalPic: './image/animal/7.png',
animalName: '小虎'
},
{
animalPic: './image/animal/8.png',
animalName: '小雞'
},
{
animalPic: './image/animal/9.png',
animalName: '小牛'
},
{
animalPic: './image/animal/10.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 => {
if (res.prodId == 1) {
prodIDArr[0] = res.prodId
prodID = res.prodId
} else if (res.prodId == 2) {
prodIDArr[1] = res.prodId
} else {
prodIDArr[2] = res.prodId
}
})
console.log('prodIDArr', prodIDArr);
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'));
diamondNum = index == 0 ? 1000 : index == 1 ? 10000 : 100000
selectSrc = selectSrcArr[index];
giftName = giftNameArr[index];
userRemainDay = remainDayArr[index];
prodID = prodIDArr[index];
$('.prob').html(`獲得${giftName}的概率為${currentNum * 10}%`)
})
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(`獲得${giftName}的概率為${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(`獲得${giftName}的概率為${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(`獲得${giftName}的概率為${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(() => {
$('.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(() => {
page = 0;
$('.dropload-refresh').css({ display: 'block' })
$('.dropload-down').hide()
prizeRecord = [];
$('.dom').hide();
prizeRecordFun()
$('.table-shade').show()
})
// 跳轉充值頁面
$('.go-to-recharge, .recharge-icon').click(() => {
if (browser.app) {
if (browser.android) {
// window.androidJsObj.openChargePage()
tools.nativeUtils.jumpAppointPage('RECHARGE_PAGE')
} else if (browser.ios) {
window.webkit.messageHandlers.openChargePage.postMessage(null)
}
} 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')) {
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 () {
var dropload = $('.table-wrap').dropload({
scrollArea: $('.table-wrap'),
loadDownFn: function (me) {
var result = '';
if (!requestStatus) {
requestStatus = true;
page++;
networkRequest({
type: 'GET',
url: urlPrefix + '/seekElfin/record/page?current=' + page + '&size=' + size,
data: {
uid: pubInfo.uid,
},
success: function (res) {
requestStatus = false;
if (res.code == 200) {
prizeRecord = res.data.records;
var arrLen = res.data.records.length;
if (arrLen < size) {
page = 0;
me.lock(); // 鎖定
me.noData(); // 無數據
}
if (arrLen > 0) {
result = prizeRecordDom();
$('.table').append(result)// 插入數據到頁面,放到最後面
me.resetload();// 每次數據加載完,必須重置
} else {// 如果沒有數據
me.resetload();
me.lock(); // 鎖定
me.noData(); // 無數據
console.log($('.rule_record .conent .table tr').length)
if (page == 0 && $('.rule_record .conent .table tr').length == 1) {
$('.dropload-noData').remove();
$('.table').css({ display: 'none' })
$('.noData').css({ display: 'block' })
}
}
}
},
error: function (res) {
$('.dropload-down').hide()
requestStatus = false;
console.log(res, '報錯啦');
me.lock(); // 鎖定
me.noData(); // 無數據
me.resetload();// 即使加載出錯,也得重置
$('.table').css({ display: 'none' })
$('.noData').css({ display: 'block' })
}
})
}
}
})
console.log('dropload-----', dropload);
};
// 中獎記錄渲染
function prizeRecordDom () {
let result = ''
prizeRecord.forEach((res, i) => {
// console.log(res);
result += `
<tr class='dom'>
<td>${res.prodName}</td>
<td style="max-width: 1rem;"><span>${res.selectdNo}</span></td>
<td>${res.drawNum == undefined ? 0 : res.drawNum}</td>
<td>${res.win ? '是,' + res.giftName : '否'}</td>
<td>${dateFormat(res.createTime, "yyyy.MM.dd hh:mm:ss")}</td>
</tr>`
});
return result
};
// 獲取用戶信息
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('./image/animate.svga', function (videoItem) {
// player.loops = 1;
player.clearsAfterStop = false;
player.setVideoItem(videoItem);
player.startAnimation();
})
}
const renderResult = () => {
let index = result.drawNum
$('.result-content img').attr('src', animalArr[index].animalPic)
$('.result-content p span').html(animalArr[index].animalName)
$('.result-content div span').eq(0).html(result.receiveGiftPrice)
$('.result-content div span').eq(1).html(result.receiveGiftName)
if (result.win) {
$('.result-content').addClass('success')
$('.prob').hide()
$('.desc').addClass('success')
$('.desc').html(`
成功找到小精靈!</br>
<span>小精靈將送你價值${result.receiveGiftPrice}鉆石的</br>${result.receiveGiftName}</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()
}
//返回頁面 重新請求接口
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);