<template> <div class="quality-recommend" :data-theme="theme"> <view class="saleBox" v-if="typeInfo.pic"></view> <view class="header skeleton-rect" v-if="typeInfo.pic"> <swiper indicator-dots="true" autoplay="true" :circular="circular" interval="3000" duration="1500" indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff"> <block> <swiper-item class="borRadius14"> <image :src="typeInfo.pic" class="slide-image borRadius14" lazy-load></image> </swiper-item> </block> </swiper> </view> <div class="title acea-row row-center-wrapper"> <div class="line"></div> <div class="name"> <span class="iconfont icon-jingpintuijian" ></span> {{typeInfo.name}} </div> <div class="line"></div> </div> <view class="wrapper"> <!-- <GoodList :bastList="tempArr" :status="1"></GoodList> --> <view class="list"> <view class="item acea-row row-middle" v-for="(item,index) in tempArr" :key="index" @click="toDetail(item.id)"> <view class="img_box"> <image class="pictrue" :src="item.image"></image> </view> <view class="ml_11 flex-column justify-between"> <view class="goods_name">{{item.storeName}}</view> <view class="price flex justify-between"> <view> <text class="price_bdg">¥</text>{{item.price}} <text class="otPrice">¥{{item.otPrice}}</text> </view> </view> </view> </view> </view> <view class='loadingicon acea-row row-center-wrapper' v-if="goodScroll"> <text class='loading iconfont icon-jiazai' :hidden='loading==false'></text> </view> <view class="txt-bar" v-if="tempArr.length > 0">😕人家是有底线的~~</view> <emptyPage title="暂无数据~" v-if="tempArr.length == 0"></emptyPage> </view> </div> </template> <script> import emptyPage from '@/components/emptyPage.vue'; import GoodList from '@/components/goodList/index'; import {getGroomList} from '@/api/store'; import {goPage} from '@/libs/order.js'; import {productRank} from '@/api/api.js' import Loading from '@/components/Loading/index.vue'; import animationType from '@/utils/animationType.js' let app = getApp() export default { name: 'HotNewGoods', components: { GoodList, emptyPage, Loading }, data: function() { return { circular:true, theme:app.globalData.theme, typeInfo:{}, loading:false, params: { //精品推荐分页 page: 1, limit: 10, }, loading: false, goodScroll: true, //精品推荐开关 tempArr:[], }; }, onLoad: function(e) { this.typeInfo = JSON.parse(e.type) uni.setNavigationBarTitle({ title: this.typeInfo.name }); if(this.typeInfo.name == '商品排行'){ this.getProductRank(); }else{ this.getGroomList(); } }, methods: { getGroomList() { this.loading = true if (!this.goodScroll) return getGroomList(this.typeInfo.type, this.params).then(({data}) => { this.goodScroll = data.list.length >= this.params.limit this.loading = false this.params.page++ this.tempArr = this.tempArr.concat(data.list) }) }, getProductRank(){ productRank().then(res=>{ this.tempArr = res.data; }) }, toDetail(id){ uni.navigateTo({ animationType: animationType.type, animationDuration: animationType.duration, url:'/pages/goods_details/index?id=' + id }) } }, onReachBottom() { if (this.params.page != 1) { this.getGroomList(); } }, } </script> <style lang="scss"> /deep/ .quality-recommend { background-color: #f5f5f5; } .saleBox{ width: 100%; height: 298rpx; /* #ifdef MP */ height: 300rpx; /* #endif */ @include main_bg_color(theme); border-radius: 0 0 50rpx 50rpx; } .quality-recommend .header { width: 710rpx; height: 330rpx; margin: -276rpx auto 0 auto; border-radius: 14rpx; overflow: hidden; swiper{ height: 330rpx !important; border-radius: 14rpx; overflow: hidden; } } .quality-recommend .header image { width: 100%; height: 100%; border-radius: 14rpx; overflow: hidden; img{ border-radius: 14rpx; } } .quality-recommend { .wrapper { // background: #fff; .list { width: 690rpx; border-radius: 20rpx; background-color: #fff; margin: 0rpx auto 0 auto; padding: 20rpx 20rpx 30rpx; box-sizing: border-box; .item { background: #fff; margin-top: 26rpx; .img_box{ width: 180rpx; height: 180rpx; background: #F3F3F3; position: relative; .pictrue{ width:100%; height:100%; border-radius: 10rpx; } .rank_bdg{ width: 100%; height: 46rpx; position: absolute; bottom: 0; left: 0; right: 0; margin: auto; text-align: center; color: #fff; font-size: 24rpx; line-height: 46rpx; } } .ml_11{ margin-left: 22rpx; border-bottom: 1px solid #eee; padding-bottom: 20rpx; } .goods_name{ width: 420rpx; height: 80rpx; font-size: 30rpx; font-weight: 400; color: #333333; line-height: 40rpx; overflow: hidden; text-overflow:ellipsis; white-space: wrap; } } } } .title { height: 120rpx; font-size: 32rpx; color: #282828; background-color: #f5f5f5; .name { margin: 0 20rpx; .iconfont { margin-right: 10rpx; } } .line { width: 230rpx; height: 2rpx; background-color: #e9e9e9; } } } .price{ margin-top: 60rpx; font-size: 34rpx; font-weight: 600; @include price_color(theme); .price_bdg{ font-size: 26rpx; } .otPrice{ font-size: 24rpx; color: #999999; font-weight: 400; padding-left: 12rpx; text-decoration: line-through; } .cart_icon{ width: 48rpx; height: 48rpx; border-radius: 50%; @include main_bg_color(theme); text-align: center; line-height: 40rpx; .iconfont{ font-size: 28rpx; font-weight: 400; color: #fff; } } } .txt-bar { padding: 20rpx 0; text-align: center; font-size: 26rpx; color: #666; background-color: #f5f5f5; } </style>