Files
orion-visor/orion-visor-ui/src/router/index.ts
lijiahangmax decbce5410 🎨 格式化代码.
2025-06-26 01:27:14 +08:00

65 lines
1.6 KiB
TypeScript

import type { RouteLocationNormalized, RouteLocationRaw } from 'vue-router';
import { createRouter, createWebHistory } from 'vue-router';
import type { TagProps } from '@/store/modules/tab-bar/types';
import { appRoutes } from './routes';
import { openWindow } from '@/utils';
import { isStandaloneMode } from '@/utils/env';
import createRouteGuard from './guard';
import baseRouters from './routes/base';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
NProgress.configure({ showSpinner: false });
// 创建路由
const router = createRouter({
history: createWebHistory(),
routes: [
...baseRouters,
...appRoutes,
],
scrollBehavior() {
return { top: 0 };
},
});
// 创建路由守卫
createRouteGuard(router);
// 新页面打开路由
export const openNewRoute = (route: RouteLocationRaw) => {
const { href } = router.resolve(route);
if (isStandaloneMode) {
// 单应用 PWA 则跳转
window.location.href = href;
} else {
// 浏览器 则直接打开
openWindow(href);
}
};
// route 转 tag
export const getRouteTag = (route: RouteLocationNormalized): TagProps => {
const { name, meta, path, fullPath, query } = route;
return {
title: getRouteTitle(route),
name: String(name),
path,
fullPath,
query,
ignoreCache: meta.ignoreCache,
};
};
// 获取 router title
export const getRouteTitle = (route: RouteLocationNormalized) => {
const { meta } = route;
// 如果 meta.localeTemplate 则根据路由生成
if (meta.localeTemplate) {
return meta?.localeTemplate(route) || meta.locale || '';
}
return meta.locale || '';
};
export default router;