You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
6.2 KiB
245 lines
6.2 KiB
<template>
|
|
<view>
|
|
<view class="w-full bg-top relative" :style="{backgroundImage:headerBg}">
|
|
<view class="fixed-lt w-full z-20" :style="{'padding-top': sysHeight + 'px','background': pageScrollStatus ? '#e93323' : 'transparent'}">
|
|
<view class="w-full px-20 pl-20 h-80 flex-between-center">
|
|
<text class="iconfont icon-ic_leftarrow fs-40 text--w111-fff" @tap="backPage"></text>
|
|
<text class="fs-34 fw-500 text--w111-fff">拼团活动</text>
|
|
<text></text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="relative rd-t-40rpx bg--w111-f5f5f5 w-full content">
|
|
<view class="" v-if="combinationList.length">
|
|
<view class="pt-32 pl-20 pr-20">
|
|
<view class="card w-full bg--w111-fff rd-24rpx p-20 flex"
|
|
v-for="(item,index) in combinationList" :key="index"
|
|
@tap="openSubcribe(item)">
|
|
<easy-loadimage
|
|
mode="widthFix"
|
|
:image-src="item.image"
|
|
width="240rpx"
|
|
height="240rpx"
|
|
borderRadius="20rpx"></easy-loadimage>
|
|
<view class="flex-1 h-240 pl-20 flex-col justify-between">
|
|
<view class="w-full">
|
|
<view class="w-full fs-28 lh-40rpx line2">{{item.title}}</view>
|
|
<view class="flex fs-20 mt-14">
|
|
<view class="tuan-num text--w111-fff flex-center">{{item.people}}人团</view>
|
|
<view class="complete font-red flex-center">已拼{{item.pink_count}}份</view>
|
|
</view>
|
|
</view>
|
|
<view class="w-full flex-between-center">
|
|
<view>
|
|
<view class="flex items-baseline">
|
|
<text class="fs-22 lh-30rpx font-red fw-500">拼团价:</text>
|
|
<baseMoney :money="item.price" symbolSize="24" integerSize="40" decimalSize="24" color="#e93323" weight></baseMoney>
|
|
</view>
|
|
<view class="text-line text--w111-999 fs-22 lh-30rpx mt-12">¥{{item.product_price}}</view>
|
|
</view>
|
|
<view class="w-144 h-56 rd-30rpx flex-center fs-24 bg-gradient text--w111-fff" v-if="item.stock > 0 && item.quota > 0">参与拼团</view>
|
|
<view class="w-144 h-56 rd-30rpx flex-center fs-24 bg-gray text--w111-fff" v-else>参与拼团</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="p-20" v-if="!combinationList.length">
|
|
<emptyPage title="暂无拼团商品,去看看其他商品吧~" src="/statics/images/noActivity.gif"></emptyPage>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
let sysHeight = uni.getSystemInfoSync().statusBarHeight;
|
|
import {
|
|
getCombinationList,
|
|
getCombinationBannerList,
|
|
getPink
|
|
} from '@/api/activity.js';
|
|
import { openPinkSubscribe } from '@/utils/SubscribeMessage.js';
|
|
import {
|
|
HTTP_REQUEST_URL
|
|
} from '@/config/app';
|
|
import emptyPage from '@/components/emptyPage.vue';
|
|
let app = getApp();
|
|
export default {
|
|
data() {
|
|
return {
|
|
sysHeight:sysHeight,
|
|
pinkPeople: [],
|
|
pinkCount: 0,
|
|
bannerList: [],
|
|
circular: true,
|
|
autoplay: true,
|
|
interval: 3000,
|
|
duration: 500,
|
|
combinationList: [],
|
|
limit: 10,
|
|
page: 1,
|
|
loading: false,
|
|
loadend: false,
|
|
isBanner: false,
|
|
pageScrollStatus:false,
|
|
}
|
|
},
|
|
components:{ emptyPage },
|
|
computed:{
|
|
headerBg(){
|
|
return 'url('+ HTTP_REQUEST_URL +'/statics/images/product/combination_header.png'+')'
|
|
}
|
|
},
|
|
onPageScroll(object) {
|
|
if (object.scrollTop > 130) {
|
|
this.pageScrollStatus = true;
|
|
} else if (object.scrollTop < 130) {
|
|
this.pageScrollStatus = false;
|
|
}
|
|
uni.$emit('scroll');
|
|
},
|
|
onLoad() {
|
|
uni.setNavigationBarTitle({
|
|
title: "拼团列表"
|
|
})
|
|
this.getCombinationList();
|
|
this.getBannerList();
|
|
this.getPink();
|
|
},
|
|
onShow() {
|
|
uni.removeStorageSync('form_type_cart');
|
|
},
|
|
methods: {
|
|
getPink: function() {
|
|
getPink({
|
|
type: 2
|
|
}).then(res => {
|
|
this.pinkPeople = res.data.avatars;
|
|
this.pinkCount = res.data.pink_count;
|
|
})
|
|
},
|
|
getBannerList: function() {
|
|
getCombinationBannerList().then(res => {
|
|
this.bannerList = res.data;
|
|
this.isBanner = true;
|
|
})
|
|
},
|
|
goDetail(item) {
|
|
let url = item.link;
|
|
this.$util.JumpPath(url);
|
|
},
|
|
openSubcribe: function(item) {
|
|
let page = item;
|
|
// #ifndef MP
|
|
uni.navigateTo({
|
|
url: `/pages/activity/goods_details/index?id=${item.id}&type=3`
|
|
});
|
|
// #endif
|
|
// #ifdef MP
|
|
uni.showLoading({
|
|
title: '正在加载',
|
|
})
|
|
openPinkSubscribe().then(res => {
|
|
uni.hideLoading();
|
|
uni.navigateTo({
|
|
url: `/pages/activity/goods_details/index?id=${item.id}&type=3`
|
|
});
|
|
}).catch(() => {
|
|
uni.hideLoading();
|
|
});
|
|
// #endif
|
|
},
|
|
getCombinationList: function() {
|
|
var that = this;
|
|
if (that.loadend) return;
|
|
if (that.loading) return;
|
|
var data = {
|
|
page: that.page,
|
|
limit: that.limit
|
|
};
|
|
this.loading = true
|
|
getCombinationList(data).then(function(res) {
|
|
var combinationList = that.combinationList;
|
|
var limit = that.limit;
|
|
that.page++;
|
|
that.loadend = limit > res.data.length;
|
|
that.combinationList = combinationList.concat(res.data);
|
|
that.page = that.data.page;
|
|
that.loading = false;
|
|
}).catch(() => {
|
|
that.loading = false
|
|
})
|
|
},
|
|
backPage(){
|
|
uni.navigateBack()
|
|
}
|
|
},
|
|
onReachBottom: function() {
|
|
this.getCombinationList();
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.h-470{
|
|
height: 470rpx;;
|
|
}
|
|
.w-624{
|
|
width: 624rpx;
|
|
}
|
|
.bg-gradient {
|
|
background: linear-gradient( 270deg, #FF7931 0%, #E93323 100%);
|
|
}
|
|
.active-tab{
|
|
width: 132rpx;
|
|
height: 52rpx;
|
|
background: #FFF8E4;
|
|
color: #F85517;
|
|
border-radius: 30rpx;
|
|
font-weight: 500;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
.bg-top{
|
|
height: 547rpx;
|
|
background-size: 100% 100%;
|
|
background-repeat: no-repeat;
|
|
}
|
|
.content{
|
|
top: -80rpx;
|
|
}
|
|
._box{
|
|
padding: 40rpx 20rpx 32rpx;
|
|
background: #f5f5f5;
|
|
position: sticky;
|
|
z-index: 99;
|
|
}
|
|
.font-red{
|
|
color: #e93323;
|
|
}
|
|
.bg-red{
|
|
background-color: #e93323;
|
|
}
|
|
.bg-gray{
|
|
background-color: #ccc;
|
|
}
|
|
.con_border{
|
|
border: 1px solid #e93323;
|
|
}
|
|
.card ~ .card{
|
|
margin-top: 20rpx;
|
|
}
|
|
.tuan-num{
|
|
width: 70rpx;
|
|
height: 32rpx;
|
|
background: #E93323;
|
|
border-radius: 8rpx 0 0 8rpx;
|
|
}
|
|
.complete{
|
|
width: 110rpx;
|
|
height: 32rpx;
|
|
background: rgba(233, 51, 35, 0.1);
|
|
border-radius: 0 8rpx 8rpx 0;
|
|
}
|
|
</style> |