page.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import { ResultEnum } from '@/enums/httpEnum'
  2. import { ErrorPageNameMap, PageEnum } from '@/enums/pageEnum'
  3. import router from '@/router'
  4. import { docPath, giteeSourceCodePath } from '@/settings/pathConst'
  5. /**
  6. * * 根据名字跳转路由
  7. * @param pageName
  8. * @param isReplace
  9. * @param windowOpen
  10. */
  11. export const routerTurnByName = (
  12. pageName: string,
  13. isReplace?: boolean,
  14. windowOpen?: boolean
  15. ) => {
  16. if (windowOpen) {
  17. const path = fetchPathByName(pageName, 'href')
  18. openNewWindow(path)
  19. return
  20. }
  21. if (isReplace) {
  22. router.replace({
  23. name: pageName
  24. })
  25. return
  26. }
  27. router.push({
  28. name: pageName
  29. })
  30. }
  31. /**
  32. * * 根据名称获取路由信息
  33. * @param pageName
  34. * @param pageName
  35. */
  36. export const fetchPathByName = (pageName: string, p?: string) => {
  37. const pathData = router.resolve({
  38. name: pageName
  39. })
  40. return p ? (pathData as any)[p] : pathData
  41. }
  42. /**
  43. * * 根据路径跳转路由
  44. * @param path
  45. * @param query
  46. * @param isReplace
  47. * @param windowOpen
  48. */
  49. export const routerTurnByPath = (
  50. path: string,
  51. query?: Array<string | number>,
  52. isReplace?: boolean,
  53. windowOpen?: boolean
  54. ) => {
  55. let fullPath = ''
  56. if (query?.length) {
  57. fullPath = `${path}/${query.join('/')}`
  58. }
  59. if (windowOpen) {
  60. openNewWindow(fullPath)
  61. return
  62. }
  63. if (isReplace) {
  64. router.replace({
  65. path: fullPath
  66. })
  67. return
  68. }
  69. router.push({
  70. path: fullPath
  71. })
  72. }
  73. /**
  74. * * 错误页重定向
  75. * @param icon
  76. * @returns
  77. */
  78. export const redirectErrorPage = (code: ResultEnum) => {
  79. if (!code) return false
  80. const pageName = ErrorPageNameMap.get(code)
  81. if (!pageName) return false
  82. routerTurnByName(pageName)
  83. }
  84. /**
  85. * * 重新加载当前路由页面
  86. */
  87. export const reloadRoutePage = () => {
  88. routerTurnByName(PageEnum.RELOAD_NAME)
  89. }
  90. /**
  91. * * 退出
  92. */
  93. export const logout = () => {
  94. routerTurnByName(PageEnum.BASE_LOGIN_NAME)
  95. }
  96. /**
  97. * * 新开页面
  98. * @param url
  99. */
  100. export const openNewWindow = (url: string) => {
  101. window.open(url, 'blank')
  102. }
  103. /**
  104. * * 打开项目文档
  105. * @param url
  106. */
  107. export const openDoc = () => {
  108. openNewWindow(docPath)
  109. }
  110. /**
  111. * * 打开码云仓库地址
  112. * @param url
  113. */
  114. export const openGiteeSourceCode = () => {
  115. openNewWindow(giteeSourceCodePath)
  116. }