py 2 rokov pred
rodič
commit
9d28a43b64
4 zmenil súbory, kde vykonal 307 pridanie a 124 odobranie
  1. 217 123
      pages-buy/group-goods-info.vue
  2. 83 0
      pages-buy/group-pay.vue
  3. 1 1
      pages-buy/save-dry.vue
  4. 6 0
      pages.json

+ 217 - 123
pages-buy/group-goods-info.vue

@@ -1,6 +1,22 @@
 <template>
-	<view class="flex-common-css iPhone-bottom">
+	<view class="flex-common-css iPhone-bottom box-border-box">
 		<Nav :title="shop_name" :bgckgroundBox='"transparent"' leftIconColor="#333" titleColor="#333"></Nav>
+		<uni-popup ref="popup" type="top" border-radius="0 0 10px 10px">
+			<view class="pop-box bgc-f" :style="[{'padding-top': popTop + 'px'}]">
+				<view class="p-24 box-border-box">
+					<view class="fs-32 fc-3 mb-20">
+						全部团购
+					</view>
+					<view class="align-items-center flex-wrap-wrap">
+						<view class="w-50 p-24 box-border-box text-overflow-ellipsis-one"
+							v-for="(item,index) in sift_data" :key="index" :class="{'active':isActive==index}"
+							@click="popChenked(index)">
+							{{item.title}}
+						</view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
 		<view class="sift-box p-12-24 box-border-box align-items-center">
 			<scroll-view scroll-x="true" scroll-with-animation :scroll-left="scrollLeft" class="flex-1 tab-scroll">
 				<view class="max-w-200 text-overflow-ellipsis-one tab-scroll_item fs-28"
@@ -9,126 +25,140 @@
 					{{item.title}}
 				</view>
 			</scroll-view>
-			<uni-icons class="flex-shrink0 ml-16" type="bars" size="22"></uni-icons>
+			<uni-icons @click="openPop" class="flex-shrink0 ml-16" type="bars" size="22"></uni-icons>
 		</view>
-		<swiper @change="change" :current="isActive" class="swiper-content scroll-view-css">
-			<swiper-item class="swiperitem-content scroll-view-css" v-for="(item,index) in swiper_data" :key="index">
-				<scroll-view v-if="item!==''" :scroll-y="true" class="scroll-view-css p-12-24 box-border-box">
-					<view class="item-goods-box b-rad-20 bgc-f p-24 box-border-box mb-32">
-						<view class="fs-36 fw-600 fc-3 letter-spacing-3 mb-18">
-							{{item.title}}
-						</view>
-						<view class="p-b-20 mb-20 b-b-F9F9F9">
-							<swiper class="swiper-goods">
-								<swiper-item class="swiper-item-goods" v-for="(goods_item, goods_index) in item.image"
-									:key="goods_index">
-									<image class="goods-img" :src="goods_item" mode="aspectFill"></image>
-								</swiper-item>
-							</swiper>
-						</view>
-						<view class="align-items-flex-start mb-16"
-							v-show="item.is_quota != 0 && item.restricted_num != 1">
-							<view class="mr-18 fs-26">
-								限制
+		<swiper @change="change" :current="isActive" class="swiper-content common-view-css">
+			<swiper-item class="swiperitem-content w-h-100" v-for="(item,index) in swiper_data" :key="index">
+				<view class="w-h-100 flex-direction">
+					<scroll-view v-if="item!==''" :scroll-y="true" class="scroll-view-css p-12-24 box-border-box">
+						<view class="item-goods-box b-rad-20 bgc-f p-24 box-border-box mb-32">
+							<view class="fs-36 fw-600 fc-3 letter-spacing-3 mb-18">
+								{{item.title}}
 							</view>
-							<view class="align-items-center">
-								<view class="mr-8 fs-26" v-show="item.is_quota === 1">
-									每人限购{{item.quota_num}}张,
-								</view>
-								<view class="fs-26" v-show="item.restricted === 2">
-									每张卷限{{item.restricted_num}}人使用
+							<view class="p-b-20 mb-20 b-b-F9F9F9">
+								<swiper class="swiper-goods">
+									<swiper-item class="swiper-item-goods" v-for="(goods_item, goods_index) in item.image"
+										:key="goods_index">
+										<image class="goods-img" :src="goods_item" mode="aspectFill"></image>
+									</swiper-item>
+								</swiper>
+							</view>
+							<view class="align-items-flex-start mb-16"
+								v-show="item.is_quota != 0 && item.restricted_num != 1">
+								<view class="mr-18 fs-26">
+									限制
 								</view>
