index.blade.php 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. @extends('mobile.module.layouts.empty')
  2. @push('meta')
  3. @endpush
  4. @push('css')
  5. <link href="{{ theme_asset('mobile/css/lottery.css') }}" rel="stylesheet">
  6. @endpush
  7. @push('js')
  8. @endpush
  9. @section('content')
  10. @foreach ($images as $k => $v)
  11. <img src="{{ $v }}" id="gift-img{{$k}}" style="display:none;"/>
  12. @endforeach
  13. <div class="banner">
  14. <div class="bgbox">
  15. <div class="tabbox clearfix" id="tabbox">
  16. <div class="boxlist">
  17. <div class="turnplate">
  18. <canvas class="item" id="wheelcanvas" width="422px" height="422px"></canvas>
  19. <img class="pointer" src="{{ theme_asset('mobile/images/lottery/btn_start.png') }}"/>
  20. <div class="panbg"></div>
  21. </div>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. <div class="HDTitle">新春招聘会大转盘活动</div>
  27. <div class="HDinfo">
  28. <dl>
  29. <dt>活动说明</dt>
  30. <dd>
  31. <p>1.每次可以翻两张牌,当两次都翻到同一奖品时即为中奖,每天有三次机会;</p>
  32. <p>2.将获得发给一位微信好友,就可以增加3次机会,每天限5位好友;</p>
  33. <p>3.中奖粉丝成功提交个人信息后才能领取奖品;</p>
  34. </dd>
  35. </dl>
  36. <dl>
  37. <dt>活动奖品</dt>
  38. <dd>
  39. <p><em>1</em>IPHONE 5S一部(另送专用充电宝)</p>
  40. <p><em>2</em>佳能班单反相机 D700 </p>
  41. </dd>
  42. </dl>
  43. <dl>
  44. <dt>参与次数</dt>
  45. <dd>
  46. <p>您还可以抽奖次数:<i class="org"><span id="number">{{$number}}</span>次</i></p>
  47. </dd>
  48. </dl>
  49. </div>
  50. @endsection
  51. @section('script')
  52. <script type="text/javascript" src="{{ theme_asset('mobile/js/jquery-1.10.2.js') }}"></script>
  53. <script type="text/javascript" src="{{ theme_asset('mobile/js/awardRotate.js') }}"></script>
  54. <script type="text/javascript">
  55. // 欢乐转盘
  56. var turnplate = {
  57. number: "{{$number}}", //次数
  58. ids: [], //id列表
  59. restaraunts: [], //大转盘奖品名称
  60. colors: [], //大转盘奖品区块对应背景颜色
  61. images: [], //图片列表
  62. outsideRadius: 140, //大转盘外圆的半径
  63. textRadius: 150, //大转盘奖品位置距离圆心的距离
  64. insideRadius: 68, //大转盘内圆的半径
  65. startAngle: 0, //开始角度
  66. randomRate: [], //控制获奖率,百分制(相加需等于100%),对应restaraunts(顺序需要保持一致),
  67. bRotate: false //false:停止;ture:旋转
  68. };
  69. $(document).ready(function () {
  70. //动态添加大转盘的奖品与奖品区域背景颜色
  71. // 欢乐转盘
  72. turnplate.ids = {!! json_encode($ids)!!};
  73. turnplate.restaraunts = {!! json_encode($restaraunts)!!};
  74. turnplate.colors = {!! json_encode($colors)!!};
  75. turnplate.images = {!! json_encode($images)!!};
  76. var rotateTimeOut = function () {
  77. $('#wheelcanvas').rotate({
  78. angle: 0,
  79. animateTo: 2160,
  80. duration: 8000,
  81. callback: function () {
  82. alert('网络超时,请检查您的网络设置!');
  83. }
  84. });
  85. };
  86. //欢乐旋转转盘 item:奖品位置; txt:提示语;
  87. var rotateFn = function (item, txt) {
  88. var angles = item * (360 / turnplate.restaraunts.length) - (360 / (turnplate.restaraunts.length * 2));
  89. if (angles < 270) {
  90. angles = 270 - angles;
  91. } else {
  92. angles = 360 - angles + 270;
  93. }
  94. $('#wheelcanvas').stopRotate();
  95. $('#wheelcanvas').rotate({
  96. angle: 0,
  97. animateTo: angles + 1800,
  98. duration: 8000,
  99. callback: function () {
  100. alert(txt);//欢乐转盘弹出框
  101. turnplate.bRotate = !turnplate.bRotate;
  102. }
  103. });
  104. };
  105. // 欢乐转盘
  106. $('.pointer').click(function () {
  107. if (turnplate.number == 0) {
  108. alert('您今天已抽过奖,请明天再来!');
  109. return;
  110. }
  111. turnplate.number--;
  112. $('#number').html(turnplate.number);
  113. if (turnplate.bRotate) return;
  114. turnplate.bRotate = !turnplate.bRotate;
  115. //获取随机数(奖品个数范围内)
  116. $.post('{{route("mobile.lottery.lottery_post")}}', {open_id: "{{$open_id}}",type:"{{$type}}",_token:"{{csrf_token()}}"}, function (json) {
  117. if (json.status) {
  118. var item = 0;
  119. for (var i = 0; i < turnplate.ids.length; i++) {
  120. if (turnplate.ids[i] == json.id) {
  121. item = i + 1;
  122. break;
  123. }
  124. }
  125. //奖品数量等于10,指针落在对应奖品区域的中心角度[252, 216, 180, 144, 108, 72, 36, 360, 324, 288]
  126. rotateFn(item, json.msg);
  127. } else {
  128. alert(json.msg);
  129. }
  130. }, 'json');
  131. });
  132. });
  133. //页面所有元素加载完毕后执行drawRouletteWheel()方法对转盘进行渲染
  134. window.onload = function () {
  135. drawRouletteWheel();// 欢乐转盘
  136. };
  137. // 欢乐转盘
  138. function drawRouletteWheel() {
  139. var canvas = document.getElementById("wheelcanvas");
  140. if (canvas.getContext) {
  141. //根据奖品个数计算圆周角度
  142. var arc = Math.PI / (turnplate.restaraunts.length / 2);
  143. var ctx = canvas.getContext("2d");
  144. //在给定矩形内清空一个矩形
  145. ctx.clearRect(0, 0, 422, 422);
  146. //strokeStyle 属性设置或返回用于笔触的颜色、渐变或模式
  147. ctx.strokeStyle = "#FFBE04";
  148. //font 属性设置或返回画布上文本内容的当前字体属性
  149. ctx.font = '16px Microsoft YaHei';
  150. for (var i = 0; i < turnplate.restaraunts.length; i++) {
  151. var angle = turnplate.startAngle + i * arc;
  152. ctx.fillStyle = turnplate.colors[i];
  153. ctx.beginPath();
  154. //arc(x,y,r,起始角,结束角,绘制方向) 方法创建弧/曲线(用于创建圆或部分圆)
  155. ctx.arc(211, 211, turnplate.outsideRadius, angle, angle + arc, false);
  156. ctx.arc(211, 211, turnplate.insideRadius, angle + arc, angle, true);
  157. ctx.stroke();
  158. ctx.fill();
  159. //锁画布(为了保存之前的画布状态)
  160. ctx.save();
  161. //----绘制奖品开始----
  162. ctx.fillStyle = "#E5302F";
  163. var text = turnplate.restaraunts[i];
  164. var line_height = 17;
  165. //translate方法重新映射画布上的 (0,0) 位置
  166. ctx.translate(211 + Math.cos(angle + arc / 2) * turnplate.textRadius, 211 + Math.sin(angle + arc / 2) * turnplate.textRadius);
  167. //rotate方法旋转当前的绘图
  168. ctx.rotate(angle + arc / 2 + Math.PI / 2);
  169. /** 下面代码根据奖品类型、奖品名称长度渲染不同效果,如字体、颜色、图片效果。(具体根据实际情况改变) **/
  170. if (text.indexOf("M") > 0) {//流量包
  171. var texts = text.split("M");
  172. for (var j = 0; j < texts.length; j++) {
  173. ctx.font = j == 0 ? 'bold 20px Microsoft YaHei' : '16px Microsoft YaHei';
  174. if (j == 0) {
  175. ctx.fillText(texts[j] + "M", -ctx.measureText(texts[j] + "M").width / 2, j * line_height);
  176. } else {
  177. ctx.fillText(texts[j], -ctx.measureText(texts[j]).width / 2, j * line_height);
  178. }
  179. }
  180. } else if (text.indexOf("M") == -1 && text.length > 6) {//奖品名称长度超过一定范围
  181. text = text.substring(0, 6) + "||" + text.substring(6);
  182. var texts = text.split("||");
  183. for (var j = 0; j < texts.length; j++) {
  184. ctx.fillText(texts[j], -ctx.measureText(texts[j]).width / 2, j * line_height);
  185. }
  186. } else {
  187. //在画布上绘制填色的文本。文本的默认颜色是黑色
  188. //measureText()方法返回包含一个对象,该对象包含以像素计的指定字体宽度
  189. ctx.fillText(text, -ctx.measureText(text).width / 2, 0);
  190. }
  191. //添加对应图标
  192. var img = document.getElementById("gift-img" + i);
  193. img.onload = function () {
  194. ctx.drawImage(img, -18, 25, 40, 40);
  195. };
  196. ctx.drawImage(img, -18, 25, 40, 40);
  197. //把当前画布返回(调整)到上一个save()状态之前
  198. ctx.restore();
  199. //----绘制奖品结束----
  200. }
  201. }
  202. }
  203. </script>
  204. @endsection