import { Suspense, lazy } from "react"; import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; import { App as AntApp, ConfigProvider } from "antd"; import zhCN from "antd/locale/zh_CN"; import dayjs from "dayjs"; import "dayjs/locale/zh-cn"; // ── dayjs 中文 locale ──────────────────────────────────────────────── // 必须设在应用根模块,不能下放到各页面。 // // antd 的 ConfigProvider locale 只负责「请选择日期 / 今天 / 此刻」这类**文案**; // 日期面板上的**月份与星期名**是 rc-picker 交给 dayjs 取的 —— // @rc-component/picker/es/generate/dayjs.js 里: // getShortWeekDays: locale => dayjs().locale(parseLocale(locale)).localeData().weekdaysMin() // parseLocale 把 antd 传来的 "zh_CN"(下划线)在 localeMap 未命中后按 '_' 切分, // 得到 "zh",最终查的是 dayjs 的 locale 表 —— 不注册就永远是默认的 en。 // // 此前这两行被分别写在 AdminPeoplePage / AnalyticsDashboard 两个页面里,而路由是 // lazy() 代码分割:直接打开 /admin/dashboard 或 /admin/matrix 时那两个模块根本没 // 被加载,dayjs 仍是 en,面板就露出 Sep / Su / Mo —— 表现为「有的页面中文、有的 // 页面英文」。放到根模块可保证任何路由下都先生效。 dayjs.locale("zh-cn"); import { ToastProvider } from "./components/ui/Toast"; import { AuthProvider } from "./contexts/AuthContext"; import LoadingSpinner from "./components/ui/LoadingSpinner"; // Layout 组件静态导入(始终需要,体积小) import AppLayout from "./components/layout/AppLayout"; import AdminLayout from "./components/layout/AdminLayout"; // 🚀 路由级代码分割 — 按需懒加载页面组件 const ScanPage = lazy(() => import("./pages/ScanPage")); const MyTasksPage = lazy(() => import("./pages/MyTasksPage")); const NotificationsPage = lazy(() => import("./pages/NotificationsPage")); const ProfilePage = lazy(() => import("./pages/ProfilePage")); const AdminLoginPage = lazy(() => import("./pages/admin/AdminLoginPage")); const AdminDashboard = lazy(() => import("./pages/admin/AdminDashboard")); const AdminProductsPage = lazy(() => import("./pages/admin/AdminProductsPage")); const AdminTasksPage = lazy(() => import("./pages/admin/AdminTasksPage")); const AdminPeoplePage = lazy(() => import("./pages/admin/AdminPeoplePage")); const AdminPrintConfigPage = lazy(() => import("./pages/admin/AdminPrintConfigPage")); const AnalyticsDashboard = lazy(() => import("./pages/admin/AnalyticsDashboard")); const MatrixBoard = lazy(() => import("./pages/MatrixBoard")); const ScreenDashboard = lazy(() => import("./pages/admin/ScreenDashboard")); export default function App() { return ( }> {/* 移动端 */} } /> }> } /> } /> } /> } /> {/* PC 管理端 — 登录页(独立,无侧边栏) */} } /> {/* PC 管理端 — 管理层数据大屏(独立全屏,无侧边栏,组件内自带鉴权守卫) */} } /> {/* PC 管理端 — 需要登录 */} } /> }> } /> } /> } /> } /> } /> } /> } /> ); }