842 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			842 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | ||
|     <view class="index home-bg" :style="[navBackground]">
 | ||
|         <!-- #ifdef H5 -->
 | ||
|         <download-nav v-if="isShowDownload"></download-nav>
 | ||
|         <!-- #endif -->
 | ||
|         <u-sticky offset-top="0" h5-nav-height="0" bg-color="transparent" :enable="enable">
 | ||
|             <u-navbar
 | ||
|                 :border-bottom="false"
 | ||
|                 :is-fixed="false"
 | ||
|                 custom-class="home-bg"
 | ||
|                 :background="navBackground"
 | ||
|                 :is-back="false"
 | ||
|             >
 | ||
|                 <view class="row logo-wrap flex1" v-show="navBg < 1 && showLogo">
 | ||
|                     <image :src="logo" mode="heightFix" class="logo ml30"></image>
 | ||
|                 </view>
 | ||
|                 <view class="flex1 row nav-search" v-show="navSearch">
 | ||
|                     <navigator
 | ||
|                         hover-class="none"
 | ||
|                         @click="goPage('/bundle/pages/message_center/message_center')"
 | ||
|                     >
 | ||
|                         <image class="icon-md ml30" src="/static/images/icon_news.png"> </image>
 | ||
|                     </navigator>
 | ||
|                     <navigator
 | ||
|                         class="ml20 flex1 mr20"
 | ||
|                         hover-class="none"
 | ||
|                         url="/pages/goods_search/goods_search"
 | ||
|                     >
 | ||
|                         <u-search
 | ||
|                             wrap-bg-color="transparent"
 | ||
|                             :bg-color="'#fff'"
 | ||
|                             :disabled="true"
 | ||
|                             :height="62"
 | ||
|                         >
 | ||
|                         </u-search>
 | ||
|                     </navigator>
 | ||
|                 </view>
 | ||
|             </u-navbar>
 | ||
|         </u-sticky>
 | ||
|         <view class="flex1 row" v-if="showLogo">
 | ||
|             <navigator
 | ||
|                 hover-class="none"
 | ||
|                 @tap="goPage('/bundle/pages/message_center/message_center')"
 | ||
|             >
 | ||
|                 <image class="icon-md ml30" src="/static/images/icon_news.png"> </image>
 | ||
|             </navigator>
 | ||
|             <navigator
 | ||
|                 class="ml20 flex1 mr20"
 | ||
|                 hover-class="none"
 | ||
|                 url="/pages/goods_search/goods_search"
 | ||
|             >
 | ||
|                 <u-search
 | ||
|                     wrap-bg-color="transparent"
 | ||
|                     :bg-color="'#fff'"
 | ||
|                     :disabled="true"
 | ||
|                     :height="62"
 | ||
|                 ></u-search>
 | ||
|             </navigator>
 | ||
|         </view>
 | ||
|         <view class="contain">
 | ||
|             <view class="main">
 | ||
|                 <bubble-tips top="50rpx" :discharge="isDischarge"></bubble-tips>
 | ||
|                 <swipers :pid="1" height="322rpx" padding="20rpx 0"></swipers>
 | ||
|                 <!-- 导航入口 -->
 | ||
|                 <view class="nav bg-white" v-if="navList.length">
 | ||
|                     <swiper :style="'height:' + navSwiperH + 'rpx;'" @change="swiperChange">
 | ||
|                         <swiper-item v-for="(items, index) in navList" :key="index">
 | ||
|                             <view class="nav-list row wrap">
 | ||
|                                 <view
 | ||
|                                     v-for="(item, index2) in items"
 | ||
|                                     :key="index2"
 | ||
|                                     @tap="tapMenu(item)"
 | ||
|                                     class="nav-item column-center"
 | ||
|                                 >
 | ||
|                                     <image class="nav-icon" :src="item.image"></image>
 | ||
|                                     <view class="name xs">{{ item.name }}</view>
 | ||
|                                 </view>
 | ||
|                             </view>
 | ||
|                         </swiper-item>
 | ||
|                     </swiper>
 | ||
|                     <view class="dots" v-if="navList.length > 1">
 | ||
|                         <view
 | ||
|                             v-for="(item, index) in navList"
 | ||
|                             :key="index"
 | ||
|                             :class="'dot ' + (index == currentSwiper ? 'active' : '')"
 | ||
