<template>
  <view class="container">
    <view class="tui-bg__box">
      <image :src="`${$VUE_APP_RESOURCES_URL}/images/bg_seckill.png`" class="tui-bg__img" mode="widthFix" :style="{ opacity: opacity }"></image>
    </view>
    <view class="tui-header__bg">
      <image :src="`${$VUE_APP_RESOURCES_URL}/images/bg_seckill.png`" class="tui-bg__img" mode="widthFix"></image>
      <scroll-view class="tui-time-slot" scroll-x>
        <view class="tui-time__list" :class="{ 'tui-flex__between': timeList.length < 6 }">
          <view class="tui-time__item" :class="[timeList.length < 6 ? 'tui-flex__1' : 'tui-width__min', index == active ? 'tui-time__active' : '']" v-for="(item, index) in timeList" :key="index" @tap="setTime(index)">
            <view class="tui-time">{{ item.time }}</view>
            <view class="tui-status">{{ item.state }}</view>
          </view>
        </view>
      </scroll-view>
    </view>
    <view class="tui-body">
      <block v-for="(item, index) in timeList" :key="index">
        <view class="tui-status__box" v-if="active == index">
          <view class="tui-full__width" v-if="item.status == 0">
            <tui-divider gradual width="80%" backgroundColor="#fff" :height="34">
              <view class="tui-divider__status">
                <image :src="`${$VUE_APP_RESOURCES_URL}/images/img_seckill.png`" mode="widthFix"></image>
                <text class="tui-color__red">{{ item.time }}</text>
                <text>{{ item.state }}</text>
              </view>
            </tui-divider>
          </view>
          <view class="tui-full__width" v-if="item.status == 2">
            <tui-divider gradual width="80%" backgroundColor="#fff" :height="34">
              <view class="tui-divider__status">
                <image :src="`${$VUE_APP_RESOURCES_URL}/images/img_seckill.png`" mode="widthFix"></image>
                <text class="tui-color__red">{{ item.time }}</text>
                <text>{{ item.state }}</text>
              </view>
            </tui-divider>
          </view>
          <view class="tui-countdown__box" v-if="item.status == 1 || item.status == 2">
            <text>距离{{ item.status == 1 ? '结束还剩' : '开始还有' }}</text>
            <count-down :isDay="true" :tipText="'倒计时 '" :dayText="' 天 '" :hourText="' 时 '" :minuteText="' 分 '" :secondText="' 秒'" :datatime="item.stop"></count-down>
          </view>
        </view>
      </block>

      <view class="tui-list__goods">
        <view class="tui-goods__left">
          <block v-for="(item, index) in seckillList" :key="index">
            <t-goods-item v-if="index % 2 == 0" :item="item" :timeList="timeList" :active="active" :isList="false" @goDetail="goDetail"></t-goods-item>
          </block>
        </view>
        <view class="tui-goods__right">
          <block v-for="(item, index) in seckillList" :key="index">
            <t-goods-item v-if="index % 2 !== 0" :item="item" :timeList="timeList" :active="active" :isList="false" @goDetail="goDetail"></t-goods-item>
          </block>
        </view>
      </view>
    </view>
  </view>
</template>
<script>
import { getSeckillConfig, getSeckillList } from '@/api/activity'
import CountDown from '@/components/CountDown'

// import { Tab, Tabs } from "vant-weapp";
import Loading from '@/components/Loading'

export default {
  name: 'GoodsSeckill',
  components: {
    CountDown,
  },
  props: {},
  data: function() {
    return {
      headerImg: '',
      timeList: [],
      sticky: false,
      loading: false,
      datatime: 0,
      active: 0,
      seckillList: [],
      status: false, //砍价列表是否获取完成 false 未完成 true 完成
      loadingList: false, //当前接口是否请求完成 false 完成 true 未完成
      page: 1, //页码
      limit: 5, //数量
      title: [],
      opacity: 1,
    }
  },
  mounted: function() {
    this.mountedStart()
  },
  onReachBottom() {
    !this.loadingList && this.getSeckillList()
  },
  filters: {
    getStatusText(status) {
      let text = ['活动已结束', '正在疯抢', '即将开抢'][status - 1]
      return text
    },
  },
  methods: {
    changeTime: function(index) {
      this.active = index
      this.getSeckillList()
    },
    mountedStart: function() {
      var that = this
      uni.showLoading()
      getSeckillConfig().then(res => {
        that.$set(that, 'headerImg', res.data.lovely)
        that.$set(that, 'timeList', res.data.seckillTime)
        that.$set(that, 'active', res.data.seckillTimeIndex)

        let title = []
        title = res.data.seckillTime.map((item, index) => {
          return {
            name: 'div',
            attrs: {
              class: 'timeItem',
            },
            children: [
              {
                name: 'div',
                attrs: {
                  class: 'time',
                },
                children: [
                  {
                    type: 'text',
                    text: item.time,
                  },
                ],
              },
              {
                name: 'div',
                attrs: {
                  class: 'state',
                },
                children: [
                  {
                    type: 'text',
                    text: item.state,
                  },
                ],
              },
            ],
          }
        })
        that.$set(that, 'title', title)
        that.datatime = that.timeList[that.active].stop
        that.getSeckillList()
        that.$nextTick(function() {
          that.sticky = true
          uni.hideLoading()
        })
      })
    },
    setTime: function(index) {
      var that = this
      that.page = 1
      that.loadingList = false
      that.status = false
      that.active = index
      that.datatime = that.timeList[that.active].stop
      this.seckillList = []
      that.getSeckillList()
    },
    getSeckillList: function() {
      var that = this
      if (that.loadingList) return
      if (that.status) return
      var time = that.timeList[that.active].id
      getSeckillList(time, {
        page: that.page,
        limit: that.limit,
      }).then(res => {
        that.status = res.data.length < that.limit
        that.seckillList.push.apply(that.seckillList, res.data)
        that.page++
        uni.hideLoading()
      })
    },
    goDetail: function(item) {
      var that = this
      var time = that.timeList[that.active].stop
      this.$yrouter.push({
        path: '/pages/activity/SeckillDetails/index',
        query: {
          id: item.id,
          time,
          status: that.timeList[that.active].status,
        },
      })
    },
    onPageScroll(e) {
      let scrollTop = e.scrollTop
      if (scrollTop <= 2) {
        this.opacity = 1
      } else {
        if (this.opacity <= 0) return
        this.opacity = 1 - scrollTop / 40
      }
    },
  },
}
</script>
<style scoped lang="less">
.tui-bg__box {
  width: 100%;
  height: 210rpx;
  position: fixed;
  left: 0;
  top: 0;
  z-index: 1;
}

