半小時(shí)擼一個(gè)年會(huì)抽獎(jiǎng)蔓榄,了解一下

需求總是很緊急,昨天正在開(kāi)會(huì)收到人力需求默刚,有時(shí)間做個(gè)抽獎(jiǎng)嗎?(now 下午四點(diǎn)12甥郑,年會(huì)五點(diǎn)開(kāi)始。)還沒(méi)能等我拒絕荤西,人事又補(bǔ)了一句做不出來(lái)我們就不抽獎(jiǎng)了澜搅,我擦瞬間感覺(jué)要是搞不出來(lái)會(huì)被兄弟們捅死的節(jié)奏,默默的刪除了沒(méi)時(shí)間做的消息邪锌,重新寫(xiě)了四個(gè)字名單給我勉躺。

還好去年前年都是我搞得很慶幸沒(méi)被當(dāng)場(chǎng)打臉,重啟去年程序(需要收集全員頭像并ps)時(shí)間顯然不夠觅丰,慶幸的是還有點(diǎn)經(jīng)驗(yàn)赂蕴,會(huì)議結(jié)束時(shí)間已經(jīng)四點(diǎn)半了。

好了不扯淡了開(kāi)始干活吧舶胀!

先屢一下思路

1概说、好看是好看不了了,別指望沒(méi)設(shè)計(jì)沒(méi)時(shí)間程序員搞出來(lái)的效果嚣伐。
2糖赔、樣式開(kāi)始按鈕、停止按鈕轩端、人員名單別列表放典、抽中名單列表。
3、點(diǎn)擊開(kāi)始奋构,首先亂序名單列表保證每次抽獎(jiǎng)列表順序不一樣壳影,防止他們懷疑我作弊搞權(quán)重(就TM半小時(shí)哪有時(shí)間搞權(quán)重)時(shí)間緊任務(wù)重,直接用的lodash shuffle方法來(lái)亂序視圖
4弥臼、隨機(jī)數(shù)是肯定要有的宴咧,每隔200ms隨機(jī)一個(gè)從0到人員個(gè)數(shù)(數(shù)組長(zhǎng)度隨機(jī)整數(shù))
5、抽中人員和沒(méi)抽中人員分兩個(gè)數(shù)組存入localStorage径缅,防止抽獎(jiǎng)過(guò)程中刷新頁(yè)面掺栅,純靜態(tài)不存本地那場(chǎng)面就尷尬了每次刷新完如果本次存儲(chǔ)了從本地獲取人員列表和中獎(jiǎng)名單
6、點(diǎn)擊end選中當(dāng)前隨機(jī)數(shù)在頁(yè)面上高亮顯示纳猪。

接下來(lái)看整體實(shí)現(xiàn)代碼

//依賴(lài)js
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://lib.baomitu.com/lodash.js/4.14.1/lodash.min.js"></script>


<body>
    <div id="list-complete-demo" class="demo">
        <button v-on:click="start">start</button>
        <button v-on:click="end">end</button>
        <div class="draw-list">
            <span v-for="item in target">{{item}}</span>
        </div>
        <transition-group name="list-complete" tag="p">
            <span v-for="item in arrList" v-bind:key="item" class="list-complete-item" :class="{'draw-bg': item == value}">
                {{ item }}
            </span>
        </transition-group>
    </div>
    <script>
        new Vue({
            el: '#list-complete-demo',
            data: {
                arrList: [
                    "張三",
                    "李四",
                    "王五",
                    "趙六",
                    "陳七",
                    "張扒",
                    "李十四",
                    "王十五",
                    "趙十六",
                    "陳十七",
                    "張二三",
                    "李二四",
                    "王二五",
                    "趙二六",
                    "陳二七",
                    "張二扒",
                    "李三四",
                    "王三五",
                    "趙三六",
                    "陳三七"
                ],
                target: [],//中獎(jiǎng)名單
                index: -1,//當(dāng)前隨機(jī)索引
                timer: null,//定義一個(gè)定時(shí)器
                value: '',//當(dāng)前人員名
                status: true//當(dāng)前抽獎(jiǎng)狀態(tài)
            },
            mounted() {
                if (!localStorage.getItem('initData')) {
                    localStorage.setItem('initData', JSON.stringify(this.arrList))
                } else {
                    this.arrList = JSON.parse(localStorage.getItem('initData'))
                }
                if (localStorage.getItem('drawList')) {
                    this.target = JSON.parse(localStorage.getItem('drawList'))
                }

            },
            methods: {
                start() {
                    if (this.status) {
                        if (this.index != -1) {
                            this.arrList.splice(this.index, 1)
                            localStorage.setItem('initData', JSON.stringify(this.arrList))
                        }
                        this.shuffle()
                        setTimeout(() => {
                            this.recursive()
                        }, 800)
                        this.status = !this.status
                    }
                },
                randomIndex: function() {
                    this.index = Math.floor(Math.random() * this.arrList.length)
                    return this.index
                },
                remove: function() {
                    this.arrList.splice(this.randomIndex(), 1)
                },
                shuffle: function() {
                    this.arrList = _.shuffle(this.arrList)
                },
                recursive() {
                    clearTimeout(this.timer)
                    this.timer = setTimeout(() => {
                        this.value = this.arrList[this.randomIndex()]
                        this.recursive()
                    }, 200)
                },
                end() {
                    if (this.status) {
                        return
                    }
                    clearTimeout(this.timer)
                    this.index = this.randomIndex()
                    this.value = this.arrList[this.index]
                    this.target.push(this.value)
                    localStorage.setItem('drawList', JSON.stringify(this.target))
                    this.status = !this.status
                }
            }
        })
    </script>
</body>

體驗(yàn)下效果


Kapture-2019-01-30-at-16.06.34.gif

需求搞定氧卧,經(jīng)現(xiàn)場(chǎng)測(cè)試目前沒(méi)發(fā)現(xiàn)什么問(wèn)題!如有疑問(wèn)隨時(shí)回復(fù)留言氏堤!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沙绝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鼠锈,更是在濱河造成了極大的恐慌闪檬,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脚祟,死亡現(xiàn)場(chǎng)離奇詭異谬以,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)由桌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)为黎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人行您,你說(shuō)我怎么就攤上這事铭乾。” “怎么了娃循?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵炕檩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捌斧,道長(zhǎng)笛质,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任捞蚂,我火速辦了婚禮妇押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姓迅。我一直安慰自己敲霍,他們只是感情好俊马,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肩杈,像睡著了一般柴我。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扩然,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天艘儒,我揣著相機(jī)與錄音,去河邊找鬼与学。 笑死彤悔,一個(gè)胖子當(dāng)著我的面吹牛嘉抓,可吹牛的內(nèi)容都是我干的索守。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抑片,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼卵佛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起敞斋,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤截汪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后植捎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體衙解,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年焰枢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚓峦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡济锄,死狀恐怖暑椰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荐绝,我是刑警寧澤一汽,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站低滩,受9級(jí)特大地震影響召夹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恕沫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一监憎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昏兆,春花似錦枫虏、人聲如沸妇穴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腾它。三九已至,卻和暖如春死讹,著一層夾襖步出監(jiān)牢的瞬間瞒滴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工赞警, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妓忍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓愧旦,卻偏偏與公主長(zhǎng)得像世剖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笤虫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容