路由跳转的封装

This commit is contained in:
minimaxagent1 2025-07-30 10:10:31 +08:00
parent 99d660b23a
commit c430e7da64
3 changed files with 159 additions and 27 deletions

View File

@ -17,6 +17,8 @@
</template>
<script>
import { navigateToPage } from "../../utils/router.js";
export default {
data() {
return {
@ -63,9 +65,9 @@
});
},
async ceshi() {
uni.navigateTo({
url: '/pages/nearbystores/index'
})
// 使
navigateToPage('index');
},
}
}

View File

@ -128,6 +128,8 @@
<script>
import NearbyImageEnum from "../../enum/nearbyEnum";
import { navigateToPage } from "../../utils/router.js";
export default {
data() {
return {
@ -156,31 +158,9 @@ import NearbyImageEnum from "../../enum/nearbyEnum";
}
}, 16); // 60
},
//
// - 使
navigateToPage(pageType) {
const pageMap = {
'monk': '/pages/Monk/Monk',
'activity': '/pages/activity/activity', //
'news': '/pages/news/news', //
'walkInto': '/pages/walkInto/walkInto',
'institutionalStructure': '/pages/institutionalStructure/institutionalStructure',
'abbot': '/pages/abbot/abbot', //
'ancient': '/pages/ancient/ancient' //
};
const targetPage = pageMap[pageType];
if (targetPage) {
uni.navigateTo({
url: targetPage,
fail: (err) => {
console.error('页面跳转失败:', err);
uni.showToast({
title: '页面开发中',
icon: 'none'
});
}
});
}
navigateToPage(pageType);
}
}
}

150
utils/router.js Normal file
View File

@ -0,0 +1,150 @@
/**
* 路由仓库
* 统一管理页面路由配置和跳转逻辑
*/
// 页面路由配置
export const PAGE_ROUTES = {
// 主要功能页面
MONK: '/pages/Monk/Monk',
WALK_INTO: '/pages/walkInto/walkInto',
INSTITUTIONAL_STRUCTURE: '/pages/institutionalStructure/institutionalStructure',
// 待开发页面
ACTIVITY: '/pages/activity/activity',
NEWS: '/pages/news/news',
ABBOT: '/pages/abbot/abbot',
ANCIENT: '/pages/ancient/ancient',
// 其他页面
LOGIN: '/pages/login/login',
INDEX: '/pages/nearbystores/index',
MY: '/pages/my/my',
MY_ORDER: '/pages/myorder/index',
MY_ORDER_RETURNED: '/pages/myorder/returned/index'
};
// 页面类型映射
export const PAGE_TYPE_MAP = {
'monk': PAGE_ROUTES.MONK,
'walkInto': PAGE_ROUTES.WALK_INTO,
'institutionalStructure': PAGE_ROUTES.INSTITUTIONAL_STRUCTURE,
'activity': PAGE_ROUTES.ACTIVITY,
'news': PAGE_ROUTES.NEWS,
'abbot': PAGE_ROUTES.ABBOT,
'ancient': PAGE_ROUTES.ANCIENT,
'index': PAGE_ROUTES.INDEX,
};
/**
* 页面跳转方法
* @param {string} pageType - 页面类型
* @param {Object} options - 跳转选项
*/
export function navigateToPage(pageType, options = {}) {
const targetPage = PAGE_TYPE_MAP[pageType];
if (!targetPage) {
console.error('未知的页面类型:', pageType);
uni.showToast({
title: '页面配置错误',
icon: 'none'
});
return;
}
const defaultOptions = {
url: targetPage,
fail: (err) => {
console.error('页面跳转失败:', err);
uni.showToast({
title: '页面开发中',
icon: 'none'
});
}
};
uni.navigateTo({
...defaultOptions,
...options
});
}
/**
* 跳转到TabBar页面
* @param {string} pageType - 页面类型
*/
export function switchToTab(pageType) {
const tabRoutes = {
'index': PAGE_ROUTES.INDEX,
'my': PAGE_ROUTES.MY
};
const targetPage = tabRoutes[pageType];
if (!targetPage) {
console.error('未知的TabBar页面类型:', pageType);
return;
}
uni.switchTab({
url: targetPage,
fail: (err) => {
console.error('TabBar页面跳转失败:', err);
}
});
}
/**
* 返回上一页
* @param {number} delta - 返回的页面数默认为1
*/
export function navigateBack(delta = 1) {
uni.navigateBack({
delta,
fail: () => {
// 如果没有上一页,跳转到首页
switchToTab('index');
}
});
}
/**
* 重定向到页面
* @param {string} pageType - 页面类型
*/
export function redirectToPage(pageType) {
const targetPage = PAGE_TYPE_MAP[pageType];
if (!targetPage) {
console.error('未知的页面类型:', pageType);
return;
}
uni.redirectTo({
url: targetPage,
fail: (err) => {
console.error('页面重定向失败:', err);
}
});
}
/**
* 重新启动到页面
* @param {string} pageType - 页面类型
*/
export function reLaunchToPage(pageType) {
const targetPage = PAGE_TYPE_MAP[pageType];
if (!targetPage) {
console.error('未知的页面类型:', pageType);
return;
}
uni.reLaunch({
url: targetPage,
fail: (err) => {
console.error('页面重启失败:', err);
}
});
}