js年会抽奖_公司年会用了我的抽奖程序,然后我中奖了……

博主接到紧急任务,在三天内为部门年会开发一个抽奖程序。选用Web技术栈,借助ElementUI框架快速构建界面,利用TagCanvas实现抽奖效果。虽然时间紧迫,代码质量一般,但成功完成任务。年会现场,博主还亲自抽中了四等奖。文章分享了开发过程及代码结构,可供参考。
摘要由CSDN通过智能技术生成

a7fe7c390edb62a6b46b9e5e769c107e.png

背景
临近年末,又到了各大公司举办年会的时候了。对于年会,大家最关心的应该就是抽奖了吧?虽然中奖概率通常不高,但总归是个机会,期待一下也是好的。
最近,我们部门举办了年会,也有抽奖环节。临近年会的前几天,Boss 突然找到我,说要做一个抽奖程序,部门年会要用。我当时都懵了:就三天时间,万一做的程序有bug,岂不是要被现场百十号人的唾沫给淹死?没办法,Boss 看起来对我很有信心,我也只能硬着头皮上了。
需求

  1. 要一个设置页面,包括设置奖项、参与人员名单等。
  2. 如果单个奖项中奖人数过多,可分批抽取,每批人数可设置。
  3. 默认按奖项顺序抽奖,也可选定某个奖项开始。
  4. 可删除没到场的中奖者,同时可再次抽取以作替补。
  5. 可在任意奖项之间切换,可查中奖记录名单
  6. 支持撤销当前轮次的抽奖结果,重新抽取。

实现
身为Web前端开发,自然想到用Web技术来实现。本着不重复造轮子的原则,首先求助Google,Github。搜了一圈好像没有找到特别好用的程序能直接用的。后来看到一个Github上的一个项目,用 TagCanvas 做的抽奖程序,界面挺好,就是逻辑有问题,点几次就崩溃了。代码是不能拿来用了,标签云这种抽奖形式倒是可以借鉴。于是找来文档看了下基本用法,很快就集成到页面里了。
由于设置页面涉及多种交互,纯手写太费时间了,直接用框架。平时 Element UI 用得比较多,自然就用它了。考虑到年会现场可能没有网络,就把框架相关的JS和CSS都下载到本地,直接引用。为了快速开发,也没搭建webpack构建工具了,直接在浏览器里引入JS。

  <link rel="stylesheet" href="css/reset.css" />
    <link
      rel="stylesheet"
      href="js/element-ui@2.4.11/lib/theme-chalk/index.css"
    />
    <script src="js/polyfill.min.js"></script>
    <script src="js/vue.min.js"></script>
    <script src="js/element-ui@2.4.11/lib/index.js"></script>
    <script src="js/member.js"></script>
  1. 先设计数据结构。 奖项列表 awards
 [{
    "name": "二等奖",
    "count": 25,
    "award": "办公室一日游"
}, {
    "name": "一等奖",
    "count": 10,
    "award": "BMW X5"
}, {
    "name": "特等奖",
    "count": 1,
    "award": "深圳湾一号"
}]

参与人列表 members

[{
  "id": 1,
  "name": "张三"
}, {
  "id": 2,
  "name": "李四"
}]

待抽奖人员列表players,是members 的子集

[{
  "id": 1,
  "name": "张三"
}]

抽奖结果列表result,按奖项顺序索引

[[{
    "id": 1,
    "name": "张三"
}], [{
    "id": 2,
    "name": "李四"
}]]


2.设置页面 包括奖项设置和参与人员列表。

1f70a39c9577464f1e65f0a8b8fe7e4b.png

3.抽奖页面

b6b262057dc0a68409636a3b605ac529.png

具体代码可以去我的Github项目 查看,可以现在体验一下。由于时间仓促,代码写得比较将就。
年会当天抽中了四等奖:1000元购物卡。我是不是该庆幸自己没中特等奖……

我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我并在后台私信我:前端,即可免费获取

5028bc1e3b9d84d17da206eda1f4cb93.png
作者:KaysonLi
链接: https:// juejin.im/post/5e018817 51882512243fa650
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值