-								<view class="fs-26" v-show="item.restricted === 3">
-									每桌限用{{item.restricted_num}}张
+								<view class="align-items-center">
+									<view class="mr-8 fs-26" v-show="item.is_quota === 1">
+										每人限购{{item.quota_num}}张,
+									</view>
+									<view class="fs-26" v-show="item.restricted === 2">
+										每张卷限{{item.restricted_num}}人使用
+									</view>
+									<view class="fs-26" v-show="item.restricted === 3">
+										每桌限用{{item.restricted_num}}张
+									</view>
 								</view>
 							</view>
-						</view>
-						<view class="align-items-flex-start mb-16">
-							<view class="mr-18 fs-26">
-								须知
-							</view>
-							<view class="fs-26" v-show="item.usable_time == 1">
-								24小时可用
+							<view class="align-items-flex-start mb-16">
+								<view class="mr-18 fs-26">
+									须知
+								</view>
+								<view class="fs-26" v-show="item.usable_time == 1">
+									24小时可用
+								</view>
+								<view class="" v-show="item.usable_time == 2">
+									{{item.timeData}}
+								</view>
 							</view>
-							<view class="" v-show="item.usable_time == 2">
-								{{item.timeData}}
+							<view class="align-items-flex-start">
+								<view class="mr-18 fs-26">
+									保障
+								</view>
+								<view class="">
+									随时退,过期自动退
+								</view>
 							</view>
 						</view>
-						<view class="align-items-flex-start">
-							<view class="mr-18 fs-26">
-								保障
-							</view>
-							<view class="">
-								随时退,过期自动退
-							</view>
+						<view class="fs-34 fc-3 mb-18">
+							团购详情
 						</view>
-					</view>
-					<view class="fs-34 fc-3 mb-18">
-						团购详情
-					</view>
-					<view class="item-goods-box b-rad-20 bgc-f p-24 box-border-box mb-32">
-						<view class="item-info" v-for="(item_item,item_index) in item.item" :key="item_index">
-							<view class="align-items-center mb-10">
-								<view class="d"></view>
-								<view class="fs-32">
-									{{item_item.name}}
+						<view class="item-goods-box b-rad-20 bgc-f p-24 box-border-box mb-32">
+							<view class="item-info" v-for="(item_item,item_index) in item.item" :key="item_index">
+								<view class="align-items-center mb-10">
+									<view class="d"></view>
+									<view class="fs-32">
+										{{item_item.name}}
+									</view>
+								</view>
+								<view class="align-items-center flex-justify-space goods-info"
+									v-for="(goods_item,goods_index) in item_item.goods" :key="goods_index">
+									<view class="">
+										{{goods_item.name}}
+									</view>
+									<view class="">
+										{{goods_item.number}}{{goods_item.unit}}
+									</view>
 								</view>
 							</view>
-							<view class="align-items-center flex-justify-space goods-info"
-								v-for="(goods_item,goods_index) in item_item.goods" :key="goods_index">
-								<view class="">
-									{{goods_item.name}}
+							<view class="item-info">
+								<view class="align-items-center mb-10">
+									<view class="d"></view>
+									<view class="fs-32">
+										备注
+									</view>
 								</view>
-								<view class="">
-									{{goods_item.number}}{{goods_item.unit}}
+								<view class="fs-24">
+									温馨提示:套餐用餐前请提前验券
 								</view>
 							</view>
 						</view>
-						<view class="item-info">
-							<view class="align-items-center mb-10">
+						<view class="fs-34 fc-3 mb-18">
+							购买须知
+						</view>
+						<view class="item-goods-box b-rad-20 bgc-f p-24 box-border-box mb-32">
+							<view class="mb-10 fs-30 fw-600 fc-3">
+								有效期
+							</view>
+							<view class="b-b-F9F9F9 pb-10 mb-10" v-if="item.time_type === 1">
+								{{item.start_time}} 至 {{item.end_time}}
+							</view>
+							<view class="b-b-F9F9F9 pb-10 mb-10" v-else>
+								购买后{{item.valid_day}}天
+							</view>
+							<view class="mb-10 fs-30 fw-600 fc-3">
+								使用时间
+							</view>
+							<view class="b-b-F9F9F9 pb-10 mb-10">
+								{{item.usable_time == 1?'24小时可用':item.timeData}}
+							</view>
+							<view class="mb-10 fs-30 fw-600 fc-3">
+								使用规则
+							</view>
+							<view class="align-items-center mb-10"
+								v-for="(use_message_item,use_message_index) in item.use_message" :key="use_message_index">
 								<view class="d"></view>
-								<view class="fs-32">
-									备注
+								<view class="">
+									{{use_message_item.notice}}
 								</view>
 							</view>
