zs 2 years ago
parent
commit
f3052e14f3

+ 12 - 0
pages.json

@@ -288,6 +288,18 @@
 					"style": {
 					"style": {
 						"navigationBarTitleText": "商品类别"
 						"navigationBarTitleText": "商品类别"
 					}
 					}
+				},
+				{
+					"path": "activity/list",
+					"style": {
+						"navigationBarTitleText": "活动列表"
+					}
+				},
+				{
+					"path": "activity/info",
+					"style": {
+						"navigationBarTitleText": "活动详情"
+					}
 				}
 				}
 
 
 			]
 			]

+ 90 - 1
pages/home/index.vue

@@ -42,6 +42,20 @@
 							</view>
 							</view>
 						</view>
 						</view>
 					</view>
 					</view>
+					<view class="zero act">
+						<view class="list" v-for="(item,index) in platformactList" :key="index" @tap="toAct(item)">
+							<view class="img">
+								<image class="image" :src="item.cover&&item.cover.length>0?item.cover[0].url:''" mode="">
+								</image>
+							</view>
+							<view class="title">
+								<text>{{item.title}}</text>
+							</view>
+							<view class="time" v-if="item.act_time.is_use=='0'">
+								<text>{{item.act_time.value}}</text>
+							</view>
+						</view>
+					</view>
 					<view class="zero five">
 					<view class="zero five">
 						<view class="five_pubu">
 						<view class="five_pubu">
 							<view class="list" v-for="(item,index) in marketList" :key="index" @tap="toBuy(item)">
 							<view class="list" v-for="(item,index) in marketList" :key="index" @tap="toBuy(item)">
@@ -91,6 +105,8 @@
 				],
 				],
 				recomList: [ //推荐好物
 				recomList: [ //推荐好物
 				],
 				],
+				platformactList: [ //平台活动
+				],
 				marketList: [ //商品列表
 				marketList: [ //商品列表
 				],
 				],
 				total: 0,
 				total: 0,
@@ -136,6 +152,11 @@
 				// 推荐好货
 				// 推荐好货
 				res = await that.$api(`/viewGoods/iatg`, 'GET', {});
 				res = await that.$api(`/viewGoods/iatg`, 'GET', {});
 				if (res.errcode == '0') that.$set(that, `recomList`, res.data);
 				if (res.errcode == '0') that.$set(that, `recomList`, res.data);
+				// 平台活动
+				res = await that.$api(`/platformAct`, 'GET', {
+					show_index: 0
+				});
+				if (res.errcode == '0') that.$set(that, `platformactList`, res.data);
 				// 首页产品列表
 				// 首页产品列表
 				res = await that.$api(`/viewGoods/indexGoodsList`, `GET`, {
 				res = await that.$api(`/viewGoods/indexGoodsList`, `GET`, {
 					skip: that.skip,
 					skip: that.skip,
@@ -177,7 +198,15 @@
 				const that = this;
 				const that = this;
 				that.clearPage();
 				that.clearPage();
 				uni.navigateTo({
 				uni.navigateTo({
-					url: `/pagesRest/recom/index?act_tags=${e.value}&type=2`
+					url: `/pagesRest/recom/index?act_tags=${e.value}`
+				})
+			},
+			// 平台活动
+			toAct(e) {
+				const that = this;
+				that.clearPage();
+				uni.navigateTo({
+					url: `/pagesRest/activity/info?id=${e._id}`
 				})
 				})
 			},
 			},
 			// 购买
 			// 购买
@@ -371,6 +400,66 @@
 			}
 			}
 		}
 		}
 
 
+		.act {
+			background-color: var(--f2Color);
+			padding: 2vw 2vw 0 2vw;
+			display: flex;
+			flex-direction: column;
+
+			.act_1 {
+				text-align: center;
+				margin: 0 0 2vw 0;
+				font-family: cursive;
+				color: #ff0000;
+				font-size: 20px;
+			}
+
+			.list {
+				border-radius: 10px;
+				position: relative;
+
+				.img {
+					.image {
+						width: 100%;
+						height: 14vh;
+						box-shadow: 0 0 5px #f1f1f1;
+						border-radius: 10px;
+					}
+				}
+
+				.title {
+					position: absolute;
+					top: 5vw;
+					text-align: center;
+					width: 95%;
+					left: 2vw;
+
+
+					text {
+						font-size: 20px;
+						font-family: cursive;
+						color: #000000;
+						font-weight: bold;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						-webkit-line-clamp: 2;
+						word-break: break-all;
+						display: -webkit-box;
+						-webkit-box-orient: vertical;
+					}
+				}
+
+				.time {
+					position: absolute;
+					bottom: 2vw;
+					right: 2vw;
+					font-size: 12px;
+					width: 100%;
+					text-align: right;
+				}
+			}
+		}
+
 		.five {
 		.five {
 			display: flex;
 			display: flex;
 			flex-direction: column;
 			flex-direction: column;

+ 0 - 1
pages/index/index.vue

@@ -53,7 +53,6 @@
 							data: res,
 							data: res,
 							success: function() {
 							success: function() {
 								uni.redirectTo({
 								uni.redirectTo({
-									// url: `/pagesHome/shop/index`
 									url: `/pages/home/index`
 									url: `/pages/home/index`
 								})
 								})
 							}
 							}

+ 8 - 8
pages/my/index.vue

@@ -107,14 +107,14 @@
 						title: '我的优惠劵',
 						title: '我的优惠劵',
 						route: 'pagesMy/discount/index'
 						route: 'pagesMy/discount/index'
 					},
 					},
