xbx #75
@ -113,10 +113,12 @@ export default {
 | 
				
			|||||||
				});
 | 
									});
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			// 订单步骤1:展示结算数据
 | 
								// 订单步骤1:展示结算数据
 | 
				
			||||||
			settlementOrder({ ifcart, cart_id }) {
 | 
								settlementOrder({ ifcart, cart_id, pintuan_id, pintuangroup_id }) {
 | 
				
			||||||
				return vm.$u.post('buy/buy_step1', {
 | 
									return vm.$u.post('buy/buy_step1', {
 | 
				
			||||||
					ifcart: ifcart,
 | 
										ifcart: ifcart,
 | 
				
			||||||
					cart_id: cart_id,
 | 
										cart_id: cart_id,
 | 
				
			||||||
 | 
										pintuan_id: pintuan_id,
 | 
				
			||||||
 | 
										pintuangroup_id: pintuangroup_id,
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			// 订单步骤2:发起订单,返回订单信息
 | 
								// 订单步骤2:发起订单,返回订单信息
 | 
				
			||||||
@ -126,6 +128,9 @@ export default {
 | 
				
			|||||||
					cart_id: cart_id,
 | 
										cart_id: cart_id,
 | 
				
			||||||
					address_id: address_id,
 | 
										address_id: address_id,
 | 
				
			||||||
					buy_city_id: buy_city_id,
 | 
										buy_city_id: buy_city_id,
 | 
				
			||||||
 | 
										pintuan_id: pintuan_id,
 | 
				
			||||||
 | 
										pintuangroup_id: pintuangroup_id,
 | 
				
			||||||
 | 
										voucher_id: voucher_id, // 优惠券信息
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			// 订单步骤3:发起支付(第三方统一下单)
 | 
								// 订单步骤3:发起支付(第三方统一下单)
 | 
				
			||||||
@ -183,9 +188,9 @@ export default {
 | 
				
			|||||||
				return vm.$u.post('Spike/recommendedSpike');
 | 
									return vm.$u.post('Spike/recommendedSpike');
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			// 秒杀详情
 | 
								// 秒杀详情
 | 
				
			||||||
			getSpikeInfo({ id }) {
 | 
								getSpikeInfo({ groupbuy_id }) {
 | 
				
			||||||
				return vm.$u.post('Spike/spikeInfo', {
 | 
									return vm.$u.post('Spike/spikeInfo', {
 | 
				
			||||||
					groupbuy_id: id
 | 
										groupbuy_id: groupbuy_id
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			// 秒杀列表
 | 
								// 秒杀列表
 | 
				
			||||||
 | 
				
			|||||||
@ -4,9 +4,12 @@ Vue.use(Vuex)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const store = new Vuex.Store({
 | 
					const store = new Vuex.Store({
 | 
				
			||||||
	state: {
 | 
						state: {
 | 
				
			||||||
		cartInfo: {}, // 购物车数据
 | 
							orderType: '', // 订单类型 1 普通订单 2 购物车订单 3 拼团订单 4 秒杀订单
 | 
				
			||||||
 | 
							orderInfo: {}, // 订单数据 订单步骤1:展示结算数据
 | 
				
			||||||
		orderAddress: {}, // 下单时选择的地址
 | 
							orderAddress: {}, // 下单时选择的地址
 | 
				
			||||||
		goodsDetails: {}, // 商品详情 1普通 2拼团 3秒杀 4优惠券
 | 
							goodsDetails: {}, // 商品详情 1普通 2拼团 3秒杀 4优惠券
 | 
				
			||||||
 | 
							goods_id: '', // 拼团商品 id
 | 
				
			||||||
 | 
							groupbuyInfo: {}, // 秒杀详情
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	getters: {
 | 
						getters: {
 | 
				
			||||||
		getOrderAddress(state) {
 | 
							getOrderAddress(state) {
 | 
				
			||||||
@ -20,8 +23,11 @@ const store = new Vuex.Store({
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	mutations: {
 | 
						mutations: {
 | 
				
			||||||
		updateCart(state, cart) {
 | 
							setOrderType(state, type) {
 | 
				
			||||||
			state.cartInfo = cart;
 | 
								state.orderType = type;
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							updateOrderInfo(state, info) {
 | 
				
			||||||
 | 
								state.orderInfo = info;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		updateAddress(state, address) {
 | 
							updateAddress(state, address) {
 | 
				
			||||||
			state.orderAddress = address;
 | 
								state.orderAddress = address;
 | 
				
			||||||
@ -29,6 +35,12 @@ const store = new Vuex.Store({
 | 
				
			|||||||
		setGoodsDetails(state, goods) {
 | 
							setGoodsDetails(state, goods) {
 | 
				
			||||||
			state.goodsDetails = goods;
 | 
								state.goodsDetails = goods;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							setGoodsId(state, id) {
 | 
				
			||||||
 | 
								state.goods_id = id;
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							setGroupbuyInfo(state, info) {
 | 
				
			||||||
 | 
								state.groupbuyInfo = info;
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export default store;
 | 
					export default store;
 | 
				
			||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
    <view class="group">
 | 
					    <view class="group">
 | 
				
			||||||
        <view class="top">
 | 
					        <view class="top">
 | 
				
			||||||
            <text>全部拼团</text>
 | 
					            <text>全部拼团</text>
 | 
				
			||||||
            <text>查看更多></text>
 | 
					            <text @click="viewMore">查看更多></text>
 | 
				
			||||||
        </view>
 | 
					        </view>
 | 
				
			||||||
        <view class="label">
 | 
					        <view class="label">
 | 
				
			||||||
            <u-tabs-swiper ref="group" :list="classifyList" name="gc_name" :is-scroll="true" active-color="#FF780F" :current="current" font-size="24" :show-bar="false" @change="tabsChange" height="88"></u-tabs-swiper>
 | 
					            <u-tabs-swiper ref="group" :list="classifyList" name="gc_name" :is-scroll="true" active-color="#FF780F" :current="current" font-size="24" :show-bar="false" @change="tabsChange" height="88"></u-tabs-swiper>
 | 
				
			||||||
@ -42,6 +42,11 @@ export default {
 | 
				
			|||||||
			this.swiperCurrent = current;
 | 
								this.swiperCurrent = current;
 | 
				
			||||||
			this.current = current;
 | 
								this.current = current;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							viewMore() {
 | 
				
			||||||
 | 
								this.$u.route({
 | 
				
			||||||
 | 
									url: 'pageC/groupBuy/index',
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <view class="item">
 | 
					    <view class="item" @click="toDetailsPage">
 | 
				
			||||||
        <image class="head" :src="info.pintuan_image"></image>
 | 
					        <image class="head" :src="info.pintuan_image"></image>
 | 
				
			||||||
        <text class="title u-line-1">{{ info.pintuan_goods_name }}</text>
 | 
					        <text class="title u-line-1">{{ info.pintuan_goods_name }}</text>
 | 
				
			||||||
        <view class="price">
 | 
					        <view class="price">
 | 
				
			||||||
@ -13,6 +13,25 @@ export default {
 | 
				
			|||||||
	name:"item",
 | 
						name:"item",
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
		info: Object
 | 
							info: Object
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						methods: {
 | 
				
			||||||
 | 
							toDetailsPage() {
 | 
				
			||||||
 | 
								this.$u.api.getPinTuanDetails({
 | 
				
			||||||
 | 
									pintuan_id: this.info.pintuan_id,
 | 
				
			||||||
 | 
								}).then(res => {
 | 
				
			||||||
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
 | 
										const goods = {
 | 
				
			||||||
 | 
											goods: res.data.data,
 | 
				
			||||||
 | 
											type: 2,
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsDetails', goods);
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsId', this.info.pintuan_id);
 | 
				
			||||||
 | 
										this.$u.route({
 | 
				
			||||||
 | 
											url: 'pageB/sdetails/index',
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@
 | 
				
			|||||||
				</view>
 | 
									</view>
 | 
				
			||||||
				<view class="num">{{ info.pintuan_limit_number }}人团</view>
 | 
									<view class="num">{{ info.pintuan_limit_number }}人团</view>
 | 
				
			||||||
            </view>
 | 
					            </view>
 | 
				
			||||||
            <view class="info">
 | 
					            <view class="info" @click="toDetailsPage">
 | 
				
			||||||
                <text class="u-line-1">{{ info.groupbuy_name }}</text>
 | 
					                <text class="u-line-1">{{ info.groupbuy_name }}</text>
 | 
				
			||||||
                <text class="u-line-2">{{ info.goods_name }}</text>
 | 
					                <text class="u-line-2">{{ info.goods_name }}</text>
 | 
				
			||||||
                <view>
 | 
					                <view>
 | 
				
			||||||
@ -48,11 +48,9 @@ export default {
 | 
				
			|||||||
						type: 2,
 | 
											type: 2,
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					this.$store.commit('setGoodsDetails', goods);
 | 
										this.$store.commit('setGoodsDetails', goods);
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsId', this.recommendData.pintuan_id);
 | 
				
			||||||
					this.$u.route({
 | 
										this.$u.route({
 | 
				
			||||||
						url: 'pageB/sdetails/index',
 | 
											url: 'pageB/sdetails/index',
 | 
				
			||||||
						params: {
 | 
					 | 
				
			||||||
							id: this.recommendData.pintuan_id
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					})
 | 
										})
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
 | 
				
			|||||||
@ -39,7 +39,7 @@ export default {
 | 
				
			|||||||
			this.$u.route({
 | 
								this.$u.route({
 | 
				
			||||||
				url: '/pageC/spike/index',
 | 
									url: '/pageC/spike/index',
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
		}
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
				
			|||||||
@ -32,7 +32,7 @@ export default {
 | 
				
			|||||||
        width: 210rpx;
 | 
					        width: 210rpx;
 | 
				
			||||||
        height: 131rpx;
 | 
					        height: 131rpx;
 | 
				
			||||||
        border-radius: 6rpx;
 | 
					        border-radius: 6rpx;
 | 
				
			||||||
 | 
							background-color: antiquewhite;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    .title{
 | 
					    .title{
 | 
				
			||||||
        font-size: 26rpx;
 | 
					        font-size: 26rpx;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,15 +1,27 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
	<view class="special">
 | 
						<view class="special">
 | 
				
			||||||
 | 
							<view v-if="type == 'spike'">
 | 
				
			||||||
			<image :src="item.groupbuy_image1"></image>
 | 
								<image :src="item.groupbuy_image1"></image>
 | 
				
			||||||
			<view class="right">
 | 
								<view class="right">
 | 
				
			||||||
				<view class="name u-line-1">{{ item.goods_name }}</view>
 | 
									<view class="name u-line-1">{{ item.goods_name }}</view>
 | 
				
			||||||
			<view class="price" v-if="type == 'spike'">
 | 
									<view class="price">
 | 
				
			||||||
					<view class="groupbuy-price">{{ item.groupbuy_price }}</view>
 | 
										<view class="groupbuy-price">{{ item.groupbuy_price }}</view>
 | 
				
			||||||
					<view class="goods-price">{{ item.goods_price }}</view>
 | 
										<view class="goods-price">{{ item.goods_price }}</view>
 | 
				
			||||||
				</view>
 | 
									</view>
 | 
				
			||||||
				<view class="buy">
 | 
									<view class="buy">
 | 
				
			||||||
					<view class="num">剩余{{ item.inventory }}件</view>
 | 
										<view class="num">剩余{{ item.inventory }}件</view>
 | 
				
			||||||
				<view class="btn">立即购买</view>
 | 
										<view class="btn" @click="spikeGoods">立即购买</view>
 | 
				
			||||||
 | 
									</view>
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
 | 
							</view>
 | 
				
			||||||
 | 
							<view v-if="type == 'group'">
 | 
				
			||||||
 | 
								<image :src="item.pintuan_image"></image>
 | 
				
			||||||
 | 
								<view class="right">
 | 
				
			||||||
 | 
									<view class="name u-line-1">{{ item.pintuan_goods_name }}</view>
 | 
				
			||||||
 | 
									<view class="price group">
 | 
				
			||||||
 | 
										<view class="groupbuy-price">{{ item.pintuan_goods_price }}</view>
 | 
				
			||||||
 | 
										<view class="btn" @click="toDetailsPage">立即拼团</view>
 | 
				
			||||||
 | 
									</view>
 | 
				
			||||||
			</view>
 | 
								</view>
 | 
				
			||||||
		</view>
 | 
							</view>
 | 
				
			||||||
	</view>
 | 
						</view>
 | 
				
			||||||
@ -25,12 +37,52 @@ export default {
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
	created() {
 | 
						created() {
 | 
				
			||||||
		console.log(this.item);
 | 
							console.log(this.item);
 | 
				
			||||||
 | 
							console.log(this.type);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						methods: {
 | 
				
			||||||
 | 
							spikeGoods() {
 | 
				
			||||||
 | 
								console.log(this.item.groupbuy_id);
 | 
				
			||||||
 | 
								this.$u.api.getSpikeInfo({
 | 
				
			||||||
 | 
									groupbuy_id: this.item.groupbuy_id
 | 
				
			||||||
 | 
								}).then(res => {
 | 
				
			||||||
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
 | 
										const goods = {
 | 
				
			||||||
 | 
											goods: res.data.goodsInfo,
 | 
				
			||||||
 | 
											type: 3, // 商品详情 1普通 2拼团 3秒杀 4优惠券
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsDetails', goods);
 | 
				
			||||||
 | 
										this.$store.commit('setGroupbuyInfo', res.data.groupbuyInfo);
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsId', this.item.groupbuy_id);
 | 
				
			||||||
 | 
										this.$u.route({
 | 
				
			||||||
 | 
											url: 'pageB/sdetails/index',
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							toDetailsPage() {
 | 
				
			||||||
 | 
								this.$u.api.getPinTuanDetails({
 | 
				
			||||||
 | 
									pintuan_id: this.item.pintuan_id
 | 
				
			||||||
 | 
								}).then(res => {
 | 
				
			||||||
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
 | 
										const goods = {
 | 
				
			||||||
 | 
											goods: res.data.data,
 | 
				
			||||||
 | 
											type: 2,
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsDetails', goods);
 | 
				
			||||||
 | 
										this.$store.commit('setGoodsId', this.item.pintuan_id);
 | 
				
			||||||
 | 
										this.$u.route({
 | 
				
			||||||
 | 
											url: 'pageB/sdetails/index',
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
<style lang="scss" scoped>
 | 
					<style lang="scss" scoped>
 | 
				
			||||||
.special {
 | 
					.special {
 | 
				
			||||||
	margin-bottom: 30rpx;
 | 
						> view {
 | 
				
			||||||
 | 
							margin: 0 auto 30rpx;
 | 
				
			||||||
		display: flex;
 | 
							display: flex;
 | 
				
			||||||
		width: 690rpx;
 | 
							width: 690rpx;
 | 
				
			||||||
		background: rgba(245,245,245,1);
 | 
							background: rgba(245,245,245,1);
 | 
				
			||||||
@ -40,6 +92,7 @@ export default {
 | 
				
			|||||||
			width: 210rpx;
 | 
								width: 210rpx;
 | 
				
			||||||
			height: 170rpx;
 | 
								height: 170rpx;
 | 
				
			||||||
			border-radius: 6rpx 0rpx 0rpx 6rpx;
 | 
								border-radius: 6rpx 0rpx 0rpx 6rpx;
 | 
				
			||||||
 | 
								background: rgba(245,245,245,1);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		.right {
 | 
							.right {
 | 
				
			||||||
			flex: 1;
 | 
								flex: 1;
 | 
				
			||||||
@ -86,6 +139,22 @@ export default {
 | 
				
			|||||||
					text-align: center;
 | 
										text-align: center;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								.group {
 | 
				
			||||||
 | 
									align-items: center;
 | 
				
			||||||
 | 
									justify-content: space-between;
 | 
				
			||||||
 | 
									.btn {
 | 
				
			||||||
 | 
										width: 140rpx;
 | 
				
			||||||
 | 
										height: 50rpx;
 | 
				
			||||||
 | 
										background: rgba(255,120,15,1);
 | 
				
			||||||
 | 
										border-radius: 25rpx;
 | 
				
			||||||
 | 
										font-size: 22rpx;
 | 
				
			||||||
 | 
										font-weight: 500;
 | 
				
			||||||
 | 
										color: rgba(255,255,255,1);
 | 
				
			||||||
 | 
										line-height: 50rpx;
 | 
				
			||||||
 | 
										text-align: center;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
@ -2,17 +2,16 @@
 | 
				
			|||||||
    <view>
 | 
					    <view>
 | 
				
			||||||
        <view class="tloos">
 | 
					        <view class="tloos">
 | 
				
			||||||
            <view class="navs">
 | 
					            <view class="navs">
 | 
				
			||||||
                <image></image>
 | 
					                <image src="/static/image/common/18.png"></image>
 | 
				
			||||||
                店铺
 | 
					                店铺
 | 
				
			||||||
            </view>
 | 
					            </view>
 | 
				
			||||||
            <view class="navs" style="margin-right:30rpx">
 | 
					            <view class="navs" style="margin-right:30rpx">
 | 
				
			||||||
                <image></image>
 | 
					                <image src="/static/image/common/19.png"></image>
 | 
				
			||||||
                客服
 | 
					                客服
 | 
				
			||||||
            </view>
 | 
					            </view>
 | 
				
			||||||
            <view class="button" style="background:rgba(253,211,96,0.6);">试穿试送</view>
 | 
					            <view class="button" style="background:rgba(253,211,96,0.6);">试穿试送</view>
 | 
				
			||||||
            <view class="button" style="background:rgba(253,211,96,1);" @click="buy(2)">加入购物车</view>
 | 
					            <view class="button" style="background:rgba(253,211,96,1);" @click="buy(2)">加入购物车</view>
 | 
				
			||||||
            <view class="button" style="background:rgba(255,120,15,1);" @click="buy(1)">立即购买</view>
 | 
					            <view class="button" style="background:rgba(255,120,15,1);" @click="buy(1)">立即购买</view>
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
        </view>
 | 
					        </view>
 | 
				
			||||||
        <u-popup v-model="show" mode="bottom">
 | 
					        <u-popup v-model="show" mode="bottom">
 | 
				
			||||||
                <scroll-view scroll-y="true" class="popup">
 | 
					                <scroll-view scroll-y="true" class="popup">
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,19 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
    <view class="sdetails">
 | 
					    <view class="sdetails">
 | 
				
			||||||
        <u-swiper :list="list" height="500" border-radius="0" mode="dot"></u-swiper>
 | 
					        <u-swiper :list="list" height="500" border-radius="0" mode="dot"></u-swiper>
 | 
				
			||||||
 | 
							<view class="spike-view" v-if="type==3">
 | 
				
			||||||
 | 
								<view class="left">
 | 
				
			||||||
 | 
									<view class="price">
 | 
				
			||||||
 | 
										<view class="now-price">¥{{ groupbuyInfo.groupbuy_price }}</view>
 | 
				
			||||||
 | 
										<view class="origin-price">¥{{ groupbuyInfo.goods_price }}</view>
 | 
				
			||||||
 | 
									</view>
 | 
				
			||||||
 | 
									<view class="num">剩余数量{{ groupbuyInfo.inventory - groupbuyInfo.groupbuy_buy_quantity }}件</view>
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
 | 
								<view class="right">
 | 
				
			||||||
 | 
									<view class="title">秒杀倒计时</view>
 | 
				
			||||||
 | 
									<view class="time">{{ spikeTime }}</view>
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
 | 
							</view>
 | 
				
			||||||
        <view class="info">
 | 
					        <view class="info">
 | 
				
			||||||
            <view class="title u-line-2">
 | 
					            <view class="title u-line-2">
 | 
				
			||||||
                <text>{{ goodsInfo.store_name }}</text>{{ goodsInfo.goods_name }}
 | 
					                <text>{{ goodsInfo.store_name }}</text>{{ goodsInfo.goods_name }}
 | 
				
			||||||
@ -19,15 +32,15 @@
 | 
				
			|||||||
		<view class="group-user" v-if="groupUser.length">
 | 
							<view class="group-user" v-if="groupUser.length">
 | 
				
			||||||
			<view class="top">
 | 
								<view class="top">
 | 
				
			||||||
				<view class="title">{{ groupUser.length }}人正在拼团,可直接参与</view>
 | 
									<view class="title">{{ groupUser.length }}人正在拼团,可直接参与</view>
 | 
				
			||||||
				<view class="view-more">
 | 
									<view class="view-more" @click="showGroupUser=true">
 | 
				
			||||||
					<text>查看全部</text>
 | 
										<text>查看全部</text>
 | 
				
			||||||
					<image src="/static/image/common/1.png"></image>
 | 
										<image src="/static/image/common/1.png"></image>
 | 
				
			||||||
				</view>
 | 
									</view>
 | 
				
			||||||
			</view>
 | 
								</view>
 | 
				
			||||||
			<view class="bottom">
 | 
								<view class="bottom">
 | 
				
			||||||
				<view class="left">
 | 
									<view class="left" @click="showGroupUser=true">
 | 
				
			||||||
					<view class="avatar">
 | 
										<view class="avatar">
 | 
				
			||||||
						<image v-for="(user, i) in groupUser" :src="user[0].member_avatar" :key="i"></image>
 | 
											<image v-for="(user, i) in groupUser.slice(0, 3)" :src="user[0].member_avatar" :key="i"></image>
 | 
				
			||||||
					</view>
 | 
										</view>
 | 
				
			||||||
					<view class="all">
 | 
										<view class="all">
 | 
				
			||||||
						<text>查看全部</text>
 | 
											<text>查看全部</text>
 | 
				
			||||||
@ -35,12 +48,12 @@
 | 
				
			|||||||
					</view>
 | 
										</view>
 | 
				
			||||||
				</view>
 | 
									</view>
 | 
				
			||||||
				<view class="right">
 | 
									<view class="right">
 | 
				
			||||||
					<view class="launch-user">
 | 
										<view class="launch-user" @click="showGroupUser=true">
 | 
				
			||||||
						<image :src="groupUser[0][0].member_avatar"></image>
 | 
											<image :src="groupUser[0][0].member_avatar"></image>
 | 
				
			||||||
						<text class="u-line-1">{{ groupUser[0][0].member_nickname }}</text>
 | 
											<text class="u-line-1">{{ groupUser[0][0].member_nickname }}</text>
 | 
				
			||||||
					</view>
 | 
										</view>
 | 
				
			||||||
					<view class="involvement-user">
 | 
										<view class="involvement-user">
 | 
				
			||||||
						<view class="item" v-for="(user, i) in groupUser.slice(1)" :key="i">
 | 
											<view class="item" v-for="(user, i) in groupUser.slice(1, 5)" :key="i" @click="showGroupUser=true">
 | 
				
			||||||
							<image :src="user[0].member_avatar"></image>
 | 
												<image :src="user[0].member_avatar"></image>
 | 
				
			||||||
							<text class="u-line-1">{{ user[0].member_nickname }}</text>
 | 
												<text class="u-line-1">{{ user[0].member_nickname }}</text>
 | 
				
			||||||
						</view>
 | 
											</view>
 | 
				
			||||||
@ -48,6 +61,33 @@
 | 
				
			|||||||
				</view>
 | 
									</view>
 | 
				
			||||||
			</view>
 | 
								</view>
 | 
				
			||||||
		</view>
 | 
							</view>
 | 
				
			||||||
 | 
							<u-popup v-model="showGroupUser" mode="center">
 | 
				
			||||||
 | 
								<view class="launch-container">
 | 
				
			||||||
 | 
									<view class="title u-line-1">正在拼团</view>
 | 
				
			||||||
 | 
									<scroll-view class="launch-view">
 | 
				
			||||||
 | 
										<view class="launch-user">
 | 
				
			||||||
 | 
											<view class="item" v-for="(user, i) in groupUser" :src="user[0].member_avatar" :key="i" @click="involvemenGroup(user)">
 | 
				
			||||||
 | 
												<image class="avatar" :src="user[0].member_avatar"></image>
 | 
				
			||||||
 | 
												<view class="name u-line-1">{{ user[0].member_nickname }}</view>
 | 
				
			||||||
 | 
											</view>
 | 
				
			||||||
 | 
										</view>
 | 
				
			||||||
 | 
									</scroll-view>
 | 
				
			||||||
 | 
									<image class="close" src="/static/image/common/17.png" @click="showGroupUser=false"></image>
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
 | 
							</u-popup>
 | 
				
			||||||
 | 
							<u-popup v-model="showInvolvementUser" mode="center">
 | 
				
			||||||
 | 
								<view class="involvement-container" v-if="involvemenGroupInfo.length">
 | 
				
			||||||
 | 
									<view class="title u-line-1">参与{{ involvemenGroupInfo[0].member_nickname }}的拼团</view>
 | 
				
			||||||
 | 
									<view class="involvement-view">
 | 
				
			||||||
 | 
										<view class="item" v-for="(user, i) in involvemenGroupInfo" :key="i">
 | 
				
			||||||
 | 
											<image class="avatar" :src="user.member_avatar"></image>
 | 
				
			||||||
 | 
											<view class="name u-line-1">{{ user.member_nickname }}</view>
 | 
				
			||||||
 | 
										</view>
 | 
				
			||||||
 | 
									</view>
 | 
				
			||||||
 | 
									<view class="involvement-btn" @click="withImmediate('involvement')">参与拼团</view>
 | 
				
			||||||
 | 
									<image class="close" src="/static/image/common/17.png" @click="showInvolvementUser=false"></image>
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
 | 
							</u-popup>
 | 
				
			||||||
        <view class="xiangqing">
 | 
					        <view class="xiangqing">
 | 
				
			||||||
            <view class="heng"></view>
 | 
					            <view class="heng"></view>
 | 
				
			||||||
            <view class="title">商品详情</view>
 | 
					            <view class="title">商品详情</view>
 | 
				
			||||||
@ -59,7 +99,23 @@
 | 
				
			|||||||
		<!-- 拼团 tool -->
 | 
							<!-- 拼团 tool -->
 | 
				
			||||||
		<view class="group-tool" v-if="type==2">
 | 
							<view class="group-tool" v-if="type==2">
 | 
				
			||||||
			<view class="launch" @click="withImmediate">发起拼团</view>
 | 
								<view class="launch" @click="withImmediate">发起拼团</view>
 | 
				
			||||||
			<view class="involvement">参与拼团</view>
 | 
								<view class="involvement" @click="showGroupUser=true">参与拼团</view>
 | 
				
			||||||
 | 
							</view>
 | 
				
			||||||
 | 
							<!-- 秒杀 -->
 | 
				
			||||||
 | 
							<view class="spike-tool" v-if="type==3">
 | 
				
			||||||
 | 
								<view class="left">
 | 
				
			||||||
 | 
									<view>
 | 
				
			||||||
 | 
										<image src="/static/image/common/18.png"></image>
 | 
				
			||||||
 | 
										<text>店铺</text>
 | 
				
			||||||
 | 
									</view>
 | 
				
			||||||
 | 
									<view>
 | 
				
			||||||
 | 
										<image src="/static/image/common/19.png"></image>
 | 
				
			||||||
 | 
										<text>客服</text>
 | 
				
			||||||
 | 
									</view>
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
 | 
								<view class="btn" :class="{'cannot': groupbuyInfo.groupbuy_state == 32 || groupbuyInfo.inventory == groupbuyInfo.groupbuy_buy_quantity}">
 | 
				
			||||||
 | 
									{{ groupbuyInfo.groupbuy_state == 32 ? '时间已结束' : (groupbuyInfo.inventory > groupbuyInfo.groupbuy_buy_quantity ? '立即秒杀' : '已售空') }}
 | 
				
			||||||
 | 
								</view>
 | 
				
			||||||
		</view>
 | 
							</view>
 | 
				
			||||||
		<!-- 普通商品 tool -->
 | 
							<!-- 普通商品 tool -->
 | 
				
			||||||
        <tloos @buy="buy" @xuanze="xuanze" :id="goodsInfo.goods_commonid" :info="info" v-if="type==1"></tloos>
 | 
					        <tloos @buy="buy" @xuanze="xuanze" :id="goodsInfo.goods_commonid" :info="info" v-if="type==1"></tloos>
 | 
				
			||||||
@ -78,26 +134,41 @@ export default {
 | 
				
			|||||||
            info:{},
 | 
					            info:{},
 | 
				
			||||||
            glist:[],
 | 
					            glist:[],
 | 
				
			||||||
			id:0,
 | 
								id:0,
 | 
				
			||||||
			type: '', // 商品类型
 | 
								type: '', // 商品类型 商品详情 1普通 2拼团 3秒杀 4优惠券
 | 
				
			||||||
			groupUser: [], // 拼团用户
 | 
								groupUser: [], // 拼团用户
 | 
				
			||||||
			avatarWidth: '',
 | 
								avatarWidth: '',
 | 
				
			||||||
 | 
								showGroupUser: false, // 拼团
 | 
				
			||||||
 | 
								showInvolvementUser: false, // 参团
 | 
				
			||||||
 | 
								involvemenGroupInfo: [], // 参团的人
 | 
				
			||||||
 | 
								groupbuyInfo: {}, // 秒杀详情
 | 
				
			||||||
 | 
								spikeTime: '',
 | 
				
			||||||
 | 
								timer: '', // 时间定时器
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
    components:{
 | 
					    components:{
 | 
				
			||||||
        navs,
 | 
					        navs,
 | 
				
			||||||
        tloos
 | 
					        tloos
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	onLoad(option) {
 | 
						onLoad() {
 | 
				
			||||||
		this.id = option.id;
 | 
					 | 
				
			||||||
		this.init();
 | 
							this.init();
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
						beforeDestroy() {
 | 
				
			||||||
 | 
							clearInterval(this.timer);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		init() {
 | 
							init() {
 | 
				
			||||||
 | 
								this.id = this.$store.state.goods_id;
 | 
				
			||||||
			this.type = this.$store.getters.getGoodsType;
 | 
								this.type = this.$store.getters.getGoodsType;
 | 
				
			||||||
			const info = this.$store.getters.getGoodsInfo;
 | 
								const info = this.$store.getters.getGoodsInfo;
 | 
				
			||||||
			console.log(info);
 | 
								if (this.type == 3) {
 | 
				
			||||||
			this.goodsInfo = info.goods;
 | 
									this.groupbuyInfo = this.$store.state.groupbuyInfo;
 | 
				
			||||||
 | 
									this.setSpikeTime();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// console.log(this.groupbuyInfo);
 | 
				
			||||||
 | 
								if(this.type == 2) {
 | 
				
			||||||
				this.groupUser = info.user;
 | 
									this.groupUser = info.user;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								this.goodsInfo = info.goods;
 | 
				
			||||||
			// 设置轮播图
 | 
								// 设置轮播图
 | 
				
			||||||
			let list = [];
 | 
								let list = [];
 | 
				
			||||||
			info.goods_image[0].forEach(item => {
 | 
								info.goods_image[0].forEach(item => {
 | 
				
			||||||
@ -109,6 +180,25 @@ export default {
 | 
				
			|||||||
			this.list = list;
 | 
								this.list = list;
 | 
				
			||||||
			this.setTitle();
 | 
								this.setTitle();
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							setSpikeTime() {
 | 
				
			||||||
 | 
								const time = this.groupbuyInfo.groupbuy_endtime;
 | 
				
			||||||
 | 
								// console.log(new Date(time*1000));
 | 
				
			||||||
 | 
								// console.log(new Date());
 | 
				
			||||||
 | 
								this.timer = setInterval(() => {
 | 
				
			||||||
 | 
									let spikeTime = time * 1000 - new Date();
 | 
				
			||||||
 | 
									//计算出小时数
 | 
				
			||||||
 | 
									const leave1 = spikeTime % (24*3600*1000) //计算天数后剩余的毫秒数
 | 
				
			||||||
 | 
									const hours = Math.floor(leave1/(3600*1000))
 | 
				
			||||||
 | 
									//计算相差分钟数
 | 
				
			||||||
 | 
									const leave2 = leave1 % (3600*1000) //计算小时数后剩余的毫秒数
 | 
				
			||||||
 | 
									const minutes = Math.floor(leave2 / (60*1000))
 | 
				
			||||||
 | 
									//计算相差秒数
 | 
				
			||||||
 | 
									const leave3 = leave2 % (60*1000) //计算分钟数后剩余的毫秒数
 | 
				
			||||||
 | 
									const seconds = Math.round(leave3 / 1000)
 | 
				
			||||||
 | 
									this.spikeTime = hours + ':' + minutes + ':' + seconds;
 | 
				
			||||||
 | 
									// console.log(this.spikeTime);
 | 
				
			||||||
 | 
								}, 1000)
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
        buy(info){
 | 
					        buy(info){
 | 
				
			||||||
            if(info.type == 2){
 | 
					            if(info.type == 2){
 | 
				
			||||||
                this.$u.api.addCart({
 | 
					                this.$u.api.addCart({
 | 
				
			||||||
@ -144,13 +234,50 @@ export default {
 | 
				
			|||||||
                this.glist = res.data.spec_list;
 | 
					                this.glist = res.data.spec_list;
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		withImmediate() {
 | 
							// 如果有pintuangroup_headid为参团不然为开团
 | 
				
			||||||
			this.$u.api.withImmediate({
 | 
							withImmediate(type) {
 | 
				
			||||||
 | 
								let params = {
 | 
				
			||||||
				pintuan_id: this.id,
 | 
									pintuan_id: this.id,
 | 
				
			||||||
			}).then(res => {
 | 
								}
 | 
				
			||||||
 | 
								// console.log(this.involvemenGroupInfo);
 | 
				
			||||||
 | 
								if(type == 'involvement' && this.involvemenGroupInfo.length) {
 | 
				
			||||||
 | 
									Object.assign(params, { pintuangroup_headid: this.involvemenGroupInfo[0].user_id });
 | 
				
			||||||
 | 
									Object.assign(params, { pintuangroup_id: this.involvemenGroupInfo[0].pintuangroup_id });
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// console.log(params);
 | 
				
			||||||
 | 
								this.$u.api.withImmediate(params).then(res => {
 | 
				
			||||||
 | 
									this.showGroupUser = false;
 | 
				
			||||||
 | 
									this.showInvolvementUser = false;
 | 
				
			||||||
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
 | 
										this.settlementOrder();
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										this.$u.toast(res.message);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							settlementOrder() {
 | 
				
			||||||
 | 
								// ifcart 结算方式 1:购物车 0:直接结算(立即购买/拼团/秒杀)
 | 
				
			||||||
 | 
								this.$u.api.settlementOrder({ 
 | 
				
			||||||
 | 
									ifcart: 0, 
 | 
				
			||||||
 | 
									cart_id: [this.goodsInfo.goods_id + '|' + 1],
 | 
				
			||||||
 | 
									pintuan_id: this.involvemenGroupInfo[0].user_id, 
 | 
				
			||||||
 | 
									pintuangroup_id: this.involvemenGroupInfo[0].pintuangroup_id 
 | 
				
			||||||
 | 
								}).then(res => {
 | 
				
			||||||
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
 | 
										this.$store.commit('orderType', 3);
 | 
				
			||||||
 | 
										this.$store.commit('updateOrderInfo', res.data)
 | 
				
			||||||
 | 
										this.$u.route({
 | 
				
			||||||
 | 
											url: '/pageC/cart/ConfirmOrder'
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							involvemenGroup(user) {
 | 
				
			||||||
 | 
								this.involvemenGroupInfo = user;
 | 
				
			||||||
 | 
								this.showGroupUser = false;
 | 
				
			||||||
 | 
								this.showInvolvementUser = true;
 | 
				
			||||||
 | 
								console.log(this.involvemenGroupInfo);
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
        xuanze(id){
 | 
					        xuanze(id){
 | 
				
			||||||
            // console.log(id)
 | 
					            // console.log(id)
 | 
				
			||||||
            this.getGoodsDetails(this.glist[id])
 | 
					            this.getGoodsDetails(this.glist[id])
 | 
				
			||||||
@ -183,6 +310,66 @@ export default {
 | 
				
			|||||||
<style lang="scss" scoped>
 | 
					<style lang="scss" scoped>
 | 
				
			||||||
.sdetails {
 | 
					.sdetails {
 | 
				
			||||||
	padding-bottom: 98rpx;
 | 
						padding-bottom: 98rpx;
 | 
				
			||||||
 | 
						position: relative;
 | 
				
			||||||
 | 
						.spike-view {
 | 
				
			||||||
 | 
							position: absolute;
 | 
				
			||||||
 | 
							top: 396rpx;
 | 
				
			||||||
 | 
							left: 0;
 | 
				
			||||||
 | 
							width: 100%;
 | 
				
			||||||
 | 
							height: 104rpx;
 | 
				
			||||||
 | 
							background: rgba(255,120,15,1);
 | 
				
			||||||
 | 
							opacity: 0.96;
 | 
				
			||||||
 | 
							color:rgba(255,255,255,1);
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							align-items: center;
 | 
				
			||||||
 | 
							.left {
 | 
				
			||||||
 | 
								height: 104rpx;
 | 
				
			||||||
 | 
								flex: 1;
 | 
				
			||||||
 | 
								padding-left: 30rpx;
 | 
				
			||||||
 | 
								display: flex;
 | 
				
			||||||
 | 
								flex-direction: column;
 | 
				
			||||||
 | 
								justify-content: center;
 | 
				
			||||||
 | 
								.price {
 | 
				
			||||||
 | 
									margin-bottom: 22rpx;
 | 
				
			||||||
 | 
									display: flex;
 | 
				
			||||||
 | 
									align-items: center;
 | 
				
			||||||
 | 
									.now-price {
 | 
				
			||||||
 | 
										font-size: 32rpx;
 | 
				
			||||||
 | 
										font-weight: bold;
 | 
				
			||||||
 | 
										margin-right: 16rpx;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									.origin-price {
 | 
				
			||||||
 | 
										font-size: 26rpx;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								.num {
 | 
				
			||||||
 | 
									font-size: 22rpx;
 | 
				
			||||||
 | 
									font-weight: 500;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.right {
 | 
				
			||||||
 | 
								height: 104rpx;
 | 
				
			||||||
 | 
								width: 232rpx;
 | 
				
			||||||
 | 
								position: relative;
 | 
				
			||||||
 | 
								display: flex;
 | 
				
			||||||
 | 
								flex-direction: column;
 | 
				
			||||||
 | 
								align-items: center;
 | 
				
			||||||
 | 
								justify-content: center;
 | 
				
			||||||
 | 
								&::before {
 | 
				
			||||||
 | 
									position: absolute;
 | 
				
			||||||
 | 
									left: 0;
 | 
				
			||||||
 | 
									content: "";
 | 
				
			||||||
 | 
									width: 2rpx;
 | 
				
			||||||
 | 
									height: 104rpx;
 | 
				
			||||||
 | 
									background:rgba(255,255,255,1);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								font-size: 26rpx;
 | 
				
			||||||
 | 
								font-weight: 500;
 | 
				
			||||||
 | 
								.title {
 | 
				
			||||||
 | 
									margin-bottom: 18rpx;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    .info {
 | 
					    .info {
 | 
				
			||||||
        padding: 30rpx;
 | 
					        padding: 30rpx;
 | 
				
			||||||
        .title{
 | 
					        .title{
 | 
				
			||||||
@ -315,6 +502,133 @@ export default {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						.launch-container {
 | 
				
			||||||
 | 
							width: 558rpx;
 | 
				
			||||||
 | 
							height: 655rpx;
 | 
				
			||||||
 | 
							background: rgba(255,255,255,1);
 | 
				
			||||||
 | 
							border-radius: 20rpx;
 | 
				
			||||||
 | 
							position: relative;
 | 
				
			||||||
 | 
							overflow: hidden;
 | 
				
			||||||
 | 
							.title {
 | 
				
			||||||
 | 
								text-align: center;
 | 
				
			||||||
 | 
								padding: 40rpx 0;
 | 
				
			||||||
 | 
								font-size: 32rpx;
 | 
				
			||||||
 | 
								color: rgba(51,51,51,1);
 | 
				
			||||||
 | 
								position: relative;
 | 
				
			||||||
 | 
								&::after {
 | 
				
			||||||
 | 
									content: '';
 | 
				
			||||||
 | 
									position: absolute;
 | 
				
			||||||
 | 
									width: 558rpx;
 | 
				
			||||||
 | 
									height: 2rpx;
 | 
				
			||||||
 | 
									background: rgba(234,234,234,1);
 | 
				
			||||||
 | 
									bottom: 0;
 | 
				
			||||||
 | 
									left: 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.launch-view {
 | 
				
			||||||
 | 
								height: 500rpx;
 | 
				
			||||||
 | 
								box-sizing: border-box;
 | 
				
			||||||
 | 
								padding: 30rpx 50rpx;
 | 
				
			||||||
 | 
								.launch-user {
 | 
				
			||||||
 | 
									display: flex;
 | 
				
			||||||
 | 
									flex-direction: row;
 | 
				
			||||||
 | 
									flex-wrap: wrap;
 | 
				
			||||||
 | 
									align-items: flex-start;
 | 
				
			||||||
 | 
									justify-content: flex-start;
 | 
				
			||||||
 | 
									.item {
 | 
				
			||||||
 | 
										width: 96rpx;
 | 
				
			||||||
 | 
										height: 96rpx;
 | 
				
			||||||
 | 
										text-align: center;
 | 
				
			||||||
 | 
										margin-bottom: 30rpx;
 | 
				
			||||||
 | 
										.avatar {
 | 
				
			||||||
 | 
											width: 60rpx;
 | 
				
			||||||
 | 
											height: 60rpx;
 | 
				
			||||||
 | 
											border-radius: 50%;
 | 
				
			||||||
 | 
											margin-bottom: 15rpx;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										.name {
 | 
				
			||||||
 | 
											font-size: 22rpx;
 | 
				
			||||||
 | 
											color: rgba(153,153,153,1);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										&:not(:nth-child(3n)) {
 | 
				
			||||||
 | 
											margin-right: 80rpx;
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.close {
 | 
				
			||||||
 | 
								position: absolute;
 | 
				
			||||||
 | 
								width: 47rpx;
 | 
				
			||||||
 | 
								height: 47rpx;
 | 
				
			||||||
 | 
								top: 10rpx;
 | 
				
			||||||
 | 
								right: 20rpx;
 | 
				
			||||||
 | 
								border-radius: 50%;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						.involvement-container {
 | 
				
			||||||
 | 
							width: 558rpx;
 | 
				
			||||||
 | 
							height: 486rpx;
 | 
				
			||||||
 | 
							background: rgba(255,255,255,1);
 | 
				
			||||||
 | 
							border-radius: 20rpx;
 | 
				
			||||||
 | 
							position: relative;
 | 
				
			||||||
 | 
							overflow: hidden;
 | 
				
			||||||
 | 
							.title {
 | 
				
			||||||
 | 
								text-align: center;
 | 
				
			||||||
 | 
								padding: 40rpx 0;
 | 
				
			||||||
 | 
								font-size: 32rpx;
 | 
				
			||||||
 | 
								color: rgba(51,51,51,1);
 | 
				
			||||||
 | 
								position: relative;
 | 
				
			||||||
 | 
								&::after {
 | 
				
			||||||
 | 
									content: '';
 | 
				
			||||||
 | 
									position: absolute;
 | 
				
			||||||
 | 
									width: 558rpx;
 | 
				
			||||||
 | 
									height: 2rpx;
 | 
				
			||||||
 | 
									background: rgba(234,234,234,1);
 | 
				
			||||||
 | 
									bottom: 0;
 | 
				
			||||||
 | 
									left: 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.involvement-view {
 | 
				
			||||||
 | 
								display: flex;
 | 
				
			||||||
 | 
								justify-content: center;
 | 
				
			||||||
 | 
								margin: 40rpx 0 70rpx;
 | 
				
			||||||
 | 
								.item {
 | 
				
			||||||
 | 
									width: 100rpx;
 | 
				
			||||||
 | 
									text-align: center;
 | 
				
			||||||
 | 
									margin-right: 10rpx;
 | 
				
			||||||
 | 
									.avatar {
 | 
				
			||||||
 | 
										width: 60rpx;
 | 
				
			||||||
 | 
										height: 60rpx;
 | 
				
			||||||
 | 
										border-radius: 50%;
 | 
				
			||||||
 | 
										margin-bottom: 15rpx;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									.name {
 | 
				
			||||||
 | 
										font-size: 22rpx;
 | 
				
			||||||
 | 
										color: rgba(153,153,153,1);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.involvement-btn {
 | 
				
			||||||
 | 
								width: 400rpx;
 | 
				
			||||||
 | 
								height: 88rpx;
 | 
				
			||||||
 | 
								background: rgba(255,120,15,1);
 | 
				
			||||||
 | 
								border-radius: 44rpx;
 | 
				
			||||||
 | 
								font-size: 30rpx;
 | 
				
			||||||
 | 
								color:rgba(255,255,255,1);
 | 
				
			||||||
 | 
								text-align: center;
 | 
				
			||||||
 | 
								line-height: 88rpx;
 | 
				
			||||||
 | 
								margin: 0 auto;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.close {
 | 
				
			||||||
 | 
								position: absolute;
 | 
				
			||||||
 | 
								width: 47rpx;
 | 
				
			||||||
 | 
								height: 47rpx;
 | 
				
			||||||
 | 
								top: 10rpx;
 | 
				
			||||||
 | 
								right: 20rpx;
 | 
				
			||||||
 | 
								border-radius: 50%;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
    .xiangqing{
 | 
					    .xiangqing{
 | 
				
			||||||
        display: flex;
 | 
					        display: flex;
 | 
				
			||||||
        height: 85rpx;
 | 
					        height: 85rpx;
 | 
				
			||||||
@ -359,5 +673,45 @@ export default {
 | 
				
			|||||||
			text-align: center;
 | 
								text-align: center;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						.spike-tool {
 | 
				
			||||||
 | 
							position: fixed;
 | 
				
			||||||
 | 
							bottom: 0;
 | 
				
			||||||
 | 
							left: 0;
 | 
				
			||||||
 | 
							width: 100%;
 | 
				
			||||||
 | 
							height: 98rpx;
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							z-index: 99;
 | 
				
			||||||
 | 
							.left {
 | 
				
			||||||
 | 
								width: 190rpx;
 | 
				
			||||||
 | 
								display: flex;
 | 
				
			||||||
 | 
								align-items: center;
 | 
				
			||||||
 | 
								justify-content: space-around;
 | 
				
			||||||
 | 
								> view {
 | 
				
			||||||
 | 
									text-align: center;
 | 
				
			||||||
 | 
									> image {
 | 
				
			||||||
 | 
										width: 35rpx;
 | 
				
			||||||
 | 
										height: 35rpx;
 | 
				
			||||||
 | 
										margin-bottom: 15rpx;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									> text {
 | 
				
			||||||
 | 
										display: block;
 | 
				
			||||||
 | 
										font-size: 24rpx;
 | 
				
			||||||
 | 
										color: rgba(102,102,102,1);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.btn {
 | 
				
			||||||
 | 
								flex: 1;
 | 
				
			||||||
 | 
								height: 98rpx;
 | 
				
			||||||
 | 
								line-height: 98rpx;
 | 
				
			||||||
 | 
								text-align: center;
 | 
				
			||||||
 | 
								font-size: 32rpx;
 | 
				
			||||||
 | 
								color: rgba(255,255,255,1);
 | 
				
			||||||
 | 
								background: rgba(255,120,15,1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							.cannot {
 | 
				
			||||||
 | 
								background: rgba(221,221,221,1);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
@ -112,6 +112,7 @@ export default {
 | 
				
			|||||||
			couponStatus: false,
 | 
								couponStatus: false,
 | 
				
			||||||
			choiceCoupon: {}, // 使用的平台优惠券
 | 
								choiceCoupon: {}, // 使用的平台优惠券
 | 
				
			||||||
			goodsClass: [],
 | 
								goodsClass: [],
 | 
				
			||||||
 | 
								orderType: '', // 订单类型 1 普通订单 2 购物车订单 3 拼团订单 4 秒杀订单
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	components: {
 | 
						components: {
 | 
				
			||||||
@ -135,8 +136,9 @@ export default {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	onLoad(option) {
 | 
						onLoad(option) {
 | 
				
			||||||
		this.orderInfo = this.$store.state.cartInfo;
 | 
							this.orderType = this.$store.state.orderType;
 | 
				
			||||||
		console.log(this.orderInfo);
 | 
							this.orderInfo = this.$store.state.orderInfo;
 | 
				
			||||||
 | 
							// console.log(this.orderInfo);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	onShow() {
 | 
						onShow() {
 | 
				
			||||||
		// 判断是不是从选择地址页面返回
 | 
							// 判断是不是从选择地址页面返回
 | 
				
			||||||
@ -170,12 +172,16 @@ export default {
 | 
				
			|||||||
					})
 | 
										})
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			this.$u.api.sendOrder({
 | 
								let params = {
 | 
				
			||||||
				ifcart: 1,
 | 
									ifcart: 1,
 | 
				
			||||||
				cart_id: id,
 | 
									cart_id: id,
 | 
				
			||||||
				address_id: this.addressInfo.address_id,
 | 
									address_id: this.addressInfo.address_id,
 | 
				
			||||||
				buy_city_id: this.addressInfo.city_id,
 | 
									buy_city_id: this.addressInfo.city_id,
 | 
				
			||||||
			}).then(res => {
 | 
								}
 | 
				
			||||||
 | 
								// if(this.orderType == 3) {
 | 
				
			||||||
 | 
								// 	Object.assign(params, { pintuan_id:  })
 | 
				
			||||||
 | 
								// }
 | 
				
			||||||
 | 
								this.$u.api.sendOrder(params).then(res => {
 | 
				
			||||||
				if(res.errCode == 0) {
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
					this.$u.route({
 | 
										this.$u.route({
 | 
				
			||||||
						url: '/pageC/cart/cashier',
 | 
											url: '/pageC/cart/cashier',
 | 
				
			||||||
 | 
				
			|||||||
@ -100,7 +100,8 @@ export default {
 | 
				
			|||||||
			// ifcart 结算方式 1:购物车 0:直接结算(立即购买/拼团/秒杀)
 | 
								// ifcart 结算方式 1:购物车 0:直接结算(立即购买/拼团/秒杀)
 | 
				
			||||||
			this.$u.api.settlementOrder({ ifcart: 1, cart_id: id }).then(res => {
 | 
								this.$u.api.settlementOrder({ ifcart: 1, cart_id: id }).then(res => {
 | 
				
			||||||
				if(res.errCode == 0) {
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
					this.$store.commit('updateCart', res.data)
 | 
										this.$store.commit('orderType', 2);
 | 
				
			||||||
 | 
										this.$store.commit('updateOrderInfo', res.data);
 | 
				
			||||||
					this.$u.route({
 | 
										this.$u.route({
 | 
				
			||||||
						url: '/pageC/cart/ConfirmOrder'
 | 
											url: '/pageC/cart/ConfirmOrder'
 | 
				
			||||||
					})
 | 
										})
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,13 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
	<view class="group">
 | 
						<view class="group">
 | 
				
			||||||
		<view>
 | 
							<view>
 | 
				
			||||||
			<u-tabs-swiper ref="uTabs" :list="tabList" :current="current" @change="tabsChange" :is-scroll="false"
 | 
								<u-tabs-swiper ref="uTabs" :list="tabList" name="gc_name" :current="current" @change="tabsChange" :is-scroll="true" active-color="#FF780F" swiperWidth="750" height="88" :show-bar="false"></u-tabs-swiper>
 | 
				
			||||||
			 swiperWidth="750"></u-tabs-swiper>
 | 
					 | 
				
			||||||
		</view>
 | 
							</view>
 | 
				
			||||||
		<swiper :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish" >
 | 
							<swiper :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish" >
 | 
				
			||||||
			<swiper-item class="swiper-item" v-for="(_, index) in tabList" :key="index">
 | 
								<swiper-item class="swiper-item" v-for="(_, index) in tabList" :key="index">
 | 
				
			||||||
				<scroll-view scroll-y style="height: 800rpx;width: 100%;" @scrolltolower="onreachBottom">
 | 
									<scroll-view scroll-y style="height: 800rpx;width: 100%;" @scrolltolower="onreachBottom">
 | 
				
			||||||
					{{ index }}
 | 
										<SpecialGoods v-for="(item, index) in pinTuanList" :key="index" :item="item" type='group'></SpecialGoods>
 | 
				
			||||||
 | 
										<u-empty text="暂无商品" mode="list" color="#000" v-if="!pinTuanList.length"></u-empty>
 | 
				
			||||||
				</scroll-view>
 | 
									</scroll-view>
 | 
				
			||||||
			</swiper-item>
 | 
								</swiper-item>
 | 
				
			||||||
		</swiper>
 | 
							</swiper>
 | 
				
			||||||
@ -18,21 +18,42 @@ import SpecialGoods from "../../components/shop/special-shop/index"
 | 
				
			|||||||
export default {
 | 
					export default {
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			tabList: [{name: '推荐'}, {name: '推荐'}, {name: '推荐'}],
 | 
								tabList: [],
 | 
				
			||||||
			current: 0,
 | 
								current: Number,
 | 
				
			||||||
			swiperCurrent: 0,
 | 
								swiperCurrent: 0,
 | 
				
			||||||
 | 
								page: 0,
 | 
				
			||||||
 | 
								pinTuanList: [],
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	components: {
 | 
						components: {
 | 
				
			||||||
		SpecialGoods
 | 
							SpecialGoods
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	onShow() {
 | 
						onLoad() {
 | 
				
			||||||
		this.getPinTuanList();
 | 
							this.getGoodsClass();
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						watch: {
 | 
				
			||||||
 | 
							current(index) {
 | 
				
			||||||
 | 
								console.log(this.tabList);
 | 
				
			||||||
 | 
								this.getPinTuanList(this.tabList[index].gc_id);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		getPinTuanList() {
 | 
							// 获取优惠券拼团分类
 | 
				
			||||||
			this.$u.api.getPinTuanList().then(res => {
 | 
							async getGoodsClass() {
 | 
				
			||||||
 | 
								return await this.$u.api.getGoodsClass().then(res => {
 | 
				
			||||||
 | 
									if(res.errCode == 0) {
 | 
				
			||||||
 | 
										this.tabList = res.data;
 | 
				
			||||||
 | 
										this.current = 0;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							// 拼团列表
 | 
				
			||||||
 | 
							getPinTuanList(id) {
 | 
				
			||||||
 | 
								this.$u.api.getPinTuanList({
 | 
				
			||||||
 | 
									page: this.page,
 | 
				
			||||||
 | 
									gc_id: id,
 | 
				
			||||||
 | 
								}).then(res => {
 | 
				
			||||||
 | 
									this.pinTuanList = res.data;
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		// tabs通知swiper切换
 | 
							// tabs通知swiper切换
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
	<view class="member">
 | 
						<view class="member">
 | 
				
			||||||
		<!-- <view> -->
 | 
							<view>
 | 
				
			||||||
			<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper>
 | 
								<u-tabs-swiper ref="tabs" :list="list" :is-scroll="false" active-color="#FF780F" :current="current" font-size="32" :show-bar="false" @change="tabsChange" height="88" ></u-tabs-swiper>
 | 
				
			||||||
		<!-- </view> -->
 | 
							</view>
 | 
				
			||||||
		<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
 | 
							<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }">
 | 
				
			||||||
			<swiper-item class="swiper-item">
 | 
								<swiper-item class="swiper-item">
 | 
				
			||||||
				<view class="integral">
 | 
									<view class="integral">
 | 
				
			||||||
@ -65,7 +65,7 @@ export default {
 | 
				
			|||||||
			}],
 | 
								}],
 | 
				
			||||||
			richHeight: '',
 | 
								richHeight: '',
 | 
				
			||||||
			swiperHeight: '',
 | 
								swiperHeight: '',
 | 
				
			||||||
			current: 0,
 | 
								current: Number,
 | 
				
			||||||
			swiperCurrent: 0,
 | 
								swiperCurrent: 0,
 | 
				
			||||||
			pointslogList:  [],
 | 
								pointslogList:  [],
 | 
				
			||||||
			memberInfo: {},
 | 
								memberInfo: {},
 | 
				
			||||||
@ -76,17 +76,19 @@ export default {
 | 
				
			|||||||
		CouponView
 | 
							CouponView
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	onLoad(option) {
 | 
						onLoad(option) {
 | 
				
			||||||
 | 
							this.setViewHeight();
 | 
				
			||||||
		if(option.current) this.current = option.current;
 | 
							if(option.current) this.current = option.current;
 | 
				
			||||||
 | 
							else this.current = 0;
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	watch: {
 | 
						watch: {
 | 
				
			||||||
		current(value) {
 | 
							current(value) {
 | 
				
			||||||
			this.swiperCurrent = value;
 | 
								this.swiperCurrent = value;
 | 
				
			||||||
		}
 | 
								if(value == 2) {
 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	onShow() {
 | 
					 | 
				
			||||||
		this.getMemberPointsStat();
 | 
					 | 
				
			||||||
				this.getPointslogList();
 | 
									this.getPointslogList();
 | 
				
			||||||
		this.setViewHeight();
 | 
								} else if(value == 0) {
 | 
				
			||||||
 | 
									this.getMemberPointsStat();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		tabsChange(index) {
 | 
							tabsChange(index) {
 | 
				
			||||||
 | 
				
			|||||||
@ -37,11 +37,13 @@
 | 
				
			|||||||
		<!-- 秒杀 -->
 | 
							<!-- 秒杀 -->
 | 
				
			||||||
        <recommend v-if="JSON.stringify(recommendedSpike) != '{}'" :recommendData="recommendedSpike" type="spike"></recommend>
 | 
					        <recommend v-if="JSON.stringify(recommendedSpike) != '{}'" :recommendData="recommendedSpike" type="spike"></recommend>
 | 
				
			||||||
        <view v-if="JSON.stringify(recommendedSpike) != '{}'" class="hr" style="margin-top:40rpx"></view>
 | 
					        <view v-if="JSON.stringify(recommendedSpike) != '{}'" class="hr" style="margin-top:40rpx"></view>
 | 
				
			||||||
 | 
							<!-- 秒杀列表 -->
 | 
				
			||||||
        <seckill v-if="spikeList.length" :list="spikeList" :time="seckillTime"></seckill>
 | 
					        <seckill v-if="spikeList.length" :list="spikeList" :time="seckillTime"></seckill>
 | 
				
			||||||
        <view v-if="spikeList.length" class="hr" style="margin-top:40rpx"></view>
 | 
					        <view v-if="spikeList.length" class="hr" style="margin-top:40rpx"></view>
 | 
				
			||||||
		<!-- 拼团 -->
 | 
							<!-- 拼团推荐 -->
 | 
				
			||||||
        <pintuan v-if="JSON.stringify(pinTuanPush) != '{}'" :recommendData="pinTuanPush"></pintuan>
 | 
					        <pintuan v-if="JSON.stringify(pinTuanPush) != '{}'" :recommendData="pinTuanPush"></pintuan>
 | 
				
			||||||
        <view class="hr" style="margin-top:40rpx" v-if="JSON.stringify(pinTuanPush) != '{}'"></view>
 | 
					        <view class="hr" style="margin-top:40rpx" v-if="JSON.stringify(pinTuanPush) != '{}'"></view>
 | 
				
			||||||
 | 
							<!-- 拼团列表 -->
 | 
				
			||||||
        <group :groupList="pinTuanList" :classifyList="couponGroupList"></group>
 | 
					        <group :groupList="pinTuanList" :classifyList="couponGroupList"></group>
 | 
				
			||||||
        <image class="lingquan"></image>
 | 
					        <image class="lingquan"></image>
 | 
				
			||||||
        <youhq></youhq>
 | 
					        <youhq></youhq>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								static/image/common/17.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/image/common/17.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/image/common/18.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/image/common/18.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								static/image/common/19.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/image/common/19.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB  | 
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user