3 İşlemeler d0cedc2bde ... 0523bdba0e

Yazar SHA1 Mesaj Tarih
  liujiaxin 0523bdba0e a 3 hafta önce
  liujiaxin cc08cbd0a6 a 3 hafta önce
  liujiaxin b4c80986c5 a 3 hafta önce
40 değiştirilmiş dosya ile 720 ekleme ve 296 silme
  1. 2 2
      core/config/defaultConfig.js
  2. 1 1
      pages/auth/login.vue
  3. 399 216
      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 = 'https://live.test.ylrztop.com/live-api/'//余红奇
+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 = '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));

Dosya farkı çok büyük olduğundan ihmal edildi
+ 399 - 216
pages/home/living.vue


+ 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~

Dosya farkı çok büyük olduğundan ihmal edildi
+ 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;

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/auth/login.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/home/living.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/home/living.wxml


Dosya farkı çok büyük olduğundan ihmal edildi
+ 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);

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_no/living827.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_no/zuizao.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/confirmCreateOrder.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/confirmPackageOrder.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/goods.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages_shop/goods.wxml


Dosya farkı çok büyük olduğundan ihmal edildi
+ 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

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor