这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

45 lines
1.3 KiB

import { Navigate, type RouteObject, createHashRouter } from "react-router";
import { RouterProvider } from "react-router/dom";
import DashboardLayout from "@/layouts/dashboard";
import AuthGuard from "@/router/components/auth-guard";
import { usePermissionRoutes } from "@/router/hooks";
import { ErrorRoutes } from "@/router/routes/error-routes";
import PageError from "@/pages/sys/error/PageError";
import Login from "@/pages/sys/login/Login";
import { ErrorBoundary } from "react-error-boundary";
import type { AppRouteObject } from "#/router";
const { VITE_APP_HOMEPAGE: HOMEPAGE } = import.meta.env;
const LoginRoute: AppRouteObject = {
path: "/login",
element: (
<ErrorBoundary FallbackComponent={PageError}>
<Login />
</ErrorBoundary>
),
};
const PAGE_NOT_FOUND_ROUTE: AppRouteObject = {
path: "*",
element: <Navigate to="/404" replace />,
};
export default function Router() {
const permissionRoutes = usePermissionRoutes();
const asyncRoutes: AppRouteObject = {
path: "/",
element: (
<AuthGuard>
<DashboardLayout />
</AuthGuard>
),
children: [{ index: true, element: <Navigate to={HOMEPAGE} replace /> }, ...permissionRoutes],
};
const routes = [LoginRoute, asyncRoutes, ErrorRoutes, PAGE_NOT_FOUND_ROUTE];
const router = createHashRouter(routes as unknown as RouteObject[]);
return <RouterProvider router={router} />;
}