路由
uniapp 的页面需要在
page.json中定义才可进行路由跳转
路由守卫
官方路由没有提供路由守卫,导致页面跳转时无法统一进行逻辑处理,为了解决这个痛点,系统使用sard-uniapp组件库提供的路由能力,支持路由前置守卫,根据返回值进行放行、拒绝、重定向;API 使用方式与官方保持一致,详见sard-uniapp文档
在 src/router/Router.ts 中定义了路由守卫,逻辑与web端路由守卫一致,并定义了路由白名单,在名单内的路由可在未登录时访问
/**
* 无需登录即可访问的路由列表
*/
const publicRoutesList = [
// 首屏页
"/pages/splash/index",
// 登录
"/pages/login/Login",
// 注册
"/pages/login/Register",
// 隐私政策
"/subpackages/system/protocol/PrivacyPolicy",
// 用户协议
"/subpackages/system/protocol/UserAgreement"
]使用路由
与官方路由随时调用不同,本项目中想要经过路由拦截器,需要先 import router from '@/router/Router' 后使用router提供的跳转函数,函数用法与官方一致,例:
<template>
<sar-list card>
<sar-list-item title="设置" @click="toSetting" icon-family="outlined" icon="SettingOutlined" hover arrow/>
<sar-list-item title="组件" @click="toComponentList" icon-family="outlined" icon="SkinOutlined" hover arrow/>
<sar-list-item title="仓库" @click="toGitee" icon-family="custom" icon="GiteeCustom" hover arrow/>
</sar-list>
</template>
<script setup lang="ts">
// 调用前需要引入 router
import router from '@/router/Router'
// 前往gitee
const toGitee = () => {
router.navigateTo({
url: "/pages/webview/index?url=" + encodeURIComponent('https://gitee.com/yukino_git/lihua-app')
})
}
// 前往设置
const toSetting = () => {
router.navigateTo({
url: "/subpackages/system/setting/index"
})
}
// 前往组件列表
const toComponentList = () => {
router.navigateTo({
url: '/subpackages/system/components/index'
})
}
// 前往修改部门
const toChangeDept = () => {
router.navigateTo({
url: "/subpackages/system/setting/user/SaveDefaultDept"
})
}
// 前往用户设置
const toUserSetting = () => {
router.navigateTo({
url: "/subpackages/system/setting/user/index"
})
}
// 前往消息通知
const toNotice = () => {
router.navigateTo({
url: "/subpackages/system/notice/index"
})
}
</script>
