123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- <template>
- <div class="index-box">
- <bg-music />
- <popup
- :show="showPopup"
- @cancel="cancelFrom"
- :current-month="currentMonth"
- :is-prize="myPrize"
- :PrizeState="PrizeState"
- :prizeList="prizeList"
- />
-
- <WinningPopup
- :show="showMyWinning"
- @cancel="canclMyWinning"
- :current-person="person"
- :prize="myPrize"
- />
- <!-- 奖品没了 -->
-
- <img class="topImage" src="../assets/indexImg/indexBgctop.jpg" alt />
- <!-- <div class="outer6-wrapper" style="background:url('../assets/indexImg/indexBgc.jpg');"></div> -->
- <div class="outer6-wrapper">
- <div class="outer6 flex-col">
- <div v-for="month in list" :key="month.id" class="section-item">
- <div @click="handleMonthClick(month)">
- <ImgBox :prize="month"></ImgBox>
- </div>
- </div>
- </div>
- </div>
- </div>
- </template>
-
- <script>
- import { useModel } from '@/store'
- import { drawLottery, getPrizeList } from '@/services/person'
- import { rand, shuffle } from '@/utils/math'
- import { hideLoading } from '@/utils'
- import { share } from '@/utils/wx'
-
- /**
- * 月份信息
- * posterImg关闭的图片
- * popImg 打开的图片
- * shareImg分享图片
- * screenImg屏保
- * calendarImg日历图片
- */
-
- const monthList = [
- {
- id: 1,
- posterImg: require('../assets/indexImg/imgex_MEW/1.jpg'),
- popImg: require('../assets/luckyImg/1.jpg'),
- shareImg: require('../assets/sharePagesImg/1.jpg'),
- screenImg: require('../assets/screenImg/1.jpg'),
- calendarImg: require('../assets/monthImg/January1.jpg'),
- mode: 1
- },
- {
- id: 2,
- posterImg: require('../assets/indexImg/imgex_MEW/2.jpg'),
- popImg: require('../assets/luckyImg/2.jpg'),
- shareImg: require('../assets/sharePagesImg/2.jpg'),
- screenImg: require('../assets/screenImg/2.jpg'),
- calendarImg: require('../assets/monthImg/February2.jpg'),
- mode: 1
- },
- {
- id: 3,
- posterImg: require('../assets/indexImg/imgex_MEW/3.jpg'),
- popImg: require('../assets/luckyImg/3.jpg'),
- shareImg: require('../assets/sharePagesImg/3.jpg'),
- screenImg: require('../assets/screenImg/3.jpg'),
- calendarImg: require('../assets/monthImg/March3.jpg'),
- mode: 1
- },
- {
- id: 4,
- posterImg: require('../assets/indexImg/imgex_MEW/4.jpg'),
- popImg: require('../assets/luckyImg/4.jpg'),
- shareImg: require('../assets/sharePagesImg/4.jpg'),
- screenImg: require('../assets/screenImg/4.jpg'),
- calendarImg: require('../assets/monthImg/April4.jpg'),
- mode: 1
- },
- {
- id: 5,
- posterImg: require('../assets/indexImg/imgex_MEW/5.jpg'),
- popImg: require('../assets/luckyImg/5.jpg'),
- shareImg: require('../assets/sharePagesImg/5.jpg'),
- screenImg: require('../assets/screenImg/5.jpg'),
- calendarImg: require('../assets/monthImg/May5.jpg'),
- mode: 1
- },
- {
- id: 6,
- posterImg: require('../assets/indexImg/imgex_MEW/6.jpg'),
- popImg: require('../assets/luckyImg/6.jpg'),
- shareImg: require('../assets/sharePagesImg/6.jpg'),
- screenImg: require('../assets/screenImg/6.jpg'),
- calendarImg: require('../assets/monthImg/June6.jpg'),
- mode: 1
- },
- {
- id: 7,
- posterImg: require('../assets/indexImg/imgex_MEW/7.jpg'),
- popImg: require('../assets/luckyImg/7.jpg'),
- shareImg: require('../assets/sharePagesImg/7.jpg'),
- screenImg: require('../assets/screenImg/7.jpg'),
- calendarImg: require('../assets/monthImg/July7.jpg'),
- mode: 1
- },
- {
- id: 8,
- posterImg: require('../assets/indexImg/imgex_MEW/8.jpg'),
- popImg: require('../assets/luckyImg/8.jpg'),
- shareImg: require('../assets/sharePagesImg/8.jpg'),
- screenImg: require('../assets/screenImg/8.jpg'),
- calendarImg: require('../assets/monthImg/August8.jpg'),
- mode: 1
- },
- {
- id: 9,
- posterImg: require('../assets/indexImg/imgex_MEW/9.jpg'),
- popImg: require('../assets/luckyImg/9.jpg'),
- shareImg: require('../assets/sharePagesImg/9.jpg'),
- screenImg: require('../assets/screenImg/9.jpg'),
- calendarImg: require('../assets/monthImg/September9.jpg'),
- mode: 1
- },
- {
- id: 10,
- posterImg: require('../assets/indexImg/imgex_MEW/10.jpg'),
- popImg: require('../assets/luckyImg/10.jpg'),
- shareImg: require('../assets/sharePagesImg/10.jpg'),
- screenImg: require('../assets/screenImg/10.jpg'),
- calendarImg: require('../assets/monthImg/October10.jpg'),
- mode: 1
- },
- {
- id: 11,
- posterImg: require('../assets/indexImg/imgex_MEW/11.jpg'),
- popImg: require('../assets/luckyImg/11.jpg'),
- shareImg: require('../assets/sharePagesImg/11.jpg'),
- screenImg: require('../assets/screenImg/11.jpg'),
- calendarImg: require('../assets/monthImg/December12.jpg'),
- mode: 1
- },
- {
- id: 12,
- posterImg: require('../assets/indexImg/imgex_MEW/12.jpg'),
- popImg: require('../assets/luckyImg/12.jpg'),
- shareImg: require('../assets/sharePagesImg/12.jpg'),
- screenImg: require('../assets/screenImg/12.jpg'),
- calendarImg: require('../assets/monthImg/December12.jpg'),
- mode: 1
- }
- ]
-
- export default {
- name: 'Honghe',
- components: {
- Popup: () => import('@/components/Popup.vue'),
- WinningPopup: () => import('@/components/WinningPopup.vue'),
- ImgBox: () => import('@/components/imgbox.vue'),
- BgMusic: () => import('@/components/BgMusic.vue')
- // MyWinning: () => import('@/components/MyWinning.vue')
- },
- data() {
- return {
- list: shuffle(monthList),
- currentMonth: null,
- showPopup: false,
- showMyWinning: true,
- prizeList: [],
- bingoId: rand(0, 12) + 1, // 可以抽奖的月份
- NOMyWinningShow: true,
- PrizeState: null,
- binggo: false
- }
- },
- computed: {
- person: {
- get() {
- return useModel('person')[0]
- },
- set(val) {
- useModel('person')[1](val)
- }
- },
- myPrize() {
- if (this.prizeList.length && this.person.prizeId) {
- return this.prizeList.filter(
- (x) => x.prizeId === this.person.prizeId
- )[0]
- }
-
- return undefined
- },
- noPrize() {
- if (this.prizeList.length) {
- return this.prizeList.reduce((sum, x) => x.exitsNum + sum, 0) <= 0
- }
-
- return true
- }
- },
- created() {
- this.getPrizes()
- this.noShowMy()
- },
- watch: {
- binggo: {
- handler(val) {
- console.log('-------binggo---->', val)
- // 微信分享
- // 1、正常情况下, 分享主题是 抽取幸运签,解锁隐藏福利
- // 2、中奖弹出情况下, 分享主题是 我中奖啦! 来试试你的运气吧
- if (val) {
- share({
- title: '我中奖啦! 来试试你的运气吧',
- desc: '抽取幸运签,解锁隐藏福利'
- })
- } else {
- share({ title: '抽取幸运签,解锁隐藏福利', desc: '每月都有欢乐发生' })
- }
- },
- immediate: true
- }
- },
- methods: {
- noShowMy() {
- if (this.person.prizeId !== '' && this.noPrize) {
- console.log('有奖品')
- } else {
- this.PrizeState = true
-
- console.log('没有奖品')
- }
- },
- //关闭
- cancelFrom() {
- this.showPopup = false
-
- this.currentMonth.mode = 3
- },
- canclMyWinning() {
- this.showMyWinning = false
-
- this.currentMonth.mode = this.binggo ? 1 : 3
- this.binggo = false
- },
- handleMonthClick(month) {
- this.list.map((item) => {
- if (item.id == month.id) {
- item.mode = 2
- }
- })
- this.currentMonth = month
-
- // 如果点击可以抽奖
- if (month.id === this.bingoId && !this.noPrize) {
- // if (!this.noPrize) {
- // this.PrizeState = 2
- // }
-
- if (!this.person.personId) {
- // 报错, 提示刷新页面
- } else {
- // 如果还没有参与
- if (!this.person.isJoined) {
- this.drawLots()
- } else {
- this.showPopup = true
- }
- }
- } else {
- this.showPopup = true
- this.PrizeState = 2
- }
- },
- // 抽奖
- drawLots() {
- drawLottery(this.person)
- .then((res) => {
- // 更新人员信息
- this.person = res
- this.showMyWinning = true
- // this.PrizeState = 0
- this.binggo = true
-
- console.log('showMyWinning-----------')
-
- // 其他动作
- })
- .catch((err) => {
- if (err && err.code === 9999) {
- this.PrizeState = 2
-
- // 奖品没了
- } else {
- // 其他错误
- const errMsg = err.message || err
- console.log('🚀 ~ file: Honghe.vue ~errMsg errMsg', errMsg)
- alert('请刷新重试')
- }
- })
- },
- // 获取奖品列表
- getPrizes() {
- getPrizeList().then((list) => {
- this.prizeList = list
- console.log(
- '🚀 ~ file: Honghe.vue ~ line 227 ~ getPrizeList ~ list',
- list
- )
-
- const t = setTimeout(() => {
- hideLoading()
- clearTimeout(t)
- }, 1000)
- })
- }
- }
- }
- </script>
-
- <style lang="less" scoped>
- .flex-col {
- display: flex;
- flex-direction: column;
- }
- .index-box {
- background-color: #b12b32;
- width: 100vw;
- height: 100vh;
- position: relative;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- overflow: auto;
- .dialog {
- z-index: 2;
- }
- .topImage {
- padding-top: 2em;
- width: 100vw;
- }
- .outer6-wrapper {
- width: 92vw;
- border: 1px solid #d0b69a;
- margin: 0 auto 2em;
-
- .outer6 {
- flex-flow: row wrap;
- align-content: flex-start;
- z-index: 2;
- background-color: #b12b32;
- align-self: center;
- width: 90vw;
- margin: 3px auto;
- border-right: 1px solid #d0b69a;
- border-bottom: 1px solid #d0b69a;
- overflow: hidden;
- .section-item {
- width: 22vw;
- border-left: 1px solid #d0b69a;
- border-top: 1px solid #d0b69a;
- display: inline-flex;
- overflow: hidden;
- }
- }
- }
- }
- </style>
|