Files
rent/apps/platform-admin/src/App.tsx
T
2026-04-24 00:28:52 +08:00

56 lines
2.5 KiB
TypeScript

import React from 'react';
import { Suspense } from 'react';
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
import { ConfigProvider } from 'antd';
import zhCN from 'antd/locale/zh_CN';
import MainLayout from '@/layouts/MainLayout';
import Login from '@/pages/Login';
import Dashboard from '@/pages/Dashboard';
import MerchantList from '@/pages/MerchantList';
import RoomAudit from '@/pages/RoomAudit';
import UserList from '@/pages/UserList';
import OrderList from '@/pages/OrderList';
import Promotion from '@/pages/Promotion';
import SystemSettings from '@/pages/SystemSettings';
import FinanceSettlements from '@/pages/finance/Settlements';
import FinanceWithdrawals from '@/pages/finance/Withdrawals';
import FinanceEarnings from '@/pages/finance/Earnings';
import InviteManage from '@/pages/InviteManage';
const ProtectedRoute: React.FC<{ children: React.ReactNode }> = ({ children }) => {
const token = localStorage.getItem('admin_token');
if (!token) return <Navigate to="/login" replace />;
return <>{children}</>;
};
const App: React.FC = () => (
<ConfigProvider locale={zhCN} theme={{ token: { colorPrimary: '#1890ff' } }}>
<BrowserRouter>
<Suspense fallback={<div style={{ textAlign: 'center', padding: 100 }}>...</div>}>
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/" element={<ProtectedRoute><MainLayout /></ProtectedRoute>}>
<Route index element={<Navigate to="/dashboard" replace />} />
<Route path="dashboard" element={<Dashboard />} />
<Route path="merchants" element={<MerchantList />} />
<Route path="room-audit" element={<RoomAudit />} />
<Route path="users" element={<UserList />} />
<Route path="orders" element={<OrderList />} />
<Route path="finance">
<Route index element={<Navigate to="/finance/settlements" replace />} />
<Route path="settlements" element={<FinanceSettlements />} />
<Route path="withdrawals" element={<FinanceWithdrawals />} />
<Route path="earnings" element={<FinanceEarnings />} />
</Route>
<Route path="invite" element={<InviteManage />} />
<Route path="promotions" element={<Promotion />} />
<Route path="settings" element={<SystemSettings />} />
</Route>
</Routes>
</Suspense>
</BrowserRouter>
</ConfigProvider>
);
export default App;