/**
|
* @author 韩天尊
|
* @time 2024-01-15
|
* @version 1.0.0
|
* @description 志愿者服务平台主应用组件
|
*/
|
import React from 'react';
|
import { Routes, Route, useLocation } from 'react-router-dom';
|
import HomePage from './views/HomePage';
|
import AdminHomePage from './views/AdminHomePage';
|
import AdminActivityListPage from './views/AdminActivityListPage';
|
import AdminActivityDetailPage from './views/AdminActivityDetailPage';
|
import AdminPointsReviewPage from './views/AdminPointsReviewPage';
|
import AdminReviewDetailPage from './views/AdminReviewDetailPage';
|
import AdminVolunteerReviewPage from './views/AdminVolunteerReviewPage';
|
import AdminVolunteerReviewDetailPage from './views/AdminVolunteerReviewDetailPage';
|
import AdminPointsRedemptionPage from './views/AdminPointsRedemptionPage';
|
import AdminActivityCreatePage from './views/AdminActivityCreatePage';
|
import PointsDeclarationPage from './views/PointsDeclarationPage';
|
import DeclarationDetailPage from './views/DeclarationDetailPage';
|
import DeclarationFormPage from './views/DeclarationFormPage';
|
import PointsQueryPage from './views/PointsQueryPage';
|
import ScanCheckinPage from './views/ScanCheckinPage';
|
import PointsRedemptionPage from './views/PointsRedemptionPage';
|
import ActivityDetailPage from './views/ActivityDetailPage';
|
import ActivityCheckinPage from './views/ActivityCheckinPage';
|
import CheckinSuccessPage from './views/CheckinSuccessPage';
|
import ProfilePage from './views/ProfilePage';
|
import MessageListPage from './views/MessageListPage';
|
import MessageDetailPage from './views/MessageDetailPage';
|
import PointsQueryDetailPage from './views/PointsQueryDetailPage';
|
import RedemptionDetailPage from './views/RedemptionDetailPage';
|
import ActivityListPage from './views/MyRegistrationsPage';
|
import VolunteerRegisterPage from './views/VolunteerRegisterPage';
|
import LoginPage from './views/LoginPage';
|
import BottomNavigation from './components/BottomNavigation';
|
import ProtectedRoute from './components/ProtectedRoute';
|
import { AppProvider } from './context/AppContext';
|
|
const AppContent: React.FC = () => {
|
const location = useLocation();
|
|
// 判断是否显示底部导航栏(只在首页和我的页面显示)
|
const shouldShowBottomNav = location.pathname === '/' || location.pathname === '/profile';
|
|
return (
|
<div className="app">
|
<Routes>
|
<Route path="/login" element={<LoginPage />} />
|
<Route path="/" element={
|
<ProtectedRoute>
|
<HomePage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin" element={
|
<ProtectedRoute>
|
<AdminHomePage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-activity-list" element={
|
<ProtectedRoute>
|
<AdminActivityListPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-activity-detail/:id" element={
|
<ProtectedRoute>
|
<AdminActivityDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-points-review" element={
|
<ProtectedRoute>
|
<AdminPointsReviewPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-review-detail/:id" element={
|
<ProtectedRoute>
|
<AdminReviewDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-volunteer-review" element={
|
<ProtectedRoute>
|
<AdminVolunteerReviewPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-volunteer-review-detail/:id" element={
|
<ProtectedRoute>
|
<AdminVolunteerReviewDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-points-redemption" element={
|
<ProtectedRoute>
|
<AdminPointsRedemptionPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/admin-activity-create" element={
|
<ProtectedRoute>
|
<AdminActivityCreatePage />
|
</ProtectedRoute>
|
} />
|
<Route path="/points-declaration" element={
|
<ProtectedRoute>
|
<PointsDeclarationPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/declaration-detail/:id" element={
|
<ProtectedRoute>
|
<DeclarationDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/declaration-form" element={
|
<ProtectedRoute>
|
<DeclarationFormPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/points-query" element={
|
<ProtectedRoute>
|
<PointsQueryPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/scan-checkin" element={
|
<ProtectedRoute>
|
<ScanCheckinPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/points-redemption" element={
|
<ProtectedRoute>
|
<PointsRedemptionPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/activity-detail/:id" element={
|
<ProtectedRoute>
|
<ActivityDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/activity-checkin/:id" element={
|
<ProtectedRoute>
|
<ActivityCheckinPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/checkin-success" element={
|
<ProtectedRoute>
|
<CheckinSuccessPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/profile" element={
|
<ProtectedRoute>
|
<ProfilePage />
|
</ProtectedRoute>
|
} />
|
<Route path="/message-list" element={
|
<ProtectedRoute>
|
<MessageListPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/message-detail/:id" element={
|
<ProtectedRoute>
|
<MessageDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/points-query-detail" element={
|
<ProtectedRoute>
|
<PointsQueryDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/redemption-detail/:id" element={
|
<ProtectedRoute>
|
<RedemptionDetailPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/my-registrations" element={
|
<ProtectedRoute>
|
<ActivityListPage />
|
</ProtectedRoute>
|
} />
|
<Route path="/volunteer-register" element={<VolunteerRegisterPage />} />
|
</Routes>
|
{shouldShowBottomNav && <BottomNavigation />}
|
</div>
|
);
|
};
|
|
const App: React.FC = () => {
|
return (
|
<AppProvider>
|
<AppContent />
|
</AppProvider>
|
);
|
};
|
|
export default App;
|