liujiaxin 3 nedēļas atpakaļ
vecāks
revīzija
b4c80986c5
40 mainītis faili ar 521 papildinājumiem un 196 dzēšanām
  1. 2 2
      core/config/defaultConfig.js
  2. 1 1
      pages/auth/login.vue
  3. 200 116
      pages/home/living.vue
  4. 2 5
      pages/list/index.vue
  5. 0 0
      pages_no/living - 副本.vue
  6. 5 5
      pages_shop/goods.vue
  7. 8 0
      uni_modules/mescroll-uni/changelog.md
  8. 1 1
      uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue
  9. 3 3
      uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue
  10. 29 13
      uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue
  11. 0 11
      uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js
  12. 9 6
      uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue
  13. 0 9
      uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js
  14. 5 2
      uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js
  15. 1 1
      uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js
  16. 1 0
      uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs
  17. 66 0
      uni_modules/mescroll-uni/hooks/useMescroll.js
  18. 56 0
      uni_modules/mescroll-uni/hooks/useMescrollComp.js
  19. 69 0
      uni_modules/mescroll-uni/hooks/useMescrollMore.js
  20. 11 15
      uni_modules/mescroll-uni/package.json
  21. 45 0
      uni_modules/mescroll-uni/readme.md
  22. 0 0
      unpackage/dist/dev/mp-weixin/common/assets.js
  23. 1 1
      unpackage/dist/dev/mp-weixin/core/config/defaultConfig.js
  24. 0 0
      unpackage/dist/dev/mp-weixin/pages/auth/login.js
  25. 0 0
      unpackage/dist/dev/mp-weixin/pages/home/living.js
  26. 0 0
      unpackage/dist/dev/mp-weixin/pages/home/living.wxml
  27. 0 0
      unpackage/dist/dev/mp-weixin/pages/home/living.wxss
  28. 1 1
      unpackage/dist/dev/mp-weixin/pages/list/index.js
  29. 0 0
      unpackage/dist/dev/mp-weixin/pages_no/living827.js
  30. 0 0
      unpackage/dist/dev/mp-weixin/pages_no/zuizao.js
  31. 0 0
      unpackage/dist/dev/mp-weixin/pages_shop/confirmCreateOrder.js
  32. 0 0
      unpackage/dist/dev/mp-weixin/pages_shop/confirmPackageOrder.js
  33. 0 0
      unpackage/dist/dev/mp-weixin/pages_shop/goods.js
  34. 0 0
      unpackage/dist/dev/mp-weixin/pages_shop/goods.wxml
  35. 0 0
      unpackage/dist/dev/mp-weixin/pages_shop/storeOrder.js
  36. 1 1
      unpackage/dist/dev/mp-weixin/pages_shop/storeOrderDelivery.js
  37. 1 1
      unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.wxss
  38. 1 1
      unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.js
  39. 1 1
      unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js
  40. 1 0
      unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs

+ 2 - 2
core/config/defaultConfig.js

@@ -14,10 +14,10 @@ const productionUrl = 'https://wanbei.monvkeji.cn/'
 // 测试环境
 const testUrl = 'https://wanbei.monvkeji.cn/'
 // 开发环境
-// const developUrl = 'http://192.168.10.166:7114/'//余红奇
+const developUrl = 'http://192.168.10.166:7114/'//余红奇
 // const developUrl = 'http://v56c9b8e.natappfree.cc/'//余红奇
 // const developUrl = 'http://nd383294.natappfree.cc/'//余红奇