-					{
-						title: '我的积分',
-						route: 'pagesMy/integral/index'
-					},
-					{
-						title: '我的资产',
-						route: 'pagesMy/assets/index'
-					},
+					// {
+					// 	title: '我的积分',
+					// 	route: 'pagesMy/integral/index'
+					// },
+					// {
+					// 	title: '我的资产',
+					// 	route: 'pagesMy/assets/index'
+					// },
 					{
 					{
 						title: '我的拼团',
 						title: '我的拼团',
 						route: 'pagesMy/dough/index'
 						route: 'pagesMy/dough/index'

+ 55 - 26
pagesHome/shop/index.vue

@@ -11,8 +11,7 @@
 						<view class="one_1_2">
 						<view class="one_1_2">
 							<view class="pubu">
 							<view class="pubu">
 								<view class="list" v-for="(item,index) in shoplist" :key="index">
 								<view class="list" v-for="(item,index) in shoplist" :key="index">
-									<image class="image" :src="item.file&&item.file.length>0?item.file[0].url:''"
-										mode=""></image>
+									<image class="image" :src="item.file&&item.file.length>0?item.file[0].url:''" mode=""></image>
 									<view class="name">
 									<view class="name">
 										{{item.name}}
 										{{item.name}}
 									</view>
 									</view>
@@ -38,20 +37,17 @@
 						<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
 						<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
 							<view class="list-scroll-view">
 							<view class="list-scroll-view">
 								<view class="second_1">
 								<view class="second_1">
-									<view :class="['list',condActive==index?'activeList':'']"
-										v-for="(item,index) in condList" :key="index" @tap="toCond(index,item)">
+									<view :class="['list',condActive==index?'activeList':'']" v-for="(item,index) in condList" :key="index" @tap="toCond(index,item)">
 										<view class="name">
 										<view class="name">
 											{{item.name}}
 											{{item.name}}
 										</view>
 										</view>
 										<view class="icon">
 										<view class="icon">
 											<view class="icon_1">
 											<view class="icon_1">
-												<text :class="['iconfont',item.shangActive]"
-													v-if="condActive==index&&shang=='1'"></text>
+												<text :class="['iconfont',item.shangActive]" v-if="condActive==index&&shang=='1'"></text>
 												<text :class="['iconfont',item.shang]" v-else></text>
 												<text :class="['iconfont',item.shang]" v-else></text>
 											</view>
 											</view>
 											<view class="icon_1">
 											<view class="icon_1">
-												<text :class="['iconfont', item.xiaActive]"
-													v-if="condActive==index&&xia=='-1'"></text>
+												<text :class="['iconfont', item.xiaActive]" v-if="condActive==index&&xia=='-1'"></text>
 												<text :class="['iconfont', item.xia]" v-else></text>
 												<text :class="['iconfont', item.xia]" v-else></text>
 											</view>
 											</view>
 										</view>
 										</view>
@@ -109,13 +105,18 @@
 							</view>
 							</view>
 						</view>
 						</view>
 						<view class="qrcode_1">
 						<view class="qrcode_1">
-							<view class="qrcode_1_1">
+							<uqrcode ref="uqrcode" canvas-id="qrcode" :value="uqrcodeInfo" :options="{ margin:10,backgroundColor:'#f1f1f1' }">
+							</uqrcode>
+							<view class="txt">
+								店铺二维码
+							</view>
+							<!-- <view class="qrcode_1_1">
 								<uqrcode ref="uqrcode" canvas-id="qrcode" :value="uqrcodeInfo" :options="{ margin:10 }">
 								<uqrcode ref="uqrcode" canvas-id="qrcode" :value="uqrcodeInfo" :options="{ margin:10 }">
 								</uqrcode>
 								</uqrcode>
 								<view class="txt">
 								<view class="txt">
 									店铺二维码
 									店铺二维码
 								</view>
 								</view>
-							</view>
+							</view> -->
 						</view>
 						</view>
 					</view>
 					</view>
 					<view class="collect">
 					<view class="collect">
@@ -747,6 +748,7 @@
 
 
 				.second {
 				.second {
 					margin: 2vw 0;
 					margin: 2vw 0;
+					position: relative;
 
 
 					.second_1 {
 					.second_1 {
 						display: flex;
 						display: flex;
@@ -767,31 +769,58 @@
 					}
 					}
 
 
 					.qrcode_1 {
 					.qrcode_1 {
-						display: flex;
-						justify-content: center;
-						text-align: center;
-						margin: 5vw 0;
 
 
-						.qrcode_1_1 {
-							padding: 2vw;
-							background: red;
+						.uqrcode {
+							top: 10vw;
+							left: 20%;
 
 
-							.uqrcode {
-								display: flex;
-								justify-content: center;
-								width: 216px !important;
-								height: 216px !important;
+						}
 
 
-								.uqrcode-canvas {
-									-webkit-transform-origin: center;
-								}
-							}
+						.txt {
+							margin: 2vw 0 0 0;
+							position: absolute;
+							text-align: center;
+							width: 100vw;
+							bottom: -22vw;
+						}
 
 
+<<<<<<< HEAD
 							.txt {
 							.txt {
 								margin: 2vw 0 0 0;
 								margin: 2vw 0 0 0;
 								color: var(--mainColor);
 								color: var(--mainColor);
 							}
 							}
 						}
 						}
+=======
+						// display: flex;
+						// justify-content: center;
+						// text-align: center;
+						// margin: 5vw 0;
+
+						// .qrcode_1_1 {
+						// 	padding: 2vw;
+
+						// .uqrcode {
+						// 	display: flex;
+						// 	justify-content: center;
+						// 	width: 216px !important;
+						// 	height: 216px !important;
+
+						// 	.uqrcode-canvas {
+						// 		-webkit-transform-origin: center;
+						// 	}
+						// }
+
+						// canvas {
+						// 	width: 180px !important;
+						// 	height: 180px !important;
+						// }
+
+						// .txt {
+						// 	margin: 2vw 0 0 0;
+						// 	color: #000;
+						// }
+						// }
+>>>>>>> 092a5eaa67f68779dc8150f875946a31c2bd15bb
 					}
 					}
 
 
 				}
 				}

+ 25 - 5
pagesMy/address/index.vue

@@ -2,7 +2,7 @@
 	<mobile-frame>
 	<mobile-frame>
 		<view class="main">
 		<view class="main">
 			<view class="one">
 			<view class="one">
-				<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage">
+				<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
 					<view class="list-scroll-view">
 					<view class="list-scroll-view">
 						<view class="list" v-for="(item,index) in list" :key="index">
 						<view class="list" v-for="(item,index) in list" :key="index">
 							<view class="name">
 							<view class="name">
@@ -31,6 +31,9 @@
 								<text>默认</text>
 								<text>默认</text>
 							</view>
 							</view>
 						</view>
 						</view>
+						<view class="is_bottom" v-if="is_bottom">
+							<text>我们也是有底线的!</text>
+						</view>
 					</view>
 					</view>
 				</scroll-view>
 				</scroll-view>
 			</view>
 			</view>
@@ -55,7 +58,10 @@
 				total: 0,
 				total: 0,
 				skip: 0,
 				skip: 0,
 				limit: 5,
 				limit: 5,
-				page: 0
+				page: 0,
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
 			};
 			};
 		},
 		},
 		onShow: function() {
 		onShow: function() {
@@ -114,9 +120,14 @@
 					that.$set(that, `skip`, skip)
 					that.$set(that, `skip`, skip)
 					that.search();
 					that.search();
 					uni.hideLoading();
 					uni.hideLoading();
-				} else uni.showToast({
-					title: '没有更多数据了'
-				});
+				} else that.$set(that, `is_bottom`, true)
+			},
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
 			},
 			},
 			// 获取微信地址
 			// 获取微信地址
 			toWxaddress() {
 			toWxaddress() {
@@ -358,4 +369,13 @@
 			flex-direction: column;
 			flex-direction: column;
 		}
 		}
 	}
 	}
