index.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div class="index">
  3. <christmas v-if="isOpen" @listenopen="listenOpen" :hasNewYear="hasNewYear"></christmas>
  4. <carousel>
  5. <kind-category @loadchild="loadProductKinds"></kind-category>
  6. </carousel>
  7. <advert></advert>
  8. <floor-list></floor-list>
  9. <news></news>
  10. <partner></partner>
  11. </div>
  12. </template>
  13. <script>
  14. import { KindCategory, Carousel, Advert, FloorList, Partner, News } from '~components/home'
  15. import { Christmas } from '~components/default'
  16. export default {
  17. name: 'index',
  18. layout: 'main',
  19. data () {
  20. return {
  21. isOpen: false,
  22. hasNewYear: false
  23. }
  24. },
  25. fetch ({ store }) {
  26. return Promise.all([
  27. store.dispatch('loadFloors'),
  28. store.dispatch('loadBanners', {type: 'home'}),
  29. store.dispatch('loadProductKinds', { id: 0 }),
  30. store.dispatch('loadNewsSnapshot', { page: 1, pageSize: 10 })
  31. ])
  32. },
  33. components: {
  34. KindCategory,
  35. Carousel,
  36. Advert,
  37. FloorList,
  38. Partner,
  39. News,
  40. Christmas
  41. },
  42. mounted () {
  43. let user = this.user.logged
  44. let count = 1
  45. let self = this
  46. const nowDate = new Date()
  47. const activeStartDate = new Date('2017/12/20 00:00:00')
  48. const activeEndDate = new Date('2018/1/2 00:00:00')
  49. const EndDate = new Date('2017/12/26 00:00:00')
  50. this.hasNewYear = nowDate > EndDate
  51. if (nowDate > activeStartDate && nowDate < activeEndDate) {
  52. const endTime = window.localStorage.getItem('endTime')
  53. if (!user) {
  54. setInterval(function () {
  55. count++
  56. if (count >= 30) {
  57. count = 1
  58. self.isOpen = true
  59. }
  60. }, 1000)
  61. }
  62. if (endTime) {
  63. if (nowDate.getTime() - endTime >= 1000 * 60) {
  64. this.isOpen = true
  65. window.localStorage.setItem('endTime', nowDate.getTime())
  66. } else {
  67. this.isOpen = false
  68. }
  69. } else {
  70. this.isOpen = true
  71. window.localStorage.setItem('endTime', nowDate.getTime())
  72. }
  73. } else {
  74. this.isOpen = false
  75. }
  76. },
  77. computed: {
  78. user () {
  79. return this.$store.state.option.user
  80. }
  81. },
  82. methods: {
  83. listenOpen () {
  84. this.isOpen = false
  85. },
  86. loadProductKinds (id) {
  87. this.$store.dispatch('loadAllProductKinds', {id})
  88. }
  89. }
  90. }
  91. </script>