var WxParse = require('../../../../utils/wxParse/wxParse.js'); const app = getApp(); let imghost = app.globalData.setting.imghost; let self = null; Page({ data: { start: false, list: null, isLoading: false, // 检测是否已经发送请求,防止重复发送请求 noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据 pageNum: 1, // 当前页数 imghost: imghost, num: 3, prizes: [], defaultConfig: { offsetDegree: 22.5, }, // defaultStyle: { // fontColor: '#d64737', // fontSize: '14px' // }, blocks: [ //背景图 // { padding: '13px', background: '#d64737', top: '20rpx' } { padding: '76rpx', // background: 'pink', imgs: [{ src: imghost + 'miniapp/images/luckDraw/weel.png', width: '700rpx', height: '700rpx', rotate: true, }] } ], buttons: [ // { radius: '50px', background: '#d64737' }, // { radius: '45px', background: '#fff' }, // { radius: '41px', background: '#f6c66f', pointer: true }, // { // radius: '35px', background: '#ffdea0', // fonts: [{ text: '开始\n抽奖', fontSize: '18px', top: -18 }] // } { radius: '60rpx', // background: 'black', // pointer: true, imgs: [{ src: imghost + 'miniapp/images/luckDraw/pointer.png', width: '188rpx', height: '230rpx', top: '-130rpx', }], } ], }, onLoad(options) { // console.log('imghost+++++', imghost); self = this; this.data.options = options; // this.setData({ // options, // imghost, // }); // console.log('this data', this.data.imghost); wx.setNavigationBarTitle({ title: options.title, }); app.isLogin().then(function(data) {//进入页面前已经授权登录成功 self.setData({ userInfo: data, // imghost, }); }); }, onShow() { if(app.globalData.userInfo) { if(!this.data.isLogin) { this.setData({ userInfo: app.globalData.userInfo, isLogin: true, }); // console.log('imghost', this.data.imghost); let user_id = app.globalData.userInfo.user_id; let store_id = app.globalData.setting.stoid; let id = this.data.options.id; let url = `/api/weshop/marketing/marketingLuckForm/getLuckInfo/${store_id}/${id}/${user_id}`; app.request.get(url, { success: function(res) { if(res.data.code == 0) { self.setData({ luckInfo: res.data.data, }); WxParse.wxParse('content', 'html', self.data.luckInfo.remark, self); } else { wx.showToast({ title: res.data.msg, icon: 'none', }); self.data.msg = res.data.msg; }; // console.log('luckInfo', res.data.data); let luckInfo = res.data.data; if(luckInfo && luckInfo.template_type != null && luckInfo.template_type == 1) { //获取模板 let url = `/api/weshop/marketing/marketingLuckTemplate/get/${store_id}/${luckInfo.template_id}`; app.request.get(url, { success: function(res) { // console.log('prizes//////', res.data.data); self.setData({ template: res.data.data, bannerUrl: imghost + ((res.data.data&&res.data.data.bannerUrl) ? res.data.data.bannerUrl:'miniapp/images/luckDraw/bg.png?v=2'), //背景图 'blocks[0].imgs[0].src': imghost + ((res.data.data&&res.data.data.wheelBaseUrl) ? res.data.data.wheelBaseUrl:'miniapp/images/luckDraw/weel.png?v=2'), //转盘 'buttons[0].imgs[0].src': imghost + ((res.data.data&&res.data.data.wheelPointerUrl) ? res.data.data.wheelPointerUrl:'miniapp/images/luckDraw/pointer.png?v=2'), //指针 }); }, }); } else { if(luckInfo && luckInfo.store_bannerUrl) { self.setData({ bannerUrl: imghost + luckInfo.store_bannerUrl, }); }; }; if(self.data.luckInfo.msgInfo) { wx.showToast({ title: self.data.luckInfo.msgInfo, icon: 'none', }); // return; }; }, }); // 获取奖品展示的奖品 app.request.get('/api/weshop/marketing/marketingLuckList/page', { data: { store_id, luck_formid: id, }, success: function(res) { let award = res.data.data.pageData; self.setData({ award, }); console.log('award', award); self.prizeLayout(award); }, }); //获取兑奖记录 app.request.get('/api/weshop/marketing/marketingLuckRecord/page', { isShowLoading: false, data: { store_id: app.globalData.setting.stoid, user_id: app.globalData.userInfo.user_id, luck_formid: this.data.options.id, luck_state: 1 }, success: function(res) { if(res.data.code == 0) { self.setData({ record: res.data.data.pageData, }); }; }, }); //获取中奖人员名单 app.request.get('/api/weshop/marketing/marketingLuckRecord/page', { isShowLoading: false, data: { store_id: app.globalData.setting.stoid, luck_formid: this.data.options.id, luck_state: 1, pageSize: 20, }, success: function(res) { if(res.data.code == 0) { self.setData({ nameList: res.data.data.pageData, }); }; }, }); }; }; }, // 设置转盘奖品布局 prizeLayout(award) { let prizes = []; // let length = award.length; if(award) { var length = award.length; } else { wx.showToast({ title: '请设置奖品', icon: 'none', }); return; }; let thx = {fonts: [{ text: '谢谢\n参与', top: '18%', wordWrap:false, fontColor: 'rgba(255,255,255,.6)'}]}; if(length == 1) { [0,2,4,6].map(function(item, index) { prizes[item] = { id: award[0].id, lbtype: award[0].lbtype, fonts: [{ text: award[0].luck_goods_name + ' x' + award[0].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[0].lbtype) ? self.prizeSrc(award[0].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [1,3,5,7].map(function(item, index) { prizes[item] = thx; }); this.data.thxIndexArr = [1,3,5,7]; }; if(length == 2) { [0,4].map(function(item, index) { prizes[item] = { id: award[0].id, lbtype: award[0].lbtype, fonts: [{ text: award[0].luck_goods_name + ' x' + award[0].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[0].lbtype) ? self.prizeSrc(award[0].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [2,6].map(function(item, index) { prizes[item] = { id: award[1].id, lbtype: award[1].lbtype, fonts: [{ text: award[1].luck_goods_name + ' x' + award[1].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[1].lbtype) ? self.prizeSrc(award[1].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [1,3,5,7].map(function(item, index) { prizes[item] = thx; }); this.data.thxIndexArr = [1,3,5,7]; }; if(length == 3) { [0,4].map(function(item, index) { prizes[item] = { id: award[0].id, lbtype: award[0].lbtype, fonts: [{ text: award[0].luck_goods_name + ' x' + award[0].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[0].lbtype) ? self.prizeSrc(award[0].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [1,5].map(function(item, index) { prizes[item] = { id: award[1].id, lbtype: award[1].lbtype, fonts: [{ text: award[1].luck_goods_name + ' x' + award[1].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[1].lbtype) ? self.prizeSrc(award[1].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [2,6].map(function(item, index) { prizes[item] = { id: award[2].id, lbtype: award[2].lbtype, fonts: [{ text: award[2].luck_goods_name + ' x' + award[2].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[2].lbtype) ? self.prizeSrc(award[2].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [3,7].map(function(item, index) { prizes[item] = thx; }); this.data.thxIndexArr = [3,7]; }; if(length == 4) { [0,2,4,6].map(function(item, index) { prizes[item] = { id: award[index].id, lbtype: award[index].lbtype, fonts: [{ text: award[index].luck_goods_name + ' x' + award[index].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[index].lbtype) ? self.prizeSrc(award[index].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [1,3,5,7].map(function(item, index) { prizes[item] = thx; }); this.data.thxIndexArr = [1,3,5,7]; }; if(length == 5) { [0,2,3,5,6].map(function(item, index) { prizes[item] = { id: award[index].id, lbtype: award[index].lbtype, fonts: [{ text: award[index].luck_goods_name + ' x' + award[index].num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(award[index].lbtype) ? self.prizeSrc(award[index].lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); [1,4,7].map(function(item, index) { prizes[item] = thx; }); this.data.thxIndexArr = [1,4,7]; }; if(length == 6) { prizes = award.map(function(item, index) { return { id: item.id, lbtype: item.lbtype, fonts: [{ text: item.luck_goods_name + ' x' + item.num, top: '18%', wordWrap:false, fontColor: 'transparent'}], imgs: [ { src: self.prizeSrc(item.lbtype) ? self.prizeSrc(item.lbtype): (imghost + 'miniapp/images/luckDraw/lb.png'), width: '135rpx', height: '107rpx', top: '12%', } ], }; }); prizes.push(thx); prizes.splice(3, 0, thx); this.data.thxIndexArr = [3,7]; }; // console.log('prizes', prizes); this.setData({ prizes, }); }, // 根据lbtype指定奖品类别图标 prizeSrc(lbtype) { let src = ''; // let imghost = this.data.imghost; switch(lbtype) { case 1: { //积分 src = imghost + 'miniapp/images/luckDraw/jf.png'; break; }; case 2: { //成长值 src = imghost + 'miniapp/images/luckDraw/czz.png'; break; }; case 3: { //优惠券 src = imghost + 'miniapp/images/luckDraw/yhq.png'; break; }; case 4: { //服务项目 src = imghost + 'miniapp/images/luckDraw/fw.png'; break; }; case 5: { //赠品 src = imghost + 'miniapp/images/luckDraw/zp.png'; break; }; case 6: { //礼包 src = imghost + 'miniapp/images/luckDraw/lb.png'; break; }; }; return src; }, // 获取抽奖结果匹配对应奖品在奖品列表里的所有索引号 luckyIndex(arr, target) { var results=[], len = arr.length, pos = 0; while(pos < len){ // pos = arr[pos].indexOf(target, pos); if(arr[pos].id == target) { results.push(pos);//找到就存储索引 }; pos += 1;//并从下个位置开始搜索 // if(pos === -1){//未找到就退出循环完成搜索 // break; // }; } // console.log('当前奖品列表', this.data.prizes); // console.log('中奖结果在当前奖品列表中的索引', results); return results; }, start () { if(!this.data.luckInfo) { wx.showToast({ title: this.data.msg, icon: 'none', }); return; }; if(self.data.luckInfo.msgInfo) { wx.showToast({ title: self.data.luckInfo.msgInfo, icon: 'none', }); return; }; if(this.data.luckInfo.user_LuckNumDay > 0 || this.data.luckInfo.vip_act_num == 0) { // console.log('start choujiang'); // let start = false; if(!this.data.start) { this.data.start = true; // 获取抽奖组件实例 const $lucky = this.selectComponent('#myLucky'); // 调用play方法开始旋转 $lucky.play(); // 获取抽奖结果 app.request.post('/api/weshop/marketing/marketingLuckForm/startLuck', { isShowLoading: false, data: { storeId: app.globalData.setting.stoid, userId: app.globalData.userInfo.user_id, LuckId: this.data.options.id, }, success: function(res) { if(res.data.code == 0) { console.log('开始摇奖', res.data.data); if(self.data.luckInfo.vip_act_num != 0) { self.setData({ 'luckInfo.user_LuckNumDay': self.data.luckInfo.user_LuckNumDay - 1, // isActive: true, }); }; self.setData({ // 'luckInfo.user_LuckNumDay': self.data.luckInfo.user_LuckNumDay - 1, isActive: true, wow: res.data.data, }); // console.log('请求成功', res.data.data); let luckyId = res.data.data.id; let indexArr = self.luckyIndex(self.data.prizes, luckyId); // console.log('抽奖奖品id', luckyId); // console.log('奖品列表', self.data.prizes); // console.log('奖品对应的索引数组', indexArr); let random = Math.random() * indexArr.length >> 0; // console.log('random', random); let index = indexArr[random]; setTimeout(() => { $lucky.stop(index); self.data.start = false; }, 3000); //获取兑奖记录 // app.request.get('/api/weshop/marketing/marketingLuckRecord/page', { // isShowLoading: false, // data: { // store_id: app.globalData.setting.stoid, // user_id: app.globalData.userInfo.user_id, // luck_formid: self.data.options.id, // luck_state: 1 // }, // success: function(res) { // if(res.data.code == 0) { // // console.log('res===>', res.data.data.pageData); // self.setData({ // record: res.data.data.pageData, // }); // }; // }, // }); } else { let thxIndexArr = self.data.thxIndexArr; const random = Math.random() * thxIndexArr.length >> 0; const index = thxIndexArr[random]; // console.log('谢谢参与数组', thxIndexArr); // console.log('请求出错产生谢谢参与的随机数', index); setTimeout(() => { $lucky.stop(index); self.data.start = false; }, 3000); if(res.data.code == -1) { wx.showToast({ title: res.data.msg, icon: 'none', }); self.data.luckInfo.msgInfo = res.data.msg; return; // self.data.start = true; }; // console.log('请求出错'); if(res.data.code == -2 && self.data.luckInfo.vip_act_num != 0) { self.setData({ 'luckInfo.user_LuckNumDay': self.data.luckInfo.user_LuckNumDay - 1, }); }; }; }, fail: function(res) { // console.log('出错'); wx.showToast({ title: '数据请求失败', icon: 'error', }); let thxIndexArr = self.data.thxIndexArr; const random = Math.random() * thxIndexArr.length >> 0; const index = thxIndexArr[random]; setTimeout(() => { $lucky.stop(index); self.data.start = false; }, 3000); }, }); } } else { wx.showToast({ title: '你今天的抽奖次数已用完啦!~', icon: 'none', }); }; }, end (event) { // 中奖奖品详情 console.log('00000000~',event.detail.lbtype); let no_luck_urltype = this.data.luckInfo.no_luck_urltype; let lbtype; let resultTitle = event.detail.fonts[0].text.replace('\n',''); if(event.detail.lbtype == 5) { lbtype = 5; } else { lbtype = -1; }; this.setData({ num: 3, hiddenCanvas: true, showResult: true, showMask: true, resultTitle, showPopup: false, currentLbtype: lbtype, }); if(no_luck_urltype == 1 && resultTitle == '谢谢参与') { if(this.data.luckInfo.no_luck_weappurl) { let num = this.data.num; let url = this.data.luckInfo.no_luck_weappurl; self.timer = setInterval(function() { if(num == 0) { clearInterval(self.timer); app.goto(url); } else { self.setData({ num: --num, }); } }, 1000); }; }; if(self.data.luckInfo.give_user) { if(resultTitle == '谢谢参与') { if(self.data.luckInfo.give_type == 1) { if(self.data.luckInfo.give_integral > 0) { wx.showToast({ title: `获得游戏奖励积分${self.data.luckInfo.give_integral}`, icon: 'none', }); }; } else if((self.data.luckInfo.give_type == 2)) { if(self.data.luckInfo.give_integral > 0) { wx.showToast({ title: `获得游戏奖励成长值${self.data.luckInfo.give_growth}`, icon: 'none', }); }; }; }; } else { if(self.data.luckInfo.give_type == 1) { if(self.data.luckInfo.give_integral > 0) { wx.showToast({ title: `获得游戏奖励积分${self.data.luckInfo.give_integral}`, icon: 'none', }); }; } else if((self.data.luckInfo.give_type == 2)) { if(self.data.luckInfo.give_integral > 0) { wx.showToast({ title: `获得游戏奖励成长值${self.data.luckInfo.give_growth}`, icon: 'none', }); }; }; }; }, showPopup() { this.setData({ list: null, pageNum: 1, noMore: false, }); this.getData(true, '/api/weshop/marketing/marketingLuckRecord/page', { store_id: app.globalData.setting.stoid, user_id: app.globalData.userInfo.user_id, luck_formid: this.data.options.id, luck_state: 1, }).then(function(res) { self.setData({ showPopup: true, showMask: true, hiddenCanvas: true, }); }); // this.setData({ // showPopup: true, // showMask: true, // hiddenCanvas: true, // 'list.pageData': this.data.record, // // record: self.data.list.pageData, // }); }, closePopup() { this.setData({ showPopup: false, showMask: false, hiddenCanvas: false, }); }, /** * 关闭中奖结果 */ closeResult() { clearInterval(this.timer); this.setData({ num: 3, showResult: false, showMask: false, hiddenCanvas: false, }); }, loadmore() { this.scrollToLower('/api/weshop/marketing/marketingLuckRecord/page', { store_id: app.globalData.setting.stoid, user_id: app.globalData.userInfo.user_id, luck_formid: this.data.options.id, luck_state: 1, }); }, /** * 请求数据 */ getData: function(isInit, url, data) { let p = app.request.promiseGet(url, { data: data, isShowLoading: true, }) .then(function(res) { if(res.data.code == 0) { self.setData({ isLoading: false }); if(isInit) {// 第一次加载 self.setData({ list: res.data.data }); } else { self.setData({ 'list.pageData': self.data.list.pageData.concat(res.data.data.pageData) }); }; if((res.data.data.pageData.length == 0) || (res.data.data.pageSize * res.data.data.page >= res.data.data.total)) { self.setData({ noMore: true }); }; } else { self.setData({ 'list.pageData': [] }); }; }); return p; }, /** * 上拉加载 */ scrollToLower(url, requestData) { // 数据总量 let total = this.data.list.total; // 单页最大数据量 let pageSize = this.data.list.pageSize; // 如果数据总量不为0且小于或等于单页最大数据量,说明数据已全部加载,显示‘没有更多了’ if((total != 0)&&(total <= pageSize)) { this.setData({ noMore: true }); }; if(!this.data.isLoading && !this.data.noMore) { this.setData({ isLoading: true, pageNum: this.data.pageNum + 1 }); requestData.page = this.data.pageNum; this.getData(false, url, requestData); }; }, goto(e) { let url = ''; let type = e.currentTarget.dataset.type; switch(type) { case 1: { url = '/pages/user/integral/integral'; break; }; case 2: { url = '/pages/user/grow_value/grow_value'; break; }; case 3: { url = '/pages/user/coupons/coupons'; break; }; case 4: { url = '/pages/user/my_service/i_service'; break; }; case 6: { url = '/packageA/pages/myGift/myGift?index=1'; break; }; }; app.goto(url); }, showQr(e) { let store_id = app.globalData.setting.stoid; let id = e.currentTarget.dataset.id; let url = `/api/weshop/marketing/marketingLuckList/updateGoodsVerifyCode/${store_id}/${id}`; app.request.put(url, { success: function(res) { if(res.data.code == 0) { let data = res.data.data; console.log('data!!!!', data); let barcode = self.selectComponent("#qrcode"); barcode.open({val: data}); self.setData({ hiddenCanvas: true, showPopup: false, }); }; }, }); }, closeQr() { this.setData({ hiddenCanvas: false, showMask: false, }); }, clickReceive() { this.setData({ showResult: false, }); this.showPopup(); }, })