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.
305 lines
8.7 KiB
305 lines
8.7 KiB
<template>
|
|
<view class="groups-container">
|
|
<view class="edgeInsetTop"></view>
|
|
<view v-if="loading" class="">
|
|
<view v-if="data.state === 'success'" class="groups-container__state padding margin-bottom-bj margin-lr-bj bg-white text-center radius-bock">
|
|
<view class="text-green text-xl">
|
|
<text class="wlIcon-wancheng margin-right-xs"></text>
|
|
<text>拼团成功</text>
|
|
</view>
|
|
<view class="margin-top-bj text-sm wanl-gray-dark">
|
|
<text>你可以在会员中心 - 拼团订单中</text>
|
|
<text class="margin-lr-xs text-blue" @tap="$wanlshop.auth('/pages/apps/groups/order/order?state=3')">查看发货</text>
|
|
<text>动态</text>
|
|
</view>
|
|
</view>
|
|
<view class="groups-container__user padding-bj margin-bottom-bj margin-lr-bj bg-white radius-bock">
|
|
<view class="cu-avatar round margin-right-bj"
|
|
:style="{ backgroundImage: 'url(' + $wanlshop.oss(data.user.avatar, 80, 80, 2, 'avatar') + ')' }">
|
|
</view>
|
|
<view class="content">
|
|
<view class="">
|
|
{{data.user.nickname}}
|
|
</view>
|
|
<view class="text-min wanl-gray">
|
|
发起了{{data.people_num}}人{{data.group_type == 'group' ? '拼团' : '阶梯团'}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="groups-container__goods margin-bottom-bj margin-lr-bj padding-bj bg-white radius-bock" @tap="onGroupsGoods(data.orderGoods.goods_id, data.id)">
|
|
<view class="cu-avatar radius-bock margin-right-bj"
|
|
:style="{ backgroundImage: 'url(' + $wanlshop.oss(data.orderGoods.image, 80, 80, 2, 'avatar') + ')' }">
|
|
</view>
|
|
<view class="content">
|
|
<view class="title text-cut-2 wanl-gray-dark">
|
|
<text class="cu-tag sm radius wanl-bg-pink margin-right-xs">{{data.people_num}}人{{data.group_type == 'group' ? ' 团' : ' 阶梯团'}}</text>
|
|
<text>{{data.orderGoods.title}}</text>
|
|
</view>
|
|
<view class="text-min flex justify-between flex-sub align-center">
|
|
<view class="difference">
|
|
<text class="text-price margin-right-xs text-orange text-lg">{{data.orderGoods.group_price}}</text>
|
|
<text class="cu-tag sm radius">规格 {{data.orderGoods.difference}}</text>
|
|
</view>
|
|
<view class="wanl-gray-light">
|
|
<text class="margin-right-xs">单买价</text>
|
|
<text class="text-price">{{data.orderGoods.market_price}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="groups-container__team padding margin-bottom-bj margin-lr-bj bg-white radius-bock">
|
|
<view class="title">
|
|
<view v-if="data.state === 'start'">
|
|
<view class="text-center">
|
|
邀请 <text class="text-red margin-lr-xs"> {{data.people_num - data.team.length}} </text> 位好有,团满可拼团成功
|
|
</view>
|
|
<wanl-timeout class="text-min" :endTime="data.validitytime"
|
|
padding="2rpx"
|
|
margin="6rpx"
|
|
color="#fff" backgroundColor="#32343c" borderColor="#32343c"/>
|
|
</view>
|
|
<view v-if="data.state === 'success' || data.state === 'auto'">
|
|
<view class="text-center">
|
|
团长人气太高,已拼团成功
|
|
</view>
|
|
</view>
|
|
<view v-if="data.state === 'fail'">
|
|
<view class="text-center text-red">
|
|
该团未能按时凑齐人数,拼团失败
|
|
</view>
|
|
<view class="text-center text-gray text-sm">
|
|
自动退款将返余额
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="list margin-bottom">
|
|
<view v-for="(item, index) in data.team" :key="item.id">
|
|
<view class="cu-avatar round margin-right-sm"
|
|
:style="{ backgroundImage: 'url(' + $wanlshop.oss(item.user_id === 0 ? item.avatar : item.user.avatar, 52, 52, 2, 'avatar') + ')' }">
|
|
<view v-if="item.user_id == data.user_id" class="cu-tag badge">
|
|
团长
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view v-for="(item, index) in (data.people_num - data.team.length)" :key="index">
|
|
<view class="ungrouped">
|
|
<text class="wlIcon-31wodexuanzhong"></text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="button">
|
|
<!-- 拼团状态:start=拼团中,success=已成团,fail=拼团失败,auto=自动成团 -->
|
|
<block v-if="user.isLogin && user.id === data.user_id">
|
|
<button v-if="data.state === 'start'" class="cu-btn wanl-bg-orange lg round" @tap="showModal('share')">
|
|
邀请好有拼团
|
|
</button>
|
|
<button v-else class="cu-btn wanl-bg-orange lg round" @tap="onGroupsGoods(data.orderGoods.goods_id)">
|
|
再次拼团
|
|
</button>
|
|
</block>
|
|
<block v-else>
|
|
<button v-if="data.state === 'start'" class="cu-btn wanl-bg-orange lg round" @tap="onGroupsGoods(data.orderGoods.goods_id, data.id)">
|
|
参与好友的拼团
|
|
</button>
|
|
<button v-else class="cu-btn wanl-bg-orange lg round" @tap="onGroupsGoods(data.orderGoods.goods_id)">
|
|
发起新的拼团
|
|
</button>
|
|
</block>
|
|
</view>
|
|
</view>
|
|
<view class="groups-container__explain padding-bj bg-white margin-lr-bj radius-bock">
|
|
<view class="text-30 wanl-gray-dark">
|
|
拼团玩法
|
|
</view>
|
|
<view class="text-min wanl-gray">
|
|
选择商品开团 / 参团 > 邀请好有参团 > 人满成团
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- 弹出框 -->
|
|
<view class="WANL-MODAL text-sm" @touchmove.stop.prevent="moveHandle" v-if="loading">
|
|
<!-- 分享 -->
|
|
<view class="cu-modal wanl-share bottom-modal" :class="modalName == 'share' ? 'show' : ''" @tap="hideModal">
|
|
<view class="cu-dialog" @tap.stop="">
|
|
<wanl-share
|
|
ref="wanlShare"
|
|
page="pages/apps/groups/goods"
|
|
:scene="{id: data.orderGoods.goods_id, gr: data.id, qr:'t'}"
|
|
:scrollAnimation="scrollAnimation"
|
|
:shareTitle="data.orderGoods.title"
|
|
:shareText="data.orderGoods.description"
|
|
:image="data.orderGoods.image"
|
|
@change="shareChange"
|
|
/>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapState } from 'vuex';
|
|
export default {
|
|
data() {
|
|
return {
|
|
group_no: 0,
|
|
data: {
|
|
user: {
|
|
nickname: '',
|
|
avatar: ''
|
|
},
|
|
team:[]
|
|
},
|
|
loading: false,
|
|
modalName: null ,// 弹出层
|
|
scrollAnimation: 100 //分享滚动
|
|
};
|
|
},
|
|
computed: {
|
|
...mapState(['user', 'common'])
|
|
},
|
|
onLoad(query) {
|
|
// 判断是否小程序来源 1.1.9升级
|
|
if(query.hasOwnProperty('scene')){
|
|
let scene = decodeURIComponent(query.scene);
|
|
scene = this.$wanlshop.getParam(scene);
|
|
this.group_no = scene.id;
|
|
}else{
|
|
this.group_no = query.id;
|
|
}
|
|
this.loadData();
|
|
},
|
|
methods: {
|
|
async loadData(){
|
|
await uni.request({
|
|
url: '/wanlshop/groups/team/getGroupsDetails',
|
|
data: {
|
|
id: this.group_no
|
|
},
|
|
success: res => {
|
|
this.loading = true;
|
|
this.data = res.data; //评论数据 追加
|
|
}
|
|
});
|
|
},
|
|
onGroupsGoods(id, groups_id){
|
|
if(groups_id){
|
|
this.$wanlshop.to(`/pages/apps/groups/goods?id=${id}&groups_id=${groups_id}`);
|
|
}else{
|
|
this.$wanlshop.to(`/pages/apps/groups/goods?id=${id}`);
|
|
}
|
|
},
|
|
// 弹出层
|
|
showModal(name) {
|
|
this.modalName = name;
|
|
setTimeout(() => {
|
|
this.scrollAnimation = 0;
|
|
}, 300);
|
|
},
|
|
// 关闭弹出层
|
|
hideModal() {
|
|
// 强制关闭海报
|
|
if(this.modalName == 'share'){
|
|
this.$refs.wanlShare.closePoster();
|
|
}
|
|
this.modalName = null;
|
|
},
|
|
// 分享回调
|
|
shareChange(e) {
|
|
if (e) {
|
|
this.$wanlshop.auth(`/pages/user/complaint/complaint?id=${this.goodsData.id}&type=3`);
|
|
} else {
|
|
this.modalName = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.groups-container{
|
|
&__state{
|
|
.text-green{
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
[class*="wlIcon-"]{
|
|
font-size: 50rpx;
|
|
}
|
|
}
|
|
}
|
|
&__user{
|
|
display: flex;
|
|
align-items: center;
|
|
.cu-avatar{
|
|
width: 80rpx;
|
|
height: 80rpx;
|
|
}
|
|
}
|
|
&__goods{
|
|
display: flex;
|
|
.cu-avatar{
|
|
width: 140rpx;
|
|
height: 140rpx;
|
|
}
|
|
.content{
|
|
flex: 1;
|
|
display: flex;
|
|
align-content: space-between;
|
|
flex-wrap: wrap;
|
|
.difference{
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
}
|
|
}
|
|
&__team{
|
|
.title{
|
|
width: 100%;
|
|
margin-top: 20rpx;
|
|
margin-bottom: 40rpx;
|
|
& > view{
|
|
display: flex;
|
|
justify-content: center;
|
|
flex-wrap: wrap;
|
|
.text-center{
|
|
width: 100%;
|
|
margin-bottom: 16rpx;
|
|
}
|
|
}
|
|
}
|
|
.list{
|
|
display: flex;
|
|
justify-content: center;
|
|
.ungrouped{
|
|
background-color: #e4e4e4;
|
|
border-radius: 2500rpx;
|
|
width: 64rpx;
|
|
height: 64rpx;
|
|
line-height: 64rpx;
|
|
text-align: center;
|
|
margin-right: 20rpx;
|
|
text{
|
|
font-size: 60rpx;
|
|
color: #fff;
|
|
}
|
|
}
|
|
}
|
|
.button{
|
|
display: flex;
|
|
justify-content: center;
|
|
margin-top: 60rpx;
|
|
.cu-btn{
|
|
width: 96%;
|
|
}
|
|
}
|
|
}
|
|
&__explain{
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
</style>
|
|
|