-							<view class="fs-24">
-								温馨提示:套餐用餐前请提前验券
-							</view>
-						</view>
-					</view>
-					<view class="fs-34 fc-3 mb-18">
-						购买须知
-					</view>
-					<view class="item-goods-box b-rad-20 bgc-f p-24 box-border-box mb-32">
-						<view class="mb-10 fs-30 fw-600 fc-3">
-							有效期
 						</view>
-						<view class="b-b-F9F9F9 pb-10 mb-10" v-if="item.time_type === 1">
-							{{item.start_time}} 至 {{item.end_time}}
-						</view>
-						<view class="b-b-F9F9F9 pb-10 mb-10" v-else>
-							购买后{{item.valid_day}}天
-						</view>
-						<view class="mb-10 fs-30 fw-600 fc-3">
-							使用时间
-						</view>
-						<view class="b-b-F9F9F9 pb-10 mb-10">
-							{{item.usable_time == 1?'24小时可用':item.timeData}}
-						</view>
-						<view class="mb-10 fs-30 fw-600 fc-3">
-							使用规则
-						</view>
-						<view class="align-items-center mb-10"
-							v-for="(use_message_item,use_message_index) in item.use_message" :key="use_message_index">
-							<view class="d"></view>
-							<view class="">
-								{{use_message_item.notice}}
+					</scroll-view>
+					<view class="but-box p-24 box-border-box bgc-f">
+						<view class="but bgc-3 align-items-center flex-justify-space plr-24 box-border-box">
+							<view class="fc-f fs-32">
+								折后 <text class="fc-f fs-34">¥</text>{{item.price}}
+							</view>
+							<view class="but-right fc-f fs-32 bgc-41ABF5" @click="goToUrl">
+								立即团购
 							</view>
 						</view>
 					</view>
-				</scroll-view>
+				</view>
+
 			</swiper-item>
 		</swiper>
+
 	</view>
 </template>
 
@@ -151,7 +181,8 @@
 				scrollLeft: 0, // 横向滚动条位置
 				isActive: 0,
 				swiper_data: [],
-				goodsList: []
+				goodsList: [],
+				popTop: 0
 			};
 		},
 		onLoad(data) {
@@ -187,9 +218,26 @@
 				setTimeout(() => {
 					this.getScrollW()
 				}, 500)
+				uni.getSystemInfo({
+					success: (e) => {
+						let statusBarH = e.statusBarHeight + 10
+						let custom = 0;
+						custom = wx.getMenuButtonBoundingClientRect()
+						let customBarH = custom.height;
+						this.popTop = statusBarH + customBarH;
+					}
+				})
 			})
 		},
 		methods: {
+			goToUrl() {
+				uni.navigateTo({
+					url: '/pages-buy/group-pay?shop_id=' + this.sift_data[this.isActive].shop_id + '&goods_id=' + this.sift_data[this.isActive].id
+				});
+			},
+			openPop() {
+				this.$refs.popup.open()
+			},
 			setTimeData(timeData) {
 				let time = ''
 				let array = ''
@@ -239,6 +287,10 @@
 					}
 				}).exec()
 			},
+			popChenked(index) {
+				this.chenked(index)
+				this.$refs.popup.close()
+			},
 			chenked(index) {
 				this.isActive = index;
 				this.scrollLeft = 0;
@@ -248,47 +300,89 @@
 					console.log(this.scrollLeft);
 				};
 			},
