router.uts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { isLogin } from '@/utils/auth.uts'
  2. export const LOGIN_PAGE : string = '/pages/mine/mine'
  3. const WHITE_LIST : string[] = [
  4. '/pages/index/index',
  5. '/pages/category/category',
  6. '/pages/mine/mine'
  7. ]
  8. function normalize(url : string) : string {
  9. let path = url
  10. const questionIndex = path.indexOf('?')
  11. if (questionIndex > -1) {
  12. path = path.substring(0, questionIndex)
  13. }
  14. return path
  15. }
  16. function inWhiteList(path : string) : boolean {
  17. for (let i = 0; i < WHITE_LIST.length; i++) {
  18. if (WHITE_LIST[i] == path) {
  19. return true
  20. }
  21. }
  22. return false
  23. }
  24. export function canNavigate(url : string) : boolean {
  25. if (inWhiteList(normalize(url))) {
  26. return true
  27. }
  28. return isLogin()
  29. }
  30. function goLogin(from : string) : void {
  31. uni.showToast({ title: '请先登录', icon: 'none' })
  32. uni.navigateTo({ url: LOGIN_PAGE + '?redirect=' + encodeURIComponent(from) })
  33. }
  34. export function navigateTo(url : string) : void {
  35. if (!canNavigate(url)) {
  36. goLogin(url)
  37. return
  38. }
  39. uni.navigateTo({ url: url })
  40. }
  41. export function redirectTo(url : string) : void {
  42. if (!canNavigate(url)) {
  43. uni.redirectTo({ url: LOGIN_PAGE })
  44. return
  45. }
  46. uni.redirectTo({ url: url })
  47. }
  48. export function switchTab(url : string) : void {
  49. if (!canNavigate(url)) {
  50. goLogin(url)
  51. return
  52. }
  53. uni.switchTab({ url: url })
  54. }
  55. export function reLaunch(url : string) : void {
  56. if (!canNavigate(url)) {
  57. uni.reLaunch({ url: LOGIN_PAGE })
  58. return
  59. }
  60. uni.reLaunch({ url: url })
  61. }
  62. export function navigateBack(delta ?: number) : void {
  63. uni.navigateBack({ delta: delta ?? 1 })
  64. }