-const developUrl = 'https://live.test.ylrztop.com/live-api/'//余红奇
+// const developUrl = 'https://live.test.ylrztop.com/live-api/'//余红奇
 // const developUrl = 'http://192.168.10.170:7114/'//陈果
 export default {
 	// 系统名称

+ 1 - 1
pages/auth/login.vue

@@ -171,7 +171,7 @@
 				});
 				loginByApp(data).then(res => {
 						uni.hideLoading();
-						console.log("qxj res:" + JSON.stringify(res));
+						// console.log("qxj res:" + JSON.stringify(res));
 						if (res.code == 200) {
 							uni.setStorageSync('AppToken', res.token);
 							uni.setStorageSync('userInfo', JSON.stringify(res.user));

+ 200 - 116
pages/home/living.vue

@@ -36,23 +36,22 @@
 						</view>
 
 						<!-- 右边的 -->
-						<view :class=" liveItem.showType==1 ? 'siderow-group' : 'side-group'">
+						<!-- <view :class=" liveItem.showType==1 ? 'siderow-group' : 'side-group'">
 							<view class="side-item">
-								<image @click="onLike(liveItem)" src="/static/images/live/like.png"></image>
+								<image class="image" @click="onLike(liveItem)" src="/static/images/live/like.png"></image>
 								<view>{{liveItem.liveViewData?.like||0}}</view>
 							</view>
-							<!-- <view class="side-item">
-								<image @click="goStore(liveItem)" src="/static/images/live/shop.png"></image>
-								<view>店铺</view>
-							</view> -->
-
 							<view class="side-item">
-								<button open-type="share">
-									<image src="/static/images/live/share.png" mode="widthFix"></image>
+								<button open-type="share" class="button">
+									<image class="image" src="/static/images/live/share.png" mode="widthFix"></image>
 								</button>
 								<view>分享</view>
 							</view>
-						</view>
+							<view class="side-item">
+								<image @click="goStore(liveItem)" src="/static/images/live/shop.png"></image>
+								<view>店铺</view>
+							</view>
+						</view> -->
 
 						<view class="shop-prompt u-flex-y-center" v-if="showPurchasePrompt&&orderUser?.count">
 							<image class="w32 h32 mr8" src="/static/images/live/shopping.png"></image>
@@ -134,7 +133,7 @@
 
 							<view class="justify-between p24">
 								<view class="u-flex-y-center"
-									style="background:rgba(157, 157, 157, 0.8);padding:10rpx 14rpx 10rpx 32rpx;width: 566rpx;box-sizing:border-box;border-radius:36rpx;">
+									style="background:rgba(57, 57, 57, 0.8);padding:10rpx 14rpx 10rpx 32rpx;width: 500rpx;box-sizing:border-box;border-radius:36rpx;">
 									<u-input :placeholder="liveItem.placeholderText" border="none"
 										customStyle='font-size:24rpx;' v-model="liveItem.value" shape='circle'
 										color='#fff' placeholderStyle='color:#e7e7e7' class="ml20">
@@ -142,6 +141,28 @@
 									<view class="send" @click="sendMsg(liveItem)">发送</view>
 								</view>
 								<view class="justify-between mr15  align-center">
+									<!-- <view class="side-item">
+										<image class="image" @click="onLike(liveItem)" src="/static/images/live/like.png"></image>
+										<view>{{liveItem.liveViewData?.like||0}}</view>
+									</view>
+									<view class="side-item">
+										<button open-type="share" class="button">
+											<image class="image" src="/static/images/live/share.png" mode="widthFix"></image>
+										</button>
+										<view>分享</view>
+									</view>
+									 -->
+									<view class="icon ml20" @click="onLike(liveItem)">
+										<image src="/static/images/live/like.png" class="w56 h56"></image>
+										<view>{{liveItem.liveViewData?.like||0}}</view>
+									</view>
+									<view class="icon ml20">
+										<button open-type="share" class="button">
+											<image src="/static/images/live/share.png" class="w56 h56"></image>
+										</button>
+										<view>分享</view>
+									</view>
+
 									<!-- <view class="icon-bg ml20" @click="openCart(liveItem)">
 										<image src="/static/images/shopping.png" class="w48 h48"></image>
 									</view> -->
@@ -154,16 +175,15 @@
 
 						<!-- 弹出商品 -->
 						<view @click="" class="goods">
-							<view class="item">
-								<view class="top">
-									<view class="">
-										<image class="w30 h30" src="/static/images/signal.png"></image>讲解中
-									</view>
-									<image class="w30 h30" src="/static/images/close.png"></image>
+							<view class="top">
+								<view class="left">
+									<image class="w30 h30" src="/static/images/signal.png"></image>讲解中
 								</view>
-								<image class="w100 h100" style="width: 70rpx;height: 70rpx;"
-									src="@/static/images/hongbao.png" mode="widthFix"></image>
-								<view class="price"><text class="red">23</text><text class="">26</text></view>
+								<image class="w30 h30" src="/static/images/close.png"></image>
+							</view>
+							<image class="photo" src="@/static/images/a.jpg"></image>
+							<view class="item">
+								<view class="price"><text class="red">23.55</text><text class="del">26.66</text></view>
 								<view class="title">新鲜土鸡蛋</view>
 								<view class="button">立即抢购</view>
 							</view>
@@ -303,9 +323,9 @@
 		submitAnswer
 	} from '@/api/home'
 
-	// var wsUrl = "ws://192.168.10.166:7114/app/webSocket"; //余红奇
+	var wsUrl = "ws://192.168.10.166:7114/app/webSocket"; //余红奇
 	// var wsUrl = "ws://192.168.10.125:7114/app/webSocket"; //涂小龙
-	var wsUrl = "wss://live.test.ylrztop.com/ws/live-api/app/webSocket"; //余红奇
+	// var wsUrl = "wss://live.test.ylrztop.com/ws/live-api/app/webSocket"; //余红奇
 	// var wsUrl = "ws://live.test.ylrztop.com/prod-api/app/webSocket"; //余红奇
 	// var wsUrl = "ws://nd383294.natappfree.cc/app/webSocket"; //余红奇
 	// var wsUrl = "ws://v56c9b8e.natappfree.cc/app/webSocket"; //余红奇
@@ -319,6 +339,9 @@
 	export default {
 		data() {
 			return {
+				lastClickTime: 0,
+				clickDelay: 300, // 300ms内只响应一次点击
+
 				connectingLiveId: null, // 记录正在连接的直播间ID
 				swiperDuration: 0, // 初始化为0,首次加载无动画
 				videoRetryCounts: {}, // 记录每个直播间的视频重试次数,格式: { liveId: 次数 }
@@ -429,7 +452,7 @@
 					console.warn('当前平台不支持 uni.showShareMenu');
 				}
 			} else {
-				console.log('当前平台无需显示分享菜单');
+				// console.log('当前平台无需显示分享菜单');
 			}
 		},
 		onReady() {},
@@ -501,6 +524,13 @@
 			}
 		},
 		methods: {
+			toggleViewerList() {
+				const now = Date.now()
+				if (now - this.lastClickTime > this.clickDelay) {
+					this.showadd = !this.showadd
+					this.lastClickTime = now
+				}
+			},
 			// 重置在线用户列表的分页参数
 			resetUserListParams() {
 				this.viewPageNum = 1; // 重置页码为第一页
@@ -632,7 +662,7 @@
 						await this.initCurrentLiveData();
 
 						// 获取在线用户
-						this.getliveUser(true);
+						this.getliveUser(false);
 
 						// 延迟播放视频
 						setTimeout(() => {
@@ -840,8 +870,7 @@
 							return;
 						}
 
-						this.liveViewers = isLoadMore ? [...this.liveViewers, ...res.rows] :
-							res.rows; // 首次加载/切换直播间时重置数据
+						this.liveViewers = isLoadMore ? [...this.liveViewers, ...res.rows] :res.rows; // 首次加载/切换直播间时重置数据
 						this.viewPageNum++;
 						// console.log("在线观众", this.liveViewers)
 					}
@@ -1030,8 +1059,6 @@
 					} else if (res.data.liveType === 1) {
 						// 直播流
 						this.$set(liveItem, 'livingUrl', res.data.flvHlsUrl);
-						console.log("排查中1》》", res.data.flvHlsUrl)
-						console.log("排查中2》》", liveItem.livingUrl)
 						this.$set(liveItem, 'videoUrl', ''); // 清空回放视频
 						this.$set(liveItem, 'placeholderText', "说点什么...");
 					} else {
@@ -1211,8 +1238,6 @@
 					if (res.code == 200) {
 						// 强制响应式更新,确保数据实时显示
 						this.$set(liveItem, 'liveViewData', res);
-						// 打印日志确认数据已加载
-						console.log(`直播间 ${liveItem.liveId} 数据加载完成:`, res);
 					}
 				} catch (error) {
 					console.error("获取直播间数据失败:", error);
@@ -1325,33 +1350,6 @@
 				const now = new Date();
 				this.timestamp = now.getTime(); // 例如:'2023-04-01 12:00:00'
 			},
-			// initWebSocket() {
-			//       const liveWS = new LiveWS('ws://your-server.com', 123, 456);
-
-			//       // 从 URL 中解析 timestamp
-			//       const urlParams = new URL(liveWS.url).searchParams;
-			//       this.timestamp = urlParams.get('timestamp');
-			//       // console.log('Timestamp:', timestamp);
-			//     },
-
-			// 弹幕滚动
-			lowerChat: function(e) {
-				console.log(e)
-			},
-			scroll: function(e) {
-				console.log(e)
-				this.old.scrollTop = e.detail.scrollTop
-			},
-
-
-			loadmore() {
-				// for (let i = 0; i < 30; i++) {
-				//   this.indexList.push({
-				//     url: this.shopList[uni.$u.random(0, this.shopList.length - 1)],
-				//   });
-				// }
-			},
-
 			openShop() {
 
 			},
@@ -1365,37 +1363,27 @@
 					}).exec();
 				});
 			},
-			openCart(liveItem) {
-				if (!liveItem.storeId) {
-					uni.showToast({
-						title: "当前直播间暂未开通店铺",
-						icon: 'none'
-					});
-					return;
-				}
-				liveItem.shopping = !liveItem.shopping
-			},
+			// openCart(liveItem) {
+			// 	if (!liveItem.storeId) {
+			// 		uni.showToast({
+			// 			title: "当前直播间暂未开通店铺",
+			// 			icon: 'none'
+			// 		});
+			// 		return;
+			// 	}
+			// 	liveItem.shopping = !liveItem.shopping
+			// },
 			close() {
-				this.showadd = !this.showadd
+				this.showadd = false
 			},
 			closes() {
 				this.showziliao = !this.showziliao
 			},
-			closest() {
-				this.showAnswer = !this.showAnswer
-			},
-			closestred() {
-				this.showAnswerred = !this.showAnswerred
-			},
-			closeanswer() {
-				this.answerbtn = !this.answerbtn
-			},
 			// 关闭小黄车
 			closeShop() {
 				// 通过当前swiper索引获取当前直播间实例
 				const currentLive = this.list[this.currentSwiperIndex];
 				if (currentLive) {
-					// 使用响应式更新修改shopping属性
 					this.$set(currentLive, 'shopping', !currentLive.shopping);
 				}
 			},
