c6fa739b by McLemore

init

1 parent 0fe43ead
This diff could not be displayed because it is too large.
No preview for this file type
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 <link 8 <link
9 rel="stylesheet" 9 rel="stylesheet"
10 href="https://at.alicdn.com/t/font_1594571_5oi8u1hs5fy.css"/> 10 href="https://at.alicdn.com/t/font_1594571_5oi8u1hs5fy.css"/>
11 <title>luckydraw</title> 11 <title>赤金科技-年会抽奖</title>
12 </head> 12 </head>
13 <body> 13 <body>
14 <noscript> 14 <noscript>
......
1 <template> 1 <template>
2 <div class="rootWrapper">
3 <img class="bgImg" alt="" src="./assets/bg.png" />
2 <div id="root"> 4 <div id="root">
3 <header> 5 <header>
4 <Publicity v-show="!running" /> 6 <Publicity v-show="!running && !autoRunning" />
5 <el-button class="res" type="text" @click="showResult = true"> 7 <el-button class="res" type="text" @click="showResult = true">
6 抽奖结果 8 抽奖结果
7 </el-button> 9 </el-button>
...@@ -17,11 +19,18 @@ ...@@ -17,11 +19,18 @@
17 href="javascript:void(0);" 19 href="javascript:void(0);"
18 :style="{ 20 :style="{
19 color: 21 color:
20 !running && allresult.includes(item.key) ? '#ff2200' : '#fff' 22 !autoRunning && !running && allresult.includes(item.key)
23 ? '#fff'
24 : '#fff'
21 }" 25 }"
22 > 26 >
23 {{ item.name ? item.name : item.key }} 27 {{ item.name ? item.name : item.key }}
24 <img v-if="item.photo" :src="item.photo" :width="50" :height="50" /> 28 <img
29 v-if="item.photo"
30 :src="item.photo"
31 :width="50"
32 :height="50"
33 />
25 </a> 34 </a>
26 </li> 35 </li>
27 </ul> 36 </ul>
...@@ -35,7 +44,7 @@ ...@@ -35,7 +44,7 @@
35 :key="item" 44 :key="item"
36 class="itemres" 45 class="itemres"
37 :style="resCardStyle" 46 :style="resCardStyle"
38 :data-id="item" 47 :data-id="list.find(d => d.key === item).name"
39 @click="showRes = false" 48 @click="showRes = false"
40 :class="{ 49 :class="{
41 numberOver: 50 numberOver:
...@@ -61,7 +70,6 @@ ...@@ -61,7 +70,6 @@
61 :src="photos.find(d => d.id === item).value" 70 :src="photos.find(d => d.id === item).value"
62 alt="photo" 71 alt="photo"
63 :width="160" 72 :width="160"
64 :height="160"
65 /> 73 />
66 </span> 74 </span>
67 </div> 75 </div>
...@@ -83,20 +91,20 @@ ...@@ -83,20 +91,20 @@
83 ></i> 91 ></i>
84 </el-button> 92 </el-button>
85 93
86 <LotteryConfig :visible.sync="showConfig" @resetconfig="reloadTagCanvas" /> 94 <LotteryConfig
95 :visible.sync="showConfig"
96 @resetconfig="reloadTagCanvas"
97 />
87 <Tool 98 <Tool
88 @toggle="toggle" 99 @toggle="toggle"
89 @resetConfig="reloadTagCanvas" 100 @resetConfig="reloadTagCanvas"
90 @getPhoto="getPhoto" 101 @getPhoto="getPhoto"
91 :running="running" 102 :running="running"
103 :autoRunning="autoRunning"
92 :closeRes="closeRes" 104 :closeRes="closeRes"
93 /> 105 />
94 <Result :visible.sync="showResult"></Result> 106 <Result :visible.sync="showResult"></Result>
95 107
96 <span class="copy-right">
97 Copyright©zhangyongfeng5350@gmail.com
98 </span>
99
100 <audio 108 <audio
101 id="audiobg" 109 id="audiobg"
102 preload="auto" 110 preload="auto"
...@@ -110,6 +118,7 @@ ...@@ -110,6 +118,7 @@
110 你的浏览器不支持audio标签 118 你的浏览器不支持audio标签
111 </audio> 119 </audio>
112 </div> 120 </div>
121 </div>
113 </template> 122 </template>
114 <script> 123 <script>
115 import LotteryConfig from '@/components/LotteryConfig'; 124 import LotteryConfig from '@/components/LotteryConfig';
...@@ -170,6 +179,15 @@ export default { ...@@ -170,6 +179,15 @@ export default {
170 allresult = allresult.concat(element); 179 allresult = allresult.concat(element);
171 } 180 }
172 } 181 }
182
183 let times = Math.floor(allresult.length / this.config.number);
184
185 for (let i = 0; i < times; i++) {
186 for (let j = 0; j < this.list.length; j++) {
187 allresult.splice(allresult.indexOf(this.list[j].key), 1);
188 }
189 }
190
173 return allresult; 191 return allresult;
174 }, 192 },
175 datas() { 193 datas() {
...@@ -222,6 +240,7 @@ export default { ...@@ -222,6 +240,7 @@ export default {
222 240
223 data() { 241 data() {
224 return { 242 return {
243 autoRunning: false,
225 running: false, 244 running: false,
226 showRes: false, 245 showRes: false,
227 showConfig: false, 246 showConfig: false,
...@@ -303,8 +322,59 @@ export default { ...@@ -303,8 +322,59 @@ export default {
303 closeRes() { 322 closeRes() {
304 this.showRes = false; 323 this.showRes = false;
305 }, 324 },
306 toggle(form) { 325 toggle(form, auto) {
307 const { speed, config } = this; 326 const { speed, config } = this;
327
328 if (auto) {
329 if (this.autoRunning) {
330 this.audioSrc = bgaudio;
331 this.loadAudio();
332
333 window.TagCanvas.SetSpeed('rootcanvas', speed());
334 this.showRes = true;
335 this.autoRunning = !this.autoRunning;
336 this.$nextTick(() => {
337 this.reloadTagCanvas();
338 });
339 } else {
340 this.showRes = false;
341 if (!form) {
342 return;
343 }
344
345 this.audioSrc = beginaudio;
346 this.loadAudio();
347
348 const { number } = config;
349 const { category, mode, qty, remain, allin } = form;
350 let num = 1;
351 if (mode === 1 || mode === 5) {
352 num = mode;
353 } else if (mode === 0) {
354 num = remain;
355 } else if (mode === 99) {
356 num = qty;
357 }
358 const resArr = luckydrawHandler(
359 number,
360 allin ? [] : this.allresult,
361 num
362 );
363 this.resArr = resArr;
364
365 this.category = category;
366 if (!this.result[category]) {
367 this.$set(this.result, category, []);
368 }
369 const oldRes = this.result[category] || [];
370 const data = Object.assign({}, this.result, {
371 [category]: oldRes.concat(resArr)
372 });
373 this.result = data;
374 window.TagCanvas.SetSpeed('rootcanvas', [5, 1]);
375 this.autoRunning = !this.autoRunning;
376 }
377 } else {
308 if (this.running) { 378 if (this.running) {
309 this.audioSrc = bgaudio; 379 this.audioSrc = bgaudio;
310 this.loadAudio(); 380 this.loadAudio();
...@@ -355,17 +425,26 @@ export default { ...@@ -355,17 +425,26 @@ export default {
355 } 425 }
356 } 426 }
357 } 427 }
428 }
358 }; 429 };
359 </script> 430 </script>
360 <style lang="scss"> 431 <style lang="scss">
432 .rootWrapper {
433 height: 100%;
434 position: relative;
435 background-color: #b51c23;
436 .bgImg {
437 width: 100%;
438 position: absolute;
439 top: 40px;
440 left: 0;
441 z-index: 1;
442 }
443 }
361 #root { 444 #root {
362 height: 100%; 445 height: 100%;
363 position: relative; 446 position: relative;
364 background-image: url('./assets/bg1.jpg'); 447 z-index: 2;
365 background-size: 100% 100%;
366 background-position: center center;
367 background-repeat: no-repeat;
368 background-color: #121936;
369 .mask { 448 .mask {
370 -webkit-filter: blur(5px); 449 -webkit-filter: blur(5px);
371 filter: blur(5px); 450 filter: blur(5px);
...@@ -379,6 +458,11 @@ export default { ...@@ -379,6 +458,11 @@ export default {
379 top: 17px; 458 top: 17px;
380 padding: 0; 459 padding: 0;
381 z-index: 9999; 460 z-index: 9999;
461 color: #f1d192;
462 opacity: 0;
463 &:hover {
464 opacity: 0.3;
465 }
382 &.con { 466 &.con {
383 right: 20px; 467 right: 20px;
384 } 468 }
...@@ -388,9 +472,13 @@ export default { ...@@ -388,9 +472,13 @@ export default {
388 } 472 }
389 } 473 }
390 .audio { 474 .audio {
475 opacity: 0;
476 &:hover {
477 opacity: 0.3;
478 }
391 position: absolute; 479 position: absolute;
392 top: 100px; 480 top: 150px;
393 right: 30px; 481 right: 50px;
394 width: 40px; 482 width: 40px;
395 height: 40px; 483 height: 40px;
396 line-height: 40px; 484 line-height: 40px;
...@@ -419,19 +507,20 @@ export default { ...@@ -419,19 +507,20 @@ export default {
419 } 507 }
420 #main { 508 #main {
421 height: 100%; 509 height: 100%;
510 margin-top: 40px;
422 } 511 }
423 512
424 #resbox { 513 #resbox {
425 position: absolute; 514 position: absolute;
426 top: 50%; 515 top: calc(50% + 90px);
427 left: 50%; 516 left: 50%;
428 width: 1280px; 517 width: 1280px;
429 transform: translateX(-50%) translateY(-50%); 518 transform: translateX(-50%) translateY(-50%);
430 text-align: center; 519 text-align: center;
431 p { 520 p {
432 color: red; 521 color: #fff;
433 font-size: 50px; 522 font-size: 40px;
434 line-height: 120px; 523 line-height: 60px;
435 } 524 }
436 .container { 525 .container {
437 display: flex; 526 display: flex;
...@@ -442,6 +531,7 @@ export default { ...@@ -442,6 +531,7 @@ export default {
442 background: #fff; 531 background: #fff;
443 width: 160px; 532 width: 160px;
444 height: 160px; 533 height: 160px;
534 overflow: hidden;
445 border-radius: 4px; 535 border-radius: 4px;
446 border: 1px solid #ccc; 536 border: 1px solid #ccc;
447 line-height: 160px; 537 line-height: 160px;
......
...@@ -2379,7 +2379,7 @@ ...@@ -2379,7 +2379,7 @@
2379 shadowOffset: [0, 0], 2379 shadowOffset: [0, 0],
2380 initial: null, 2380 initial: null,
2381 hideTags: true, 2381 hideTags: true,
2382 zoom: 1, 2382 zoom: 0.7,
2383 weight: false, 2383 weight: false,
2384 weightMode: "size", 2384 weightMode: "size",
2385 weightFrom: null, 2385 weightFrom: null,
...@@ -2395,7 +2395,7 @@ ...@@ -2395,7 +2395,7 @@
2395 txtOpt: true, 2395 txtOpt: true,
2396 txtScale: 2, 2396 txtScale: 2,
2397 frontSelect: false, 2397 frontSelect: false,
2398 wheelZoom: true, 2398 wheelZoom: false,
2399 zoomMin: 0.3, 2399 zoomMin: 0.3,
2400 zoomMax: 3, 2400 zoomMax: 3,
2401 zoomStep: 0.05, 2401 zoomStep: 0.05,
...@@ -2414,7 +2414,7 @@ ...@@ -2414,7 +2414,7 @@
2414 shuffleTags: false, 2414 shuffleTags: false,
2415 noSelect: false, 2415 noSelect: false,
2416 noMouse: false, 2416 noMouse: false,
2417 imageScale: 1, 2417 imageScale: 1.6,
2418 paused: false, 2418 paused: false,
2419 dragControl: false, 2419 dragControl: false,
2420 dragThreshold: 4, 2420 dragThreshold: 4,
......
...@@ -75,7 +75,7 @@ export default { ...@@ -75,7 +75,7 @@ export default {
75 const formData = new FormData(); 75 const formData = new FormData();
76 formData.append('uploadImg', fileList[0]); 76 formData.append('uploadImg', fileList[0]);
77 const reader = new FileReader(); 77 const reader = new FileReader();
78 const AllowImgFileSize = 1024 * 150; 78 const AllowImgFileSize = 1024 * 200;
79 const file = fileList[0]; 79 const file = fileList[0];
80 if (file) { 80 if (file) {
81 this.filename = file.name; 81 this.filename = file.name;
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
31 :step="1" 31 :step="1"
32 ></el-input> 32 ></el-input>
33 </el-form-item> 33 </el-form-item>
34 <!--
34 <el-form-item label="一等奖"> 35 <el-form-item label="一等奖">
35 <el-input 36 <el-input
36 type="number" 37 type="number"
...@@ -39,6 +40,7 @@ ...@@ -39,6 +40,7 @@
39 :step="1" 40 :step="1"
40 ></el-input> 41 ></el-input>
41 </el-form-item> 42 </el-form-item>
43 -->
42 <el-form-item 44 <el-form-item
43 :label="newitem.name" 45 :label="newitem.name"
44 v-for="newitem in storeNewLottery" 46 v-for="newitem in storeNewLottery"
...@@ -126,7 +128,7 @@ export default { ...@@ -126,7 +128,7 @@ export default {
126 const str = 'abcdefghijklmnopqrstuvwxyz'; 128 const str = 'abcdefghijklmnopqrstuvwxyz';
127 let fieldStr = ''; 129 let fieldStr = '';
128 for (let index = 0; index < 10; index++) { 130 for (let index = 0; index < 10; index++) {
129 fieldStr += str.split('')[randomNum(1, 27) - 1]; 131 fieldStr += str.split('')[randomNum(1, 26) - 1];
130 } 132 }
131 return `${fieldStr}${Date.now()}`; 133 return `${fieldStr}${Date.now()}`;
132 }, 134 },
......
...@@ -30,8 +30,11 @@ export default { ...@@ -30,8 +30,11 @@ export default {
30 result() { 30 result() {
31 return this.$store.state.result; 31 return this.$store.state.result;
32 }, 32 },
33 list() {
34 return this.$store.state.list;
35 },
33 message() { 36 message() {
34 const { result, config } = this; 37 const { result, config, list } = this;
35 const fields = Object.keys(config); 38 const fields = Object.keys(config);
36 39
37 let message = [{ key: 0, title: config.name }]; 40 let message = [{ key: 0, title: config.name }];
...@@ -42,7 +45,12 @@ export default { ...@@ -42,7 +45,12 @@ export default {
42 key: index + 1, 45 key: index + 1,
43 title: `${label}抽奖结果:`, 46 title: `${label}抽奖结果:`,
44 value: `${ 47 value: `${
45 result[item].length > 0 ? result[item].join('、') : '暂未抽取' 48 result[item].length > 0
49 ? list
50 .filter(v => result[item].indexOf(v.key) > -1)
51 .map(v => v.name)
52 .join('、')
53 : '暂未抽取'
46 }` 54 }`
47 }); 55 });
48 } 56 }
...@@ -57,7 +65,6 @@ export default { ...@@ -57,7 +65,6 @@ export default {
57 .c-Publicity { 65 .c-Publicity {
58 height: 100%; 66 height: 100%;
59 // width: 1000px; 67 // width: 1000px;
60 background-color: rgba(255, 255, 255, 0.1);
61 margin: 0 auto; 68 margin: 0 auto;
62 position: relative; 69 position: relative;
63 overflow: hidden; 70 overflow: hidden;
...@@ -66,14 +73,14 @@ export default { ...@@ -66,14 +73,14 @@ export default {
66 color: #fff; 73 color: #fff;
67 font-size: 16px; 74 font-size: 16px;
68 .title { 75 .title {
69 color: #ccc; 76 color: #f1d192;
70 } 77 }
71 .value { 78 .value {
72 margin-left: 10px; 79 margin-left: 10px;
73 } 80 }
74 &.actiname { 81 &.actiname {
75 .title { 82 .title {
76 color: red; 83 color: #fff;
77 font-size: 20px; 84 font-size: 20px;
78 } 85 }
79 } 86 }
......
...@@ -35,9 +35,9 @@ ...@@ -35,9 +35,9 @@
35 class="card" 35 class="card"
36 v-for="(data, j) in item.value" 36 v-for="(data, j) in item.value"
37 :key="j" 37 :key="j"
38 :data-res="data" 38 :data-res="data.number"
39 > 39 >
40 {{ data }} 40 {{ data.name }}
41 </span> 41 </span>
42 </span> 42 </span>
43 </div> 43 </div>
...@@ -59,6 +59,9 @@ export default { ...@@ -59,6 +59,9 @@ export default {
59 this.$store.commit('setResult', val); 59 this.$store.commit('setResult', val);
60 } 60 }
61 }, 61 },
62 list() {
63 return this.$store.state.list;
64 },
62 resultList() { 65 resultList() {
63 const list = []; 66 const list = [];
64 for (const key in this.result) { 67 for (const key in this.result) {
...@@ -68,7 +71,10 @@ export default { ...@@ -68,7 +71,10 @@ export default {
68 list.push({ 71 list.push({
69 label: key, 72 label: key,
70 name, 73 name,
71 value: element 74 value: element.map(v => ({
75 number: v,
76 name: this.list.filter(vv => vv.key === v)[0].name
77 }))
72 }); 78 });
73 } 79 }
74 } 80 }
......
1 <template> 1 <template>
2 <div>
3 <el-button
4 class="autoStart"
5 @click="autoHandler"
6 type="primary"
7 size="mini"
8 >{{ autoRunning ? '停!' : '开始抽奖' }}</el-button
9 >
2 <div id="tool"> 10 <div id="tool">
3 <el-button @click="startHandler" type="primary" size="mini">{{ 11 <el-button class="btn" @click="startHandler" size="mini">{{
4 running ? '停止' : '开始' 12 running ? '停止' : '自定义抽奖'
5 }}</el-button> 13 }}</el-button>
6 <el-button size="mini" @click="showRemoveoptions = true"> 14 <el-button class="btn" size="mini" @click="showRemoveoptions = true">
7 重置 15 重置
8 </el-button> 16 </el-button>
9 <el-button size="mini" @click="showImport = true"> 17 <el-button class="btn" size="mini" @click="showImport = true">
10 导入名单 18 导入名单
11 </el-button> 19 </el-button>
12 <el-button size="mini" @click="showImportphoto = true"> 20 <el-button class="btn" size="mini" @click="showImportphoto = true">
13 导入照片 21 导入照片
14 </el-button> 22 </el-button>
15 <el-dialog 23 <el-dialog
...@@ -20,7 +28,10 @@ ...@@ -20,7 +28,10 @@
20 > 28 >
21 <el-form ref="form" :model="form" label-width="80px" size="mini"> 29 <el-form ref="form" :model="form" label-width="80px" size="mini">
22 <el-form-item label="抽取奖项"> 30 <el-form-item label="抽取奖项">
23 <el-select v-model="form.category" placeholder="请选取本次抽取的奖项"> 31 <el-select
32 v-model="form.category"
33 placeholder="请选取本次抽取的奖项"
34 >
24 <el-option 35 <el-option
25 :label="item.label" 36 :label="item.label"
26 :value="item.value" 37 :value="item.value"
...@@ -87,9 +98,9 @@ ...@@ -87,9 +98,9 @@
87 type="textarea" 98 type="textarea"
88 :rows="10" 99 :rows="10"
89 placeholder="请输入对应的号码和名单(可直接从excel复制),格式(号码 名字),导入的名单将代替号码显示在抽奖中。如: 100 placeholder="请输入对应的号码和名单(可直接从excel复制),格式(号码 名字),导入的名单将代替号码显示在抽奖中。如:
90 1 张三 101 1 张三
91 2 李四 102 2 李四
92 3 王五 103 3 王五
93 " 104 "
94 v-model="listStr" 105 v-model="listStr"
95 ></el-input> 106 ></el-input>
...@@ -128,6 +139,7 @@ ...@@ -128,6 +139,7 @@
128 </el-form> 139 </el-form>
129 </el-dialog> 140 </el-dialog>
130 </div> 141 </div>
142 </div>
131 </template> 143 </template>
132 144
133 <script> 145 <script>
...@@ -135,6 +147,7 @@ import { ...@@ -135,6 +147,7 @@ import {
135 clearData, 147 clearData,
136 removeData, 148 removeData,
137 configField, 149 configField,
150 newLotteryField,
138 listField, 151 listField,
139 resultField, 152 resultField,
140 conversionCategoryName 153 conversionCategoryName
...@@ -145,6 +158,7 @@ import { database, DB_STORE_NAME } from '@/helper/db'; ...@@ -145,6 +158,7 @@ import { database, DB_STORE_NAME } from '@/helper/db';
145 export default { 158 export default {
146 props: { 159 props: {
147 running: Boolean, 160 running: Boolean,
161 autoRunning: Boolean,
148 closeRes: Function 162 closeRes: Function
149 }, 163 },
150 computed: { 164 computed: {
...@@ -153,6 +167,11 @@ export default { ...@@ -153,6 +167,11 @@ export default {
153 return this.$store.state.config; 167 return this.$store.state.config;
154 } 168 }
155 }, 169 },
170 newLottery: {
171 get() {
172 return this.$store.state.newLottery;
173 }
174 },
156 remain() { 175 remain() {
157 return ( 176 return (
158 this.config[this.form.category] - 177 this.config[this.form.category] -
...@@ -189,10 +208,10 @@ export default { ...@@ -189,10 +208,10 @@ export default {
189 showImport: false, 208 showImport: false,
190 showImportphoto: false, 209 showImportphoto: false,
191 showRemoveoptions: false, 210 showRemoveoptions: false,
192 removeInfo: { type: 0 }, 211 removeInfo: { type: 4 },
193 form: { 212 form: {
194 category: '', 213 category: '',
195 mode: 1, 214 mode: 0,
196 qty: 1, 215 qty: 1,
197 allin: false 216 allin: false
198 }, 217 },
...@@ -202,7 +221,7 @@ export default { ...@@ -202,7 +221,7 @@ export default {
202 watch: { 221 watch: {
203 showRemoveoptions(v) { 222 showRemoveoptions(v) {
204 if (!v) { 223 if (!v) {
205 this.removeInfo.type = 0; 224 this.removeInfo.type = 4;
206 } 225 }
207 } 226 }
208 }, 227 },
...@@ -223,6 +242,7 @@ export default { ...@@ -223,6 +242,7 @@ export default {
223 break; 242 break;
224 case 1: 243 case 1:
225 removeData(configField); 244 removeData(configField);
245 removeData(newLotteryField);
226 this.$store.commit('setClearConfig'); 246 this.$store.commit('setClearConfig');
227 break; 247 break;
228 case 2: 248 case 2:
...@@ -281,12 +301,36 @@ export default { ...@@ -281,12 +301,36 @@ export default {
281 } 301 }
282 } 302 }
283 this.showSetwat = false; 303 this.showSetwat = false;
304 const form = Object.assign({}, this.form, { remain: this.remain });
305 this.$emit('toggle', form);
306 },
307 autoHandler() {
308 if (this.running) return;
309 if (this.autoRunning) {
310 this.$emit('toggle', null, true);
311 } else {
312 const lottery = this.newLottery.filter(
313 v => !Object.prototype.hasOwnProperty.call(this.result, v.key)
314 )[0];
315
316 if (!lottery) return this.$message.error('奖品全都有主啦~');
317 const category = lottery.key;
318
284 this.$emit( 319 this.$emit(
285 'toggle', 320 'toggle',
286 Object.assign({}, this.form, { remain: this.remain }) 321 {
322 category,
323 mode: 0,
324 qty: this.config[category],
325 allin: false,
326 remain: this.config[category]
327 },
328 true
287 ); 329 );
330 }
288 }, 331 },
289 startHandler() { 332 startHandler() {
333 if (this.autoRunning) return;
290 this.$emit('toggle'); 334 this.$emit('toggle');
291 if (!this.running) { 335 if (!this.running) {
292 this.showSetwat = true; 336 this.showSetwat = true;
...@@ -328,13 +372,35 @@ export default { ...@@ -328,13 +372,35 @@ export default {
328 }; 372 };
329 </script> 373 </script>
330 <style lang="scss"> 374 <style lang="scss">
375 .el-button.autoStart {
376 position: fixed;
377 bottom: 30px;
378 left: 50%;
379 width: 100px;
380 height: 40px;
381 font-size: 18px;
382 transform: translateX(-50%);
383 background: #f1d192 !important;
384 color: #e74c26 !important;
385 border-color: #f1d192 !important;
386 &:hover {
387 background: #f1d192 !important;
388 color: #e74c26 !important;
389 border-color: #f1d192 !important;
390 }
391 }
392 .el-button.btn {
393 opacity: 0;
394 &:hover {
395 opacity: 0.3;
396 }
397 }
331 #tool { 398 #tool {
332 position: fixed; 399 position: fixed;
333 width: 60px; 400 width: 60px;
334 height: 500px; 401 height: 300px;
335 top: 50%; 402 bottom: 0;
336 right: 20px; 403 right: 50px;
337 transform: translateY(-50%);
338 text-align: center; 404 text-align: center;
339 display: flex; 405 display: flex;
340 flex-direction: column; 406 flex-direction: column;
......
...@@ -35,13 +35,27 @@ export function randomNum(minNum = 1, maxNum) { ...@@ -35,13 +35,27 @@ export function randomNum(minNum = 1, maxNum) {
35 */ 35 */
36 export function luckydrawHandler(total, won = [], num) { 36 export function luckydrawHandler(total, won = [], num) {
37 const peolist = generateArray(1, Number(total)); 37 const peolist = generateArray(1, Number(total));
38 const wons = won; 38 let wons = won;
39 const res = []; 39 const res = [];
40 const rest = peolist.filter(item => !wons.includes(item));
41
42 if (rest.length < num) {
43 res.push(...rest);
44 wons = [...rest];
45 for (let j = 0; j < num - rest.length; j++) {
46 const nodraws = peolist.filter(item => !wons.includes(item));
47 const current = nodraws[randomNum(1, nodraws.length) - 1];
48 res.push(current);
49 wons.push(current);
50 }
51 } else {
40 for (let j = 0; j < num; j++) { 52 for (let j = 0; j < num; j++) {
41 const nodraws = peolist.filter(item => !wons.includes(item)); 53 const nodraws = peolist.filter(item => !wons.includes(item));
42 const current = nodraws[randomNum(1, nodraws.length) - 1]; 54 const current = nodraws[randomNum(1, nodraws.length) - 1];
43 res.push(current); 55 res.push(current);
44 wons.push(current); 56 wons.push(current);
45 } 57 }
58 }
59
46 return res; 60 return res;
47 } 61 }
......
...@@ -39,6 +39,7 @@ export const newLotteryField = 'newLottery'; // 新增奖项 ...@@ -39,6 +39,7 @@ export const newLotteryField = 'newLottery'; // 新增奖项
39 export const listField = 'list'; // 名单 39 export const listField = 'list'; // 名单
40 export function conversionCategoryName(key) { 40 export function conversionCategoryName(key) {
41 let name = ''; 41 let name = '';
42 /*
42 switch (key) { 43 switch (key) {
43 case 'firstPrize': 44 case 'firstPrize':
44 name = '一等奖'; 45 name = '一等奖';
...@@ -46,6 +47,7 @@ export function conversionCategoryName(key) { ...@@ -46,6 +47,7 @@ export function conversionCategoryName(key) {
46 default: 47 default:
47 break; 48 break;
48 } 49 }
50 */
49 const newLottery = getData(newLotteryField) || []; 51 const newLottery = getData(newLotteryField) || [];
50 const findres = newLottery.find(item => item.key === key); 52 const findres = newLottery.find(item => item.key === key);
51 if (findres) { 53 if (findres) {
......
...@@ -13,12 +13,9 @@ export default new Vuex.Store({ ...@@ -13,12 +13,9 @@ export default new Vuex.Store({
13 state: { 13 state: {
14 config: { 14 config: {
15 name: '年会抽奖', 15 name: '年会抽奖',
16 number: 70, 16 number: 44
17 firstPrize: 1
18 },
19 result: {
20 firstPrize: []
21 }, 17 },
18 result: {},
22 newLottery: [], 19 newLottery: [],
23 list: [], 20 list: [],
24 photos: [] 21 photos: []
...@@ -27,8 +24,7 @@ export default new Vuex.Store({ ...@@ -27,8 +24,7 @@ export default new Vuex.Store({
27 setClearConfig(state) { 24 setClearConfig(state) {
28 state.config = { 25 state.config = {
29 name: '年会抽奖', 26 name: '年会抽奖',
30 number: 70, 27 number: 44
31 firstPrize: 1
32 }; 28 };
33 state.newLottery = []; 29 state.newLottery = [];
34 }, 30 },
...@@ -39,19 +35,14 @@ export default new Vuex.Store({ ...@@ -39,19 +35,14 @@ export default new Vuex.Store({
39 state.photos = []; 35 state.photos = [];
40 }, 36 },
41 setClearResult(state) { 37 setClearResult(state) {
42 state.result = { 38 state.result = {};
43 firstPrize: []
44 };
45 }, 39 },
46 setClearStore(state) { 40 setClearStore(state) {
47 state.config = { 41 state.config = {
48 name: '年会抽奖', 42 name: '年会抽奖',
49 number: 70, 43 number: 44
50 firstPrize: 1
51 };
52 state.result = {
53 firstPrize: []
54 }; 44 };
45 state.result = {};
55 state.newLottery = []; 46 state.newLottery = [];
56 state.list = []; 47 state.list = [];
57 state.photos = []; 48 state.photos = [];
...@@ -65,9 +56,11 @@ export default new Vuex.Store({ ...@@ -65,9 +56,11 @@ export default new Vuex.Store({
65 setData(resultField, state.result); 56 setData(resultField, state.result);
66 }, 57 },
67 setNewLottery(state, newLottery) { 58 setNewLottery(state, newLottery) {
59 /*
68 if (state.newLottery.find(item => item.name === newLottery.name)) { 60 if (state.newLottery.find(item => item.name === newLottery.name)) {
69 return; 61 return;
70 } 62 }
63 */
71 state.newLottery.push(newLottery); 64 state.newLottery.push(newLottery);
72 setData(newLotteryField, state.newLottery); 65 setData(newLotteryField, state.newLottery);
73 }, 66 },
......