yuminge-app/yun-min-program-plugin-master/packageG/mycomponent/lottery/lottery.js

413 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// packageE/lottery/lottery.js
var app = getApp();
Component({
properties: {
datas: {
type: null,
},
component_id: {
type: null,
},
},
// 私有数据,可用于模板渲染
data: {
emptyImage: "https://mini-app-img-1251768088.cos.ap-guangzhou.myqcloud.com/image.png",
clientWidth: "375",
goods: [],
radio: "",
prizeIndex: 999,
arrNum: [0, 1, 2, 3, 7, 11, 15, 14, 13, 12, 8, 4], // 定义转动的顺序
clickFlage: true, // 点击事件,防止重复点击
prizeInfoShow: false, // 显示中奖信息的遮罩层
noPrizeShow: false, // 没中奖
havePrizeShow: false, // 中奖了
haveLottery: false, // 已经抽过奖了
timer1: "",
timer2: "",
s1: "",
s2: -1,
lotteryId: "", // 抽奖活动的id
hasRecord: false, // 是否显示获奖情况
remainingTimes: 0, // 剩余抽奖次数
prizeList: [], // 奖项列表
prizeLevel: "", // 中奖等级
prizeName: "", // 奖品名称
prizeUrl: "", // 奖品图片
timeFlag: 0, // 时间标记,抽奖请求时间过长,则返回错误
startStatus: 1, // 活动开始的状态
prizerListBol: false,
activityModel: {},
countdown_time: [],
result_arr: [],
usable: "",
success_app_url: "", // 成功跳转链接
},
lifetimes: {
// 生命周期函数可以为函数或一个在methods段中定义的方法名
attached() {},
moved() {},
detached() {},
},
// 生命周期函数可以为函数或一个在methods段中定义的方法名
attached() {},
// 此处attached的声明会被lifetimes字段中的声明覆盖
ready() {
this.setData({
clientWidth: wx.getSystemInfoSync().windowWidth,
});
let basic_info = wx.getStorageSync("yz_basic_info");
if (basic_info.home.memberinfo) {
this.setData({
usable: basic_info.home.memberinfo.usable,
});
}
if (this.data.datas.lottery && this.data.datas.lottery.name) {
this.initData();
}
},
pageLifetimes: {
// 组件所在页面的生命周期函数
show() {},
hide() {},
resize() {},
},
methods: {
toUrl() {
wx.navigateTo({
url: "/packageC/orders/LotteryRecord/LotteryRecord?lotteryId=" + this.data.lotteryId,
});
},
onChange(event) {
this.setData({
radio: event.detail,
});
},
closePop() {
this.setData({
show: false,
});
},
confirmGoods() {
this.setData({
show: false,
});
if (this.data.radio) {
wx.navigateTo({
url: "/packageA/detail_v2/detail_v2?id=" + this.data.radio,
});
}
},
// 更新页面数据
getData() {
console.log('111111');
let that = this;
let urlStr = app.getNetAddresss("plugin.lucky-draw.frontend.draw.index");
app._getNetWork({
url: urlStr,
data: {
lotteryId: this.data.lotteryId
},
success: function(resdata) {
var res = resdata.data;
if (res.result == 1) {
that.setData({
activityModel: res.data.activityModel,
['datas.list.point.credit1']:res.data.point.credit1
});
if(res.data.love){
that.setData({
usable:res.data.love[0],
});
}
}
},
fail: function(res) {
console.log(res);
}
});
},
initData() {
if(!this.data.datas.list) {
return;
}
let that = this;
this.setData({
result_arr: this.data.datas.list.result_arr,
activityModel: this.data.datas.list.activityModel,
success_app_url: this.data.datas.list.activityModel.success_app_url,
countdown_time: this.data.datas.list.activityModel.countdown_time,
lotteryId: this.data.datas.list.activityModel.id,
remainingTimes: this.data.datas.list.surplus_time,
goods: this.data.datas.list.goods,
});
if (this.data.goods && this.data.goods.length > 0) {
that.setData({
radio: this.data.goods[0].id,
});
}
this.data.result_arr.forEach((item) => {
item.bgSrc = "https://mini-app-img-1251768088.cos.ap-guangzhou.myqcloud.com/lottery/item_bg.png";
});
this.data.result_arr.splice(5, 0, " ");
this.data.result_arr.splice(6, 0, " ");
this.data.result_arr.splice(9, 0, " ");
this.data.result_arr.splice(10, 0, " ");
that.setData({
prizeList: this.data.result_arr,
});
let temp = that.data.prizeList[4];
that.setData({
"prizeList[4]": that.data.prizeList[7],
"prizeList[7]": temp,
});
temp = that.data.prizeList[12];
that.setData({
"prizeList[12]": that.data.prizeList[13],
"prizeList[13]": temp,
});
temp = that.data.prizeList[14];
that.setData({
"prizeList[14]": that.data.prizeList[15],
"prizeList[15]": temp,
});
// 获取状态,开始,未开始,结束
that.statusFun(Date.parse(new Date()) / 1000, that.data.countdown_time[0], that.data.countdown_time[1]);
},
statusFun(c, s, e) {
if (c < s) {
// 当前时间小于开始时间,未开始
this.setData({
startStatus: 0,
});
} else if (c > s && c < e) {
// 当前时间大于开始时间,并且小于结束时间,已经开始未结束
this.setData({
startStatus: 1,
});
} else if (c > e) {
// 当前时间大于结束时间,已经结束
this.setData({
startStatus: 2,
});
}
},
prizeZhuan() {
let that = this;
this.setData({
prizeIndex: 0,
});
if (this.data.remainingTimes > 0) {
// 判断剩余抽奖次数
if (this.data.clickFlage) {
if (this.data.startStatus === 1) {
// 活动开始
this.setData({
clickFlage: false, // 不能点击
timer1: setInterval(() => {
this.move();
}, 100),
});
let urlStr = app.getNetAddresss("plugin.lucky-draw.frontend.draw.doDraw");
app._getNetWork({
url: urlStr,
data: {
lotteryId: this.data.lotteryId,
},
success: (resdata) => {
var res = resdata.data;
if (res.result == 1) {
that.setData({
remainingTimes: that.data.remainingTimes - 1,
});
if (res.data.result) {
that.setData({
hasRecord: true,
prozeLevel: res.data.result.item,
prizeName: res.data.result.prize,
prizeUrl: res.data.result.thumb_url,
});
that.getData();
} else {
that.setData({
hasRecord: false,
prozeLevel: res.data.item,
prizeName: res.data.prize,
prizeUrl: res.data.thumb_url,
empty_prize_prompt: res.data.empty_prize_prompt,
});
that.getData();
}
setTimeout(() => {
clearInterval(that.data.timer1);
that.lowSpeed();
}, 1200);
} else {
wx.showModal({
title: "提示",
content: res.msg,
showCancel: false,
success(res_1) {
if (res_1.confirm) {
if (that.data.goods && that.data.goods.length > 0) {
that.setData({
show: true,
});
}
}
},
});
that.setData({
clickFlage: true, // 不能点击
});
clearInterval(that.data.timer1);
clearInterval(that.data.timer2);
}
},
fail: function (res) {
console.log(res);
},
});
// 请求返回后给s定值
} else if (this.data.startStatus === 0) {
// 没开始
wx.showToast({
icon: "none",
title: "活动尚未开始",
duration: 1500,
});
} else if (this.data.startStatus === 2) {
// 已经结束
wx.showToast({
icon: "none",
title: "活动已经结束",
duration: 1500,
});
}
}
} else {
// 没有抽奖机会了
this.setData({
prizeInfoShow: true,
haveLottery: true,
});
}
},
// 降速
lowSpeed() {
clearInterval(this.data.timer1);
this.setData({
clickFlage: false, // 不能点击
timer2: setInterval(() => {
this.move();
}, 300),
});
setTimeout(() => {
// 顺序打乱
this.setData({
s2: this.data.prozeLevel,
});
}, 900);
},
move() {
if (this.data.prizeIndex === 0) {
this.setData({
prizeIndex: this.data.prizeIndex + 1,
});
} else if (this.data.prizeIndex === 12) {
this.setData({
prizeIndex: 0,
});
} else {
this.setData({
prizeIndex: this.data.prizeIndex + 1,
});
}
if (this.data.s2 !== -1 && this.data.prizeList[this.data.arrNum[this.data.prizeIndex]] && this.data.prizeList[this.data.arrNum[this.data.prizeIndex]].item == this.data.s2) {
clearInterval(this.data.timer1);
clearInterval(this.data.timer2);
this.stop();
}
this.setData({
timeFlag: this.data.timeFlag + 100,
});
if (this.data.timeFlag >= 10000 && !this.data.prizeName) {
clearInterval(this.data.timer1);
clearInterval(this.data.timer2);
wx.showToast({
icon: "none",
title: "当前抽奖人数过多,稍后再来",
duration: 1500,
});
this.setData({
clickFlage: true,
});
}
},
// 停止
stop() {
this.setData({
s2: -1,
clickFlage: false,
});
this.prizeInfo(); // 弹出是否中奖
},
prizeInfo() {
setTimeout(() => {
this.setData({
clickFlage: true,
});
if (this.data.hasRecord) {
this.setData({
prizeInfoShow: true,
havePrizeShow: true,
noPrizeShow:false
});
} else {
this.setData({
prizeInfoShow: true,
noPrizeShow: true,
havePrizeShow:false
});
}
if (this.data.noPrizeShow) {
wx.showModal({
title: "提示",
content: `${this.data.empty_prize_prompt || "很遗憾,您没有中奖"}`,
showCancel: false,
});
}
if (this.data.havePrizeShow) {
wx.showModal({
title: "提示",
content: `恭喜您抽中${this.data.prizeName}`,
showCancel: false,
success: (res) => {
if (res.confirm) {
if (this.data.success_app_url.indexOf("http") == -1) {
wx.navigateTo({
url: this.data.success_app_url,
fail: (res) => {},
});
}
}
},
});
}
if (this.data.haveLottery) {
wx.showModal({
title: "提示",
content: "您已经抽过奖啦,不要太贪心哦!",
showCancel: false,
});
}
}, 800);
},
},
});