+
+	.is_bottom {
+		text-align: center;
+
+		text {
+			padding: 2vw 0;
+			display: inline-block;
+		}
+	}
 </style>
 </style>

+ 41 - 8
pagesMy/discount/index.vue

@@ -2,9 +2,12 @@
 	<mobile-frame>
 	<mobile-frame>
 		<view class="main">
 		<view class="main">
 			<view class="one">
 			<view class="one">
-				<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage">
+				<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
 					<view class="list-scroll-view">
 					<view class="list-scroll-view">
 						<discount :Style="Style" :couponList="list"></discount>
 						<discount :Style="Style" :couponList="list"></discount>
+						<view class="is_bottom" v-if="is_bottom">
+							<text>我们也是有底线的!</text>
+						</view>
 					</view>
 					</view>
 				</scroll-view>
 				</scroll-view>
 			</view>
 			</view>
@@ -27,8 +30,11 @@
 				list: [],
 				list: [],
 				total: 0,
 				total: 0,
 				skip: 0,
 				skip: 0,
-				limit: 5,
-				page: 0
+				limit: 6,
+				page: 0,
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
 			};
 			};
 		},
 		},
 		onLoad: function(e) {
 		onLoad: function(e) {
@@ -59,8 +65,8 @@
 				const that = this;
 				const that = this;
 				let user = that.user;
 				let user = that.user;
 				let info = {
 				let info = {
-					// skip: that.skip,
-					// limit: that.limit,
+					skip: that.skip,
+					limit: that.limit,
 					customer: user._id
 					customer: user._id
 				}
 				}
 				const res = await that.$api(`/userCoupon`, 'GET', {
 				const res = await that.$api(`/userCoupon`, 'GET', {
@@ -92,9 +98,14 @@
 					that.$set(that, `skip`, skip)
 					that.$set(that, `skip`, skip)
 					that.search();
 					that.search();
 					uni.hideLoading();
 					uni.hideLoading();
-				} else uni.showToast({
-					title: '没有更多数据了'
-				});
+				} else that.$set(that, `is_bottom`, true)
+			},
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
 			},
 			},
 			// 清空列表
 			// 清空列表
 			clearPage() {
 			clearPage() {
@@ -112,4 +123,26 @@
 	.main {
 	.main {
 		background-color: var(--f5Color);
 		background-color: var(--f5Color);
 	}
 	}
+
+	.scroll-view {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+
+		.list-scroll-view {
+			display: flex;
+			flex-direction: column;
+		}
+	}
+
+	.is_bottom {
+		text-align: center;
+
+		text {
+			padding: 2vw 0;
+			display: inline-block;
+		}
+	}
 </style>
 </style>

+ 18 - 10
pagesMy/order/after.vue

@@ -2,7 +2,7 @@
 	<mobile-frame>
 	<mobile-frame>
 		<view class="main">
 		<view class="main">
 			<view class="one">
 			<view class="one">
-				<input type="text" v-model="searchInfo.name" @input="toInput" placeholder="搜索商品">
+				<input type="text" v-model="searchInfo.name" @input="toInput" placeholder="搜索商品" @scroll="toScroll">
 			</view>
 			</view>
 			<view class="two">
 			<view class="two">
 				<tabs :tabs="tabs" @tabsChange="tabsChange">
 				<tabs :tabs="tabs" @tabsChange="tabsChange">
@@ -20,8 +20,7 @@
 										</view>
 										</view>
 									</view>
 									</view>
 									<view class="list_2">
 									<view class="list_2">
-										<image class="image" :src="item.url&&item.url.length>0?item.url[0].url:''"
-											mode="">
+										<image class="image" :src="item.url&&item.url.length>0?item.url[0].url:''" mode="">
 										</image>
 										</image>
 										<view class="other">
 										<view class="other">
 											<view class="name">
 											<view class="name">
@@ -45,12 +44,13 @@
 										</view>
 										</view>
 									</view>
 									</view>
 									<view class="btn">
 									<view class="btn">
-										<button v-if="item.status=='0'||item.status=='1'" type="default" size="mini"
-											@tap.stop="toCancel(item)">取消售后</button>
-										<button v-if="item.type!='0'" type="default" size="mini"
-											@tap.stop="toRevise(item)">维护信息</button>
+										<button v-if="item.status=='0'||item.status=='1'" type="default" size="mini" @tap.stop="toCancel(item)">取消售后</button>
+										<button v-if="item.type!='0'" type="default" size="mini" @tap.stop="toRevise(item)">维护信息</button>
 									</view>
 									</view>
 								</view>
 								</view>
+								<view class="is_bottom" v-if="is_bottom">
+									<text>我们也是有底线的!</text>
+								</view>
 							</view>
 							</view>
 						</scroll-view>
 						</scroll-view>
 					</view>
 					</view>
@@ -104,6 +104,9 @@
 					]
 					]
 				},
 				},
 				status: '0',
 				status: '0',
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
 			};
 			};
 		},
 		},
 		onShow: async function() {
 		onShow: async function() {
@@ -229,9 +232,14 @@
 					that.$set(that, `skip`, skip)
 					that.$set(that, `skip`, skip)
 					that.search();
 					that.search();
 					uni.hideLoading();
 					uni.hideLoading();
-				} else uni.showToast({
-					title: '没有更多数据了'
-				});
+				} else that.$set(that, `is_bottom`, true)
+			},
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
 			},
 			},
 			// 清空列表
 			// 清空列表
 			clearPage() {
 			clearPage() {

+ 43 - 40
pagesMy/order/index.vue

@@ -7,13 +7,12 @@
 			<view class="two">
 			<view class="two">
 				<tabs :tabs="tabs" @tabsChange="tabsChange">
 				<tabs :tabs="tabs" @tabsChange="tabsChange">
 					<view class="tabsList">
 					<view class="tabsList">
-						<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage">
+						<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
 							<view class="list-scroll-view">
 							<view class="list-scroll-view">
 								<view class="list_1" v-if="tabs.active=='-0'">
 								<view class="list_1" v-if="tabs.active=='-0'">
 									全部订单
 									全部订单
 								</view>
 								</view>
-								<view class="list_2" v-for="(item,index) in list" :key="index"
-									v-else-if="tabs.active=='0'" @tap="toInfo(item)">
+								<view class="list_2" v-for="(item,index) in list" :key="index" v-else-if="tabs.active=='0'" @tap="toInfo(item)">
 									<view class="status">
 									<view class="status">
 										{{item.status=='0'?'待付款':item.status=='1'?'已支付':item.status=='-1'?'取消订单':item.status=='2'?'发货中':item.status=='-2'?'已退款':item.status=='3'?'已收货':item.status=='-3'?'申请售后':item.status=='-4'?'正在售后中':item.status=='-5'?'售后已结束':'未识别'}}
 										{{item.status=='0'?'待付款':item.status=='1'?'已支付':item.status=='-1'?'取消订单':item.status=='2'?'发货中':item.status=='-2'?'已退款':item.status=='3'?'已收货':item.status=='-3'?'申请售后':item.status=='-4'?'正在售后中':item.status=='-5'?'售后已结束':'未识别'}}
 									</view>
 									</view>
@@ -27,9 +26,7 @@
 										<view class="goods_2">
 										<view class="goods_2">
 											<view class="market" v-for="(tags,indexss) in tag.goods" :key="indexss">
 											<view class="market" v-for="(tags,indexss) in tag.goods" :key="indexss">
 												<view class="url">
 												<view class="url">
-													<image class="image"
-														:src="tags.goods.file&&tags.goods.file.length>0?tags.goods.file[0].url:''"
-														mode=""></image>
+													<image class="image" :src="tags.goods.file&&tags.goods.file.length>0?tags.goods.file[0].url:''" mode=""></image>
 												</view>
 												</view>
 												<view class="goodsname">
 												<view class="goodsname">
 													{{tags.goods.name}}
 													{{tags.goods.name}}
@@ -56,22 +53,15 @@
 										<text>总价¥{{item.total_detail.goods_total}}</text>
 										<text>总价¥{{item.total_detail.goods_total}}</text>
 									</view>
 									</view>
 									<view class="btn">
 									<view class="btn">
-										<button v-if="item.status=='0'" type="default" size="mini"
-											@tap.stop="toCancel(item)">取消订单</button>
-										<button class="toPay" v-if="item.status=='0'" type="default" size="mini"
-											@tap.stop="toPay(item)">付款</button>
-										<button v-if="item.status=='2'" type="default" size="mini"
-											@tap.stop="toConfirm(item)">确认收货</button>
-										<button v-if="item.status!='0'" type="default" size="mini"
-											@tap.stop="toAfter(item)">申请售后</button>
-										<button v-if="item.status=='3'&&!item.rate" type="default" size="mini"
-											@tap.stop="toAppraise(item)">立即评价</button>
-										<button v-if="item.status=='3'&&item.rate" type="default" size="mini"
-											@tap.stop="toAppraise(item)">追加评价</button>
+										<button v-if="item.status=='0'" type="default" size="mini" @tap.stop="toCancel(item)">取消订单</button>
+										<button class="toPay" v-if="item.status=='0'" type="default" size="mini" @tap.stop="toPay(item)">付款</button>
+										<button v-if="item.status=='2'" type="default" size="mini" @tap.stop="toConfirm(item)">确认收货</button>
+										<button v-if="item.status!='0'" type="default" size="mini" @tap.stop="toAfter(item)">申请售后</button>
+										<button v-if="item.status=='3'&&!item.rate" type="default" size="mini" @tap.stop="toAppraise(item)">立即评价</button>
+										<button v-if="item.status=='3'&&item.rate" type="default" size="mini" @tap.stop="toAppraise(item)">追加评价</button>
 									</view>
 									</view>
 								</view>
 								</view>
-								<view class="list_2 list_3" v-for="(item,index) in list" :key="index"
-									@tap="toInfo(item)" v-else>
+								<view class="list_2 list_3" v-for="(item,index) in list" :key="index" @tap="toInfo(item)" v-else>
 									<view class="list_3_1">
 									<view class="list_3_1">
 										<view class="goods_1">
 										<view class="goods_1">
 											<view class="shopname">
 											<view class="shopname">
@@ -114,22 +104,18 @@
 										<text>总价¥{{item.real_pay}}</text>
 										<text>总价¥{{item.real_pay}}</text>
 									</view>
 									</view>
 									<view class="btn">
 									<view class="btn">
-										<button v-if="item.status=='2'||item.status=='3'" type="default" size="mini"
-											@tap.stop="toLogi(item)">查看物流</button>
-										<button v-if="item.status=='0'" type="default" size="mini"
-											@tap.stop="toCancel(item)">取消订单</button>
-										<button class="toPay" v-if="item.status=='0'" type="default" size="mini"
-											@tap.stop="toPay(item)">付款</button>
-										<button v-if="item.status=='2'" type="default" size="mini"
-											@tap.stop="toConfirm(item)">确认收货</button>
-										<button v-if="item.status!='0'" type="default" size="mini"
-											@tap.stop="toAfter(item)">申请售后</button>
-										<button v-if="item.status=='3'&&!item.rate" type="default" size="mini"
-											@tap.stop="toAppraise(item)">立即评价</button>
-										<button v-if="item.status=='3'&&item.rate" type="default" size="mini"
-											@tap.stop="toAppraise(item)">追加评价</button>
+										<button v-if="item.status=='2'||item.status=='3'" type="default" size="mini" @tap.stop="toLogi(item)">查看物流</button>
+										<button v-if="item.status=='0'" type="default" size="mini" @tap.stop="toCancel(item)">取消订单</button>
+										<button class="toPay" v-if="item.status=='0'" type="default" size="mini" @tap.stop="toPay(item)">付款</button>
+										<button v-if="item.status=='2'" type="default" size="mini" @tap.stop="toConfirm(item)">确认收货</button>
+										<button v-if="item.status!='0'" type="default" size="mini" @tap.stop="toAfter(item)">申请售后</button>
+										<button v-if="item.status=='3'&&!item.rate" type="default" size="mini" @tap.stop="toAppraise(item)">立即评价</button>
+										<button v-if="item.status=='3'&&item.rate" type="default" size="mini" @tap.stop="toAppraise(item)">追加评价</button>
 									</view>
 									</view>
 								</view>
 								</view>
+								<view class="is_bottom" v-if="is_bottom">
+									<text>我们也是有底线的!</text>
+								</view>
 							</view>
 							</view>
 						</scroll-view>
 						</scroll-view>
 					</view>
 					</view>
@@ -183,7 +169,10 @@
 				total: 0,
 				total: 0,
 				skip: 0,
 				skip: 0,
 				limit: 5,
 				limit: 5,
-				page: 0
+				page: 0,
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
 			};
 			};
 		},
 		},
 		onLoad: function(e) {
 		onLoad: function(e) {
@@ -269,9 +258,14 @@
 					that.$set(that, `skip`, skip)
 					that.$set(that, `skip`, skip)
 					that.search();
 					that.search();
 					uni.hideLoading();
 					uni.hideLoading();
-				} else uni.showToast({
-					title: '没有更多数据了'
-				});
+				} else that.$set(that, `is_bottom`, true)
+			},
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
 			},
 			},
 			// 输入框
 			// 输入框
 			toInput(e) {
 			toInput(e) {
@@ -419,11 +413,11 @@
 			},
 			},
 			// 立即评价
 			// 立即评价
 			toAppraise(e) {
 			toAppraise(e) {
-				if(e.rate){
+				if (e.rate) {
 					uni.navigateTo({
 					uni.navigateTo({
 						url: `/pagesMy/order/appraise?id=${e._id}&rate_id=${e.rate}`
 						url: `/pagesMy/order/appraise?id=${e._id}&rate_id=${e.rate}`
 					})
 					})
-				}else{
+				} else {
 					uni.navigateTo({
 					uni.navigateTo({
 						url: `/pagesMy/order/appraise?id=${e._id}`
 						url: `/pagesMy/order/appraise?id=${e._id}`
 					})
 					})
@@ -756,4 +750,13 @@
 			flex-direction: column;
 			flex-direction: column;
 		}
 		}
 	}
 	}
