<template>
  <view class="index">
    <view v-for="(item, index) in homeData" :key="index">
      <view class="head_box" v-if="item.type == 'header'" :style="{ background: bgcolor }" :class="{ active: bgcolor }">
        <cu-custom :isBack="true" :bgColor="bgcolor">
          <block slot="backText">
            <text class="nav-title shopro-selector-rect">{{ item.componentContent.title }}</text>
          </block>
        </cu-custom>
      </view>
      <view class="header header-search acea-row row-center-wrapper" v-if="item.type == 'search'" :style="{ background: bgcolor }">
        <view @click="goGoodSearch()" class="search acea-row row-middle">
          <text class="iconfont icon-xiazai5"></text>
          搜索商品
        </view>
        <!-- #ifndef H5 -->
        <view class="qr" @click="startQr()" v-if="$deviceType !== 'weixin'">
          <image :src="`${$VUE_APP_RESOURCES_URL}/images/qr.png`" />
        </view>
        <!-- #endif -->
      </view>
      <Banner v-if="item.type == 'banner'" :detail="item.componentContent.bannerData" @getbgcolor="getbgcolor"></Banner>
      <uni-notice-bar v-if="item.type == 'noticeBar'" scrollable="true" @click="goRoll(item.componentContent.roll[0])" single="true" :speed="10" showIcon="true" :text="item.componentContent.roll[0].info"></uni-notice-bar>
      <view class="content_box home_content_box" v-if="item.type == 'menu' && item.componentContent.menus">
        <!-- 菜单 -->
        <Menu :list="item.componentContent.menus"></Menu>
      </view>
      <!-- 滚动新闻 -->
      <!-- 广告 -->
      <Adv v-if="item.type == 'adv' && item.componentContent.detail" :detail="item.componentContent.detail" />
      <!-- 热门榜单 -->
      <HotCommodity v-if="item.type == 'hotCommodity'" :detail="likeInfo"></HotCommodity>
      <!-- 超值拼团 -->
      <Groupon v-if="item.type == 'groupon'" :detail="combinationList" />
      <!-- 首发新品->秒杀 -->
      <FirstNewProduct v-if="item.type == 'firstNewProduct'" :detail="firstList"></FirstNewProduct>
      <!-- 精品推荐 -->
      <ProductsRecommended v-if="item.type == 'productsRecommended'" :detail="bastList"></ProductsRecommended>
      <!-- 促销单品 -->
      <PromoteProduct v-if="item.type == 'promoteProduct'" :detail="benefit"></PromoteProduct>
      <!-- 直播 -->
      <!-- #ifdef MP-WEIXIN -->
      <Live v-if="item.type == 'live'" :detail="live"></Live>
      <!-- #endif -->
      <!-- 为您推荐 -->
      <PromotionGood v-if="item.type == 'promotionGood'" :benefit="benefit"></PromotionGood>
      <Coupon-window :coupon-list="couponList" v-if="showCoupon" @checked="couponClose" @close="couponClose"> </Coupon-window>
    </view>
	<!-- <view class="demo" style='height:100rpx'></view> -->
	<!-- #ifndef APP-PLUS -->
	<view class="bottomSpace" style='line-height:100rpx'>PC</view>
	<!-- #endif -->
  </view>
</template>
<script>
import { mapState, mapMutations, mapActions } from 'vuex'
import GoodList from '@/components/GoodList'
import PromotionGood from '@/components/PromotionGood'
import CouponWindow from '@/components/CouponWindow'
import Menu from '@/components/Menu'
import UniNoticeBar from '@/components/uni-notice-bar/uni-notice-bar'
import Adv from '@/components/sh-adv'
import Groupon from '@/components/sh-groupon.vue'

import Banner from './components/Banner'
import HotCommodity from './components/HotCommodity'
import FirstNewProduct from './components/FirstNewProduct'
import ProductsRecommended from './components/ProductsRecommended'
import Live from './components/Live'

import { getHomeData, getShare, getCanvas } from '@/api/public'
import cookie from '@/utils/store/cookie'
import { isWeixin, handleUrlParam } from '@/utils/index'

import { openShareAll } from '@/libs/wechat'