|                         ></view>
 | ||
|                     </view>
 | ||
|                 </view>
 | ||
|                 <!-- 资讯 -->
 | ||
|                 <navigator
 | ||
|                     v-if="news.length"
 | ||
|                     class="information bg-white row mt20"
 | ||
|                     hover-class="none"
 | ||
|                     open-type="navigate"
 | ||
|                     url="/pages/news_list/news_list"
 | ||
|                 >
 | ||
|                     <image class="icon-toutiao" src="/static/images/icon_toutiao.png"></image>
 | ||
|                     <text class="gap-line"></text>
 | ||
|                     <view class="news flex1">
 | ||
|                         <view class="shade"></view>
 | ||
|                         <swiper
 | ||
|                             autoplay="true"
 | ||
|                             style="height: 76rpx; flex: 1"
 | ||
|                             vertical="true"
 | ||
|                             circular="true"
 | ||
|                             :interval="3000"
 | ||
|                         >
 | ||
|                             <swiper-item v-for="(item, index) in news" :key="index" class="row">
 | ||
|                                 <view class="flexnone">
 | ||
|                                     <u-tag
 | ||
|                                         v-if="item.is_new"
 | ||
|                                         shape="circle"
 | ||
|                                         text="最新"
 | ||
|                                         size="mini"
 | ||
|                                         type="primary"
 | ||
|                                         mode="plain"
 | ||
|                                     />
 | ||
|                                 </view>
 | ||
|                                 <view class="text-swiper ml10 line1">{{ item.title }}</view>
 | ||
|                             </swiper-item>
 | ||
|                         </swiper>
 | ||
|                     </view>
 | ||
|                     <image class="icon-sm ml20" src="/static/images/arrow_right.png" />
 | ||
|                 </navigator>
 | ||
|                 <!-- 领卷 -->
 | ||
|                 <swipers :is-swiper="false" :pid="23" height="170rpx" padding="20rpx 0 0"></swipers>
 | ||
|                 <!-- 活动专区 -->
 | ||
|                 <view class="special-area mt20">
 | ||
|                     <view>
 | ||
|                         <scroll-view style="white-space: nowrap" :scroll-x="true">
 | ||
|                             <navigator
 | ||
|                                 class="item bg-white"
 | ||
|                                 v-for="(item, index) in activityArea"
 | ||
|                                 :key="index"
 | ||
|                                 hover-class="none"
 | ||
|                                 :url="`/bundle/pages/activity_detail/activity_detail?id=${item.id}&name=${item.title}&title=${item.name}`"
 | ||
|                             >
 | ||
|                                 <view class="column-center">
 | ||
|                                     <custom-image
 | ||
|                                         width="300rpx"
 | ||
|                                         height="436rpx"
 | ||
|                                         :src="item.image"
 | ||
|                                     ></custom-image>
 | ||
|                                     <!-- <view class="title xxl">{{item.name}}</view>
 | ||
| 									<view class="desc primary xxs line1">{{item.title}}</view> -->
 | ||
|                                 </view>
 | ||
|                             </navigator>
 | ||
|                         </scroll-view>
 | ||
|                     </view>
 | ||
|                 </view>
 | ||
|                 <!-- 秒杀 -->
 | ||
|                 <view class="seckill mt20" v-if="seckillGoods.length">
 | ||
|                     <active-area type="seckill" progressBarColor="#FF2C3C" :lists="seckillGoods">
 | ||
|                         <navigator
 | ||
|                             slot="header"
 | ||
|                             hover-class="none"
 | ||
|                             class="row activity-header white"
 | ||
|                             open-type="navigate"
 | ||
|                             url="/bundle/pages/goods_seckill/goods_seckill"
 | ||
|                         >
 | ||
|                             <view class="title xxl bold">超值秒杀</view>
 | ||
|                             <view class="row flex1">
 | ||
|                                 <text class="white xs ml10 line1"
 | ||
|                                     >{{ seckill.start_time }}点场</text
 | ||
|                                 >
 | ||
|                                 <view class="dec ml20 row-center mr20 br60">
 | ||
|                                     <u-count-down
 | ||
|                                         :timestamp="remainTime"
 | ||
|                                         separator-color="#FF2C3C"
 | ||
|                                         color="#FF2C3C"
 | ||
|                                         :separator-size="24"
 | ||