-			 groupIndexGoods() {
+			groupIndexGoods() {
 				groupIndexGoods({
 					goods_id: this.goods_id,
 					shop_id: this.shop_id
 				}).then((res) => {
 					if (res.code === 1) {
 						this.sift_data = res.data
-						this.sift_data.forEach((v, k) => {
-							this.groupInfo(v.id) 
-						})
+						this.swiper_data = []
+						this.processGroupInfo(0);
 					}
 				})
 			},
-			groupInfo(goodsId) {
-				 groupInfo({
-				 	id: goodsId,
-				 	shop_id: this.shop_id
-				 }).then((res) => {
-				 	if (res.code === 1) {
-				 		// if (res.data.usable_time === 2) {
-				 		// 	res.data.timeData = this.setTimeData(res.data.usable_time_arr)
-				 		// }
-				 		// this.swiper_data.push(res.data)
-				 		this.goodsList[goodsId]=res.data
-				 		this.setGoods()
-				 	}
-				 }) 
+			processGroupInfo(index) {
+				if (index < this.sift_data.length) {
+					const v = this.sift_data[index];
+					this.groupInfo(v.id).then(() => {
+						this.processGroupInfo(index + 1);
+					});
+				}
 			},
-			setGoods(){
-				this.swiper_data=[]
-				this.goodsList.forEach(goods=>{
-					if (goods!==''){
-						this.swiper_data.push(goods)
-					}
-				})
+			groupInfo(goodsId) {
+				return new Promise((resolve) => {
+					groupInfo({
+						id: goodsId,
+						shop_id: this.shop_id
+					}).then((res) => {
+						if (res.code === 1) {
+							if (res.data.usable_time === 2) {
+								res.data.timeData = this.setTimeData(res.data.usable_time_arr)
+							}
+							this.swiper_data.push(res.data);
+						}
+						resolve();
+					});
+				});
 			}
 		},
 	}
 </script>
 
 <style lang="scss" scoped>
+	.w-h-100 {
+		width: 100%;
+		height: 100%;
+	}
+	.overflow-auto {
+		overflow: auto;
+	}
+
+	.but-box {
+		width: 100%;
+	}
+
+	.but {
+		width: 100%;
+		height: 90rpx;
+		line-height: 90rpx;
+		border-radius: 200rpx;
+		position: relative;
+	}
+	.but-right{
+		position: absolute;
+		right: 0;
+		top: 0;
+		width: 30%;
+		height: 90rpx;
+		line-height: 90rpx;
+		padding: 0 24rpx 0 0;
+		box-sizing: border-box;
+		border-radius: 0 200rpx 200rpx 0;
+		text-align: center;
+	}
+	.w-50 {
+		width: 50%;
+	}
+
+	.pop-box {
+		width: 100%;
+		max-height: 40vh;
+		overflow: auto;
+		border-radius: 0 0 20rpx 20rpx;
+	}
+
 	.d {
 		width: 10rpx;
 		height: 10rpx;

+ 83 - 0
pages-buy/group-pay.vue

@@ -0,0 +1,83 @@
+<template>
+	<view class="flex-common-css iPhone-bottom box-border-box">
+		<Nav title='提交订单' bgckgroundBox='transparent'></Nav>
+		<scroll-view :scroll-y="true" class="scroll-view-css" @scrolltolower="scrolltolower">
+			<view class="p-24 box-border-box bgc-f b-rad-20 mb-20">
+				<view class="align-items-flex-start">
+					<image :src="goods_info.cover_img" mode="aspectFit" class="goods-img mr-12"></image>
+					<view class="">
+						<view class="fs-32 w-150">
+							
+						</view>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="but-box align-items-center flex-justify-space bgc-f p-24 box-border-box">
+			<view class="">
+				<view class="fs-34 fw-600 fc-41ABF5">
+					<span class="fs-24 fc-41ABF5 fw-400 mr-12">合计</span><span class="fs-20 fw-600 fc-41ABF5">¥</span>{{goods_info.price}}
+			    </view>
+				<view class="fc-9">
+					<span class="mr-12">共{{fromData.number}}件</span>已优惠¥{{Number(goods_info.line_price) - Number(goods_info.price)}}
+				</view>
+			</view>
+			<view class="but bgc-41ABF5 fc-f b-rad-200 text-align-center fs-34">
+				提交订单
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		groupInfo
+	} from '@/api/group.js'
+	export default {
+		components: {},
+		data() {
+			return {
+				fromData: {
+					id: 0,
+					shop_id: 0,
+					number: 1
+				},
+				goods_info: {}
+			};
+		},
+		onLoad(data) {
+			console.log(data);
+			if(data) {
+				this.fromData.id = data.goods_id
+				this.fromData.shop_id = data.shop_id
+				this.groupInfo()
+			}
+		},
+		mounted() {},
+		methods: {
+			scrolltolower() {
+				console.log('触底');
+			},
+			groupInfo() {
+				groupInfo({id: this.fromData.id,shop_id: this.fromData.shop_id}).then((res) => {
+					if(res.code === 1) {
+						this.goods_info = res.data
+					}
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.goods-img{
+		width: 80rpx;
+		height: 80rpx;
+		border-radius: 20rpx;
+	}
+.but{
+	width: 40%;
+	height: 80rpx;
+	line-height: 80rpx;
+}
+</style>

+ 1 - 1
pages-buy/save-dry.vue

@@ -78,7 +78,7 @@
 		</view>
 
 		<view class="bottom-box box-border-box p-24">
-			<view class="flex-justify-space">
+			<view class="flex-justify-space but">
 				<view class="align-items-flex-end box-1">
 					<span class="fs-28 fc-f fw-600">¥</span>
 					<span class="fs-44 fc-f fw-600">{{total_price||'0'}}</span>

+ 6 - 0
pages.json

@@ -127,6 +127,12 @@
 						"navigationBarTitleText": "团购详情"
 					}
 				},
+				{
+					"path": "group-pay",
+					"style": {
+						"navigationBarTitleText": "团购支付订单"
+					}
+				},
 				{
 					"path": "save-order",
 					"style": {