Files
hfb_jysh/frontend/src/app/AppRouter.tsx
T

536 lines
21 KiB
TypeScript

import { lazy, Suspense } from 'react'
import { Route, Routes } from 'react-router-dom'
import { PageLoading } from '@/components/PageLoading'
import { NotFoundPage } from '@/features/NotFoundPage'
import { StorefrontLayout } from '@/layouts/StorefrontLayout'
const ListingListPage = lazy(() =>
import('@/features/listings/ListingListPage').then(module => ({ default: module.ListingListPage }))
)
const ListingDetailPage = lazy(() =>
import('@/features/listings/ListingDetailPage').then(module => ({
default: module.ListingDetailPage,
}))
)
const SellerListingsPage = lazy(() =>
import('@/features/seller/SellerListingsPage').then(module => ({
default: module.SellerListingsPage,
}))
)
const SellerListingDetailPage = lazy(() =>
import('@/features/seller/SellerListingDetailPage').then(module => ({
default: module.SellerListingDetailPage,
}))
)
const SellerListingFormPage = lazy(() =>
import('@/features/seller/SellerListingFormPage').then(module => ({
default: module.SellerListingFormPage,
}))
)
const SellerHandoffsPage = lazy(() =>
import('@/features/seller/SellerHandoffsPage').then(module => ({
default: module.SellerHandoffsPage,
}))
)
const SellerEarningsPage = lazy(() =>
import('@/features/seller/SellerEarningsPage').then(module => ({
default: module.SellerEarningsPage,
}))
)
const SellerPickupsPage = lazy(() =>
import('@/features/seller/SellerPickupsPage').then(module => ({
default: module.SellerPickupsPage,
}))
)
const OrderListPage = lazy(() =>
import('@/features/orders/OrderListPage').then(module => ({ default: module.OrderListPage }))
)
const OrderDetailPage = lazy(() =>
import('@/features/orders/OrderDetailPage').then(module => ({ default: module.OrderDetailPage }))
)
const WalletPage = lazy(() =>
import('@/features/wallet/WalletPage').then(module => ({ default: module.WalletPage }))
)
const PaymentAccountsPage = lazy(() =>
import('@/features/wallet/PaymentAccountsPage').then(module => ({
default: module.PaymentAccountsPage,
}))
)
const WithdrawalPage = lazy(() =>
import('@/features/wallet/WithdrawalPage').then(module => ({ default: module.WithdrawalPage }))
)
const AnnouncementsPage = lazy(() =>
import('@/features/announcements/AnnouncementsPage').then(module => ({
default: module.AnnouncementsPage,
}))
)
const AnnouncementDetailPage = lazy(() =>
import('@/features/announcements/AnnouncementDetailPage').then(module => ({
default: module.AnnouncementDetailPage,
}))
)
const NotificationsPage = lazy(() =>
import('@/features/notifications/NotificationsPage').then(module => ({
default: module.NotificationsPage,
}))
)
const InvitationsPage = lazy(() =>
import('@/features/invitations/InvitationsPage').then(module => ({
default: module.InvitationsPage,
}))
)
const MessagesPage = lazy(() =>
import('@/features/messages/MessagesPage').then(module => ({ default: module.MessagesPage }))
)
const ChatPage = lazy(() =>
import('@/features/messages/ChatPage').then(module => ({ default: module.ChatPage }))
)
const LoginPage = lazy(() =>
import('@/features/auth/LoginPage').then(module => ({ default: module.LoginPage }))
)
const MobileLayout = lazy(() =>
import('@/layouts/MobileLayout').then(module => ({ default: module.MobileLayout }))
)
const MobileHomePage = lazy(() =>
import('@/features/mobile/MobileHomePage').then(module => ({ default: module.MobileHomePage }))
)
const MobileListingDetailPage = lazy(() =>
import('@/features/mobile/MobileListingDetailPage').then(module => ({
default: module.MobileListingDetailPage,
}))
)
const MobileProfilePage = lazy(() =>
import('@/features/mobile/MobileProfilePage').then(module => ({
default: module.MobileProfilePage,
}))
)
const MobileWithdrawalPage = lazy(() =>
import('@/features/mobile/MobileWithdrawalPage').then(module => ({
default: module.MobileWithdrawalPage,
}))
)
const MobileAnnouncementsPage = lazy(() =>
import('@/features/mobile/MobileAnnouncementsPage').then(module => ({
default: module.MobileAnnouncementsPage,
}))
)
const MobileNotificationsPage = lazy(() =>
import('@/features/mobile/MobileNotificationsPage').then(module => ({
default: module.MobileNotificationsPage,
}))
)
const MobileInvitationsPage = lazy(() =>
import('@/features/mobile/MobileInvitationsPage').then(module => ({
default: module.MobileInvitationsPage,
}))
)
const MobileOrdersPage = lazy(() =>
import('@/features/mobile/MobileOrdersPage').then(module => ({
default: module.MobileOrdersPage,
}))
)
const MobileOrderDetailPage = lazy(() =>
import('@/features/mobile/MobileOrderDetailPage').then(module => ({
default: module.MobileOrderDetailPage,
}))
)
const MobileMessagesPage = lazy(() =>
import('@/features/mobile/MobileMessagesPage').then(module => ({
default: module.MobileMessagesPage,
}))
)
const MobileChatPage = lazy(() =>
import('@/features/mobile/MobileChatPage').then(module => ({
default: module.MobileChatPage,
}))
)
const MobileRealnamePage = lazy(() =>
import('@/features/mobile/MobileRealnamePage').then(module => ({
default: module.MobileRealnamePage,
}))
)
const MobileSellerListingsPage = lazy(() =>
import('@/features/mobile/MobileSellerListingsPage').then(module => ({
default: module.MobileSellerListingsPage,
}))
)
const MobileSellerListingDetailPage = lazy(() =>
import('@/features/mobile/MobileSellerListingDetailPage').then(module => ({
default: module.MobileSellerListingDetailPage,
}))
)
const MobileSellerFormPage = lazy(() =>
import('@/features/mobile/MobileSellerFormPage').then(module => ({
default: module.MobileSellerFormPage,
}))
)
const AdminLoginPage = lazy(() =>
import('@/features/admin/AdminLoginPage').then(module => ({ default: module.AdminLoginPage }))
)
const AdminGuard = lazy(() =>
import('@/features/admin/AdminGuard').then(module => ({ default: module.AdminGuard }))
)
const AdminChangePasswordPage = lazy(() =>
import('@/features/admin/AdminChangePasswordPage').then(module => ({
default: module.AdminChangePasswordPage,
}))
)
const AdminDashboardPage = lazy(() =>
import('@/features/admin/AdminDashboardPage').then(module => ({
default: module.AdminDashboardPage,
}))
)
const AdminOrdersPage = lazy(() =>
import('@/features/admin/AdminOrdersPage').then(module => ({
default: module.AdminOrdersPage,
}))
)
const AdminListingsPage = lazy(() =>
import('@/features/admin/AdminListingsPage').then(module => ({
default: module.AdminListingsPage,
}))
)
const AdminUsersPage = lazy(() =>
import('@/features/admin/AdminUsersPage').then(module => ({
default: module.AdminUsersPage,
}))
)
const AdminRefundReviewPage = lazy(() =>
import('@/features/admin/AdminRefundReviewPage').then(module => ({
default: module.AdminRefundReviewPage,
}))
)
const AdminWithdrawalsPage = lazy(() =>
import('@/features/admin/AdminWithdrawalsPage').then(module => ({
default: module.AdminWithdrawalsPage,
}))
)
const AdminDisputesPage = lazy(() =>
import('@/features/admin/AdminDisputesPage').then(module => ({
default: module.AdminDisputesPage,
}))
)
const AdminFinancePage = lazy(() =>
import('@/features/admin/AdminFinancePage').then(module => ({
default: module.AdminFinancePage,
}))
)
const AdminFinanceDisbursementsPage = lazy(() =>
import('@/features/admin/AdminFinanceDisbursementsPage').then(module => ({
default: module.AdminFinanceDisbursementsPage,
}))
)
const AdminOperatingExpensesPage = lazy(() =>
import('@/features/admin/AdminOperatingExpensesPage').then(module => ({
default: module.AdminOperatingExpensesPage,
}))
)
const AdminAnnouncementsPage = lazy(() =>
import('@/features/admin/AdminAnnouncementsPage').then(module => ({
default: module.AdminAnnouncementsPage,
}))
)
const AdminAuditLogsPage = lazy(() =>
import('@/features/admin/AdminAuditLogsPage').then(module => ({
default: module.AdminAuditLogsPage,
}))
)
const AdminSystemConfigsPage = lazy(() =>
import('@/features/admin/AdminSystemConfigsPage').then(module => ({
default: module.AdminSystemConfigsPage,
}))
)
const AdminPaymentConfigsPage = lazy(() =>
import('@/features/admin/AdminPaymentConfigsPage').then(module => ({
default: module.AdminPaymentConfigsPage,
}))
)
const AdminRolesPage = lazy(() =>
import('@/features/admin/AdminRolesPage').then(module => ({
default: module.AdminRolesPage,
}))
)
const AdminSupportGroupsPage = lazy(() =>
import('@/features/admin/AdminSupportGroupsPage').then(module => ({
default: module.AdminSupportGroupsPage,
}))
)
const AdminStaffAccountsPage = lazy(() =>
import('@/features/admin/AdminStaffAccountsPage').then(module => ({
default: module.AdminStaffAccountsPage,
}))
)
const AdminManualEntriesPage = lazy(() =>
import('@/features/admin/AdminManualEntriesPage').then(module => ({
default: module.AdminManualEntriesPage,
}))
)
const AdminPaymentsPage = lazy(() =>
import('@/features/admin/AdminPaymentsPage').then(module => ({
default: module.AdminPaymentsPage,
}))
)
const AdminPickupsPage = lazy(() =>
import('@/features/admin/AdminPickupsPage').then(module => ({
default: module.AdminPickupsPage,
}))
)
const AdminChatsPage = lazy(() =>
import('@/features/admin/AdminChatsPage').then(module => ({
default: module.AdminChatsPage,
}))
)
const AdminQrCodePoolPage = lazy(() =>
import('@/features/admin/AdminQrCodePoolPage').then(module => ({
default: module.AdminQrCodePoolPage,
}))
)
const AdminNotificationsPage = lazy(() =>
import('@/features/admin/AdminNotificationsPage').then(module => ({
default: module.AdminNotificationsPage,
}))
)
const AdminPushPage = lazy(() =>
import('@/features/admin/AdminPushPage').then(module => ({
default: module.AdminPushPage,
}))
)
const AdminInvitationsPage = lazy(() =>
import('@/features/admin/AdminInvitationsPage').then(module => ({
default: module.AdminInvitationsPage,
}))
)
const AdminPickupDetailPage = lazy(() =>
import('@/features/admin/AdminPickupDetailPage').then(module => ({
default: module.AdminPickupDetailPage,
}))
)
const AdminFinanceDetailsPage = lazy(() =>
import('@/features/admin/AdminFinanceDetailsPage').then(module => ({
default: module.AdminFinanceDetailsPage,
}))
)
const AdminWalletLedgerPage = lazy(() =>
import('@/features/admin/AdminWalletLedgerPage').then(module => ({
default: module.AdminWalletLedgerPage,
}))
)
const AdminQuickRepliesPage = lazy(() =>
import('@/features/admin/AdminQuickRepliesPage').then(module => ({
default: module.AdminQuickRepliesPage,
}))
)
const AdminTrackingLinksPage = lazy(() =>
import('@/features/admin/AdminTrackingLinksPage').then(module => ({
default: module.AdminTrackingLinksPage,
}))
)
const AdminDistributionSitesPage = lazy(() =>
import('@/features/admin/AdminDistributionSitesPage').then(module => ({
default: module.AdminDistributionSitesPage,
}))
)
const AdminDistributionWalletPage = lazy(() =>
import('@/features/admin/AdminDistributionWalletPage').then(module => ({
default: module.AdminDistributionWalletPage,
}))
)
const AdminDistributionDashboardPage = lazy(() =>
import('@/features/admin/AdminDistributionDashboardPage').then(module => ({
default: module.AdminDistributionDashboardPage,
}))
)
const AdminDistributionSMSPage = lazy(() =>
import('@/features/admin/AdminDistributionSMSPage').then(module => ({
default: module.AdminDistributionSMSPage,
}))
)
const AdminDistributionInvitationPage = lazy(() =>
import('@/features/admin/AdminDistributionInvitationPage').then(module => ({
default: module.AdminDistributionInvitationPage,
}))
)
const AdminDistributionQrCodesPage = lazy(() =>
import('@/features/admin/AdminDistributionQrCodesPage').then(module => ({
default: module.AdminDistributionQrCodesPage,
}))
)
const AdminDistributionRulesPage = lazy(() =>
import('@/features/admin/AdminDistributionRulesPage').then(module => ({
default: module.AdminDistributionRulesPage,
}))
)
const AdminDistributionOrdersPage = lazy(() =>
import('@/features/admin/AdminDistributionOrdersPage').then(module => ({
default: module.AdminDistributionOrdersPage,
}))
)
const AdminDistributionSettlementsPage = lazy(() =>
import('@/features/admin/AdminDistributionSettlementsPage').then(module => ({
default: module.AdminDistributionSettlementsPage,
}))
)
const AdminDistributionUsersPage = lazy(() =>
import('@/features/admin/AdminDistributionUsersPage').then(module => ({
default: module.AdminDistributionUsersPage,
}))
)
const AdminSiteAnnouncementsPage = lazy(() =>
import('@/features/admin/AdminSiteAnnouncementsPage').then(module => ({
default: module.AdminSiteAnnouncementsPage,
}))
)
const AdminDistributionListingsPage = lazy(() =>
import('@/features/admin/AdminDistributionListingsPage').then(module => ({
default: module.AdminDistributionListingsPage,
}))
)
const AdminDistributionPaymentChannelsPage = lazy(() =>
import('@/features/admin/AdminDistributionPaymentChannelsPage').then(module => ({
default: module.AdminDistributionPaymentChannelsPage,
}))
)
const AdminLayout = lazy(() =>
import('@/layouts/AdminLayout').then(module => ({ default: module.AdminLayout }))
)
const AdminSectionPlaceholder = lazy(() =>
import('@/layouts/AdminLayout').then(module => ({ default: module.AdminSectionPlaceholder }))
)
export function AppRouter() {
const adminBase = import.meta.env.VITE_ADMIN_BASE_PATH || '/console-jy8k3m'
return (
<Suspense fallback={<PageLoading />}>
<Routes>
<Route element={<StorefrontLayout />}>
<Route index element={<ListingListPage />} />
<Route path="listings/:id" element={<ListingDetailPage />} />
<Route path="orders" element={<OrderListPage />} />
<Route path="orders/:id" element={<OrderDetailPage />} />
<Route path="wallet" element={<WalletPage />} />
<Route path="wallet/payment-accounts" element={<PaymentAccountsPage />} />
<Route path="wallet/withdrawal" element={<WithdrawalPage />} />
<Route path="announcements" element={<AnnouncementsPage />} />
<Route path="announcements/:id" element={<AnnouncementDetailPage />} />
<Route path="notifications" element={<NotificationsPage />} />
<Route path="invitations" element={<InvitationsPage />} />
<Route path="messages" element={<MessagesPage />} />
<Route path="messages/:id" element={<ChatPage />} />
<Route path="seller/listings" element={<SellerListingsPage />} />
<Route path="seller/listings/new" element={<SellerListingFormPage />} />
<Route path="seller/listings/:id" element={<SellerListingDetailPage />} />
<Route path="seller/listings/:id/edit" element={<SellerListingFormPage />} />
<Route path="seller/handoffs" element={<SellerHandoffsPage />} />
<Route path="seller/earnings" element={<SellerEarningsPage />} />
<Route path="seller/pickups" element={<SellerPickupsPage />} />
</Route>
<Route path="/login" element={<LoginPage />} />
<Route path="/m/login" element={<LoginPage />} />
<Route path="/m" element={<MobileLayout />}>
<Route index element={<MobileHomePage />} />
<Route path="listings" element={<MobileHomePage />} />
<Route path="listings/:id" element={<MobileListingDetailPage />} />
<Route path="orders" element={<MobileOrdersPage />} />
<Route path="orders/:id" element={<MobileOrderDetailPage />} />
<Route path="messages" element={<MobileMessagesPage />} />
<Route path="messages/:id" element={<MobileChatPage />} />
<Route path="realname" element={<MobileRealnamePage />} />
<Route path="seller/listings" element={<MobileSellerListingsPage />} />
<Route path="seller/listings/new" element={<MobileSellerFormPage />} />
<Route path="seller/listings/:id" element={<MobileSellerListingDetailPage />} />
<Route path="seller/listings/:id/edit" element={<MobileSellerFormPage />} />
<Route path="profile" element={<MobileProfilePage />} />
<Route path="wallet/withdrawal" element={<MobileWithdrawalPage />} />
<Route path="announcements" element={<MobileAnnouncementsPage />} />
<Route path="notifications" element={<MobileNotificationsPage />} />
<Route path="invitations" element={<MobileInvitationsPage />} />
</Route>
<Route path={`${adminBase}/login`} element={<AdminLoginPage />} />
<Route path={adminBase} element={<AdminGuard />}>
<Route path="change-password" element={<AdminChangePasswordPage />} />
<Route element={<AdminLayout />}>
<Route index element={<AdminDashboardPage />} />
<Route path="orders" element={<AdminOrdersPage />} />
<Route path="orders/refund-review" element={<AdminRefundReviewPage />} />
<Route path="listings" element={<AdminListingsPage />} />
<Route path="listings/review" element={<AdminListingsPage mode="review" />} />
<Route path="users" element={<AdminUsersPage />} />
<Route path="withdrawals" element={<AdminWithdrawalsPage />} />
<Route path="disputes" element={<AdminDisputesPage />} />
<Route path="finance" element={<AdminFinancePage />} />
<Route path="finance/disbursements" element={<AdminFinanceDisbursementsPage />} />
<Route path="finance/operating-expenses" element={<AdminOperatingExpensesPage />} />
<Route path="announcements" element={<AdminAnnouncementsPage />} />
<Route path="audit-logs" element={<AdminAuditLogsPage />} />
<Route path="system-configs" element={<AdminSystemConfigsPage />} />
<Route path="payment-configs" element={<AdminPaymentConfigsPage />} />
<Route path="roles" element={<AdminRolesPage />} />
<Route path="admin-users" element={<AdminStaffAccountsPage />} />
<Route path="manual-entries" element={<AdminManualEntriesPage />} />
<Route path="payments" element={<AdminPaymentsPage />} />
<Route path="pickup" element={<AdminPickupsPage />} />
<Route path="pickup/:id" element={<AdminPickupDetailPage />} />
<Route path="chats" element={<AdminChatsPage />} />
<Route path="qrcode-pool" element={<AdminQrCodePoolPage />} />
<Route path="notifications" element={<AdminNotificationsPage />} />
<Route path="push" element={<AdminPushPage />} />
<Route path="invitations" element={<AdminInvitationsPage />} />
<Route path="finance/details" element={<AdminFinanceDetailsPage />} />
<Route path="wallet-ledger" element={<AdminWalletLedgerPage />} />
<Route path="chat-quick-replies" element={<AdminQuickRepliesPage />} />
<Route path="tracking-links" element={<AdminTrackingLinksPage />} />
<Route path="chat-support-groups" element={<AdminSupportGroupsPage />} />
<Route path="distribution/sites" element={<AdminDistributionSitesPage />} />
<Route
path="distribution/dashboard"
element={<AdminDistributionDashboardPage />}
/>
<Route path="distribution/orders" element={<AdminDistributionOrdersPage />} />
<Route
path="distribution/settlements"
element={<AdminDistributionSettlementsPage />}
/>
<Route path="distribution/users" element={<AdminDistributionUsersPage />} />
<Route
path="distribution/announcements"
element={<AdminSiteAnnouncementsPage />}
/>
<Route
path="distribution/listings"
element={<AdminDistributionListingsPage />}
/>
<Route
path="distribution/payment-channels"
element={<AdminDistributionPaymentChannelsPage />}
/>
<Route path="distribution/wallet" element={<AdminDistributionWalletPage />} />
<Route path="distribution/sms" element={<AdminDistributionSMSPage />} />
<Route
path="distribution/invitation"
element={<AdminDistributionInvitationPage />}
/>
<Route path="distribution/qrcodes" element={<AdminDistributionQrCodesPage />} />
<Route path="distribution/rules" element={<AdminDistributionRulesPage />} />
<Route
path="*"
element={
<AdminSectionPlaceholder
title="功能建设中"
description="这个后台页面还没有进入迁移批次。"
/>
}
/>
</Route>
</Route>
<Route path="*" element={<NotFoundPage />} />
</Routes>
</Suspense>
)
}