From e13367edf304cb78f978e321f1679299a66b3a23 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Wed, 10 Jan 2024 16:08:18 +0800
Subject: [PATCH] fix:地图
---
uni_modules/uview-ui/libs/util/route.js | 124 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 124 insertions(+), 0 deletions(-)
diff --git a/uni_modules/uview-ui/libs/util/route.js b/uni_modules/uview-ui/libs/util/route.js
new file mode 100644
index 0000000..2afeea5
--- /dev/null
+++ b/uni_modules/uview-ui/libs/util/route.js
@@ -0,0 +1,124 @@
+/**
+ * ���������������������������������������������������uni.xxx������������������������������������
+ * ������������������������������
+ */
+
+class Router {
+ constructor() {
+ // ������������������
+ this.config = {
+ type: 'navigateTo',
+ url: '',
+ delta: 1, // navigateBack���������������,���������������
+ params: {}, // ���������������
+ animationType: 'pop-in', // ������������,������APP������
+ animationDuration: 300, // ������������������������,������������,������APP������
+ intercept: false // ������������������
+ }
+ // ������route������������������������������������������������������������route���������������this������������route���������������
+ // ������������������������������this������
+ this.route = this.route.bind(this)
+ }
+
+ // ������url���������������"/"���������������������������������������������
+ addRootPath(url) {
+ return url[0] === '/' ? url : `/${url}`
+ }
+
+ // ������������������
+ mixinParam(url, params) {
+ url = url && this.addRootPath(url)
+
+ // ���������������������������������������������������"/","?","="������������/page/index/index?name=mary"
+ // ���������url������get������������������������������"?"
+ let query = ''
+ if (/.*\/.*\?.*=.*/.test(url)) {
+ // object������������get���������������
+ query = uni.$u.queryParams(params, false)
+ // ������������get������,���������������������������������������"&"������
+ return url += `&${query}`
+ }
+ // ���������������������������������url������������������query���������������������"?/&"���������������
+ query = uni.$u.queryParams(params)
+ return url += query
+ }
+
+ // ���������������������
+ async route(options = {}, params = {}) {
+ // ���������������������������������������������
+ let mergeConfig = {}
+
+ if (typeof options === 'string') {
+ // ������options���������������������route(url, params)���������
+ mergeConfig.url = this.mixinParam(options, params)
+ mergeConfig.type = 'navigateTo'
+ } else {
+ mergeConfig = uni.$u.deepMerge(this.config, options)
+ // ������������������mergeConfig������url���params������������
+ mergeConfig.url = this.mixinParam(options.url, options.params)
+ }
+
+ // ���������������������������������������������������������������������������������������������������������������������������������������������������������
+ if (mergeConfig.url === uni.$u.page()) return
+
+ if (params.intercept) {
+ this.config.intercept = params.intercept
+ }
+ // params������������������������
+ mergeConfig.params = params
+ // ���������������������
+ mergeConfig = uni.$u.deepMerge(this.config, mergeConfig)
+ // ������������������������������������
+ if (typeof uni.$u.routeIntercept === 'function') {
+ // ���������promise���������������������resolve(true)������resolve(false)���������������������������������
+ const isNext = await new Promise((resolve, reject) => {
+ uni.$u.routeIntercept(mergeConfig, resolve)
+ })
+ // ������isNext���true������������������������
+ isNext && this.openPage(mergeConfig)
+ } else {
+ this.openPage(mergeConfig)
+ }
+ }
+
+ // ������������������
+ openPage(config) {
+ // ������������
+ const {
+ url,
+ type,
+ delta,
+ animationType,
+ animationDuration
+ } = config
+ if (config.type == 'navigateTo' || config.type == 'to') {
+ uni.navigateTo({
+ url,
+ animationType,
+ animationDuration
+ })
+ }
+ if (config.type == 'redirectTo' || config.type == 'redirect') {
+ uni.redirectTo({
+ url
+ })
+ }
+ if (config.type == 'switchTab' || config.type == 'tab') {
+ uni.switchTab({
+ url
+ })
+ }
+ if (config.type == 'reLaunch' || config.type == 'launch') {
+ uni.reLaunch({
+ url
+ })
+ }
+ if (config.type == 'navigateBack' || config.type == 'back') {
+ uni.navigateBack({
+ delta
+ })
+ }
+ }
+}
+
+export default (new Router()).route
--
Gitblit v1.8.0