@@ -1614,38 +1602,50 @@
 					} else if (socketMessage.cmd == 'sendRedPacketQuestion') {
 						const list = JSON.parse(message.data.data);
 						// 处理红包答题逻辑
-					} else if (socketMessage.cmd == 'entry') {
-						// console.log("进入:", liveItem);
-						console.log("在线人数进入:");
+					} else if (socketMessage.cmd == 'entry' || socketMessage.cmd == 'out') {
+
 						this.$set(liveItem, 'talklist', [...liveItem.talklist, messageData]);
 						// 先重置为 false(避免残留状态)
 						this.$set(liveItem, 'showWelcomeMessage', false);
 						// 立即设为 true(触发 DOM 更新)
 						this.$set(liveItem, 'showWelcomeMessage', true);
 						this.getliveUser(false); // 调用获取在线用户接口
-						console.log("开启欢迎消息:", liveItem.showWelcomeMessage);
+						// console.log("开启欢迎消息:", liveItem.showWelcomeMessage);
 						if (liveItem.welcomeTimer) {
 							clearTimeout(liveItem.welcomeTimer);
 						}
 						// 存储定时器到 liveItem 中(避免引用丢失)
 						liveItem.welcomeTimer = setTimeout(() => {
 							this.$set(liveItem, 'showWelcomeMessage', false);
-							console.log("关闭欢迎消息:", liveItem.showWelcomeMessage);
+							// console.log("关闭欢迎消息:", liveItem.showWelcomeMessage);
 						}, 1000); // 1秒后隐藏
-					} else if (socketMessage.cmd == 'live_start') {
-						// 直播开始
-					} else if (socketMessage.cmd == 'live_end') {
-						// 直播结束
-					} else if (socketMessage.data.cmd == 'deleteId') {
-						uni.$emit('deleteId');
-					} else if (socketMessage.data.cmd == 'sendRedPacketQuestion') {
-						// const list = JSON.parse(socketMessage)
-						// liveItem.redanswerAll = [...liveItem.redanswerAll, ...list]
-						// if (liveItem.redanswerAll[1].randomAmount !== null) {
-						// 	liveItem.redanswertips = JSON.parse(liveItem.redanswerAll[0]
-						// 		.randomAmount)
-						// }
+					} else if (socketMessage.cmd == 'Integral') {
+						uni.showToast({
+							title: socketMessage.msg,
+							icon: 'none',
+							duration: 20000
+						});
+						// 观看奖励事件 弹出框2s 显示msg
+					} else if (socketMessage.cmd == 'blockUser') {
+						//拉黑事件 主动删除用户token,强制跳转到登录页面
+						uni.removeStorage({
+							key: 'AppToken', // 存储 Token 时的 key
+							success: () => {
+								uni.reLaunch({
+									url: '/pages/auth/login' // 登录页路径,需根据项目实际路径调整
+								});
+								console.log('Token 删除成功');
+							},
+							fail: (err) => {
+								console.error('Token 删除失败:', err);
+							}
+						});
 					}
