1
0

index.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import type { RouteRecordRaw } from 'vue-router';
  2. import type { App } from 'vue';
  3. import { createRouter, createWebHashHistory } from 'vue-router';
  4. import { scrollWaiter } from './scrollWaiter';
  5. import { createGuard } from './guard/';
  6. import { basicRoutes } from './routes/';
  7. // app router
  8. const router = createRouter({
  9. history: createWebHashHistory(),
  10. routes: basicRoutes as RouteRecordRaw[],
  11. strict: true,
  12. scrollBehavior: async (to, from, savedPosition) => {
  13. await scrollWaiter.wait();
  14. if (savedPosition) {
  15. return savedPosition;
  16. } else {
  17. if (to.matched.every((record, i) => from.matched[i] !== record)) {
  18. return { left: 0, top: 0 };
  19. }
  20. return false;
  21. }
  22. },
  23. });
  24. // reset router
  25. export function resetRouter() {
  26. const resetWhiteNameList = [
  27. 'Login',
  28. 'Root',
  29. // 'FullErrorPage'
  30. ];
  31. router.getRoutes().forEach((route) => {
  32. const { name } = route;
  33. if (name && !resetWhiteNameList.includes(name as string)) {
  34. router.hasRoute(name) && router.removeRoute(name);
  35. }
  36. });
  37. }
  38. // config router
  39. export function setupRouter(app: App<Element>) {
  40. app.use(router);
  41. createGuard(router);
  42. }
  43. export default router;