+
+	.is_bottom {
+		text-align: center;
+
+		text {
+			padding: 2vw 0;
+			display: inline-block;
+		}
+	}
 </style>
 </style>

+ 308 - 0
pagesRest/activity/info.vue

@@ -0,0 +1,308 @@
+<template>
+	<mobile-frame>
+		<view class="main">
+			<view class="one">
+				<view class="one_1" v-if="barActive=='0'">
+					<scroll-view scroll-y="true" class="scroll-view">
+						<view class="content">
+							<u-parse :content="info.content.value"></u-parse>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="one_2" v-else-if="barActive=='1'">
+					<view class="one_2_1">
+						<input type="text" v-model="searchInfo.goods_name" @blur="toInput" placeholder="搜索商品">
+					</view>
+					<view class="one_2_2">
+						<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
+							<view class="list-scroll-view">
+								<view class="pubu">
+									<view class="list" v-for="(item,index) in list" :key="index" @tap="toBuy(item.goods)">
+										<view class="img">
+											<image class="image" :src="item.goods.file&&item.goods.file.length?item.goods.file[0].url:''" mode=""></image>
+										</view>
+										<view class="name">
+											<text>{{item.goods.name}}</text>
+										</view>
+									</view>
+								</view>
+								<view class="is_bottom" v-if="is_bottom">
+									<text>我们也是有底线的!</text>
+								</view>
+							</view>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+			<view class="two">
+				<view class="list" v-for="(item,index) in barList" :key="index" @tap="barChange(index,item)">
+					<view class="icon">
+						<text :class="['iconfont',barActive==index?item.acticon:item.icon]"></text>
+					</view>
+					<view :class="['name',barActive==index?'activename':'']">
+						{{item.name}}
+					</view>
+				</view>
+			</view>
+		</view>
+	</mobile-frame>
+</template>
+
+<script>
+	import uParse from "@/components/u-parse/u-parse.vue";
+	export default {
+		components: {
+			uParse,
+		},
+		data() {
+			return {
+				id: '',
+				barActive: '0',
+				barList: [ //底部菜单
+					{
+						icon: 'icon-shangdian',
+						acticon: "icon-shangdian-copy",
+						name: '活动详情'
+					},
+					{
+						icon: 'icon-shangpinfenlei',
+						acticon: "icon-shangpinfenlei-copy",
+						name: '商品列表'
+					}
+				],
+				// 详情
+				info: {},
+				// 商品列表
+				list: [],
+				total: 0,
+				page: 0,
+				skip: 0,
+				limit: 6,
+				// 查询
+				searchInfo: {},
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
+			};
+		},
+		onLoad: function(e) {
+			const that = this;
+			that.$set(that, `id`, e.id || '634fa595e4ed552882f05a6f');
+		},
+		onShow: function() {
+			const that = this;
+			that.searchAct();
+		},
+		methods: {
+			async searchAct() {
+				const that = this;
+				if (that.id) {
+					// 查询详情
+					let res = await that.$api(`/platformAct/${that.id}`, 'GET');
+					if (res.errcode == '0') {
+						uni.setNavigationBarTitle({
+							title: res.data.title
+						});
+						that.$set(that, `info`, res.data)
+					}
+					that.search()
+				}
+			},
+			// 查询列表
+			async search() {
+				const that = this;
+				// 查询商品列表
+				let info = {
+					skip: that.skip,
+					limit: that.limit,
+					platformAct: that.id
+				}
+				let res = await that.$api(`/goodsJoinAct`, 'GET', {
+					...info,
+					...that.searchInfo
+				})
+				if (res.errcode == '0') {
+					let list = [...that.list, ...res.data];
+					that.$set(that, `list`, list)
+					that.$set(that, `total`, res.total)
+				}
+			},
+			toPage() {
+				const that = this;
+				let list = that.list;
+				let limit = that.limit;
+				if (that.total > list.length) {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					})
+					let page = that.page + 1;
+					that.$set(that, `page`, page)
+					let skip = page * limit;
+					that.$set(that, `skip`, skip)
+					that.search();
+					uni.hideLoading();
+
+				} else that.$set(that, `is_bottom`, true)
+			},
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
+			},
+			// 输入框
+			toInput(e) {
+				const that = this;
+				if (e.detail.value) that.$set(that.searchInfo, `goods_name`, e.detail.value);
+				else that.$set(that, `searchInfo`, {});
+				that.clearPage();
+				that.search();
+			},
+			// 购买
+			toBuy(e) {
+				const that = this;
+				that.clearPage();
+				uni.navigateTo({
+					url: `/pagesHome/order/detail?id=${e.id||e._id}`
+				})
+			},
+			// 选择底部菜单
+			barChange(index, item) {
+				const that = this;
+				that.$set(that, `barActive`, index);
+			},
+			// 清空列表
+			clearPage() {
+				const that = this;
+				that.$set(that, `list`, [])
+				that.$set(that, `skip`, 0)
+				that.$set(that, `limit`, 6)
+				that.$set(that, `page`, 0)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.main {
+		display: flex;
+		flex-direction: column;
+		width: 100vw;
+		height: 100vh;
+
+		.one {
+			position: relative;
+			flex-grow: 1;
+
+			.one_1 {
+				height: 92vh;
+
+				.content {
+					padding: 2vw;
+				}
+
+				image {
+					width: 100% !important;
+				}
+			}
+
+			.one_2 {
+				height: 92vh;
+
+				.one_2_1 {
+					border-bottom: 1px solid var(--f85Color);
+					padding: 2vw;
+					margin: 0 0 2vw 0;
+
+					input {
+						padding: 2vw;
+						background-color: var(--f1Color);
+						font-size: var(--font14Size);
+						border-radius: 5px;
+					}
+				}
+
+				.one_2_2 {
+					position: relative;
+					width: 96vw;
+					height: 81vh;
+					margin: 0 2vw;
+
+					.pubu {
+						column-count: 2;
+						column-gap: 2vw;
+
+						.list {
+							break-inside: avoid;
+							padding: 2vw;
+							background-color: #f1f1f1;
+							margin: 0 0 2vw 0;
+							border-radius: 5px;
+
+							.img {
+								.image {
+									width: 100%;
+									height: 30vh;
+									border-radius: 5px;
+								}
+							}
+
+							.name {
+								text {
+									font-size: 14px;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.two {
+			display: flex;
+			flex-direction: row;
+			justify-content: space-around;
+			border-top: 1px solid #f1f1f1;
+
+			.list {
+				padding: 1vw 0;
+				text-align: center;
+
+				.icon {}
+
+				.name {
+					font-size: 12px;
+				}
+
+				.activename {
+					color: var(--fFB1Color);
+				}
+			}
+		}
+	}
+
+	.scroll-view {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+
+		.list-scroll-view {
+			display: flex;
+			flex-direction: column;
+		}
+	}
+
+	.is_bottom {
+		text-align: center;
+		width: 100vw;
+
+		text {
+			padding: 1vw 0;
+			display: inline-block;
+		}
+	}
+</style>

+ 225 - 0
pagesRest/activity/list.vue

@@ -0,0 +1,225 @@
+<template>
+	<mobile-frame>
+		<view class="main">
+			<view class="one">
+				<input type="text" v-model="searchInfo.title" @blur="toInput" placeholder="请输入活动名称">
+			</view>
+			<view class="two">
+				<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage" @scroll="toScroll">
+					<view class="list-scroll-view">
+						<view class="list" v-for="(item,index) in list" :key="index" @tap="toInfo(item)">
+							<view class="img">
+								<image class="image" :src="item.cover&&item.cover.length>0?item.cover[0].url:''" mode="">
+								</image>
+							</view>
+							<view class="title">
+								<text>{{item.title}}</text>
+							</view>
+							<view class="time" v-if="item.act_time.is_use=='0'">
+								<text>{{item.act_time.value}}</text>
+							</view>
+						</view>
+						<view class="is_bottom" v-if="is_bottom">
+							<text>我们也是有底线的!</text>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+		</view>
+	</mobile-frame>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				searchInfo: {},
+				list: [],
+				total: 0,
+				page: 0,
+				skip: 0,
+				limit: 6,
+				// 数据是否触底
+				is_bottom: false,
+				scrollTop: 0,
+			};
+		},
+		onLoad: function(e) {},
+		onShow: function() {
+			const that = this;
+			that.search();
+		},
+		methods: {
+			async search() {
+				const that = this;
+				let info = {
+					skip: that.skip,
+					limit: that.limit
+				}
+				let res = await that.$api(`/platformAct`, 'GET', {
+					...info,
+					...that.searchInfo
+				});
+				if (res.errcode == '0') {
+					let list = [...that.list, ...res.data]
+					that.$set(that, `list`, list);
+					that.$set(that, `total`, res.total);
+				}
+			},
+			toPage() {
+				const that = this;
+				let list = that.list;
+				let limit = that.limit;
+				if (that.total > list.length) {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					})
+					let page = that.page + 1;
+					that.$set(that, `page`, page)
+					let skip = page * limit;
+					that.$set(that, `skip`, skip)
+					that.search();
+					uni.hideLoading();
+
+				} else that.$set(that, `is_bottom`, true)
+			},
+			toScroll(e) {
+				const that = this;
+				let up = that.scrollTop;
+				that.$set(that, `scrollTop`, e.detail.scrollTop);
+				let num = Math.sign(up - e.detail.scrollTop);
+				if (num == 1) that.$set(that, `is_bottom`, false);
+			},
+			// 输入框
+			toInput(e) {
+				const that = this;
+				if (e.detail.value) that.$set(that.searchInfo, `title`, e.detail.value);
+				else that.$set(that, `searchInfo`, {});
+				that.clearPage();
+				that.search();
+			},
+			// 清空列表
+			clearPage() {
+				const that = this;
+				that.$set(that, `list`, [])
+				that.$set(that, `skip`, 0)
+				that.$set(that, `limit`, 6)
+				that.$set(that, `page`, 0)
+			},
+			toInfo(e) {
+				const that = this;
+				that.clearPage();
+				uni.navigateTo({
+					url: `/pagesRest/activity/info?id=${e._id}`
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.main {
+		display: flex;
+		flex-direction: column;
+		width: 100vw;
+		height: 100vh;
+
+		.one {
+			border-bottom: 1px solid var(--f85Color);
+			padding: 2vw;
+
+			input {
+				padding: 2vw;
+				background-color: var(--f1Color);
+				font-size: var(--font14Size);
+				border-radius: 5px;
+			}
+		}
+
+		.two {
+			position: relative;
+			flex-grow: 1;
+
+			.list {
+				margin: 2vw 2vw 0 2vw;
+				width: 96vw;
+				border-radius: 10px;
+				box-shadow: 0 0 5px #858585;
+				position: relative;
+
+				.img {
+					.image {
+						width: 100%;
+						height: 14vh;
+						box-shadow: 0 0 5px #f1f1f1;
+						border-radius: 10px;
+					}
+				}
+
+				.title {
+					position: absolute;
+					top: 5vw;
+					text-align: center;
+					width: 95%;
+					left: 2vw;
+
+					text {
+						font-size: 20px;
+						font-family: cursive;
+						color: #000000;
+						font-weight: bold;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						-webkit-line-clamp: 2;
+						word-break: break-all;
+						display: -webkit-box;
+						-webkit-box-orient: vertical;
+					}
+				}
+
+				.time {
+					position: absolute;
+					bottom: 2vw;
+					right: 2vw;
+					font-size: 12px;
+					width: 100%;
+					text-align: right;
+				}
+			}
+		}
+	}
+
+	.scroll-view {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+
+		.list-scroll-view {
+			display: flex;
+			flex-direction: row;
+			flex-wrap: wrap;
+		}
+	}
+
+	.is_bottom {
+		text-align: center;
+
+		text {
+			padding: 1vw 0;
+			display: inline-block;
+		}
+	}
+
+	.is_bottom {
+		text-align: center;
+		width: 100vw;
+
+		text {
+			padding: 1vw 0;
+			display: inline-block;
+		}
+	}
+</style>