|                                         :font-size="24"
 | ||
|                                         bg-color="transparent"
 | ||
|                                     ></u-count-down>
 | ||
|                                 </view>
 | ||
|                             </view>
 | ||
|                             <view class="row xs">
 | ||
|                                 更多
 | ||
|                                 <u-icon name="arrow-right" size="28"></u-icon>
 | ||
|                             </view>
 | ||
|                         </navigator>
 | ||
|                     </active-area>
 | ||
|                 </view>
 | ||
|                 <!-- 热销 -->
 | ||
|                 <view class="hot mt20" v-if="hotGoods.length && seting.hots">
 | ||
|                     <active-area type="hot" progressBarColor="#9912FE" :lists="hotGoods">
 | ||
|                         <navigator
 | ||
|                             slot="header"
 | ||
|                             hover-class="none"
 | ||
|                             class="row activity-header"
 | ||
|                             open-type="navigate"
 | ||
|                             url="/bundle/pages/hot_list/hot_list"
 | ||
|                         >
 | ||
|                             <view class="title flex1">
 | ||
|                                 <image
 | ||
|                                     class="title-image"
 | ||
|                                     src="/static/images/hot_title.png"
 | ||
|                                 ></image>
 | ||
|                             </view>
 | ||
|                             <view class="row xs">
 | ||
|                                 更多
 | ||
|                                 <u-icon name="arrow-right" size="28"></u-icon>
 | ||
|                             </view>
 | ||
|                         </navigator>
 | ||
|                     </active-area>
 | ||
|                 </view>
 | ||
|                 <!-- 新品推荐 -->
 | ||
|                 <view v-if="newGoods.length && seting.news" class="new-goods">
 | ||
|                     <active-area type="news" progressBarColor="#9912FE" :lists="newGoods">
 | ||
|                         <navigator
 | ||
|                             slot="header"
 | ||
|                             hover-class="none"
 | ||
|                             class="row activity-header"
 | ||
|                             open-type="navigate"
 | ||
|                             url=""
 | ||
|                         >
 | ||
|                             <view class="title flex1">
 | ||
|                                 <image
 | ||
|                                     class="title-image"
 | ||
|                                     src="/static/images/new_title.png"
 | ||
|                                 ></image>
 | ||
|                             </view>
 | ||
|                             <!-- 	<view class="row xs">
 | ||
| 								更多
 | ||
| 								<u-icon name="arrow-right" size="28"></u-icon>
 | ||
| 							</view> -->
 | ||
|                         </navigator>
 | ||
|                     </active-area>
 | ||
|                 </view>
 | ||
|             </view>
 | ||
|             <!-- 好物优选 -->
 | ||
|             <view class="goods mt20" v-if="goodsList.length">
 | ||
|                 <view class="goods-title row-center">
 | ||
|                     <text class="line"></text>
 | ||
|                     <view class="row">
 | ||
|                         <image class="mr10 icon" src="/static/images/icon_like.png"></image>
 | ||
|                         <text class="bold xxl">好物优选</text>
 | ||
|                     </view>
 | ||
|                     <text class="line"></text>
 | ||
|                 </view>
 | ||
|                 <goods-list :list="goodsList"></goods-list>
 | ||
|                 <loading-footer :status="status"></loading-footer>
 | ||
|             </view>
 | ||
|         </view>
 | ||
| 
 | ||
|         <u-popup class="coupons-popup" v-model="showCoupop" mode="center">
 | ||
|             <view class="wrap">
 | ||
|                 <image class="coupon-bg" src="/static/images/home_coupon_bg.png"></image>
 | ||
|                 <scroll-view :scroll-y="true" style="height: 460rpx; margin-top: 300rpx">
 | ||
|                     <view class="item" v-for="(item, index) in couponPopList" :key="item.id">
 | ||
|                         <image class="img" src="/static/images/pop_bg_coupon.png"></image>
 | ||
|                         <view class="row item-con">
 | ||
|                             <view class="row-center price">
 | ||
|                                 <price-format
 | ||
|                                     color="#FF2C3C"
 | ||
|                                     :showSubscript="true"
 | ||
|                                     :subscriptSize="32"
 | ||
|                                     :first-size="56"
 | ||
|                                     :second-size="40"
 | ||
|                                     :price="item.money"
 | ||
