소스 검색

新增:更新halo.config.js 配置参数;
更新:更新项目UI框架;
修复:修复友链列表丢失白色背景色BUG;

小莫唐尼 3 년 전
부모
커밋
9d3ebac076
93개의 변경된 파일1102개의 추가작업 그리고 7462개의 파일을 삭제
  1. 1 5
      App.vue
  2. 1 1
      common/mixins/index.js
  3. 2 2
      components/article-card/article-card.vue
  4. 1 1
      components/comment-item/comment-item.vue
  5. 1 1
      components/journal-card/journal-card.vue
  6. 17 9
      config/halo.config.template.js
  7. 162 155
      manifest.json
  8. 9 3
      pages/index/index.vue
  9. 14 4
      pages/tabbar/about/about.vue
  10. 1 10
      pages/tabbar/home/home.vue
  11. 30 29
      pages/tabbar/links/links.vue
  12. 2 2
      pagesA/article-detail/article-detail.vue
  13. 1 1
      pagesA/comment/comment.vue
  14. 1 1
      pagesA/contact/contact.vue
  15. 1 1
      pagesA/disclaimers/disclaimers.vue
  16. 1 1
      pagesA/leaving/leaving.vue
  17. 1 1
      pagesA/setting/setting.vue
  18. 1 2
      pagesB/comments/comments.vue
  19. 1 1
      pagesB/login/login.vue
  20. BIN
      static/summer.jpg
  21. 12 12
      store/blogger.js
  22. 2 6
      store/setting.js
  23. 4 10
      store/user.js
  24. 20 0
      tm-vuetify/changelog.md
  25. 14 15
      tm-vuetify/components/tm-album/tm-album.vue
  26. 8 5
      tm-vuetify/components/tm-button/tm-button.vue
  27. 32 24
      tm-vuetify/components/tm-calendar/tm-calendar.vue
  28. 16 7
      tm-vuetify/components/tm-calendarView/tm-calendarView.vue
  29. 1 1
      tm-vuetify/components/tm-countdown/tm-countdown.vue
  30. 5 5
      tm-vuetify/components/tm-dialog/tm-dialog.vue
  31. 1 1
      tm-vuetify/components/tm-dragGrid/tm-dragGrid.vue
  32. 0 1
      tm-vuetify/components/tm-dragList/tm-dragList.vue
  33. 1 0
      tm-vuetify/components/tm-flotbutton/tm-flotbutton.vue
  34. 16 42
      tm-vuetify/components/tm-grouplist/tm-grouplist.vue
  35. 157 154
      tm-vuetify/components/tm-icons/tm-icons.vue
  36. 5 2
      tm-vuetify/components/tm-input/tm-input.vue
  37. 27 9
      tm-vuetify/components/tm-listitem/tm-listitem.vue
  38. 4 1
      tm-vuetify/components/tm-menubars/tm-menubars.vue
  39. 12 10
      tm-vuetify/components/tm-more/tm-more.vue
  40. 7 7
      tm-vuetify/components/tm-poup/tm-poup.vue
  41. 16 10
      tm-vuetify/components/tm-propress/tm-propress.vue
  42. 27 26
      tm-vuetify/components/tm-row/tm-row.vue
  43. 4 4
      tm-vuetify/components/tm-segTabs/tm-segTabs.vue
  44. 2 20
      tm-vuetify/components/tm-sheet/tm-sheet.vue
  45. 0 1
      tm-vuetify/components/tm-signBoard/tm-signBoard.vue
  46. 12 1
      tm-vuetify/components/tm-slider/tm-slider.vue
  47. 15 1
      tm-vuetify/components/tm-sliders/tm-sliders.vue
  48. 344 385
      tm-vuetify/components/tm-swiper/tm-swiper.vue
  49. 1 1
      tm-vuetify/components/tm-translate/tm-translate.vue
  50. 60 35
      tm-vuetify/components/tm-upload/tm-upload.vue
  51. 10 0
      tm-vuetify/components/tm-weekbar/tm-weekbar.vue
  52. 1 1
      tm-vuetify/package.json
  53. 8 8
      tm-vuetify/scss/theme.css
  54. 1 0
      tm-vuetify/tool/function/dayjs/calendar.js
  55. 1 0
      tm-vuetify/tool/function/sleep.js
  56. 1 0
      tm-vuetify/tool/function/test.js
  57. 4 4
      tm-vuetify/tool/function/vuex.js
  58. 1 0
      tm-vuetify/tool/store/tm-vuetify.js
  59. 0 5
      uni_modules/z-paging/changelog.md
  60. 0 34
      uni_modules/z-paging/components/z-paging-cell/z-paging-cell.vue
  61. 0 163
      uni_modules/z-paging/components/z-paging-empty-view/z-paging-empty-view.vue
  62. 0 145
      uni_modules/z-paging/components/z-paging-swiper-item/z-paging-swiper-item.vue
  63. 0 227
      uni_modules/z-paging/components/z-paging-swiper/z-paging-swiper.vue
  64. 0 152
      uni_modules/z-paging/components/z-paging/components/z-paging-load-more.vue
  65. 0 273
      uni_modules/z-paging/components/z-paging/components/z-paging-refresh.vue
  66. 0 3
      uni_modules/z-paging/components/z-paging/config/index.js
  67. 0 227
      uni_modules/z-paging/components/z-paging/css/z-paging-main.css
  68. 0 35
      uni_modules/z-paging/components/z-paging/css/z-paging-static.css
  69. 0 108
      uni_modules/z-paging/components/z-paging/js/modules/back-to-top.js
  70. 0 731
      uni_modules/z-paging/components/z-paging/js/modules/data-handle.js
  71. 0 154
      uni_modules/z-paging/components/z-paging/js/modules/empty.js
  72. 0 98
      uni_modules/z-paging/components/z-paging/js/modules/i18n.js
  73. 0 328
      uni_modules/z-paging/components/z-paging/js/modules/load-more.js
  74. 0 220
      uni_modules/z-paging/components/z-paging/js/modules/nvue.js
  75. 0 632
      uni_modules/z-paging/components/z-paging/js/modules/refresher.js
  76. 0 478
      uni_modules/z-paging/components/z-paging/js/modules/scroller.js
  77. 0 374
      uni_modules/z-paging/components/z-paging/js/modules/virtual-list.js
  78. 0 26
      uni_modules/z-paging/components/z-paging/js/z-paging-config.js
  79. 0 21
      uni_modules/z-paging/components/z-paging/js/z-paging-constant.js
  80. 0 37
      uni_modules/z-paging/components/z-paging/js/z-paging-enum.js
  81. 0 133
      uni_modules/z-paging/components/z-paging/js/z-paging-i18n.js
  82. 0 34
      uni_modules/z-paging/components/z-paging/js/z-paging-interceptor.js
  83. 0 604
      uni_modules/z-paging/components/z-paging/js/z-paging-main.js
  84. 0 26
      uni_modules/z-paging/components/z-paging/js/z-paging-mixin.js
  85. 0 8
      uni_modules/z-paging/components/z-paging/js/z-paging-static.js
  86. 0 244
      uni_modules/z-paging/components/z-paging/js/z-paging-utils.js
  87. 0 68
      uni_modules/z-paging/components/z-paging/wxs/z-paging-renderjs.js
  88. 0 354
      uni_modules/z-paging/components/z-paging/wxs/z-paging-wxs.wxs
  89. 0 354
      uni_modules/z-paging/components/z-paging/z-paging.vue
  90. 0 85
      uni_modules/z-paging/package.json
  91. 0 40
      uni_modules/z-paging/readme.md
  92. 1 1
      utils/halo.logs.js
  93. 1 1
      vue.config.js

+ 1 - 5
App.vue

@@ -64,14 +64,10 @@ export default {
 @import './common/icons/mphtmliconfont.css';
 
 /* #ifndef MP-WEIXIN */
-@import './common/markdown/markdown.scss'; //引入markdown呈现
+@import './common/markdown/markdown.scss';
 /* #endif */
 
 page {
-	// background-color: #f3f5f7;
-	// background-color: #f7f7f7;
-	// background-color: #ffffff;
 	background-color: #fafafa;
-	// background-color: #f4f5f5;
 }
 </style>

+ 1 - 1
common/mixins/index.js

@@ -24,7 +24,7 @@ export default {
 			computed: {
 				// 获取全局应用设置
 				globalAppSettings() {
-					return uni.$tm.vx.getters().setting.getSettings;
+					return uni.$tm.vx.getters().getSettings;
 				}
 			},
 			created() {

+ 2 - 2
components/article-card/article-card.vue

@@ -160,7 +160,7 @@ export default {
 		padding: 0;
 		.left {
 			width: 100%;
-			height: 300rpx;
+			height: 340rpx;
 			.thumbnail {
 				::v-deep uni-image {
 					border-radius: 6rpx 6rpx 0 0 !important;
@@ -188,7 +188,7 @@ export default {
 		flex-direction: column;
 		.left {
 			width: 100%;
-			height: 260rpx;
+			height: 340rpx;
 			order: 2;
 			margin-top: 24rpx;
 		}

+ 1 - 1
components/comment-item/comment-item.vue

@@ -74,7 +74,7 @@ export default {
 	computed: {
 		// 获取博主信息
 		bloggerInfo() {
-			let blogger = this.$tm.vx.getters().blogger.getBlogger;
+			let blogger = this.$tm.vx.getters().getBlogger;
 			blogger.avatar = this.$utils.checkAvatarUrl(blogger.avatar, true);
 			return blogger;
 		}

+ 1 - 1
components/journal-card/journal-card.vue

@@ -96,7 +96,7 @@ export default {
 	computed: {
 		// 获取博主信息
 		bloggerInfo() {
-			let blogger = this.$tm.vx.getters().blogger.getBlogger;
+			let blogger = this.$tm.vx.getters().getBlogger;
 			blogger.avatar = this.$utils.checkAvatarUrl(blogger.avatar, true);
 			return blogger;
 		}

+ 17 - 9
config/halo.config.template.js

@@ -14,14 +14,17 @@ export default {
 	showAbout: true, // 显示关于项目入口
 	uni_halo_logo: 'https://b.925i.cn/uni_halo/uni_halo_logo.png', // uni-halo的logo
 
-	apiUrl: '', // Api基础域名(您的halo博客基础域名或者是Halo后台管理系统api地址)
-	apiAuthorization: '', // Halo中-系统-博客设置-切换到高级选项-API设置-Access key 
+	apiUrl: '', // Api基础域名 [必填] :你的Halo博客基础域名
+	apiAuthorization: '', // Api认证key [必填]: Halo中-系统-博客设置-切换到高级选项-API设置-Access key
 
-	title: '', // 博客标题
-	miniCodeImageUrl: '', // 小程序码地址
+	title: '', // 博客标题 [建议必填]:在某些页面没有设置具体的页面名称时候,使用该值显示
+	miniCodeImageUrl: '', // 小程序的太阳码/二维码的图片地址 [建议必填]:主要用于文章详情页面的生成海报的功能
+	aboutProfileImageUrl: '', // 关于页面中的资料卡背景图 [建议必填]
 
-	start: { // 首次启动页配置
-		title: 'uni-halo', // 标题
+	// 启动页面的配置(页面地址`/pagesA/start/start`)
+	start: {
+		use: true, // 是否使用首次启动页:用户第一次使用你的应用会显示否则不显示
+		title: 'uni-halo', // 启动页面中的文字标题
 		bg: '', // 留空则使用默认 开屏首页背景,可以是颜色值或者图片图片地址
 		logo: 'https://b.925i.cn/uni_halo/uni_halo_logo.png', // logo
 		desc1: '全新UI,准备出发', // 描述信息1
@@ -29,12 +32,17 @@ export default {
 		btnText: '全新触发' // 按钮文字
 	},
 
+	// 博主信息 
 	author: {
-		name: '', // 昵称
-		avatar: '', // 头像地址
-		motto: '', // 格言
+		use: true, // 是否启用这里配置的信息,不启用则获取PC端博客设置的信息
+		nickname: '', // 昵称
+		avatar: '', // 头像
+		email: '', // 邮箱
+		description: '', // 介绍
 	},
 
+	// 社交信息(将会在`/pagesA/contact/contact`页面中展示)
+	// 具体的某个参数值留空则不展示
 	social: {
 		qq: "", // qq号
 		wechat: "", // 微信号

+ 162 - 155
manifest.json

@@ -1,157 +1,164 @@
 {
-    "name" : "uni-halo",
-    "appid" : "__UNI__5748B6E",
-    "description" : "uni-halo博客:基于halo开源博客系统API开发的多端博客。",
-    "versionName" : "1.0.0",
-    "versionCode" : 100,
-    "transformPx" : false,
-    /* 5+App特有相关 */
-    "app-plus" : {
-        "usingComponents" : true,
-        "nvueStyleCompiler" : "uni-app",
-        "compilerVersion" : 3,
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true,
-            "waiting" : true,
-            "autoclose" : true,
-            "delay" : 0
-        },
-        /* 模块配置 */
-        "modules" : {
-            "OAuth" : {},
-            "Share" : {}
-        },
-        /* 应用发布信息 */
-        "distribute" : {
-            /* android打包配置 */
-            "android" : {
-                "permissions" : [
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.CAPTURE_VIDEO_OUTPUT\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
-            },
-            /* ios打包配置 */
-            "ios" : {
-                "dSYMs" : false,
-                "capabilities" : {
-                    "entitlements" : {
-                        "com.apple.developer.associated-domains" : [ "applinks:static-699a26a5-a6cd-4b54-b603-5155b312a5f5.bspapp.com" ]
-                    }
-                }
-            },
-            /* SDK配置 */
-            "sdkConfigs" : {
-                "ad" : {
-                    "gdt" : {},
-                    "csj" : {},
-                    "360" : {},
-                    "ks" : {},
-                    "sigmob" : {},
-                    "hw" : {},
-                    "bd" : {}
-                },
-                "oauth" : {
-                    "weixin" : {
-                        "appid" : "wxd971954762ec4744",
-                        "UniversalLinks" : "https://static-699a26a5-a6cd-4b54-b603-5155b312a5f5.bspapp.com/uni-universallinks/__UNI__5748B6E/"
-                    }
-                },
-                "share" : {
-                    "weixin" : {
-                        "appid" : "wxd971954762ec4744",
-                        "UniversalLinks" : "https://static-699a26a5-a6cd-4b54-b603-5155b312a5f5.bspapp.com/uni-universallinks/__UNI__5748B6E/"
-                    }
-                }
-            },
-            "icons" : {
-                "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
-                    "xhdpi" : "unpackage/res/icons/96x96.png",
-                    "xxhdpi" : "unpackage/res/icons/144x144.png",
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
-                },
-                "ios" : {
-                    "appstore" : "unpackage/res/icons/1024x1024.png",
-                    "ipad" : {
-                        "app" : "unpackage/res/icons/76x76.png",
-                        "app@2x" : "unpackage/res/icons/152x152.png",
-                        "notification" : "unpackage/res/icons/20x20.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "proapp@2x" : "unpackage/res/icons/167x167.png",
-                        "settings" : "unpackage/res/icons/29x29.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "spotlight" : "unpackage/res/icons/40x40.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
-                    },
-                    "iphone" : {
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
-                    }
-                }
-            }
-        }
-    },
-    /* 快应用特有相关 */
-    "quickapp" : {},
-    /* 小程序特有相关 */
-    "mp-weixin" : {
-        "appid" : "wx1bb161867082c72f",
-        "setting" : {
-            "urlCheck" : false,
-            "minified" : true
-        },
-        "usingComponents" : true
-    },
-    "mp-alipay" : {
-        "usingComponents" : true
-    },
-    "mp-baidu" : {
-        "usingComponents" : true
-    },
-    "mp-toutiao" : {
-        "usingComponents" : true
-    },
-    "uniStatistics" : {
-        "enable" : false
-    },
-    "vueVersion" : "2",
-    "h5" : {
-        "title" : "uni-halo",
-        "devServer" : {
-            "https" : false,
-            "disableHostCheck" : true,
-            "proxy" : {
-                "/api" : {
-                    "target" : "https://b.925i.cn",
-                    "changeOrigin" : true,
-                    "secure" : false,
-                    "pathRewrite" : {
-                        "^/api" : ""
-                    }
-                }
-            }
-        }
-    },
-    "_spaceID" : "699a26a5-a6cd-4b54-b603-5155b312a5f5"
+	"name": "uni-halo",
+	"appid": "__UNI__5748B6E",
+	"description": "uni-halo博客:基于halo开源博客系统API开发的多端博客。",
+	"versionName": "1.0.0",
+	"versionCode": 100,
+	"transformPx": false,
+	/* 5+App特有相关 */
+	"app-plus": {
+		"usingComponents": true,
+		"nvueStyleCompiler": "uni-app",
+		"compilerVersion": 3,
+		"splashscreen": {
+			"alwaysShowBeforeRender": true,
+			"waiting": true,
+			"autoclose": true,
+			"delay": 0
+		},
+		/* 模块配置 */
+		"modules": {
+			"OAuth": {},
+			"Share": {}
+		},
+		/* 应用发布信息 */
+		"distribute": {
+			/* android打包配置 */
+			"android": {
+				"permissions": [
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.CAPTURE_VIDEO_OUTPUT\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+				]
+			},
+			/* ios打包配置 */
+			"ios": {
+				"dSYMs": false,
+				"capabilities": {
+					"entitlements": {
+						"com.apple.developer.associated-domains": [
+							"applinks:static-699a26a5-a6cd-4b54-b603-5155b312a5f5.bspapp.com"
+						]
+					}
+				}
+			},
+			/* SDK配置 */
+			"sdkConfigs": {
+				"ad": {
+					"gdt": {},
+					"csj": {},
+					"360": {},
+					"ks": {},
+					"sigmob": {},
+					"hw": {},
+					"bd": {}
+				},
+				"oauth": {
+					"weixin": {
+						"appid": "wxd971954762ec4744",
+						"UniversalLinks": "https://static-699a26a5-a6cd-4b54-b603-5155b312a5f5.bspapp.com/uni-universallinks/__UNI__5748B6E/"
+					}
+				},
+				"share": {
+					"weixin": {
+						"appid": "wxd971954762ec4744",
+						"UniversalLinks": "https://static-699a26a5-a6cd-4b54-b603-5155b312a5f5.bspapp.com/uni-universallinks/__UNI__5748B6E/"
+					}
+				}
+			},
+			"icons": {
+				"android": {
+					"hdpi": "unpackage/res/icons/72x72.png",
+					"xhdpi": "unpackage/res/icons/96x96.png",
+					"xxhdpi": "unpackage/res/icons/144x144.png",
+					"xxxhdpi": "unpackage/res/icons/192x192.png"
+				},
+				"ios": {
+					"appstore": "unpackage/res/icons/1024x1024.png",
+					"ipad": {
+						"app": "unpackage/res/icons/76x76.png",
+						"app@2x": "unpackage/res/icons/152x152.png",
+						"notification": "unpackage/res/icons/20x20.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"proapp@2x": "unpackage/res/icons/167x167.png",
+						"settings": "unpackage/res/icons/29x29.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"spotlight": "unpackage/res/icons/40x40.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png"
+					},
+					"iphone": {
+						"app@2x": "unpackage/res/icons/120x120.png",
+						"app@3x": "unpackage/res/icons/180x180.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"notification@3x": "unpackage/res/icons/60x60.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"settings@3x": "unpackage/res/icons/87x87.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png",
+						"spotlight@3x": "unpackage/res/icons/120x120.png"
+					}
+				}
+			}
+		}
+	},
+	/* 快应用特有相关 */
+	"quickapp": {},
+	/* 小程序特有相关 */
+	"mp-weixin": {
+		"appid": "wx1bb161867082c72f",
+		"setting": {
+			"urlCheck": false,
+			"minified": true
+		},
+		"usingComponents": true
+	},
+	"mp-alipay": {
+		"usingComponents": true
+	},
+	"mp-baidu": {
+		"usingComponents": true
+	},
+	"mp-toutiao": {
+		"usingComponents": true
+	},
+	"uniStatistics": {
+		"enable": false
+	},
+	"vueVersion": "2",
+	"h5": {
+		"title": "uni-halo",
+		"devServer": {
+			"disableHostCheck": true,
+			"proxy": {
+				"/api": {
+					"target": "https://b.925i.cn",
+					"changeOrigin": true,
+					"secure": false,
+					"pathRewrite": {
+						"^/api": ""
+					}
+				}
+			}
+		},
+		"optimization": {
+			"preload": true,
+			"treeShaking": {
+				"enable": true
+			}
+		}
+	},
+	"_spaceID": "699a26a5-a6cd-4b54-b603-5155b312a5f5"
 }

+ 9 - 3
pages/index/index.vue

@@ -5,11 +5,17 @@
 <script>
 export default {
 	onLoad() {
-		this.fnCheckHadStarted();
+		this.fnCheckShowStarted();
 	},
 	methods: {
-		// 检查是否已经启动过
-		fnCheckHadStarted() {
+		// 检查是否需要跳转到启动页
+		fnCheckShowStarted() {
+			if (!getApp().globalData.start.use) {
+				uni.switchTab({
+					url: '/pages/tabbar/home/home'
+				});
+				return;
+			}
 			if (uni.getStorageSync('APP_HAS_STARTED')) {
 				uni.switchTab({
 					url: '/pages/tabbar/home/home'

+ 14 - 4
pages/tabbar/about/about.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="app-page pb-24">
 		<!-- 博主信息 -->
-		<view class="blogger-info">
+		<view class="blogger-info" :style="calcProfileStyle">
 			<image class="avatar" :src="$utils.checkAvatarUrl(bloggerInfo.avatar)" mode="aspectFill" @click="miniProfileCard.show = true"></image>
 			<view class="profile">
 				<view class="author mt-24 text-size-g text-weight-b">{{ bloggerInfo.nickname }}</view>
@@ -168,7 +168,19 @@ export default {
 	},
 	computed: {
 		bloggerInfo() {
-			return this.$tm.vx.getters().blogger.getBlogger;
+			return this.$tm.vx.getters().getBlogger;
+		},
+		calcProfileStyle() {
+			let _imgUrlOr = getApp().globalData.aboutProfileImageUrl;
+			if (this.$utils.checkIsUrl(_imgUrlOr)) {
+				return {
+					backgroundImage: `url(${_imgUrlOr})`
+				};
+			} else {
+				return {
+					background: _imgUrlOr
+				};
+			}
 		},
 		calcWaveUrl() {
 			return getApp().globalData.waveImageUrl;
@@ -437,10 +449,8 @@ export default {
 	position: relative;
 	width: 100%;
 	height: 600rpx;
-	background-image: url('@/static/summer.jpg');
 	background-size: cover;
 	background-repeat: no-repeat;
-	// box-shadow: 0rpx 2rpx 24rpx rgba(0, 0, 0, 0.05);
 	&:before {
 		content: '';
 		width: 100%;

+ 1 - 10
pages/tabbar/home/home.vue

@@ -136,9 +136,8 @@ export default {
 	},
 
 	computed: {
-		// 获取博主信息
 		bloggerInfo() {
-			let blogger = this.$tm.vx.getters().blogger.getBlogger;
+			let blogger = this.$tm.vx.getters().getBlogger;
 			blogger.avatar = this.$utils.checkAvatarUrl(blogger.avatar, true);
 			return blogger;
 		}
@@ -150,13 +149,6 @@ export default {
 
 	created() {
 		this.fnQuery();
-		this.$httpApi
-			.getOptionList()
-			.then(result => {
-				console.log('配置列表:');
-				console.log(result);
-			})
-			.catch(err => {});
 	},
 	onPullDownRefresh() {
 		this.isLoadMore = false;
@@ -177,7 +169,6 @@ export default {
 		}
 	},
 	methods: {
-		// 查询数据
 		fnQuery() {
 			this.fnGetBanner();
 			this.fnGetArticleList();

+ 30 - 29
pages/tabbar/links/links.vue

@@ -7,7 +7,7 @@
 			<tm-skeleton model="listAvatr"></tm-skeleton>
 			<tm-skeleton model="listAvatr"></tm-skeleton>
 		</view>
-		<view v-else class="content">
+		<view v-else class="content" :class="{ 'bg-white': result.length !== 0 }">
 			<!-- 空数据 -->
 			<view v-if="result.length == 0" class="content-empty flex flex-center"><tm-empty icon="icon-shiliangzhinengduixiang-" label="啊偶,博主还没有朋友呢~"></tm-empty></view>
 
@@ -35,35 +35,39 @@
 				<block v-for="(team, index) in result" :key="index">
 					<view class="grey-lighten-4 text  text-size-s text-weight-b px-32 py-12">{{ team.title }}</view>
 					<block v-for="(link, linkIndex) in team.children" :key="link.id">
-						<!-- 艳丽版本 -->
-						<view
-							v-if="!globalAppSettings.links.useSimple"
-							class="info flex pa-36"
-							:class="{ 'border-b-1': linkIndex != team.children.length - 1 }"
-							@click="fnOnLinkEvent(link)"
-						>
-							<view class="link-logo"><cache-image class="link-logo_img" radius="12rpx" :url="link.logo" :fileMd5="link.logo" mode="aspectFill"></cache-image></view>
-							<view class="flex flex-col pl-30 info-detail">
-								<view class="link-card_name text-size-l text-weight-b text-red">{{ link.name }}</view>
-								<view class="poup-tag ml--10 mt-6">
-									<tm-tags color="bg-gradient-amber-accent" :shadow="0" size="s" model="fill">ID:{{ link.id }}</tm-tags>
-									<tm-tags color=" bg-gradient-light-blue-lighten" :shadow="0" size="s" model="fill">{{ link.team }}</tm-tags>
+						<tm-translate animation-name="fadeUp" :wait="(linkIndex + 1) * 30">
+							<!-- 色彩版本 -->
+							<view
+								v-if="!globalAppSettings.links.useSimple"
+								class="info flex pa-36"
+								:class="{ 'border-b-1': linkIndex != team.children.length - 1 }"
+								@click="fnOnLinkEvent(link)"
+							>
+								<view class="link-logo">
+									<cache-image class="link-logo_img" radius="12rpx" :url="link.logo" :fileMd5="link.logo" mode="aspectFill"></cache-image>
+								</view>
+								<view class="flex flex-col pl-30 info-detail">
+									<view class="link-card_name text-size-l text-weight-b text-red">{{ link.name }}</view>
+									<view class="poup-tag ml--10 mt-6">
+										<tm-tags color="bg-gradient-amber-accent" :shadow="0" size="s" model="fill">ID:{{ link.id }}</tm-tags>
+										<tm-tags color=" bg-gradient-light-blue-lighten" :shadow="0" size="s" model="fill">{{ link.team }}</tm-tags>
+									</view>
+									<view class="link-card_desc text-overflow text-size-s mt-4">博客简介:{{ link.description || '这个博主很懒,没写简介~' }}</view>
 								</view>
-								<view class="link-card_desc text-overflow text-size-s mt-4">博客简介:{{ link.description || '这个博主很懒,没写简介~' }}</view>
 							</view>
-						</view>
-						<!-- 简洁版本 -->
-						<view v-else class="link-card flex ml-24 mr-24 pt-24 pb-24" @click="fnOnLinkEvent(link)">
-							<image class="logo shadow-6" :src="link.logo" mode="aspectFill"></image>
-							<view class="info pl-24">
-								<view class="name text-size-g">{{ link.name }}</view>
-								<view class="desc mt-12 text-size-s text-grey-darken-1">{{ link.description }}</view>
-								<view v-if="false" class="link mt-12 text-size-m text-grey-darken-1">
-									<text class="iconfont icon-link mr-6 text-size-s"></text>
-									{{ link.url }}
+							<!-- 简洁版本 -->
+							<view v-else class="link-card flex ml-24 mr-24 pt-24 pb-24" @click="fnOnLinkEvent(link)">
+								<image class="logo shadow-6" :src="link.logo" mode="aspectFill"></image>
+								<view class="info pl-24">
+									<view class="name text-size-g">{{ link.name }}</view>
+									<view class="desc mt-12 text-size-s text-grey-darken-1">{{ link.description }}</view>
+									<view v-if="false" class="link mt-12 text-size-m text-grey-darken-1">
+										<text class="iconfont icon-link mr-6 text-size-s"></text>
+										{{ link.url }}
+									</view>
 								</view>
 							</view>
-						</view>
+						</tm-translate>
 					</block>
 				</block>
 			</block>
@@ -109,7 +113,6 @@ import tmImages from '@/tm-vuetify/components/tm-images/tm-images.vue';
 import tmPoup from '@/tm-vuetify/components/tm-poup/tm-poup.vue';
 
 import { GetRandomNumberByRange } from '@/utils/random.js';
-import findCnChart from '@/tm-vuetify/tool/function/findCnChart.js';
 export default {
 	components: {
 		tmSkeleton,
@@ -177,7 +180,6 @@ export default {
 						// 处理数据
 						const _result = res.data.map(item => {
 							const _team = item.team || '未分组';
-							const _firstChart = _team ? _team.substring(0, 1) : '';
 							const _links = item.links.map(link => {
 								this.linkTotal += 1;
 								link.logo = this.$utils.checkAvatarUrl(link.logo);
@@ -185,7 +187,6 @@ export default {
 							});
 							return {
 								title: _team,
-								index: findCnChart(_firstChart),
 								children: _links
 							};
 						});

+ 2 - 2
pagesA/article-detail/article-detail.vue

@@ -11,7 +11,7 @@
 				<view class="title">{{ result.title }}</view>
 				<view class="detail">
 					<view class="author">
-						<text class="author-name">{{ author.name }}</text>
+						<text class="author-name">{{ author.nickname }}</text>
 						<text class="author-time">发布于:{{ { d: result.createTime, f: 'yyyy年MM月dd日 星期w' } | formatTime }}</text>
 					</view>
 
@@ -238,7 +238,7 @@ export default {
 		},
 		// 获取博主信息
 		bloggerInfo() {
-			let blogger = this.$tm.vx.getters().blogger.getBlogger;
+			let blogger = this.$tm.vx.getters().getBlogger;
 			blogger.avatar = this.$utils.checkAvatarUrl(blogger.avatar, true);
 			return blogger;
 		}

+ 1 - 1
pagesA/comment/comment.vue

@@ -67,7 +67,7 @@ export default {
 	computed: {
 		// 评论游客信息
 		wxLoginVisitorUser() {
-			return uni.$tm.vx.getters().user.getWxLoginInfo;
+			return uni.$tm.vx.getters().getWxLoginInfo;
 		}
 	},
 	onLoad() {

+ 1 - 1
pagesA/contact/contact.vue

@@ -120,7 +120,7 @@ export default {
 	computed: {
 		// 获取博主信息
 		bloggerInfo() {
-			let blogger = this.$tm.vx.getters().blogger.getBlogger;
+			let blogger = this.$tm.vx.getters().getBlogger;
 			blogger.avatar = this.$utils.checkAvatarUrl(blogger.avatar, true);
 			return blogger;
 		}

+ 1 - 1
pagesA/disclaimers/disclaimers.vue

@@ -27,7 +27,7 @@
 export default {
 	computed: {
 		bloggerInfo() {
-			return this.$tm.vx.getters().blogger.getBlogger;
+			return this.$tm.vx.getters().getBlogger;
 		}
 	}
 };

+ 1 - 1
pagesA/leaving/leaving.vue

@@ -77,7 +77,7 @@
 </template>
 
 <script>
-import AppKeys from '@/config//keys.js';
+import AppKeys from '@/config/keys.js';
 import SheetConfig from '@/config/sheets.config.js';
 
 import tmSkeleton from '@/tm-vuetify/components/tm-skeleton/tm-skeleton.vue';

+ 1 - 1
pagesA/setting/setting.vue

@@ -189,7 +189,7 @@ export default {
 		this.fnSetPageTitle('应用设置');
 	},
 	created() {
-		this.appSettings = uni.$tm.vx.getters().setting.getSettings;
+		this.appSettings = uni.$tm.vx.getters().getSettings;
 		this.fnHandleFormatSelect();
 		uni.showLoading({
 			title: '加载中...',

+ 1 - 2
pagesB/comments/comments.vue

@@ -185,7 +185,7 @@ export default {
 	computed: {
 		// 获取博主信息
 		bloggerInfo() {
-			return this.$tm.vx.getters().blogger.getBlogger;
+			return this.$tm.vx.getters().getBlogger;
 		}
 	},
 	onLoad() {
@@ -193,7 +193,6 @@ export default {
 	},
 	created() {
 		this.fnGetData();
-		console.log(this.bloggerInfo);
 	},
 	onPullDownRefresh() {
 		this.isLoadMore = false;

+ 1 - 1
pagesB/login/login.vue

@@ -85,7 +85,7 @@ export default {
 	},
 	computed: {
 		bloggerInfo() {
-			return this.$tm.vx.getters().blogger.getBlogger;
+			return this.$tm.vx.getters().getBlogger;
 		},
 		showCopyright() {
 			return getApp().globalData.showCopyright;

BIN
static/summer.jpg


+ 12 - 12
store/blogger.js

@@ -10,6 +10,7 @@
  *  修改时间:
  */
 import Blogger from '@/api/blogger.js'
+import HaloConfig from '@/config/halo.config.js';
 export default {
 	state: {
 		blogger: {},
@@ -25,18 +26,17 @@ export default {
 		},
 	},
 	actions: {
-		//通过actions提交更新数据
-		fnGetBlogger({
-			commit
-		}) {
-			Blogger.getBloggerInfo().then((res) => {
-				console.log('获取博主信息成功:');
-				console.log(res);
-				commit("setBlogger", res.data);
-			}).catch((err) => {
-				console.log('哈哈,获取博主信息失败啦!');
-				console.log(err);
-			});
+		fnGetBlogger(context) {
+			if (HaloConfig.author.use) {
+				context.commit("setBlogger", HaloConfig.author);
+			} else {
+				Blogger.getBloggerInfo().then((res) => {
+					context.commit("setBlogger", res.data);
+				}).catch((err) => {
+					// 如果失败,则加载默认配置信息
+					context.commit("setBlogger", HaloConfig.author);
+				});
+			}
 		},
 	},
 };

+ 2 - 6
store/setting.js

@@ -24,17 +24,13 @@ export default {
 	mutations: {
 		setSettings(state, data) {
 			state.settings = data;
-			console.log('设置:', data);
 			setAppSettings(data)
 		},
 	},
 	actions: {
 		// 设置默认的数据
-		updateDefaultAppSettings({
-			commit
-		}) {
-			console.log(_DefaultAppSettings);
-			commit('setSettings', JSON.parse(JSON.stringify(_DefaultAppSettings)))
+		updateDefaultAppSettings(context) {
+			context.commit('setSettings', JSON.parse(JSON.stringify(_DefaultAppSettings)))
 		},
 		// 检查并设置默认的数据
 		checkAndSetDefaultAppSettings(context) {

+ 4 - 10
store/user.js

@@ -45,14 +45,11 @@ export default {
 		},
 	},
 	actions: {
-		// 登录
-		adminLogin({
-			commit
-		}, data) {
+		adminLogin(context, data) {
 			return new Promise((resolve, reject) => {
 				User.login(data).then((res) => {
 					if (res.status == 200) {
-						commit("setAdminToken", res.data);
+						context.commit("setAdminToken", res.data);
 						resolve(res)
 					} else {
 						reject(err)
@@ -72,11 +69,8 @@ export default {
 				})
 			}
 		},
-		// 登出
-		adminLogout({
-			commit
-		}) {
-			commit("setAdminToken", null);
+		adminLogout(context) {
+			context.commit("setAdminToken", null);
 		}
 	},
 };

+ 20 - 0
tm-vuetify/changelog.md

@@ -1,3 +1,23 @@
+## 2.0.1(2022-12-8)
+* 修复 tm-icons在小程序下可能图标与文字无法对齐
+* 优化 tm-album性能,修复可能在嵌套组件中,无法计算宽高信息.
+* 优化 tm-dragList性能
+* 优化 tm-row性能
+* 优化 tm-segTabs性能
+* 优化 tm-sheet性能
+* 优化 tm-slider,tm-sliders性能
+* 优化 tm-more性能
+* 优化 tm-propress性能,修复可能在嵌套组件中,无法计算宽高信息.
+* 优化 tm-dialog,tm-poup,动效及样式
+* 微调 tm-button
+* 美化了tm-calendar,tm-calendar-view,选中改成圆形,范围改成椭圆形。
+* 修复 tm-countdown 完成的时机逻辑有误,修改后默认为完成状态。
+* 增强 tm-upload 新增showSort属性,用于上传的文件排序功能。
+* 修复 tm-swiper圆角失效。
+* 修复 tm-weekbar日期问题。
+* 修复 tm-dragGrid 动态修改数据后的判断逻辑问题。
+* 优化 tm-grouplist 渲染性能,现在已经是秒渲染。
+* 修复$tm.vx.getters()下的属性丢失。
 ## 2.0.0(2022-6-7)
 * tm-card修复点击操作按钮时返回的参数非index,而是项目标题。修复动态配置一些属性不生效的问题。
 * tm-dropDownMenu 优化,当重置项时,默认将使用你初始的选中数据来进行填充,默认选中。

+ 14 - 15
tm-vuetify/components/tm-album/tm-album.vue

@@ -159,7 +159,10 @@
 			}
 		},
 		async mounted() {
-			await this.setInits();
+			this.setInits();
+		},
+		updated() {
+			this.setInits();
 		},
 		methods: {
 			//处理数据,以标准化。
@@ -186,20 +189,16 @@
 			async setInits(){
 				this.$nextTick(async function() {
 					let t = this;
-					this.$tm.sleep(150).then(async function(){
-						let p = await t.$Querey('.tm-album',t).catch(e =>{});
-						if (!p[0]) return;
-						let grid = t.grid || 1;
-						let size = (p[0].width+t.gutter)/grid;
-						let gutter = t.gutter*2
-						let ratio = 750/uni.upx2px(750);
-						let blv = size * ratio - gutter;
-						t.alb_body_size = size * ratio;
-						t.alb_wk_body_size = p[0].width*ratio+t.gutter*2+(grid*2);
-						t.alb_size = blv;
-					})
-					
-					
+					let p = await t.$Querey('.tm-album',t,0).catch(e =>{});
+					if (!p[0]) return;
+					let grid = t.grid || 1;
+					let size = (p[0].width+t.gutter)/grid;
+					let gutter = t.gutter*2
+					let ratio = 750/uni.upx2px(750);
+					let blv = size * ratio - gutter;
+					t.alb_body_size = size * ratio;
+					t.alb_wk_body_size = p[0].width*ratio+t.gutter*2+(grid*2);
+					t.alb_size = blv;
 				
 				});
 			},

+ 8 - 5
tm-vuetify/components/tm-button/tm-button.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="tm-button " :class="[block ? 'd-block' : 'd-inline-block ']">
+	<view class="tm-button " :class="[block ? 'd-block' : 'd-inline-block ']" hover-class="opacity-6">
 		<view
 			class="flex-center tm-button-btn fulled-height"
 			:class="[block ? '' : customDense_puted ? '' : 'ma-10', block ? 'd-block' : 'd-inline-block', black_tmeme ? 'bk' : '', customStyleTm]"
@@ -54,7 +54,7 @@
 					<block v-if="vtype == true">
 						<text
 							v-if="!fab && icon"
-							:class="[`${prefx_computed} ${icon}`, fontColor ? `text-${colors.color}` : '', black_tmeme ? 'opacity-6' : '', 'px-12']"
+							:class="[`${prefx_computed} ${icon}`, fontColor ? `text-${colors.color}` : '', black_tmeme ? 'opacity-6' : '', 'px-12','flex-shrink']"
 							:style="{
 								fontSize: `${icon_size.px}px`,
 								lineHeight:'normal'
@@ -62,7 +62,7 @@
 						></text>
 						<text
 							v-if="fab && icon && !loading && !titl"
-							:class="[`${prefx_computed} ${icon}`, fontColor ? `text-${colors.color}` : '', black_tmeme ? 'opacity-6' : '']"
+							:class="[`${prefx_computed} ${icon}`, fontColor ? `text-${colors.color}` : '', black_tmeme ? 'opacity-6' : '','flex-shrink']"
 							:style="{
 								fontSize: `${icon_size.px}px`,
 								lineHeight:'normal'
@@ -70,7 +70,7 @@
 						></text>
 						<text
 							v-if="fab && icon && !loading && titl"
-							:class="[`${prefx_computed} ${icon}`, fontColor ? `text-${color_tmeme}` : '', black_tmeme ? 'opacity-6' : '']"
+							:class="[`${prefx_computed} ${icon}`, fontColor ? `text-${color_tmeme}` : '', black_tmeme ? 'opacity-6' : '','flex-shrink']"
 							:style="{
 								fontSize: `${icon_size.px}px`,
 								lineHeight:'normal'
@@ -80,7 +80,7 @@
 					<block v-if="vtype == false"><tm-icons :size="icon_size.upx" :name="icon"></tm-icons></block>
 				</slot>
 
-				<view v-if="!fab || showValue" class="d-inline-block tm-button-label flex-shrink" :style="{ fontSize: font_size }" :class="[fontColor ? `text-${colors.color}` : '']">
+				<view v-if="!fab || showValue" class="d-inline-block tm-button-label flex-shrink" :style="{ fontSize: font_size }" :class="[fontColor ? `text-${colors.color}` : '',vertical ? 'full ' : '',]">
 					<slot name="default" :data="label">{{ label }}</slot>
 				</view>
 			</button>
@@ -556,11 +556,13 @@ export default {
 		line-height: 88upx;
 		height: 88upx;
 		vertical-align: middle;
+		
 		// #ifdef H5
 		transition: all 0.3s;
 		// #endif
 		.tm-button-label {
 			vertical-align: middle;
+			
 		}
 		&::after {
 			border: none;
@@ -671,6 +673,7 @@ export default {
 		}
 		&.showValue {
 			line-height: inherit !important;
+			padding: 0 !important;
 		}
 
 		&.noGutter {

+ 32 - 24
tm-vuetify/components/tm-calendar/tm-calendar.vue

@@ -54,13 +54,21 @@
 						:key="index+'_acv'"><text class="text-size-s py-16">{{item}}</text>
 						</tm-col>
 						<!-- #endif -->
-						<tm-col :round="(item.start||item.end||item.checked)?4:0" @click="day_danxuanclick(item,index)"  
-						:color="item.beginEnd?(item.checked===true||item.start||item.end?color_tmeme+(black_tmeme?' bk ':''):(item.guocheng?color_tmeme+' text  opacity-7 '+(black_tmeme?'bk':''):'')):''" 
+						<tm-col 
+						@click="day_danxuanclick(item,index)"  
+						color="" 
 						:custom-class="isSelectedDateClass(item)"
-						align="middle" width="14.28%" v-for="(item,index) in nowData"
-						:key="index">
-						
-							<view  class="tm-calendar-col flex-center flex-col py-4" :class="[black_tmeme&&!item.beginEnd?' opacity-2 ':'']">
+						justify="center" width="14.28%" 
+						v-for="(item,index) in nowData"
+						:key="index"
+						>
+							<view  class="tm-calendar-col flex-center flex-col "
+							 :style="[mode=='rang'?{width:'100%',height:'90rpx'}:{width:'90rpx',height:'90rpx',overflow: 'hidden','border-radius': '50% !important'}]"
+							:class="[
+								item.start?'round-l-24':'',
+								item.end?'round-r-24':'',
+								item.beginEnd?(item.checked===true||item.start||item.end?color_tmeme+(black_tmeme?' bk ':''):(item.guocheng?color_tmeme+' text  opacity-7 '+(black_tmeme?'bk':''):'')):'',
+								black_tmeme&&!item.beginEnd?' opacity-2 ':'']">
 								
 								<text class="text-size-n "
 								:class="[
@@ -70,19 +78,14 @@
 									!item.beginEnd?'text-grey-lighten-3':''
 								]"
 								>{{item.day}}</text>
-								<!-- 
-								 !item.nowMonth&&!item.guocheng&&!item.checked&&!item.start&&!item.end?(black?'text-grey-darken-3':'text-grey-lighten-1'):'',
-								 item.checked||item.start||item.end?'text-white':(item.guocheng?'':'text-grey-lighten-1'),
-								 item.guocheng?'text-'+color:'',
-								 !item.beginEnd?'text-grey-lighten-3':'',
-								 -->
+
 								<view class="text-size-xs  text_bl"
 								>
 								<block v-if="item.start">
-									
+									始
 								</block>
 								<block v-if="item.end">
-									结束
+									-止
 								</block>
 								
 								<block v-if="!item.start&&!item.end">
@@ -134,6 +137,11 @@
 	import tmRow from "@/tm-vuetify/components/tm-row/tm-row.vue"
 	import tmButton from "@/tm-vuetify/components/tm-button/tm-button.vue"
 	import tmPoup from "@/tm-vuetify/components/tm-poup/tm-poup.vue"
+	import * as dayjs from "@/tm-vuetify/tool/function/dayjs/dayjs.min.js"
+	const calendar = require("@/tm-vuetify/tool/function/dayjs/calendar.js")
+	dayjs.extend(calendar)
+	const DayJs = dayjs.default
+	
 	export default {
 		components:{tmIcons,tmCol,tmRow,tmButton,tmPoup},
 		name: "tm-calendar",
@@ -262,7 +270,7 @@
 				if(!this.cal) return;
 				// 自动更新默认的显示时间。
 				if(this.mode=='day'){
-					let d = new Date().toLocaleDateString().replace(/\//g,'-');
+					let d = DayJs().format("YYYY/MM/DD HH:mm:ss");
 					if(this.defaultValue){
 						d = this.defaultValue;
 					}
@@ -343,10 +351,9 @@
 		},
 		methods: {
 			watchRangeTime(){
-				
-				let d = new Date().toLocaleDateString().replace(/\//g,'-');
+				let d =   DayJs().format("YYYY/MM/DD HH:mm:ss")
 				if(this.defaultValue){
-					d = this.defaultValue;
+					d = DayJs(this.defaultValue).format("YYYY/MM/DD HH:mm:ss");
 				}
 				this.cal = new this.$tm.calendar({value:d,start:this.timeStart,end:this.timeEnd})
 				if(this.txt){
@@ -366,8 +373,8 @@
 					if(this.bingStart&&this.bingEnd){
 						
 						this.fanxuanxuanwuBydate(
-						new Date(this.bingStart.replace(/-/g,'/')),
-						new Date(this.bingEnd.replace(/-/g,'/')),
+						DayJs(this.bingStart),
+						DayJs(this.bingEnd),
 						)
 					}
 				}
@@ -609,13 +616,14 @@
 			// 通过外围 时间默认的选中
 			fanxuanxuanwuBydate(start,end){
 				if(!start||!end) return;
+				// .format("YYYY/MM/DD HH:mm:ss")
 				
 				this.$nextTick(function(){
-					if(start.getTime()>end.getTime()) return;
+					if(start.valueOf()>end.valueOf()) return;
 					// 获取开始月份的数据。
-					let sobj = new this.$tm.calendar({value:start.toLocaleDateString().replace(/\//g,'-')});
+					let sobj = new this.$tm.calendar({value:start.format("YYYY/MM/DD HH:mm:ss")});
 					// 获取结束月份的数据。
-					let eobj = new this.$tm.calendar({value:end.toLocaleDateString().replace(/\//g,'-')});
+					let eobj = new this.$tm.calendar({value:end.format("YYYY/MM/DD HH:mm:ss")});
 					function findItemToindex_only(obj,type){
 						let item=null;
 						for(let i=0;i<obj.length;i++){
@@ -657,7 +665,7 @@
 					this.start = start_obj
 					this.end = end_obj
 					// 如果结束和开始相等。
-					if(start.getTime()==end.getTime()){
+					if(start.valueOf()==end.valueOf()){
 						this.start = {...this.start,start:true,end:true}
 						this.end = {...this.end,start:true,end:true}
 					}

+ 16 - 7
tm-vuetify/components/tm-calendarView/tm-calendarView.vue

@@ -48,12 +48,21 @@
 						:key="index"><text class="text-size-s py-16">{{item}}</text>
 						</tm-col>
 						<!-- #endif -->
-						<tm-col :round="(item.start||item.end||item.checked)?4:0" @click="day_danxuanclick(item,index)"
-						:color="item.beginEnd?(item.checked===true||item.start||item.end?color_tmeme+(black_tmeme?' bk ':''):(item.guocheng?color_tmeme+' text  opacity-7 '+(black_tmeme?'bk':''):'')):''" 
+						<tm-col 
+						@click="day_danxuanclick(item,index)"
+						color="" 
 						:custom-class="isSelectedDateClass(item)"
-						align="middle" width="14.28%" v-for="(item,index) in nowData"
-						:key="index">
-							<view class="tm-calendarView-col flex-center flex-col" :class="[black&&!item.beginEnd?' opacity-2 ':'']">
+						justify="center" width="14.28%" 
+						v-for="(item,index) in nowData"
+						:key="index"
+						>
+							<view  class="tm-calendar-col flex-center flex-col "
+							 :style="[mode=='rang'?{width:'100%',height:'90rpx'}:{width:'90rpx',height:'90rpx',overflow: 'hidden','border-radius': '50% !important'}]"
+							:class="[
+								item.start?'round-l-24':'',
+								item.end?'round-r-24':'',
+								item.beginEnd?(item.checked===true||item.start||item.end?color_tmeme+(black_tmeme?' bk ':''):(item.guocheng?color_tmeme+' text  opacity-7 '+(black_tmeme?'bk':''):'')):'',
+								black_tmeme&&!item.beginEnd?' opacity-2 ':'']">
 								<text class="text-size-n"
 								:class="[
 									!item.nowMonth&&!item.guocheng&&!item.checked&&!item.start&&!item.end?(black_tmeme?'text-grey-darken-3':'text-grey-lighten-1'):'',
@@ -65,10 +74,10 @@
 								<view class="text-size-xs  text_bl"
 								>
 								<block v-if="item.start">
-									
+									始
 								</block>
 								<block v-if="item.end">
-									结束
+									-止
 								</block>
 								
 								<block v-if="!item.start&&!item.end">

+ 1 - 1
tm-vuetify/components/tm-countdown/tm-countdown.vue

@@ -53,7 +53,7 @@
 				return ps;
 			},
 			isfinish:function(){
-				if(this.now == this.time) return true;
+				if(this.now == this.time||this.now==0) return true;
 				return false;
 			}
 		},

+ 5 - 5
tm-vuetify/components/tm-dialog/tm-dialog.vue

@@ -302,19 +302,19 @@ export default {
 .tm-dialog {
 	width: 100%;
 	z-index: 600;
-	background-color: rgba(0, 0, 0, 0.35);
+	background-color: rgba(0, 0, 0, 0.3);
 	left: 0;
 	top: 0;
 	
-	backdrop-filter: blur(10px);
-	transition: all 0.35s;
+	backdrop-filter: blur(3px);
+	transition: all 0.24s;
 	.success {
-		animation: success 0.35s linear;
+		animation: success 0.24s ease;
 		
 		// transform: scale(1);
 	}
 	.clickover {
-		animation: clickover 0.35s linear;
+		animation: clickover 0.24s ease;
 	}
 }
 @keyframes clickover {

+ 1 - 1
tm-vuetify/components/tm-dragGrid/tm-dragGrid.vue

@@ -253,10 +253,10 @@
 				this.$emit('change',elList);
 			},
 			inits() {
+				this.grid = this.list.length;
 				if(this.grid==0) return;
 				this.$nextTick(async function() {
 					let p = await this.$Querey(".tm-dragGrid", this).catch(e => {})
-					this.grid = this.list.length;
 					this.listData = [];
 					//组件的宽度
 					this.w = uni.upx2px(this.width) || p[0].width || 300;

+ 0 - 1
tm-vuetify/components/tm-dragList/tm-dragList.vue

@@ -140,7 +140,6 @@
 			jishunTopData() {
 				this.$nextTick(async function() {
 					this.listData = [];
-
 					let p = await this.$Querey(".tm-dragList", this).catch(e => {})
 					this.w = uni.upx2px(this.width) || p[0].width;
 					this.h = uni.upx2px(this.height)

+ 1 - 0
tm-vuetify/components/tm-flotbutton/tm-flotbutton.vue

@@ -20,6 +20,7 @@
 					@touchcancel="$emit('touchcancel', $event)"
 					:open-type="openType"
 					@click="click"
+					:padding="[0,0]"
 					 :showValue="showText" vertical :label="label" :fontSize="fontSize"
 						 :iconSize="iconSize" :theme="color_tmeme" round="rouned" :font-color="fontColor"  :bgcolor="bgcolor"
 						:size="size" :width="width" :height="width" :icon="icon" fab>

+ 16 - 42
tm-vuetify/components/tm-grouplist/tm-grouplist.vue

@@ -6,7 +6,7 @@
 			<view v-if="title&&title!='true'" class="px-32 py-16  text-weight-b " :class="[`text-size-${fontSize}`,titleTheme, black_tmeme ? 'bk' : '']">
 				<slot name="title" :title="title">{{ title }}</slot>
 			</view>
-			<view  v-show="chuliWsok==true">
+			<view  >
 				<slot></slot>
 			</view>
 		</view>
@@ -77,6 +77,20 @@ export default {
 			return this.$tm.vx.state().tmVuetify.black;
 		}
 	},
+	provide(){
+		let t = this;
+		return {
+			GroupListStyles:()=>{
+				return {
+					margin: [0,0],
+					padding: [32,24],
+					shadow: 0,
+					round: 0,
+					borderBottom: true
+				}
+			}
+		}
+	},
 	data() {
 		return {
 			targ:'tm-grouplist',
@@ -99,47 +113,7 @@ export default {
 	},
 	methods: {
 		inits(){
-			let t = this;
-			this.$nextTick(function () {
-				let ch = this.$children;
-				// #ifdef H5
-					ch = [];
-					let cld = this.$children[0].$children
-					
-					while(cld){
-						if(cld[0].$children.length>0){
-							let ods = cld[0].$children;
-							ch =ods[ods.length-1].$children;
-							
-							break;
-						}else{
-							cld = cld[0]?.$children
-						}
-						
-					}
-				// #endif
-				
-						
-				ch.forEach((item,index)=>{
-					
-					if(item.$options.name==="tm-listitem"){
-						item.setConfig({
-							margin: [0,0],
-							padding: [32,24],
-							shadow: 0,
-							round: 0,
-							borderBottom: index===ch.length-1?false:t.borderBottom
-						})
-					}
-				})
-				
-				// #ifndef H5
-					setTimeout(function() {
-						t.chuliWsok = true;
-					}, 30);
-				// #endif
-				
-			})
+			
 		},
 		// 事件一定是子项目tm-listitem为group模式时,才会触发。
 		change(vue_uid) {

+ 157 - 154
tm-vuetify/components/tm-icons/tm-icons.vue

@@ -1,187 +1,190 @@
 <template>
 	<!-- 图标 -->
-	<view @click="onclick" v-if="name" class="tm-icons  vertical-align-top" style="display: inline-block;font-size: 0;" >
-		<view class="flex-center " :style="{
-						width: sizes,
-						height: sizes,
-						lineHeight:sizes,
-						
-					}">
+	<view @click="onclick" v-if="name" class="tm-icons " >
+		<view
+			class="tm-icons-item "
+			:style="{
+				width: sizes,
+				height: sizes,
+				lineHeight: sizes
+			}"
+		>
 			<block v-if="vtype == false">
-				<image :src="name" :style="{
+				<image
+					:src="name"
+					:style="{
 						width: sizes,
 						height: sizes
-					}" mode="scaleToFill"></image>
+					}"
+					mode="scaleToFill"
+				></image>
 			</block>
 			<block v-if="vtype == true">
 				<!-- #ifdef APP-NVUE -->
-				<text :style="{
-						fontSize: sizes,
-						fontFamily:'iconfontTM'
-					}" class="icons "
-					:class="[ black_tmeme ? colors+'-bk':colors, dense ? '' : 'pa-10', black ? 'opacity-6' : '']">{{iconName}}</text>
-				<!-- #endif -->
-				
-				<!-- #ifdef MP -->
-				<text :style="{
+				<text
+					:style="{
 						fontSize: sizes,
-					}" class="icons mt--4"
-					:class="[prefx_computed, black_tmeme ? 'bk' : '', iconName, colorTheme ? colors : '', dense ? '' : 'pa-10', black ? 'opacity-6' : '']"></text>
+						fontFamily: 'iconfontTM'
+					}"
+					class="icons "
+					:class="[black_tmeme ? colors + '-bk' : colors, dense ? '' : 'pa-10', black ? 'opacity-6' : '']"
+				>
+					{{ iconName }}
+				</text>
 				<!-- #endif -->
-				<!-- #ifndef MP -->
-				<text :style="{
+				<!-- #ifndef APP-NVUE -->
+				<text
+					:style="{
 						fontSize: sizes,
-					}" class="icons "
-					:class="[prefx_computed, black_tmeme ? 'bk' : '', iconName, colorTheme ? colors : '', dense ? '' : 'pa-10', black ? 'opacity-6' : '']"></text>
+						
+					}"
+					class="icons "
+					:class="[prefx_computed, black_tmeme ? 'bk' : '', iconName, colorTheme ? colors : '', dense ? '' : 'pa-10', black ? 'opacity-6' : '']"
+				></text>
 				<!-- #endif -->
-				
 			</block>
 		</view>
 	</view>
 </template>
 
 <script>
-	/**
-	 * 图标组件
-	 * @property {Boolean} dense = [true|false] 默认false,是否去除边距
-	 * @property {String} prefx = [iconfont] 默认iconfont,默认图标的前缀,对自定义图标时有好处。
-	 * @property {String} name = [] 默认'',图标名称,注意不带前缀。
-	 * @property {String | Number} size = [] 默认28, 图标大小,单位是upx
-	 * @property {String} color = [primary] 默认primary, 图标主题颜色名
-	 * @property {Function} click 图标点击事件。
-	 * @example <tm-icons name='icon-clear'></tm-icons>
-	 */
-	export default {
-		props: {
-			dense: {
-				//是否小边距
-				type: Boolean,
-				default: false
-			},
-			black: {
-				type: Boolean,
-				default: null
-			},
-			prefx: {
-				type: String, //前缀
-				default: 'iconfont'
-			},
-			name: {
-				type: String, //图标名称。
-				default: ''
-			},
-			size: {
-				type: String | Number, //图标名称。
-				default: 28
-			},
-			color: {
-				type: String, //颜色名称或者颜色值。
-				default: 'primary'
-			},
-			//强制转换图标类型,不通过内置判定,解决自己引用图片svg图标时当作字体图标的错误。
-			iconType: {
-				type: String,
-				default: '' //img|icon
-			},
-			// 跟随主题色的改变而改变。
-			fllowTheme: {
-				type: Boolean | String,
-				default: false
-			}
+/**
+ * 图标组件
+ * @property {Boolean} dense = [true|false] 默认false,是否去除边距
+ * @property {String} prefx = [iconfont] 默认iconfont,默认图标的前缀,对自定义图标时有好处。
+ * @property {String} name = [] 默认'',图标名称,注意不带前缀。
+ * @property {String | Number} size = [] 默认28, 图标大小,单位是upx
+ * @property {String} color = [primary] 默认primary, 图标主题颜色名
+ * @property {Function} click 图标点击事件。
+ * @example <tm-icons name='icon-clear'></tm-icons>
+ */
+export default {
+	props: {
+		dense: {
+			//是否小边距
+			type: Boolean,
+			default: false
 		},
-		computed: {
-			iconName: function() {
-				// #ifdef APP-NVUE || APP-PLUS-NVUE
-				let fontList = require('@/tm-vuetify/scss/iconfonts/iconfont.json');
-				let name = this.name.replace('icon-', '');
-				
-				// fontList.glyphs
-				let itemIcon = fontList.glyphs.find((item, index) => {
-					return item.font_class == name;
-				})
-				return eval('"\\u' + itemIcon.unicode + '"');
-				// #endif
-				return this.name;
-			},
-			prefx_computed(){
-				let prefix = this.name.split('-')[0];
-				if(prefix=='icon') return 'iconfont';
-				if(prefix=='mdi') return 'mdi';
-				
-				return prefix;
-			},
-			black_tmeme: function() {
+		black: {
+			type: Boolean,
+			default: null
+		},
+		prefx: {
+			type: String, //前缀
+			default: 'iconfont'
+		},
+		name: {
+			type: String, //图标名称。
+			default: ''
+		},
+		size: {
+			type: String | Number, //图标名称。
+			default: 28
+		},
+		color: {
+			type: String|null, //颜色名称或者颜色值。
+			default: 'primary'
+		},
+		//强制转换图标类型,不通过内置判定,解决自己引用图片svg图标时当作字体图标的错误。
+		iconType: {
+			type: String,
+			default: '' //img|icon
+		},
+		// 跟随主题色的改变而改变。
+		fllowTheme: {
+			type: Boolean | String,
+			default: false
+		}
+	},
+	computed: {
+		iconName: function() {
+			// #ifdef APP-NVUE || APP-PLUS-NVUE
+			let fontList = require('@/tm-vuetify/scss/iconfonts/iconfont.json');
+			let name = this.name.replace('icon-', '');
 
-				return this.$tm.vx.state().tmVuetify.black;
-			},
-			vtype: function() {
-				if (this.name[0] == "." ||
-					this.name[0] == "/" ||
-					this.name.substring(0, 4) == 'http' ||
-					this.name.substring(0, 5) == 'https' ||
-					this.name.substring(0, 3) == 'ftp'
-				) {
-					return false;
-				}
-				return true;
-			},
-			sizes: function() {
-				if (typeof this.size === 'string') {
-					if (/[rpx|upx|rem|em|vx|vh|px]$/.test(this.size)) {
-						return this.size;
-					}
-					return uni.upx2px(parseInt(this.size)) + 'px';
-				}
-				if (typeof this.size === 'number' && !isNaN(this.size)) {
-					return uni.upx2px(this.size) + 'px';
-				}
-			},
-			color_tmeme: function() {
+			// fontList.glyphs
+			let itemIcon = fontList.glyphs.find((item, index) => {
+				return item.font_class == name;
+			});
+			return eval('"\\u' + itemIcon.unicode + '"');
+			// #endif
+			return this.name;
+		},
+		prefx_computed() {
+			let prefix = this.name.split('-')[0];
+			if (prefix == 'icon') return 'iconfont';
+			if (prefix == 'mdi') return 'mdi';
 
-				if (this.$tm.vx.state().tmVuetify.color !== null && this.$tm.vx.state().tmVuetify.color && this
-					.fllowTheme) {
-					return this.$tm.vx.state().tmVuetify.color;
-				}
-				return this.color;
-			},
-			colors: {
-				get: function() {
-					if (!this.color_tmeme) return 'text-primary';
-					if (!this.$TestColor(this.color_tmeme)) {
-						return this.color_tmeme;
-					}
-					return 'text-' + this.color_tmeme;
-				},
-				set: function() {
-					if (!this.$TestColor(this.color_tmeme)) {
-						this.colorTheme = false;
-						return this.color_tmeme;
-					}
-					this.colorTheme = true;
+			return prefix;
+		},
+		black_tmeme: function() {
+			return this.$tm.vx.state().tmVuetify.black;
+		},
+		vtype: function() {
+			if (this.name[0] == '.' || this.name[0] == '/' || this.name.substring(0, 4) == 'http' || this.name.substring(0, 5) == 'https' || this.name.substring(0, 3) == 'ftp') {
+				return false;
+			}
+			return true;
+		},
+		sizes: function() {
+			if (typeof this.size === 'string') {
+				if (/[rpx|upx|rem|em|vx|vh|px]$/.test(this.size)) {
+					return this.size;
 				}
+				return uni.upx2px(parseInt(this.size)) + 'px';
+			}
+			if (typeof this.size === 'number' && !isNaN(this.size)) {
+				return uni.upx2px(this.size) + 'px';
 			}
 		},
-		data() {
-			return {
-				colorTheme: true
-			};
+		color_tmeme: function() {
+			if (this.$tm.vx.state().tmVuetify.color !== null && this.$tm.vx.state().tmVuetify.color && this.fllowTheme) {
+				return this.$tm.vx.state().tmVuetify.color;
+			}
+			return this.color;
 		},
-		methods: {
-			onclick(e) {
-				this.$emit('click', e);
+		colors: {
+			get: function() {
+				if (!this.color_tmeme) return 'text-primary';
+				if (!this.$TestColor(this.color_tmeme)) {
+					return this.color_tmeme;
+				}
+				return 'text-' + this.color_tmeme;
+			},
+			set: function() {
+				if (!this.$TestColor(this.color_tmeme)) {
+					this.colorTheme = false;
+					return this.color_tmeme;
+				}
+				this.colorTheme = true;
 			}
 		}
-	};
+	},
+	data() {
+		return {
+			colorTheme: true
+		};
+	},
+	methods: {
+		onclick(e) {
+			this.$emit('click', e);
+		}
+	}
+};
 </script>
 
 <style lang="scss" scoped>
-	.tm-icons {
-		vertical-align: middle;
-
-		.icons {
-			&.black {
-				color: #fff;
-			}
+.tm-icons {
+	display: inline-block;
+	.tm-icons-item{
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+	.icons {
+		&.black {
+			color: #fff;
 		}
 	}
+}
 </style>

+ 5 - 2
tm-vuetify/components/tm-input/tm-input.vue

@@ -25,7 +25,7 @@
 					<view v-if="title" class="d-inline-block  "
 					:style="{fontSize:title_size}"
 						:class="[titleClass,black_tmeme?'bk  text-grey-lighten-3':'']">
-						<text v-if="required" class="text-red">*</text>
+						<text v-if="_required" class="text-red">*</text>
 						<slot name="default" :title="title">
 							{{title}}
 						</slot>
@@ -368,6 +368,9 @@
 			};
 		},
 		computed: {
+			_required(){
+				return this.required
+			},
 			height_rpx:function(){
 				return this.height;
 			},
@@ -430,7 +433,7 @@
 				set:function(val){
 					this.$emit('input', val)
 					this.$emit('update:value', val)
-					if (this.required) {
+					if (this._required) {
 						this.$nextTick(function(){
 							this.verifyInput();
 						})

+ 27 - 9
tm-vuetify/components/tm-listitem/tm-listitem.vue

@@ -1,6 +1,6 @@
 <!-- 列表项目,类似单元格。 -->
 <template>
-	<view class="tm-listitem ">
+	<view class="tm-listitem " :hover-class="url?'opacity-6':''">
 		<view
 
 			@click="click"
@@ -280,9 +280,15 @@ export default {
 				return this.$tm.vx.state().tmVuetify.color;
 			}
 			return this.leftIconColor;
+		},
+		groupPublickStyle:function(){
+			if(!this.GroupListStyles) return null
+			return this.GroupListStyles()
 		}
 	},
-
+	inject:{
+		GroupListStyles:{default:null}
+	},
 	data() {
 		return {
 			pz_theme: {
@@ -296,13 +302,25 @@ export default {
 		};
 	},
 	created() {
-		this.pz_themeCus = {
-			margin: this.margin,
-			padding: this.padding,
-			shadow: this.shadow,
-			round: this.round,
-			borderBottom: this.borderBottom
-		};
+		if(this.groupPublickStyle){
+			this.pz_themeCus = {
+				margin: this.groupPublickStyle.margin,
+				padding: this.groupPublickStyle.padding,
+				shadow: this.groupPublickStyle.shadow,
+				round: this.groupPublickStyle.round,
+				borderBottom: this.groupPublickStyle.borderBottom||this.borderBottom
+			};
+		}else{
+			this.pz_themeCus = {
+				margin: this.margin,
+				padding: this.padding,
+				shadow: this.shadow,
+				round: this.round,
+				borderBottom: this.borderBottom
+			};
+		}
+		
+		
 	},
 	mounted() {
 		

+ 4 - 1
tm-vuetify/components/tm-menubars/tm-menubars.vue

@@ -22,7 +22,6 @@
 							<text class="iconfont icon-angle-left" :class="[`text-${fontColorTheme}`]" :style="{ fontSize: '28rpx' }"></text>
 						</navigator>
 					</block>
-
 					<slot name="left" :data="{ style: widths, isTransparent: isTransparent, title: title }"></slot>
 				</view>
 				<view class="center flex-center text-size-g text-overflow text-align-center" :class="[`text-${fontColorTheme}`]">
@@ -36,6 +35,7 @@
 			</view>
 		</view>
 	</view>
+	
 </template>
 
 <script>
@@ -61,6 +61,9 @@
 		components: {
 			tmIcons
 		},
+		options:{
+			multipleSlots: true
+		},
 		name: 'tm-menubars',
 		props: {
 			// 是否开启暗黑模式

+ 12 - 10
tm-vuetify/components/tm-more/tm-more.vue

@@ -109,18 +109,12 @@ import tmIcons from "@/tm-vuetify/components/tm-icons/tm-icons.vue"
 	mounted() {
 		this.$nextTick(function(){
 			this.downOpen = this.open;
-			
-			let t = this;
-			
-			t.$Querey('.tm-more-content',t).then(syninfo=>{
-				if (syninfo[0].height - 40 <= t.hs) {
-					t.show = false;
-				}
-			}).catch(e => {});
-			
-			
+			this.getRect()
 		})
 	},
+	updated() {
+		this.getRect()
+	},
 	computed: {
 		hs: function() {
 			return uni.upx2px(this.maxHeight) || 100;
@@ -131,6 +125,14 @@ import tmIcons from "@/tm-vuetify/components/tm-icons/tm-icons.vue"
 		}
 	},
 	methods: {
+		getRect(){
+			let t = this;
+			t.$Querey('.tm-more-content',t,0).then(syninfo=>{
+				if (syninfo[0].height - 40 <= t.hs) {
+					t.show = false;
+				}
+			}).catch(e => {});
+		},
 		openMore() {
 			this.$emit('click');
 			if (this.disabled) return;

+ 7 - 7
tm-vuetify/components/tm-poup/tm-poup.vue

@@ -232,7 +232,7 @@
 				this.aniData = '';
 				let aniData = uni.createAnimation({
 					duration:240,
-					timingFunction: 'linear',
+					timingFunction: 'ease',
 				})
 				this.aniData = aniData;
 				if(pos=='bottom'){
@@ -327,15 +327,15 @@
 			pointer-events: none;
 		}
 		&.blur {
-			backdrop-filter: blur(10px);
+			backdrop-filter: blur(3px);
 		}
 
 		&.on {
-			animation: opta 1s linear;
+			animation: opta 1s ease;
 		}
 
 		&.off {
-			animation: opta_off 0.35s linear;
+			animation: opta_off 0.24s ease;
 		}
 		.tm-poup-wk {
 			position: absolute;
@@ -393,7 +393,7 @@
 
 	@keyframes opta {
 		from {
-			opacity: 0.6;
+			opacity: 0.3;
 		}
 
 		to {
@@ -495,7 +495,7 @@
 	@keyframes Centerleft {
 		from {
 			transform: scale(0.65);
-			opacity: 0.65;
+			opacity: 0.3;
 		}
 
 		to {
@@ -512,7 +512,7 @@
 
 		to {
 			transform: scale(0.65);
-			opacity: 0.65;
+			opacity: 0.3;
 
 		}
 	}

+ 16 - 10
tm-vuetify/components/tm-propress/tm-propress.vue

@@ -166,19 +166,25 @@ export default {
 	destroyed() {
 		clearInterval(this.tmiddd)
 	},
-	async mounted() {
-		
-		this.$nextTick(async function(){
-			let p = await this.$Querey(".tm-propress",this).catch(e=>{})
-			
-			this.width_upx = p[0].width+'px';
-			if(this.loading){
-				await this.startAni();
-			}
-		})
+	mounted() {
+		this.getRect()
 		
 	},
+	updated() {
+		this.getRect()
+	},
 	methods: {
+		getRect(){
+			let t =this
+			this.$Querey(".tm-propress",this,0).then((p)=>{
+				if(!p) return;
+				if(!p[0].width) return;
+				t.width_upx = p[0].width+'px';
+				if(t.loading){
+					t.startAni();
+				}
+			}).catch(e=>{})
+		},
 		async startAni(){
 			// clearInterval(this.tmiddd)
 			let t = this;

+ 27 - 26
tm-vuetify/components/tm-row/tm-row.vue

@@ -1,10 +1,7 @@
 <template>
 	<view @click="$emit('click',$event)" :gutter="gutter" class="tm--row" :class="[preatClass]" >
 		<view   class="tm--row--body" :style="style" :class="[customClass]">
-			<view  v-show="chuliWsok==true">
-				<slot></slot>
-			</view>
-			
+			<slot></slot>
 		</view>
 	</view>
 </template>
@@ -64,30 +61,34 @@
 				width_px:0,
 				children_num:0,
 				style:'',
-				chuliWsok:false,//处理完宽度计算信息再进行显示内部内容。
 			};
 		},
-		async mounted() {
-			let t = this;
-			
-			await this.$Querey('.tm--row',this).then(preantw=>{
-				t.width_px = preantw[0].width;
-				// #ifndef H5
-				t.children_num = t.$children.length;
-				// #endif
-				// #ifdef H5
-				t.children_num = t.$children[0].$children[0].$children[0].$children.length;
-				// #endif
-				t.style = uni.$tm.objToString({
-					'justify-content':t.justify,
-					'align-items':t.align,
-					'width':t.width,
-					'height':!t.height?'default':(uni.upx2px(t.height)+'px')
-				},';');
-				
-				t.chuliWsok = true;
-			}).catch(e=>{})
-			
+		updated() {
+			this.getContinaRect()
+		},
+		mounted() {
+			this.getContinaRect()
+		},
+		methods:{
+			getContinaRect(){
+				let t = this;
+				this.$Querey('.tm--row',this).then(preantw=>{
+					t.width_px = preantw[0].width;
+					// #ifndef H5
+					t.children_num = t.$children.length;
+					// #endif
+					// #ifdef H5
+					t.children_num = t.$children[0].$children[0].$children[0].$children.length;
+					// #endif
+					t.style = uni.$tm.objToString({
+						'justify-content':t.justify,
+						'align-items':t.align,
+						'width':t.width,
+						'height':!t.height?'default':(uni.upx2px(t.height)+'px')
+					},';');
+					
+				}).catch(e=>{})
+			}
 		}
 	}
 </script>

+ 4 - 4
tm-vuetify/components/tm-segTabs/tm-segTabs.vue

@@ -191,10 +191,10 @@
 		},
 		mounted() {
 			let t = this;
-			uni.$tm.sleep(30).then(()=>{
-				t.setInits();
-				
-			})
+			t.setInits();
+		},
+		updated() {
+			this.setInits();
 		},
 		methods: {
 			setInits() {

+ 2 - 20
tm-vuetify/components/tm-sheet/tm-sheet.vue

@@ -25,7 +25,7 @@
 		]"
 		
 	>
-		<view class="fulled" v-if="showSheet">
+		<view class="fulled" >
 			<slot name="default"></slot>
 		</view>
 	</view>
@@ -151,25 +151,7 @@ export default {
 			return this.$tm.vx.state().tmVuetify.black;
 		}
 	},
-	data() {
-		return {
-			showSheet:true,
-		};
-	},
-	created() {
-		// #ifdef APP-VUE || APP-PLUS || MP
-		this.showSheet = false;
-		// #endif
-	},
-	mounted() {
-		let t= this;
-		
-		// #ifdef APP-VUE || APP-PLUS || MP
-		setTimeout(function() {
-			t.showSheet = true;
-		}, 30);
-		// #endif
-	}
+
 };
 </script>
 <style lang="scss" scoped>

+ 0 - 1
tm-vuetify/components/tm-signBoard/tm-signBoard.vue

@@ -12,7 +12,6 @@
 			@touchstart="touchstart"
 			@touchmove.stop.prevent="touchsmove"
 			@touchend="touchsend"
-			
 			@mousedown="touchstart"
 			@mousemove.stop.prevent="touchsmove"
 			@mouseup="touchsend"

+ 12 - 1
tm-vuetify/components/tm-slider/tm-slider.vue

@@ -244,6 +244,17 @@
 				this.barLeft = rdl >= this.sliderWidth || rdl < 0 ? this.sliderWidth : rdl;
 			});
 		},
+		async updated() {
+			this.$nextTick(async function() {
+				await this.getwidth();
+				if (Math.abs(this.value) > Math.abs(this.max)) {
+					this.isError = true;
+					return;
+				}
+				let rdl = this.sliderWidth * (Math.abs(this.value) / Math.abs(this.max));
+				this.barLeft = rdl >= this.sliderWidth || rdl < 0 ? this.sliderWidth : rdl;
+			});
+		},
 		methods: {
 			barStart(e) {
 				
@@ -306,7 +317,7 @@
 				
 			},
 			async getwidth() {
-				let res = await this.$Querey('.tm-slider-id', this).catch(e=>{});
+				let res = await this.$Querey('.tm-slider-id', this,0).catch(e=>{});
 				res[0].width = res[0].width||uni.upx2px(this.width);
 				res[0].height = res[0].height||uni.upx2px(this.height);
 				if (this.showLeft === false && this.showRight === false) {

+ 15 - 1
tm-vuetify/components/tm-sliders/tm-sliders.vue

@@ -297,6 +297,20 @@
 				this.barLeft_1 = rdl_1 >= this.sliderWidth || rdl_1 < 0 ? this.sliderWidth : rdl_1;
 			});
 		},
+		updated() {
+			this.$nextTick(async function() {
+				await this.getwidth();
+			
+				if (Math.abs(this.value[1]) > Math.abs(this.max)) {
+					this.isError = true;
+					return;
+				}
+				let rdl = this.sliderWidth * (Math.abs(this.value[0]) / Math.abs(this.max));
+				this.barLeft = rdl >= this.sliderWidth || rdl < 0 ? this.sliderWidth : rdl;
+				let rdl_1 = this.sliderWidth * (Math.abs(this.value[1]) / Math.abs(this.max));
+				this.barLeft_1 = rdl_1 >= this.sliderWidth || rdl_1 < 0 ? this.sliderWidth : rdl_1;
+			});
+		},
 		methods: {
 			barStart(e) {
 				if (this.disabled || this.isError) return;
@@ -407,7 +421,7 @@
 			},
 			
 			async getwidth() {
-				let res = await this.$Querey('.tm-slider-id', this).catch(e=>{});
+				let res = await this.$Querey('.tm-slider-id', this,0).catch(e=>{});
 				res[0].width = res[0].width||uni.upx2px(this.width);
 				res[0].height = res[0].height||uni.upx2px(this.height);
 				

+ 344 - 385
tm-vuetify/components/tm-swiper/tm-swiper.vue

@@ -1,83 +1,43 @@
 <template>
 	<view class="tm-swiper " :class="[inline ? 'd-inline-block' : '']">
-		<swiper
-			:previous-margin="`${ani3d}rpx`"
-			:next-margin="`${ani3d}rpx`"
-			:style="{
+		<swiper :previous-margin="`${ani3d}rpx`" :next-margin="`${ani3d}rpx`" :style="{
 				width: w_s + 'rpx',
 				height: h_s + 'rpx'
-			}"
-			:vertical="vertical"
-			:autoplay="autoplay && !isPlayVedio"
-			:circular="circular"
-			:interval="interval"
-			:duration="duration"
-			:indicator-active-color="color_tmeme"
-			:current="nowIndex"
-			@change="change"
-		>
+			}" :vertical="vertical" :autoplay="autoplay&&!isPlayVedio" :circular="circular" :interval="interval" :duration="duration"
+			:indicator-active-color="color_tmeme" :current="nowIndex" @change="change" :class="[round_num > 0 ? ` round-${round_num} overflow` : '']">
 			<block v-for="(item, index) in dataList" :key="index">
-				<swiper-item
-					:style="{
+				<swiper-item :style="{
 						width: w_s + 'rpx',
 						height: h_s + 'rpx'
-					}"
-					class="shadow-24"
-					:class="[round_num > 0 ? ` round-${round_num} overflow` : '']"
-				>
+					}" class="shadow-24" :class="[round_num > 0 ? ` round-${round_num} overflow` : '']">
 					<view
-						:class="[
-							nowIndex !== index && ani3d > 0 ? 'a3d' : '',
-							round_num > 0 ? ` round-${round_num} overflow` : '',
-							nowIndex < index && ani3d > 0 ? 'a3dL' : '',
-							nowIndex > index && ani3d > 0 ? 'a3dR' : ''
-						]"
-						class="tm-swiper-ik fulled fulled-height"
-						:key="index"
-					>
+						:class="[nowIndex !== index&&ani3d>0?'a3d':'',round_num > 0 ? ` round-${round_num} overflow` : '',nowIndex<index&&ani3d>0?'a3dL':'',nowIndex>index&&ani3d>0?'a3dR':'']"
+						class="tm-swiper-ik fulled fulled-height" :key="index">
 						<view class="actvieMarginDh">
-							<view class="actvieMarginDh-item" :class="[round_num > 0 ? ` round-${round_num} overflow` : '']">
-								<image
-									v-if="item.dtype != 'video'"
-									@click="itemClick(item)"
-									:style="{
+							<view class="actvieMarginDh-item"
+								:class="[round_num > 0 ? ` round-${round_num} overflow` : '']">
+								<image v-if="item.dtype!='video'" @click="itemClick(item)" :style="{
 										height: h_s + 'rpx',
-										width: w_s - margin_px + 'rpx'
-									}"
-									@load="imgload($event, index)"
-									:src="item.url"
-									:class="[round_num > 0 ? ` round-${round_num} overflow` : '']"
-								></image>
-								<video
-									@play="isPlayVedio = true"
-									@pause="isPlayVedio = false"
-									@ended="isPlayVedio = false"
-									:autoplay="nowIndex == index ? true : false"
-									:style="{
+										width: (w_s - margin_px) + 'rpx'
+									}" @load="imgload($event, index)" :src="item.url"
+									:class="[round_num > 0 ? ` round-${round_num} overflow` : '']"></image>
+								<video @play="isPlayVedio = true" @pause="isPlayVedio=false" @ended="isPlayVedio=false" :autoplay="nowIndex == index?true:false" :style="{
 										height: h_s + 'rpx',
-										width: w_s - margin_px + 'rpx'
-									}"
-									v-if="item.dtype == 'video'"
-									:src="item.url"
-								></video>
+										width: (w_s - margin_px) + 'rpx'
+									}" v-if="item.dtype=='video'" :src="item.url"></video>
 
-								<view
-									v-if="item.title"
-									:style="{
-										width: w_s - margin_px + 'rpx'
-									}"
-									class="flex-start relative "
-								>
+								<view v-if="item.title" :style="{
+										width: (w_s - margin_px) + 'rpx'
+									}" class="flex-start relative ">
 									<view
 										class="text-size-s px-16 absolute b-0 l-0 zIndex-14 flex-start text-overflow text-white"
 										:style="{
-											height: '66rpx',
-											width: w_s - margin_px - 32 + 'rpx',
-											lineHeight: '66rpx',
-											background: 'rgba(0,0,0,0.4)'
-										}"
-									>
-										{{ item.title }}
+										height: '66rpx',
+										width: (w_s - margin_px-32) + 'rpx',
+										lineHeight:'66rpx',
+										background:'rgba(0,0,0,0.4)'
+									}">
+										{{item.title}}
 									</view>
 								</view>
 							</view>
@@ -86,24 +46,19 @@
 				</swiper-item>
 			</block>
 		</swiper>
-		<view class="tm-swiper-dot" v-if="indicatorDots && nowshowDot" :class="[dotDirection]">
+		<view class="tm-swiper-dot" v-if="indicatorDots&&nowshowDot" :class="[dotDirection]">
+		
 			<block v-if="dotModel != 'round'">
-				<view
-					@click="nowIndex = index"
-					v-for="(item, index) in dataList"
-					:key="index"
+				<view @click="nowIndex = index" v-for="(item, index) in dataList" :key="index"
 					class="tm-swiper-dot-item  flex-center  mx-8"
-					:class="[nowIndex == index ? color_tmeme : 'unactive', dotModel]"
-				>
+					:class="[nowIndex == index ? color_tmeme : 'unactive', dotModel]">
 					<text v-if="dotModel === 'number'" class="text-size-xs">{{ index + 1 }}</text>
 				</view>
 			</block>
 			<block v-if="dotModel == 'round'">
-				<view
-					:class="[dotModel]"
+				<view :class="[dotModel]"
 					class="text-size-xs balck text-white  round-24 px-24 tm-swiper-dot-item  flex-center flex-shrink"
-					:style="{ height: '40rpx', minWidth: '60rpx' }"
-				>
+					:style="{ height: '40rpx', minWidth: '60rpx' }">
 					{{ nowIndex + 1 + '/' + dataList.length }}
 				</view>
 			</block>
@@ -112,353 +67,357 @@
 </template>
 
 <script>
-/**
- * 图片轮播
- * @description 很参数与原官方相同。
- * @property {Number} width = [] 默认:0,轮播宽度,0为自己计算。
- * @property {Number} height = [] 默认:0,轮播高度,0为自己计算。
- * @property {Array} list = [] 默认:[],图片列表,可以是string数组或者object数组。
- * @property {String} rang-key = [] 默认:[],图片列表object数组时,需要提供图片地址 的键值。
- * @property {Boolean} inline = [] 默认:false,是否内联,方便一排放多个轮播组件。
- * @property {Boolean} previmage = [] 默认:true,是否预览图片,点击图片时,放大预览。
- * @property {Boolean} vertical = [] 默认:false,是否竖向滚动。
- * @property {Boolean} circular = [] 默认:false,是否采用衔接滑动,即播放到末尾后重新回到开头
- * @property {Boolean} autoplay = [] 默认:false,是否自动切换
- * @property {Number} interval = [] 默认:3000,自动切换时间间隔
- * @property {Number} duration = [] 默认:500,滑动动画时长
- * @property {Number} ani3d = [] 默认:0,开启3d缩放动画
- * @property {Boolean} indicator-dots = [] 默认:true,是否显示指示
- * @property {String} color = [] 默认:primary,指示点的主题色。
- * @property {Number} current = [] 默认:0,如果需要双向绑定请使用current.sync.
- * @property {String} dot-model = [dot|number|rect|round] 默认:dot,指示点的类型。
- * @property {String} dot-direction = [left|center|right] 默认:center,指示点的位置。
- * @property {Number} round = [] 默认:0,圆角,单位rpx
- * @property {Number} margin = [] 默认:0,单位rpx
- * @property {Function} change 轮播切换时触发。参数返回当前播放位置。
- * @property {Function} click 轮播项目被点击时触发发,返回项目数据
- * @example <tm-swiper :list="['https://picsum.photos/300?jv=3','https://picsum.photos/300?jv=3']" ></tm-swiper>
- */
-export default {
-	name: 'tm-swiper',
-	props: {
-		width: {
-			type: Number | String,
-			default: 0
-		},
-		// 自定高度。
-		height: {
-			type: Number | String,
-			default: 0
-		},
-		list: {
-			type: Array,
-			default: () => {
-				return [];
-			}
-		},
-		rangKey: {
-			type: String,
-			default: 'src'
-		},
-		// 是否内联。
-		inline: {
-			type: Boolean,
-			default: false
-		},
-		// 是否开启预览模式,即点击图片可以预览。
-		previmage: {
-			type: Boolean | String,
-			default: true
-		},
-		vertical: false,
-		circular: false,
-		autoplay: false,
-		interval: {
-			type: Number,
-			default: 3000
-		},
-		duration: {
-			type: Number,
-			default: 500
-		},
-		// 是否显示指示
-		indicatorDots: false,
-		//指示点的主题色。
-		color: {
-			type: String,
-			default: 'primary'
-		},
-		// 当前位置。
-		current: {
-			type: Number,
-			default: 0
-		},
-		ani3d: {
-			type: Number,
-			default: 0
-		},
-		// 指示点的类型。
-		dotModel: {
-			type: String,
-			default: 'dot' //dot|number|rect
-		},
-		// 指示点的位置 。
-		dotDirection: {
-			type: String,
-			default: 'center' //left|center|right
-		},
-		round: {
-			type: Boolean | Number,
-			default: 0
-		},
-		margin: {
-			type: Number,
-			default: 0
-		},
-		// 跟随主题色的改变而改变。
-		fllowTheme: {
-			type: Boolean | String,
-			default: true
-		}
-	},
-	watch: {
-		current: function(newval) {
-			// if (newval >= this.dataList.length) {
-			// 	this.nowIndex = 0;
-			// 	return;
-			// }
-			// this.nowIndex = newval;
-		},
-		list: {
-			deep: true,
-			handler() {
-				this.chulidata();
-			}
-		}
-	},
-	computed: {
-		color_tmeme: function() {
-			if (this.$tm.vx.state().tmVuetify.color !== null && this.$tm.vx.state().tmVuetify.color && this.fllowTheme) {
-				return this.$tm.vx.state().tmVuetify.color;
-			}
-			return this.color;
-		},
-		round_num: function() {
-			if (typeof this.round === 'boolean') return 0;
-			return this.round;
-		},
-		nowIndex: {
-			get: function() {
-				return this.dotIndex;
+	/**
+	 * 图片轮播
+	 * @description 很参数与原官方相同。
+	 * @property {Number} width = [] 默认:0,轮播宽度,0为自己计算。
+	 * @property {Number} height = [] 默认:0,轮播高度,0为自己计算。
+	 * @property {Array} list = [] 默认:[],图片列表,可以是string数组或者object数组。
+	 * @property {String} rang-key = [] 默认:[],图片列表object数组时,需要提供图片地址 的键值。
+	 * @property {Boolean} inline = [] 默认:false,是否内联,方便一排放多个轮播组件。
+	 * @property {Boolean} previmage = [] 默认:true,是否预览图片,点击图片时,放大预览。
+	 * @property {Boolean} vertical = [] 默认:false,是否竖向滚动。
+	 * @property {Boolean} circular = [] 默认:false,是否采用衔接滑动,即播放到末尾后重新回到开头
+	 * @property {Boolean} autoplay = [] 默认:false,是否自动切换
+	 * @property {Number} interval = [] 默认:3000,自动切换时间间隔
+	 * @property {Number} duration = [] 默认:500,滑动动画时长
+	 * @property {Number} ani3d = [] 默认:0,开启3d缩放动画
+	 * @property {Boolean} indicator-dots = [] 默认:true,是否显示指示
+	 * @property {String} color = [] 默认:primary,指示点的主题色。
+	 * @property {Number} current = [] 默认:0,如果需要双向绑定请使用current.sync.
+	 * @property {String} dot-model = [dot|number|rect|round] 默认:dot,指示点的类型。
+	 * @property {String} dot-direction = [left|center|right] 默认:center,指示点的位置。
+	 * @property {Number} round = [] 默认:0,圆角,单位rpx
+	 * @property {Number} margin = [] 默认:0,单位rpx
+	 * @property {Function} change 轮播切换时触发。参数返回当前播放位置。
+	 * @property {Function} click 轮播项目被点击时触发发,返回项目数据
+	 * @example <tm-swiper :list="['https://picsum.photos/300?jv=3','https://picsum.photos/300?jv=3']" ></tm-swiper>
+	 */
+	export default {
+		name: 'tm-swiper',
+		props: {
+			width: {
+				type: Number | String,
+				default: 0
+			},
+			// 自定高度。
+			height: {
+				type: Number | String,
+				default: 0
+			},
+			list: {
+				type: Array,
+				default: () => {
+					return [];
+				}
+			},
+			rangKey: {
+				type: String,
+				default: 'src'
 			},
-			set: function(val) {
-				this.dotIndex = val;
-				this.$emit('update:current', val);
-				this.$emit('change', val);
+			// 是否内联。
+			inline: {
+				type: Boolean,
+				default: false
+			},
+			// 是否开启预览模式,即点击图片可以预览。
+			previmage: {
+				type: Boolean | String,
+				default: true
+			},
+			vertical: false,
+			circular: false,
+			autoplay: false,
+			interval: {
+				type: Number,
+				default: 3000
+			},
+			duration: {
+				type: Number,
+				default: 500
+			},
+			// 是否显示指示
+			indicatorDots: false,
+			//指示点的主题色。
+			color: {
+				type: String,
+				default: 'primary'
+			},
+			// 当前位置。
+			current: {
+				type: Number,
+				default: 0
+			},
+			ani3d: {
+				type: Number,
+				default: 0
+			},
+			// 指示点的类型。
+			dotModel: {
+				type: String,
+				default: 'dot' //dot|number|rect
+			},
+			// 指示点的位置 。
+			dotDirection: {
+				type: String,
+				default: 'center' //left|center|right
+			},
+			round: {
+				type: Boolean | Number,
+				default: 0
+			},
+			margin: {
+				type: Number,
+				default: 0
+			},
+			// 跟随主题色的改变而改变。
+			fllowTheme: {
+				type: Boolean | String,
+				default: true
 			}
 		},
-		nowshowDot: function() {
-			return this.showdot();
-		},
-		w_s: {
-			get: function() {
-				return this.w_w;
+		watch: {
+			current: function(newval) {
+				if (newval >= this.dataList.length) {
+					this.nowIndex = 0;
+					return;
+				}
+				this.nowIndex = newval;
 			},
-			set: function(val) {
-				this.w_w = val;
+			list: {
+				deep: true,
+				handler() {
+					this.chulidata();
+				}
 			}
 		},
-		h_s: {
-			get: function() {
-				return this.h_h;
+		computed: {
+			color_tmeme: function() {
+				if (this.$tm.vx.state().tmVuetify.color !== null && this.$tm.vx.state().tmVuetify.color && this
+					.fllowTheme) {
+					return this.$tm.vx.state().tmVuetify.color;
+				}
+				return this.color;
 			},
-			set: function(val) {
-				this.h_h = val;
-			}
+			round_num: function() {
+				if (typeof this.round === 'boolean') return 0;
+				return this.round;
+			},
+			nowIndex: {
+				get: function() {
+					return this.dotIndex;
+				},
+				set: function(val) {
+					this.dotIndex = val;
+					this.$emit('update:current', val);
+					this.$emit('change', val);
+				}
+			},
+			nowshowDot:function(){
+				return this.showdot();
+				
+			},
+			w_s: {
+				get: function() {
+					return this.w_w;
+				},
+				set: function(val) {
+					this.w_w = val;
+				}
+			},
+			h_s: {
+				get: function() {
+					return this.h_h;
+				},
+				set: function(val) {
+					this.h_h = val;
+				}
+			},
+			margin_px: function() {
+				return this.margin * 2;
+			},
+
 		},
-		margin_px: function() {
-			return this.margin * 2;
-		}
-	},
 
-	data() {
-		return {
-			w_w: 0,
-			h_h: 0,
-			dataList: [],
-			dotIndex: 0,
-			isPlayVedio: false
-		};
-	},
-	async mounted() {
-		// this.nowIndex = this.current;
+		data() {
+			return {
+				w_w: 0,
+				h_h: 0,
+				dataList: [],
+				dotIndex: 0,
+				isPlayVedio:false,
+			};
+		},
+		async mounted() {
+			this.nowIndex = this.current;
 
-		let w = this.width;
-		if (String(w).indexOf('px') > -1 && typeof w == 'string') {
-			let p = parseInt(h);
-			let sy = 750 / uni.getSystemInfoSync().windowWidth;
-			w = p * sy;
-		}
-		if (typeof w == 'string') {
-			w = parseInt(w);
-		}
-		this.w_w = w;
+			let w = this.width;
+			if (String(w).indexOf('px') > -1 && typeof w == 'string') {
+				let p = parseInt(h);
+				let sy = 750 / uni.getSystemInfoSync().windowWidth;
+				w = p * sy;
+			}
+			if (typeof w == 'string') {
+				w = parseInt(w);
+			}
+			this.w_w = w;
 
-		let h = this.height;
-		if (String(h).indexOf('px') > -1 && typeof h == 'string') {
-			let p = parseInt(h);
-			let sy = 750 / uni.getSystemInfoSync().windowWidth;
-			h = p * sy;
-		}
-		if (typeof h == 'string') {
-			h = parseInt(h);
-		}
+			let h = this.height;
+			if (String(h).indexOf('px') > -1 && typeof h == 'string') {
+				let p = parseInt(h);
+				let sy = 750 / uni.getSystemInfoSync().windowWidth;
+				h = p * sy;
+			}
+			if (typeof h == 'string') {
+				h = parseInt(h);
+			}
 
-		this.h_h = h;
+			this.h_h = h;
 
-		this.$nextTick(async function() {
-			await this.chulidata();
-		});
-	},
-	methods: {
-		showdot() {
-			if (typeof this.dataList[this.nowIndex] == 'string') return true;
-			if (typeof this.dataList[this.nowIndex] == 'object') {
-				if (this.dataList[this.nowIndex].dtype == 'video') return false;
-			}
-			return true;
-		},
-		async chulidata() {
-			let t = this;
-			let tb = await this.$Querey('.tm-swiper', this).catch(ev => {});
-			//console.log(uni.getSystemInfoSync());
-			let sy = 750 / uni.getSystemInfoSync().windowWidth;
-			let upxw = tb[0].width * sy;
-			let sw = this.w_s > 0 ? this.w_s : upxw > 0 ? upxw : 100;
-			this.w_s = sw;
-			let sh = this.h_s > 0 ? this.h_s : tb[0].height > 0 ? tb[0].height : 300;
-			this.h_s = sh;
-			let d = [];
-			this.list.forEach(item => {
-				if (typeof item === 'string') {
-					d.push({
-						width: sw,
-						height: sh,
-						url: item,
-						title: '',
-						dtype: '',
-						data: item
-					});
-				} else if (typeof item === 'object') {
-					d.push({
-						width: sw,
-						height: sh,
-						url: item[t.rangKey],
-						title: item['title'] || '',
-						dtype: item['type'] || '',
-						data: item
-					});
-				}
+			this.$nextTick(async function() {
+				await this.chulidata();
 			});
-			this.dataList = d;
-		},
-		imgload(e, index) {},
-		change(event) {
-			this.nowIndex = event.detail.current;
 		},
-		itemClick(e) {
-			if (this.previmage) {
-				uni.previewImage({
-					current: e.url,
-					urls: [e.url]
+		methods: {
+			
+			showdot(){
+				if(typeof this.dataList[this.nowIndex]=='string') return true;
+				if(typeof this.dataList[this.nowIndex]=='object'){
+					if(this.dataList[this.nowIndex].dtype=='video') return false;
+				}
+				return true;
+			},
+			async chulidata() {
+				let t = this;
+				let tb = await this.$Querey('.tm-swiper', this).catch(ev => {});
+				//console.log(uni.getSystemInfoSync());
+				let sy = 750 / uni.getSystemInfoSync().windowWidth;
+				let upxw = tb[0].width * sy;
+				let sw = this.w_s > 0 ? this.w_s : upxw > 0 ? upxw : 100;
+				this.w_s = sw;
+				let sh = this.h_s > 0 ? this.h_s : tb[0].height > 0 ? tb[0].height : 300;
+				this.h_s = sh;
+				let d = [];
+				this.list.forEach(item => {
+					if (typeof item === 'string') {
+						d.push({
+							width: sw,
+							height: sh,
+							url: item,
+							title: '',
+							dtype: '',
+							data: item
+						});
+					} else if (typeof item === 'object') {
+						d.push({
+							width: sw,
+							height: sh,
+							url: item[t.rangKey],
+							title: item['title'] || '',
+							dtype: item['type'] || '',
+							data: item
+						});
+					}
 				});
+				this.dataList = d;
+			},
+			imgload(e, index) {},
+			change(event) {
+				this.nowIndex = event.detail.current;
+			},
+			itemClick(e) {
+				if (this.previmage) {
+					uni.previewImage({
+						current: e.url,
+						urls: [e.url]
+					});
+				}
+				this.$emit('click', e);
 			}
-			this.$emit('click', e);
 		}
-	}
-};
+	};
 </script>
 <style></style>
 <style lang="scss" scoped>
-.tm-swiper {
-	position: relative;
+	.tm-swiper {
+		position: relative;
 
-	.tm-swiper-ik {
-		transition: all 1s;
-	}
+		.tm-swiper-ik {
+			transition: all 1s;
+		}
 
-	.a3d {
-		transform: scale(0.76);
-	}
+		.a3d {
+			transform: scale(0.76);
+		}
 
-	.a3dL {
-		transform: scale(0.76) translateX(-24rpx);
-	}
+		.a3dL {
+			transform: scale(0.76) translateX(-24rpx)
+		}
 
-	.a3dR {
-		transform: scale(0.76) translateX(24rpx);
-	}
+		.a3dR {
+			transform: scale(0.76) translateX(24rpx)
+		}
 
-	.actvieMarginDh {
-		display: flex;
-		justify-content: center;
+		.actvieMarginDh {
+			display: flex;
+			justify-content: center;
 
-		.actvieMarginDh-item {
-			overflow: hidden;
-			line-height: 0;
+			.actvieMarginDh-item {
+				overflow: hidden;
+				line-height: 0;
+			}
 		}
-	}
 
-	.tm-swiper-dot {
-		.tm-swiper-dot-item {
-			width: 16upx;
-			height: 16upx;
-			border-radius: 50%;
+		.tm-swiper-dot {
+			.tm-swiper-dot-item {
+				width: 16upx;
+				height: 16upx;
+				border-radius: 50%;
 
-			&.unactive {
-				background-color: rgba(255, 255, 255, 0.6);
-			}
+				&.unactive {
+					background-color: rgba(255, 255, 255, 0.6);
+				}
 
-			&.number {
-				width: 34upx;
-				height: 34upx;
-			}
+				&.number {
+					width: 34upx;
+					height: 34upx;
+				}
 
-			&.rect {
-				width: 24upx;
-				height: 6upx;
-				border-radius: 0;
-			}
+				&.rect {
+					width: 24upx;
+					height: 6upx;
+					border-radius: 0;
+				}
 
-			&.round {
-				background-color: rgba(0, 0, 0, 0.4);
+				&.round {
+					background-color: rgba(0, 0, 0, 0.4);
+				}
 			}
-		}
-
-		width: 100%;
-		position: absolute;
-		left: 0;
-		display: flex;
-		bottom: 20upx;
 
-		&.center {
+			width: 100%;
+			position: absolute;
+			left: 0;
 			display: flex;
-			justify-content: center;
-		}
+			bottom: 20upx;
 
-		&.left {
-			display: flex;
-			justify-content: flex-start;
-			padding-left: 20upx;
-			width: calc(100% - 20upx);
-		}
+			&.center {
+				display: flex;
+				justify-content: center;
+			}
 
-		&.right {
-			display: flex;
-			justify-content: flex-end;
-			padding-right: 20upx;
-			width: calc(100% - 20upx);
+			&.left {
+				display: flex;
+				justify-content: flex-start;
+				padding-left: 20upx;
+				width: calc(100% - 20upx);
+			}
+
+			&.right {
+				display: flex;
+				justify-content: flex-end;
+				padding-right: 20upx;
+				width: calc(100% - 20upx);
+			}
 		}
 	}
-}
 </style>

+ 1 - 1
tm-vuetify/components/tm-translate/tm-translate.vue

@@ -13,7 +13,7 @@
 	 * @property {Number} wait 延时
 	 * @property {String} animation-name = [fadeUp|fadeDown|fadeLeft|fadeRight|zoomIn|zoomOut|fadeIn|fadeOut] 动画效果名称.
 	 * @property {String|Boolean} auto = [true|false] 默认:true,是否自动播放动画.
-	 * @example <tm-translate wait="500" animation-name="fadeUp"><tm-upload></tm-upload></tm-translate>
+	 * @example <tm-translate wait="500" animation-name="fadeDown"><tm-upload></tm-upload></tm-translate>
 	 */
 	export default {
 		name:"tm-translate",

+ 60 - 35
tm-vuetify/components/tm-upload/tm-upload.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="tm-upload flex-start " id="tm-upload">
+	<view class="tm-upload flex-start relative" id="tm-upload">
 		<view v-for="(item,index) in list" :key="index" class="tm-upload-item  " :class="[grid!=1?'ma-4':'']" :style="{
 			width:itemWidth+'px',
 			height:itemHeight+'px'
@@ -31,9 +31,18 @@
 			<!-- 上传的进度。 -->
 			<view v-if="item.progress>0&&item.progress!=100&&!disabled" class="tm-upload-pro green"
 				:style="{width:item.progress+'%'}"></view>
+			<!-- 上传的排序。 -->
+			<view v-if="showSort" class="absolute  l-0 fulled flex-between" :class="[disabled?'b-0':'b-40']" :style="{height:'46rpx'}">
+				<view @click.stop="prevSort(item,index,'prev')" class="round-r-24 flex-center px-16 py-6" :class="[index==0?'opacity-0':'']" style="background-color: rgba(0, 0, 0, 0.3);">
+					<tm-icons name="icon-angle-left" size="24" :color="color_tmeme"></tm-icons>
+				</view>
+				<view @click.stop="prevSort(item,index,'next')" class="round-l-24 flex-center px-16 py-6" :class="[index==list.length-1?'opacity-0':'']" style="background-color: rgba(0, 0, 0, 0.3);">
+					<tm-icons name="icon-angle-right" size="24" :color="color_tmeme"></tm-icons>
+				</view>
+			</view>
 		</view>
 
-		<view  @click="addfile" v-if="list.length<max&&!disabled&&showSheet" class="tm-upload-item  ma-4 grey-lighten-4 " :class="[`round-${round}`]" :style="{
+		<view  @click="addfile" v-if="list.length<max&&!disabled" class="tm-upload-item  ma-4 grey-lighten-4 " :class="[`round-${round}`]" :style="{
 			width:itemWidth+'px',
 			height:itemHeight+'px'
 		}">
@@ -79,6 +88,10 @@
 		components:{tmIcons},
 		name: "tm-upload",
 		props: {
+			showSort:{
+				type:Boolean|String,
+				default:false
+			},
 			model:{
 				type:String,
 				default:'scaleToFill'
@@ -216,8 +229,7 @@
 				itemWidth: 0,
 				itemHeight: 0,
 				list: [],
-				//兼容app使用.
-				showSheet:true,
+				
 				upObje:null,
 			};
 		},
@@ -228,13 +240,51 @@
 		},
 		async mounted() {
 			let t = this;
+			if (typeof t.filelist === 'object' && Array.isArray(t.filelist)) {
+				let plist = [...t.filelist];
+				plist.forEach((item, index) => {
+					let url = "";
+					if (typeof item === 'string') {
+						url = item;
+					} else if (typeof item === 'object') {
+						url = item[t.urlKey]
+					}
+					t.list.push({
+						url: url,
+						status: "上传成功",
+						progress: 100,
+						fileId: t.$tm.guid(),
+						statusCode: 3,
+						data: item,
+					})
+				})
 			
-			this.$nextTick(async function(){
+			}
+			this.getRect()
 				
-				this.$Querey('.tm-upload', this,30).then(o=>{
-						// #ifdef APP-VUE || APP-PLUS  || MP
-						t.showSheet = true;
-						// #endif
+
+		},
+		updated() {
+			this.getRect()
+		},
+		methods: {
+			prevSort(item,index,type){
+				if((index==0&&type=='prev')||(index==this.list.length-1&&type=='next')){
+					return;
+				}
+				let nowindex = type=='prev'?index-1:index+1
+				let nowItem = this.list[index];
+				let newnowItem = this.list[nowindex];
+				let nowfilelist= [...this.list]
+				nowfilelist.splice(index,1,newnowItem)
+				nowfilelist.splice(nowindex,1,nowItem)
+				this.list = [...nowfilelist]
+				this.$emit('update:filelist', nowfilelist);
+			},
+			getRect(){
+				let t = this;
+				this.$Querey('.tm-upload', this,0).then(o=>{
+						if(!o[0].width&&t.maxWidth) return;
 						t.maxWidth = o[0].width||t.width;
 						let itemWidth = (t.maxWidth - (parseInt(t.grid) - 1) * uni.upx2px(12)) / parseInt(t.grid);
 						t.itemWidth = itemWidth;
@@ -242,33 +292,8 @@
 						if (t.imgHeight > 0) {
 							t.itemHeight = parseInt(uni.upx2px(t.imgHeight));
 						}
-						
-						if (typeof t.filelist === 'object' && Array.isArray(t.filelist)) {
-							let plist = [...t.filelist];
-							plist.forEach((item, index) => {
-								let url = "";
-								if (typeof item === 'string') {
-									url = item;
-								} else if (typeof item === 'object') {
-									url = item[t.urlKey]
-								}
-								t.list.push({
-									url: url,
-									status: "上传成功",
-									progress: 100,
-									fileId: t.$tm.guid(),
-									statusCode: 3,
-									data: item,
-								})
-							})
-						
-						}
 					})
-				})
-				
-
-		},
-		methods: {
+			},
 			errorFile(item,index){
 				let id = item;
 				id['loaderror'] = true;

+ 10 - 0
tm-vuetify/components/tm-weekbar/tm-weekbar.vue

@@ -134,8 +134,10 @@
 				let day = nwod.getDate();
 				let week = nwod.getDay();
 				let new_weekDay = [nwod];
+				
 				let timcha = Math.abs(week-7);
 				let zcha = Math.abs(7-timcha);
+				
 				let weekCn=["周日","周一","周二","周三","周四","周五","周六"];
 				for(let i=1;i<zcha;i++){
 					let d = new Date(year,month,day-i);
@@ -157,9 +159,17 @@
 					}
 					weekDay.push(sc);
 				}
+				
 				weekDay.sort(function(a, b){return a.week - b.week}); 
+				
 				weekDay.push(weekDay[0])
 				weekDay.splice(0,1)
+				if(weekDay.length==8){
+					weekDay.splice(0,1)
+					weekDay.unshift(weekDay[weekDay.length-1])
+					weekDay.splice(weekDay.length-1,1)
+				}
+				
 				let t=  this;
 				this.timeList = [];
 				this.$nextTick(function(){

+ 1 - 1
tm-vuetify/package.json

@@ -1,7 +1,7 @@
 {
   "id": "tm-vuetify",
   "displayName": "tmUI-vuetify",
-  "version": "2.0.0",
+  "version": "2.0.1",
   "description": "tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI",
   "keywords": [
     "tmUI-vuetify",

+ 8 - 8
tm-vuetify/scss/theme.css

@@ -9,20 +9,20 @@
 /**用户自定主题,默认主题,不可删除,可通过工具生成覆盖**/
 @import "./theme/amber.css";
 @import "./theme/blue.css";
-@import "./theme/brown.css";
+/* @import "./theme/brown.css"; */
 @import "./theme/cyan.css";
 @import "./theme/green.css";
-@import "./theme/indigo.css";
-@import "./theme/lime.css";
+/* @import "./theme/indigo.css"; */
+/* @import "./theme/lime.css"; */
 @import "./theme/orange.css";
-@import "./theme/pink.css";
-@import "./theme/purple.css";
+/* @import "./theme/pink.css"; */
+/* @import "./theme/purple.css"; */
 @import "./theme/red.css";
 /**组件库,必要的主题,不可删除**/
-@import "./theme/teal.css";
+/* @import "./theme/teal.css"; */
 @import "./theme/yellow.css";
 @import "./theme/blue-grey.css";
 @import "./theme/deep-orange.css";
-@import "./theme/deep-purple.css";
+/*@import "./theme/deep-purple.css";*/
 @import "./theme/light-blue.css";
-@import "./theme/light-green.css";
+/*@import "./theme/light-green.css"; */

+ 1 - 0
tm-vuetify/tool/function/dayjs/calendar.js

@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_calendar=t()}(this,(function(){"use strict";return function(e,t,a){var n="h:mm A",d={lastDay:"[Yesterday at] "+n,sameDay:"[Today at] "+n,nextDay:"[Tomorrow at] "+n,nextWeek:"dddd [at] "+n,lastWeek:"[Last] dddd [at] "+n,sameElse:"MM/DD/YYYY"};t.prototype.calendar=function(e,t){var n=t||this.$locale().calendar||d,o=a(e||void 0).startOf("d"),s=this.diff(o,"d",!0),i="sameElse",f=s<-6?i:s<-1?"lastWeek":s<0?"lastDay":s<1?"sameDay":s<2?"nextDay":s<7?"nextWeek":i,l=n[f]||d[f];return"function"==typeof l?l.call(this,a()):this.format(l)}}}));

+ 1 - 0
tm-vuetify/tool/function/sleep.js

@@ -5,6 +5,7 @@
  */
 function sleep(wait=500){
 	let timid = null;
+	if(wait==0) return Promise.resolve(true)
 	clearTimeout(timid);
 	return new Promise((res,rej)=>{
 		timid = setTimeout(function() {

+ 1 - 0
tm-vuetify/tool/function/test.js

@@ -197,4 +197,5 @@ export default {
 	chinaPost,
 	password,
 	password2,
+	bankCard
 }

+ 4 - 4
tm-vuetify/tool/function/vuex.js

@@ -19,16 +19,16 @@ class vuex {
 		let t = this;
 		const g = this.store.getters
 		let keys = Object.keys(g);
-		
+		console.log(keys)
 		let k = keys.map((el,index)=>{
 			let f = el.split('/');
 			let tst = {}
 			if(f.length==1){
 				tst[el]=g[el]
 			}else{
-				
-				tst[f[0]]={}
-				tst[f[0]][f[1]] = g[el]
+				tst[f[1]]=g[el]
+				// tst[f[0]+'_'+f[1]]=g[el]
+				// tst[f[0]][f[1]] = g[el]
 				
 			}
 			return tst

+ 1 - 0
tm-vuetify/tool/store/tm-vuetify.js

@@ -55,6 +55,7 @@ const store = new Vuex.Store({
 		// $tm:state=>{
 		// 	return $tm;
 		// }
+		
 	},
 	mutations: {
 		setTmVuetifyColor(state, color) {

+ 0 - 5
uni_modules/z-paging/changelog.md

@@ -1,5 +0,0 @@
-## 2.3.3(2022-07-14)
-1.添加空数据图点击事件回调。  
-2.修复在nvue中偶现的下拉刷新回弹跳动的问题。  
-3.修复在nvue中偶现的slot="top"挡住下拉刷新view的问题。  
-4.禁止在h5中滚动到底部时上拉手势冒泡,以避免由此引发的列表被短暂锁住无法滚动的问题。

+ 0 - 34
uni_modules/z-paging/components/z-paging-cell/z-paging-cell.vue

@@ -1,34 +0,0 @@
-<!-- z-paging -->
-<!-- github地址:https://github.com/SmileZXLee/uni-z-paging -->
-<!-- dcloud地址:https://ext.dcloud.net.cn/plugin?id=3935 -->
-<!-- 反馈QQ群:790460711 -->
-
-<!-- z-paging-cell,用于在nvue中使用cell包裹,vue中使用view包裹 -->
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<cell :style="[cellStyle]">
-		<slot />
-	</cell>
-	<!-- #endif -->
-	<!-- #ifndef APP-NVUE -->
-	<view :style="[cellStyle]">
-		<slot />
-	</view>
-	<!-- #endif -->
-</template>
-
-<script>
-	export default {
-		name: "z-paging-cell",
-		props: {
-			//cellStyle
-			cellStyle: {
-				type: Object,
-				default: function() {
-                    return {}
-                }
-			}
-		}
-	}
-</script>
-

+ 0 - 163
uni_modules/z-paging/components/z-paging-empty-view/z-paging-empty-view.vue

@@ -1,163 +0,0 @@
-<!-- z-paging -->
-<!-- github地址:https://github.com/SmileZXLee/uni-z-paging -->
-<!-- dcloud地址:https://ext.dcloud.net.cn/plugin?id=3935 -->
-<!-- 反馈QQ群:790460711 -->
-
-<!-- 空数据占位view,此组件支持easycom规范,可以在项目中直接引用 -->
-<template>
-	<view :class="{'zp-container':true,'zp-container-fixed':emptyViewFixed}" :style="[finalEmptyViewStyle]" @click="emptyViewClick">
-		<view class="zp-main">
-			<image v-if="!emptyViewImg.length" class="zp-main-image" :style="[emptyViewImgStyle]" :src="emptyImg" />
-			<image v-else class="zp-main-image" mode="aspectFit" :style="[emptyViewImgStyle]" :src="emptyViewImg" />
-			<text class="zp-main-title" :style="[emptyViewTitleStyle]">{{emptyViewText}}</text>
-			<text v-if="showEmptyViewReload" class="zp-main-error-btn" :style="[emptyViewReloadStyle]" @click.stop="reloadClick">{{emptyViewReloadText}}</text>
-		</view>
-	</view>
-</template>
-
-<script>
-	import zStatic from '../z-paging/js/z-paging-static'
-	export default {
-		name: "z-paging-empty-view",
-		data() {
-			return {
-				base64Empty: zStatic.base64Empty,
-				base64Error: zStatic.base64Error
-			};
-		},
-		props: {
-			//空数据描述文字
-			emptyViewText: {
-				type: String,
-				default: '没有数据哦~'
-			},
-			//空数据图片
-			emptyViewImg: {
-				type: String,
-				default: ''
-			},
-			//是否显示空数据图重新加载按钮
-			showEmptyViewReload: {
-				type: Boolean,
-				default: false
-			},
-			//空数据点击重新加载文字
-			emptyViewReloadText: {
-				type: String,
-				default: '重新加载'
-			},
-			//是否是加载失败
-			isLoadFailed: {
-				type: Boolean,
-				default: false
-			},
-			//空数据图样式
-			emptyViewStyle: {
-				type: Object,
-				default: function() {
-                    return {}
-                }
-			},
-			//空数据图img样式
-			emptyViewImgStyle: {
-				type: Object,
-				default: function() {
-				    return {}
-				}
-			},
-			//空数据图描述文字样式
-			emptyViewTitleStyle: {
-				type: Object,
-				default: function() {
-				    return {}
-				}
-			},
-			//空数据图重新加载按钮样式
-			emptyViewReloadStyle: {
-				type: Object,
-				default: function() {
-				    return {}
-				}
-			},
-			//空数据图z-index
-			emptyViewZIndex: {
-				type: Number,
-				default: 9
-			},
-			//空数据图片是否使用fixed布局并铺满z-paging
-			emptyViewFixed: {
-				type: Boolean,
-				default: true
-			}
-		},
-		computed: {
-			emptyImg() {
-                return this.isLoadFailed ? this.base64Error : this.base64Empty;
-			},
-			finalEmptyViewStyle(){
-				this.emptyViewStyle['z-index'] = this.emptyViewZIndex;
-				return this.emptyViewStyle;
-			}
-		},
-		methods: {
-			reloadClick() {
-				this.$emit('reload');
-			},
-			emptyViewClick() {
-				this.$emit('viewClick');
-			}
-		}
-	}
-</script>
-
-<style scoped>
-	.zp-container{
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-		justify-content: center;
-	}
-	.zp-container-fixed {
-		/* #ifndef APP-NVUE */
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 100%;
-		height: 100%;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		flex: 1;
-		/* #endif */
-	}
-
-	.zp-main{
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		align-items: center;
-        padding: 50rpx 0rpx;
-	}
-
-	.zp-main-image {
-		width: 200rpx;
-		height: 200rpx;
-	}
-
-	.zp-main-title {
-		font-size: 26rpx;
-		color: #aaaaaa;
-		text-align: center;
-		margin-top: 10rpx;
-	}
-
-	.zp-main-error-btn {
-		font-size: 26rpx;
-		padding: 8rpx 24rpx;
-		border: solid 1px #dddddd;
-		border-radius: 6rpx;
-		color: #aaaaaa;
-		margin-top: 50rpx;
-	}
-</style>

+ 0 - 145
uni_modules/z-paging/components/z-paging-swiper-item/z-paging-swiper-item.vue

@@ -1,145 +0,0 @@
-<!-- z-paging -->
-<!-- github地址:https://github.com/SmileZXLee/uni-z-paging -->
-<!-- dcloud地址:https://ext.dcloud.net.cn/plugin?id=3935 -->
-<!-- 反馈QQ群:790460711 -->
-
-<!-- 滑动切换选项卡swiper-item,此组件支持easycom规范,可以在项目中直接引用 -->
-<template>
-	<view class="zp-swiper-item-container">
-		<z-paging ref="paging" :fixed="false" 
-			:useVirtualList="useVirtualList" :useInnerList="useInnerList" :cellKeyName="cellKeyName" :innerListStyle="innerListStyle" 
-			:preloadPage="preloadPage" :cellHeightMode="cellHeightMode" :virtualScrollFps="virtualScrollFps" :virtualListCol="virtualListCol"
-			@query="_queryList" @listChange="_updateList" :mounted-auto-call-reload="false" style="height: 100%;">
-			<slot />
-			<template v-slot:header>
-				<slot name="header"/>
-			</template>
-			<template v-slot:cell="{item,index}">
-				<slot name="cell" :item="item" :index="index"/>
-			</template>
-			<template v-slot:footer>
-				<slot name="footer"/>
-			</template>
-		</z-paging>
-	</view>
-</template>
-
-<script>
-	import zPaging from '../z-paging/z-paging'
-	export default {
-		name: "z-paging-swiper-item",
-		components: {
-			zPaging
-		},
-		data() {
-			return {
-				firstLoaded: false
-			}
-		},
-		props: {
-			//当前组件的index,也就是当前组件是swiper中的第几个
-			tabIndex: {
-				type: Number,
-				default: function() {
-					return 0
-				}
-			},
-			//当前swiper切换到第几个index
-			currentIndex: {
-				type: Number,
-				default: function() {
-					return 0
-				}
-			},
-			//是否使用虚拟列表,默认为否
-			useVirtualList: {
-				type: Boolean,
-				default: false
-			},
-			//是否在z-paging内部循环渲染列表(内置列表),默认为否。若use-virtual-list为true,则此项恒为true
-			useInnerList: {
-				type: Boolean,
-				default: false
-			},
-			//内置列表cell的key名称,仅nvue有效,在nvue中开启use-inner-list时必须填此项
-			cellKeyName: {
-				type: String,
-				default: ''
-			},
-			//innerList样式
-			innerListStyle: {
-				type: Object,
-				default: function() {
-					return {};
-				}
-			},
-			//预加载的列表可视范围(列表高度)页数,默认为7,即预加载当前页及上下各7页的cell。此数值越大,则虚拟列表中加载的dom越多,内存消耗越大(会维持在一个稳定值),但增加预加载页面数量可缓解快速滚动短暂白屏问题
-			preloadPage: {
-				type: [Number, String],
-				default: 7
-			},
-			//虚拟列表cell高度模式,默认为fixed,也就是每个cell高度完全相同,将以第一个cell高度为准进行计算。可选值【dynamic】,即代表高度是动态非固定的,【dynamic】性能低于【fixed】。
-			cellHeightMode: {
-				type: String,
-				default: 'fixed'
-			},
-			//虚拟列表列数,默认为1。常用于每行有多列的情况,例如每行有2列数据,需要将此值设置为2
-			virtualListCol: {
-				type: [Number, String],
-				default: 1
-			},
-			//虚拟列表scroll取样帧率,默认为60,过高可能出现卡顿等问题
-			virtualScrollFps: {
-				type: [Number, String],
-				default: 60
-			},
-		},
-		watch: {
-			currentIndex: {
-				handler(newVal, oldVal) {
-					if (newVal === this.tabIndex) {
-						//懒加载,当滑动到当前的item时,才去加载
-						if (!this.firstLoaded) {
-							this.$nextTick(()=>{
-								let delay = 5;
-								// #ifdef MP-TOUTIAO
-								delay = 100;
-								// #endif
-								setTimeout(() => {
-									this.$refs.paging.reload();
-								}, delay);
-							})
-						}
-					}
-				},
-				immediate: true
-			}
-		},
-		methods: {
-			reload(data) {
-				this.$refs.paging.reload(data);
-			},
-			complete(data) {
-				this.firstLoaded = true;
-				this.$refs.paging.complete(data);
-			},
-			_queryList(pageNo, pageSize, from) {
-				this.$emit('query', pageNo, pageSize, from);
-			},
-			_updateList(list) {
-				this.$emit('updateList', list);
-			}
-		}
-	}
-</script>
-
-<style scoped>
-	.zp-swiper-item-container {
-		/* #ifndef APP-NVUE */
-		height: 100%;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		flex: 1;
-		/* #endif */
-	}
-</style>

+ 0 - 227
uni_modules/z-paging/components/z-paging-swiper/z-paging-swiper.vue

@@ -1,227 +0,0 @@
-<!-- z-paging -->
-<!-- github地址:https://github.com/SmileZXLee/uni-z-paging -->
-<!-- dcloud地址:https://ext.dcloud.net.cn/plugin?id=3935 -->
-<!-- 反馈QQ群:790460711 -->
-
-<!-- 滑动切换选项卡swiper,此组件支持easycom规范,可以在项目中直接引用 -->
-<template>
-	<view :class="fixed?'zp-swiper-container zp-swiper-container-fixed':'zp-swiper-container'" :style="[finalSwiperStyle]">
-		<!-- #ifndef APP-PLUS -->
-		<view v-if="cssSafeAreaInsetBottom===-1" class="zp-safe-area-inset-bottom"></view>
-		<!-- #endif -->
-		<slot v-if="$slots.top" name="top" />
-		<view class="zp-swiper-super">
-			<view v-if="$slots.left" :class="{'zp-swiper-left':true,'zp-absoulte':isOldWebView}">
-				<slot name="left" />
-			</view>
-			<view :class="{'zp-swiper':true,'zp-absoulte':isOldWebView}" :style="[swiperContentStyle]">
-				<slot />
-			</view>
-			<view v-if="$slots.right" :class="{'zp-swiper-right':true,'zp-absoulte zp-right':isOldWebView}">
-				<slot name="right" />
-			</view>
-		</view>
-		<slot v-if="$slots.bottom" name="bottom" />
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "z-paging-swiper",
-		data() {
-			return {
-				systemInfo: null,
-				cssSafeAreaInsetBottom: -1,
-				swiperContentStyle: {}
-			};
-		},
-		props: {
-			//是否使用fixed布局,默认为是
-			fixed: {
-				type: Boolean,
-				default: true
-			},
-			//是否开启底部安全区域适配
-			safeAreaInsetBottom: {
-				type: Boolean,
-				default: false
-			},
-			//z-paging-swiper样式
-			swiperStyle: {
-				type: Object,
-				default: function() {
-					return {};
-				},
-			}
-		},
-		mounted() {
-			this.$nextTick(() => {
-				this.systemInfo = uni.getSystemInfoSync();
-			})
-			// #ifndef APP-PLUS
-			this._getCssSafeAreaInsetBottom();
-			// #endif
-			this._updateLeftAndRightWidth();
-
-			this.swiperContentStyle = {'flex': '1'};
-			// #ifndef APP-NVUE
-			this.swiperContentStyle = {width: '100%',height: '100%'};
-			// #endif
-		},
-		computed: {
-			finalSwiperStyle() {
-				let swiperStyle = this.swiperStyle;
-				if (!this.systemInfo) return swiperStyle;
-				let windowTop = this.systemInfo.windowTop;
-				//暂时修复vue3中隐藏系统导航栏后windowTop获取不正确的问题,具体bug详见https://ask.dcloud.net.cn/question/141634
-				//感谢litangyu!!https://github.com/SmileZXLee/uni-z-paging/issues/25
-				// #ifdef VUE3 && H5
-				const pageHeadNode = document.getElementsByTagName("uni-page-head");
-				if (!pageHeadNode.length) windowTop = 0;
-				// #endif
-				const windowBottom = this.systemInfo.windowBottom;
-				if (this.fixed) {
-					if (windowTop && !swiperStyle.top) {
-						swiperStyle.top = windowTop + 'px';
-					}
-					if (!swiperStyle.bottom) {
-						let bottom = windowBottom ? windowBottom : 0;
-						if (this.safeAreaInsetBottom) {
-							bottom += this.safeAreaBottom;
-						}
-						if(bottom > 0){
-							swiperStyle.bottom = bottom + 'px';
-						}
-					}
-				}
-				return swiperStyle;
-			},
-			safeAreaBottom() {
-				if(!this.systemInfo){
-					return 0;
-				}
-				let safeAreaBottom = 0;
-				// #ifdef APP-PLUS
-				safeAreaBottom = this.systemInfo.safeAreaInsets.bottom || 0;
-				// #endif
-				// #ifndef APP-PLUS
-				safeAreaBottom = this.cssSafeAreaInsetBottom === -1 ? 0 : this.cssSafeAreaInsetBottom;
-				// #endif
-				return safeAreaBottom;
-			},
-			isOldWebView() {
-				// #ifndef APP-NVUE
-				try {
-					const systemInfos = uni.getSystemInfoSync().system.split(' ');
-					const deviceType = systemInfos[0];
-					const version = parseInt(systemInfos[1].slice(0,1));
-					if ((deviceType === 'iOS' && version <= 10) || (deviceType === 'Android' && version <= 6)) {
-						return true;
-					}
-				} catch(e){
-					return false;
-				}
-				// #endif
-				return false;
-			}
-		},
-		methods: {
-			//通过获取css设置的底部安全区域占位view高度设置bottom距离
-			_getCssSafeAreaInsetBottom(){
-				const query = uni.createSelectorQuery().in(this);
-				query.select('.zp-safe-area-inset-bottom').boundingClientRect(res => {
-					if (res) {
-						this.cssSafeAreaInsetBottom = res.height;
-					}
-				}).exec();
-			},
-			//获取slot="left"和slot="right"宽度并且更新布局
-			_updateLeftAndRightWidth(){
-				if (!this.isOldWebView) return;
-				this.$nextTick(() => {
-					let delayTime = 0;
-					// #ifdef MP-BAIDU
-					delayTime = 10;
-					// #endif
-					setTimeout(() => {
-						const query = uni.createSelectorQuery().in(this);
-						query.select('.zp-swiper-left').boundingClientRect(res => {
-							this.swiperContentStyle['left'] = res ? res.width + 'px' : 0;
-						}).exec();
-						query.select('.zp-swiper-right').boundingClientRect(res => {
-							this.swiperContentStyle['right'] = res ? res.width + 'px' : 0;
-						}).exec();
-					}, delayTime)
-				})
-			}
-		}
-	}
-</script>
-
-<style scoped>
-	.zp-swiper-container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		flex: 1;
-	}
-
-	.zp-swiper-container-fixed {
-		position: fixed;
-		/* #ifndef APP-NVUE */
-		height: auto;
-		width: auto;
-		/* #endif */
-		top: 0;
-		left: 0;
-		bottom: 0;
-		right: 0;
-	}
-	
-	.zp-safe-area-inset-bottom {
-		position: absolute;
-		/* #ifndef APP-PLUS */
-		height: env(safe-area-inset-bottom);
-		/* #endif */
-	}
-
-	.zp-swiper-super {
-		flex: 1;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-	
-	.zp-swiper-left,.zp-swiper-right{
-		/* #ifndef APP-NVUE */
-		height: 100%;
-		/* #endif */
-	}
-
-	.zp-swiper {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		height: 100%;
-		width: 100%;
-		/* #endif */
-	}
-	
-	.zp-absoulte {
-		/* #ifndef APP-NVUE */
-		position: absolute;
-		top: 0;
-		width: auto;
-		/* #endif */
-	}
-	
-	.zp-right{
-		right: 0;
-	}
-	
-	.zp-swiper-item {
-		height: 100%;
-	}
-</style>

+ 0 - 152
uni_modules/z-paging/components/z-paging/components/z-paging-load-more.vue

@@ -1,152 +0,0 @@
-<!-- [z-paging]上拉加载更多view -->
-
-<template>
-	<view class="zp-l-container" :style="[zConfig.customStyle]" @click="doClick">
-		<template v-if="!zConfig.hideContent">
-			<text v-if="zConfig.showNoMoreLine&&finalStatus===2" :class="zConfig.defaultThemeStyle==='white'?'zp-l-line zp-l-line-white':'zp-l-line zp-l-line-black'"
-				:style="[zConfig.noMoreLineCustomStyle]" />
-			<!-- #ifndef APP-NVUE -->
-			<image v-if="finalStatus===1&&zConfig.loadingIconCustomImage.length"
-				:src="zConfig.loadingIconCustomImage" :style="[zConfig.iconCustomStyle]" :class="{'zp-l-line-loading-custom-image':true,'zp-l-line-loading-custom-image-animated':zConfig.loadingAnimated}" />
-			<image v-if="finalStatus===1&&zConfig.loadingIconType==='flower'&&!zConfig.loadingIconCustomImage.length"
-				class="zp-line-loading-image" :style="[zConfig.iconCustomStyle]" :src="zConfig.defaultThemeStyle==='white'?base64FlowerWhite:base64Flower" />
-			<!-- #endif -->
-			<!-- #ifdef APP-NVUE -->
-			<view>
-				<loading-indicator v-if="finalStatus===1&&zConfig.loadingIconType!=='circle'" class="zp-line-loading-image" :style="[{color:zConfig.defaultThemeStyle==='white'?'white':'#777777'}]" animating />
-			</view>
-			<!-- #endif -->
-			<text v-if="finalStatus===1&&zConfig.loadingIconType==='circle'&&!zConfig.loadingIconCustomImage.length"
-				:class="zConfig.defaultThemeStyle==='white'?'zp-l-line-loading-view zp-l-line-loading-view-white':'zp-l-line-loading-view zp-l-line-loading-view-black'" :style="[zConfig.iconCustomStyle]" />
-			<text :class="zConfig.defaultThemeStyle==='white'?'zp-l-text zp-l-text-white':'zp-l-text zp-l-text-black'" :style="[zConfig.titleCustomStyle]">{{ownLoadingMoreText}}</text>
-			<text v-if="zConfig.showNoMoreLine&&finalStatus===2" :class="zConfig.defaultThemeStyle==='white'?'zp-l-line zp-l-line-white':'zp-l-line zp-l-line-black'" :style="[zConfig.noMoreLineCustomStyle]" />
-		</template>
-	</view>
-</template>
-<script>
-	import zStatic from '../js/z-paging-static'
-	export default {
-		name: 'z-paging-load-more',
-		data() {
-			return {
-				base64Arrow: zStatic.base64Arrow,
-				base64Flower: zStatic.base64Flower,
-				base64FlowerWhite: zStatic.base64FlowerWhite,
-			};
-		},
-		props: ['zConfig'],
-		computed: {
-			ownLoadingMoreText() {
-				return this.statusTextArr[this.finalStatus];
-			},
-			statusTextArr() {
-				return [this.zConfig.defaultText,this.zConfig.loadingText,this.zConfig.noMoreText,this.zConfig.failText];
-			},
-			finalStatus() {
-				if (this.zConfig.defaultAsLoading && this.zConfig.status === 0) return 1;
-				return this.zConfig.status;
-			}
-		},
-		methods: {
-			doClick() {
-				this.$emit('doClick');
-			}
-		}
-	}
-</script>
-
-<style scoped>
-	@import "../css/z-paging-static.css";
-
-	.zp-l-container {
-		height: 80rpx;
-		font-size: 27rpx;
-		/* #ifndef APP-NVUE */
-		clear: both;
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.zp-l-line-loading-custom-image {
-		color: #a4a4a4;
-		margin-right: 8rpx;
-		width: 28rpx;
-		height: 28rpx;
-	}
-	
-	.zp-l-line-loading-custom-image-animated{
-		/* #ifndef APP-NVUE */
-		animation: loading-circle 1s linear infinite;
-		/* #endif */
-	}
-
-	.zp-l-line-loading-view {
-		margin-right: 8rpx;
-		width: 23rpx;
-		height: 23rpx;
-		border: 3rpx solid #dddddd;
-		border-radius: 50%;
-		/* #ifndef APP-NVUE */
-		animation: loading-circle 1s linear infinite;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		width: 30rpx;
-		height: 30rpx;
-		/* #endif */
-	}
-
-	.zp-l-line-loading-view-black {
-		border-color: #c8c8c8;
-		border-top-color: #444444;
-	}
-
-	.zp-l-line-loading-view-white {
-		border-color: #aaaaaa;
-		border-top-color: #ffffff;
-	}
-
-	.zp-l-text {
-		/* #ifdef APP-NVUE */
-		font-size: 30rpx;
-		margin: 0rpx 10rpx;
-		/* #endif */
-	}
-
-	.zp-l-text-black {
-		color: #a4a4a4;
-	}
-
-	.zp-l-text-white {
-		color: #efefef;
-	}
-
-	.zp-l-line {
-		height: 1px;
-		width: 100rpx;
-		margin: 0rpx 10rpx;
-	}
-
-	.zp-l-line-black {
-		background-color: #eeeeee;
-	}
-
-	.zp-l-line-white {
-		background-color: #efefef;
-	}
-	
-	/* #ifndef APP-NVUE */
-	@keyframes loading-circle {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-		100% {
-			-webkit-transform: rotate(360deg);
-			transform: rotate(360deg);
-		}
-	}
-	/* #endif */
-</style>

+ 0 - 273
uni_modules/z-paging/components/z-paging/components/z-paging-refresh.vue

@@ -1,273 +0,0 @@
-<!-- [z-paging]下拉刷新view -->
-
-<template>
-	<view style="height: 100%;">
-		<view :class="showUpdateTime?'zp-r-container zp-r-container-padding':'zp-r-container'">
-			<view class="zp-r-left">
-				<image v-if="status!==2" :class="leftImageClass"
-					:style="[{width: showUpdateTime?'36rpx':'30rpx',height: showUpdateTime?'36rpx':'30rpx','margin-right': showUpdateTime?'20rpx':'9rpx'},imgStyle]"
-					:src="defaultThemeStyle==='white'?(status===3?base64SuccessWhite:base64ArrowWhite):(status===3?base64Success:base64Arrow)" />
-				<!-- #ifndef APP-NVUE -->
-				<image v-else class="zp-line-loading-image zp-r-left-image"
-					:style="[{width: showUpdateTime?'36rpx':'30rpx',height: showUpdateTime?'36rpx':'30rpx','margin-right': showUpdateTime?'20rpx':'9rpx'},imgStyle]"
-					:src="defaultThemeStyle==='white'?base64FlowerWhite:base64Flower" />
-				<!-- #endif -->
-				<!-- #ifdef APP-NVUE -->
-				<view v-else :style="[{'margin-right':showUpdateTime?'18rpx':'12rpx'}]">
-					<loading-indicator :class="systemInfo.platform==='ios'?'zp-loading-image-ios':'zp-loading-image-android'" 
-					:style="[{color:defaultThemeStyle==='white'?'white':'#777777'},imgStyle]" animating />
-				</view>
-				<!-- #endif -->
-			</view>
-			<view class="zp-r-right">
-				<text class="zp-r-right-text"
-					:style="[rightTextStyle,titleStyle]">{{statusTextArr[status]||defaultText}}
-				</text>
-				<text v-if="showUpdateTime&&refresherTimeText.length" class="zp-r-right-text zp-r-right-time-text" :style="[rightTextStyle,updateTimeStyle]">{{refresherTimeText}}</text>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-	const systemInfo = uni.getSystemInfoSync();
-	import zStatic from '../js/z-paging-static'
-	import u from '../js/z-paging-utils'
-	export default {
-		name: 'z-paging-refresh',
-		data() {
-			return {
-				systemInfo: systemInfo,
-				base64Arrow: zStatic.base64Arrow,
-				base64ArrowWhite: zStatic.base64ArrowWhite,
-				base64Flower: zStatic.base64Flower,
-				base64FlowerWhite: zStatic.base64FlowerWhite,
-				base64Success: zStatic.base64Success,
-				base64SuccessWhite: zStatic.base64SuccessWhite,
-				refresherTimeText: '',
-				leftImageLoaded: false
-			};
-		},
-		props: {
-			'status': {
-				default: 0
-			},
-			'defaultThemeStyle': {},
-			'defaultText': '',
-			'pullingText': '',
-			'refreshingText': '',
-			'completeText': '',
-			'showUpdateTime': {
-				default: false
-			},
-			'updateTimeKey': '',
-			'imgStyle': {
-				default: {}
-			},
-			'titleStyle': {
-				default: {}
-			},
-			'updateTimeStyle': {
-				default: {}
-			},
-		},
-		computed: {
-			statusTextArr() {
-				this.updateTime(this.updateTimeKey);
-				return [this.defaultText,this.pullingText,this.refreshingText,this.completeText];
-			},
-			leftImageClass() {
-				if(this.status === 3){
-					return 'zp-r-left-image-no-transform .zp-r-left-image-pre-size';
-				}
-				let cls = 'zp-r-left-image ';
-				if (this.status === 0) {
-					if (this.leftImageLoaded) {
-						cls += 'zp-r-arrow-down';
-					} else {
-						this.leftImageLoaded = true;
-						cls += 'zp-r-arrow-down-no-duration';
-					}
-				} else {
-					cls += 'zp-r-arrow-top';
-				}
-				return cls + ' zp-r-left-image-pre-size';
-			},
-			rightTextStyle() {
-				let stl = {};
-				let color = '#555555';
-				if (this.defaultThemeStyle === 'white') {
-					color = '#efefef';
-				}
-				// #ifdef APP-NVUE
-				if (this.showUpdateTime) {
-					stl = {
-						'height': '40rpx',
-						'line-height': '40rpx'
-					};
-				} else {
-					stl = {
-						'height': '80rpx',
-						'line-height': '80rpx'
-					};
-				}
-				// #endif
-				stl['color'] = color;
-				return stl;
-			}
-		},
-		methods: {
-			updateTime(updateTimeKey) {
-				if (!updateTimeKey) {
-					updateTimeKey = this.updateTimeKey;
-				}
-				if (this.showUpdateTime) {
-					this.refresherTimeText = u.getRefesrherFormatTimeByKey(updateTimeKey);
-				}
-			}
-		}
-	}
-</script>
-
-<style scoped>
-	@import "../css/z-paging-static.css";
-
-	.zp-r-container {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		height: 100%;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.zp-r-container-padding {
-		/* #ifdef APP-NVUE */
-		padding: 15rpx 0rpx;
-		/* #endif */
-	}
-
-	.zp-r-left {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		overflow: hidden;
-		/* #ifdef MP-ALIPAY */
-		margin-top: -4rpx;
-		/* #endif */
-	}
-
-	.zp-r-left-image {
-		/* #ifndef APP-NVUE */
-		transform: rotate(180deg);
-		margin-top: 2rpx;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		transition-duration: .2s;
-		transition-property: transform;
-		color: #666666;
-		/* #endif */
-	}
-	
-	.zp-r-left-image-no-transform {
-		/* #ifndef APP-NVUE */
-		margin-top: 2rpx;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		transition-duration: .2s;
-		transition-property: transform;
-		color: #666666;
-		/* #endif */
-	}
-	
-	.zp-r-left-image-pre-size{
-		/* #ifndef APP-NVUE */
-		width: 30rpx;
-		height: 30rpx;
-		overflow: hidden;
-		/* #endif */
-	}
-
-	.zp-r-arrow-top {
-		/* #ifndef APP-NVUE */
-		animation: refresher-arrow-top .2s linear;
-		-webkit-animation: refresher-arrow-top .2s linear;
-		animation-fill-mode: forwards;
-		-webkit-animation-fill-mode: forwards;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		transform: rotate(0deg);
-		/* #endif */
-	}
-
-	.zp-r-arrow-down {
-		/* #ifndef APP-NVUE */
-		animation: refresher-arrow-down .2s linear;
-		-webkit-animation: refresher-arrow-down .2s linear;
-		animation-fill-mode: forwards;
-		-webkit-animation-fill-mode: forwards;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		transform: rotate(180deg);
-		/* #endif */
-	}
-
-	.zp-r-arrow-down-no-duration {
-		/* #ifndef APP-NVUE */
-		animation: refresher-arrow-down 0s linear;
-		-webkit-animation: refresher-arrow-down 0s linear;
-		animation-fill-mode: forwards;
-		-webkit-animation-fill-mode: forwards;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		transform: rotate(180deg);
-		/* #endif */
-	}
-
-	.zp-r-right {
-		font-size: 27rpx;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.zp-r-right-text {
-		/* #ifdef APP-NVUE */
-		font-size: 28rpx;
-		/* #endif */
-	}
-
-	.zp-r-right-time-text {
-		margin-top: 10rpx;
-		font-size: 24rpx;
-	}
-	
-	/* #ifndef APP-NVUE */
-	@keyframes refresher-arrow-top {
-		0% {
-			-webkit-transform: rotate(180deg);
-			transform: rotate(180deg);
-		}
-		100% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-	}
-	
-	@keyframes refresher-arrow-down {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-		100% {
-			-webkit-transform: rotate(180deg);
-			transform: rotate(180deg);
-		}
-	}
-	/* #endif */
-</style>

+ 0 - 3
uni_modules/z-paging/components/z-paging/config/index.js

@@ -1,3 +0,0 @@
-// z-paging全局配置文件,注意避免更新时此文件被覆盖,若被覆盖,可在此文件中右键->点击本地历史记录,找回覆盖前的配置
-
-export default {}

+ 0 - 227
uni_modules/z-paging/components/z-paging/css/z-paging-main.css

@@ -1,227 +0,0 @@
-/* [z-paging]公共css*/
-
-.z-paging-content {
-	position: relative;
-	/* #ifndef APP-NVUE */
-	display: flex;
-	width: 100%;
-	height: 100%;
-	overflow: hidden;
-	/* #endif */
-	flex-direction: column;
-}
-
-.z-paging-content-fixed, .zp-loading-fixed {
-	position: fixed;
-	/* #ifndef APP-NVUE */
-	height: auto;
-	width: auto;
-	/* #endif */
-	top: 0;
-	left: 0;
-	bottom: 0;
-	right: 0;
-}
-
-.zp-page-top,.zp-page-bottom {
-	/* #ifndef APP-NVUE */
-	width: auto;
-	/* #endif */
-	position: fixed;
-	left: 0;
-	right: 0;
-	z-index: 999;
-}
-
-.zp-page-left,.zp-page-right{
-	/* #ifndef APP-NVUE */
-	height: 100%;
-	/* #endif */
-}
-
-.zp-scroll-view-super {
-	flex: 1;
-	position: relative;
-}
-
-.zp-view-super{
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-}
-
-.zp-custom-refresher-container {
-	overflow: hidden;
-}
-
-.zp-scroll-view-container,.zp-scroll-view {
-	position: relative;
-	/* #ifndef APP-NVUE */
-	height: 100%;
-	width: 100%;
-	/* #endif */
-}
-
-.zp-absoulte{
-	/* #ifndef APP-NVUE */
-	position: absolute;
-	top: 0;
-	width: auto;
-	/* #endif */
-}
-
-.zp-right{
-	right: 0;
-}
-
-.zp-scroll-view-absolute {
-	position: absolute;
-	top: 0;
-	left: 0;
-}
-
-/* #ifndef APP-NVUE */
-.zp-scroll-view-hide-scrollbar ::-webkit-scrollbar {
-	display: none;
-	-webkit-appearance: none;
-	width: 0 !important;
-	height: 0 !important;
-	background: transparent;
-}
-/* #endif */
-
-.zp-paging-touch-view {
-	width: 100%;
-	height: 100%;
-	position: relative;
-}
-
-.zp-fixed-bac-view {
-	position: absolute;
-	width: 100%;
-	top: 0;
-	left: 0;
-	height: 200px;
-}
-
-.zp-paging-main {
-	height: 100%;
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: column;
-}
-
-.zp-paging-container {
-	flex: 1;
-	position: relative;
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: column;
-}
-
-.zp-chat-record-loading-container {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	width: 100%;
-	/* #endif */
-	/* #ifdef APP-NVUE */
-	width: 750rpx;
-	/* #endif */
-	align-items: center;
-	justify-content: center;
-	height: 60rpx;
-	font-size: 26rpx;
-}
-
-.zp-chat-record-loading-custom-image {
-	width: 35rpx;
-	height: 35rpx;
-	/* #ifndef APP-NVUE */
-	animation: loading-flower 1s linear infinite;
-	/* #endif */
-}
-
-.zp-custom-refresher-container {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-	justify-content: center;
-	align-items: center;
-}
-
-.zp-back-to-top {
-	width: 76rpx;
-	height: 76rpx;
-	z-index: 999;
-	position: absolute;
-	bottom: 0rpx;
-	right: 25rpx;
-	transition-duration: .3s;
-	transition-property: opacity;
-}
-
-.zp-back-to-top-show {
-	opacity: 1;
-}
-
-.zp-back-to-top-hide {
-	opacity: 0;
-}
-
-.zp-back-to-top-img {
-	/* #ifndef APP-NVUE */
-	width: 100%;
-	height: 100%;
-	/* #endif */
-	/* #ifdef APP-NVUE */
-	flex: 1;
-	/* #endif */
-	z-index: 999;
-}
-
-.zp-empty-view {
-	/* #ifdef APP-NVUE */
-	height: 100%;
-	/* #endif */
-	flex: 1;
-}
-
-.zp-empty-view-center {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: column;
-	align-items: center;
-	justify-content: center;
-}
-
-.zp-loading-fixed {
-	z-index: 9999;
-}
-
-.zp-safe-area-inset-bottom {
-	position: absolute;
-	/* #ifndef APP-PLUS */
-	height: env(safe-area-inset-bottom);
-	/* #endif */
-}
-
-.zp-n-refresh-container {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	justify-content: center;
-	width: 750rpx;
-}
-
-.zp-n-list-container{
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-	flex: 1;
-}

+ 0 - 35
uni_modules/z-paging/components/z-paging/css/z-paging-static.css

@@ -1,35 +0,0 @@
-/* [z-paging]公用的静态css资源 */
-
-.zp-line-loading-image {
-	margin-right: 8rpx;
-	width: 28rpx;
-	height: 28rpx;
-	/* #ifndef APP-NVUE */
-	animation: loading-flower 1s steps(12) infinite;
-	/* #endif */
-	color: #666666;
-}
-
-.zp-loading-image-ios{
-	width: 20px;
-	height: 20px;
-}
-
-.zp-loading-image-android{
-	width: 32rpx;
-	height: 32rpx;
-}
-
-/* #ifndef APP-NVUE */
-@keyframes loading-flower {
-	0% {
-		-webkit-transform: rotate(0deg);
-		transform: rotate(0deg);
-	}
-	to {
-		-webkit-transform: rotate(1turn);
-		transform: rotate(1turn);
-	}
-}
-/* #endif */
-

+ 0 - 108
uni_modules/z-paging/components/z-paging/js/modules/back-to-top.js

@@ -1,108 +0,0 @@
-// [z-paging]点击返回顶部view模块
-import u from '.././z-paging-utils'
-
-const ZPBackToTop = {
-	props: {
-		//自动显示点击返回顶部按钮,默认为否
-		autoShowBackToTop: {
-			type: Boolean,
-			default: u.gc('autoShowBackToTop', false)
-		},
-		//点击返回顶部按钮显示/隐藏的阈值(滚动距离),单位为px,默认为400rpx
-		backToTopThreshold: {
-			type: [Number, String],
-			default: u.gc('backToTopThreshold', '400rpx')
-		},
-		//点击返回顶部按钮的自定义图片地址,默认使用z-paging内置的图片
-		backToTopImg: {
-			type: String,
-			default: u.gc('backToTopImg', '')
-		},
-		//点击返回顶部按钮返回到顶部时是否展示过渡动画,默认为是
-		backToTopWithAnimate: {
-			type: Boolean,
-			default: u.gc('backToTopWithAnimate', true)
-		},
-		//点击返回顶部按钮与底部的距离,注意添加单位px或rpx,默认为160rpx
-		backToTopBottom: {
-			type: [Number, String],
-			default: u.gc('backToTopBottom', '160rpx')
-		},
-		//点击返回顶部按钮的自定义样式
-		backToTopStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('backToTopStyle', {});
-			},
-		},
-		//iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向,默认为是
-		enableBackToTop: {
-			type: Boolean,
-			default: u.gc('enableBackToTop', true)
-		},
-	},
-	data() {
-		return {
-			backToTopClass: 'zp-back-to-top zp-back-to-top-hide',
-			lastBackToTopShowTime: 0,
-			showBackToTopClass: false,
-		}
-	},
-	computed: {
-		finalEnableBackToTop() {
-			return this.usePageScroll ? false : this.enableBackToTop;
-		},
-		finalBackToTopThreshold() {
-			return u.convertTextToPx(this.backToTopThreshold);
-		},
-		finalBackToTopStyle() {
-			let tempBackToTopStyle = this.backToTopStyle;
-			if (!tempBackToTopStyle.bottom) {
-				tempBackToTopStyle.bottom = this.windowBottom + u.convertTextToPx(this.backToTopBottom) + 'px';
-			}
-			if(!tempBackToTopStyle.position){
-				tempBackToTopStyle.position = this.usePageScroll ? 'fixed': 'absolute';
-			}
-			return tempBackToTopStyle;
-		},
-	},
-	methods: {
-		//点击返回顶部
-		_backToTopClick() {
-			!this.backToTopWithAnimate && this._checkShouldShowBackToTop(1, 0);
-			this.scrollToTop(this.backToTopWithAnimate);
-		},
-		//判断是否要显示返回顶部按钮
-		_checkShouldShowBackToTop(newVal, oldVal) {
-			if (!this.autoShowBackToTop) {
-				this.showBackToTopClass = false;
-				return;
-			}
-			if (newVal !== oldVal) {
-				if (newVal > this.finalBackToTopThreshold) {
-					if (!this.showBackToTopClass) {
-						this.showBackToTopClass = true;
-						this.lastBackToTopShowTime = new Date().getTime();
-						setTimeout(() => {
-							this.backToTopClass = 'zp-back-to-top zp-back-to-top-show';
-						}, 300)
-					}
-				} else {
-					if (this.showBackToTopClass) {
-						const currentTime = new Date().getTime();
-						let dalayTime = 300;
-						if(currentTime - this.lastBackToTopShowTime < 500){
-							dalayTime = 0;
-						}
-						this.backToTopClass = 'zp-back-to-top zp-back-to-top-hide';
-						setTimeout(() => {
-							this.showBackToTopClass = false;
-						}, dalayTime)
-					}
-				}
-			}
-		},
-	}
-}
-
-export default ZPBackToTop;

+ 0 - 731
uni_modules/z-paging/components/z-paging/js/modules/data-handle.js

@@ -1,731 +0,0 @@
-// [z-paging]数据处理模块
-import u from '.././z-paging-utils'
-import c from '.././z-paging-constant'
-import Enum from '.././z-paging-enum'
-import interceptor from '../z-paging-interceptor'
-
-const ZPData = {
-	props: {
-		//自定义初始的pageNo,默认为1
-		defaultPageNo: {
-			type: [Number, String],
-			default: u.gc('defaultPageNo', 1),
-			observer: function(newVal, oldVal) {
-				this.pageNo = newVal;
-			},
-		},
-		//自定义pageSize,默认为10
-		defaultPageSize: {
-			type: [Number, String],
-			default: u.gc('defaultPageSize', 10),
-			validator: (value) => {
-				if(value <= 0) u.consoleErr('default-page-size必须大于0!');
-				return value > 0;
-			}
-		},
-		//为保证数据一致,设置当前tab切换时的标识key,并在complete中传递相同key,若二者不一致,则complete将不会生效
-		dataKey: {
-			type: [Number, String, Object],
-			default: function() {
-				return u.gc('dataKey', null);
-			},
-		},
-		//自动注入的list名,可自动修改父view(包含ref="paging")中对应name的list值
-		autowireListName: {
-			type: String,
-			default: function() {
-				return u.gc('autowireListName', '');
-			},
-		},
-		//自动注入的query名,可自动调用父view(包含ref="paging")中的query方法
-		autowireQueryName: {
-			type: String,
-			default: function() {
-				return u.gc('autowireQueryName', '');
-			},
-		},
-		//z-paging mounted后自动调用reload方法(mounted后自动调用接口),默认为是。请使用简便写法:auto
-		mountedAutoCallReload: {
-			type: Boolean,
-			default: u.gc('mountedAutoCallReload', true)
-		},
-		//z-paging mounted后自动调用reload方法(mounted后自动调用接口),默认为是
-		auto: {
-			type: Boolean,
-			default: u.gc('auto', true)
-		},
-		//用户下拉刷新时是否触发reload方法,默认为是
-		reloadWhenRefresh: {
-			type: Boolean,
-			default: u.gc('reloadWhenRefresh', true)
-		},
-		//reload时自动滚动到顶部,默认为是
-		autoScrollToTopWhenReload: {
-			type: Boolean,
-			default: u.gc('autoScrollToTopWhenReload', true)
-		},
-		//reload时立即自动清空原list,默认为是,若立即自动清空,则在reload之后、请求回调之前页面是空白的
-		autoCleanListWhenReload: {
-			type: Boolean,
-			default: u.gc('autoCleanListWhenReload', true)
-		},
-		//列表刷新时自动显示下拉刷新view,默认为否
-		showRefresherWhenReload: {
-			type: Boolean,
-			default: u.gc('showRefresherWhenReload', false)
-		},
-		//列表刷新时自动显示加载更多view,且为加载中状态,默认为否
-		showLoadingMoreWhenReload: {
-			type: Boolean,
-			default: u.gc('showLoadingMoreWhenReload', false)
-		},
-		//组件created时立即触发reload(可解决一些情况下先看到页面再看到loading的问题),auto为true时有效。为否时将在mounted+nextTick后触发reload,默认为否
-		createdReload: {
-			type: Boolean,
-			default: u.gc('createdReload', false)
-		},
-		//本地分页时上拉加载更多延迟时间,单位为毫秒,默认200毫秒
-		localPagingLoadingTime: {
-			type: [Number, String],
-			default: u.gc('localPagingLoadingTime', 200)
-		},
-		//当分页未满一屏时,是否自动加载更多,默认为否(nvue无效)
-		insideMore: {
-			type: Boolean,
-			default: u.gc('insideMore', false)
-		},
-		//使用聊天记录模式,默认为否
-		useChatRecordMode: {
-			type: Boolean,
-			default: u.gc('useChatRecordMode', false)
-		},
-		//自动拼接complete中传过来的数组(使用聊天记录模式时无效)
-		concat: {
-			type: Boolean,
-			default: u.gc('concat', true)
-		},
-		//父组件v-model所绑定的list的值
-		value: {
-			type: Array,
-			default: function() {
-				return [];
-			}
-		},
-		// #ifdef VUE3
-		modelValue: {
-			type: Array,
-			default: function() {
-				return [];
-			}
-		}
-		// #endif
-	},
-	data (){
-		return {
-			currentData: [],
-			totalData: [],
-			realTotalData: [],
-			totalLocalPagingList: [],
-			pageNo: 1,
-			isLocalPaging: false,
-			isAddedData: false,
-			isTotalChangeFromAddData: false,
-			privateConcat: true,
-			myParentQuery: -1,
-			firstPageLoaded: false,
-			pagingLoaded: false,
-			loaded: false,
-			isUserReload: true,
-			fromEmptyViewReload: false,
-			listRendering: false
-		}
-	},
-	computed: {
-		pageSize() {
-			return this.defaultPageSize;
-		},
-		finalConcat() {
-			return this.concat && this.privateConcat;
-		},
-		isFirstPage() {
-			return this.pageNo === this.defaultPageNo;
-		}
-	},
-	watch: {
-		totalData(newVal, oldVal) {
-			this._totalDataChange(newVal, oldVal);
-		},
-		currentData(newVal, oldVal) {
-			this._currentDataChange(newVal, oldVal);
-		},
-		useChatRecordMode(newVal, oldVal) {
-			if (newVal) {
-				this.nLoadingMoreFixedHeight = false;
-			}
-		},
-		value: {
-			handler(newVal) {
-				this.realTotalData = newVal;
-			},
-			immediate: true
-		},
-		// #ifdef VUE3
-		modelValue: {
-			handler(newVal) {
-				this.realTotalData = newVal;
-			},
-			immediate: true
-		}
-		// #endif
-	},
-	methods: {
-		//请求结束(成功或者失败)调用此方法,将请求的结果传递给z-paging处理,第一个参数为请求结果数组,第二个参数为是否成功(默认是是)
-		complete(data, success = true) {
-			this.customNoMore = -1;
-			this.addData(data, success);
-		},
-		//简写,与complete完全相同
-		end(data, success = true) {
-			this.complete(data, success);
-		},
-		//【保证数据一致】请求结束(成功或者失败)调用此方法,将请求的结果传递给z-paging处理,第一个参数为请求结果数组,第二个参数为dataKey,需与:data-key绑定的一致,第三个参数为是否成功(默认为是)
-		completeByKey(data, dataKey = null, success = true) {
-			if (dataKey !== null && this.dataKey !== null && dataKey !== this.dataKey) {
-				if (this.isFirstPage) {
-					this.endRefresh();
-				}
-				return;
-			}
-			this.customNoMore = -1;
-			this.addData(data, success);
-		},
-		//简写,与completeByKey完全相同
-		endByKey(data, dataKey = null, success = true) {
-			this.completeByKey(data, dataKey, success);
-		},
-		//【通过totalCount判断是否有更多数据】请求结束(成功或者失败)调用此方法,将请求的结果传递给z-paging处理,第一个参数为请求结果数组,第二个参数为totalCount(列表总数),第三个参数为是否成功(默认为是)
-		completeByTotalCount(data, totalCount, success = true) {
-			if (totalCount == 'undefined') {
-				this.customNoMore = -1;
-			} else {
-				let dataTypeRes = this._checkDataType(data, success, false);
-				data = dataTypeRes.data;
-				success = dataTypeRes.success;
-				if (totalCount >= 0 && success) {
-					this.$nextTick(() => {
-						let nomore = true;
-						let realTotalDataCount = this.realTotalData.length;
-						if (this.pageNo == this.defaultPageNo) {
-							realTotalDataCount = 0;
-						}
-						let exceedCount = realTotalDataCount + data.length - totalCount;
-						if (exceedCount >= 0) {
-							nomore = false;
-							exceedCount = this.defaultPageSize - exceedCount;
-							if (exceedCount > 0 && exceedCount < data.length) {
-								data = data.splice(0, exceedCount);
-							}
-						}
-						this.completeByNoMore(data, nomore, success);
-					})
-					return;
-				}
-			}
-			this.addData(data, success);
-		},
-		//简写,与completeByTotalCount完全相同
-		completeByTotal(data, totalCount, success = true) {
-			this.completeByTotalCount(data, totalCount, success);
-		},
-		//简写,与completeByTotalCount完全相同
-		endByTotalCount(data, totalCount, success = true) {
-			this.completeByTotalCount(data, totalCount, success);
-		},
-		//简写,与completeByTotalCount完全相同
-		endByTotal(data, totalCount, success = true) {
-			this.completeByTotalCount(data, totalCount, success);
-		},
-		//【自行判断是否有更多数据】请求结束(成功或者失败)调用此方法,将请求的结果传递给z-paging处理,第一个参数为请求结果数组,第二个参数为是否有更多数据,第三个参数为是否成功(默认是是)
-		completeByNoMore(data, nomore, success = true) {
-			if (nomore != 'undefined') {
-				this.customNoMore = nomore == true ? 1 : 0;
-			}
-			this.addData(data, success);
-		},
-		//简写,与completeByNoMore完全相同
-		endByNoMore(data, nomore, success = true) {
-			this.completeByNoMore(data, nomore, success);
-		},
-		//与上方complete方法功能一致,新版本中设置服务端回调数组请使用complete方法
-		addData(data, success = true) {
-			if (!this.fromCompleteEmit) {
-				this.disabledCompleteEmit = true;
-				this.fromCompleteEmit = false;
-			}
-			const currentTimeStamp = u.getTime();
-			let addDataDalay = 0;
-			const disTime = currentTimeStamp - this.requestTimeStamp;
-			let minDelay = this.minDelay;
-			if(this.isFirstPage && this.finalShowRefresherWhenReload){
-				minDelay = Math.max(400,minDelay);
-			}
-			if(this.requestTimeStamp > 0 && disTime < minDelay){
-				addDataDalay = minDelay - disTime;
-			}
-			this.$nextTick(() => {
-				let delay = this.delay > 0 ? this.delay : addDataDalay;
-				setTimeout(() => {
-					this._addData(data, success, false);
-				}, delay)
-			})
-		},
-		//从顶部添加数据,不会影响分页的pageNo和pageSize
-		addDataFromTop(data, toTop = true, toTopWithAnimate = true) {
-			let dataType = Object.prototype.toString.call(data);
-			if (dataType !== '[object Array]') {
-				data = [data];
-			}
-			this.totalData = [...data, ...this.totalData];
-			if (toTop) {
-				setTimeout(() => {
-					this._scrollToTop(toTopWithAnimate);
-				}, c.delayTime)
-			}
-		},
-		//重新设置列表数据,调用此方法不会影响pageNo和pageSize,也不会触发请求。适用场景:当需要删除列表中某一项时,将删除对应项后的数组通过此方法传递给z-paging。(当出现类似的需要修改列表数组的场景时,请使用此方法,请勿直接修改page中:list.sync绑定的数组)
-		resetTotalData(data) {
-			if (data == undefined) {
-				if (this.showConsoleError) {
-					u.consoleErr('方法resetTotalData参数缺失!');
-				}
-				return;
-			}
-			this.isTotalChangeFromAddData = true;
-			let dataType = Object.prototype.toString.call(data);
-			if (dataType !== '[object Array]') {
-				data = [data];
-			}
-			this.totalData = data;
-		},
-		//添加聊天记录
-		addChatRecordData(data, toBottom = true, toBottomWithAnimate = true) {
-			let dataType = Object.prototype.toString.call(data);
-			if (dataType !== '[object Array]') {
-				data = [data];
-			}
-			if (!this.useChatRecordMode) return;
-			this.isTotalChangeFromAddData = true;
-			//#ifndef APP-NVUE
-			this.totalData = [...this.totalData, ...data];
-			//#endif
-			//#ifdef APP-NVUE
-			this.totalData = this.nIsFirstPageAndNoMore ? [...this.totalData, ...data] : [...data, ...this.totalData];
-			//#endif
-			if (toBottom) {
-				setTimeout(() => {
-					//#ifndef APP-NVUE
-					this._scrollToBottom(toBottomWithAnimate);
-					//#endif
-					//#ifdef APP-NVUE
-					if (this.nIsFirstPageAndNoMore) {
-						this._scrollToBottom(toBottomWithAnimate);
-					} else {
-						this._scrollToTop(toBottomWithAnimate);
-					}
-					//#endif
-				}, c.delayTime)
-			}
-		},
-		//设置本地分页数据,请求结束(成功或者失败)调用此方法,将请求的结果传递给z-paging作分页处理(若调用了此方法,则上拉加载更多时内部会自动分页,不会触发@query所绑定的事件)
-		setLocalPaging(data, success = true) {
-			this.isLocalPaging = true;
-			this.$nextTick(() => {
-				this._addData(data, success, true);
-			})
-		},
-		//重新加载分页数据,pageNo会恢复为默认值,相当于下拉刷新的效果(animate为true时会展示下拉刷新动画,默认为false)
-		reload(animate = this.showRefresherWhenReload) {
-			if (animate) {
-				this.privateShowRefresherWhenReload = animate;
-				this.isUserPullDown = true;
-			}
-			this._preReload(animate, false);
-		},
-		//刷新列表数据,pageNo和pageSize不会重置,列表数据会重新从服务端获取。必须保证@query绑定的方法中的pageNo和pageSize和传给服务端的一致
-		refresh() {
-			if(!this.realTotalData.length){
-				this.reload();
-				return;
-			}
-			const disPageNo = this.pageNo - this.defaultPageNo + 1;
-			if (disPageNo >= 1) {
-				this.loading = true;
-				this.privateConcat = false;
-				const totalPageSize = disPageNo * this.pageSize;
-				this._emitQuery(this.defaultPageNo, totalPageSize, Enum.QueryFrom.Refresh);
-				this._callMyParentQuery(this.defaultPageNo, totalPageSize);
-			}
-		},
-		//清空分页数据
-		clean() {
-			this._reload(true);
-			this._addData([], true, false);
-		},
-		//清空分页数据
-		clear() {
-			this.clean();
-		},
-		//手动触发滚动到顶部加载更多,聊天记录模式时有效
-		doChatRecordLoadMore() {
-			this.useChatRecordMode && this._onLoadingMore('click');
-		},
-		//reload之前的一些处理
-		_preReload(animate = this.showRefresherWhenReload, isFromMounted = true) {
-			this.isUserReload = true;
-			this.loadingType = Enum.LoadingType.Refresher;
-			if (animate) {
-				this.privateShowRefresherWhenReload = animate;
-				// #ifndef APP-NVUE
-				if (this.useCustomRefresher) {
-					this._doRefresherRefreshAnimate();
-				} else {
-					this.refresherTriggered = true;
-				}
-				// #endif
-				// #ifdef APP-NVUE
-				this.refresherStatus = Enum.Refresher.Loading;
-				this.refresherRevealStackCount++;
-				setTimeout(() => {
-					this._getNodeClientRect('zp-n-refresh-container', false).then((node) => {
-						if (node) {
-							let nodeHeight = node[0].height;
-							this.nShowRefresherReveal = true;
-							this.nShowRefresherRevealHeight = nodeHeight;
-							setTimeout(() => {
-								this._nDoRefresherEndAnimation(0, -nodeHeight, false, false);
-								setTimeout(() => {
-									this._nDoRefresherEndAnimation(nodeHeight, 0);
-								}, 10)
-							}, 10)
-						}
-						this._reload(false, isFromMounted);
-						this._doRefresherLoad(false);
-					});
-				}, 10)
-				return;
-				// #endif
-			} else {
-				this._refresherEnd(false, false, false, false);
-			}
-			this._reload(false, isFromMounted);
-		},
-		//重新加载分页数据
-		_reload(isClean = false, isFromMounted = false, isUserPullDown = false) {
-			this.isAddedData = false;
-			this.cacheScrollNodeHeight = -1;
-			this.insideOfPaging = -1;
-			this.pageNo = this.defaultPageNo;
-			this._cleanRefresherEndTimeout();
-			!this.privateShowRefresherWhenReload && !isClean && this._startLoading(true);
-			this.firstPageLoaded = true;
-			this.isTotalChangeFromAddData = false;
-			this.totalData = [];
-			if (!isClean) {
-				this._emitQuery(this.pageNo, this.defaultPageSize, isUserPullDown ? Enum.QueryFrom.UserPullDown : Enum.QueryFrom.Reload);
-				let delay = 0;
-				// #ifdef MP-TOUTIAO
-				delay = 5;
-				// #endif
-				setTimeout(() => {
-					this._callMyParentQuery();
-				}, delay)
-				if (!isFromMounted && this.autoScrollToTopWhenReload) {
-					let checkedNRefresherLoading = true;
-					// #ifdef APP-NVUE
-					checkedNRefresherLoading = !this.nRefresherLoading;
-					// #endif
-					if (checkedNRefresherLoading) {
-						this._scrollToTop(false);
-					}
-				}
-				// #ifndef APP-NVUE
-				if (!this.usePageScroll && this.useChatRecordMode) {
-					if (this.showConsoleError) {
-						u.consoleWarn('使用聊天记录模式时,建议使用页面滚动,可将usePageScroll设置为true以启用页面滚动!!');
-					}
-				}
-				// #endif
-			}
-			this.$nextTick(() => {
-				// #ifdef APP-NVUE
-				this.nShowBottom = this.realTotalData.length > 0;
-				// #endif
-			})
-		},
-		//处理服务端返回的数组
-		_addData(data, success, isLocal) {
-			this.isAddedData = true;
-			this.fromEmptyViewReload = false;
-			this.isTotalChangeFromAddData = true;
-			this.refresherTriggered = false;
-			!this.useCustomRefresher && uni.stopPullDownRefresh();
-			// #ifdef APP-NVUE
-			this.usePageScroll && uni.stopPullDownRefresh();
-			// #endif
-			const tempIsUserPullDown = this.isUserPullDown;
-			if (this.showRefresherUpdateTime && this.isFirstPage) {
-				u.setRefesrherTime(u.getTime(), this.refresherUpdateTimeKey);
-				this.tempLanguageUpdateKey = u.getTime();
-				this.$refs.refresh && this.$refs.refresh.updateTime();
-			}
-			if (tempIsUserPullDown && this.isFirstPage) {
-				this.isUserPullDown = false;
-			}
-			let dataTypeRes = this._checkDataType(data, success, isLocal);
-			data = dataTypeRes.data;
-			success = dataTypeRes.success;
-			let delayTime = c.delayTime;
-			// #ifdef APP-NVUE
-			if (this.useChatRecordMode) delayTime = 0;
-			// #endif
-			this.loadingForNow = false;
-			setTimeout(() => {
-				this.pagingLoaded = true;
-				this.$nextTick(()=>{
-					this._refresherEnd(delayTime > 0, true, tempIsUserPullDown);
-				})
-			}, delayTime)
-			if (this.isFirstPage) {
-				this.isLoadFailed = !success;
-			}
-			if (success) {
-				if (!(this.privateConcat === false && this.loadingStatus === Enum.More.NoMore)) {
-					this.loadingStatus = Enum.More.Default;
-				}
-				if (isLocal) {
-					this.totalLocalPagingList = data;
-					this._localPagingQueryList(this.defaultPageNo, this.defaultPageSize, 0, (res) => {
-						this.complete(res);
-					})
-				} else {
-					let dataChangeDelayTime = 0;
-					// #ifdef APP-NVUE
-					if (this.privateShowRefresherWhenReload && this.finalNvueListIs === 'waterfall') {
-						dataChangeDelayTime = 150;
-					}
-					// #endif
-					setTimeout(() => {
-						this._currentDataChange(data, this.currentData);					
-					}, dataChangeDelayTime)
-				}
-			} else {
-				this._currentDataChange(data, this.currentData);
-				this.loadingStatus = Enum.More.Fail;
-				if (this.loadingType === Enum.LoadingType.LoadingMore) {
-					this.pageNo--;
-				}
-			}
-		},
-		//所有数据改变时调用
-		_totalDataChange(newVal, oldVal, eventThrow=true) {
-			if ((!this.isUserReload || !this.autoCleanListWhenReload) && this.firstPageLoaded && !newVal.length && oldVal.length) {
-				return;
-			}
-			this._doCheckScrollViewShouldFullHeight(newVal);
-			if(!this.realTotalData.length && !newVal.length){
-				eventThrow = false;
-			}
-			this.realTotalData = newVal;
-			if (eventThrow) {
-				this.$emit('input', newVal);
-				// #ifdef VUE3
-				this.$emit('update:modelValue', newVal);
-				// #endif
-				this.$emit('update:list', newVal);
-				this.$emit('listChange', newVal);
-				this._callMyParentList(newVal);
-			}
-			this.firstPageLoaded = false;
-			this.isTotalChangeFromAddData = false;
-			this.$nextTick(() => {
-				setTimeout(()=>{
-					this._getNodeClientRect('.zp-paging-container-content').then((res) => {
-						if (res) {
-							this.$emit('contentHeightChanged', res[0].height);
-						}
-					});
-				},this.isIos?100:300)
-				// #ifdef APP-NVUE
-				if (this.useChatRecordMode && this.nIsFirstPageAndNoMore && this.isFirstPage && !this.nFirstPageAndNoMoreChecked) {
-					this.nFirstPageAndNoMoreChecked = true;
-					this._scrollToBottom(false);
-				}
-				// #endif
-			})
-		},
-		//当前数据改变时调用
-		_currentDataChange(newVal, oldVal) {
-			newVal = [...newVal];
-			this.listRendering = true;
-			this.$nextTick(() => {
-				setTimeout(() => {
-					this.listRendering = false;
-				},50)
-			})
-			// #ifndef APP-NVUE
-			if (this.finalUseVirtualList) {
-				this._setCellIndex(newVal,this.totalData.length === 0);
-			}
-			this.useChatRecordMode && newVal.reverse();
-			// #endif
-			if (this.isFirstPage && this.finalConcat) {
-				this.totalData = [];
-			}
-			if (this.customNoMore !== -1) {
-				if (this.customNoMore === 0 || !newVal.length) {
-					this.loadingStatus = Enum.More.NoMore;
-				}
-			} else {
-				if (!newVal.length || (newVal.length && newVal.length < this.defaultPageSize)) {
-					this.loadingStatus = Enum.More.NoMore;
-				}
-			}
-			if (!this.totalData.length) {
-				if (this.finalConcat) {
-					// #ifdef APP-NVUE
-					if(this.useChatRecordMode && this.isFirstPage && this.loadingStatus === Enum.More.NoMore){
-						newVal.reverse();
-					}
-					// #endif
-					this.totalData = newVal;
-				}
-				if (this.useChatRecordMode) {
-					// #ifndef APP-NVUE
-					this.$nextTick(() => {
-						this._scrollToBottom(false);
-					})
-					// #endif
-				}
-			} else {
-				if (this.useChatRecordMode) {
-					// #ifdef APP-NVUE
-					this.totalData = [...this.totalData, ...newVal];
-					// #endif
-					//#ifndef APP-NVUE
-					const idIndex = newVal.length;
-					let idIndexStr = `z-paging-${idIndex}`;
-					this.totalData = [...newVal, ...this.totalData];
-					if (this.pageNo !== this.defaultPageNo) {
-						this.privateScrollWithAnimation = 0;
-						this.$emit('update:chatIndex', idIndex);
-						setTimeout(() => {
-							this._scrollIntoView(idIndexStr, 30 + Math.max(0, this.cacheTopHeight), false, () => {
-								this.$emit('update:chatIndex', 0);
-							});
-						}, this.usePageScroll ? 50 : 200)
-					} else {
-						this.$nextTick(() => {
-							this._scrollToBottom(false);
-						})
-					}
-					//#endif
-		
-				} else {
-					if (this.finalConcat) {
-						const currentScrollTop = this.oldScrollTop;
-						this.totalData = [...this.totalData, ...newVal];
-						// #ifdef MP-WEIXIN
-						if (!this.isIos && !this.refresherOnly && !this.usePageScroll && newVal.length) {
-							this.loadingMoreTimeStamp = u.getTime();
-							this.$nextTick(()=>{
-								this.scrollToY(currentScrollTop);
-							})
-						}
-						// #endif
-					} else {
-						this.totalData = newVal;
-					}
-				}
-			}
-			this.privateConcat = true;
-		},
-		//本地分页请求
-		_localPagingQueryList(pageNo, pageSize, localPagingLoadingTime, callback) {
-			pageNo = parseInt(pageNo);
-			pageSize = parseInt(pageSize);
-			if (pageNo < 0 || pageSize <= 0) {
-				this._localPagingQueryResult(callback, [], localPagingLoadingTime);
-				return;
-			}
-			pageNo = Math.max(1,pageNo);
-			let totalPagingList = [...this.totalLocalPagingList];
-			let pageNoIndex = (pageNo - 1) * pageSize;
-			if (pageNoIndex + pageSize <= totalPagingList.length) {
-				this._localPagingQueryResult(callback, totalPagingList.splice(pageNoIndex, pageSize), localPagingLoadingTime);
-			} else if (pageNoIndex < totalPagingList.length) {
-				this._localPagingQueryResult(callback, totalPagingList.splice(pageNoIndex, totalPagingList.length - pageNoIndex), localPagingLoadingTime);
-			} else {
-				this._localPagingQueryResult(callback, [], localPagingLoadingTime);
-			}
-		},
-		//本地分页请求回调
-		_localPagingQueryResult(callback, arg, localPagingLoadingTime) {
-			setTimeout(() => {
-				callback(arg);
-			}, localPagingLoadingTime)
-		},
-		//修改父view的list
-		_callMyParentList(newVal) {
-			if (this.autowireListName.length) {
-				const myParent = u.getParent(this.$parent);
-				if (myParent && myParent[this.autowireListName]) {
-					myParent[this.autowireListName] = newVal;
-				}
-			}
-		},
-		//调用父view的query
-		_callMyParentQuery(customPageNo = 0, customPageSize = 0) {
-			if (this.autowireQueryName) {
-				if (this.myParentQuery === -1) {
-					const myParent = u.getParent(this.$parent);
-					if (myParent && myParent[this.autowireQueryName]) {
-						this.myParentQuery = myParent[this.autowireQueryName];
-					}
-				} 
-				if (this.myParentQuery !== -1) {
-					if (customPageSize > 0) {
-						this.myParentQuery(customPageNo, customPageSize);
-					} else {
-						this.myParentQuery(this.pageNo, this.defaultPageSize);
-					}
-				}
-			}
-		},
-		//发射query事件
-		_emitQuery(pageNo, pageSize, from){
-			this.requestTimeStamp = u.getTime();
-			this.$emit('query', ...interceptor._handleQuery(pageNo, pageSize, from));
-		},
-		//检查complete data的类型
-		_checkDataType(data, success, isLocal) {
-			const dataType = Object.prototype.toString.call(data);
-			if (dataType === '[object Boolean]') {
-				success = data;
-				data = [];
-			} else if (dataType === '[object Null]') {
-				data = [];
-			} else if (dataType !== '[object Array]') {
-				data = [];
-				let methodStr = isLocal ? 'setLocalPaging' : 'complete';
-				if (dataType !== '[object Undefined]') {
-					if (this.showConsoleError) {
-						u.consoleErr(`${methodStr}参数类型不正确,第一个参数类型必须为Array!`);
-					}
-				}
-			}
-			return {data,success};
-		},
-	}
-}
-
-export default ZPData;

+ 0 - 154
uni_modules/z-paging/components/z-paging/js/modules/empty.js

@@ -1,154 +0,0 @@
-// [z-paging]空数据图view模块
-import u from '.././z-paging-utils'
-
-const ZPEmptyView = {
-	props: {
-		//是否强制隐藏空数据图,默认为否
-		hideEmptyView: {
-			type: Boolean,
-			default: u.gc('hideEmptyView', false)
-		},
-		//空数据图描述文字,默认为“没有数据哦~”
-		emptyViewText: {
-			type: [String, Object],
-			default: u.gc('emptyViewText', null)
-		},
-		//是否显示空数据图重新加载按钮(无数据时),默认为否
-		showEmptyViewReload: {
-			type: Boolean,
-			default: u.gc('showEmptyViewReload', false)
-		},
-		//加载失败时是否显示空数据图重新加载按钮,默认为是
-		showEmptyViewReloadWhenError: {
-			type: Boolean,
-			default: u.gc('showEmptyViewReloadWhenError', true)
-		},
-		//空数据图点击重新加载文字,默认为“重新加载”
-		emptyViewReloadText: {
-			type: [String, Object],
-			default: u.gc('emptyViewReloadText', null)
-		},
-		//空数据图图片,默认使用z-paging内置的图片
-		emptyViewImg: {
-			type: String,
-			default: u.gc('emptyViewImg', '')
-		},
-		//空数据图“加载失败”描述文字,默认为“很抱歉,加载失败”
-		emptyViewErrorText: {
-			type: [String, Object],
-			default: u.gc('emptyViewErrorText', null)
-		},
-		//空数据图“加载失败”图片,默认使用z-paging内置的图片
-		emptyViewErrorImg: {
-			type: String,
-			default: u.gc('emptyViewErrorImg', '')
-		},
-		//空数据图样式
-		emptyViewStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('emptyViewStyle', {});
-			}
-		},
-		//空数据图容器样式
-		emptyViewSuperStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('emptyViewSuperStyle', {});
-			}
-		},
-		//空数据图img样式
-		emptyViewImgStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('emptyViewImgStyle', {});
-			}
-		},
-		//空数据图描述文字样式
-		emptyViewTitleStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('emptyViewTitleStyle', {});
-			}
-		},
-		//空数据图重新加载按钮样式
-		emptyViewReloadStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('emptyViewReloadStyle', {});
-			}
-		},
-		//空数据图片是否铺满z-paging,默认为是。若设置为否,则为填充满z-paging的剩余部分
-		emptyViewFixed: {
-			type: Boolean,
-			default: function() {
-				return u.gc('emptyViewFixed', false)
-			}
-		},
-		//空数据图片是否垂直居中,默认为是。emptyViewFixed为false时有效
-		emptyViewCenter: {
-			type: Boolean,
-			default: function() {
-				return u.gc('emptyViewCenter', true)
-			}
-		},
-		//加载中时是否自动隐藏空数据图,默认为是
-		autoHideEmptyViewWhenLoading: {
-			type: Boolean,
-			default: u.gc('autoHideEmptyViewWhenLoading', true)
-		},
-		//用户下拉列表触发下拉刷新加载中时是否自动隐藏空数据图,默认为是
-		autoHideEmptyViewWhenPull: {
-			type: Boolean,
-			default: u.gc('autoHideEmptyViewWhenPull', true)
-		},
-		//空数据view的z-index,默认为9
-		emptyViewZIndex: {
-			type: Number,
-			default: u.gc('emptyViewZIndex', 9)
-		},
-	},
-	computed: {
-		finalEmptyViewImg() {
-			return this.isLoadFailed ? this.emptyViewErrorImg : this.emptyViewImg;
-		},
-		finalShowEmptyViewReload() {
-			return this.isLoadFailed ? this.showEmptyViewReloadWhenError : this.showEmptyViewReload;
-		},
-		showEmpty() {
-			if(this.refresherOnly || this.hideEmptyView || this.totalData.length) return false;
-			if(this.autoHideEmptyViewWhenLoading){
-				if (this.isAddedData && !this.firstPageLoaded && !this.loading) return true;
-			}else{
-				return true;
-			}
-			if (!this.autoHideEmptyViewWhenPull && !this.isUserReload) return true;
-			return false;
-		},
-	},
-	methods: {
-		//点击了空数据view重新加载按钮
-		_emptyViewReload() {
-			let callbacked = false;
-			this.$emit('emptyViewReload', (reload) => {
-				if (reload === undefined || reload === true) {
-					this.fromEmptyViewReload = true;
-					this.reload();
-				}
-				callbacked = true;
-			});
-			this.$nextTick(() => {
-				if (!callbacked) {
-					this.fromEmptyViewReload = true;
-					this.reload();
-				}
-			})
-		},
-		//点击了空数据view
-		_emptyViewClick() {
-			this.$emit('emptyViewClick');
-		},
-	}
-}
-
-export default ZPEmptyView;

+ 0 - 98
uni_modules/z-paging/components/z-paging/js/modules/i18n.js

@@ -1,98 +0,0 @@
-// [z-paging]i18n模块
-import u from '.././z-paging-utils'
-import c from '.././z-paging-constant'
-import zI18n from '.././z-paging-i18n'
-
-const systemInfo = uni.getSystemInfoSync();
-const ZPI18n = {
-	props: {
-		//i18n国际化设置语言,支持简体中文(zh-cn)、繁体中文(zh-hant-cn)和英文(en)
-		language: {
-			type: String,
-			default: u.gc('language', '')
-		},
-		//i18n国际化默认是否跟随系统语言,默认为是
-		followSystemLanguage: {
-			type: Boolean,
-			default: u.gc('followSystemLanguage', true)
-		},
-	},
-	data() {
-		return {
-			tempLanguageUpdateKey: 0,
-		}
-	},
-	computed: {
-		tempLanguage() {
-			let systemLanguage = false;
-			const temp = this.tempLanguageUpdateKey;
-			if (this.followSystemLanguage) {
-				systemLanguage = systemInfo.language;
-			}
-			return uni.getStorageSync(c.i18nUpdateKey) || systemLanguage || 'zh-cn';
-		},
-		finalTempLanguage() {
-			return this.language.length ? this.language : this.tempLanguage;
-		},
-		finalLanguage() {
-			let language = this.finalTempLanguage.toLowerCase();
-			return zI18n._getPrivateLanguage(language, this.followSystemLanguage);
-		},
-		finalRefresherDefaultText() {
-			return this._getI18nText('refresherDefaultText', this.refresherDefaultText);
-		},
-		finalRefresherPullingText() {
-			return this._getI18nText('refresherPullingText', this.refresherPullingText);
-		},
-		finalRefresherRefreshingText() {
-			return this._getI18nText('refresherRefreshingText', this.refresherRefreshingText);
-		},
-		finalRefresherCompleteText() {
-			return this._getI18nText('refresherCompleteText', this.refresherCompleteText);
-		},
-		finalLoadingMoreDefaultText() {
-			return this._getI18nText('loadingMoreDefaultText', this.loadingMoreDefaultText);
-		},
-		finalLoadingMoreLoadingText() {
-			return this._getI18nText('loadingMoreLoadingText', this.loadingMoreLoadingText);
-		},
-		finalLoadingMoreNoMoreText() {
-			return this._getI18nText('loadingMoreNoMoreText', this.loadingMoreNoMoreText);
-		},
-		finalLoadingMoreFailText() {
-			return this._getI18nText('loadingMoreFailText', this.loadingMoreFailText);
-		},
-		finalEmptyViewText() {
-			return this.isLoadFailed ? this.finalEmptyViewErrorText : this._getI18nText('emptyViewText', this.emptyViewText);
-		},
-		finalEmptyViewReloadText() {
-			return this._getI18nText('emptyViewReloadText', this.emptyViewReloadText);
-		},
-		finalEmptyViewErrorText() {
-			return this._getI18nText('emptyViewErrorText', this.emptyViewErrorText);
-		},
-	},
-	methods: {
-		//设置i18n国际化语言
-		setI18n(language) {
-			zI18n.setLanguage(language);
-		},
-		//获取当前z-paging的语言
-		getLanguage() {
-			return this.finalLanguage;
-		},
-		//获取国际化转换后的文本
-		_getI18nText(key, value) {
-			const dataType = Object.prototype.toString.call(value);
-			if (dataType === '[object Object]') {
-				const nextValue = value[this.finalLanguage];
-				if (nextValue) return nextValue;
-			} else if (dataType === '[object String]') {
-				return value;
-			}
-			return zI18n.t[key][this.finalLanguage];
-		},
-	}
-}
-
-export default ZPI18n;

+ 0 - 328
uni_modules/z-paging/components/z-paging/js/modules/load-more.js

@@ -1,328 +0,0 @@
-// [z-paging]滚动到底部加载更多模块
-import u from '.././z-paging-utils'
-import Enum from '.././z-paging-enum'
-
-const ZPLoadMore = {
-	props: {
-		//自定义底部加载更多样式
-		loadingMoreCustomStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('loadingMoreCustomStyle', {});
-			}
-		},
-		//自定义底部加载更多文字样式
-		loadingMoreTitleCustomStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('loadingMoreTitleCustomStyle', {});
-			}
-		},
-		//自定义底部加载更多加载中动画样式
-		loadingMoreLoadingIconCustomStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('loadingMoreLoadingIconCustomStyle', {});
-			}
-		},
-		//自定义底部加载更多加载中动画图标类型,可选flower或circle,默认为flower
-		loadingMoreLoadingIconType: {
-			type: String,
-			default: u.gc('loadingMoreLoadingIconType', 'flower')
-		},
-		//自定义底部加载更多加载中动画图标图片
-		loadingMoreLoadingIconCustomImage: {
-			type: String,
-			default: u.gc('loadingMoreLoadingIconCustomImage', '')
-		},
-		//底部加载更多加载中view是否展示旋转动画,默认为是
-		loadingMoreLoadingAnimated: {
-			type: Boolean,
-			default: u.gc('loadingMoreLoadingAnimated', true)
-		},
-		//是否启用加载更多数据(含滑动到底部加载更多数据和点击加载更多数据),默认为是
-		loadingMoreEnabled: {
-			type: Boolean,
-			default: u.gc('loadingMoreEnabled', true)
-		},
-		//是否启用滑动到底部加载更多数据,默认为是
-		toBottomLoadingMoreEnabled: {
-			type: Boolean,
-			default: u.gc('toBottomLoadingMoreEnabled', true)
-		},
-		//滑动到底部状态为默认状态时,以加载中的状态展示,默认为否。若设置为是,可避免滚动到底部看到默认状态然后立刻变为加载中状态的问题,但分页数量未超过一屏时,不会显示【点击加载更多】
-		loadingMoreDefaultAsLoading: {
-			type: [Boolean],
-			default: u.gc('loadingMoreDefaultAsLoading', false)
-		},
-		//滑动到底部"默认"文字,默认为【点击加载更多】
-		loadingMoreDefaultText: {
-			type: [String, Object],
-			default: u.gc('loadingMoreDefaultText', null)
-		},
-		//滑动到底部"加载中"文字,默认为【正在加载...】
-		loadingMoreLoadingText: {
-			type: [String, Object],
-			default: u.gc('loadingMoreLoadingText', null)
-		},
-		//滑动到底部"没有更多"文字,默认为【没有更多了】
-		loadingMoreNoMoreText: {
-			type: [String, Object],
-			default: u.gc('loadingMoreNoMoreText', null)
-		},
-		//滑动到底部"加载失败"文字,默认为【加载失败,点击重新加载】
-		loadingMoreFailText: {
-			type: [String, Object],
-			default: u.gc('loadingMoreFailText', null)
-		},
-		//当没有更多数据且分页内容未超出z-paging时是否隐藏没有更多数据的view,默认为否
-		hideLoadingMoreWhenNoMoreAndInsideOfPaging: {
-			type: Boolean,
-			default: u.gc('hideLoadingMoreWhenNoMoreAndInsideOfPaging', false)
-		},
-		//当没有更多数据且分页数组长度少于这个值时,隐藏没有更多数据的view,默认为0,代表不限制。
-		hideLoadingMoreWhenNoMoreByLimit: {
-			type: Number,
-			default: u.gc('hideLoadingMoreWhenNoMoreByLimit', 0)
-		},
-		//是否显示默认的加载更多text,默认为是
-		showDefaultLoadingMoreText: {
-			type: Boolean,
-			default: u.gc('showDefaultLoadingMoreText', true)
-		},
-		//是否显示没有更多数据的view
-		showLoadingMoreNoMoreView: {
-			type: Boolean,
-			default: u.gc('showLoadingMoreNoMoreView', true)
-		},
-		//是否显示没有更多数据的分割线,默认为是
-		showLoadingMoreNoMoreLine: {
-			type: Boolean,
-			default: u.gc('showLoadingMoreNoMoreLine', true)
-		},
-		//自定义底部没有更多数据的分割线样式
-		loadingMoreNoMoreLineCustomStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('loadingMoreNoMoreLineCustomStyle', {});
-			},
-		},
-		//距底部/右边多远时(单位px),触发 scrolltolower 事件,默认为100rpx
-		lowerThreshold: {
-			type: [Number, String],
-			default: u.gc('lowerThreshold', '100rpx')
-		},
-	},
-	data() {
-		return {
-			//底部加载更多状态
-			loadingStatus: Enum.More.Default,
-			loadingStatusAfterRender: Enum.More.Default,
-			loadingMoreTimeStamp: 0,
-			loadingMoreDefaultSlot: null,
-			showLoadingMore: false,
-			customNoMore: -1,
-		}
-	},
-	computed: {
-		zPagingLoadMoreConfig() {
-			return {
-				status: this.loadingStatusAfterRender,
-				defaultAsLoading: this.loadingMoreDefaultAsLoading,
-				defaultThemeStyle: this.finalLoadingMoreThemeStyle,
-				customStyle: this.loadingMoreCustomStyle,
-				titleCustomStyle: this.loadingMoreTitleCustomStyle,
-				iconCustomStyle: this.loadingMoreLoadingIconCustomStyle,
-				loadingIconType: this.loadingMoreLoadingIconType,
-				loadingIconCustomImage: this.loadingMoreLoadingIconCustomImage,
-				loadingAnimated: this.loadingMoreLoadingAnimated,
-				showNoMoreLine: this.showLoadingMoreNoMoreLine,
-				noMoreLineCustomStyle: this.loadingMoreNoMoreLineCustomStyle,
-				defaultText: this.finalLoadingMoreDefaultText,
-				loadingText: this.finalLoadingMoreLoadingText,
-				noMoreText: this.finalLoadingMoreNoMoreText,
-				failText: this.finalLoadingMoreFailText,
-				hideContent: !this.loadingMoreDefaultAsLoading && this.listRendering
-			};
-		},
-		finalLoadingMoreThemeStyle() {
-			return this.loadingMoreThemeStyle.length ? this.loadingMoreThemeStyle : this.defaultThemeStyle;
-		},
-		showLoadingMoreDefault() {
-			return this._showLoadingMore('Default');
-		},
-		showLoadingMoreLoading() {
-			return this._showLoadingMore('Loading');
-		},
-		showLoadingMoreNoMore() {
-			return this._showLoadingMore('NoMore');
-		},
-		showLoadingMoreFail() {
-			return this._showLoadingMore('Fail');
-		},
-		showLoadingMoreCustom() {
-			return this._showLoadingMore('Custom');
-		}
-	},
-	methods: {
-		//手动触发上拉加载更多(非必须,可依据具体需求使用)
-		doLoadMore(type) {
-			this._onLoadingMore(type);
-		},
-		//通过@scroll事件检测是否滚动到了底部
-		_checkScrolledToBottom(scrollDiff, checked = false) {
-			if (this.checkScrolledToBottomTimeOut) {
-				clearTimeout(this.checkScrolledToBottomTimeOut);
-				this.checkScrolledToBottomTimeOut = null;
-			}
-			if (this.cacheScrollNodeHeight === -1) {
-				this._getNodeClientRect('.zp-scroll-view').then((res) => {
-					if (res) {
-						let pageScrollNodeHeight = res[0].height;
-						this.cacheScrollNodeHeight = pageScrollNodeHeight;
-						if (scrollDiff - pageScrollNodeHeight <= this.finalLowerThreshold) {
-							this._onLoadingMore('toBottom');
-						}
-					}
-				});
-			} else {
-				if (scrollDiff - this.cacheScrollNodeHeight <= this.finalLowerThreshold) {
-					this._onLoadingMore('toBottom');
-				} else if (scrollDiff - this.cacheScrollNodeHeight <= 500 && !checked) {
-					this.checkScrolledToBottomTimeOut = setTimeout(() => {
-						this._getNodeClientRect('.zp-scroll-view', true, true).then((res) => {
-							this.oldScrollTop = res[0].scrollTop;
-							const newScrollDiff = res[0].scrollHeight - this.oldScrollTop;
-							this._checkScrolledToBottom(newScrollDiff, true);
-						})
-					}, 150)
-				}
-			}
-		},
-		//触发加载更多时调用,from:0-滑动到底部触发;1-点击加载更多触发
-		_onLoadingMore(from = 'click') {
-			if (from === 'toBottom') {
-				if (!this.scrollToBottomBounceEnabled) {
-					if (this.scrollEnable) {
-						this.scrollEnable = false;
-						this.$nextTick(() => {
-							this.scrollEnable = true;
-						})
-					}
-				}
-				//#ifdef APP-VUE || H5
-				if (this.isIos) {
-					this.renderPropUsePageScroll = -1;
-					this.$nextTick(() => {
-						this.renderPropUsePageScroll = this.usePageScroll;
-					})
-				}
-				//#endif
-			}
-			this.$emit('scrolltolower', from);
-			if (from === 'toBottom' && (!this.toBottomLoadingMoreEnabled || this.useChatRecordMode)) return;
-			if (this.refresherOnly || !this.loadingMoreEnabled || !(this.loadingStatus === Enum.More.Default || this.loadingStatus === Enum.More.Fail) || this.loading) return;
-			// #ifdef MP-WEIXIN
-			if (!this.isIos && !this.refresherOnly && !this.usePageScroll) {
-				const currentTimestamp = u.getTime();
-				if (this.loadingMoreTimeStamp > 0 && currentTimestamp - this.loadingMoreTimeStamp < 100) {
-					this.loadingMoreTimeStamp = 0;
-					return;
-				}
-			}
-			// #endif
-			this._doLoadingMore();
-		},
-		//处理开始加载更多
-		_doLoadingMore() {
-			if (this.pageNo >= this.defaultPageNo && this.loadingStatus !== Enum.More.NoMore) {
-				this.pageNo++;
-				this._startLoading(false);
-				if (this.isLocalPaging) {
-					this._localPagingQueryList(this.pageNo, this.defaultPageSize, this.localPagingLoadingTime, (res) => {
-						this.addData(res);
-					})
-				} else {
-					this._emitQuery(this.pageNo, this.defaultPageSize, Enum.QueryFrom.LoadingMore);
-					this._callMyParentQuery();
-				}
-				this.loadingType = Enum.LoadingType.LoadingMore;
-			}
-		},
-		//(预处理)判断当没有更多数据且分页内容未超出z-paging时是否显示没有更多数据的view
-		_preCheckShowLoadingMoreWhenNoMoreAndInsideOfPaging(newVal, scrollViewNode, pagingContainerNode) {
-			if (this.loadingStatus === Enum.More.NoMore && this.hideLoadingMoreWhenNoMoreByLimit > 0 && newVal.length) {
-				this.showLoadingMore = newVal.length > this.hideLoadingMoreWhenNoMoreByLimit;
-			} else if ((this.loadingStatus === Enum.More.NoMore && this.hideLoadingMoreWhenNoMoreAndInsideOfPaging && newVal.length) || (this.insideMore && this.insideOfPaging !== false && newVal.length)) {
-				this.$nextTick(() => {
-					this._checkShowLoadingMoreWhenNoMoreAndInsideOfPaging(newVal, scrollViewNode, pagingContainerNode);
-				})
-				if (this.insideMore && this.insideOfPaging !== false && newVal.length) {
-					this.showLoadingMore = newVal.length;
-				}
-			} else {
-				this.showLoadingMore = newVal.length;
-			}
-		},
-		//判断当没有更多数据且分页内容未超出z-paging时是否显示没有更多数据的view
-		async _checkShowLoadingMoreWhenNoMoreAndInsideOfPaging(totalData, oldScrollViewNode, oldPagingContainerNode) {
-			try {
-				const scrollViewNode = oldScrollViewNode || await this._getNodeClientRect('.zp-scroll-view');
-				if (this.usePageScroll) {
-					if (scrollViewNode) {
-						const scrollViewTotalH = scrollViewNode[0].top + scrollViewNode[0].height;
-						this.insideOfPaging = scrollViewTotalH < this.windowHeight;
-						if (this.hideLoadingMoreWhenNoMoreAndInsideOfPaging) {
-							this.showLoadingMore = !this.insideOfPaging;
-						}
-						this._updateInsideOfPaging();
-					}
-				} else {
-					let pagingContainerH = 0;
-					let scrollViewH = 0;
-					const pagingContainerNode = oldPagingContainerNode || await this._getNodeClientRect('.zp-paging-container-content');
-					if (pagingContainerNode) {
-						pagingContainerH = pagingContainerNode[0].height;
-					}
-					if (scrollViewNode) {
-						scrollViewH = scrollViewNode[0].height;
-					}
-					this.insideOfPaging = pagingContainerH < scrollViewH;
-					if (this.hideLoadingMoreWhenNoMoreAndInsideOfPaging) {
-						this.showLoadingMore = !this.insideOfPaging;
-					}
-					this._updateInsideOfPaging();
-				}
-			} catch (e) {
-				this.insideOfPaging = !totalData.length;
-				if (this.hideLoadingMoreWhenNoMoreAndInsideOfPaging) {
-					this.showLoadingMore = !this.insideOfPaging;
-				}
-				this._updateInsideOfPaging();
-			}
-		},
-		//是否要展示上拉加载更多view
-		_showLoadingMore(type) {
-			if (!this.showLoadingMoreWhenReload && (!(this.loadingStatus === Enum.More.Default ? this.nShowBottom : true) || !this.totalData.length)) return false;
-			if (((!this.showLoadingMoreWhenReload || this.isUserPullDown || this.loadingStatus !== Enum.More.Loading) && !this.showLoadingMore) || 
-			(!this.loadingMoreEnabled && (!this.showLoadingMoreWhenReload || this.isUserPullDown || this.loadingStatus !== Enum.More.Loading)) || 
-			this.refresherOnly) return false;
-			if (this.useChatRecordMode && type !== 'Loading') return false;
-			if (!this.$slots) return false;
-			if (type === 'Custom') {
-				return this.showDefaultLoadingMoreText && !(this.loadingStatus === Enum.More.NoMore && !this.showLoadingMoreNoMoreView);
-			}
-			const res = this.loadingStatus === Enum.More[type] && this.$slots[`loadingMore${type}`] && (type === 'NoMore' ? this.showLoadingMoreNoMoreView : true);
-			if (res) {
-				// #ifdef APP-NVUE
-				if (!this.isIos) {
-					this.nLoadingMoreFixedHeight = false;
-				}
-				//  #endif
-			}
-			return res;
-		},
-	}
-}
-
-export default ZPLoadMore;

+ 0 - 220
uni_modules/z-paging/components/z-paging/js/modules/nvue.js

@@ -1,220 +0,0 @@
-// [z-paging]nvue独有部分模块
-import u from '.././z-paging-utils'
-import Enum from '.././z-paging-enum'
-
-// #ifdef APP-NVUE
-const weexAnimation = weex.requireModule('animation');
-// #endif
-const ZPNvue = {
-	props: {
-		//nvue中修改列表类型,可选值有list、waterfall和scroller,默认为list
-		nvueListIs: {
-			type: String,
-			default: u.gc('nvueListIs', 'list')
-		},
-		//nvue waterfall配置,仅在nvue中且nvueListIs=waterfall时有效,配置参数详情参见:https://uniapp.dcloud.io/component/waterfall
-		nvueWaterfallConfig: {
-			type: Object,
-			default: function() {
-				return u.gc('nvueWaterfallConfig', {});
-			}
-		},
-		//nvue 控制是否回弹效果,iOS不支持动态修改
-		nvueBounce: {
-			type: Boolean,
-			default: u.gc('nvueBounce', true)
-		},
-		//nvue中通过代码滚动到顶部/底部时,是否加快动画效果(无滚动动画时无效),默认为否
-		nvueFastScroll: {
-			type: Boolean,
-			default: u.gc('nvueFastScroll', false)
-		},
-		//nvue中list的id
-		nvueListId: {
-			type: String,
-			default: u.gc('nvueListId', '')
-		},
-		//nvue中refresh组件的样式
-		nvueRefresherStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('nvueRefresherStyle', {});
-			}
-		},
-		//nvue中是否按分页模式(类似竖向swiper)显示List,默认为false
-		nvuePagingEnabled: {
-			type: Boolean,
-			default: u.gc('nvuePagingEnabled', false)
-		},
-		//是否隐藏nvue列表底部的tagView,此view用于标识滚动到底部位置,若隐藏则滚动到底部功能将失效,在nvue中实现吸顶+swiper功能时需将最外层z-paging的此属性设置为true。默认为否
-		hideNvueBottomTag: {
-			type: Boolean,
-			default: u.gc('hideNvueBottomTag', false)
-		},
-	},
-	data() {
-		return {
-			nRefresherLoading: false,
-			nListIsDragging: false,
-			nShowBottom: true,
-			nFixFreezing: false,
-			nShowRefresherReveal: false,
-			nIsFirstPageAndNoMore: false,
-			nFirstPageAndNoMoreChecked: false,
-			nLoadingMoreFixedHeight: false,
-			nShowRefresherRevealHeight: 0,
-			nRefresherWidth: uni.upx2px(750),
-		}
-	},
-	watch: {
-		nIsFirstPageAndNoMore: {
-			handler(newVal) {
-				const cellStyle = !this.useChatRecordMode || newVal ? {} : {transform: 'rotate(180deg)'};
-				this.$emit('update:cellStyle', cellStyle);
-			},
-			immediate: true
-		}
-	},
-	computed: {
-		// #ifdef APP-NVUE
-		nWaterfallColumnCount() {
-			if (this.finalNvueListIs !== 'waterfall') return 0;
-			return this._nGetWaterfallConfig('column-count', 2);
-		},
-		nWaterfallColumnWidth() {
-			return this._nGetWaterfallConfig('column-width', 'auto');
-		},
-		nWaterfallColumnGap() {
-			return this._nGetWaterfallConfig('column-gap', 'normal');
-		},
-		nWaterfallLeftGap() {
-			return this._nGetWaterfallConfig('left-gap', 0);
-		},
-		nWaterfallRightGap() {
-			return this._nGetWaterfallConfig('right-gap', 0);
-		},
-		nViewIs() {
-			const is = this.finalNvueListIs;
-			return is === 'scroller' || is === 'view' ? 'view' : is === 'waterfall' ? 'header' : 'cell';
-		},
-		nSafeAreaBottomHeight() {
-			return this.safeAreaInsetBottom ? this.safeAreaBottom : 0;
-		},
-		finalNvueListIs() {
-			if (this.usePageScroll) return 'view';
-			const nvueListIsLowerCase = this.nvueListIs.toLowerCase();
-			if (['list','waterfall','scroller'].indexOf(nvueListIsLowerCase) !== -1) {
-				return nvueListIsLowerCase;
-			}
-			return 'list';
-		},
-		finalNvueSuperListIs() {
-			return this.usePageScroll ? 'view' : 'scroller';
-		},
-		finalNvueRefresherEnabled() {
-			return this.finalNvueListIs !== 'view' && this.finalRefresherEnabled && !this.nShowRefresherReveal && !this.useChatRecordMode;
-		},
-		// #endif
-	},
-	methods: {
-		// #ifdef APP-NVUE
-		//列表滚动时触发
-		_nOnScroll(e) {
-			this.$emit('scroll', e);
-			const contentOffsetY = -e.contentOffset.y;
-			this.oldScrollTop = contentOffsetY;
-			this.nListIsDragging = e.isDragging;
-			this._checkShouldShowBackToTop(contentOffsetY, contentOffsetY - 1);
-		},
-		//下拉刷新刷新中
-		_nOnRrefresh() {
-			if (this.nShowRefresherReveal) return;
-			this.nRefresherLoading = true;
-			this.refresherStatus = Enum.Refresher.Loading;
-			this._doRefresherLoad();
-		},
-		//下拉刷新下拉中
-		_nOnPullingdown(e) {
-			if (this.refresherStatus === Enum.Refresher.Loading || (this.isIos && !this.nListIsDragging)) return;
-			this._emitTouchmove(e);
-			const viewHeight = e.viewHeight;
-			const pullingDis = e.pullingDistance;
-			this.refresherStatus = pullingDis >= viewHeight ? Enum.Refresher.ReleaseToRefresh : Enum.Refresher.Default;
-		},
-		//下拉刷新结束
-		_nRefresherEnd(doEnd=true) {
-			if (doEnd) {
-			   this._nDoRefresherEndAnimation(0, -this.nShowRefresherRevealHeight); 
-			   !this.usePageScroll && this.$refs['zp-n-list'].resetLoadmore();
-			   this.nRefresherLoading = false;
-			}
-			this.$nextTick(() => {
-				setTimeout(()=> {
-					this.nShowBottom = true;
-				}, 10);
-			})
-		},
-		//执行主动触发下拉刷新动画
-		_nDoRefresherEndAnimation(height, translateY, animate = true, checkStack = true) {
-			this._cleanRefresherCompleteTimeout();
-			this._cleanRefresherEndTimeout();
-			if (!this.finalShowRefresherWhenReload) {
-				this.refresherEndTimeout = setTimeout(() => {
-					this.refresherStatus = Enum.Refresher.Default;
-				}, this.refresherCompleteDuration);
-				return;
-			}
-			const stackCount = this.refresherRevealStackCount;
-			if (height === 0 && checkStack) {
-				this.refresherRevealStackCount--;
-				if (stackCount > 1) return;
-				this.refresherEndTimeout = setTimeout(() => {
-					this.refresherStatus = Enum.Refresher.Default;
-				}, this.refresherCompleteDuration);
-			}
-			if (stackCount > 1) {
-				this.refresherStatus = Enum.Refresher.Loading;
-			}
-			const duration = animate ? 180 : 0;
-			weexAnimation.transition(this.$refs['zp-n-list-refresher-reveal'], {
-				styles: {
-					height: `${height}px`,
-					transform: `translateY(${translateY}px)`,
-				},
-				duration: duration,
-				timingFunction: 'linear',
-				needLayout: true,
-				delay: 0
-			})
-			setTimeout(() => {
-				if (animate) {
-					this.nShowRefresherReveal = height > 0;
-				}
-			}, duration > 0 ? duration - 100 : 0);
-		},
-		//滚动到底部加载更多
-		_nOnLoadmore() {
-			if (this.nShowRefresherReveal || !this.totalData.length) return;
-			this.useChatRecordMode ? this.doChatRecordLoadMore() : this._onLoadingMore('toBottom');
-		},
-		//获取nvue waterfall单项配置
-		_nGetWaterfallConfig(key, defaultValue) {
-			return this.nvueWaterfallConfig[key] || defaultValue;
-		},
-		//更新nvue 下拉刷新view容器的宽度
-		_nUpdateRefresherWidth() {
-			this.$nextTick(()=>{
-				this._getNodeClientRect('.zp-n-list').then(node => {
-					if (node) {
-						const nodeWidth = node[0].width;
-						this.nRefresherWidth = nodeWidth;
-					}
-				})
-			})
-			
-		}
-		// #endif
-	}
-}
-
-export default ZPNvue;

+ 0 - 632
uni_modules/z-paging/components/z-paging/js/modules/refresher.js

@@ -1,632 +0,0 @@
-// [z-paging]下拉刷新view模块
-import u from '.././z-paging-utils'
-import c from '.././z-paging-constant'
-import Enum from '.././z-paging-enum'
-
-const ZPRefresher = {
-	props: {
-		//下拉刷新的主题样式,支持black,white,默认black
-		refresherThemeStyle: {
-			type: String,
-			default: function() {
-				return u.gc('refresherThemeStyle', '');
-			}
-		},
-		//自定义下拉刷新中左侧图标的样式
-		refresherImgStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('refresherImgStyle', {});
-			}
-		},
-		//自定义下拉刷新中右侧状态描述文字的样式
-		refresherTitleStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('refresherTitleStyle', {});
-			}
-		},
-		//自定义下拉刷新中右侧最后更新时间文字的样式(show-refresher-update-time为true时有效)
-		refresherUpdateTimeStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('refresherUpdateTimeStyle', {});
-			}
-		},
-		//在微信小程序和QQ小程序中,是否实时监听下拉刷新中进度,默认为否
-		watchRefresherTouchmove: {
-			type: Boolean,
-			default: u.gc('watchRefresherTouchmove', false)
-		},
-		//底部加载更多的主题样式,支持black,white,默认black
-		loadingMoreThemeStyle: {
-			type: String,
-			default: function() {
-				return u.gc('loadingMoreThemeStyle', '');
-			}
-		},
-		//是否只使用下拉刷新,设置为true后将关闭mounted自动请求数据、关闭滚动到底部加载更多,强制隐藏空数据图。默认为否
-		refresherOnly: {
-			type: Boolean,
-			default: u.gc('refresherOnly', false)
-		},
-		//自定义下拉刷新默认状态下回弹动画时间,单位为毫秒,默认为100毫秒,nvue无效
-		refresherDefaultDuration: {
-			type: [Number, String],
-			default: u.gc('refresherDefaultDuration', 100)
-		},
-		//自定义下拉刷新结束以后延迟回弹的时间,单位为毫秒,默认为0
-		refresherCompleteDelay: {
-			type: [Number, String],
-			default: u.gc('refresherCompleteDelay', 0)
-		},
-		//自定义下拉刷新结束回弹动画时间,单位为毫秒,默认为300毫秒(refresherEndBounceEnabled为false时,refresherCompleteDuration为设定值的1/3),nvue无效
-		refresherCompleteDuration: {
-			type: [Number, String],
-			default: u.gc('refresherCompleteDuration', 300)
-		},
-		//自定义下拉刷新结束状态下是否允许列表滚动,默认为否
-		refresherCompleteScrollable: {
-			type: Boolean,
-			default: u.gc('refresherCompleteScrollable', false)
-		},
-		//是否使用自定义的下拉刷新,默认为是,即使用z-paging的下拉刷新。设置为false即代表使用uni scroll-view自带的下拉刷新,h5、App、微信小程序以外的平台不支持uni scroll-view自带的下拉刷新
-		useCustomRefresher: {
-			type: Boolean,
-			default: u.gc('useCustomRefresher', true)
-		},
-		//自定义下拉刷新下拉帧率,默认为40,过高可能会出现抖动问题
-		refresherFps: {
-			type: [Number, String],
-			default: u.gc('refresherFps', 40)
-		},
-		//自定义下拉刷新允许触发的最大下拉角度,默认为40度,当下拉角度小于设定值时,自定义下拉刷新动画不会被触发
-		refresherMaxAngle: {
-			type: [Number, String],
-			default: u.gc('refresherMaxAngle', 40)
-		},
-		//自定义下拉刷新的角度由未达到最大角度变到达到最大角度时,是否继续下拉刷新手势,默认为否
-		refresherAngleEnableChangeContinued: {
-			type: Boolean,
-			default: u.gc('refresherAngleEnableChangeContinued', false)
-		},
-		//自定义下拉刷新默认状态下的文字
-		refresherDefaultText: {
-			type: [String, Object],
-			default: u.gc('refresherDefaultText', null)
-		},
-		//自定义下拉刷新松手立即刷新状态下的文字
-		refresherPullingText: {
-			type: [String, Object],
-			default: u.gc('refresherPullingText', null)
-		},
-		//自定义下拉刷新刷新中状态下的文字
-		refresherRefreshingText: {
-			type: [String, Object],
-			default: u.gc('refresherRefreshingText', null)
-		},
-		//自定义下拉刷新刷新结束状态下的文字
-		refresherCompleteText: {
-			type: [String, Object],
-			default: u.gc('refresherCompleteText', null)
-		},
-		//是否开启自定义下拉刷新刷新结束回弹效果,默认为是
-		refresherEndBounceEnabled: {
-			type: Boolean,
-			default: u.gc('refresherEndBounceEnabled', true)
-		},
-		//是否开启自定义下拉刷新,默认为是
-		refresherEnabled: {
-			type: Boolean,
-			default: u.gc('refresherEnabled', true)
-		},
-		//设置自定义下拉刷新阈值,默认为80rpx
-		refresherThreshold: {
-			type: [Number, String],
-			default: u.gc('refresherThreshold', '80rpx')
-		},
-		//设置系统下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式,默认为black
-		refresherDefaultStyle: {
-			type: String,
-			default: u.gc('refresherDefaultStyle', 'black')
-		},
-		//设置自定义下拉刷新区域背景
-		refresherBackground: {
-			type: String,
-			default: u.gc('refresherBackground', 'transparent')
-		},
-		//设置固定的自定义下拉刷新区域背景
-		refresherFixedBackground: {
-			type: String,
-			default: u.gc('refresherFixedBackground', 'transparent')
-		},
-		//设置固定的自定义下拉刷新区域高度,默认为0
-		refresherFixedBacHeight: {
-			type: [Number, String],
-			default: u.gc('refresherFixedBacHeight', 0)
-		},
-		//设置自定义下拉刷新下拉超出阈值后继续下拉位移衰减的比例,范围0-1,值越大代表衰减越多。默认为0.7(nvue无效)
-		refresherOutRate: {
-			type: Number,
-			default: u.gc('refresherOutRate', 0.7)
-		},
-		//是否显示最后更新时间,默认为否
-		showRefresherUpdateTime: {
-			type: Boolean,
-			default: u.gc('showRefresherUpdateTime', false)
-		},
-		//如果需要区别不同页面的最后更新时间,请为不同页面的z-paging的`refresher-update-time-key`设置不同的字符串
-		refresherUpdateTimeKey: {
-			type: String,
-			default: u.gc('refresherUpdateTimeKey', 'default')
-		},
-	},
-	data() {
-		return {
-			//下拉刷新状态
-			refresherStatus: Enum.Refresher.Default,
-			refresherTouchstartY: 0,
-			lastRefresherTouchmove: null,
-			refresherReachMaxAngle: true,
-			refresherTransform: 'translateY(0px)',
-			refresherTransition: '',
-			finalRefresherDefaultStyle: 'black',
-			refresherRevealStackCount: 0,
-			refresherCompleteTimeout: null,
-			refresherCompleteSubTimeout: null,
-			refresherEndTimeout: null,
-			isTouchmovingTimeout: null,
-			refresherTriggered: false,
-			isTouchmoving: false,
-			isTouchEnded: false,
-			isUserPullDown: false,
-			privateRefresherEnabled: -1,
-			privateShowRefresherWhenReload: false,
-			customRefresherHeight: -1,
-			showCustomRefresher: false,
-			doRefreshAnimateAfter: false,
-			isRefresherInComplete: false,
-			pullDownTimeStamp: 0,
-			moveDis: 0,
-			oldMoveDis: 0,
-			oldRefresherTouchmoveY: 0,
-			oldTouchDirection: ''
-		}
-	},
-	watch: {
-		refresherDefaultStyle: {
-			handler(newVal) {
-				if (newVal.length) {
-					this.finalRefresherDefaultStyle = newVal;
-				}
-			},
-			immediate: true
-		},
-		refresherStatus(newVal, oldVal) {
-			if (newVal === Enum.Refresher.Loading){
-				this._cleanRefresherEndTimeout();
-			}
-			this.$emit('refresherStatusChange', newVal);
-			this.$emit('update:refresherStatus', newVal);
-		},
-		moveDis(newVal, oldVal){
-			this.oldMoveDis = oldVal;
-		}
-	},
-	computed: {
-		pullDownDisTimeStamp() {
-			return 1000 / this.refresherFps;
-		},
-		finalRefresherEnabled() {
-			if (this.useChatRecordMode) return false;
-			if (this.privateRefresherEnabled === -1) return this.refresherEnabled;
-			return this.privateRefresherEnabled === 1;
-		},
-		finalRefresherThreshold() {
-			let refresherThreshold = this.refresherThreshold;
-			let idDefault = false;
-			if (refresherThreshold === '80rpx') {
-				idDefault = true;
-				if (this.showRefresherUpdateTime) {
-					refresherThreshold = '120rpx';
-				}
-			}
-			if (idDefault && this.customRefresherHeight > 0) {
-				return this.customRefresherHeight;
-			}
-			return u.convertTextToPx(refresherThreshold);
-		},
-		finalRefresherFixedBacHeight() {
-			return u.convertTextToPx(this.refresherFixedBacHeight);
-		},
-		finalRefresherThemeStyle() {
-			return this.refresherThemeStyle.length ? this.refresherThemeStyle : this.defaultThemeStyle;
-		},
-		finalRefresherOutRate() {
-			let rate = this.refresherOutRate;
-			rate = Math.max(0,rate);
-			rate = Math.min(1,rate);
-			return rate;
-		},
-		finalRefresherTransform() {
-			if (this.refresherTransform === 'translateY(0px)') return 'none';
-			return this.refresherTransform;
-		},
-		finalShowRefresherWhenReload() {
-			return this.showRefresherWhenReload || this.privateShowRefresherWhenReload;
-		},
-		finalRefresherTriggered() {
-			if (!(this.finalRefresherEnabled && !this.useCustomRefresher)) return false;
-			return this.refresherTriggered;
-		},
-		showRefresher() {
-			const showRefresher = this.finalRefresherEnabled && this.useCustomRefresher && this.isTouchmoving;
-			// #ifndef APP-NVUE
-			if (this.customRefresherHeight === -1 && showRefresher) {
-				setTimeout(() => {
-					this.$nextTick(()=>{
-						this._updateCustomRefresherHeight();
-					})
-				}, 100)
-			}
-			// #endif
-			return showRefresher;
-		},
-		hasTouchmove(){
-			// #ifdef VUE2
-			// #ifdef APP-VUE || H5
-			if (this.$listeners && !this.$listeners.refresherTouchmove) return false;
-			// #endif
-			// #ifdef MP-WEIXIN || MP-QQ
-			return this.watchRefresherTouchmove;
-			// #endif
-			return true;
-			// #endif
-			return this.watchRefresherTouchmove;
-		},
-	},
-	methods: {
-		//终止下拉刷新状态
-		endRefresh(){
-		   this._refresherEnd();
-		},
-		handleRefresherStatusChanged(func) {
-			this.refresherStatusChangedFunc = func;
-		},
-		//自定义下拉刷新被触发
-		_onRefresh(fromScrollView=false,isUserPullDown=true) {
-			if (fromScrollView && !(this.finalRefresherEnabled && !this.useCustomRefresher)) return;
-			this.$emit('onRefresh');
-			this.$emit('Refresh');
-			// #ifdef APP-NVUE
-			if (this.loading) {
-				setTimeout(()=>{
-					this._nRefresherEnd();
-				},500)
-				return;
-			}
-			// #endif
-			if (this.loading || this.isRefresherInComplete) return;
-			this.loadingType = Enum.LoadingType.Refresher;
-			if (this.nShowRefresherReveal) return;
-			this.isUserPullDown = isUserPullDown;
-			this.isUserReload = !isUserPullDown;
-			this._startLoading(true);
-			this.refresherTriggered = true;
-			if(this.reloadWhenRefresh && isUserPullDown){
-				if (this.useChatRecordMode) {
-					this._onLoadingMore('click')
-				} else {
-					this._reload(false, false, isUserPullDown);
-				}
-			}
-		},
-		//自定义下拉刷新被复位
-		_onRestore() {
-			this.refresherTriggered = 'restore';
-			this.$emit('onRestore');
-			this.$emit('Restore');
-		},
-		// #ifndef APP-VUE || MP-WEIXIN || MP-QQ || H5
-		//拖拽开始
-		_refresherTouchstart(e) {
-			if (this._touchDisabled()) return;
-			const touch = u.getTouch(e);
-			this._handleRefresherTouchstart(touch);
-		},
-		// #endif
-		//进一步处理拖拽开始结果
-		_handleRefresherTouchstart(touch) {
-			if (!this.loading && this.isTouchEnded) {
-				this.isTouchmoving = false;
-			}
-			this.isTouchmovingTimeout && clearTimeout(this.isTouchmovingTimeout);
-			this.isTouchEnded = false;
-			this.refresherTransition = '';
-			this.refresherTouchstartY = touch.touchY;
-			this.$emit('refresherTouchstart', this.refresherTouchstartY);
-			this.lastRefresherTouchmove = touch;
-			this._cleanRefresherCompleteTimeout();
-			this._cleanRefresherEndTimeout();
-		},
-		// #ifndef APP-VUE || MP-WEIXIN || MP-QQ || H5
-		//拖拽中
-		_refresherTouchmove(e) {
-			const currentTimeStamp = u.getTime();
-			let touch = null;
-			let refresherTouchmoveY = 0;
-			if (this.watchTouchDirectionChange) {
-				touch = u.getTouch(e);
-				refresherTouchmoveY = touch.touchY;
-				const direction  = refresherTouchmoveY > this.oldRefresherTouchmoveY ? 'top' : 'bottom';
-				direction === this.oldTouchDirection && this._handleTouchDirectionChange({direction});
-				this.oldTouchDirection = direction;
-				this.oldRefresherTouchmoveY = refresherTouchmoveY;
-			}
-			if (this.pullDownTimeStamp && currentTimeStamp - this.pullDownTimeStamp <= this.pullDownDisTimeStamp) return;
-			if (this._touchDisabled()) return;
-			this.pullDownTimeStamp = Number(currentTimeStamp);
-			touch = u.getTouch(e);
-			refresherTouchmoveY = touch.touchY;
-			let moveDis = refresherTouchmoveY - this.refresherTouchstartY;
-			if (moveDis < 0) return;
-			if (this.refresherMaxAngle >= 0 && this.refresherMaxAngle <= 90 && this.lastRefresherTouchmove && this.lastRefresherTouchmove.touchY <= refresherTouchmoveY) {
-				if (!moveDis && !this.refresherAngleEnableChangeContinued && this.moveDis < 1 && !this.refresherReachMaxAngle) return;
-				const x = Math.abs(touch.touchX - this.lastRefresherTouchmove.touchX);
-				const y = Math.abs(refresherTouchmoveY - this.lastRefresherTouchmove.touchY);
-				const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
-				if ((x || y) && x > 1) {
-					const angle = Math.asin(y / z) / Math.PI * 180;
-					if (angle < this.refresherMaxAngle) {
-						this.lastRefresherTouchmove = touch;
-						this.refresherReachMaxAngle = false;
-						return;
-					}
-				}
-			}
-			moveDis = this._getFinalRefresherMoveDis(moveDis);
-			this._handleRefresherTouchmove(moveDis, touch);
-			if (!this.disabledBounce) {
-				if(this.isIos){
-					// #ifndef MP-LARK
-					this._handleScrollViewDisableBounce({bounce: false});
-					// #endif
-				}
-				this.disabledBounce = true;
-			}
-			this._emitTouchmove({pullingDistance:moveDis,dy:this.moveDis - this.oldMoveDis});
-		},
-		// #endif
-		//进一步处理拖拽中结果
-		_handleRefresherTouchmove(moveDis, touch) {
-			this.refresherReachMaxAngle = true;
-			this.isTouchmovingTimeout && clearTimeout(this.isTouchmovingTimeout);
-			this.isTouchmoving = true;
-			//this.refresherTransition = '';
-			this.isTouchEnded = false;
-			this.refresherStatus = moveDis >= this.finalRefresherThreshold ? Enum.Refresher.ReleaseToRefresh : this.refresherStatus = Enum.Refresher.Default;
-			// #ifndef APP-VUE || MP-WEIXIN || MP-QQ  || H5
-			// this.scrollEnable = false;
-			this.refresherTransform = `translateY(${moveDis}px)`;
-			this.lastRefresherTouchmove = touch;
-			// #endif
-			this.moveDis = moveDis;
-		},
-		// #ifndef APP-VUE || MP-WEIXIN || MP-QQ || H5
-		//拖拽结束
-		_refresherTouchend(e) {
-			if (this._touchDisabled() || !this.isTouchmoving) return;
-			const touch = u.getTouch(e);
-			let refresherTouchendY = touch.touchY;
-			let moveDis = refresherTouchendY - this.refresherTouchstartY;
-			moveDis = this._getFinalRefresherMoveDis(moveDis);
-			this._handleRefresherTouchend(moveDis);
-			this._handleScrollViewDisableBounce({bounce: true});
-			this.disabledBounce = false;
-		},
-		// #endif
-		//进一步处理拖拽结束结果
-		_handleRefresherTouchend(moveDis) {
-			// #ifndef APP-PLUS || H5 || MP-WEIXIN
-			if (!this.isTouchmoving) return;
-			// #endif
-			this.isTouchmovingTimeout && clearTimeout(this.isTouchmovingTimeout);
-			this.refresherReachMaxAngle = true;
-			if (moveDis < 0 && this.usePageScroll && this.loadingMoreEnabled && this.useCustomRefresher && this.pageScrollTop === -1) {
-				if (this.showConsoleError) {
-					u.consoleErr('usePageScroll为true并且自定义下拉刷新时必须引入mixin或在page滚动时通过调用z-paging组件的updatePageScrollTop方法设置当前的scrollTop');
-				}
-			}
-			this.isTouchEnded = true;
-			if (moveDis >= this.finalRefresherThreshold && this.refresherStatus === Enum.Refresher.ReleaseToRefresh) {
-				// #ifndef APP-VUE || MP-WEIXIN || MP-QQ  || H5
-				this.refresherTransform = `translateY(${this.finalRefresherThreshold}px)`;
-				// #endif
-				this.moveDis = this.finalRefresherThreshold;
-				this.refresherStatus = Enum.Refresher.Loading;
-				this._doRefresherLoad();
-			} else {
-				this._refresherEnd();
-				this.isTouchmovingTimeout = setTimeout(() => {
-					this.isTouchmoving = false;
-				}, this.refresherDefaultDuration);
-			}
-			this.scrollEnable = true;
-			this.$emit('refresherTouchend', moveDis);
-		},
-		//处理scroll-view bounce是否生效
-		_handleScrollViewDisableBounce(e) {
-			if (!this.usePageScroll && !this.scrollToTopBounceEnabled) {
-				this.refresherTransition = '';
-				this.scrollEnable = e.bounce;
-			}
-		},
-		//wxs正在下拉状态改变处理
-		_handleWxsPullingDownStatusChange(onPullingDown) {
-			this.wxsOnPullingDown = onPullingDown;
-			if (onPullingDown && !this.useChatRecordMode) {
-				this.renderPropScrollTop = 0;
-			}
-		},
-		//wxs正在下拉处理
-		_handleWxsPullingDown(e){
-			this._emitTouchmove({pullingDistance:e.moveDis,dy:e.diffDis});
-		},
-		//wxs触摸方向改变
-		_handleTouchDirectionChange(e) {
-			this.$emit('touchDirectionChange',e.direction);
-		},
-		//wxs通知更新其props
-		_handlePropUpdate(e){
-			this.wxsPropType = u.getTime().toString();
-		},
-		//下拉刷新结束
-		_refresherEnd(shouldEndLoadingDelay = true, fromAddData = false, isUserPullDown = false, setLoading = true) {
-			if (this.loadingType === Enum.LoadingType.Refresher) {
-				let refresherCompleteDelay = 0;
-				if(fromAddData && (isUserPullDown || this.showRefresherWhenReload)){
-					refresherCompleteDelay = this.refresherCompleteDuration > 700 ? 1 : this.refresherCompleteDelay;
-				}
-				const refresherStatus = refresherCompleteDelay > 0 ? Enum.Refresher.Complete : Enum.Refresher.Default;
-				if (this.finalShowRefresherWhenReload) {
-					const stackCount = this.refresherRevealStackCount;
-					this.refresherRevealStackCount--;
-					if (stackCount > 1) return;
-				}
-				this._cleanRefresherEndTimeout();
-				this.refresherEndTimeout = setTimeout(() => {
-					this.refresherStatus = refresherStatus;
-				}, this.refresherStatus !== Enum.Refresher.Default && refresherStatus === Enum.Refresher.Default ? this.refresherCompleteDuration : 0);
-				
-				// #ifndef APP-NVUE
-				if (refresherCompleteDelay > 0) {
-					this.isRefresherInComplete = true;
-				}
-				// #endif
-				this._cleanRefresherCompleteTimeout();
-				this.refresherCompleteTimeout = setTimeout(() => {
-					let animateDuration = 1;
-					const animateType = this.refresherEndBounceEnabled && fromAddData ? 'cubic-bezier(0.19,1.64,0.42,0.72)' : 'linear';
-					if (fromAddData) {
-						animateDuration = this.refresherEndBounceEnabled ? this.refresherCompleteDuration / 1000 : this.refresherCompleteDuration / 3000;
-					}
-					this.refresherTransition = `transform ${fromAddData ? animateDuration : this.refresherDefaultDuration / 1000}s ${animateType}`;
-					// #ifndef APP-VUE || MP-WEIXIN || MP-QQ  || H5
-					this.refresherTransform = 'translateY(0px)';
-					// #endif
-					// #ifdef APP-VUE || MP-WEIXIN || MP-QQ || H5
-					this.wxsPropType = this.refresherTransition + 'end' + u.getTime();
-					// #endif
-					// #ifdef APP-NVUE
-					this._nRefresherEnd();
-					// #endif
-					this.moveDis = 0;
-					// #ifndef APP-NVUE
-					if (refresherStatus === Enum.Refresher.Complete) {
-						if (this.refresherCompleteSubTimeout) {
-							clearTimeout(this.refresherCompleteSubTimeout);
-							this.refresherCompleteSubTimeout = null;
-						}
-						this.refresherCompleteSubTimeout = setTimeout(() => {
-							this.$nextTick(() => {
-								this.refresherStatus = Enum.Refresher.Default;
-								this.isRefresherInComplete = false;
-							})
-						}, animateDuration * 800);
-					}
-					// #endif
-				}, refresherCompleteDelay);
-			}
-			if (setLoading) {
-				setTimeout(() => {
-					this.loading = false;
-				}, shouldEndLoadingDelay ? c.delayTime : 0);
-				isUserPullDown && this._onRestore();
-			}
-		},
-		//模拟用户手动触发下拉刷新
-		_doRefresherRefreshAnimate() {
-			this._cleanRefresherCompleteTimeout();
-			// #ifndef APP-NVUE
-			const doRefreshAnimateAfter = !this.doRefreshAnimateAfter && (this.finalShowRefresherWhenReload) && this
-				.customRefresherHeight === -1 && this.refresherThreshold === '80rpx';
-			if (doRefreshAnimateAfter) {
-				this.doRefreshAnimateAfter = true;
-				return;
-			}
-			// #endif
-			this.refresherRevealStackCount++;
-			// #ifndef APP-VUE || MP-WEIXIN || MP-QQ  || H5
-			this.refresherTransform = `translateY(${this.finalRefresherThreshold}px)`;
-			// #endif
-			// #ifdef APP-VUE || MP-WEIXIN || MP-QQ || H5
-			this.wxsPropType = 'begin' + u.getTime();
-			// #endif
-			this.moveDis = this.finalRefresherThreshold;
-			this.refresherStatus = Enum.Refresher.Loading;
-			this.isTouchmoving = true;
-			this.isTouchmovingTimeout && clearTimeout(this.isTouchmovingTimeout);
-			this._doRefresherLoad(false);
-		},
-		//触发下拉刷新
-		_doRefresherLoad(isUserPullDown=true) {
-			this._onRefresh(false,isUserPullDown);
-			this.loading = true;
-		},
-		//获取处理后的moveDis
-		_getFinalRefresherMoveDis(moveDis) {
-			moveDis = moveDis * 0.85;
-			if (moveDis >= this.finalRefresherThreshold) {
-				moveDis = this.finalRefresherThreshold + (moveDis - this.finalRefresherThreshold) * (1 - this.finalRefresherOutRate);
-			}
-			return moveDis;
-		},
-		// #ifndef APP-VUE || MP-WEIXIN || MP-QQ || H5
-		//判断touch手势是否要触发
-		_touchDisabled() {
-			let checkOldScrollTop = this.oldScrollTop > 5;
-			return this.loading || this.isRefresherInComplete || this.useChatRecordMode || !this.refresherEnabled || !this.useCustomRefresher ||(this.usePageScroll && this.useCustomRefresher && this.pageScrollTop > 10) || (!(this.usePageScroll && this.useCustomRefresher) && checkOldScrollTop);
-		},
-		// #endif
-		//更新自定义下拉刷新view高度
-		_updateCustomRefresherHeight() {
-			this._getNodeClientRect('.zp-custom-refresher-slot-view').then((res) => {
-				if (res) {
-					this.customRefresherHeight = res[0].height;
-					if (this.customRefresherHeight > 0) {
-						this.showCustomRefresher = true;
-					}
-				} else {
-					this.customRefresherHeight = 0;
-				}
-				if (this.doRefreshAnimateAfter) {
-					this.doRefreshAnimateAfter = false;
-					this._doRefresherRefreshAnimate();
-				}
-			});
-		},
-		//发射pullingDown事件
-		_emitTouchmove(e){
-			// #ifndef APP-NVUE
-			e.viewHeight = this.finalRefresherThreshold;
-			// #endif
-			e.rate = e.pullingDistance / e.viewHeight;
-			if(this.hasTouchmove){
-				this.$emit('refresherTouchmove',e);
-			}
-		},
-		//清除refresherCompleteTimeout
-		_cleanRefresherCompleteTimeout() {
-			this.refresherCompleteTimeout = this._cleanTimeout(this.refresherCompleteTimeout);
-			// #ifdef APP-NVUE
-			this._nRefresherEnd(false);
-			// #endif
-		},
-		//清除refresherEndTimeout
-		_cleanRefresherEndTimeout() {
-			this.refresherEndTimeout = this._cleanTimeout(this.refresherEndTimeout);
-		},
-	}
-}
-
-export default ZPRefresher;

+ 0 - 478
uni_modules/z-paging/components/z-paging/js/modules/scroller.js

@@ -1,478 +0,0 @@
-// [z-paging]scroll相关模块
-import u from '.././z-paging-utils'
-import Enum from '.././z-paging-enum'
-
-// #ifdef APP-NVUE
-const weexDom = weex.requireModule('dom');
-// #endif
-const ZPScroller = {
-	props: {
-		//使用页面滚动,默认为否,当设置为是时则使用页面的滚动而非此组件内部的scroll-view的滚动,使用页面滚动时z-paging无需设置确定的高度且对于长列表展示性能更高,但配置会略微繁琐
-		usePageScroll: {
-			type: Boolean,
-			default: u.gc('usePageScroll', false)
-		},
-		//是否可以滚动,使用内置scroll-view和nvue时有效,默认为是
-		scrollable: {
-			type: Boolean,
-			default: u.gc('scrollable', true)
-		},
-		//控制是否出现滚动条,默认为是
-		showScrollbar: {
-			type: Boolean,
-			default: u.gc('showScrollbar', true)
-		},
-		//是否允许横向滚动,默认为否
-		scrollX: {
-			type: Boolean,
-			default: u.gc('scrollX', false)
-		},
-		//iOS设备上滚动到顶部时是否允许回弹效果,默认为否。关闭回弹效果后可使滚动到顶部与下拉刷新更连贯,但是有吸顶view时滚动到顶部时可能出现抖动。
-		scrollToTopBounceEnabled: {
-			type: Boolean,
-			default: u.gc('scrollToTopBounceEnabled', false)
-		},
-		//iOS设备上滚动到底部时是否允许回弹效果,默认为是。
-		scrollToBottomBounceEnabled: {
-			type: Boolean,
-			default: u.gc('scrollToBottomBounceEnabled', true)
-		},
-		//在设置滚动条位置时使用动画过渡,默认为否
-		scrollWithAnimation: {
-			type: Boolean,
-			default: u.gc('scrollWithAnimation', false)
-		},
-		//值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
-		scrollIntoView: {
-			type: String,
-			default: u.gc('scrollIntoView', '')
-		},
-	},
-	data() {
-		return {
-			scrollTop: 0,
-			oldScrollTop: 0,
-			scrollViewStyle: {},
-			scrollViewContainerStyle: {},
-			scrollViewInStyle: {},
-			pageScrollTop: -1,
-			scrollEnable: true,
-			privateScrollWithAnimation: -1,
-			cacheScrollNodeHeight: -1
-		}
-	},
-	watch: {
-		oldScrollTop(newVal, oldVal) {
-			!this.usePageScroll && this._scrollTopChange(newVal,oldVal,false);
-		},
-		pageScrollTop(newVal, oldVal) {
-			this.usePageScroll && this._scrollTopChange(newVal,oldVal,true);
-		},
-		usePageScroll: {
-			handler(newVal) {
-				this.$nextTick(() => {
-					this.renderPropUsePageScroll = newVal;
-				})
-				if (this.loaded && this.autoHeight) {
-					this._setAutoHeight(!newVal);
-				}
-				// #ifdef H5
-				if (newVal) {
-					this.$nextTick(()=>{
-						const mainScrollRef = this.$refs['zp-scroll-view'].$refs.main;
-						if (mainScrollRef) {
-							mainScrollRef.style = {};
-						}
-					})
-				}
-				// #endif
-			},
-			immediate: true
-		},
-		finalScrollTop(newVal, oldVal) {
-			if (!this.useChatRecordMode) {
-				this.renderPropScrollTop = newVal < 6 ? 0 : 10;
-			}
-		},
-	},
-	computed: {
-		finalScrollWithAnimation() {
-			if (this.privateScrollWithAnimation !== -1) {
-				const scrollWithAnimation = this.privateScrollWithAnimation === 1;
-				this.privateScrollWithAnimation = -1;
-				return scrollWithAnimation;
-			}
-			return this.scrollWithAnimation;
-		},
-		finalScrollViewStyle() {
-			if (this.superContentZIndex != 1) {
-				this.scrollViewStyle['z-index'] = this.superContentZIndex;
-				this.scrollViewStyle['position'] = 'relative';
-			}
-			return this.scrollViewStyle;
-		},
-		finalScrollTop() {
-			return this.usePageScroll ? this.pageScrollTop : this.oldScrollTop;
-		},
-		finalIsOldWebView() {
-			return this.isOldWebView && !this.usePageScroll;
-		}
-	},
-	methods: {
-		//滚动到顶部,animate为是否展示滚动动画,默认为是
-		scrollToTop(animate,checkReverse = true) {
-			// #ifdef APP-NVUE
-			if (checkReverse && this.useChatRecordMode) {
-				if(!this.nIsFirstPageAndNoMore){
-					this.scrollToBottom(animate, false);
-					return;
-				}
-			}
-			// #endif
-			this.$nextTick(() => {
-				this._scrollToTop(animate, false);
-				// #ifdef APP-NVUE
-				if (this.nvueFastScroll && animate) {
-					setTimeout(() => {
-						this._scrollToTop(false, false);
-					}, 150);
-				}
-				// #endif
-			})
-		},
-		//滚动到底部,animate为是否展示滚动动画,默认为是
-		scrollToBottom(animate,checkReverse = true) {
-			// #ifdef APP-NVUE
-			if (checkReverse && this.useChatRecordMode) {
-				if(!this.nIsFirstPageAndNoMore){
-					this.scrollToTop(animate, false);
-					return;
-				}
-			}
-			// #endif
-			this.$nextTick(() => {
-				this._scrollToBottom(animate);
-				// #ifdef APP-NVUE
-				if (this.nvueFastScroll && animate) {
-					setTimeout(() => {
-						this._scrollToBottom(false);
-					}, 150);
-				}
-				// #endif
-			})
-		},
-		//滚动到指定view(vue中有效)。sel为需要滚动的view的id值,不包含"#";offset为偏移量,单位为px;animate为是否展示滚动动画,默认为否
-		scrollIntoViewById(sel, offset, animate) {
-			this._scrollIntoView(sel, offset, animate);
-		},
-		//滚动到指定view(vue中有效)。nodeTop为需要滚动的view的top值(通过uni.createSelectorQuery()获取);offset为偏移量,单位为px;animate为是否展示滚动动画,默认为否
-		scrollIntoViewByNodeTop(nodeTop, offset, animate) {
-			this.scrollTop = this.oldScrollTop;
-			this.$nextTick(() => {
-				this._scrollIntoViewByNodeTop(nodeTop, offset, animate);
-			})
-		},
-		//滚动到指定位置(vue中有效)。y为与顶部的距离,单位为px;offset为偏移量,单位为px;animate为是否展示滚动动画,默认为否
-		scrollToY(y, offset, animate) {
-			this.scrollTop = this.oldScrollTop;
-			this.$nextTick(() => {
-				this._scrollToY(y, offset, animate);
-			})
-		},
-		//滚动到指定view(nvue中有效)。index为需要滚动的view的index(第几个);offset为偏移量,单位为px;animate为是否展示滚动动画,默认为否
-		scrollIntoViewByIndex(index, offset, animate) {
-			this._scrollIntoView(index, offset, animate);
-		},
-		//滚动到指定view(nvue中有效)。view为需要滚动的view(通过`this.$refs.xxx`获取),不包含"#";offset为偏移量,单位为px;animate为是否展示滚动动画,默认为否
-		scrollIntoViewByView(view, offset, animate) {
-			this._scrollIntoView(view, offset, animate);
-		},
-		//当使用页面滚动并且自定义下拉刷新时,请在页面的onPageScroll中调用此方法,告知z-paging当前的pageScrollTop,否则会导致在任意位置都可以下拉刷新
-		updatePageScrollTop(value) {
-			if (value == undefined) {
-				u.consoleErr('updatePageScrollTop方法缺少参数,请将页面onPageScroll事件中的scrollTop传递给此方法');
-				return;
-			}
-			this.pageScrollTop = value;
-		},
-		//当使用页面滚动并且设置了slot="top"时,默认初次加载会自动获取其高度,并使内部容器下移,当slot="top"的view高度动态改变时,在其高度需要更新时调用此方法
-		updatePageScrollTopHeight() {
-			this._updatePageScrollTopOrBottomHeight('top');
-		},
-		//当使用页面滚动并且设置了slot="bottom"时,默认初次加载会自动获取其高度,并使内部容器下移,当slot="bottom"的view高度动态改变时,在其高度需要更新时调用此方法
-		updatePageScrollBottomHeight() {
-			this._updatePageScrollTopOrBottomHeight('bottom');
-		},
-		//更新z-paging内置scroll-view的scrollTop
-		updateScrollViewScrollTop(scrollTop, animate = true) {
-			this.privateScrollWithAnimation = animate ? 1 : 0;
-			this.scrollTop = this.oldScrollTop;
-			this.$nextTick(() => {
-				this.scrollTop = scrollTop;
-				this.oldScrollTop = this.scrollTop;
-			});
-		},
-		
-		//当滚动到顶部时
-		_scrollToUpper() {
-			this.$emit('scrolltoupper');
-			this.$emit('scrollTopChange', 0);
-			this.$nextTick(() => {
-				this.oldScrollTop = 0;
-			})
-			if (!this.useChatRecordMode) return;
-			if (this.loadingStatus === Enum.More.NoMore) return;
-			this._onLoadingMore('click');
-		},
-		//滚动到顶部
-		_scrollToTop(animate = true, isPrivate = true) {
-			// #ifdef APP-NVUE
-			const el = this.$refs['zp-n-list-top-tag'];
-			if (this.usePageScroll) {
-				this._getNodeClientRect('zp-page-scroll-top', false).then((node) => {
-					let nodeHeight = 0;
-					if (node) {
-						nodeHeight = node[0].height;
-					}
-					weexDom.scrollToElement(el, {
-						offset: -nodeHeight,
-						animated: animate
-					});
-				});
-			} else {
-				if(!this.isIos && this.nvueListIs === 'scroller'){
-					this._getNodeClientRect('zp-n-refresh-container', false).then((node) => {
-						let nodeHeight = 0;
-						if (node) {
-							nodeHeight = node[0].height;
-						}
-						weexDom.scrollToElement(el, {
-							offset: -nodeHeight,
-							animated: animate
-						});
-					});
-				}else{
-					weexDom.scrollToElement(el, {
-						offset: 0,
-						animated: animate
-					});
-				}
-			}
-			return;
-			// #endif
-			if (this.usePageScroll) {
-				this.$nextTick(() => {
-					uni.pageScrollTo({
-						scrollTop: 0,
-						duration: animate ? 100 : 0,
-					});
-				});
-				return;
-			}
-			this.privateScrollWithAnimation = animate ? 1 : 0;
-			this.scrollTop = this.oldScrollTop;
-			this.$nextTick(() => {
-				this.scrollTop = 0;
-				this.oldScrollTop = this.scrollTop;
-			});
-		},
-		//滚动到底部
-		async _scrollToBottom(animate = true) {
-			// #ifdef APP-NVUE
-			const el = this.$refs['zp-n-list-bottom-tag'];
-			if (el) {
-				weexDom.scrollToElement(el, {
-					offset: 0,
-					animated: animate
-				});
-			} else {
-				u.consoleErr('滚动到底部失败,因为您设置了hideNvueBottomTag为true');
-			}
-			return;
-			// #endif
-			if (this.usePageScroll) {
-				this.$nextTick(() => {
-					uni.pageScrollTo({
-						scrollTop: Number.MAX_VALUE,
-						duration: animate ? 100 : 0,
-					});
-				});
-				return;
-			}
-			try {
-				this.privateScrollWithAnimation = animate ? 1 : 0;
-				let pagingContainerH = 0;
-				let scrollViewH = 0;
-				const pagingContainerNode = await this._getNodeClientRect('.zp-paging-container');
-				const scrollViewNode = await this._getNodeClientRect('.zp-scroll-view');
-				if (pagingContainerNode) {
-					pagingContainerH = pagingContainerNode[0].height;
-				}
-				if (scrollViewNode) {
-					scrollViewH = scrollViewNode[0].height;
-				}
-				if (pagingContainerH > scrollViewH) {
-					this.scrollTop = this.oldScrollTop;
-					this.$nextTick(() => {
-						this.scrollTop = pagingContainerH - scrollViewH + this.virtualPlaceholderTopHeight;
-						this.oldScrollTop = this.scrollTop;
-					});
-				}
-			} catch (e) {}
-		},
-		//滚动到指定view
-		_scrollIntoView(sel, offset = 0, animate = false, finishCallback) {
-			try {
-				this.scrollTop = this.oldScrollTop;
-				this.$nextTick(() => {
-					// #ifdef APP-NVUE
-					const refs = this.$parent.$refs;
-					if (!refs) return;
-					const dataType = Object.prototype.toString.call(sel);
-					let el = null;
-					if (dataType === '[object Number]') {
-						const els = refs[`z-paging-${sel}`];
-						el = els ? els[0] : null;
-					} else if (dataType === '[object Array]') {
-						el = sel[0];
-					} else {
-						el = sel;
-					}
-					if (el) {
-						weexDom.scrollToElement(el, {
-							offset: -offset,
-							animated: animate
-						});
-					} else {
-						u.consoleErr('在nvue中滚动到指定位置,cell必须设置 :ref="`z-paging-${index}`"');
-					}
-					return;
-					// #endif
-					if (sel.indexOf('#') != -1) {
-						sel = sel.replace('#', '');
-					}
-					this._getNodeClientRect('#' + sel, false).then((node) => {
-						if (node) {
-							let nodeTop = node[0].top;
-							this._scrollIntoViewByNodeTop(nodeTop, offset, animate);
-							if (finishCallback) {
-								finishCallback();
-							}
-						}
-					});
-				});
-			} catch (e) {}
-		},
-		//通过nodeTop滚动到指定view
-		_scrollIntoViewByNodeTop(nodeTop, offset = 0, animate = false) {
-			this._scrollToY(nodeTop,offset,animate,true);
-		},
-		//滚动到指定位置
-		_scrollToY(y, offset = 0, animate = false, addScrollTop = false) {
-			this.privateScrollWithAnimation = animate ? 1 : 0;
-			if (this.usePageScroll) {
-				uni.pageScrollTo({
-					scrollTop: y - offset,
-					duration: animate ? 100 : 0
-				});
-			} else {
-				if(addScrollTop){
-				   y += this.oldScrollTop; 
-				}
-				this.scrollTop = y - offset;
-				this.oldScrollTop = this.scrollTop;
-			}
-		},
-		//scroll-view滚动中
-		_scroll(e) {
-			this.$emit('scroll', e);
-			const scrollTop = e.detail.scrollTop;
-			// #ifndef APP-NVUE
-			this.finalUseVirtualList && this._updateVirtualScroll(scrollTop,this.oldScrollTop - scrollTop);
-			// #endif
-			this.oldScrollTop = scrollTop;
-			const scrollDiff = e.detail.scrollHeight - this.oldScrollTop;
-			!this.isIos && this._checkScrolledToBottom(scrollDiff);
-		},
-		//scrollTop改变时触发
-		_scrollTopChange(newVal,oldVal,isPageScrollTop){
-			this.$emit('scrollTopChange', newVal);
-			this.$emit('update:scrollTop', newVal);
-			this._checkShouldShowBackToTop(newVal, oldVal);
-			const scrollTop = this.isIos ? (newVal > 5 ? 6 : 0) : newVal;
-			if (isPageScrollTop) {
-				this.wxsPageScrollTop = scrollTop;
-			} else {
-				this.wxsScrollTop = scrollTop;
-			}
-		},
-		//更新使用页面滚动时slot="top"或"bottom"插入view的高度
-		_updatePageScrollTopOrBottomHeight(type) {
-			// #ifndef APP-NVUE
-			if (!this.usePageScroll) return;
-			// #endif
-			this._doCheckScrollViewShouldFullHeight(this.realTotalData);
-			const node = `.zp-page-${type}`;
-			const marginText = `margin${type.slice(0,1).toUpperCase() + type.slice(1)}`;
-			let safeAreaInsetBottomAdd = this.safeAreaInsetBottom;
-			// #ifdef APP-NVUE
-			if (!this.usePageScroll) {
-				safeAreaInsetBottomAdd = false;
-			}
-			// #endif
-			this.$nextTick(() => {
-				let delayTime = 0;
-				// #ifdef MP-BAIDU || APP-NVUE
-				delayTime = 50;
-				// #endif
-				setTimeout(() => {
-					this._getNodeClientRect(node).then((res) => {
-						if (res) {
-							let pageScrollNodeHeight = res[0].height;
-							if (type === 'bottom') {
-								if (safeAreaInsetBottomAdd) {
-									pageScrollNodeHeight += this.safeAreaBottom;
-								}
-							} else {
-								this.cacheTopHeight = pageScrollNodeHeight;
-							}
-							this.$set(this.scrollViewStyle, marginText,
-								`${pageScrollNodeHeight}px`);
-						} else if (safeAreaInsetBottomAdd) {
-							this.$set(this.scrollViewStyle, marginText, `${this.safeAreaBottom}px`);
-						}
-					});
-				}, delayTime)
-			})
-		},
-		//获取slot="left"和slot="right"宽度并且更新布局
-		_updateLeftAndRightWidth(){
-			if (!this.finalIsOldWebView) return;
-			this.$nextTick(() => {
-				let delayTime = 0;
-				// #ifdef MP-BAIDU
-				delayTime = 10;
-				// #endif
-				setTimeout(() => {
-					this._getNodeClientRect('.zp-page-left').then((res) => {
-						this.scrollViewContainerStyle['left'] = res ? res[0].width + 'px' : 0;
-					});
-					this._getNodeClientRect('.zp-page-right').then((res) => {
-						this.scrollViewContainerStyle['right'] = res ? res[0].width + 'px' : 0;
-					});
-				}, delayTime)
-			})
-		},
-		//更新renderJs数据
-		_updateRenderJsData(){
-			this.renderPropUsePageScroll = -1;
-			this.renderPropUsePageScroll = this.usePageScroll;
-			if (!this.useChatRecordMode) {
-				this.renderPropScrollTop = -1;
-				this.renderPropScrollTop = this.finalScrollTop < 6 ? 0 : 10;
-			}
-		}
-	}
-}
-
-export default ZPScroller;

+ 0 - 374
uni_modules/z-paging/components/z-paging/js/modules/virtual-list.js

@@ -1,374 +0,0 @@
-// [z-paging]虚拟列表模块
-import u from '.././z-paging-utils'
-import c from '.././z-paging-constant'
-import Enum from '.././z-paging-enum'
-
-const ZPVirtualList = {
-	props: {
-		//是否使用虚拟列表,默认为否
-		useVirtualList: {
-			type: Boolean,
-			default: u.gc('useVirtualList', false)
-		},
-		//是否在z-paging内部循环渲染列表(内置列表),默认为否。若use-virtual-list为true,则此项恒为true
-		useInnerList: {
-			type: Boolean,
-			default: u.gc('useInnerList', false)
-		},
-		//强制关闭inner-list,默认为false,如果为true将强制关闭innerList,适用于开启了虚拟列表后需要强制关闭inner-list的情况
-		forceCloseInnerList: {
-			type: Boolean,
-			default: u.gc('forceCloseInnerList', false)
-		},
-		//内置列表cell的key名称,仅nvue有效,在nvue中开启use-inner-list时必须填此项
-		cellKeyName: {
-			type: String,
-			default: u.gc('cellKeyName', '')
-		},
-		//innerList样式
-		innerListStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('innerListStyle', {});
-			}
-		},
-		//innerCell样式
-		innerCellStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('innerCellStyle', {});
-			}
-		},
-		//预加载的列表可视范围(列表高度)页数,默认为7,即预加载当前页及上下各7页的cell。此数值越大,则虚拟列表中加载的dom越多,内存消耗越大(会维持在一个稳定值),但增加预加载页面数量可缓解快速滚动短暂白屏问题
-		preloadPage: {
-			type: [Number, String],
-			default: u.gc('preloadPage', 7),
-			validator: (value) => {
-				if (value <= 0) u.consoleErr('preload-page必须大于0!');
-				return value > 0;
-			}
-		},
-		//虚拟列表cell高度模式,默认为fixed,也就是每个cell高度完全相同,将以第一个cell高度为准进行计算。可选值【dynamic】,即代表高度是动态非固定的,【dynamic】性能低于【fixed】。
-		cellHeightMode: {
-			type: String,
-			default: u.gc('cellHeightMode', 'fixed')
-		},
-		//虚拟列表列数,默认为1。常用于每行有多列的情况,例如每行有2列数据,需要将此值设置为2
-		virtualListCol: {
-			type: [Number, String],
-			default: u.gc('virtualListCol', 1)
-		},
-		//虚拟列表scroll取样帧率,默认为60,过高可能出现卡顿等问题
-		virtualScrollFps: {
-			type: [Number, String],
-			default: u.gc('virtualScrollFps', 60)
-		},
-	},
-	data() {
-		return {
-			virtualListKey: u.getInstanceId(),
-			virtualPageHeight: 0,
-			virtualCellHeight: 0,
-			virtualScrollTimeStamp: 0,
-			
-			virtualList: [],
-			virtualPlaceholderTopHeight: 0,
-			virtualPlaceholderBottomHeight: 0,
-			virtualTopRangeIndex: 0,
-			virtualBottomRangeIndex: 0,
-			lastVirtualTopRangeIndex: 0,
-			lastVirtualBottomRangeIndex: 0,
-			
-			virtualHeightCacheList: [],
-			
-			getCellHeightRetryCount: {
-				fixed: 0,
-				dynamic: 0
-			},
-			pagingOrgTop: -1,
-			updateVirtualListFromDataChange: false
-		}
-	},
-	watch: {
-		realTotalData(newVal) {
-			// #ifndef APP-NVUE
-			if (this.finalUseVirtualList) {
-				this.updateVirtualListFromDataChange = true;
-				this.$nextTick(() => {
-					if (!newVal.length) {
-						this._resetDynamicListState(!this.isUserPullDown);
-					}
-					this.getCellHeightRetryCount.fixed = 0;
-					this.finalUseVirtualList && newVal.length && this.cellHeightMode === Enum.CellHeightMode.Fixed && this.isFirstPage && this._updateFixedCellHeight();
-					this.finalUseVirtualList && this._updateVirtualScroll(this.oldScrollTop);
-				})
-			}
-			// #endif
-		},
-		virtualList(newVal){
-			this.$emit('update:virtualList', newVal);
-			this.$emit('virtualListChange', newVal);
-		}
-	},
-	computed: {
-		finalUseVirtualList() {
-			if (this.useVirtualList && this.usePageScroll){
-				u.consoleErr('使用页面滚动时,开启虚拟列表无效!');
-			}
-			return this.useVirtualList && !this.usePageScroll;
-		},
-		finalUseInnerList() {
-			return this.useInnerList || (this.finalUseVirtualList && !this.forceCloseInnerList)
-		},
-		finalCellKeyName() {
-			// #ifdef APP-NVUE
-			if (this.finalUseVirtualList){
-				if (!this.cellKeyName.length){
-					u.consoleErr('在nvue中开启use-virtual-list必须设置cell-key-name,否则将可能导致列表渲染错误!');
-				}
-			}
-			// #endif
-			return this.cellKeyName;
-		},
-		finalVirtualPageHeight(){
-			return this.virtualPageHeight > 0 ? this.virtualPageHeight : this.windowHeight;
-			return virtualPageHeight * this.preloadPage;
-		},
-		virtualRangePageHeight(){
-			return this.finalVirtualPageHeight * this.preloadPage;
-		},
-		virtualScrollDisTimeStamp() {
-			return 1000 / this.virtualScrollFps;
-		},
-	},
-	methods: {
-		//初始化虚拟列表
-		_virtualListInit() {
-			this.$nextTick(() => {
-				setTimeout(() => {
-					this._getNodeClientRect('.zp-scroll-view').then(node => {
-						if (node && node.length) {
-							this.pagingOrgTop = node[0].top;
-							this.virtualPageHeight = node[0].height;
-						}
-					});
-				}, c.delayTime);
-			})
-		},
-		//cellHeightMode为fixed时获取第一个cell高度
-		_updateFixedCellHeight() {
-			this.$nextTick(() => {
-				const updateFixedCellHeightTimeout = setTimeout(() => {
-					this._getNodeClientRect(`#zp-${0}`,this.finalUseInnerList).then(cellNode => {
-						const hasCellNode = cellNode && cellNode.length;
-						if (!hasCellNode) {
-							clearTimeout(updateFixedCellHeightTimeout);
-							if (this.getCellHeightRetryCount.fixed > 10) {
-								u.consoleErr('获取虚拟列表cell高度失败,可能是for循环cell处没有写:id="`zp-${item.zp_index}`",请检查您的代码!')
-								return;
-							}
-							this.getCellHeightRetryCount.fixed++;
-							this._updateFixedCellHeight();
-						} else {
-							this.virtualCellHeight = cellNode[0].height;
-							this._updateVirtualScroll(this.oldScrollTop);
-						}
-					});
-				}, c.delayTime);
-			})
-		},
-		//cellHeightMode为dynamic时获取每个cell高度
-		_updateDynamicCellHeight(list) {
-			this.$nextTick(() => {
-				const updateDynamicCellHeightTimeout = setTimeout(async () => {
-					for (let i = 0; i < list.length; i++) {
-						let item = list[i];
-						const cellNode = await this._getNodeClientRect(`#zp-${item[c.listCellIndexKey]}`,this.finalUseInnerList);
-						const hasCellNode = cellNode && cellNode.length;
-						const currentHeight = hasCellNode ? cellNode[0].height : 0;
-						if (!hasCellNode) {
-							clearTimeout(updateDynamicCellHeightTimeout);
-							this.virtualHeightCacheList = this.virtualHeightCacheList.slice(-i);
-							if (this.getCellHeightRetryCount.dynamic > 10) {
-								u.consoleErr('获取虚拟列表cell高度失败,可能是for循环cell处没有写:id="`zp-${item.zp_index}`",请检查您的代码!')
-								return;
-							}
-							this.getCellHeightRetryCount.dynamic++;
-							this._updateDynamicCellHeight(list);
-							break;
-						}
-						let lastHeightCache = null;
-						if (this.virtualHeightCacheList.length) {
-							lastHeightCache = this.virtualHeightCacheList.slice(-1)[0];
-						}
-						const lastHeight = lastHeightCache ? lastHeightCache.totalHeight : 0;
-						this.virtualHeightCacheList.push({
-							height: currentHeight,
-							lastHeight: lastHeight,
-							totalHeight: lastHeight + currentHeight
-						});
-					}
-					this._updateVirtualScroll(this.oldScrollTop);
-				}, c.delayTime)
-			})
-		},
-		//设置cellItem的index
-		_setCellIndex(list, isFirstPage) {
-			let lastItem = null;
-			let lastItemIndex = 0;
-			if (!isFirstPage) {
-				lastItemIndex = this.realTotalData.length;
-				if (this.realTotalData.length) {
-					lastItem = this.realTotalData.slice(-1)[0];
-				}
-				if (lastItem && lastItem[c.listCellIndexKey] !== undefined) {
-					lastItemIndex = lastItem[c.listCellIndexKey] + 1;
-				}
-			} else {			
-				this._resetDynamicListState();
-			}
-			for (let i = 0; i < list.length; i++) {
-				let item = list[i];
-				if (!item || Object.prototype.toString.call(item) !== '[object Object]') {
-					item = {item};
-				}
-				item[c.listCellIndexKey] = lastItemIndex + i;
-				item[c.listCellIndexUniqueKey] = `${this.virtualListKey}-${item[c.listCellIndexKey]}`;
-				list[i] = item;
-			}
-			this.getCellHeightRetryCount.dynamic = 0;
-			this.cellHeightMode === Enum.CellHeightMode.Dynamic && this._updateDynamicCellHeight(list);
-		},
-		//更新scroll滚动
-		_updateVirtualScroll(scrollTop, scrollDiff = 0) {
-			const currentTimeStamp = u.getTime();
-			if (scrollTop === 0) {
-				this._resetTopRange();
-			}
-			if (scrollTop !== 0 && this.virtualScrollTimeStamp && currentTimeStamp - this.virtualScrollTimeStamp <= this.virtualScrollDisTimeStamp) {
-				return;
-			}
-			this.virtualScrollTimeStamp = Number(currentTimeStamp);
-			
-			let scrollIndex = 0;
-			const cellHeightMode = this.cellHeightMode;
-			if (cellHeightMode === Enum.CellHeightMode.Fixed) {
-				scrollIndex = parseInt(scrollTop / this.virtualCellHeight) || 0;
-				this._updateFixedTopRangeIndex(scrollIndex);
-				this._updateFixedBottomRangeIndex(scrollIndex);
-			} else if(cellHeightMode === Enum.CellHeightMode.Dynamic) {
-				const scrollDirection = scrollDiff > 0 ? 'top' : 'bottom';
-				const rangePageHeight = this.virtualRangePageHeight;
-				const topRangePageOffset = scrollTop - rangePageHeight;
-				const bottomRangePageOffset = scrollTop + this.finalVirtualPageHeight + rangePageHeight;
-				
-				let virtualBottomRangeIndex = 0;
-				let virtualPlaceholderBottomHeight = 0;
-				let reachedLimitBottom = false;
-				let lastHeightCache = null;
-				const heightCacheList = this.virtualHeightCacheList;
-				if (heightCacheList.length) {
-					lastHeightCache = heightCacheList.slice(-1)[0];
-				}
-				let startTopRangeIndex = this.virtualTopRangeIndex;
-				if (scrollDirection === 'bottom') {
-					for (let i = startTopRangeIndex; i < heightCacheList.length;i++){
-						const heightCacheItem = heightCacheList[i];
-						if (heightCacheItem && heightCacheItem.totalHeight > topRangePageOffset) {
-							this.virtualTopRangeIndex = i;
-							this.virtualPlaceholderTopHeight = heightCacheItem.lastHeight;
-							break;
-						}
-					}
-				} else {
-					let topRangeMatched = false;
-					for (let i = startTopRangeIndex; i >= 0;i--){
-						const heightCacheItem = heightCacheList[i];
-						if (heightCacheItem && heightCacheItem.totalHeight < topRangePageOffset) {
-							this.virtualTopRangeIndex = i;
-							this.virtualPlaceholderTopHeight = heightCacheItem.lastHeight;
-							topRangeMatched = true;
-							break;
-						}
-					}
-					!topRangeMatched && this._resetTopRange();
-				}
-				for (let i = this.virtualTopRangeIndex; i < heightCacheList.length;i++){
-					const heightCacheItem = heightCacheList[i];
-					if (heightCacheItem && heightCacheItem.totalHeight > bottomRangePageOffset) {
-						virtualBottomRangeIndex = i;
-						virtualPlaceholderBottomHeight = lastHeightCache.totalHeight - heightCacheItem.totalHeight;
-						reachedLimitBottom = true;
-						break;
-					}
-				}
-				if (!reachedLimitBottom || this.virtualBottomRangeIndex === 0) {
-					this.virtualBottomRangeIndex = this.realTotalData.length ? this.realTotalData.length - 1 : this.pageSize;
-					this.virtualPlaceholderBottomHeight = 0;
-				} else {
-					this.virtualBottomRangeIndex = virtualBottomRangeIndex;
-					this.virtualPlaceholderBottomHeight = virtualPlaceholderBottomHeight;
-				}
-				this._updateVirtualList();
-			}
-		},
-		//更新fixedCell模式下topRangeIndex&placeholderTopHeight
-		_updateFixedTopRangeIndex(scrollIndex) {
-			let virtualTopRangeIndex = this.virtualCellHeight === 0 ? 0 : scrollIndex - parseInt(this.finalVirtualPageHeight / this.virtualCellHeight) * this.preloadPage;
-			virtualTopRangeIndex *= this.virtualListCol;
-			virtualTopRangeIndex = Math.max(0, virtualTopRangeIndex);
-			this.virtualTopRangeIndex = virtualTopRangeIndex;
-			this.virtualPlaceholderTopHeight = (virtualTopRangeIndex / this.virtualListCol) * this.virtualCellHeight;
-		},
-		//更新fixedCell模式下bottomRangeIndex&placeholderBottomHeight
-		_updateFixedBottomRangeIndex(scrollIndex) {
-			let virtualBottomRangeIndex = this.virtualCellHeight === 0 ? this.pageSize : scrollIndex + parseInt(this.finalVirtualPageHeight / this.virtualCellHeight) * (this.preloadPage + 1);
-			virtualBottomRangeIndex *= this.virtualListCol;
-			virtualBottomRangeIndex = Math.min(this.realTotalData.length, virtualBottomRangeIndex);
-			this.virtualBottomRangeIndex = virtualBottomRangeIndex;
-			this.virtualPlaceholderBottomHeight = (this.realTotalData.length - virtualBottomRangeIndex) * this.virtualCellHeight / this.virtualListCol;
-			this._updateVirtualList();
-		},
-		//更新virtualList
-		_updateVirtualList() {
-			const shouldUpdateList = this.updateVirtualListFromDataChange || (this.lastVirtualTopRangeIndex !== this.virtualTopRangeIndex || this.lastVirtualBottomRangeIndex !== this.virtualBottomRangeIndex);
-			if (shouldUpdateList) {
-				this.updateVirtualListFromDataChange = false;
-				this.lastVirtualTopRangeIndex =  this.virtualTopRangeIndex;
-				this.lastVirtualBottomRangeIndex =  this.virtualBottomRangeIndex;
-				this.virtualList = this.realTotalData.slice(this.virtualTopRangeIndex, this.virtualBottomRangeIndex + 1);
-			}
-		},
-		//重置动态cell模式下的高度缓存数据、虚拟列表和滚动状态
-		_resetDynamicListState(resetVirtualList = false) {
-			this.virtualHeightCacheList = [];
-			if (resetVirtualList) {
-				this.virtualList = [];
-			}
-			this.virtualTopRangeIndex = 0;
-			this.virtualPlaceholderTopHeight = 0;
-		},
-		//重置topRangeIndex和placeholderTopHeight
-		_resetTopRange() {
-			this.virtualTopRangeIndex = 0;
-			this.virtualPlaceholderTopHeight = 0;
-			this._updateVirtualList();
-		},
-		//检测虚拟列表当前滚动位置,如发现滚动位置不正确则重新计算虚拟列表相关参数(为解决在App中可能出现的长时间进入后台后打开App白屏的问题)
-		_checkVirtualListScroll() {
-			if (this.finalUseVirtualList) {
-				this.$nextTick(() => {
-					this._getNodeClientRect('.zp-paging-touch-view').then(node => {
-						const hasNode = node && node.length;
-						const currentTop = hasNode ? node[0].top : 0;
-						if (!hasNode || (currentTop === this.pagingOrgTop && this.virtualPlaceholderTopHeight !== 0)){
-							this._updateVirtualScroll(0);
-						}
-					});
-				})
-			}
-		}
-	}
-}
-
-export default ZPVirtualList;

+ 0 - 26
uni_modules/z-paging/components/z-paging/js/z-paging-config.js

@@ -1,26 +0,0 @@
-// [z-paging]处理main.js中的配置信息工具
-
-let config = null;
-let getedStorage = false;
-const storageKey = 'Z-PAGING-CONFIG-STORAGE-KEY'
-
-function setConfig(value) {
-	try {
-		uni.setStorageSync(storageKey, value);
-	} catch (e) {}
-}
-
-function getConfig() {
-	try {
-		if (getedStorage) return config;
-		config = uni.getStorageSync(storageKey);
-		getedStorage = true;
-	} catch (e) {
-		return null;
-	}
-}
-
-export default {
-	setConfig,
-	getConfig
-};

+ 0 - 21
uni_modules/z-paging/components/z-paging/js/z-paging-constant.js

@@ -1,21 +0,0 @@
-// [z-paging]常量
-
-const version = '2.3.3';
-const delayTime = 100;
-const i18nUpdateKey = 'z-paging-i18n-update';
-
-const errorUpdateKey = 'z-paging-error-emit';
-const completeUpdateKey = 'z-paging-complete-emit';
-
-const listCellIndexKey = 'zp_index';
-const listCellIndexUniqueKey = 'zp_unique_index';
-
-export default {
-	version,
-	delayTime,
-	i18nUpdateKey,
-	errorUpdateKey,
-	completeUpdateKey,
-	listCellIndexKey,
-	listCellIndexUniqueKey
-}

+ 0 - 37
uni_modules/z-paging/components/z-paging/js/z-paging-enum.js

@@ -1,37 +0,0 @@
-// [z-paging]枚举
-
-const Enum = {
-	//当前加载类型 0.下拉刷新 1.上拉加载更多
-	LoadingType: {
-		Refresher: 0,
-		LoadingMore: 1
-	},
-	//下拉刷新状态 0.默认状态 1.松手立即刷新 2.刷新中 3.刷新结束
-	Refresher: {
-		Default: 0,
-		ReleaseToRefresh: 1,
-		Loading: 2,
-		Complete: 3
-	},
-	//底部加载更多状态 0.默认状态 1.加载中 2.没有更多数据 3.加载失败
-	More: {
-		Default: 0,
-		Loading: 1,
-		NoMore: 2,
-		Fail: 3
-	},
-	//@query触发来源 0.用户主动下拉刷新 1.通过reload触发 2.通过refresh触发 3.通过滚动到底部加载更多或点击底部加载更多触发
-	QueryFrom: {
-		UserPullDown: 0,
-		Reload: 1,
-		Refresh: 2,
-		LoadingMore: 3
-	},
-	//虚拟列表cell高度模式
-	CellHeightMode: {
-		Fixed: 'fixed',
-		Dynamic: 'dynamic'
-	}
-}
-
-export default Enum;

+ 0 - 133
uni_modules/z-paging/components/z-paging/js/z-paging-i18n.js

@@ -1,133 +0,0 @@
-// z-paging国际化(支持中文、中文繁体和英文)
-const i18nUpdateKey = 'z-paging-i18n-update';
-
-const t = {
-	refresherDefaultText: {
-		'en': 'Pull down to refresh',
-		'zh-cn': '继续下拉刷新',
-		'zh-hant-cn': '繼續下拉重繪',
-	},
-	refresherPullingText: {
-		'en': 'Release to refresh',
-		'zh-cn': '松开立即刷新',
-		'zh-hant-cn': '鬆開立即重繪',
-	},
-	refresherRefreshingText: {
-		'en': 'Refreshing...',
-		'zh-cn': '正在刷新...',
-		'zh-hant-cn': '正在重繪...',
-	},
-	refresherCompleteText: {
-		'en': 'Refresh succeeded',
-		'zh-cn': '刷新成功',
-		'zh-hant-cn': '重繪成功',
-	},
-	loadingMoreDefaultText: {
-		'en': 'Click to load more',
-		'zh-cn': '点击加载更多',
-		'zh-hant-cn': '點擊加載更多',
-	},
-	loadingMoreLoadingText: {
-		'en': 'Loading...',
-		'zh-cn': '正在加载...',
-		'zh-hant-cn': '正在加載...',
-	},
-	loadingMoreNoMoreText: {
-		'en': 'No more data',
-		'zh-cn': '没有更多了',
-		'zh-hant-cn': '沒有更多了',
-	},
-	loadingMoreFailText: {
-		'en': 'Load failed,click to reload',
-		'zh-cn': '加载失败,点击重新加载',
-		'zh-hant-cn': '加載失敗,點擊重新加載',
-	},
-	emptyViewText: {
-		'en': 'No data',
-		'zh-cn': '没有数据哦~',
-		'zh-hant-cn': '沒有數據哦~',
-	},
-	emptyViewReloadText: {
-		'en': 'Reload',
-		'zh-cn': '重新加载',
-		'zh-hant-cn': '重新加載',
-	},
-	emptyViewErrorText: {
-		'en': 'Sorry,load failed',
-		'zh-cn': '很抱歉,加载失败',
-		'zh-hant-cn': '很抱歉,加載失敗',
-	},
-	refresherUpdateTimeText: {
-		'en': 'Last update: ',
-		'zh-cn': '最后更新:',
-		'zh-hant-cn': '最後更新:',
-	},
-	refresherUpdateTimeNoneText: {
-		'en': 'None',
-		'zh-cn': '无',
-		'zh-hant-cn': '無',
-	},
-	refresherUpdateTimeTodayText: {
-		'en': 'Today',
-		'zh-cn': '今天',
-		'zh-hant-cn': '今天',
-	},
-	refresherUpdateTimeYesterdayText: {
-		'en': 'Yesterday',
-		'zh-cn': '昨天',
-		'zh-hant-cn': '昨天',
-	}
-}
-
-
-// 获取当前语言,格式为:zh-cn、zh-hant-cn、en。followSystemLanguage:获取的结果是否是在不跟随系统语言下获取到的
-function getLanguage(followSystemLanguage = true) {
-	return _getPrivateLanguage(false, followSystemLanguage);
-}
-
-// 获取当前语言,格式为:简体中文、繁體中文、English。followSystemLanguage:获取的结果是否是在不跟随系统语言下获取到的
-function getLanguageName(followSystemLanguage = true) {
-	const language = getLanguage(followSystemLanguage);
-	const languageNameMap = {
-		'zh-cn': '简体中文',
-		'zh-hant-cn': '繁體中文',
-		'en': 'English'
-	};
-	return languageNameMap[language];
-}
-
-//设置当前语言,格式为:zh-cn、zh-hant-cn、en
-function setLanguage(myLanguage) {
-	uni.setStorageSync(i18nUpdateKey, myLanguage);
-	uni.$emit(i18nUpdateKey, myLanguage);
-}
-
-// 插件内部使用,请勿直接调用
-function _getPrivateLanguage(myLanguage, followSystemLanguage = true) {
-	let systemLanguage = '';
-	if (followSystemLanguage) {
-		systemLanguage = uni.getSystemInfoSync().language;
-	}
-	let language = myLanguage || uni.getStorageSync(i18nUpdateKey) || systemLanguage;
-	language = language.toLowerCase();
-	const reg = new RegExp('_', '');
-	language = language.replace(reg, '-');
-	if (language.indexOf('zh') !== -1) {
-		if (language === 'zh' || language === 'zh-cn' || language.indexOf('zh-hans') !== -1) {
-			return 'zh-cn';
-		}
-		return 'zh-hant-cn';
-	}
-	if (language.indexOf('en') !== -1) {
-		return 'en';
-	}
-	return 'zh-cn';
-}
-
-export default {
-	t,
-	getLanguage,
-	getLanguageName,
-	setLanguage,
-	_getPrivateLanguage,
-}

+ 0 - 34
uni_modules/z-paging/components/z-paging/js/z-paging-interceptor.js

@@ -1,34 +0,0 @@
-// [z-paging]拦截器
-
-//拦截&处理@query事件
-function handleQuery(callback) {
-	try {
-		setTimeout(function() {
-			_getApp().globalData.zp_handleQueryCallback = callback;
-		}, 1);
-	} catch (e) {}
-}
-
-//拦截&处理@query事件(私有,请勿调用)
-function _handleQuery(pageNo, pageSize, from){
-	const handleQueryCallback = _getApp().globalData.zp_handleQueryCallback;
-	if (handleQueryCallback) {
-		return handleQueryCallback(pageNo, pageSize, from);
-	}
-	return [pageNo, pageSize, from];
-}
-
-//获取当前app对象
-function _getApp(){
-	// #ifndef APP-NVUE
-	return getApp();
-	// #endif
-	// #ifdef APP-NVUE
-	return getApp({allowDefault: true});
-	// #endif
-}
-
-export default {
-	handleQuery,
-	_handleQuery
-};

+ 0 - 604
uni_modules/z-paging/components/z-paging/js/z-paging-main.js

@@ -1,604 +0,0 @@
-// [z-paging]核心js
-
-import zStatic from './z-paging-static'
-import c from './z-paging-constant'
-import u from './z-paging-utils'
-
-import zPagingRefresh from '../components/z-paging-refresh'
-import zPagingLoadMore from '../components/z-paging-load-more'
-import zPagingEmptyView from '../../z-paging-empty-view/z-paging-empty-view'
-
-// modules
-import dataHandleModule from './modules/data-handle'
-import i18nModule from './modules/i18n'
-import nvueModule from './modules/nvue'
-import emptyModule from './modules/empty'
-import refresherModule from './modules/refresher'
-import loadMoreModule from './modules/load-more'
-import scrollerModule from './modules/scroller'
-import backToTopModule from './modules/back-to-top'
-import virtualListModule from './modules/virtual-list'
-
-import Enum from './z-paging-enum'
-
-const systemInfo = uni.getSystemInfoSync();
-
-// #ifdef APP-NVUE
-const weexDom = weex.requireModule('dom');
-// #endif
-
-export default {
-	name: "z-paging",
-	components: {
-		zPagingRefresh,
-		zPagingLoadMore,
-		zPagingEmptyView
-	},
-	mixins: [
-		dataHandleModule,
-		i18nModule,
-		nvueModule,
-		emptyModule,
-		refresherModule,
-		loadMoreModule,
-		scrollerModule,
-		backToTopModule,
-		virtualListModule
-	],
-	data() {
-		return {
-			//--------------静态资源---------------
-			base64Arrow: zStatic.base64Arrow,
-			base64Flower: zStatic.base64Flower,
-			base64BackToTop: zStatic.base64BackToTop,
-
-			//-------------全局数据相关--------------
-			//当前加载类型
-			loadingType: Enum.LoadingType.Refresher,
-			requestTimeStamp: 0,
-			chatRecordLoadingMoreText: '',
-			wxsPropType: '',
-			renderPropScrollTop: -1,
-			renderPropUsePageScroll: -1,
-			checkScrolledToBottomTimeOut: null,
-			systemInfo: null,
-			cssSafeAreaInsetBottom: -1,
-			cacheTopHeight: -1,
-
-			//--------------状态&判断---------------
-			insideOfPaging: -1,
-			loading: false,
-			loadingForNow: false,
-			isLoadFailed: false,
-			isIos: systemInfo.platform === 'ios',
-			disabledBounce: false,
-			fromCompleteEmit: false,
-			disabledCompleteEmit: false,
-			
-			//---------------wxs相关---------------
-			wxsIsScrollTopInTopRange: true,
-			wxsScrollTop: 0,
-			wxsPageScrollTop: 0,
-			wxsOnPullingDown: false,
-		};
-	},
-	props: {
-		//调用complete后延迟处理的时间,单位为毫秒,默认0毫秒,优先级高于minDelay
-		delay: {
-			type: [Number, String],
-			default: u.gc('delay', 0),
-		},
-		//触发@query后最小延迟处理的时间,单位为毫秒,默认0毫秒,优先级低于delay(假设设置为300毫秒,若分页请求时间小于300毫秒,则在调用complete后延迟[300毫秒-请求时长];若请求时长大于300毫秒,则不延迟),当show-refresher-when-reload为true或reload(true)时,其最小值为400
-		minDelay: {
-			type: [Number, String],
-			default: u.gc('minDelay', 0),
-		},
-		//设置z-paging的style,部分平台(如微信小程序)无法直接修改组件的style,可使用此属性代替
-		pagingStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('pagingStyle', {});
-			},
-		},
-		//z-paging的高度,优先级低于pagingStyle中设置的height;传字符串,如100px、100rpx、100%
-		height: {
-			type: String,
-			default: u.gc('height', '')
-		},
-		//z-paging的宽度,优先级低于pagingStyle中设置的width;传字符串,如100px、100rpx、100%
-		width: {
-			type: String,
-			default: u.gc('width', '')
-		},
-		//z-paging的背景色,优先级低于pagingStyle中设置的background。传字符串,如"#ffffff"
-		bgColor: {
-			type: String,
-			default: u.gc('bgColor', '')
-		},
-		//设置z-paging的容器(插槽的父view)的style
-		pagingContentStyle: {
-			type: Object,
-			default: function() {
-				return u.gc('pagingContentStyle', {});
-			},
-		},
-		//z-paging是否自动高度,若自动高度则会自动铺满屏幕
-		autoHeight: {
-			type: Boolean,
-			default: u.gc('autoHeight', false)
-		},
-		//z-paging是否自动高度时,附加的高度,注意添加单位px或rpx,若需要减少高度,则传负数
-		autoHeightAddition: {
-			type: [Number, String],
-			default: u.gc('autoHeightAddition', '0px')
-		},
-		//loading(下拉刷新、上拉加载更多)的主题样式,支持black,white,默认black
-		defaultThemeStyle: {
-			type: String,
-			default: function() {
-				return u.gc('defaultThemeStyle', 'black');
-			}
-		},
-		//z-paging是否使用fixed布局,若使用fixed布局,则z-paging的父view无需固定高度,z-paging高度默认为100%,默认为是(当使用内置scroll-view滚动时有效)
-		fixed: {
-			type: Boolean,
-			default: u.gc('fixed', true)
-		},
-		//是否开启底部安全区域适配
-		safeAreaInsetBottom: {
-			type: Boolean,
-			default: u.gc('safeAreaInsetBottom', false)
-		},
-		//开启底部安全区域适配后,是否使用placeholder形式实现,默认为否。为否时滚动区域会自动避开底部安全区域,也就是所有滚动内容都不会挡住底部安全区域,若设置为是,则滚动时滚动内容会挡住底部安全区域,但是当滚动到底部时才会避开底部安全区域
-		useSafeAreaPlaceholder: {
-			type: Boolean,
-			default: u.gc('useSafeAreaPlaceholder', false)
-		},
-		//第一次加载后自动隐藏loading slot,默认为是
-		autoHideLoadingAfterFirstLoaded: {
-			type: Boolean,
-			default: u.gc('autoHideLoadingAfterFirstLoaded', true)
-		},
-		//loading slot是否铺满屏幕并固定,默认为否
-		loadingFullFixed: {
-			type: Boolean,
-			default: u.gc('loadingFullFixed', false)
-		},
-		//slot="top"的view的z-index,默认为99,仅使用页面滚动时有效
-		topZIndex: {
-			type: Number,
-			default: u.gc('topZIndex', 99)
-		},
-		//z-paging内容容器父view的z-index,默认为1
-		superContentZIndex: {
-			type: Number,
-			default: u.gc('superContentZIndex', 1)
-		},
-		//z-paging内容容器部分的z-index,默认为10
-		contentZIndex: {
-			type: Number,
-			default: u.gc('contentZIndex', 10)
-		},
-		//使用页面滚动时,是否在不满屏时自动填充满屏幕,默认为是
-		autoFullHeight: {
-			type: Boolean,
-			default: u.gc('autoFullHeight', true)
-		},
-		//是否监听列表触摸方向改变,默认为否
-		watchTouchDirectionChange: {
-			type: Boolean,
-			default: u.gc('watchTouchDirectionChange', false)
-		},
-		//是否将错误信息打印至控制台,默认为是
-		showConsoleError: {
-			type: Boolean,
-			default: u.gc('showConsoleError', true)
-		},
-	},
-	created(){
-		if (this.createdReload && !this.refresherOnly && (this.mountedAutoCallReload && this.auto)) {
-			this._startLoading();
-			this._preReload();
-		}
-	},
-	mounted() {
-		this.wxsPropType = u.getTime().toString();
-		this.renderJsIgnore;
-		if (!this.createdReload && !this.refresherOnly && (this.mountedAutoCallReload && this.auto)) {
-			this.$nextTick(() => {
-				this._preReload();
-			})
-		}
-		let delay = 0;
-		// #ifdef H5 || MP
-		delay = 100;
-		// #endif
-		this.$nextTick(() => {
-			this.systemInfo = uni.getSystemInfoSync();
-			if (!this.usePageScroll && this.autoHeight) {
-				this._setAutoHeight();
-			}
-			this.loaded = true;
-		})
-		this.updatePageScrollTopHeight();
-		this.updatePageScrollBottomHeight();
-		this._updateLeftAndRightWidth();
-		if (this.finalRefresherEnabled && this.useCustomRefresher) {
-			this.$nextTick(() => {
-				this.isTouchmoving = true;
-			})
-		}
-		this._onEmit();
-		// #ifdef APP-NVUE
-		if (!this.isIos && !this.useChatRecordMode) {
-			this.nLoadingMoreFixedHeight = true;
-		}
-		this._nUpdateRefresherWidth();
-		// #endif
-		// #ifndef APP-NVUE
-		this.finalUseVirtualList && this._virtualListInit();
-		// #endif
-		// #ifndef APP-PLUS
-		this.$nextTick(() => {
-			setTimeout(() => {
-				this._getCssSafeAreaInsetBottom();
-			},delay)
-		})
-		// #endif
-	},
-	destroyed() {
-		this._offEmit();
-	},
-	// #ifdef VUE3
-	unmounted() {
-		this._offEmit();
-	},
-	// #endif
-	watch: {
-		loadingStatus(newVal, oldVal) {
-			this.$emit('loadingStatusChange', newVal);
-			this.$nextTick(()=>{
-				this.loadingStatusAfterRender = newVal;
-			})
-			// #ifdef APP-NVUE
-			if (this.useChatRecordMode) {
-				if (this.pageNo === this.defaultPageNo && newVal === Enum.More.NoMore) {
-					this.nIsFirstPageAndNoMore = true;
-					return;
-				}
-			}
-			this.nIsFirstPageAndNoMore = false;
-			//  #endif
-		},
-		loading(newVal){
-			if(newVal){
-				this.loadingForNow = newVal;
-			}
-		},
-		defaultThemeStyle: {
-			handler(newVal) {
-				if (newVal.length) {
-					this.finalRefresherDefaultStyle = newVal;
-				}
-			},
-			immediate: true
-		},
-		autoHeight(newVal, oldVal) {
-			if (this.loaded && !this.usePageScroll) {
-				this._setAutoHeight(newVal);
-			}
-		},
-		autoHeightAddition(newVal, oldVal) {
-			if (this.loaded && !this.usePageScroll && this.autoHeight) {
-				this._setAutoHeight(newVal);
-			}
-		},
-	},
-	computed: {
-		zScopedSlots() {
-			return this.$scopedSlots;
-		},
-		finalPagingStyle() {
-			const pagingStyle = this.pagingStyle;
-			if (!this.systemInfo) return pagingStyle;
-			const windowTop = this.windowTop;
-			const windowBottom = this.windowBottom;
-			if (!this.usePageScroll && this.fixed) {
-				if (windowTop && !pagingStyle.top) {
-					pagingStyle.top = windowTop + 'px';
-				}
-				if (windowBottom && !pagingStyle.bottom) {
-					pagingStyle.bottom = windowBottom + 'px';
-				}
-			}
-			if (this.bgColor.length && !pagingStyle['background']) {
-				pagingStyle['background'] = this.bgColor;
-			}
-			if (this.height.length && !pagingStyle['height']) {
-				pagingStyle['height'] = this.height;
-			}
-			if (this.width.length && !pagingStyle['width']) {
-				pagingStyle['width'] = this.width;
-			}
-			return pagingStyle;
-		},
-		finalLowerThreshold() {
-			return u.convertTextToPx(this.lowerThreshold);
-		},
-		finalPagingContentStyle() {
-			if (this.contentZIndex != 1) {
-				this.pagingContentStyle['z-index'] = this.contentZIndex;
-				this.pagingContentStyle['position'] = 'relative';
-			}
-			return this.pagingContentStyle;
-		},
-		showLoading() {
-			if (this.firstPageLoaded || !this.loading || !this.loadingForNow) return false;
-			if (this.autoHideLoadingAfterFirstLoaded) {
-				return this.fromEmptyViewReload ? true : !this.pagingLoaded;
-			} else{
-				return this.loadingType === Enum.LoadingType.Refresher;
-			}
-		},
-		safeAreaBottom() {
-			if (!this.systemInfo) return 0;
-			let safeAreaBottom = 0;
-			// #ifdef APP-PLUS
-			safeAreaBottom = this.systemInfo.safeAreaInsets.bottom || 0;
-			// #endif
-			// #ifndef APP-PLUS
-			safeAreaBottom = this.cssSafeAreaInsetBottom === -1 ? 0 : this.cssSafeAreaInsetBottom;
-			// #endif
-			return safeAreaBottom;
-		},
-		renderJsIgnore() {
-			if ((this.usePageScroll && this.useChatRecordMode) || !this.refresherEnabled || !this.useCustomRefresher) {
-				this.$nextTick(() => {
-					this.renderPropScrollTop = 10;
-				})
-			}
-			return 0;
-		},
-		windowHeight() {
-			return !this.systemInfo ? 0 : this.systemInfo.windowHeight || 0;
-		},
-		windowTop() {
-			//暂时修复vue3中隐藏系统导航栏后windowTop获取不正确的问题,具体bug详见https://ask.dcloud.net.cn/question/141634
-			//感谢litangyu!!https://github.com/SmileZXLee/uni-z-paging/issues/25
-			// #ifdef VUE3 && H5
-			const pageHeadNode = document.getElementsByTagName("uni-page-head");
-			if (!pageHeadNode.length) return 0;
-			// #endif
-			return !this.systemInfo ? 0 : this.systemInfo.windowTop || 0;
-		},
-		windowBottom() {
-			if (!this.systemInfo) return 0;
-			let windowBottom = this.systemInfo.windowBottom || 0;
-			if (this.safeAreaInsetBottom && !this.useSafeAreaPlaceholder) {
-				windowBottom += this.safeAreaBottom;
-			}
-			return windowBottom;
-		},
-		isOldWebView() {
-			// #ifndef APP-NVUE
-			try {
-				const systemInfos = systemInfo.system.split(' ');
-				const deviceType = systemInfos[0];
-				const version = parseInt(systemInfos[1].slice(0,1));
-				if ((deviceType === 'iOS' && version <= 10) || (deviceType === 'Android' && version <= 6)) {
-					return true;
-				}
-			} catch(e){
-				return false;
-			}
-			// #endif
-			return false;
-		},
-		isIosAndH5(){
-			// #ifndef H5
-			return false;
-			// #endif
-			return this.isIos;
-		}
-	},
-	methods: {
-		//当前版本号
-		getVersion() {
-			return `z-paging v${zConstant.version}`;
-		},
-		//设置nvue List的specialEffects
-		setSpecialEffects(args) {
-			this.setListSpecialEffects(args);
-		},
-		//与setSpecialEffects等效,兼容旧版本
-		setListSpecialEffects(args) {
-			this.nFixFreezing = args && Object.keys(args).length;
-			if (this.isIos) {
-				this.privateRefresherEnabled = 0;
-			}
-			if (!this.usePageScroll) {
-				this.$refs['zp-n-list'].setSpecialEffects(args);
-			}
-		},
-		//处理开始加载更多状态
-		_startLoading(isReload = false) {
-			if ((this.showLoadingMoreWhenReload && !this.isUserPullDown) || !isReload) {
-				this.loadingStatus = Enum.More.Loading;
-			}
-			this.loading = true;
-		},
-		//检测scrollView是否要铺满屏幕
-		_doCheckScrollViewShouldFullHeight(totalData){
-			if (this.autoFullHeight && this.usePageScroll && this.isTotalChangeFromAddData) {
-				// #ifndef APP-NVUE
-				this.$nextTick(() => {
-					this._checkScrollViewShouldFullHeight((scrollViewNode, pagingContainerNode) => {
-						this._preCheckShowLoadingMoreWhenNoMoreAndInsideOfPaging(totalData, scrollViewNode, pagingContainerNode)
-					});
-				})
-				// #endif
-				// #ifdef APP-NVUE
-				this._preCheckShowLoadingMoreWhenNoMoreAndInsideOfPaging(totalData)
-				// #endif
-			} else {
-				this._preCheckShowLoadingMoreWhenNoMoreAndInsideOfPaging(totalData)
-			} 
-		},
-		//检测z-paging是否要全屏覆盖(当使用页面滚动并且不满全屏时,默认z-paging需要铺满全屏,避免数据过少时内部的empty-view无法正确展示)
-		async _checkScrollViewShouldFullHeight(callback) {
-			try {
-				const scrollViewNode = await this._getNodeClientRect('.zp-scroll-view');
-				const pagingContainerNode = await this._getNodeClientRect('.zp-paging-container-content');
-				if (!scrollViewNode || !pagingContainerNode) return;
-				const scrollViewHeight = pagingContainerNode[0].height;
-				const scrollViewTop = scrollViewNode[0].top;
-				if (this.isAddedData && scrollViewHeight + scrollViewTop <= this.windowHeight) {
-					this._setAutoHeight(true, scrollViewNode);
-					callback(scrollViewNode, pagingContainerNode);
-				} else {
-					this._setAutoHeight(false);
-					callback(null, null);
-				}
-			} catch (e) {
-				callback(null, null);
-			}
-		},
-		//设置z-paging高度
-		async _setAutoHeight(shouldFullHeight = true, scrollViewNode = null) {
-			let heightKey = 'height';
-			// #ifndef APP-NVUE
-			if (this.usePageScroll) {
-				heightKey = 'min-height';
-			}
-			// #endif
-			try {
-				if (shouldFullHeight) {
-					let finalScrollViewNode = scrollViewNode ? scrollViewNode : await this._getNodeClientRect('.scroll-view');
-					let finalScrollBottomNode = await this._getNodeClientRect('.zp-page-bottom');
-					if (finalScrollViewNode) {
-						const scrollViewTop = finalScrollViewNode[0].top;
-						let scrollViewHeight = this.windowHeight - scrollViewTop;
-						if(finalScrollBottomNode){
-							scrollViewHeight -= finalScrollBottomNode[0].height;
-						}
-						let additionHeight = u.convertTextToPx(this.autoHeightAddition);
-						this.$set(this.scrollViewStyle, heightKey, scrollViewHeight + additionHeight - (this.insideMore ? 1 : 0) + 'px');
-						this.$set(this.scrollViewInStyle, heightKey, scrollViewHeight + additionHeight - (this.insideMore ? 1 : 0) + 'px');
-					}
-				} else {
-					this.$delete(this.scrollViewStyle, heightKey);
-					this.$delete(this.scrollViewInStyle, heightKey);
-				}
-			} catch (e) {}
-		},
-		//通过获取css设置的底部安全区域占位view高度设置bottom距离
-		_getCssSafeAreaInsetBottom(){
-			this._getNodeClientRect('.zp-safe-area-inset-bottom').then((res) => {
-				if (res) {
-					this.cssSafeAreaInsetBottom = res[0].height;
-					if (this.safeAreaInsetBottom) {
-						this.updatePageScrollBottomHeight();
-					}
-				}
-			});
-		},
-		//触发更新是否超出页面状态
-		_updateInsideOfPaging() {
-			if (this.insideMore && this.insideOfPaging === true) {
-				setTimeout(() => {
-					this.doLoadMore();
-				}, 200)
-			}
-		},
-		//获取节点尺寸
-		_getNodeClientRect(select, inThis = true, scrollOffset = false) {
-			// #ifdef APP-NVUE
-			select = select.replace('.', '').replace('#', '');
-			const ref = this.$refs[select];
-			return new Promise((resolve, reject) => {
-				if (ref) {
-					weexDom.getComponentRect(ref, option => {
-						if (option && option.result) {
-							resolve([option.size]);
-						} else {
-							resolve(false);
-						}
-					})
-				} else {
-					resolve(false);
-				}
-			});
-			return;
-			// #endif
-			//#ifdef MP-ALIPAY
-			inThis = false;
-			//#endif
-			let res = inThis ? uni.createSelectorQuery().in(this) : uni.createSelectorQuery();
-			if (scrollOffset) {
-				res.select(select).scrollOffset();
-			} else {
-				res.select(select).boundingClientRect();
-			}
-			return new Promise((resolve, reject) => {
-				res.exec(data => {
-					resolve((data && data != '' && data != undefined && data.length) ? data : false);
-				});
-			});
-		},
-		//清除timeout
-		_cleanTimeout(timeout) {
-			if (timeout) {
-				clearTimeout(timeout);
-				timeout = null;
-			}
-			return timeout;
-		},
-		//添加全局emit监听
-		_onEmit() {
-			uni.$on(c.i18nUpdateKey, () => {
-				this.tempLanguageUpdateKey = u.getTime();
-			})
-			uni.$on(c.errorUpdateKey, () => {
-				if (this.loading) {
-					this.complete(false);
-				}
-			})
-			uni.$on(c.completeUpdateKey, (data) => {
-				setTimeout(() => {
-					if (this.loading) {
-						if (!this.disabledCompleteEmit) {
-							const type = data.type || 'normal';
-							const list = data.list || data;
-							const rule = data.rule;
-							this.fromCompleteEmit = true;
-							switch (type){
-								case 'normal':
-									this.complete(list);
-									break;
-								case 'total':
-									this.completeByTotal(list, rule);
-									break;
-								case 'nomore':
-									this.completeByNoMore(list, rule);
-									break;
-								case 'key':
-									this.completeByKey(list, rule);
-									break;
-								default:
-									break;
-							}
-						} else {
-							this.disabledCompleteEmit = false;
-						}
-					}
-				}, 1);
-			})
-		},
-		//销毁全局emit和listener监听
-		_offEmit(){
-			uni.$off(c.i18nUpdateKey);
-			uni.$off(c.errorUpdateKey);
-			uni.$off(c.completeUpdateKey);
-		}
-	},
-};

+ 0 - 26
uni_modules/z-paging/components/z-paging/js/z-paging-mixin.js

@@ -1,26 +0,0 @@
-// [z-paging]使用页面滚动时引入此mixin,用于监听和处理onPullDownRefresh等页面生命周期方法
-
-const ZPagingMixin = {
-	onPullDownRefresh() {
-		if (this.isPagingRefNotFound()) return;
-		this.$refs.paging.reload();
-	},
-	onPageScroll(e) {
-		if (this.isPagingRefNotFound()) return;
-		this.$refs.paging.updatePageScrollTop(e.scrollTop);
-		if (e.scrollTop < 10) {
-			this.$refs.paging.doChatRecordLoadMore();
-		}
-	},
-	onReachBottom() {
-		if (this.isPagingRefNotFound()) return;
-		this.$refs.paging.doLoadMore('toBottom');
-	},
-	methods: {
-		isPagingRefNotFound() {
-			return !this.$refs.paging || this.$refs.paging === undefined;
-		}
-	}
-}
-
-export default ZPagingMixin;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 8
uni_modules/z-paging/components/z-paging/js/z-paging-static.js


+ 0 - 244
uni_modules/z-paging/components/z-paging/js/z-paging-utils.js

@@ -1,244 +0,0 @@
-// [z-paging]工具类
-
-import zI18n from './z-paging-i18n'
-import zConfig from './z-paging-config'
-import zLocalConfig from '../config/index'
-
-const storageKey = 'Z-PAGING-REFRESHER-TIME-STORAGE-KEY'
-let config = null;
-
-/*
-当z-paging未使用uni_modules管理时,控制台会有警告:WARNING: Module not found: Error: Can't resolve '@/uni_modules/z-paging'...
-此时注释下方try中的代码即可
-*/
-// #ifdef VUE2
-try {
-	const contextKeys = require.context('@/uni_modules/z-paging', false, /\z-paging-config$/).keys();
-	if (contextKeys.length) {
-		const suffix = '.js';
-		config = require('@/uni_modules/z-paging/z-paging-config' + suffix);
-	}
-} catch (e) {}
-// #endif
-
-//获取默认配置信息
-function gc(key, defaultValue) {
-	if (!config) {
-		if (zLocalConfig && Object.keys(zLocalConfig).length) {
-			config = zLocalConfig;
-		} else {
-			const temConfig = zConfig.getConfig();
-			if (zConfig && temConfig) {
-				config = temConfig;
-			}
-		}
-	}
-	if (!config) return defaultValue;
-	const value = config[_toKebab(key)];
-	return value === undefined ? defaultValue : value;
-}
-
-//判断两个数组是否相等
-function arrayIsEqual(arr1, arr2) {
-	if (arr1 === arr2) return true;
-	if (arr1.length !== arr2.length) return false;
-	for (let i = 0; i < arr1.length; i++) {
-		if (arr1[i] !== arr2[i]) return false;
-	}
-	return true;
-}
-
-//获取最终的touch位置
-function getTouch(e) {
-	let touch = null;
-	if (e.touches && e.touches.length) {
-		touch = e.touches[0];
-	} else if (e.changedTouches && e.changedTouches.length) {
-		touch = e.changedTouches[0];
-	} else if (e.datail && e.datail != {}) {
-		touch = e.datail;
-	} else {
-		return {
-			touchX: 0,
-			touchY: 0
-		}
-	}
-	return {
-		touchX: touch.clientX,
-		touchY: touch.clientY
-	};
-}
-
-//判断当前手势是否在z-paging内触发
-function getTouchFromZPaging(target) {
-	if (target && target.tagName && target.tagName !== 'BODY' && target.tagName !== 'UNI-PAGE-BODY') {
-		const classList = target.classList;
-		if (classList && classList.contains('z-paging-content')) {
-			return true;
-		} else {
-			return getTouchFromZPaging(target.parentNode);
-		}
-	} else {
-		return false;
-	}
-}
-
-//获取z-paging所在的parent
-function getParent(parent) {
-	if (!parent) return null;
-	if (parent.$refs.paging) return parent;
-	return getParent(parent.$parent);
-}
-
-//打印错误信息
-function consoleErr(err) {
-	console.error(`[z-paging]${err}`);
-}
-
-//打印警告信息
-function consoleWarn(warn) {
-	console.warn(`[z-paging]${warn}`);
-}
-
-//设置下拉刷新时间
-function setRefesrherTime(time, key) {
-	try {
-		let datas = getRefesrherTime();
-		if (!datas) {
-			datas = {};
-		}
-		datas[key] = time;
-		uni.setStorageSync(storageKey, datas);
-	} catch (e) {}
-}
-
-//获取下拉刷新时间
-function getRefesrherTime() {
-	try {
-		const datas = uni.getStorageSync(storageKey);
-		return datas;
-	} catch (e) {
-		return null;
-	}
-}
-
-//通过下拉刷新标识key获取下拉刷新时间
-function getRefesrherTimeByKey(key) {
-	const datas = getRefesrherTime();
-	if (datas) {
-		const data = datas[key];
-		if (data) return data;
-	}
-	return null;
-}
-
-//通过下拉刷新标识key获取下拉刷新时间(格式化之后)
-function getRefesrherFormatTimeByKey(key) {
-	const time = getRefesrherTimeByKey(key);
-	let timeText = zI18n.t['refresherUpdateTimeNoneText'][zI18n.getLanguage()];
-	if (time) {
-		timeText = _timeFormat(time);
-	}
-	return `${zI18n.t['refresherUpdateTimeText'][zI18n.getLanguage()]}${timeText}`;
-}
-
-//将文本的px或者rpx转为px的值
-function convertTextToPx(text) {
-	const dataType = Object.prototype.toString.call(text);
-	if (dataType === '[object Number]') {
-		return text;
-	}
-	let isRpx = false;
-	if (text.indexOf('rpx') !== -1 || text.indexOf('upx') !== -1) {
-		text = text.replace('rpx', '').replace('upx', '');
-		isRpx = true;
-	} else if (text.indexOf('px') !== -1) {
-		text = text.replace('px', '');
-	}
-	if (!isNaN(text)) {
-		if (isRpx) return Number(uni.upx2px(text));
-		return Number(text);
-	}
-	return 0;
-}
-
-//获取当前时间
-function getTime() {
-	return (new Date()).getTime();
-}
-
-//获取z-paging实例id
-function getInstanceId() {
-    let s = [];
-    const hexDigits = "0123456789abcdef";
-    for (let i = 0; i < 10; i++) {
-        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
-    }
-    return s.join('') + getTime();
-}
-
-//------------------ 私有方法 ------------------------
-//时间格式化
-function _timeFormat(time) {
-	const date = new Date(time);
-	const currentDate = new Date();
-	const dateDay = new Date(time).setHours(0, 0, 0, 0);
-	const currentDateDay = new Date().setHours(0, 0, 0, 0);
-	const disTime = dateDay - currentDateDay;
-	let dayStr = '';
-	const timeStr = _dateTimeFormat(date);
-	if (disTime === 0) {
-		dayStr = zI18n.t['refresherUpdateTimeTodayText'][zI18n.getLanguage()];
-	} else if (disTime === -86400000) {
-		dayStr = zI18n.t['refresherUpdateTimeYesterdayText'][zI18n.getLanguage()];
-	} else {
-		dayStr = _dateDayFormat(date, date.getFullYear() !== currentDate.getFullYear());
-	}
-	return `${dayStr} ${timeStr}`;
-}
-
-//date格式化为年月日
-function _dateDayFormat(date, showYear = true) {
-	const year = date.getFullYear();
-	const month = date.getMonth() + 1;
-	const day = date.getDate();
-	if (showYear) {
-		return `${year}-${_fullZeroToTwo(month)}-${_fullZeroToTwo(day)}`;
-	} else {
-		return `${_fullZeroToTwo(month)}-${_fullZeroToTwo(day)}`;
-	}
-}
-
-//data格式化为时分
-function _dateTimeFormat(date) {
-	const hour = date.getHours();
-	const minute = date.getMinutes();
-	return `${_fullZeroToTwo(hour)}:${_fullZeroToTwo(minute)}`;
-}
-
-//不满2位在前面填充0
-function _fullZeroToTwo(str) {
-	str = str.toString();
-	if (str.length === 1) return '0' + str;
-	return str;
-}
-
-//驼峰转短横线
-function _toKebab(value) {
-	return value.replace(/([A-Z])/g, "-$1").toLowerCase();
-}
-
-export default {
-	gc,
-	setRefesrherTime,
-	getRefesrherFormatTimeByKey,
-	arrayIsEqual,
-	getTouch,
-	getTouchFromZPaging,
-	getParent,
-	convertTextToPx,
-	getTime,
-	getInstanceId,
-	consoleErr,
-	consoleWarn
-};

+ 0 - 68
uni_modules/z-paging/components/z-paging/wxs/z-paging-renderjs.js

@@ -1,68 +0,0 @@
-// [z-paging]使用renderjs在app-vue和h5中对touchmove事件冒泡进行处理
-
-import u from '../js/z-paging-utils'
-var data = {
-	renderScrollTop: 0,
-	renderUsePageScroll: false,
-	startY: 0,
-	isTouchFromZPaging: false,
-	isIosAndH5: false
-}
-
-var currentVm = null;
-
-export default {
-	mounted() {
-		this._handleTouch();
-		// #ifdef APP-VUE
-		this.$ownerInstance && this.$ownerInstance.callMethod('_checkVirtualListScroll');
-		// #endif
-	},
-	methods: {
-		//接收逻辑层发送的数据
-		renderPropScrollTopChange(newVal, oldVal, ownerVm, vm) {
-			if (newVal === -1) return;
-			currentVm = ownerVm;
-			data.renderScrollTop = newVal;
-		},
-		renderPropUsePageScrollChange(newVal) {
-			if (newVal === -1) return;
-			data.renderUsePageScroll = newVal;
-		},
-		renderPropIsIosAndH5Change(newVal) {
-			if (newVal === -1) return;
-			data.isIosAndH5 = newVal;
-		},
-		//拦截处理touch事件
-		_handleTouch() {
-			if (window && !window.$zPagingRenderJsInited) {
-				window.$zPagingRenderJsInited = true;
-				window.addEventListener('touchstart', this._handleTouchstart, {
-					passive: true
-				})
-				window.addEventListener('touchmove', this._handleTouchmove, {
-					passive: false
-				})
-			}
-		},
-		_handleTouchstart(e) {
-			const touch = u.getTouch(e);
-			data.startY = touch.touchY;
-			data.isTouchFromZPaging = u.getTouchFromZPaging(e.target);
-			this.$ownerInstance && this.$ownerInstance.callMethod('_updateRenderJsData');
-		},
-		_handleTouchmove(e) {
-			const touch = u.getTouch(e);
-			var moveY = touch.touchY - data.startY;
-			if (data.isTouchFromZPaging && ((data.renderScrollTop < 1 && moveY > 0)  || (data.isIosAndH5 && !data.renderUsePageScroll && moveY < 0))) {
-				if (e.cancelable && !e.defaultPrevented) {
-					e.preventDefault();
-				}
-			}
-		},
-		_removeAllEventListener(){
-			window.removeEventListener('touchstart');
-			window.removeEventListener('touchmove');
-		}
-	}
-};

+ 0 - 354
uni_modules/z-paging/components/z-paging/wxs/z-paging-wxs.wxs

@@ -1,354 +0,0 @@
-// [z-paging]微信小程序、QQ小程序、app-vue、h5上使用wxs实现自定义下拉刷新,降低逻辑层与视图层的通信折损,提升性能
-
-var currentDis = 0;
-var isPCFlag = -1;
-var startY = -1;
-
-function propObserver(newValue, oldValue, ownerIns, ins) {
-	var state = ownerIns.getState() || {};
-	state.currentIns = ins;
-	var dataset = ins.getDataset();
-	var loading = dataset.loading == true;
-	if (newValue && newValue.indexOf('end') != -1) {
-		var transition = newValue.split('end')[0];
-		_setTransform('translateY(0px)', ins, false, transition);
-		state.moveDis = 0;
-		state.oldMoveDis = 0;
-		currentDis = 0;
-	} else if (newValue && newValue.indexOf('begin') != -1) {
-		var refresherThreshold = ins.getDataset().refresherthreshold;
-		_setTransformValue(refresherThreshold, ins, state, false);
-	}
-}
-
-function touchstart(e, ownerIns) {
-	var ins = _getIns(ownerIns);
-	var state = {};
-	var dataset = {};
-	if (ins) {
-		state = ins.getState();
-		dataset = ins.getDataset();
-		if (_touchDisabled(e, ins, 0)) return;
-	}
-	var isTouchEnded = state.isTouchEnded;
-	state.oldMoveDis = 0;
-	var touch = _getTouch(e);
-	var loading = _getIsTrue(dataset.loading);
-	state.startY = touch.touchY;
-	startY = state.startY;
-	state.lastTouch = touch;
-	if (!loading && isTouchEnded) {
-		state.isTouchmoving = false;
-	}
-	state.isTouchEnded = false;
-	ownerIns.callMethod('_handleRefresherTouchstart', touch);
-}
-
-function touchmove(e, ownerIns) {
-	var touch = _getTouch(e);
-	var ins = _getIns(ownerIns);
-	var dataset = ins.getDataset();
-	var refresherThreshold = dataset.refresherthreshold;
-	var isIos = _getIsTrue(dataset.isios);
-	var state = ins.getState();
-	var dataset = ins.getDataset();
-	var watchTouchDirectionChange = _getIsTrue(dataset.watchtouchdirectionchange);
-	var moveDisObj = {};
-	var moveDis = 0;
-	var prevent = false;
-	if (watchTouchDirectionChange) {
-		moveDisObj = _getMoveDis(e, ins);
-		moveDis = moveDisObj.currentDis;
-		prevent = moveDisObj.isDown;
-		if(state.oldAcceptedIsDown == prevent){
-			ownerIns.callMethod('_handleTouchDirectionChange', {direction: prevent ? 'top' : 'bottom'}); 
-			state.oldIsDown = prevent;
-		}
-		state.oldAcceptedIsDown = prevent;
-	}
-	if (_touchDisabled(e, ins, 1)) {
-		_handlePullingDown(state, ownerIns, false);
-		return true;
-	}
-	if (!_getAngleIsInRange(e, touch, state, dataset)) {
-		_handlePullingDown(state, ownerIns, false);
-		return true;
-	}
-	moveDisObj = _getMoveDis(e, ins);
-	moveDis = moveDisObj.currentDis;
-	prevent = moveDisObj.isDown;
-	if (moveDis < 0) {
-		_setTransformValue(0, ins, state, false);
-		_handlePullingDown(state, ownerIns, false);
-		return true;
-	}
-	if (prevent && !state.disabledBounce) {
-		if (isIos) {
-			ownerIns.callMethod('_handleScrollViewDisableBounce', {bounce: false}); 
-		}
-		state.disabledBounce = true;
-		_handlePullingDown(state, ownerIns, prevent);
-		return !prevent;
-	}
-	_setTransformValue(moveDis, ins, state, false);
-	var oldRefresherStatus = state.refresherStatus;
-	var oldIsTouchmoving = _getIsTrue(dataset.oldistouchmoving);
-	var hasTouchmove = _getIsTrue(dataset.hastouchmove);
-	var isTouchmoving = state.isTouchmoving;
-	state.refresherStatus = moveDis >= refresherThreshold ? 1 : 0;
-	if (!isTouchmoving) {
-		state.isTouchmoving = true;
-		isTouchmoving = true;
-	}
-	if (state.isTouchEnded) {
-		state.isTouchEnded = false;
-	}
-	if (hasTouchmove) {
-		ownerIns.callMethod('_handleWxsPullingDown', {moveDis:moveDis, diffDis:moveDisObj.diffDis});
-	}
-	if (oldRefresherStatus == undefined || oldRefresherStatus != state.refresherStatus || oldIsTouchmoving != isTouchmoving) {
-		ownerIns.callMethod('_handleRefresherTouchmove', moveDis, touch);
-	}
-	_handlePullingDown(state, ownerIns, prevent);
-	return !prevent;
-}
-
-function touchend(e, ownerIns) {
-	var touch = _getTouch(e);
-	var ins = _getIns(ownerIns);
-	var dataset = ins.getDataset();
-	var state = ins.getState();
-	if (_touchDisabled(e, ins, 2)) return;
-	state.reachMaxAngle = true;
-	state.hitReachMaxAngleCount = 0;
-	state.disabledBounce = false;
-	state.fixedIsTopHitCount = 0;
-	//ownerIns.callMethod('_handleScrollViewDisableBounce', {bounce:true});
-	if (!state.isTouchmoving) return;
-	var oldRefresherStatus = state.refresherStatus;
-	var oldMoveDis = state.moveDis;
-	var refresherThreshold = ins.getDataset().refresherthreshold
-	var moveDis = _getMoveDis(e, ins).currentDis;
-	if (!(moveDis >= refresherThreshold && oldRefresherStatus === 1)) {
-		state.isTouchmoving = false;
-	}
-	ownerIns.callMethod('_handleRefresherTouchend', moveDis);
-	state.isTouchEnded = true;
-	if (oldMoveDis < refresherThreshold) return;
-	var animate = false;
-	if (moveDis >= refresherThreshold) {
-		moveDis = refresherThreshold;
-		animate = true;
-	}
-	_setTransformValue(moveDis, ins, state, animate);
-}
-
-// #ifdef H5
-function isPC() {
-	if (!navigator) return false;
-	if (isPCFlag != -1) return isPCFlag;
-	var userAgentInfo = navigator.userAgent;
-	var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
-	var flag = true;
-	for (var i = 0; i < Agents.length; i++) {
-		if (userAgentInfo.indexOf(Agents[i]) > 0) {
-			flag = false;
-			break;
-		}
-	}
-	isPCFlag = flag;
-	return isPCFlag;
-}
-
-var movable = false;
-
-function mousedown(e, ins) {
-	if (!isPC()) return;
-	touchstart(e, ins);
-	movable = true;
-}
-
-function mousemove(e, ins) {
-	if (!isPC()) return;
-	if (!movable) return;
-	touchmove(e, ins);
-}
-
-function mouseup(e, ins) {
-	if (!isPC()) return;
-	touchend(e, ins);
-	movable = false;
-}
-
-function mouseleave(e, ins) {
-	if (!isPC()) return;
-	movable = false;
-}
-// #endif
-
-
-function _setTransformValue(value, ins, state, animate) {
-	value = value || 0;
-	if (state.moveDis == value) return;
-	state.moveDis = value;
-	_setTransform('translateY(' + value + 'px)', ins, animate, '');
-}
-
-function _setTransform(transform, ins, animate, transition) {
-	if (transform == 'translateY(0px)') {
-		transform = 'none';
-	}
-	ins.requestAnimationFrame(function() {
-		var stl = { 'transform': transform };
-		if (animate) {
-			stl['transition'] = 'transform .1s linear';
-		}
-		if (transition.length) {
-			stl['transition'] = transition;
-		}
-		ins.setStyle(stl);
-	})
-}
-
-function _getMoveDis(e, ins) {
-	var state = ins.getState();
-	var refresherThreshold = parseFloat(ins.getDataset().refresherthreshold);
-	var refresherOutRate = parseFloat(ins.getDataset().refresheroutrate);
-	var touch = _getTouch(e);
-	var currentStartY = !state.startY || state.startY == 'NaN' ? startY : state.startY;
-	var moveDis = touch.touchY - currentStartY;
-	var oldMoveDis = state.oldMoveDis || 0;
-	state.oldMoveDis = moveDis;
-	var diffDis = moveDis - oldMoveDis;
-	if (diffDis > 0) {
-		diffDis = diffDis * 0.85;
-		if (currentDis > refresherThreshold) {
-			diffDis = diffDis * (1 - refresherOutRate);
-		}
-	}
-	if (diffDis > 200) {
-		currentDis = 0;
-		diffDis = 0;
-	} else {
-		currentDis += diffDis;
-		currentDis = Math.max(0, currentDis);
-	}
-	return {
-		currentDis: currentDis,
-		diffDis: diffDis,
-		isDown: diffDis > 0
-	};
-}
-
-function _getTouch(e) {
-	var touch = e;
-	if (e.touches && e.touches.length) {
-		touch = e.touches[0];
-	} else if (e.changedTouches && e.changedTouches.length) {
-		touch = e.changedTouches[0];
-	} else if (e.datail && e.datail != {}) {
-		touch = e.datail;
-	}
-	return {
-		touchX: touch.clientX,
-		touchY: touch.clientY
-	};
-}
-
-function _getIns(ownerIns) {
-	var ins = ownerIns.getState().currentIns;
-	if (!ins) {
-		ownerIns.callMethod('_handlePropUpdate');
-	}
-	return ins;
-}
-
-function _touchDisabled(e, ins, processTag) {
-	var dataset = ins.getDataset();
-	var state = ins.getState();
-	var loading = _getIsTrue(dataset.loading);
-	var useChatRecordMode = _getIsTrue(dataset.usechatrecordmode);
-	var refresherEnabled = _getIsTrue(dataset.refresherenabled);
-	var useCustomRefresher = _getIsTrue(dataset.usecustomrefresher);
-	var usePageScroll = _getIsTrue(dataset.usepagescroll);
-	var pageScrollTop = parseFloat(dataset.pagescrolltop);
-	var scrollTop = parseFloat(dataset.scrolltop);
-	var finalScrollTop = usePageScroll ? pageScrollTop : scrollTop;
-	var fixedIsTop = false;
-	var isIos = _getIsTrue(dataset.isios);
-	if (!isIos && finalScrollTop == (state.startScrollTop || 0) && finalScrollTop <= 105) {
-		fixedIsTop = true;
-	}
-	var fixedIsTopHitCount = state.fixedIsTopHitCount || 0;
-	if (fixedIsTop) {
-		fixedIsTopHitCount++;
-		if (fixedIsTopHitCount <= 3) {
-			fixedIsTop = false;
-		}
-		state.fixedIsTopHitCount = fixedIsTopHitCount;
-	} else {
-		state.fixedIsTopHitCount = 0;
-	}
-	if (!isIos && processTag === 0) {
-		state.startScrollTop = finalScrollTop || 0;
-	}
-	if (!isIos && processTag === 2) {
-		fixedIsTop = true;
-	}
-	var res = loading || useChatRecordMode || !refresherEnabled || !useCustomRefresher || ((usePageScroll && useCustomRefresher && pageScrollTop > 5) && !fixedIsTop) || 
-	((!usePageScroll && useCustomRefresher && scrollTop > 5) && !fixedIsTop);
-	return res;
-}
-
-function _getAngleIsInRange(e, touch, state, dataset) {
-	var maxAngle = dataset.refreshermaxangle;
-	var refresherAecc = _getIsTrue(dataset.refresheraecc);
-	var lastTouch = state.lastTouch;
-	var reachMaxAngle = state.reachMaxAngle;
-	var moveDis = state.oldMoveDis;
-	if (!lastTouch) return true;
-	if (maxAngle >= 0 && maxAngle <= 90 && lastTouch) {
-		if ((!moveDis || moveDis < 1) && !refresherAecc && reachMaxAngle != null && !reachMaxAngle) return false;
-		var x = Math.abs(touch.touchX - lastTouch.touchX);
-		var y = Math.abs(touch.touchY - lastTouch.touchY);
-		var z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
-		if ((x || y) && x > 1) {
-			var angle = Math.asin(y / z) / Math.PI * 180;
-			if (angle < maxAngle) {
-				var hitReachMaxAngleCount = state.hitReachMaxAngleCount || 0;
-				state.hitReachMaxAngleCount = ++hitReachMaxAngleCount;
-				if (state.hitReachMaxAngleCount > 2) {
-					state.lastTouch = touch;
-					state.reachMaxAngle = false;
-				}
-				return false;
-			}
-		}
-	}
-	state.lastTouch = touch;
-	return true;
-}
-
-function _handlePullingDown(state, ins, onPullingDown) {
-	var oldOnPullingDown = state.onPullingDown || false;
-	if (oldOnPullingDown != onPullingDown) {
-		ins.callMethod('_handleWxsPullingDownStatusChange', onPullingDown);
-	}
-	state.onPullingDown = onPullingDown;
-}
-
-function _getIsTrue(value) {
-	value = (typeof(value) === 'string' ? JSON.parse(value) : value) || false;
-	return value == true || value == 'true';
-}
-
-module.exports = {
-	touchstart: touchstart,
-	touchmove: touchmove,
-	touchend: touchend,
-	mousedown: mousedown,
-	mousemove: mousemove,
-	mouseup: mouseup,
-	mouseleave: mouseleave,
-	propObserver: propObserver
-}

+ 0 - 354
uni_modules/z-paging/components/z-paging/z-paging.vue

@@ -1,354 +0,0 @@
- <!--                        _             
-  ____     _ __   __ _  __ _(_)_ __   __ _ 
- |_  /____| '_ \ / _` |/ _` | | '_ \ / _` |
-  / /_____| |_) | (_| | (_| | | | | | (_| |
- /___|    | .__/ \__,_|\__, |_|_| |_|\__, |
-          |_|          |___/         |___/ 
-v2.3.3 (2022-07-14)
-by ZXLee
--->
-<!-- API文档地址:https://z-paging.zxlee.cn -->
-<!-- github地址:https://github.com/SmileZXLee/uni-z-paging -->
-<!-- dcloud地址:https://ext.dcloud.net.cn/plugin?id=3935 -->
-<!-- 反馈QQ群:790460711 -->
-
-<template name="z-paging">
-	<!-- #ifndef APP-NVUE -->
-	<view :class="!usePageScroll&&fixed?'z-paging-content z-paging-content-fixed':'z-paging-content'" :style="[finalPagingStyle]">
-		<!-- #ifndef APP-PLUS -->
-		<view v-if="cssSafeAreaInsetBottom===-1" class="zp-safe-area-inset-bottom"></view>
-		<!-- #endif -->
-		<!-- 顶部固定的slot -->
-		<slot v-if="!usePageScroll&&$slots.top" name="top" />
-		<view class="zp-page-top" v-else-if="usePageScroll&&$slots.top" :style="[{'top':`${windowTop}px`,'z-index':topZIndex}]">
-			<slot name="top" />
-		</view>
-		<view :class="{'zp-view-super':true,'zp-scroll-view-super':!usePageScroll}" :style="[finalScrollViewStyle]">
-			<view v-if="$slots.left" :class="{'zp-page-left':true,'zp-absoulte':finalIsOldWebView}">
-				<slot name="left" />
-			</view>
-			<view :class="{'zp-scroll-view-container':true,'zp-absoulte':finalIsOldWebView}" :style="[scrollViewContainerStyle]">
-				<scroll-view
-					ref="zp-scroll-view" :class="{'zp-scroll-view':true,'zp-scroll-view-absolute':!usePageScroll,'zp-scroll-view-hide-scrollbar':!showScrollbar}"
-					:scroll-top="scrollTop" :scroll-x="scrollX"
-					:scroll-y="scrollable&&!usePageScroll&&scrollEnable&&(refresherCompleteScrollable?true:refresherStatus!==3)" :enable-back-to-top="finalEnableBackToTop"
-					:show-scrollbar="showScrollbar" :scroll-with-animation="finalScrollWithAnimation"
-					:scroll-into-view="scrollIntoView" :lower-threshold="finalLowerThreshold" :upper-threshold="5"
-					:refresher-enabled="finalRefresherEnabled&&!useCustomRefresher" :refresher-threshold="finalRefresherThreshold"
-					:refresher-default-style="finalRefresherDefaultStyle" :refresher-background="refresherBackground"
-					:refresher-triggered="finalRefresherTriggered" @scroll="_scroll" @scrolltolower="_onLoadingMore('toBottom')"
-					@scrolltoupper="_scrollToUpper" @refresherrestore="_onRestore" @refresherrefresh="_onRefresh(true)">	
-					<view class="zp-paging-touch-view"
-					<!-- #ifndef APP-VUE || MP-WEIXIN || MP-QQ  || H5 -->
-					@touchstart="_refresherTouchstart" @touchmove="_refresherTouchmove" @touchend="_refresherTouchend" @touchcancel="_refresherTouchend"
-					<!-- #endif -->
-					<!-- #ifdef APP-VUE || MP-WEIXIN || MP-QQ || H5 -->
-					@touchstart="pagingWxs.touchstart" @touchmove="pagingWxs.touchmove" @touchend="pagingWxs.touchend" @touchcancel="pagingWxs.touchend"
-					@mousedown="pagingWxs.mousedown" @mousemove="pagingWxs.mousemove" @mouseup="pagingWxs.mouseup" @mouseleave="pagingWxs.mouseleave"
-					<!-- #endif -->
-					>	
-						<view v-if="finalRefresherFixedBacHeight>0" class="zp-fixed-bac-view" :style="[{'background': refresherFixedBackground,'height': `${finalRefresherFixedBacHeight}px`}]"></view>
-						<view class="zp-paging-main" :style="[scrollViewInStyle,{'transform': finalRefresherTransform,'transition': refresherTransition}]"
-						<!-- #ifdef APP-VUE || MP-WEIXIN || MP-QQ || H5 -->
-						:change:prop="pagingWxs.propObserver" :prop="wxsPropType"
-						:data-refresherThreshold="finalRefresherThreshold" :data-isIos="isIos"
-						:data-loading="loading||isRefresherInComplete" :data-useChatRecordMode="useChatRecordMode" 
-						:data-refresherEnabled="refresherEnabled" :data-useCustomRefresher="useCustomRefresher" :data-pageScrollTop="wxsPageScrollTop"
-						:data-scrollTop="wxsScrollTop" :data-refresherMaxAngle="refresherMaxAngle" 
-						:data-refresherAecc="refresherAngleEnableChangeContinued" :data-usePageScroll="usePageScroll" :data-watchTouchDirectionChange="watchTouchDirectionChange"
-						:data-oldIsTouchmoving="isTouchmoving" :data-refresherOutRate="finalRefresherOutRate" :data-hasTouchmove="hasTouchmove"
-						<!-- #endif -->
-						<!-- #ifdef APP-VUE || H5 -->
-						:change:renderPropScrollTop="pagingRenderjs.renderPropScrollTopChange" :renderPropScrollTop="renderPropScrollTop"
-						:change:renderPropIsIosAndH5="pagingRenderjs.renderPropIsIosAndH5Change" :renderPropIsIosAndH5="isIosAndH5"
-						:change:renderPropUsePageScroll="pagingRenderjs.renderPropUsePageScrollChange" :renderPropUsePageScroll="renderPropUsePageScroll"
-						<!-- #endif -->
-						>	
-							<view v-if="showRefresher" class="zp-custom-refresher-view" :style="[{'margin-top': `-${finalRefresherThreshold}px`,'background': refresherBackground}]">
-								<view class="zp-custom-refresher-container" :style="[{'height': `${finalRefresherThreshold}px`,'background': refresherBackground}]">
-									<!-- 下拉刷新view -->
-									<view class="zp-custom-refresher-slot-view">
-										<slot v-if="!($slots.refresherComplete&&refresherStatus===3)" :refresherStatus="refresherStatus" name="refresher" />
-									</view>
-									<slot v-if="$slots.refresherComplete&&refresherStatus===3" name="refresherComplete" />
-									<z-paging-refresh ref="refresh" v-else-if="!showCustomRefresher" :style="[{'height': `${finalRefresherThreshold}px`}]" :status="refresherStatus"
-										:defaultThemeStyle="finalRefresherThemeStyle" :defaultText="finalRefresherDefaultText"
-										:pullingText="finalRefresherPullingText" :refreshingText="finalRefresherRefreshingText" :completeText="finalRefresherCompleteText"
-										:showUpdateTime="showRefresherUpdateTime" :updateTimeKey="refresherUpdateTimeKey"
-										:imgStyle="refresherImgStyle" :titleStyle="refresherTitleStyle" :updateTimeStyle="refresherUpdateTimeStyle" />
-								</view>
-							</view>
-							<view class="zp-paging-container">
-								<slot v-if="useChatRecordMode&&$slots.chatLoading&&loadingStatus!==2&&realTotalData.length" name="chatLoading" />
-								<view v-else-if="useChatRecordMode&&loadingStatus!==2&&realTotalData.length" class="zp-chat-record-loading-container">
-									<text v-if="loadingStatus!==1" @click="_scrollToUpper()"
-										:class="defaultThemeStyle==='white'?'zp-loading-more-text zp-loading-more-text-white':'zp-loading-more-text zp-loading-more-text-black'">{{chatRecordLoadingMoreText}}</text>
-									<image v-else :src="base64Flower" class="zp-chat-record-loading-custom-image" />
-								</view>
-								<!-- 全屏Loading -->
-								<slot v-if="$slots.loading&&showLoading&&!loadingFullFixed" name="loading" />
-								<!-- 主体内容 -->
-								<view class="zp-paging-container-content" :style="[{transform:virtualPlaceholderTopHeight>0?`translateY(${virtualPlaceholderTopHeight}px)`:'none'},finalPagingContentStyle]">
-									<slot />
-									<!-- 内置列表&虚拟列表 -->
-									<template v-if="finalUseInnerList">
-										<slot name="header"/>
-										<view class="zp-list-container" :style="[innerListStyle]">
-											<template v-if="finalUseVirtualList">
-												<view class="zp-list-cell" :style="[innerCellStyle]" :id="`zp-${item['zp_index']}`" v-for="(item,index) in virtualList" :key="item['zp_unique_index']">
-													<slot name="cell" :item="item" :index="virtualTopRangeIndex+index"/>
-												</view>
-											</template>
-											<template v-else>
-												<view class="zp-list-cell" v-for="(item,index) in realTotalData" :key="index">
-													<slot name="cell" :item="item" :index="index"/>
-												</view>
-											</template>
-										</view>
-										<slot name="footer"/>
-									</template>
-									<view v-if="useVirtualList" class="zp-virtual-placeholder" :style="[{height:virtualPlaceholderBottomHeight+'px'}]"/>
-									<!-- 上拉加载更多view -->
-									<!-- #ifndef MP-ALIPAY -->
-									<slot v-if="showLoadingMoreDefault" name="loadingMoreDefault" />
-									<slot v-else-if="showLoadingMoreLoading" name="loadingMoreLoading" />
-									<slot v-else-if="showLoadingMoreNoMore" name="loadingMoreNoMore" />
-									<slot v-else-if="showLoadingMoreFail" name="loadingMoreFail" />
-									<z-paging-load-more @doClick="_onLoadingMore('click')" v-else-if="showLoadingMoreCustom" :zConfig="zPagingLoadMoreConfig" />
-									<!-- #endif -->
-									<!-- #ifdef MP-ALIPAY -->
-									<slot v-if="loadingStatus===0&&$slots.loadingMoreDefault&&showLoadingMore&&loadingMoreEnabled&&!useChatRecordMode" name="loadingMoreDefault" />
-									<slot v-else-if="loadingStatus===1&&$slots.loadingMoreLoading&&showLoadingMore&&loadingMoreEnabled" name="loadingMoreLoading" />
-									<slot v-else-if="loadingStatus===2&&$slots.loadingMoreNoMore&&showLoadingMore&&showLoadingMoreNoMoreView&&loadingMoreEnabled&&!useChatRecordMode" name="loadingMoreNoMore" />
-									<slot v-else-if="loadingStatus===3&&$slots.loadingMoreFail&&showLoadingMore&&loadingMoreEnabled&&!useChatRecordMode" name="loadingMoreFail" />
-									<z-paging-load-more @doClick="_onLoadingMore('click')" v-else-if="showLoadingMore&&showDefaultLoadingMoreText&&!(loadingStatus===2&&!showLoadingMoreNoMoreView)&&loadingMoreEnabled&&!useChatRecordMode" :zConfig="zPagingLoadMoreConfig" />
-									<!-- #endif -->
-									<view v-if="safeAreaInsetBottom && useSafeAreaPlaceholder" class="zp-safe-area-placeholder" :style="[{height:safeAreaBottom+'px'}]" />
-								</view>
-								<!-- 空数据图 -->
-								<view :class="{'zp-empty-view':true,'zp-empty-view-center':emptyViewCenter}" :style="[{emptyViewSuperStyle}]" v-if="showEmpty">
-									<slot v-if="$slots.empty" name="empty" />
-									<z-paging-empty-view v-else :emptyViewImg="finalEmptyViewImg" :emptyViewText="finalEmptyViewText" :showEmptyViewReload="finalShowEmptyViewReload" 
-									:emptyViewReloadText="finalEmptyViewReloadText" :isLoadFailed="isLoadFailed" :emptyViewStyle="emptyViewStyle" :emptyViewTitleStyle="emptyViewTitleStyle" 
-									:emptyViewImgStyle="emptyViewImgStyle" :emptyViewReloadStyle="emptyViewReloadStyle" :emptyViewZIndex="emptyViewZIndex" :emptyViewFixed="emptyViewFixed" 
-									@reload="_emptyViewReload" @viewClick="_emptyViewClick" />
-								</view>
-							</view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-			<view v-if="$slots.right" :class="{'zp-page-right':true,'zp-absoulte zp-right':finalIsOldWebView}">
-				<slot name="right" />
-			</view>
-		</view>
-		<!-- 底部固定的slot -->
-		<slot v-if="!usePageScroll&&$slots.bottom" name="bottom" />
-		<view class="zp-page-bottom" v-else-if="usePageScroll&&$slots.bottom" :style="[{'bottom': `${windowBottom}px`}]">
-			<slot name="bottom" />
-		</view>
-		<!-- 点击返回顶部view -->
-		<view v-if="showBackToTopClass" :class="backToTopClass" :style="[finalBackToTopStyle]" @click.stop="_backToTopClick">
-			<slot v-if="$slots.backToTop" name="backToTop" />
-			<image v-else class="zp-back-to-top-img" :src="backToTopImg.length?backToTopImg:base64BackToTop" />
-		</view>
-		<!-- 全屏Loading(铺满z-paging并固定) -->
-		<view v-if="$slots.loading&&showLoading&&loadingFullFixed" class="zp-loading-fixed">
-			<slot name="loading" />
-		</view>
-	</view>
-	<!-- #endif -->
-	<!-- #ifdef APP-NVUE -->
-	<view :is="finalNvueSuperListIs" :style="[finalPagingStyle]" :class="{'z-paging-content-fixed':fixed&&!usePageScroll}" :scrollable="false">
-		<!-- 顶部固定的slot -->
-		<view ref="zp-page-top" :is="nViewIs" class="zp-page-top" v-if="$slots.top" :style="[{'top':`${windowTop}px`,'z-index':topZIndex}]">
-			<slot name="top" />
-		</view>
-		<view :is="finalNvueSuperListIs" class="zp-n-list-container" :scrollable="false">
-			<view v-if="$slots.left" class="zp-page-left" :style="[{'marginTop':scrollViewStyle.marginTop,'marginBottom':scrollViewStyle.marginBottom}]">
-				<slot name="left" />
-			</view>
-			<view ref="zp-n-list" :id="nvueListId" :style="[{'flex': 1,'top':isIos?'0px':'-1px'},scrollViewStyle,useChatRecordMode ? {transform: nIsFirstPageAndNoMore?'rotate(0deg)':'rotate(180deg)'}:{}]" :is="finalNvueListIs" alwaysScrollableVertical="true"
-				:fixFreezing="nFixFreezing" :show-scrollbar="showScrollbar&&!useChatRecordMode" :loadmoreoffset="finalLowerThreshold" :enable-back-to-top="enableBackToTop"
-				:scrollable="scrollable&&scrollEnable&&(refresherCompleteScrollable?true:refresherStatus!==3)" :bounce="nvueBounce" :column-count="nWaterfallColumnCount" :column-width="nWaterfallColumnWidth"
-				:column-gap="nWaterfallColumnGap" :left-gap="nWaterfallLeftGap" :right-gap="nWaterfallRightGap" :pagingEnabled="nvuePagingEnabled"
-				@loadmore="_nOnLoadmore" @scroll="_nOnScroll">
-				<refresh v-if="($slots.top?cacheTopHeight!==-1:true)&&finalNvueRefresherEnabled" class="zp-n-refresh" :style="[nvueRefresherStyle]" :display="nRefresherLoading?'show':'hide'" @refresh="_nOnRrefresh" @pullingdown="_nOnPullingdown">
-					<view ref="zp-n-refresh-container" class="zp-n-refresh-container" :style="[{background:refresherBackground,width:nRefresherWidth}]" id="zp-n-refresh-container">
-						<!-- 下拉刷新view -->
-						<slot v-if="zScopedSlots.refresherComplete&&refresherStatus===3" name="refresherComplete" />
-						<slot v-else-if="zScopedSlots.refresher" :refresherStatus="refresherStatus" name="refresher" />
-						<z-paging-refresh ref="refresh" v-else :status="refresherStatus" :defaultThemeStyle="finalRefresherThemeStyle"
-							:defaultText="finalRefresherDefaultText" :pullingText="finalRefresherPullingText" :refreshingText="finalRefresherRefreshingText" :completeText="finalRefresherCompleteText"
-							:showUpdateTime="showRefresherUpdateTime" :updateTimeKey="refresherUpdateTimeKey"
-							:imgStyle="refresherImgStyle" :titleStyle="refresherTitleStyle" :updateTimeStyle="refresherUpdateTimeStyle" />
-					</view>
-				</refresh>
-				<view v-if="oldScrollTop > 10" ref="zp-n-list-top-tag" class="zp-n-list-top-tag" style="margin-top: -1rpx;" :style="[{height:finalNvueRefresherEnabled?'0px':'1px'}]" :is="nViewIs"></view>
-				<view v-if="nShowRefresherReveal" ref="zp-n-list-refresher-reveal" :style="[{transform:`translateY(-${nShowRefresherRevealHeight}px)`,height:'0px'},{background:refresherBackground}]" :is="nViewIs">
-					<!-- 下拉刷新view -->
-					<slot v-if="zScopedSlots.refresherComplete&&refresherStatus===3" name="refresherComplete" />
-					<slot v-else-if="zScopedSlots.refresher" :refresherStatus="refresherStatus" name="refresher" />
-					<z-paging-refresh ref="refresh" v-else :status="refresherStatus" :defaultThemeStyle="finalRefresherThemeStyle"
-						:defaultText="finalRefresherDefaultText" :pullingText="finalRefresherPullingText" :refreshingText="finalRefresherRefreshingText" :completeText="finalRefresherCompleteText" 
-						:showUpdateTime="showRefresherUpdateTime" :updateTimeKey="refresherUpdateTimeKey"
-						:imgStyle="refresherImgStyle" :titleStyle="refresherTitleStyle" :updateTimeStyle="refresherUpdateTimeStyle" />
-				</view>
-				<template v-if="finalUseInnerList">
-					<view :is="nViewIs">
-						<slot name="header"/>
-					</view>	
-					<view class="zp-list-cell" :is="nViewIs" v-for="(item,index) in realTotalData" :key="finalCellKeyName.length?item[finalCellKeyName]:index">
-						<slot name="cell" :item="item" :index="index"/>
-					</view>
-					<view :is="nViewIs">
-						<slot name="footer"/>
-					</view>	
-				</template>
-				<template v-else>
-					<slot />
-				</template>
-				<!-- 全屏Loading -->
-				<view :class="{'z-paging-content-fixed':usePageScroll}" style="flex: 1;" :style="[useChatRecordMode ? {transform: nIsFirstPageAndNoMore?'rotate(0deg)':'rotate(180deg)'}:{}]" v-if="$slots.loading&&showLoading&&!loadingFullFixed" :is="nViewIs">
-					<slot name="loading" />
-				</view>
-				<!-- 空数据图 -->
-				<view class="z-paging-empty-view" :class="{'z-paging-content-fixed':usePageScroll}" style="flex: 1;" :style="[emptyViewSuperStyle,useChatRecordMode ? {transform: nIsFirstPageAndNoMore?'rotate(0deg)':'rotate(180deg)'}:{}]" v-if="showEmpty" :is="nViewIs">
-					<view :class="{'zp-empty-view':true,'zp-empty-view-center':emptyViewCenter}">
-						<slot v-if="$slots.empty" name="empty" />
-						<z-paging-empty-view v-else :emptyViewImg="finalEmptyViewImg" :emptyViewText="finalEmptyViewText" :showEmptyViewReload="finalShowEmptyViewReload" 
-						:emptyViewReloadText="finalEmptyViewReloadText" :isLoadFailed="isLoadFailed" :emptyViewStyle="emptyViewStyle" :emptyViewTitleStyle="emptyViewTitleStyle" 
-						:emptyViewImgStyle="emptyViewImgStyle" :emptyViewReloadStyle="emptyViewReloadStyle" :emptyViewZIndex="emptyViewZIndex" :emptyViewFixed="emptyViewFixed" 
-						@reload="_emptyViewReload" @viewClick="_emptyViewClick" />
-					</view>
-				</view>
-				<view v-if="!hideNvueBottomTag" ref="zp-n-list-bottom-tag" class="zp-n-list-bottom-tag" is="header"></view>
-				<!-- 上拉加载更多view -->
-				<view :is="nViewIs" v-if="!refresherOnly&&loadingMoreEnabled">
-					<view v-if="useChatRecordMode">
-						<view v-if="loadingStatus!==2&&realTotalData.length">
-							<slot v-if="$slots.chatLoading" name="chatLoading" />
-							<view v-else class="zp-chat-record-loading-container">
-								<text v-if="loadingStatus!==1" @click="_scrollToUpper()"
-									:class="defaultThemeStyle==='white'?'zp-loading-more-text zp-loading-more-text-white':'zp-loading-more-text zp-loading-more-text-black'">{{chatRecordLoadingMoreText}}</text>
-								<view>
-									<loading-indicator v-if="loadingStatus===1" class="zp-line-loading-image" animating />
-								</view>
-							</view>
-						</view>
-					</view>
-					<view :style="nLoadingMoreFixedHeight?{height:loadingMoreCustomStyle&&loadingMoreCustomStyle.height?loadingMoreCustomStyle.height:'80rpx'}:{}">
-						<slot v-if="showLoadingMoreDefault" name="loadingMoreDefault" />
-						<slot v-else-if="showLoadingMoreLoading" name="loadingMoreLoading" />
-						<slot v-else-if="showLoadingMoreNoMore" name="loadingMoreNoMore" />
-						<slot v-else-if="showLoadingMoreFail" name="loadingMoreFail" />
-						<z-paging-load-more @doClick="_onLoadingMore('click')" v-else-if="showLoadingMoreCustom" :zConfig="zPagingLoadMoreConfig" />
-						<view v-if="safeAreaInsetBottom && useSafeAreaPlaceholder" class="zp-safe-area-placeholder" :style="[{height:safeAreaBottom+'px'}]" />
-					</view>
-				</view>
-			</view>
-			<view v-if="$slots.right" class="zp-page-right">
-				<slot name="right" />
-			</view>
-		</view>
-		<!-- 底部固定的slot -->
-		<slot name="bottom" />
-		<!-- 点击返回顶部view -->
-		<view v-if="showBackToTopClass" :class="backToTopClass" :style="[finalBackToTopStyle]" @click.stop="_backToTopClick">
-			<slot v-if="$slots.backToTop" name="backToTop" />
-			<image v-else class="zp-back-to-top-img" :src="backToTopImg.length?backToTopImg:base64BackToTop" />
-		</view>
-		<!-- 全屏Loading(铺满z-paging并固定) -->
-		<view v-if="$slots.loading&&showLoading&&loadingFullFixed" class="zp-loading-fixed">
-			<slot name="loading" />
-		</view>
-	</view>
-	<!-- #endif -->
-</template>
-<!-- #ifdef APP-VUE || MP-WEIXIN || MP-QQ || H5 -->
-<script src="./wxs/z-paging-wxs.wxs" module="pagingWxs" lang="wxs"></script>
-<!-- #endif -->
-<script module="pagingRenderjs" lang="renderjs">
-	import pagingRenderjs from './wxs/z-paging-renderjs.js';
-	/**
-	 * z-paging 分页组件
-	 * @description 高性能,全平台兼容。支持虚拟列表,支持nvue、vue3
-	 * @tutorial https://z-paging.zxlee.cn
-	 * @notice 以下仅为部分常用属性、方法&事件,完整文档请查阅z-paging官网
-	 * @property {Number|String} default-page-no 自定义初始的pageNo,默认为1
-	 * @property {Number|String} default-page-size 自定义pageSize,默认为10
-	 * @property {Number|String} delay 调用complete后延迟处理的时间,单位为毫秒
-	 * @property {String} language i18n国际化设置语言,支持简体中文(zh-cn)、繁体中文(zh-hant-cn)和英文(en)
-	 * @property {Object} paging-style 设置z-paging的style,部分平台(如微信小程序)无法直接修改组件的style,可使用此属性代替
-	 * @property {String} height z-paging的高度,优先级低于pagingStyle中设置的height,传字符串,如100px、100rpx、100%
-	 * @property {String} width z-paging的宽度,优先级低于pagingStyle中设置的width,传字符串,如100px、100rpx、100%
-	 * @property {String} bg-color z-paging的背景色,优先级低于pagingStyle中设置的background。传字符串,如"#ffffff"
-	 * @property {String} default-theme-style loading(下拉刷新、上拉加载更多)的主题样式,支持black,white,默认black
-	 * @property {String} refresher-theme-style 下拉刷新的主题样式,支持black,white,默认black
-	 * @property {Boolean} refresher-only 是否只使用下拉刷新,设置为true后将关闭mounted自动请求数据、关闭滚动到底部加载更多,强制隐藏空数据图。默认为否
-	 * @property {Boolean} use-page-scroll 使用页面滚动,默认为否,当设置为是时则使用页面的滚动而非此组件内部的scroll-view的滚动,使用页面滚动时z-paging无需设置确定的高度且对于长列表展示性能更高,但配置会略微繁琐
-	 * @property {Boolean} use-virtual-list 是否使用虚拟列表,默认为否
-	 * @property {Boolean} fixed z-paging是否使用fixed布局,若使用fixed布局,则z-paging的父view无需固定高度,z-paging高度默认为100%,默认为是(当使用内置scroll-view滚动时有效)
-	 * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区域适配,默认为否
-	 * @property {Boolean} auto [z-paging]mounted后是否自动调用reload方法(mounted后自动调用接口),默认为是
-	 * @property {Boolean} auto-scroll-to-top-when-reload reload时是否自动滚动到顶部,默认为是
-	 * @property {Boolean} auto-clean-list-when-reload reload时是否立即自动清空原list,默认为是,若立即自动清空,则在reload之后、请求回调之前页面是空白的
-	 * @property {Boolean} show-refresher-when-reload 列表刷新时是否自动显示下拉刷新view,默认为否
-	 * @property {String|Object} refresher-default-text 自定义下拉刷新默认状态下的文字
-	 * @property {String|Object} refresher-pulling-text 自定义下拉刷新松手立即刷新状态下的文字
-	 * @property {String|Object} refresher-refreshing-text 自定义下拉刷新刷新中状态下的文字
-	 * @property {String|Object} refresher-complete-text 自定义下拉刷新刷新结束状态下的文字
-	 * @property {Object} loading-more-custom-style 自定义底部加载更多样式
-	 * @property {Boolean} loading-more-enabled 是否启用加载更多数据(含滑动到底部加载更多数据和点击加载更多数据),默认为是
-	 * @property {String|Object} loading-more-default-text 滑动到底部"默认"文字,默认为【点击加载更多】
-	 * @property {String|Object} loading-more-loading-text 滑动到底部"加载中"文字,默认为【正在加载...】
-	 * @property {String|Object} loading-more-no-more-text 滑动到底部"没有更多"文字,默认为【没有更多了】
-	 * @property {String|Object} loading-more-fail-text 滑动到底部"加载失败"文字,默认为【加载失败,点击重新加载】
-	 * @property {Boolean} inside-more 当分页未满一屏时,是否自动加载更多(nvue无效),默认为否
-	 * @property {Boolean} hide-empty-view 是否强制隐藏空数据图,默认为否
-	 * @property {String|Object} empty-view-text 空数据图描述文字,默认为“没有数据哦~”
-	 * @property {Boolean} show-empty-view-reload 是否显示空数据图重新加载按钮(无数据时),默认为否
-	 * @property {Boolean} show-empty-view-reload-when-error 加载失败时是否显示空数据图重新加载按钮,默认为是
-	 * @property {String} empty-view-img 空数据图图片,默认使用z-paging内置的图片
-	 * @property {String|Object} empty-view-reload-text 空数据图点击重新加载文字
-	 * @property {String|Object} empty-view-error-text 空数据图“加载失败”描述文字
-	 * @property {String} empty-view-error-img 空数据图“加载失败”图片,默认使用z-paging内置的图片(建议使用绝对路径)
-	 * @property {Object} empty-view-style 空数据图样式
-	 * @property {Boolean} empty-view-fixed 空数据图片是否铺满z-paging,默认为是。若设置为否,则为填充满z-paging的剩余部分
-	 * @property {Boolean} empty-view-center 空数据图片是否垂直居中,默认为是。emptyViewFixed为false时有效
-	 * @property {Boolean} auto-show-back-to-top 自动显示点击返回顶部按钮,默认为否
-	 * @property {Number|String} back-to-top-threshold 点击返回顶部按钮显示/隐藏的阈值(滚动距离),单位为px,默认为400rpx
-	 * @property {String} back-to-top-img 点击返回顶部按钮的自定义图片地址,默认使用z-paging内置的图片
-	 * @property {Object} back-to-top-style 点击返回顶部按钮的自定义样式
-	 * @property {Boolean} show-scrollbar 控制是否出现滚动条,默认为是
-	 * @property {Number|String} lower-threshold 距底部/右边多远时(单位px),触发 scrolltolower 事件,默认为100rpx
-	 * @property {Boolean} refresher-enabled 是否开启自定义下拉刷新,默认为是
-	 * @property {Boolean} show-refresher-update-time 是否显示上次下拉刷新更新时间,默认为否
-	 * @property {String} refresher-update-time-key 上次下拉刷新更新时间的key,用于区别不同的上次更新时间
-	 * @property {Boolean} use-chat-record-mode 使用聊天记录模式,默认为否
-	 * @property {String} nvue-list-is nvue中修改列表类型,可选值有list、waterfall和scroller,默认为list
-	 * @property {Object} nvue-waterfall-config nvue waterfall配置,仅在nvue中且nvueListIs=waterfall时有效,配置参数详情参见:https://uniapp.dcloud.io/component/waterfall
-	 * @event {Function} query 下拉刷新或滚动到底部时会自动触发此方法。z-paging加载时也会触发(若要禁止,请设置:auto="false")。pageNo和pageSize会自动计算好,直接传给服务器即可。
-	 * @event {Function} refresherStatusChange 自定义下拉刷新状态改变(use-custom-refresher为true时生效)
-	 * @event {Function} loadingStatusChange 上拉加载更多状态改变
-	 * @event {Function} onRefresh 自定义下拉刷新被触发
-	 * @event {Function} scroll `z-paging`内置的scroll-view滚动时触发
-	 * @event {Function} scrolltolower `z-paging`内置的scroll-view滚动底部时触发
-	 * @event {Function} scrolltoupper `z-paging`内置的scroll-view滚动顶部时触发
-	 * @event {Function} listChange 分页渲染的数组改变时触发
-	 * @event {Function} emptyViewReload 点击了空数据图中的重新加载按钮
-	 * @example <z-paging ref="paging" v-model="dataList" @query="queryList"></z-paging>
-	 */
-	export default {
-		name:"z-paging",
-		// #ifdef APP-VUE || H5
-		mixins: [pagingRenderjs],
-		// #endif
-	}
-</script>
-<script src="./js/z-paging-main.js" />
-	
-<style scoped>
-	@import "./css/z-paging-main.css";
-	@import "./css/z-paging-static.css";
-</style>

+ 0 - 85
uni_modules/z-paging/package.json

@@ -1,85 +0,0 @@
-{
-  "id": "z-paging",
-  "name": "z-paging",
-  "displayName": "【z-paging下拉刷新、上拉加载】高性能,全平台兼容。支持虚拟列表,支持nvue、vue3",
-  "version": "2.3.3",
-  "description": "超简单、低耦合!使用wxs+renderjs实现。支持长列表优化,支持自定义下拉刷新、上拉加载更多,支持自动管理空数据图、点击返回顶部,支持聊天分页、本地分页,支持国际化等100+项配置",
-  "keywords": [
-    "下拉刷新",
-    "上拉加载",
-    "分页器",
-    "nvue",
-    "虚拟列表"
-],
-  "repository": "https://github.com/SmileZXLee/uni-z-paging",
-  "engines": {
-    "HBuilderX": "^3.0.7"
-  },
-  "dcloudext": {
-    "category": [
-        "前端组件",
-        "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": "393727164"
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/z-paging"
-  },
-  "uni_modules": {
-    "dependencies": [],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "y",
-          "联盟": "y"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 40
uni_modules/z-paging/readme.md

@@ -1,40 +0,0 @@
-# z-paging
-
-[![version](https://img.shields.io/badge/version-2.3.3-blue)](https://github.com/SmileZXLee/uni-z-paging)
-[![license](https://img.shields.io/github/license/SmileZXLee/uni-z-paging)](https://en.wikipedia.org/wiki/MIT_License)
-
-### API文档地址:[https://z-paging.zxlee.cn](https://z-paging.zxlee.cn)
-
-***  
-### 功能&特点
-* 【配置简单】仅需两步(绑定网络请求方法、绑定分页结果数组)轻松完成完整下拉刷新,上拉加载更多功能。
-* 【低耦合,低侵入】分页自动管理。在page中无需处理任何分页相关逻辑,无需在data中定义任何分页相关变量,全由z-paging内部处理。
-* 【超灵活,支持各种类型自定义】支持自定义下拉刷新,自定义上拉加载更多,自带自定义下拉刷新效果,及其他数十种自定义属性。
-* 【功能丰富】支持国际化,支持自定义且自动管理空数据图,支持主题模式切换,支持本地分页,支持聊天分页模式,支持展示最后更新时间,支持吸顶效果,支持内部scroll-view滚动与页面滚动,支持一键滚动到顶部等诸多功能。
-* 【全平台兼容】支持nvue,vue3,支持h5、app及各家小程序。
-* 【高性能】在app-vue、h5、微信小程序、QQ小程序上使用wxs+renderjs从视图层实现下拉刷新;支持虚拟列表,轻松渲染万级数据!
-
-*** 
-### 反馈qq群(点击加群):[790460711](https://jq.qq.com/?_wv=1027&k=vU2fKZZH)
- 
-*** 
-
-### 预览
-
-***
-
-|                 自定义下拉刷新效果+分页演示                  |                      吸顶效果+分页演示                       |
-| :----------------------------------------------------------: | :----------------------------------------------------------: |
-| ![](https://z-paging.zxlee.cn/public/img/uni-z-paging.gif) | ![](https://z-paging.zxlee.cn/public/img/uni-z-paging2.gif) |
-
-|                   滑动切换选项卡+分页演示                    |                    聊天记录模式+分页演示                     |
-| :----------------------------------------------------------: | :----------------------------------------------------------: |
-| ![](https://z-paging.zxlee.cn/public/img/z-paging-demo3.gif) | ![](https://z-paging.zxlee.cn/public/img/z-paging-demo4.gif) |
-
-### 在线demo体验地址:
-
-* [http://www.zxlee.cn/github/uni-z-paging/demo/index.html](http://www.zxlee.cn/github/uni-z-paging/demo/index.html)
-
-| 扫码体验                                                     |
-| ------------------------------------------------------------ |
-| ![](http://www.zxlee.cn/github/uni-z-paging/z-paging-demo.png) |

+ 1 - 1
utils/halo.logs.js

@@ -10,8 +10,8 @@ export const logTypesMap = {
 	BASE_CONFIG: '基础配置'
 }
 export const logUtils = {
-
 	/**
+	 * 保存日志信息
 	 * @param {Object} type 日志类型
 	 * @param {Object} msg 日志信息
 	 */

+ 1 - 1
vue.config.js

@@ -8,7 +8,7 @@ module.exports = {
 		disableHostCheck: true,
 		proxy: {
 			"/api": {
-				target: "https://b.925i.cn",
+				target: 'https://b.925i.cn',
 				changeOrigin: true,
 				secure: true,
 				pathRewrite: {

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.