192 lines
3.8 KiB
JavaScript
192 lines
3.8 KiB
JavaScript
/**
|
||
* 路由仓库
|
||
* 统一管理页面路由配置和跳转逻辑
|
||
*/
|
||
|
||
// 页面路由配置
|
||
export const PAGE_ROUTES = {
|
||
// 主要功能页面
|
||
MONK: '/pages/monk/monk',
|
||
MONK_DETAIL: '/pages/monk/monkDetail',
|
||
WALK_INTO: '/pages/walkInto/walkInto',
|
||
INSTITUTIONAL_STRUCTURE: '/pages/institutionalStructure/institutionalStructure',
|
||
ACTIVITY: '/pages/activity/activity',
|
||
PRAY: '/pages/pray/pray',
|
||
|
||
// 待开发页面
|
||
|
||
NEWS: '/pages/news/news',
|
||
ABBOT: '/pages/abbot/abbot',
|
||
ANCIENT: '/pages/ancient/ancient',
|
||
FUTURE: '/pages/future/future',
|
||
|
||
// 其他页面
|
||
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,
|
||
monkDetail: PAGE_ROUTES.MONK_DETAIL,
|
||
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,
|
||
future: PAGE_ROUTES.FUTURE,
|
||
index: PAGE_ROUTES.INDEX,
|
||
pray: PAGE_ROUTES.PRAY,
|
||
}
|
||
|
||
/**
|
||
* 页面跳转方法
|
||
* @param {string} pageType - 页面类型
|
||
* @param {Object} options - 跳转选项
|
||
*/
|
||
export function navigateToPage(pageType, options = {}) {
|
||
// 清除loading状态
|
||
try {
|
||
uni.hideLoading()
|
||
} catch (error) {
|
||
console.warn('清除loading失败:', error)
|
||
}
|
||
|
||
const targetPage = PAGE_TYPE_MAP[pageType]
|
||
|
||
if (!targetPage) {
|
||
// 使用uni.showToast替代console,减少文件系统访问
|
||
uni.showToast({
|
||
title: '页面配置错误',
|
||
icon: 'none',
|
||
})
|
||
return
|
||
}
|
||
|
||
const defaultOptions = {
|
||
url: targetPage,
|
||
fail: err => {
|
||
// 避免在真机调试时输出过多日志
|
||
uni.showToast({
|
||
title: '页面开发中',
|
||
icon: 'none',
|
||
})
|
||
},
|
||
}
|
||
|
||
uni.navigateTo({
|
||
...defaultOptions,
|
||
...options,
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 跳转到TabBar页面
|
||
* @param {string} pageType - 页面类型
|
||
*/
|
||
export function switchToTab(pageType) {
|
||
// 清除loading状态
|
||
try {
|
||
uni.hideLoading()
|
||
} catch (error) {
|
||
console.warn('清除loading失败:', error)
|
||
}
|
||
|
||
const tabRoutes = {
|
||
index: PAGE_ROUTES.INDEX,
|
||
my: PAGE_ROUTES.MY,
|
||
}
|
||
|
||
const targetPage = tabRoutes[pageType]
|
||
|
||
if (!targetPage) {
|
||
uni.showToast({
|
||
title: '页面配置错误',
|
||
icon: 'none',
|
||
})
|
||
return
|
||
}
|
||
|
||
uni.switchTab({
|
||
url: targetPage,
|
||
fail: err => {
|
||
uni.showToast({
|
||
title: '跳转失败',
|
||
icon: 'none',
|
||
})
|
||
},
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 返回上一页
|
||
* @param {number} delta - 返回的页面数,默认为1
|
||
*/
|
||
export function navigateBack(delta = 1) {
|
||
uni.navigateBack({
|
||
delta,
|
||
fail: () => {
|
||
// 如果没有上一页,跳转到首页
|
||
switchToTab('index')
|
||
},
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 重定向到页面
|
||
* @param {string} pageType - 页面类型
|
||
*/
|
||
export function redirectToPage(pageType) {
|
||
// 清除loading状态
|
||
try {
|
||
uni.hideLoading()
|
||
} catch (error) {
|
||
console.warn('清除loading失败:', error)
|
||
}
|
||
|
||
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) {
|
||
// 清除loading状态
|
||
try {
|
||
uni.hideLoading()
|
||
} catch (error) {
|
||
console.warn('清除loading失败:', error)
|
||
}
|
||
|
||
const targetPage = PAGE_TYPE_MAP[pageType]
|
||
|
||
if (!targetPage) {
|
||
console.error('未知的页面类型:', pageType)
|
||
return
|
||
}
|
||
|
||
uni.reLaunch({
|
||
url: targetPage,
|
||
fail: err => {
|
||
console.error('页面重启失败:', err)
|
||
},
|
||
})
|
||
}
|