|                                 />
 | ||
|                             </view>
 | ||
|                             <view class="ml20 mr20">
 | ||
|                                 <view class="bold md lighter">{{ item.name }}</view>
 | ||
|                                 <view class="xs muted mt10">{{ item.use_goods_type }}</view>
 | ||
|                             </view>
 | ||
|                         </view>
 | ||
|                     </view>
 | ||
|                 </scroll-view>
 | ||
|             </view>
 | ||
|             <view class="white row-center bg-primary lg btn br60" @click="showCoupop = false"
 | ||
|                 >立即领取</view
 | ||
|             >
 | ||
|         </u-popup>
 | ||
|         <!-- #ifdef APP-PLUS -->
 | ||
|         <lyg-popup
 | ||
|             v-if="appConfig.app_agreement"
 | ||
|             title="用户使用及隐私保护政策提示"
 | ||
|             protocolPath="/bundle/pages/server_explan/server_explan?type=0"
 | ||
|             policyPath="/bundle/pages/server_explan/server_explan?type=1"
 | ||
|             policyStorageKey="has_read_privacy"
 | ||
|         >
 | ||
|         </lyg-popup>
 | ||
|         <!-- #endif -->
 | ||
|         <!-- #ifdef MP-WEIXIN -->
 | ||
|         <!-- 用户隐私协议弹框 -->
 | ||
|         <privacy-popup v-model="showPrivacyPopup"></privacy-popup>
 | ||
|         <!-- #endif -->
 | ||
| 
 | ||
|         <!-- 无网络提示 -->
 | ||
|         <u-no-network z-index="1200" @retry="handleRetry"></u-no-network>
 | ||
| 
 | ||
|         <u-back-top
 | ||
|             :scroll-top="scrollTop"
 | ||
|             :top="1000"
 | ||
|             :customStyle="{
 | ||
|                 backgroundColor: '#FFF',
 | ||
|                 color: '#000',
 | ||
|                 boxShadow: '0px 3px 6px rgba(0, 0, 0, 0.1)'
 | ||
|             }"
 | ||
|         ></u-back-top>
 | ||
|     </view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| import { mapMutations, mapGetters, mapActions } from 'vuex'
 | ||
| import { getHome, getMenu, getBestList } from '@/api/store'
 | ||
| import { loadingType } from '@/utils/type'
 | ||
| import { loadingFun, menuJump, arraySlice, setTabbar, getRect, trottle } from '@/utils/tools'
 | ||
| import { toLogin } from '@/utils/login'
 | ||
| import Cache from '@/utils/cache'
 | ||
| import { getConfig, userShare, getRegisterCoupon } from '@/api/app'
 | ||
| const app = getApp()
 | ||
