0
点赞
收藏
分享

微信扫一扫

vue写抽奖大转盘

alanwhy 2022-01-12 阅读 69

圆盘抽取活动我是用的第三方插件写的,叫lucky-canvas工具
https://100px.net/
npm安装:

npm install @lucky-canvas/vue@latest

在全局中引入:

import VueLuckyCanvas from '@lucky-canvas/vue'
Vue.use(VueLuckyCanvas)

这个网站提供了js、vue、react和微信小程序等方法中使用,需要的都可以参考

当我们刚进入页面就是这样子,啥也没有,因为我们需要调接口展示转盘数据的。
在这里插入图片描述
选择数据后右侧转盘会自动填充数据
在这里插入图片描述
抽取结束后会自动填充表格中并将表格中这条数据禁用
在这里插入图片描述
具体代码如下:

<LuckyWheel
    width="250px"
    height="250px"
    :blocks="blocks"
    :prizes="prizes"
    :buttons="buttons"
    :defaultConfig="defaultConfig"
    @start="startCallBack"
    @end="endCallBack"
     ref="myLucky"
 />

在data中定义:

  		blocks: [{ padding: '10px', background: '#869cfa' }],
        prizes: [],//用来接收转盘的数据
        buttons: [
          { radius: '50%', background: '#617df2' },
          { radius: '45%', background: '#afc8ff' },
          {
            radius: '40%', background: '#869cfa',
            pointer: true,
            fonts: [{ text: '开始\n抽取', top: '-20px' }]
          },
        ],
        defaultConfig: {
          stopRange: 0.5
        }

js部分:

startCallBack () {//转盘开始转动
//我判断了一下,如果转盘没数据我就提示先选择数据
      if(this.prizes .length == 0){
          this.$message.warning("请先选择主营范围和填写主(备)供应商")
          return
      }else{
          // 开始游戏
        this.$refs.myLucky.play()
        // 假设接口的请求速度是5s
        setTimeout(() => {
          // 5s后拿到后端返回的中奖索引
          const index = 0
          // 然后停止游戏 (缓慢停止)
          this.$refs.myLucky.stop(index)
        }, 3000)
      }
    },
    endCallBack (prize) {
    //转盘停止后将抽取到的数据重组一下数组,放到table表格内去
      this.$set(this.tableData[this.indexNumber],"text",prize.fonts[0].text)
      this.screenData = prize.id
      var iMun = parseInt(this.indexNumber)
      this.paize2.push({
              sort:iMun,
              comId:this.screenData
            })
    },
    //初始化方法获取转盘的数据来展示到转盘中(由于项目需求不同,所需要的获取数据方法不同)
    handelChange(){
      var ids = {socreId:this.fanwei}
        getscopeSum(ids).then((res)=>{
          this.prizes=[]
          if(res.code ===200){
            this.sumNumber = res.data.num
            this.zhuanpan = res.data.sups
            this.zhuanpan.forEach((item,index)=>{
              if(index%2 === 0){
                let obj ={fonts: [{ text: item.supName, top: 20,fontSize:14 }], wordWarp:true , background: '#e9e8fe',id:item.id }
                this.prizes.push(obj)
              }else{
              let obj ={ fonts: [{ text: item.supName, top: 20,fontSize:14 }], wordWarp:true , background: '#b8c5f2',id:item.id }
                this.prizes .push(obj)
              }
            })
          }
        })
    },

这就是抽奖大转盘的总结,有疑问的地方可以提出,我会即使改正和回复大家。

举报

相关推荐

0 条评论