const HAS_COUPON_WINDOW = 'has_coupon_window'

export default {
  name: 'Index',
  components: {
    // swiper,
    // swiperSlide,
    UniNoticeBar,
    GoodList,
    PromotionGood,
    CouponWindow,
    Menu,
    Adv,
    Groupon,
    Banner,
    HotCommodity,
    FirstNewProduct,
    ProductsRecommended,
    Live,
  },
  props: {},
  data: function() {
    return {
      homeData: [],
      CustomBar: this.CustomBar,
      StatusBar: this.StatusBar,
      formatMenus: [],
      categoryCurrent: 0,
      menuNum: 4,
      bgcolor: '',
      bgColor: '',
      swiperCurrent: 0, //轮播下标
      webviewId: 0,
      showCoupon: false,
      logoUrl: '',
      banner: [],
      menus: [],
      combinationList: [],
      roll: [],
      activity: [],
      activityOne: {},
      bastList: [],
      firstList: [],
      info: {
        fastList: [],
        bastBanner: [],

        bastList: [],
      },
      likeInfo: [],
      live: [],
      lovely: [],
      benefit: [],
      couponList: [],
      swiperOption: {
        pagination: {
          el: '.swiper-pagination',
          clickable: true,
        },
        autoplay: {
          disableOnInteraction: false,
          delay: 2000,
        },
        loop: true,
        speed: 1000,
        observer: true,
        observeParents: true,
      },
      swiperRoll: {
        direction: 'vertical',
        autoplay: {
          disableOnInteraction: false,
          delay: 2000,
        },
        loop: true,
        speed: 1000,
        observer: true,
        observeParents: true,
      },
      swiperScroll: {
        freeMode: true,
        freeModeMomentum: false,
        slidesPerView: 'auto',
        observer: true,
        observeParents: true,
      },
      swiperBoutique: {
        pagination: {
          el: '.swiper-pagination',
          clickable: true,
        },
        autoplay: {
          disableOnInteraction: false,
          delay: 2000,
        },
        loop: true,
        speed: 1000,
        observer: true,
        observeParents: true,
      },
      swiperProducts: {
        freeMode: true,
        freeModeMomentum: false,
        slidesPerView: 'auto',
        observer: true,
        observeParents: true,
      },
      bgImage: '',
    }
  },
  computed: {
    singNew() {
      return this.roll.length > 0 ? this.roll[0] : '你还没添加通知哦!'
    },
    customStyle() {
      var bgImage = this.bgImage
      // var style = `height:${this.CustomBar}px;padding-top:${0}px;background: ${this.bgcolor}`;
      var style = `height:${this.CustomBar}px;padding-top:${this.StatusBar}px;background: ${this.bgcolor}`
      if (this.bgImage) {
        style = `${style}background-image:url(${bgImage});`
      }
      return style
    },
  },
  onLoad: function() {
    this.getLocation()
    let that = this
    // uni.showLoading({
    //   title: "加载中",
    // });
    getCanvas()
      .then(res => {})
      .catch(error => {
        this.homeData = JSON.parse(error.data.json)
        console.log(this.homeData)
        console.log(222)
      })
    getHomeData().then(res => {
      that.logoUrl = res.data.logoUrl
      res.data.banner.map(item => (item.bgcolor = item.color || ''))
      that.$set(that, 'info', res.data.info)
      that.$set(that, 'firstList', res.data.firstList)
      that.$set(that, 'bastList', res.data.bastList)
      that.$set(that, 'likeInfo', res.data.likeInfo)
      that.$set(that, 'live', res.data.liveList)
      that.$set(that, 'lovely', res.data.lovely)
      that.$set(that, 'benefit', res.data.benefit)
      that.$set(that, 'couponList', res.data.couponList)
      that.$set(that, 'combinationList', res.data.combinationList)
      uni.hideLoading()
      that.setOpenShare()
      // that.doColorThief()
    })
  },
  methods: {
    ...mapActions(['getLocation']),
    onShareTimeline: function() {
      return {
        title: this.miniHomeRemark,
        imageUrl: this.miniHomeImg,
        path: 'pages/home/index?spread=' + uni.getStorageSync('uid'),
      }
    },
    onShareAppMessage: function() {
      return {
        title: this.miniHomeRemark,
        imageUrl: this.miniHomeImg,
        path: 'pages/home/index?spread=' + uni.getStorageSync('uid'),
      }
    },
    goRoll(item) {
      if (item.uniapp_url) {
        this.$yrouter.push(item.uniapp_url)
      }
    },
    goGoodSearch() {
      // this.$yrouter.push('/pages/shop/GoodsEvaluate/index');
      this.$yrouter.push('/pages/shop/GoodSearch/index')
    },
    goWxappUrl(item) {
      this.$yrouter.push(item.uniapp_url)
    },
    goHotNewGoods(type) {
      this.$yrouter.push({
        path: '/pages/shop/HotNewGoods/index',
        query: {
          type,
        },
      })
    },
    goGoodsCon(item) {
      this.$yrouter.push({
        path: '/pages/shop/GoodsCon/index',
        query: {
          id: item.id,
        },
      })
    },
    goGoodsPromotion() {
      this.$yrouter.push('/pages/shop/GoodsPromotion/index')
    },
    setOpenShare: function() {
      if (this.$deviceType == 'weixin') {
        getShare().then(res => {
          var data = res.data.data
          var configAppMessage = {
            desc: data.synopsis,
            title: data.title,
            link: location.href,
            imgUrl: data.img,
          }
          openShareAll(configAppMessage)
        })
      }
    },
    startQr: function() {
      uni.scanCode({
        success: res => {
          let option = handleUrlParam(res.result)
          switch (option.pageType) {
            case 'good':
              // 跳转商品详情
              this.$yrouter.push({
                path: '/pages/shop/GoodsCon/index',
                query: {
                  q: res.result,
                },
              })
              break
            case 'group':
              // 跳转团购
              this.$yrouter.push({
                path: '/pages/activity/GroupRule/index',
                query: {
                  q: res.result,
                },
              })
              break
            case 'dargain':
              // 跳转砍价
              this.$yrouter.push({
                path: '/pages/activity/DargainDetails/index',
                query: {
                  q: res.result,
                },
              })
              break
            default:
              // 跳转分销
              this.$yrouter.push({
                path: '/pages/Loading/index',
                query: {},
              })
              break
          }
        },
      })
    },
    getbgcolor(e) {
      this.bgcolor = e
    },
  },
  created: async function() {
    // await this.doColorThief();
  },
}
</script>
<style scoped lang="less">
.content_box {
  background: #f6f6f6;
}