| export default {
 | ||
|     data() {
 | ||
|         return {
 | ||
|             scrollTop: 0,
 | ||
|             navSwiperH: 374,
 | ||
|             logo: '',
 | ||
|             navHeight: 0,
 | ||
|             currentSwiper: 0,
 | ||
|             page: 1,
 | ||
|             status: loadingType.LOADING,
 | ||
|             remainTime: '',
 | ||
|             navBg: 0,
 | ||
|             navList: [],
 | ||
|             news: [],
 | ||
|             goodsList: [],
 | ||
|             seckill: {},
 | ||
|             seckillGoods: [],
 | ||
|             hotGoods: [],
 | ||
|             newGoods: [],
 | ||
|             activityArea: [],
 | ||
|             showCoupop: false,
 | ||
|             couponPopList: [],
 | ||
|             coupon: [],
 | ||
|             isDischarge: true,
 | ||
|             enable: true,
 | ||
|             isShowDownload: false,
 | ||
|             showPrivacyPopup: false //微信用户隐私协议
 | ||
|         }
 | ||
|     },
 | ||
|     async onLoad(options) {
 | ||
|         // #ifdef MP-WEIXIN
 | ||
|         if (wx.getPrivacySetting) {
 | ||
|             wx.getPrivacySetting({
 | ||
|                 success: (res) => {
 | ||
|                     console.log(res, '------') // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
 | ||
|                     if (res.needAuthorization) {
 | ||
|                         // 需要弹出隐私协议
 | ||
|                         setTimeout(() => {
 | ||
|                             uni.hideTabBar()
 | ||
|                         }, 100)
 | ||
|                         this.showPrivacyPopup = true
 | ||
|                     } else {
 | ||
|                         uni.showTabBar()
 | ||
|                     }
 | ||
|                 },
 | ||
|                 fail: (err) => {
 | ||
|                     uni.showTabBar()
 | ||
|                     console.log(err)
 | ||
|                 }
 | ||
|             })
 | ||
|         } else {
 | ||
|             uni.showTabBar()
 | ||
|         }
 | ||
| 
 | ||
|         // #endif
 | ||
| 
 | ||
|         this.headerAction = wx.createAnimation({
 | ||
|             delay: 0,
 | ||
|             duration: 100,
 | ||
|             timingFunction: 'ease-in-out'
 | ||
|         })
 | ||
|         this.onPageScroll = trottle(this.onPageScroll, 500, this)
 | ||
|         setTabbar()
 | ||
|         this.navHeight = app.globalData.navHeight
 | ||
|         this.isDischarge = false
 | ||
|         await this.getMenuFun()
 | ||
|         this.getBestListFun()
 | ||
|         console.log(this.appConfig)
 | ||
|         // #ifdef H5
 | ||
|         if (options && options.isapp == 1) {
 | ||
|             this.isShowDownload = true
 | ||
|         }
 | ||
|         // #endif
 | ||
|     },
 | ||
|     async onShow() {
 | ||
|         this.$nextTick(function () {
 | ||
|             getRect('.index').then((res) => {
 | ||
|                 if (res.top == 0) {
 | ||
|                     this.navBg = 0
 | ||
|                 }
 | ||
|             })
 | ||
|         })
 | ||
| 
 | ||
|         // #ifdef H5
 | ||
|         this.enable = true
 | ||
|         // #endif
 | ||
|         await this.getHomeFun()
 | ||
|         this.getCartNum()
 | ||
|         this.isLogin && this.getRegisterCouponFun()
 | ||
| 
 | ||
|         // #ifdef MP
 | ||
|         wx.getUpdateManager().onUpdateReady(function () {
 | ||
|             wx.showModal({
 | ||
|                 title: '更新提示',
 | ||
|                 content: '新版本已经准备好,是否重启应用?',
 | ||
|                 success(res) {
 | ||
|                     if (res.confirm) {
 | ||
|                         // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
 | ||
|                         wx.getUpdateManager().applyUpdate()
 | ||
|                     }
 | ||
|                 }
 | ||
|             })
 | ||
|         })
 | ||
|         // #endif
 | ||
|     },
 | ||
|     onHide() {
 | ||
|         // #ifdef H5
 | ||
|         this.enable = false
 | ||
|         // #endif
 | ||
|     },
 | ||
|     onReachBottom() {
 | ||
|         this.getBestListFun()
 | ||
|     },
 | ||
|     onPullDownRefresh() {
 | ||
|         this.getHomeFun()
 | ||
|         this.getMenuFun()
 | ||
|     },
 | ||
|     onShareAppMessage() {
 | ||
|         console.log(this.inviteCode)
 | ||
|         const shareInfo = Cache.get('shareInfo')
 | ||
|         return {
 | ||
|             title: shareInfo.mnp_share_title,
 | ||
|             path: 'pages/index/index?invite_code=' + this.inviteCode,
 | ||
|             imageUrl: shareInfo.mnp_share_image
 | ||
|         }
 | ||
|     },
 | ||
|     onPageScroll(e) {
 | ||
|         const top = uni.upx2px(100)
 | ||
|         const { scrollTop } = e
 | ||
|         if (!this.enable) return
 | ||
|         let percent = scrollTop / top
 | ||
|         this.navBg = percent > 1 ? 1 : percent
 | ||
|         this.scrollTop = scrollTop
 | ||
|     },
 | ||
|     destroyed() {
 | ||
|         this.isDischarge = true
 | ||
|     },
 | ||
|     methods: {
 | ||
|         ...mapMutations(['SETCONFIG']),
 | ||
|         ...mapActions(['getCartNum', 'getUser']),
 | ||
|         // 网络重试刷新网络请求(解决在ios中首次进入时需要授权蜂窝加载空白页面问题
 | ||
|         async handleRetry() {
 | ||
|             console.log('网络重试刷')
 | ||
|             try {
 | ||
|                 const { code, data } = await getConfig()
 | ||
|                 if (code == 1) {
 | ||
|                     this.SETCONFIG(data)
 | ||
|                     setTabbar()
 | ||
|                 }
 | ||
|             } catch (e) {
 | ||
|                 uni.showTabBar()
 | ||
|             }
 | ||
|             this.getShareInfo()
 | ||
|             this.getUser()
 | ||
|         },
 | ||
|         async getShareInfo() {
 | ||
|             const { code, data } = await userShare()
 | ||
|             if (code == 1) {
 | ||
|                 Cache.set('shareInfo', data)
 | ||
|             }
 | ||
|         },
 | ||
|         async getHomeFun() {
 | ||
|             const { code, data } = await getHome()
 | ||
|             uni.stopPullDownRefresh()
 | ||
|             if (code == 1) {
 | ||
|                 const { coupon, news, seckill, host_goods, shop_logo, new_goods, activity_area } =
 | ||
|                     data
 | ||
|                 this.remainTime = Math.abs(seckill.end_time - Date.parse(new Date()) / 1000)
 | ||
|                 this.logo = shop_logo
 | ||
|                 this.news = news
 | ||
|                 this.seckillGoods = seckill.goods
 | ||
|                 this.seckill = seckill
 | ||
|                 this.hotGoods = host_goods
 | ||
|                 this.coupon = coupon
 | ||
|                 this.newGoods = new_goods
 | ||
|                 this.activityArea = activity_area
 | ||
|             }
 | ||
|         },
 | ||
| 
 | ||
|         async getMenuFun() {
 | ||
|             const { code, data } = await getMenu({
 | ||
|                 type: 1
 | ||
|             })
 | ||
|             uni.stopPullDownRefresh()
 | ||
|             if (code == 1) {
 | ||
|                 //   截取数组
 | ||
|                 if (data.length <= 5) {
 | ||
|                     this.navSwiperH = 200
 | ||
|                 } else {
 | ||
|                     this.navSwiperH = 374
 | ||
|                 }
 | ||
|                 this.navList = arraySlice(data)
 | ||
|             }
 | ||
|         },
 | ||
|         async getBestListFun() {
 | ||
|             let { page, goodsList, status } = this
 | ||
|             const data = await loadingFun(getBestList, page, goodsList, status)
 | ||
|             if (!data) return
 | ||
|             this.page = data.page
 | ||
|             this.goodsList = data.dataList
 | ||
|             this.status = data.status
 | ||
|         },
 | ||
|         async tapMenu(item) {
 | ||
|             if (!this.isLogin) return toLogin()
 | ||
|             menuJump(item)
 | ||
|         },
 | ||
|         goPage(url) {
 | ||
|             if (!this.isLogin) return toLogin()
 | ||
|             uni.navigateTo({
 | ||
|                 url
 | ||
|             })
 | ||
|         },
 | ||
|         swiperChange(e) {
 | ||
|             this.currentSwiper = e.detail.current
 | ||
|         },
 | ||
|         getRegisterCouponFun() {
 | ||
|             getRegisterCoupon().then((res) => {
 | ||
|                 if (res.code == 1) {
 | ||
|                     if (res.data && res.data.length) {
 | ||
|                         this.showCoupop = true
 | ||
|                     }
 | ||
|                     this.couponPopList = res.data
 | ||
|                 }
 | ||
|             })
 | ||
|         }
 | ||
|     },
 | ||
|     computed: {
 | ||
|         ...mapGetters(['cartNum', 'inviteCode', 'appConfig']),
 | ||
|         navBackground() {
 | ||
|             return this.seting.top_bg_image
 | ||
|                 ? {
 | ||
|                       'background-image': `url(${this.seting.top_bg_image})`
 | ||
|                   }
 | ||
|                 : {}
 | ||
|         },
 | ||
|         showLogo() {
 | ||
|             return this.seting.logo
 | ||
|         },
 | ||
|         navSearch() {
 | ||
|             if (this.showLogo === 0) return true
 | ||
| 
 | ||
|             return this.navBg < 1 ? false : true
 | ||
|         },
 | ||
|         seting() {
 | ||
|             const { index_setting } = this.appConfig
 | ||
|             return index_setting
 | ||
|         }
 | ||
|     }
 | ||
| }
 | ||
