| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 | 
							- // components/raffleWheel/raffleWheel.js
 
- //创建并返回内部 audio 上下文 innerAudioContext 对象
 
- const start = wx.createInnerAudioContext();
 
- const mid = wx.createInnerAudioContext();
 
- const stop = wx.createInnerAudioContext();
 
- var http = require('../../../utils/http.js')
 
- Component({
 
-   options: {
 
-     multipleSlots: true // 在组件定义时的选项中启用多slot支持
 
-   },
 
-   /**
 
-    * 组件的属性列表
 
-    * 用于组件自定义设置   组件的对外属性
 
-    */
 
-   properties: {
 
-     myProperty: { // 属性名        myProperty2: String, 简化的定义方式
 
-       type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
 
-       value: '', // 属性默认 初始值(可选),如果未指定则会根据类型选择一个
 
-       observer: function (newVal, oldVal, changedPath) {
 
-         // 属性被改变时执行的函数(可选),也可以写成在methods段中定义的方法名字符串, 如:'_propertyChange'
 
-         // 通常 newVal 就是新设置的数据, oldVal 是旧数据
 
-       }
 
-     },
 
-     size: {
 
-       type: Number, // 转盘大小,传入宽度即可
 
-       value: 600
 
-     },
 
-   },
 
-   /**
 
-    * 私有数据,组件的初始数据
 
-    * 可用于模版渲染
 
-    */
 
-   data: {
 
-     awardsConfig: {
 
-       option: '', //转盘的标题名称
 
-       awards: []
 
-     },
 
-     animationData: {}, // 转盘动画
 
-     zhuanflg: false, // 转盘是否可以点击切换的标志位
 
-     // fastTime: 7600,    // 转盘快速转动的时间
 
-     fastTime: 3900, // 转盘快速转动的时间
 
-     slowTime: 3900, // 转盘慢速转动的时间
 
-     runDegs: 0, // 转盘旋转了多少圈
 
-     timer: null, // 清除转盘的时间clearTimeout(timer)
 
-     block1: 'block', // 控制显示或隐藏转盘中心的图片
 
-     block2: 'none',
 
-     block3: 'none',
 
-     block4: 'none'
 
-   },
 
-   //组件生命周期函数,在组件实例进入页面节点树时执行,注意此时不能调用 setData
 
-   created: function () {},
 
-   // 组件生命周期函数,在组件实例进入页面节点树时执行
 
-   attached: function () {
 
-     this.getScoreLuckPrizes()
 
-   },
 
-   /**
 
-    * 组件的方法列表
 
-    * 更新属性和数据的方法与更新页面数据的方法类似
 
-    */
 
-   methods: {
 
-     /*
 
-      * 公有方法
 
-      */
 
-     //判断值是否为空
 
-     isNull(str) {
 
-       if (str == null || str == undefined || str == '') {
 
-         return true;
 
-       } else {
 
-         return false;
 
-       }
 
-     },
 
-     //初始化数据
 
-     initAdards() {
 
-       var that = this,
 
-         awardsConfig = that.data.awardsConfig;
 
-       var t = awardsConfig.awards.length; // 选项长度
 
-       var e = 1 / t,
 
-         i = 360 / t,
 
-         r = i - 90;
 
-       for (var g = 0; g < t; g++) {
 
-         awardsConfig.awards[g].item2Deg = g * i + 90 - i / 2 + "deg";
 
-         //当前下标 * 360/长度 + 90 - 360/长度/2
 
-         awardsConfig.awards[g].afterDeg = r + "deg";
 
-         awardsConfig.awards[g].opacity = '1';
 
-       }
 
-       that.setData({
 
-         turnNum: e, // 页面的单位是turn
 
-         awardsConfig: awardsConfig,
 
-       })
 
-       that._change(); //向父组件传出当前转盘的初始数据
 
-     },
 
-     //重置转盘
 
-     reset() {
 
-       var that = this,
 
-         awardsConfig = that.data.awardsConfig;
 
-       var animation = wx.createAnimation({
 
-         duration: 1,
 
-         timingFunction: "ease"
 
-       });
 
-       that.animation = animation;
 
-       animation.rotate(0).step(), that.data.runDegs = 0;
 
-       that.setData({
 
-         animationData: animation.export(),
 
-         block3: 'none',
 
-         block4: 'block'
 
-       })
 
-       for (let x in awardsConfig.awards) {
 
-         awardsConfig.awards[x].opacity = '1';
 
-       }
 
-       setTimeout(function () {
 
-         that.setData({
 
-           block1: 'block',
 
-           block4: 'none',
 
-           awardsConfig: awardsConfig,
 
-         })
 
-       }, 300)
 
-     },
 
-     //父组件需要切换当前转盘的选项
 
-     //如果有需要切换不同转盘的选项时,可以调用这方法
 
-     //data: 转盘的数据
 
-     //flag: 当转盘在转动过程中如果你想停止的话,可以传个true值,默认可不传
 
-     switchZhuanpan(data, flag) {
 
-       this.setData({
 
-         awardsConfig: data,
 
-         block1: 'block',
 
-         block1: 'none',
 
-         block3: 'none',
 
-         block4: 'none',
 
-         zhuanflg: false,
 
-       })
 
-       this.initAdards();
 
-       if (flag) {
 
-         this.reset();
 
-         clearTimeout(this.data.timer);
 
-         start.stop();
 
-         mid.stop();
 
-         stop.stop();
 
-       }
 
-     },
 
-     /*
 
-      * 内部私有方法建议以下划线开头
 
-      * triggerEvent 用于触发事件,过triggerEvent来给父组件传递信息的
 
-      * 写法: this.triggerEvent('cancelEvent', { num: 1 })  // 可以将num通过参数的形式传递给父组件
 
-      */
 
-     // GO转盘开始转动
 
-     _zhuan() {
 
-       var that = this,
 
-         awardsConfig = that.data.awardsConfig,
 
-         runDegs = that.data.runDegs;
 
-       //>>> 是无符号移位运算符
 
-       var r = Math.random() * awardsConfig.awards.length >>> 0,
 
-         runNum = 8;
 
-       console.log('当前答案选项的下标=====', r);
 
-       setTimeout(function () {
 
-         //要转多少度deg
 
-         runDegs = runDegs || 0, runDegs = runDegs + (360 - runDegs % 360) + (2160 - r * (360 / awardsConfig.awards.length));
 
-         var animation = wx.createAnimation({
 
-           duration: that.data.fastJuedin ? that.data.slowTime : that.data.fastTime,
 
-           timingFunction: "ease"
 
-         });
 
-         that.animation = animation;
 
-         //这动画执行的是差值
 
-         //如果第一次写rotate(360) 那么第二次再写rotate(360)将不起效果
 
-         animation.rotate(runDegs).step(), 0 == r && (runDegs = 0);
 
-         that.setData({
 
-           animationData: animation.export(),
 
-           block1: 'none',
 
-           block2: 'block',
 
-           zhuanflg: true,
 
-         })
 
-         that._setatZhuan(true);
 
-       }, 100);
 
-       that.setData({
 
-         timer: setTimeout(function () {
 
-           that.setData({
 
-             animationData: {},
 
-             s_awards: awardsConfig.awards[r].prizeName, //最终选中的结果
 
-             awardsConfig: awardsConfig,
 
-             block2: 'none',
 
-             block3: 'block',
 
-             zhuanflg: false,
 
-           })
 
-           that._myAwards();
 
-         }, that.data.fastJuedin ? that.data.slowTime : that.data.fastTime)
 
-       })
 
-     },
 
-     //初始化数据时向外传的参
 
-     _change() {
 
-       this.triggerEvent('myData', this.data.awardsConfig); // 向父组件传出当前转盘的数组数据
 
-     },
 
-     //当前转盘的结果
 
-     _myAwards() {
 
-       this.triggerEvent('myAwards', this.data.s_awards)
 
-     },
 
-     //转盘开始转动或者结速转动后的要传的值
 
-     _setatZhuan(e) {
 
-       console.log(e)
 
-       var params = {
 
-         url: '/p/scoreLuck/raffle',
 
-         method: 'GET',
 
-         data: {
 
-           addId: 0
 
-         },
 
-         callBack: res => {
 
-           setTimeout(() => {
 
-             if (res.stock) {
 
-               wx.showModal({
 
-                 title: '运气爆棚!',
 
-                 showCancel: false,
 
-                 content: res.prizeName,
 
-                 success: () => {
 
-                   this.reset()
 
-                 }
 
-               })
 
-             } else {
 
-               wx.showModal({
 
-                 title: '谢谢参与',
 
-                 showCancel: false,
 
-                 content: '运气留给下次吧~',
 
-                 success: () => {
 
-                   this.reset()
 
-                 }
 
-               })
 
-             }
 
-           }, 2400)
 
-         },
 
-         errCallBack:(err)=>{
 
-           console.log(err)
 
-           wx.showModal({
 
-             title: '错误',
 
-             showCancel: false,
 
-             content: '服务器开了点小差,待会儿再来吧~',
 
-             success: () => {
 
-               this.reset()
 
-             }
 
-           })
 
-         }
 
-       }
 
-       http.request(params)
 
-     },
 
-     // 获取抽奖奖品列表
 
-     getScoreLuckPrizes() {
 
-       var params = {
 
-         url: '/p/scoreLuck/getScoreLuckPrizes',
 
-         method: 'GET',
 
-         data: {
 
-           consumeType: 1
 
-         },
 
-         callBack: res => {
 
-           res.forEach((el, index) => {
 
-             if (index % 2 === 0) {
 
-               el['color'] = "#FEFAEA"
 
-             } else {
 
-               el['color'] = '#FFE358'
 
-             }
 
-           })
 
-           this.setData({
 
-             'awardsConfig.awards': res
 
-           })
 
-           this.initAdards();
 
-         }
 
-       }
 
-       http.request(params)
 
-     },
 
-   }
 
- })
 
 
  |