.index {
  background-color: #f6f6f6;
}

.swiper-item {
  height: 100%;
}

.fixed-header {
  position: fixed;
  z-index: 99;
  // #ifdef H5
  top: 88rpx;
  // #endif

  // #ifndef H5
  top: 0;
  // #endif
  left: 0;
  right: 0;
  background: #fff;
  box-shadow: 0 0 20rpx -10rpx #aaa;

  & + .fixed-header-box {
    height: 98rpx;
  }
}

.head_box {
  width: 750rpx;
  // background: #fff;
  transition: all linear 0.3s;

  /deep/.cuIcon-back {
    display: none;
  }

  .nav-title {
    font-size: 38rpx;
    font-family: PingFang SC;
    font-weight: 500;
    color: #fff;
  }
}

.cu-bar.fixed {
  position: fixed;
  width: 100%;
  top: 0;
  z-index: 1024;
  // box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1);
}

.cu-bar {
  box-sizing: border-box;

  .index .header {
    height: 64rpx;
    // width: 100%;
    // padding: 0 30rpx;
    // box-sizing: border-box;
  }
}

.header-search {
  transition: all linear 0.3s;
}

.cu-bar .action {
  display: -webkit-box;
  display: -webkit-flex;
  display: flex;
  align-items: center;
  height: 100%;
  max-height: 100%;

  &:first-child {
    margin-left: 15px;
    font-size: 15px;
  }
}

.home_content_box {
  margin-top: -20rpx;
}

.head_box {
}

.nav-title {
  margin-left: 20rpx;
  line-height: 40px;
}
</style>