+					// else if (socketMessage.data.cmd == 'deleteId') {
+
+					// } else if (socketMessage.data.cmd =='sendRedPacketQuestion') {
+
+					// }
 				} else {
 					uni.showToast({
 						title: data.msg,
@@ -1724,7 +1724,6 @@
 					socketItem.instance.send({
 						data: JSON.stringify(data),
 						success: () => {
-							// 成功后可以移除 local 标记(可选)
 							// 比如找到最后一条 local 消息并标记为 sent
 						},
 						fail: (err) => {
@@ -1861,10 +1860,11 @@
 	}
 
 	.send {
-		background-color: #4b4b4b;
+		background-color: #fafafa;
 		border-radius: 28rpx;
 		padding: 14rpx 16rpx;
-		color: #fff;
+		color: #181818;
+		font-weight: 500;
 	}
 
 	// .container {
@@ -1996,32 +1996,116 @@
 
 	.goods {
 		position: fixed;
-		bottom: 120rpx;
-		right: 0rpx;
+		bottom: 160rpx;
+		right: 10rpx;
 		z-index: 5;
 		background-color: #fff;
 		border-radius: 20rpx;
 		overflow: hidden;
-		width: 200rpx;
-		height: 350rpx;
+		width: 220rpx;
+		padding: 4rpx;
+
+		.top {
+			position: absolute;
+			top: 4rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			color: #fff;
+			width: 100%;
+			padding-right: 10rpx;
+			box-sizing: border-box;
+
+			.left {
+				background-color: rgba(0, 0, 0, 0.8);
+				padding: 10rpx;
+				font-size: 20rpx;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				border-radius: 10rpx;
+			}
+		}
+
+		.photo {
+			width: 100%;
+			height: 200rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			overflow: hidden;
+		}
+
+		.item {
+			padding: 4rpx;
+
+			.price {
+				.red {
+					color: #FF5701;
+					font-weight: 600;
+					margin-right: 10rpx;
+				}
+
+				.del {
+					color: #828282;
+					font-weight: 500;
+					font-size: 24rpx;
+					text-decoration: line-through
+				}
+			}
+
+			.title {
+				font-weight: 500;
+				font-size: 26rpx;
+				margin: 10rpx 0 12rpx;
+			}
+
+			.button {
+				background: linear-gradient(270deg, #ff4702 0%, #fe6304 100%);
+				color: #fff;
+				text-align: center;
+				padding: 16rpx 0;
+				border-radius: 10rpx;
+				font-weight: 500;
+			}
+
+		}
 
-		.top {}
 	}
 
 
 
 
+	.icon {
+		font-weight: 500;
+		font-size: 24rpx;
+		color: #FFFFFF;
+		text-align: center;
+		margin-bottom: -10rpx;
 
-	// .icon-bg {
-	// 	background-color: rgba(157, 157, 157, 0.8);
-	// 	border-radius: 50%;
-	// 	width: 72rpx;
-	// 	height: 72rpx;
-	// 	display: flex;
-	// 	justify-content: center;
-	// 	align-items: center;
-	// 	transition: transform 0.2s ease;
-	// }
+		.button {
+			background-color: transparent;
+			margin: 0;
+			line-height: 1;
+			padding: 0;
+		}
+	}
+
+	.icon-bg {
+		background-color: rgba(157, 157, 157, 0.8);
+		border-radius: 50%;
+		width: 72rpx;
+		height: 72rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		transition: transform 0.2s ease;
+
+		.button {
+			background-color: transparent;
+			margin: 0;
+			line-height: 1;
+			padding: 0;
+		}
+	}
 
 	.list {
 		width: 80%;
@@ -2071,14 +2155,14 @@
 			margin-bottom: 32rpx;
 			text-align: center;
 
-			button {
+			.button {
 				background-color: transparent;
 				margin: 0;
 				line-height: 1;
 				padding: 0;
 			}
 
-			image {
+			.image {
 				width: 72rpx;
 				height: 72rpx;
 			}

+ 2 - 5
pages/list/index.vue

@@ -29,6 +29,7 @@
 				list: [],
 				liveId: null, // mescroll配置
 				downOption: {
+					offset: 80, 
 					use: true,
 					auto: false // 是否在初始化后自动执行下拉回调
 				},
@@ -38,12 +39,8 @@
 					page: {
 						num: 0, // 当前页码
 						size: 10 // 每页数据条数
-					},
-					noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据
-					empty: {
-						icon: '/static/images/empty.png', // 可配置空状态图片
-						tip: '暂无订单数据' // 空状态提示文字
 					}
+					
 				},
 				mescroll: null // mescroll实例
 			}

+ 0 - 0
pages/home/living - 副本.vue → pages_no/living - 副本.vue


+ 5 - 5
pages_shop/goods.vue

@@ -161,10 +161,10 @@
 		<!-- 底部按钮 -->
 		<view class="btn-foot">
 			<view class="menu-box">
-				<view class="item" @click="navgetTo('/pages_shop/store?liveId='+liveId+ '&storeId=' +storeId)">
+				<!-- <view class="item" @click="navgetTo('/pages_shop/store?liveId='+liveId+ '&storeId=' +storeId)">
 					<image src="/static/images/googs1.png" mode=""></image>
 					<text class="label">店铺</text>
-				</view>
+				</view> -->
 					<view class="item"  @click="navgetTo('./storeOrderRefundList')" style="position: relative;">
 					<image src="/static/images/googs2.png" mode=""></image>
 					<text class="label">售后</text>
@@ -174,15 +174,15 @@
 					<text class="label">咨询</text>
 					<button class="contact-btn" open-type="contact"></button>
 				</view> -->
-				<view class="item" @click="navgetTo('./cart')">
+				<!-- <view class="item" @click="navgetTo('./cart')">
 					<uni-badge size="small" :text="cartCount" absolute="rightTop" type="error">
 						<image src="/static/images/googs3.png" mode=""></image>
 					</uni-badge>
 					<text class="label">购物车</text>
-				</view>
+				</view> -->
 			</view>
 			<view class="btn-box">
-				<view class="btn cart" @click="addCart('cart')">加入购物车</view>
+				<!-- <view class="btn cart" @click="addCart('cart')">加入购物车</view> -->
 				<view class="btn buy" @click="addCart('buy')">{{buyText}}</view>
 			</view>
 		</view>

+ 8 - 0
uni_modules/mescroll-uni/changelog.md

@@ -0,0 +1,8 @@
+## 1.3.8(2023-03-27)
+1. 新增useMescroll的hook, 支持vue3 script setup的写法  
+2. 新增vue3 script setup的示例 ( 根据vue2的示例,全部重写了一遍 )  
+3. mescroll-body 和 mescroll-uni 无需再写 ref="mescrollRef"  
+4. 解决mescroll-uni在页面渲染之后,无法动态设置height的问题  
+5. 解决renderjs在h5返回有时候无法正常滑动的问题  
+6. 修复小程序编辑器提示 Cannot read property 'nv_optDown' of undefined 的错误  
+-by 小瑾同学

+ 1 - 1
uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue

@@ -106,7 +106,7 @@
 	 * @event {Function} emptyclick 点击empty配置的btnText按钮回调
 	 * @event {Function} topclick 点击回到顶部的按钮回调
 	 * @event {Function} scroll 滚动监听 (需在 up 配置 onScroll:true 才生效)
-	 * @example <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"> ... </mescroll-body>
+	 * @example <mescroll-body @init="mescrollInit" @down="downCallback" @up="upCallback"> ... </mescroll-body>
 	 */
 	export default {
 		name: 'mescroll-body',

+ 3 - 3
uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue

@@ -89,13 +89,13 @@ export default {
 }
 
 .mescroll-empty .empty-icon {
-	width: 372rpx;
-	height: 240rpx;
+	width: 280rpx;
+	height: 280rpx;
 }
 
 .mescroll-empty .empty-tip {
 	margin-top: 20rpx;
-	font-size: 32rpx;
+	font-size: 24rpx;
 	color: gray;
 }
 

+ 29 - 13
uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue

@@ -1,11 +1,11 @@
 <!-- 回到顶部的按钮 -->
 <template>
 	<image
-		v-if="mOption.src"
+		v-if="option.src"
 		class="mescroll-totop"
-		:class="[value ? 'mescroll-totop-in' : 'mescroll-totop-out', {'mescroll-totop-safearea': mOption.safearea}]"
-		:style="{'z-index':mOption.zIndex, 'left': left, 'right': right, 'bottom':addUnit(mOption.bottom), 'width':addUnit(mOption.width), 'border-radius':addUnit(mOption.radius)}"
-		:src="mOption.src"
+		:class="[isShow ? 'mescroll-totop-in' : 'mescroll-totop-out', {'mescroll-totop-safearea': option.safearea}]"
+		:style="{'z-index':option.zIndex, 'left': left, 'right': right, 'bottom':addUnit(option.bottom), 'width':addUnit(option.width), 'border-radius':addUnit(option.radius)}"
+		:src="option.src"
 		mode="widthFix"
 		@click="toTopClick"
 	/>
@@ -15,22 +15,33 @@
 export default {
 	props: {
 		// up.toTop的配置项
-		option: Object,
+		option: {
+			type: Object,
+			default(){
+				return {}
+			}
+		},
 		// 是否显示
-		value: false
+		value: false, // vue2
+		modelValue: false // vue3
 	},
 	computed: {
-		// 支付宝小程序需写成计算属性,prop定义default仍报错
-		mOption(){
-			return this.option || {}
-		},
 		// 优先显示左边
 		left(){
-			return this.mOption.left ? this.addUnit(this.mOption.left) : 'auto';
+			return this.option.left ? this.addUnit(this.option.left) : 'auto';
 		},
 		// 右边距离 (优先显示左边)
 		right() {
-			return this.mOption.left ? 'auto' : this.addUnit(this.mOption.right);
+			return this.option.left ? 'auto' : this.addUnit(this.option.right);
+		},
+		// 是否显示
+		isShow(){
+			// #ifdef VUE3
+			return this.modelValue
+			// #endif
+			// #ifdef VUE2
+			return this.value
+			// #endif
 		}
 	},
 	methods: {
@@ -40,7 +51,12 @@ export default {
 			return num
 		},
 		toTopClick() {
-			this.$emit('input', false); // 使v-model生效
+			// #ifdef VUE3
+			this.$emit("update:modelValue", false); // 使v-model生效 vue3
+			// #endif
+			// #ifdef VUE2
+			this.$emit('input', false); // 使v-model生效 vue2
+			// #endif
 			this.$emit('click'); // 派发点击事件
 		}
 	}

+ 0 - 11
uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js

@@ -21,14 +21,6 @@ const MescrollMixin = {
 		// mescroll组件初始化的回调,可获取到mescroll对象
 		mescrollInit(mescroll) {
 			this.mescroll = mescroll;
-			this.mescrollInitByRef(); // 兼容字节跳动小程序
-		},
-		// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)
-		mescrollInitByRef() {
-			if(!this.mescroll || !this.mescroll.resetUpScroll){
-				let mescrollRef = this.$refs.mescrollRef;
-				if(mescrollRef) this.mescroll = mescrollRef.mescroll
-			}
 		},
 		// 下拉刷新的回调 (mixin默认resetUpScroll)
 		downCallback() {
@@ -47,9 +39,6 @@ const MescrollMixin = {
 				this.mescroll.endErr();
 			}, 500)
 		}
-	},
-	mounted() {
-		this.mescrollInitByRef(); // 兼容字节跳动小程序, 避免未设置@init或@init此时未能取到ref的情况
 	}
 	
 }

+ 9 - 6
uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue

@@ -106,7 +106,7 @@
 	 * @event {Function} emptyclick 点击empty配置的btnText按钮回调
 	 * @event {Function} topclick 点击回到顶部的按钮回调
 	 * @event {Function} scroll 滚动监听 (需在 up 配置 onScroll:true 才生效)
-	 * @example <mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"> ... </mescroll-uni>
+	 * @example <mescroll-uni @init="mescrollInit" @down="downCallback" @up="upCallback"> ... </mescroll-uni>
 	 */
 	export default {
 		name: 'mescroll-uni',
@@ -151,6 +151,12 @@
 				statusBarHeight: 0 // 状态栏高度
 			}
 		},
+		watch: {
+			height() {
+				// 设置容器的高度
+				this.setClientHeight()
+			}
+		},
 		computed: {
 			// 是否使用fixed定位 (当height有值,则不使用)
 			isFixed(){
@@ -259,7 +265,7 @@
 			},
 			// 更新滚动区域的高度 (使内容不满屏和到底,都可继续翻页)
 			setClientHeight() {
-				if (this.mescroll.getClientHeight(true) === 0 && !this.isExec) {
+				if (!this.isExec) {
 					this.isExec = true; // 避免多次获取
 					this.$nextTick(() => { // 确保dom已渲染
 						this.getClientInfo(data=>{
@@ -278,10 +284,7 @@
 			},
 			// 获取滚动区域的信息
 			getClientInfo(success){
-				let query = uni.createSelectorQuery();
-				// #ifndef MP-ALIPAY || MP-DINGTALK
-				query = query.in(this) // 支付宝小程序不支持in(this),而字节跳动小程序必须写in(this), 否则都取不到值
-				// #endif
+				let query = uni.createSelectorQuery().in(this);
 				let view = query.select('#' + this.viewId);
 				view.boundingClientRect(data => {
 					success(data)

+ 0 - 9
uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js

@@ -32,18 +32,9 @@ const MescrollMoreItemMixin = {
 		}
 	},
 	methods: {
-		// 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)
-		mescrollInitByRef() {
-			if(!this.mescroll || !this.mescroll.resetUpScroll){
-				// 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标'
-				let mescrollRef = this.$refs.mescrollRef || this.$refs['mescrollRef'+this.i];
-				if(mescrollRef) this.mescroll = mescrollRef.mescroll
-			}
-		},
 		// mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit)
 		mescrollInit(mescroll) {
 			this.mescroll = mescroll;
-			this.mescrollInitByRef && this.mescrollInitByRef(); // 兼容字节跳动小程序
 			// 自动加载当前tab的数据
 			if(this.i === this.index){
 				this.mescrollTrigger()

+ 5 - 2
uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js

@@ -62,9 +62,12 @@ const MescrollMoreMixin = {
 		tabChange(i){
 			let mescroll = this.getMescroll(i);
 			if(mescroll){
-				// 延时(比$nextTick靠谱一些),确保元素已渲染
+				// 恢复上次滚动条的位置
+				let y = mescroll.getScrollTop()
+				mescroll.scrollTo(y, 0)
+				// 再次恢复上次滚动条的位置, 确保元素已渲染
 				setTimeout(()=>{
-					mescroll.scrollTo(mescroll.getScrollTop(),0)
+					mescroll.scrollTo(y, 0)
 				},30)
 			}
 		}

+ 1 - 1
uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js

@@ -47,7 +47,7 @@ if(window && !window.$mescrollRenderInit){
 
 /* 获取滚动条的位置 */
 me.getScrollTop = function() {
-	return me.scrollTop || 0
+	return me.scrollTop || document.documentElement.scrollTop || document.body.scrollTop || 0
 }
 
 /* 是否禁用下拉刷新 */

+ 1 - 0
uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs

@@ -63,6 +63,7 @@ me.clearTransform = function (ins){
  * 监听逻辑层数据的变化 (实时更新数据)
  */
 function propObserver(wxsProp) {
+	if(!wxsProp) return
 	me.optDown = wxsProp.optDown
 	me.scrollTop = wxsProp.scrollTop
 	me.bodyHeight = wxsProp.bodyHeight

+ 66 - 0
uni_modules/mescroll-uni/hooks/useMescroll.js

@@ -0,0 +1,66 @@
+// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173
+// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app';
+
+/** 
+ * 初始化mescroll, 相当于vue2的mescroll-mixins.js文件 (mescroll-body 和 mescroll-uni 通用) 
+ * mescroll-body需传入onPageScroll, onReachBottom
+ * mescroll-uni无需传onPageScroll, onReachBottom
+ * 当down.native为true时,需传入onPullDownRefresh
+ */ 
+function useMescroll(onPageScroll, onReachBottom, onPullDownRefresh){
+	// mescroll实例对象
+	let mescroll = null;
+	
+	// mescroll组件初始化的回调,可获取到mescroll对象
+	const mescrollInit = (e)=> {
+		mescroll = e;
+	}
+	
+	// 获取mescroll对象, mescrollInit执行之后会有值, 生命周期created中会有值
+	const getMescroll = ()=>{
+		return mescroll
+	}
+	
+	// 下拉刷新的回调 (mixin默认resetUpScroll)
+	const downCallback = ()=> {
+		if(mescroll.optUp.use){
+			mescroll.resetUpScroll()
+		}else{
+			setTimeout(()=>{
+				mescroll.endSuccess();
+			}, 500)
+		}
+	}
+	
+	// 上拉加载的回调
+	const upCallback = ()=> {
+		// mixin默认延时500自动结束加载
+		setTimeout(()=>{
+			mescroll.endErr();
+		}, 500)
+	}
+	
+	// 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+	onPullDownRefresh && onPullDownRefresh(() => {
+	  mescroll && mescroll.onPullDownRefresh();
+	})
+	
+	// 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
+	onPageScroll && onPageScroll(e=>{
+		mescroll && mescroll.onPageScroll(e);
+	})
+	
+	// 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
+	onReachBottom && onReachBottom(()=>{
+		mescroll && mescroll.onReachBottom();
+	}) 
+	
+	return {
+		getMescroll,
+		mescrollInit,
+		downCallback,
+		upCallback
+	}
+}
+
+export default useMescroll

+ 56 - 0
uni_modules/mescroll-uni/hooks/useMescrollComp.js

@@ -0,0 +1,56 @@
+import { ref } from 'vue';
+
+// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173
+// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app';
+
+/** 
+ * mescroll-body写在子组件时,需通过useMescrollComp补充子组件缺少的生命周期, 相当于vue2的mescroll-comp.js文件
+ * 必须传入onPageScroll, onReachBottom
+ * 当down.native为true时,需传入onPullDownRefresh
+ */ 
+function useMescrollComp(onPageScroll, onReachBottom, onPullDownRefresh){
+	// 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件
+	onPageScroll(e=>{
+		handlePageScroll(e)
+	})
+	
+	onReachBottom(()=>{
+		handleReachBottom()
+	})
+	
+	// 当down的native: true时, 还需传递此方法进到子组件
+	onPullDownRefresh && onPullDownRefresh(()=>{
+		handlePullDownRefresh()
+	})
+	
+	const mescrollItem = ref(null)
+	
+	const handlePageScroll = (e)=>{
+		const mescroll = getMescroll()
+		mescroll && mescroll.onPageScroll(e);
+	}
+	
+	const handleReachBottom = ()=>{
+		const mescroll = getMescroll()
+		mescroll && mescroll.onReachBottom();
+	}
+	
+	const handlePullDownRefresh = ()=>{
+		const mescroll = getMescroll()
+		mescroll && mescroll.onPullDownRefresh();
+	}
+	
+	const getMescroll = ()=>{
+		if(mescrollItem.value && mescrollItem.value.getMescroll){
+			return mescrollItem.value.getMescroll()
+		}
+		return null
+	}
+	
+	return {
+		mescrollItem,
+		getMescroll
+	}
+}
+
+export default useMescrollComp

+ 69 - 0
uni_modules/mescroll-uni/hooks/useMescrollMore.js

@@ -0,0 +1,69 @@
+import { ref  } from 'vue';
+
+// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173
+// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app';
+
+/** mescroll-more示例写在子组件时,需通过useMescrollMore补充子组件缺少的生命周期, 相当于vue2的mescroll-more.js文件 */ 
+function useMescrollMore(mescrollItems, onPageScroll, onReachBottom, onPullDownRefresh){
+	// 当前tab下标
+	const tabIndex = ref(0) 
+	
+	// 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件
+	onPageScroll && onPageScroll(e=>{
+		handlePageScroll(e)
+	})
+	
+	onReachBottom && onReachBottom(()=>{
+		handleReachBottom()
+	})
+	
+	// 当down的native: true时, 还需传递此方法进到子组件
+	onPullDownRefresh && onPullDownRefresh(()=>{
+		handlePullDownRefresh()
+	})
+	
+	const handlePageScroll = (e)=>{
+		let mescroll = getMescroll(tabIndex.value);
+		mescroll && mescroll.onPageScroll(e);
+	}
+	const handleReachBottom = ()=>{
+		let mescroll = getMescroll(tabIndex.value);
+		mescroll && mescroll.onReachBottom();
+	}
+		
+	const handlePullDownRefresh = ()=>{
+		let mescroll = getMescroll(tabIndex.value);
+		mescroll && mescroll.onPullDownRefresh();
+	}
+	
+	// 根据下标获取对应子组件的mescroll
+	const getMescroll = (i)=>{
+		if (mescrollItems && mescrollItems[i]) {
+			return mescrollItems[i].value.getMescroll()
+		} else{
+			return null
+		}
+	}
+	
+	// 切换tab,恢复滚动条位置
+	const scrollToLastY = ()=>{
+		let mescroll = getMescroll(tabIndex.value);
+		if(mescroll){
+			// 恢复上次滚动条的位置
+			let y = mescroll.getScrollTop()
+			mescroll.scrollTo(y, 0)
+			// 再次恢复上次滚动条的位置, 确保元素已渲染
+			setTimeout(()=>{
+				mescroll.scrollTo(y, 0)
+			},20)
+		}
+	}
+	
+	return {
+		tabIndex,
+		getMescroll,
+		scrollToLastY
+	}
+}
+
+export default useMescrollMore

+ 11 - 15
uni_modules/mescroll-uni/package.json

@@ -1,24 +1,19 @@
 {
   "id": "mescroll-uni",
-  "displayName": "【wxs+renderjs实现】高性能下拉刷新上拉加载组件",
-  "version": "1.3.7",
-  "description": "支持uni-app的下拉刷新和上拉加载的组件,支持原生页面和局部区域滚动,支持国际化",
+  "displayName": "高性能下拉刷新上拉加载组件 支持vue3 setup",
+  "version": "1.3.8",
+  "description": "【mescroll】wxs+renderjs实现, 支持原生页面和局部区域滚动, 支持vue3 script setup的写法",
   "keywords": [
-    "mescroll",
     "下拉刷新",
     "上拉加载",
-    "翻页",
-    "分页"
+    "翻页分页",
+    "wxs",
+    "setup"
 ],
   "repository": "https://github.com/mescroll/mescroll",
-  "engines": {
-    "HBuilderX": "^3.1.0"
+"engines": {
   },
-  "dcloudext": {
-    "category": [
-        "前端组件",
-        "通用组件"
-    ],
+"dcloudext": {
     "sale": {
       "regular": {
         "price": "0.00"
@@ -35,7 +30,8 @@
       "data": "无",
       "permissions": "无"
     },
-    "npmurl": "https://www.npmjs.com/package/mescroll-uni"
+    "npmurl": "https://www.npmjs.com/package/mescroll-uni",
+    "type": "component-vue"
   },
   "uni_modules": {
     "dependencies": [],
@@ -48,7 +44,7 @@
       "client": {
         "App": {
           "app-vue": "y",
-          "app-nvue": "n"
+          "app-nvue": "y"
         },
         "H5-mobile": {
           "Safari": "y",

+ 45 - 0
uni_modules/mescroll-uni/readme.md

@@ -0,0 +1,45 @@
+## mescroll --【wxs+renderjs实现】高性能的下拉刷新上拉加载组件
+1. mescroll的uni版本 是专门用在uni-app的下拉刷新和上拉加载的组件  
+
+2. mescroll的uni版本 继承了mescroll.js的实用功能: 自动处理分页, 自动控制无数据, 空布局提示, 回到顶部按钮 ..
+
+3. mescroll的uni版本 丰富的案例, 自由灵活的api, 超详细的注释, 可让您快速自定义真正属于自己的下拉上拉组件
+
+<br/>
+
+
+## 最新文档(1.3.8版本): <a href="https://www.mescroll.com/uni.html">https://www.mescroll.com/uni.html</a>
+2023-03-26 by 小瑾同学 (文档可能会有缓存,建议打开时刷新一下)
+
+
+## 1.3.5版本已调整为[uni_modules](https://uniapp.dcloud.io/uni_modules)
+uni_modules版本的mescroll-body 和 mescroll-empty 支持 [easycom规范](https://uniapp.dcloud.io/collocation/pages?id=easycom)  
+所以 main.js 无需再为mescroll-body注册全局组件  
+所以个别页面要单独使用 mescroll-empty , 也无需手动注册
+#### 1.3.5以前的用户升级为uni_modules版本:
+```
+1. 删除原来的 @/components/mescroll-uni 组件
+2. 删除 main.js 注册的 mescroll 组件
+3. 从插件市场导入最新mescroll组件 (1.3.5+uni_modules版本)
+4. 全局搜索 '@/components/mescroll-uni/' 替换为 '@/uni_modules/mescroll-uni/components/mescroll-uni/'
+5. mescroll-empty遵循easycom规范, 若某些页面单独使用 'mescroll-empty.vue', 可删除手动导入的代码
+```
+
+## 近期已更新优化的内容:
+1. 新增vue3 script setup的示例  
+2. 新增`入门极简`示例, 国际化`mescroll-i18n.vue`示例, 轮播吸顶菜单`mescroll-swiper-sticky.vue`示例  
+3. 新增 "局部区域滚动" 的案例: mescroll-body-part.vue 和 mescroll-uni-part.vue  
+4. 新增 me-video 视频组件, 解决APP端视频下拉悬浮错位的问题, 参考 mescroll-options.vue 示例  
+5. 新增 me-tabs 组件,tabs支持水平滑动; 优化mescroll-more和mescroll-swiper的案例, 顶部tab支持水平滑动  
+6. 吸顶悬浮提供了原生sticky和监听滚动条实现的示例: sticky.vue 和 sticky-scroll.vue (推荐使用sticky样式实现)  
+7. mescroll.scrollTo(y)的y支持css选择器, 包括跨自定义组件的后代选择器, 支持滚动到子组件的view (参考 mescroll-options.vue)  
+8. topbar 顶部是否预留状态栏的高度, 默认false; 还可支持设置状态栏背景: 如 '#ffff00', 'url(xxx) 0 0/100% 100%', 'linear-gradient(xx)'  
+9. down.bgColor 和 up.bgColor 加载区域的背景,不仅支持色值, 而且还是支持背景图和渐变: 如 'url(xxx) 0 0/100% 100%', 'linear-gradient(xx)'  
+10. topbar,bgColor支持一行代码定义background: [https://www.runoob.com/cssref/css3-pr-background.html](https://www.runoob.com/cssref/css3-pr-background.html)
+<br/>
+<br/>
+<a href="https://ext.dcloud.net.cn/plugin?id=343&update_log">查看更多 ... </a>
+
+<br/>
+
+#### mescroll不支持nvue,也暂无支持的计划哈,so sorry~

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/common/assets.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/core/config/defaultConfig.js

@@ -1 +1 @@
-"use strict";const t="https://live.test.ylrztop.com/live-api/",e={name:"签约",apiUrl:t};exports.defaultConfig=e;
+"use strict";const t="http://192.168.10.166:7114/",e={name:"签约",apiUrl:t};exports.defaultConfig=e;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/auth/login.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/home/living.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/home/living.wxml


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/home/living.wxss


+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/list/index.js

@@ -1 +1 @@
-"use strict";const o=require("../../common/vendor.js"),a=require("../../api/list.js"),d=require("../../uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js"),m={mixins:[d.MescrollMixin],data(){return{list:[],liveId:null,downOption:{use:!0,auto:!1},upOption:{use:!0,auto:!0,page:{num:0,size:10},noMoreSize:5,empty:{icon:"/static/images/empty.png",tip:"暂无订单数据"}},mescroll:null}},methods:{goLive(e){this.liveId=e.liveId,console.log("要传的liveId",this.liveId),o.index.navigateTo({url:`/pages/home/living?liveId=${e.liveId}&immediate=true`})},mescrollInit(e){this.mescroll=e},downCallback(e){this.list=[],e.resetUpScroll()},upCallback(e){const n=e.num;let c={pageSize:e.size,page:n};a.liveList(c).then(l=>{if(l.code==200){let t=l.rows||[],i=t.length,s=l.total||0;n===1&&(this.list=[]),this.list=this.list.concat(t),e.endBySize(i,s)}else e.endErr(),o.index.showToast({title:l.msg,icon:"none"})}).catch(l=>{e.endErr(),console.log("请求异常:"+JSON.stringify(l))})}}};Array||o.resolveComponent("mescroll-body")();const u=()=>"../../uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.js";Math||u();function p(e,n,r,c,l,t){return{a:o.f(l.list,(i,s,g)=>({a:i.liveImgUrl,b:o.t(i.liveName),c:o.o(v=>t.goLive(i),s),d:s})),b:o.sr("mescrollRef","7bd28468-0"),c:o.o(t.mescrollInit),d:o.o(t.downCallback),e:o.o(t.upCallback),f:o.p({bottom:"0",down:l.downOption,up:l.upOption})}}const _=o._export_sfc(m,[["render",p],["__scopeId","data-v-7bd28468"]]);wx.createPage(_);
+"use strict";const o=require("../../common/vendor.js"),a=require("../../api/list.js"),d=require("../../uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js"),u={mixins:[d.MescrollMixin],data(){return{list:[],liveId:null,downOption:{offset:80,use:!0,auto:!1},upOption:{use:!0,auto:!0,page:{num:0,size:10}},mescroll:null}},methods:{goLive(e){this.liveId=e.liveId,console.log("要传的liveId",this.liveId),o.index.navigateTo({url:`/pages/home/living?liveId=${e.liveId}&immediate=true`})},mescrollInit(e){this.mescroll=e},downCallback(e){this.list=[],e.resetUpScroll()},upCallback(e){const n=e.num;let c={pageSize:e.size,page:n};a.liveList(c).then(l=>{if(l.code==200){let t=l.rows||[],i=t.length,s=l.total||0;n===1&&(this.list=[]),this.list=this.list.concat(t),e.endBySize(i,s)}else e.endErr(),o.index.showToast({title:l.msg,icon:"none"})}).catch(l=>{e.endErr(),console.log("请求异常:"+JSON.stringify(l))})}}};Array||o.resolveComponent("mescroll-body")();const m=()=>"../../uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.js";Math||m();function _(e,n,r,c,l,t){return{a:o.f(l.list,(i,s,g)=>({a:i.liveImgUrl,b:o.t(i.liveName),c:o.o(v=>t.goLive(i),s),d:s})),b:o.sr("mescrollRef","7bd28468-0"),c:o.o(t.mescrollInit),d:o.o(t.downCallback),e:o.o(t.upCallback),f:o.p({bottom:"0",down:l.downOption,up:l.upOption})}}const p=o._export_sfc(u,[["render",_],["__scopeId","data-v-7bd28468"]]);wx.createPage(p);

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_no/living827.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_no/zuizao.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/confirmCreateOrder.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/confirmPackageOrder.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/goods.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/goods.wxml


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/storeOrder.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/pages_shop/storeOrderDelivery.js

@@ -1 +1 @@
-"use strict";const e=require("../common/vendor.js"),n=require("../common/assets.js"),d={data(){return{statusBarHeight:e.index.getStorageSync("menuInfo").statusBarHeight,orderId:null,deliveryId:null,express:{},expressList:[]}},onLoad(r){this.orderId=r.orderId,this.getExpress()},methods:{getExpress(){var r={orderId:this.orderId};getExpress(r).then(t=>{t.code==200?(this.express=t.express,this.expressList=t.data,this.deliveryId=t.deliveryId):e.index.showToast({icon:"none",title:"请求失败"})})},back(){e.index.navigateBack()},copyOrderSn(r){e.index.setClipboardData({data:r,success:()=>{e.index.showToast({title:"内容已成功复制到剪切板",icon:"none"})}})},callPhone(r){e.index.makePhoneCall({phoneNumber:r})}}};function a(r,t,p,x,s,o){return e.e({a:n._imports_0$13,b:s.statusBarHeight,c:n._imports_1$9,d:e.o((...i)=>o.back&&o.back(...i)),e:e.t(s.deliveryId),f:e.o(i=>o.copyOrderSn(s.deliveryId)),g:e.t(s.express.name),h:s.expressList!=null},s.expressList!=null?e.e({i:s.expressList.Traces!=null},s.expressList.Traces!=null?{j:e.f(s.expressList.Traces,(i,c,u)=>({a:e.t(i.AcceptStation),b:e.t(i.AcceptTime),c})),k:n._imports_2$6,l:n._imports_3$3}:{}):{})}const l=e._export_sfc(d,[["render",a]]);wx.createPage(l);
+"use strict";const e=require("../common/vendor.js"),n=require("../common/assets.js"),d={data(){return{statusBarHeight:e.index.getStorageSync("menuInfo").statusBarHeight,orderId:null,deliveryId:null,express:{},expressList:[]}},onLoad(r){this.orderId=r.orderId,this.getExpress()},methods:{getExpress(){var r={orderId:this.orderId};getExpress(r).then(t=>{t.code==200?(this.express=t.express,this.expressList=t.data,this.deliveryId=t.deliveryId):e.index.showToast({icon:"none",title:"请求失败"})})},back(){e.index.navigateBack()},copyOrderSn(r){e.index.setClipboardData({data:r,success:()=>{e.index.showToast({title:"内容已成功复制到剪切板",icon:"none"})}})},callPhone(r){e.index.makePhoneCall({phoneNumber:r})}}};function a(r,t,p,x,s,o){return e.e({a:n._imports_0$13,b:s.statusBarHeight,c:n._imports_1$9,d:e.o((...i)=>o.back&&o.back(...i)),e:e.t(s.deliveryId),f:e.o(i=>o.copyOrderSn(s.deliveryId)),g:e.t(s.express.name),h:s.expressList!=null},s.expressList!=null?e.e({i:s.expressList.Traces!=null},s.expressList.Traces!=null?{j:e.f(s.expressList.Traces,(i,c,u)=>({a:e.t(i.AcceptStation),b:e.t(i.AcceptTime),c})),k:n._imports_2$6,l:n._imports_3$2}:{}):{})}const l=e._export_sfc(d,[["render",a]]);wx.createPage(l);

+ 1 - 1
unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.wxss

@@ -1 +1 @@
-.mescroll-empty{box-sizing:border-box;width:100%;padding:100rpx 50rpx;text-align:center}.mescroll-empty.empty-fixed{z-index:99;position:absolute;top:100rpx;left:0}.mescroll-empty .empty-icon{width:372rpx;height:240rpx}.mescroll-empty .empty-tip{margin-top:20rpx;font-size:32rpx;color:gray}.mescroll-empty .empty-btn{display:inline-block;margin-top:40rpx;min-width:200rpx;padding:18rpx;font-size:28rpx;border:1rpx solid #e04b28;border-radius:60rpx;color:#e04b28}.mescroll-empty .empty-btn:active{opacity:.75}
+.mescroll-empty{box-sizing:border-box;width:100%;padding:100rpx 50rpx;text-align:center}.mescroll-empty.empty-fixed{z-index:99;position:absolute;top:100rpx;left:0}.mescroll-empty .empty-icon{width:280rpx;height:280rpx}.mescroll-empty .empty-tip{margin-top:20rpx;font-size:24rpx;color:gray}.mescroll-empty .empty-btn{display:inline-block;margin-top:40rpx;min-width:200rpx;padding:18rpx;font-size:28rpx;border:1rpx solid #e04b28;border-radius:60rpx;color:#e04b28}.mescroll-empty .empty-btn:active{opacity:.75}

+ 1 - 1
unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.js

@@ -1 +1 @@
-"use strict";const r=require("../../../../../common/vendor.js"),c={props:{option:Object,value:!1},computed:{mOption(){return this.option||{}},left(){return this.mOption.left?this.addUnit(this.mOption.left):"auto"},right(){return this.mOption.left?"auto":this.addUnit(this.mOption.right)}},methods:{addUnit(e){return e?typeof e=="number"?e+"rpx":e:0},toTopClick(){this.$emit("input",!1),this.$emit("click")}}};function o(e,m,i,d,l,t){return r.e({a:t.mOption.src},t.mOption.src?{b:r.n(i.value?"mescroll-totop-in":"mescroll-totop-out"),c:r.n({"mescroll-totop-safearea":t.mOption.safearea}),d:t.mOption.zIndex,e:t.left,f:t.right,g:t.addUnit(t.mOption.bottom),h:t.addUnit(t.mOption.width),i:t.addUnit(t.mOption.radius),j:t.mOption.src,k:r.o((...n)=>t.toTopClick&&t.toTopClick(...n))}:{})}const a=r._export_sfc(c,[["render",o]]);wx.createComponent(a);
+"use strict";const i=require("../../../../../common/vendor.js"),r={props:{option:{type:Object,default(){return{}}},value:!1,modelValue:!1},computed:{left(){return this.option.left?this.addUnit(this.option.left):"auto"},right(){return this.option.left?"auto":this.addUnit(this.option.right)},isShow(){return this.modelValue}},methods:{addUnit(o){return o?typeof o=="number"?o+"rpx":o:0},toTopClick(){this.$emit("update:modelValue",!1),this.$emit("click")}}};function a(o,d,t,l,u,e){return i.e({a:t.option.src},t.option.src?{b:i.n(e.isShow?"mescroll-totop-in":"mescroll-totop-out"),c:i.n({"mescroll-totop-safearea":t.option.safearea}),d:t.option.zIndex,e:e.left,f:e.right,g:e.addUnit(t.option.bottom),h:e.addUnit(t.option.width),i:e.addUnit(t.option.radius),j:t.option.src,k:i.o((...n)=>e.toTopClick&&e.toTopClick(...n))}:{})}const c=i._export_sfc(r,[["render",a]]);wx.createComponent(c);

+ 1 - 1
unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js

@@ -1 +1 @@
-"use strict";const e={data(){return{mescroll:null}},onPullDownRefresh(){this.mescroll&&this.mescroll.onPullDownRefresh()},onPageScroll(l){this.mescroll&&this.mescroll.onPageScroll(l)},onReachBottom(){this.mescroll&&this.mescroll.onReachBottom()},methods:{mescrollInit(l){this.mescroll=l,this.mescrollInitByRef()},mescrollInitByRef(){if(!this.mescroll||!this.mescroll.resetUpScroll){let l=this.$refs.mescrollRef;l&&(this.mescroll=l.mescroll)}},downCallback(){this.mescroll.optUp.use?this.mescroll.resetUpScroll():setTimeout(()=>{this.mescroll.endSuccess()},500)},upCallback(){setTimeout(()=>{this.mescroll.endErr()},500)}},mounted(){this.mescrollInitByRef()}};exports.MescrollMixin=e;
+"use strict";const s={data(){return{mescroll:null}},onPullDownRefresh(){this.mescroll&&this.mescroll.onPullDownRefresh()},onPageScroll(l){this.mescroll&&this.mescroll.onPageScroll(l)},onReachBottom(){this.mescroll&&this.mescroll.onReachBottom()},methods:{mescrollInit(l){this.mescroll=l},downCallback(){this.mescroll.optUp.use?this.mescroll.resetUpScroll():setTimeout(()=>{this.mescroll.endSuccess()},500)},upCallback(){setTimeout(()=>{this.mescroll.endErr()},500)}}};exports.MescrollMixin=s;

+ 1 - 0
unpackage/dist/dev/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs

@@ -63,6 +63,7 @@ me.clearTransform = function (ins){
  * 监听逻辑层数据的变化 (实时更新数据)
  */
 function propObserver(wxsProp) {
+	if(!wxsProp) return
 	me.optDown = wxsProp.optDown
 	me.scrollTop = wxsProp.scrollTop
 	me.bodyHeight = wxsProp.bodyHeight

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels