"];
+ $(this.entries).each(function(i, val) {
+ var color = val.award_id ? "yellow" : "white";
+ html.push(
+ '' +
+ val.name +
+ ""
+ );
+ // html.push(`' + item.name + '`);
+ });
+ html.push("");
+ return html.join("");
+ }
+ },
+ {
+ key: "createCanvas",
+ value: function createCanvas() {
+ var canvas = document.createElement("canvas");
+ canvas.id = this.id;
+ canvas.width = 1024;
+ canvas.height = 600;
+ document.getElementById("holder").appendChild(canvas);
+ this.canvas = canvas;
+ canvas.innerHTML = this.createHTML();
+ TagCanvas.Start("myCanvas", "", {
+ textColour: null,
+ initial: Tag.speed(),
+ dragControl: 1,
+ textHeight: 14
+ });
+ }
+ },
+ {
+ key: "markYellow",
+ value: function markYellow(users) {
+ var color = "yellow";
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (
+ var _iterator = users[Symbol.iterator](), _step;
+ !(_iteratorNormalCompletion = (_step = _iterator.next()).done);
+ _iteratorNormalCompletion = true
+ ) {
+ var user = _step.value;
+
+ $(this.canvas)
+ .find("[data-uid=" + user.uid + "]")
+ .css("color", color);
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ TagCanvas.Reload(this.id);
+ }
+ },
+ {
+ key: "fast",
+ value: function fast() {
+ TagCanvas.SetSpeed(this.id, [5, 1]);
+ }
+ },
+ {
+ key: "stop",
+ value: function stop() {
+ TagCanvas.SetSpeed(this.id, Tag.speed());
+ TagCanvas.Reload(this.id);
+ }
+ }
+ ],
+ [
+ {
+ key: "speed",
+ value: function speed() {
+ return [0.1 * Math.random() + 0.01, -(0.1 * Math.random() + 0.01)];
+ }
+ }
+ ]
+ );
+
+ return Tag;
+})();
+
+var Index = (function() {
+ function Index() {
+ var _this = this;
+
+ _classCallCheck(this, Index);
+
+ this.running = false;
+ this.currentAward = "";
+ this.entries = [];
+ this.buildCloud().then(function() {
+ _this.canvas3DTagCloud = new Tag(_this.entries);
+ });
+ this.bindEvent();
+ this.initVisualSocket();
+ }
+
+ _createClass(Index, [
+ {
+ key: "buildCloud",
+ value: function buildCloud() {
+ var _this2 = this;
+
+ return BS.getUsers().then(function(resp) {
+ console.log(resp);
+ _this2.entries = resp.data;
+ });
+ }
+ },
+ {
+ key: "initVisualSocket",
+ value: function initVisualSocket() {
+ var _this3 = this;
+
+ var tempAwardId = "";
+ setInterval(function() {
+ tempAwardId = localStorage.getItem("current_award");
+ if (_this3.currentAward !== tempAwardId) {
+ /*change*/
+ // window.location.reload(1);
+ _this3.currentAward = tempAwardId;
+ _this3.refreshCurrentAward();
+ }
+ }, 1000);
+ }
+ },
+ {
+ key: "refreshCurrentAward",
+ value: function refreshCurrentAward() {
+ if (this.currentAward === "") return;
+ BS.getAward(this.currentAward).then(function(resp) {
+ console.log(resp);
+ if (resp.status === 200) {
+ var awardInfo = resp.data;
+ $("#currentAwardName").html(awardInfo.award_name);
+ $("#currentTimes").html(awardInfo.award_capacity);
+ }
+ });
+ }
+ },
+ {
+ key: "bindEvent",
+ value: function bindEvent() {
+ var _this4 = this;
+
+ $("#start").click(function() {
+ if (_this4.running) {
+ alert("正在抽奖");
+ return;
+ }
+ _this4.canvas3DTagCloud.fast();
+ BS.run().then(function(resp) {
+ console.log(resp);
+ _this4.running = true;
+ });
+ });
+ $("#end").click(function() {
+ if (!_this4.running) {
+ return;
+ }
+ console.log("click");
+ BS.stopAndResult(_this4.currentAward).then(function(resp) {
+ console.log(resp);
+ if (resp.status === 200) {
+ _this4.stopLottery(resp.data);
+ _this4.running = false;
+ } else {
+ _this4.running = false;
+ _this4.canvas3DTagCloud.stop();
+ layer.alert(resp.msg);
+ }
+ });
+ });
+ $(document).on("click", function() {
+ $("#result").hide();
+ $(".holder").removeClass("mask");
+ });
+ $("#luckyUsers").click(function() {
+ _this4.list();
+ });
+ }
+ },
+ {
+ key: "stopLottery",
+ value: function stopLottery(data) {
+ this.canvas3DTagCloud.stop();
+ this.currentlist(data);
+ this.canvas3DTagCloud.markYellow(data);
+ }
+
+ /**
+ * 当前轮结果
+ * @param data
+ */
+ },
+ {
+ key: "currentlist",
+ value: function currentlist(data) {
+ // let offset = $(".holder").offset();
+ var DOM = "";
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (
+ var _iterator2 = data[Symbol.iterator](), _step2;
+ !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done);
+ _iteratorNormalCompletion2 = true
+ ) {
+ var user = _step2.value;
+
+ DOM +=
+ '' +
+ user.name +
+ "
" +
+ user.uid +
+ "";
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ DOM += "";
+ $("#result")
+ .show()
+ .html(DOM);
+ setTimeout(function() {
+ $(".holder").addClass("mask");
+ }, 10);
+ }
+
+ /**
+ * 所有结果
+ */
+ },
+ {
+ key: "list",
+ value: function list() {
+ var offset = $(".holder").offset();
+ var awards = {};
+ var load = layer.load(2);
+ BS.getAwards()
+ .then(function(resp) {
+ resp.data.map(function(val) {
+ console.log(val);
+ if (typeof awards[val.award_id] === "undefined") {
+ awards[val.award_id] = {};
+ }
+ awards[val.award_id].name = val.award_name;
+ awards[val.award_id].data = [];
+ });
+ })
+ .then(function() {
+ return BS.getLuckyUsers().then(function(resp) {
+ resp.data.map(function(val) {
+ awards[val.award_id].data.push(val);
+ });
+ });
+ })
+ .then(function() {
+ layer.close(load);
+ console.log(awards);
+ var content = "";
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (
+ var _iterator3 = Object.keys(awards)[Symbol.iterator](), _step3;
+ !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next())
+ .done);
+ _iteratorNormalCompletion3 = true
+ ) {
+ var key = _step3.value;
+
+ var award = awards[key];
+ var lisArray = award.data.map(function(data) {
+ return (
+ '' +
+ data.name +
+ "\u3010" +
+ data.uid +
+ "\u3011"
+ );
+ });
+ if (lisArray.length !== 0) {
+ content +=
+ "\n \n " +
+ award.name +
+ "
\n \n " +
+ lisArray.join("") +
+ "\n
\n \n ";
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ layer.open({
+ type: 1,
+ area: ["1024px", "600px"],
+ skin: "layui-layer-lan", //样式类名
+ offset: [offset.top, offset.left],
+ closeBtn: 1, //不显示关闭按钮
+ anim: 3,
+ title: "所有中奖名单",
+ shadeClose: false, //开启遮罩关闭
+ content: '\n' + content + "\n
"
+ });
+ });
+ }
+ }
+ ]);
+
+ return Index;
+})();
diff --git a/src/static/js/manage.min.js b/src/static/js/manage.min.js
new file mode 100644
index 0000000..b3180dd
--- /dev/null
+++ b/src/static/js/manage.min.js
@@ -0,0 +1,178 @@
+"use strict";
+
+var _createClass = (function() {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function(Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+})();
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+/**
+ * Created by zuowenqi on 2018/2/2 0002
+ */
+var BS = (function() {
+ function BS() {
+ _classCallCheck(this, BS);
+ }
+
+ _createClass(BS, null, [
+ {
+ key: "fetch",
+ value: function fetch(url, data, type) {
+ return new Promise(function(resolve) {
+ $.ajax({
+ type: type ? type : "GET",
+ data: data ? data : {},
+ url: url,
+ success: function success(resp) {
+ resolve(resp);
+ }
+ });
+ });
+ }
+ },
+ {
+ key: "addAwards",
+ value: function addAwards(award_name, award_capacity) {
+ award_capacity *= 1;
+ return this.fetch("/add_award", {
+ award_name: award_name,
+ award_capacity: award_capacity
+ });
+ }
+ },
+ {
+ key: "removeAwards",
+ value: function removeAwards(award_id) {
+ return this.fetch("/remove_award", {
+ award_id: award_id
+ });
+ }
+ },
+ {
+ key: "getAwards",
+ value: function getAwards() {
+ return this.fetch("/awards");
+ }
+ },
+ {
+ key: "setCurrent",
+ value: function setCurrent(id) {
+ return new Promise(function(resolve) {
+ var prev = localStorage.getItem("current_award") || "";
+ localStorage.setItem("prev_award", prev);
+ localStorage.setItem("current_award", id);
+ resolve(localStorage.getItem("current_award"));
+ });
+ }
+ },
+ {
+ key: "getCurrent",
+ value: function getCurrent() {
+ return localStorage.getItem("current_award");
+ }
+ }
+ ]);
+
+ return BS;
+})();
+
+$(function() {
+ $("#add").click(function(e) {
+ layer.open({
+ title: "增加",
+ content:
+ '\n\u5956\u54C1\u540D
\n\u6570 \u91CF
\n',
+ yes: function yes(index) {
+ var name = $("#addname").val();
+ var num = $("#addnum").val();
+ BS.addAwards(name, num).then(function(resp) {
+ console.log(resp);
+ flushAwards();
+ if (resp.status === 200) {
+ layer.close(index);
+ } else {
+ alert(resp.msg);
+ }
+ });
+ }
+ });
+ });
+ $("#reset").click(function(e) {
+ layer.confirm("确定要重置吗", function(index) {
+ BS.fetch("/reset").then(function(resp) {
+ if (resp.status === 200) {
+ layer.close(index);
+ window.location.reload(1);
+ }
+ });
+ });
+ });
+ $(document)
+ .on("click", ".js-set", function(e) {
+ var aid = $(e.target).data("aid");
+ var $lis = $("#awardList").find("li");
+ BS.setCurrent(aid).then(function() {
+ $lis.removeClass("cur");
+ $(e.target)
+ .closest("li")
+ .addClass("cur");
+ });
+ })
+ .on("click", ".js-remove", function(e) {
+ layer.confirm("确认要删除该项?", function() {
+ var aid = $(e.target).data("aid");
+ var loadIndex = layer.load(2);
+ BS.removeAwards(aid).then(function(resp) {
+ if (resp.status === 200) {
+ flushAwards();
+ layer.close(loadIndex);
+ } else {
+ layer.close(loadIndex);
+ layer.alert(resp.msg);
+ }
+ });
+ });
+ });
+ flushAwards();
+});
+
+function flushAwards() {
+ var currentAward = BS.getCurrent();
+ BS.getAwards().then(function(resp) {
+ console.log(resp);
+ var ul = "";
+ resp.data.forEach(function(val) {
+ var list =
+ ' \n \n \n \n \u5956\u9879\u540D\u79F0\uFF1A' +
+ val.award_name +
+ "\uFF0C\u6570\u91CF\uFF1A" +
+ val.award_capacity +
+ "\n
\n ";
+ ul += list;
+ });
+ $("#awardList").html(ul);
+ });
+}
diff --git a/src/static/script.js b/src/static/script.js
deleted file mode 100644
index f09d225..0000000
--- a/src/static/script.js
+++ /dev/null
@@ -1,242 +0,0 @@
-var ALL_USERS = [];
-var ALL_AWARDS = [];
-var g_Interval = 50;
-var g_Timer; // 抽奖程序定时器
-var g_winner = null;
-var g_award = null;
-var running = false;
-
-//跑马灯音效
-var runingmic = document.getElementById("runingmic");
-runingmic.volume = 0.5;
-
-//中奖音效
-var pausemic = document.getElementById("pausemic");
-pausemic.volume = 1.0;
-
-UpdateUserList(); // 更新抽奖名单
-UpdateAwardList(); // 更新奖品列表
-UpdateWinnerList(); // 更新中奖名单
-
-
-function beginRndNum(trigger) {
- if (running) {
- running = false;
- runingmic.pause(); // 停止抽奖音乐
- pausemic.play(); // 播放庆祝音乐
- clearTimeout(g_Timer); // 停止抽奖滚动条
- $(trigger).val("开始");
- $('#ResultNum').css('color', 'red');
-
- WinAward(g_winner.name, g_award.tag); // 提交中奖名单
- UpdateUserList(); // 更新抽奖名单
- UpdateAwardList(); // 更新奖品列表
- UpdateWinnerList(); // 更新中奖名单
- UpdateCurrentAward(g_award.tag); // 更新当前奖品
-
- }
- else {
- if (g_award == null) {
- layer.alert('老板,奖品都没选,这是要干啥了?', {icon: 5});
- return GameOver();
- }
- else if (ALL_USERS.length == 0) {
- layer.alert("所有人都中奖了,老板还要继续抽奖吗?", {icon: 5});
- return GameOver();
- }
- else if (g_award.count <= 0) {
- layer.alert("老板,奖品都没了,还要继续吗?", {icon: 5});
- return GameOver();
- }
- pausemic.pause(); // 停止庆祝音乐
- runingmic.play(); // 开始抽奖音乐
- running = true;
- $('#ResultNum').css('color', 'black');
- $(trigger).val("停止");
- beginTimer();
- }
-}
-
-// 关键地方
-function UpdateName() {
- var g_PersonCount = ALL_USERS.length; //参加抽奖人数
- var num = Math.floor(Math.random() * g_PersonCount);
- g_winner = ALL_USERS[num];
- $('#ResultNum').html(g_winner.name);
-}
-
-function beginTimer() {
- g_Timer = setTimeout(beat, g_Interval);
-}
-
-function beat() {
- g_Timer = setTimeout(beat, g_Interval);
- UpdateName();
-}
-
-// 关闭异步
-function UpdateUserList() {
- $.ajax({
- url: "/users",
- type: "GET",
- async: false,
- success: function (result) {
- ALL_USERS = result.data;
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- },
- complete: function (XMLHttpRequest, textStatus) {
- }
- })
-}
-// 关闭异步
-function UpdateWinnerList() {
- $.ajax({
- url: "/winner",
- type: "GET",
- async: false,
- success: function (result) {
- var winners = result.data;
- var winner_list = $("#winner-list");
- winner_list.find('a').remove();
- for (var i = 0; i < winners.length; i++) {
- var w = winners[i];
- var content = '' + w.name + '' + w.awards + '';
- winner_list.append(content);
- }
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- },
- complete: function (XMLHttpRequest, textStatus) {
- }
- })
-}
-
-
-function UpdateAwardList() {
- $.ajax({
- url: "/awards",
- type: "GET",
- async: false,
- success: function (result) {
- var awards_list = $("#awards-list");
- awards_list.find('a').remove();
- ALL_AWARDS = result.data;
- for (var i = 0; i < ALL_AWARDS.length; i++) {
- var w = ALL_AWARDS[i];
- var content = '' + w.tag + '' + w.count + '';
- awards_list.append(content);
- }
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- },
- complete: function (XMLHttpRequest, textStatus) {
- }
- })
-}
-
-$("#awards-list").on("click", 'a', function () {
- var name = $(this).attr("name");
- UpdateCurrentAward(name);
-});
-
-$("#winner-list").on("click", 'a', function () {
- var name = $(this).attr("name");
- layer.confirm('撤销奖品???', {
- icon: 0,
- btn: ['确定', '取消'] //按钮
- }, function () {
- layer.msg('悲催!!!!', {icon: 0});
- Revoke(name); //撤销奖项
- }, function () {
- layer.msg('吓死宝宝了!!!!', {icon: 1})
- });
-});
-
-
-$(document).bind("keydown", function (ev) {
- if (ev.keyCode == 13) { // 按回车
- $('#btn').click();
- }
- else if (ev.keyCode == 49) { // 按1
- $('#myModal').modal('toggle');
- }
-
- else if (ev.keyCode == 48) { // 按0
- layer.confirm('确定要重置数据???',{
- icon: 1,
- btn: ['确定', '取消'] //按钮
- }, function () {
- Reset(); //数据重置
- }, function () {
- });
-
- }
-});
-
-
-function UpdateCurrentAward(tag) {
- var result = null;
- for (var i = 0; i < ALL_AWARDS.length; i++) {
- var w = ALL_AWARDS[i];
- if (w.tag == tag) {
- result = w;
- break
- }
- }
- g_award = result;
-
- $("#award-tag").text(g_award.tag);
- $("#award-count").text(g_award.count);
-}
-
-
-function WinAward(name, awards) {
- $.ajax({
- url: "/win",
- type: "POST",
- data: {"name": name, "awards": awards},
- success: function (result) {
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- },
- complete: function (XMLHttpRequest, textStatus) {
- }
- })
-}
-
-// 恢复出厂数据
-function Revoke(name) {
- $.ajax({
- url: "/revoke",
- type: "POST",
- data: {"name": name},
- success: function (result) {
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- },
- complete: function (XMLHttpRequest, textStatus) {
- window.location.reload();//刷新当前页面.
- }
- })
-}
-
-// 恢复出厂数据
-function Reset() {
- $.ajax({
- url: "/reset",
- type: "GET",
- success: function (result) {
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- },
- complete: function (XMLHttpRequest, textStatus) {
- window.location.reload();//刷新当前页面.
- }
- })
-}
-
-function GameOver() {
- $('#ResultNum').css('color', 'black');
- $('#ResultNum').html("*****");
-}
\ No newline at end of file
diff --git a/src/templates/index.html b/src/templates/index.html
index 54a251a..a41179b 100644
--- a/src/templates/index.html
+++ b/src/templates/index.html
@@ -28,9 +28,8 @@
-
-
+
\ No newline at end of file
diff --git a/src/templates/manage.html b/src/templates/manage.html
index 6844ae2..2d5d751 100644
--- a/src/templates/manage.html
+++ b/src/templates/manage.html
@@ -16,6 +16,6 @@
-
+
\ No newline at end of file