.tui-header__bg {
  width: 100%;
  height: 120rpx;
  position: fixed;
  left: 0;
  top: 0;
  z-index: 3;
  overflow: hidden;
}

.tui-bg__img {
  width: 100%;
  height: 210rpx;
  display: block;
  transition: opacity 0.1s linear;
}

.tui-body {
  width: 100%;
  position: relative;
  margin-top: 120rpx;
  z-index: 2;
  padding: 0 25rpx;
  box-sizing: border-box;
}

.tui-time-slot {
  width: 100%;
  height: 120rpx;
  position: absolute;
  left: 0;
  top: 0;
}

.tui-time__list {
  min-width: 100%;
  height: 120rpx;
  display: flex;
  align-items: center;
}

.tui-flex__between {
  justify-content: space-between;
}

.tui-time__item {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  flex-direction: column;
  justify-content: center;
  color: #ffb2b2;
}

.tui-flex__1 {
  flex: 1 !important;
}

.tui-width__min {
  min-width: 150rpx;
}

.tui-time {
  font-size: 32rpx;
  line-height: 32rpx;
  font-weight: bold;
}

.tui-status {
  font-size: 24rpx;
  line-height: 24rpx;
  font-weight: 500;
  padding-top: 16rpx;
}

.tui-time__active .tui-time {
  color: #fff;
  font-size: 36rpx;
  line-height: 36rpx;
}

.tui-time__active .tui-status {
  color: #fff;
  font-size: 28rpx;
  line-height: 28rpx;
  font-weight: bold;
}

.tui-status__box {
  width: 100%;
  height: 146rpx;
  background: #fff;
  border-radius: 20rpx;
  box-shadow: 0 3rpx 20rpx rgba(183, 183, 183, 0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}

.tui-full__width {
  width: 100%;
}

.tui-divider__status {
  display: flex;
  align-items: center;
  font-size: 28rpx;
  color: #333;
  font-weight: bold;
}

.tui-divider__status image {
  width: 30rpx;
  height: 30rpx;
  margin-right: 10rpx;
  flex-shrink: 0;
}

.tui-color__red {
  color: #eb0909;
  padding-right: 6rpx;
  font-size: 32rpx;
  font-weight: 500;
}

.tui-countdown__box {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #333;
  font-size: 24rpx;
  font-weight: 400;
  margin-top: 16rpx;
}

.tui-countdown__box text {
  padding-right: 12rpx;
}

/*======商品列表 start=======*/
.tui-list__goods {
  width: 100%;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  margin-top: 20rpx;
  padding-bottom: 30rpx;
}

.tui-goods__left,
.tui-goods__right {
  width: 49%;
}

.tui-full__width {
  width: 100% !important;
}

/*======商品列表 end=======*/

.tui-goods__item {
  width: 100%;
  padding: 20rpx 20rpx 36rpx;
  box-sizing: border-box;
  border-radius: 12rpx;
  background-color: #fff;
  margin-bottom: 4%;
  position: relative;
}
.tui-full__item {
  display: flex;
  margin-bottom: 20rpx !important;
  padding: 20rpx !important;
}
.tui-img__newguest {
  position: absolute;
  width: 96rpx;
  height: 32rpx;
  left: 0;
  top: 8rpx;
}
.tui-image__box {
  width: 100%;
  height: 300rpx;
}
.tui-full__imgbox {
  width: 240rpx !important;
  height: 240rpx !important;
  margin-right: 20rpx;
}
.tui-goods__img {
  max-width: 100%;
  max-height: 300rpx;
  display: block;
  border-radius: 8rpx;
}
.tui-full__img {
  max-height: 240rpx !important;
}
.tui-goods__content {
  width: 100%;
  padding-top: 16rpx;
}
.tui-full__content {
  height: 240rpx;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding-top: 0 !important;
}
.tui-goods__title {
  font-size: 26rpx;
  font-weight: 400;
  color: #333;
  word-break: break-all;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  margin-bottom: 20rpx;
}
.tui-tag__box {
  display: flex;
  padding-top: 25rpx;
  padding-bottom: 25rpx;
}
.tui-box__bottom {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.tui-price__box {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.tui-price {
  display: flex;
  align-items: flex-end;
  color: #eb0909;
}
.tui-price__small {
  font-size: 24rpx;
  line-height: 24rpx;
}
.tui-price__large {
  font-size: 34rpx;
  line-height: 32rpx;
  font-weight: 600;
}
.tui-price__original {
  font-size: 24rpx;
  line-height: 24rpx;
  text-decoration: line-through;
  color: #999;
  padding-top: 10rpx;
}
</style>