| </script>
 | ||
| 
 | ||
| <style lang="scss">
 | ||
| // #ifdef H5
 | ||
| ::v-deep .home-bg {
 | ||
|     background: url(../../static/images/bg_hometop.png) no-repeat;
 | ||
|     background-size: 100% auto;
 | ||
| }
 | ||
| 
 | ||
| // #endif
 | ||
| .home-bg {
 | ||
|     background: url(../../static/images/bg_hometop.png) no-repeat;
 | ||
|     background-size: 100% auto;
 | ||
| }
 | ||
| .index {
 | ||
|     .live-play {
 | ||
|         position: fixed;
 | ||
|         z-index: 999;
 | ||
|         bottom: 200rpx;
 | ||
|         right: 20rpx;
 | ||
|         display: flex;
 | ||
|         align-items: center;
 | ||
|         justify-content: center;
 | ||
|         width: 80rpx;
 | ||
|         height: 80rpx;
 | ||
|         border: $-solid-border;
 | ||
|         border-radius: 50%;
 | ||
|         font-size: 32rpx;
 | ||
|         background-color: #ffffff;
 | ||
| 
 | ||
|         &__icon {
 | ||
|             animation: scale 0.5s infinite;
 | ||
|         }
 | ||
| 
 | ||
|         @keyframes scale {
 | ||
|             from {
 | ||
|                 top: 0px;
 | ||
|                 transform: scale(1);
 | ||
|             }
 | ||
|             to {
 | ||
|                 transform: scale(1.2);
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     background-size: 100% auto;
 | ||
| 
 | ||
|     .logo-wrap {
 | ||
|         position: absolute;
 | ||
| 
 | ||
|         .logo {
 | ||
|             width: auto;
 | ||
|             height: 52rpx;
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     .header {
 | ||
|         .navigation-bar {
 | ||
|             padding-top: var(--status-bar-height);
 | ||
|             box-sizing: border-box;
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     .contain {
 | ||
|         .main {
 | ||
|             position: relative;
 | ||
|             z-index: 9;
 | ||
|             padding: 0 20rpx;
 | ||
| 
 | ||
|             .nav {
 | ||
|                 position: relative;
 | ||
|                 border-radius: 14rpx;
 | ||
| 
 | ||
|                 .nav-item {
 | ||
|                     width: 20%;
 | ||
|                     margin-top: 30rpx;
 | ||
| 
 | ||
|                     .nav-icon {
 | ||
|                         width: 82rpx;
 | ||
|                         height: 82rpx;
 | ||
|                         margin-bottom: 15rpx;
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 .dots {
 | ||
|                     position: absolute;
 | ||
|                     left: 50%;
 | ||
|                     transform: translateX(-50%);
 | ||
|                     bottom: 20rpx;
 | ||
|                     display: flex;
 | ||
| 
 | ||
|                     .dot {
 | ||
|                         width: 10rpx;
 | ||
|                         height: 6rpx;
 | ||
|                         border-radius: 6rpx;
 | ||
|                         margin-right: 10rpx;
 | ||
|                         background-color: rgba(255, 44, 60, 0.4);
 | ||
| 
 | ||
|                         &.active {
 | ||
|                             width: 20rpx;
 | ||
|                             background-color: $-color-primary;
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             .information {
 | ||
|                 height: 76rpx;
 | ||
|                 box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.06);
 | ||
|                 padding: 0 20rpx;
 | ||
|                 box-sizing: border-box;
 | ||
|                 border-radius: 14rpx;
 | ||
| 
 | ||
|                 .news {
 | ||
|                     position: relative;
 | ||
| 
 | ||
|                     .shade {
 | ||
|                         position: absolute;
 | ||
|                         width: 100%;
 | ||
|                         height: 100%;
 | ||
|                         z-index: 100;
 | ||
|                     }
 | ||
|                 }
 | ||
| 
 | ||
|                 .icon-toutiao {
 | ||
|                     width: 114rpx;
 | ||
|                     height: 34rpx;
 | ||
|                 }
 | ||
| 
 | ||
|                 .gap-line {
 | ||
|                     height: 28rpx;
 | ||
|                     width: 1px;
 | ||
|                     background-color: #dcdddc;
 | ||
|                     margin: 0 30rpx;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             .special-area {
 | ||
|                 .item {
 | ||
|                     width: 300rpx;
 | ||
|                     border-radius: 20rpx;
 | ||
|                     display: inline-block;
 | ||
|                     overflow: hidden;
 | ||
|                     margin-right: 20rpx;
 | ||
| 
 | ||
|                     .title {
 | ||
|                         padding: 10rpx 0;
 | ||
|                     }
 | ||
| 
 | ||
|                     .desc {
 | ||
|                         background-color: #fee9eb;
 | ||
|                         padding: 6rpx 20rpx;
 | ||
|                         border-radius: 60rpx;
 | ||
|                         max-width: 260rpx;
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             .activity-header {
 | ||
|                 height: 90rpx;
 | ||
|                 padding: 0 20rpx;
 | ||
|             }
 | ||
| 
 | ||
|             .seckill {
 | ||
|                 .dec {
 | ||
|                     background-color: #fffbdb;
 | ||
|                     width: 150rpx;
 | ||
|                 }
 | ||
|             }
 | ||
| 
 | ||
|             .hot,
 | ||
|             .new-goods {
 | ||
|                 .title-image {
 | ||
|                     width: 144rpx;
 | ||
|                     height: 55rpx;
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         .goods {
 | ||
|             .goods-title {
 | ||
|                 height: 100rpx;
 | ||
| 
 | ||
|                 .line {
 | ||
|                     width: 58rpx;
 | ||
|                     height: 1px;
 | ||
|                     background-color: #ccc;
 | ||
|                     margin: 0 22rpx;
 | ||
|                 }
 | ||
| 
 | ||
|                 .icon {
 | ||
|                     width: 38rpx;
 | ||
|                     height: 38rpx;
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     .coupon-pop-container {
 | ||
|         background-image: url(../../static/images/home_coupon_bg.png);
 | ||
|         width: 638rpx;
 | ||
|         height: 804rpx;
 | ||
|         background-size: 100% 100%;
 | ||
|         padding-top: 323rpx;
 | ||
| 
 | ||
|         .coupon-pop-lists {
 | ||
|             .coupon-pop-item {
 | ||
|                 background-image: url(../../static/images/pop_bg_coupon.png);
 | ||
|                 width: 488rpx;
 | ||
|                 height: 150rpx;
 | ||
|                 background-size: 100% 100%;
 | ||
|                 margin-top: 20rpx;
 | ||
| 
 | ||
|                 .coupon-left {
 | ||
|                     width: 160rpx;
 | ||
|                     height: 100%;
 | ||
|                 }
 | ||
| 
 | ||
|                 .coupon-right {
 | ||
|                     padding-left: 30rpx;
 | ||
|                     border-left: 1rpx dashed $-color-primary;
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     .coupons-popup {
 | ||
|         .wrap {
 | ||
|             position: relative;
 | ||
|             width: 638rpx;
 | ||
|             height: 803rpx;
 | ||
|             overflow: hidden;
 | ||
| 
 | ||
|             .coupon-bg {
 | ||
|                 position: absolute;
 | ||
|                 top: 0;
 | ||
|                 width: 100%;
 | ||
|                 height: 100%;
 | ||
|             }
 | ||
| 
 | ||
|             .item {
 | ||
|                 position: relative;
 | ||
|                 width: 488rpx;
 | ||
|                 height: 150rpx;
 | ||
|                 margin: 0 auto 20rpx;
 | ||
|             }
 | ||
| 
 | ||
|             .img {
 | ||
|                 position: absolute;
 | ||
|                 width: 100%;
 | ||
|                 height: 100%;
 | ||
|                 z-index: 0;
 | ||
|             }
 | ||
| 
 | ||
|             .item-con {
 | ||
|                 z-index: 10;
 | ||
|                 position: relative;
 | ||
|                 padding: 20rpx 0;
 | ||
|                 height: 100%;
 | ||
|                 box-sizing: border-box;
 | ||
| 
 | ||
|                 .price {
 | ||
|                     width: 160rpx;
 | ||
|                     border-right: 1px dashed $-color-primary;
 | ||
|                     height: 100%;
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         .btn {
 | ||
|             width: 478rpx;
 | ||
|             height: 84rpx;
 | ||
|             margin: 20rpx auto;
 | ||
|             box-sizing: border-box;
 | ||
|             border: 3px solid #f8d07c;
 | ||
|         }
 | ||
|     }
 | ||
| }
 | ||
| </style>
 |