index.ts 1.1 KB

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