feat: 完成 R13/R14/R15/R16 小团队管理核心能力

这个提交包含在:
2026-03-21 20:31:34 +08:00
父节点 0826693a8f
当前提交 1e52f1c225
共修改 47 个文件,包含 4298 行新增和 306 行删除
+41
查看文件
@@ -13,9 +13,11 @@ import { ProfilePage } from "../pages/ProfilePage";
import {
ApOperationsPage,
ApprovalRulesPage,
AnnouncementsPage,
AssetRegistryPage,
AuditLogsPage,
CutoverConsolePage,
EmployeeProfilePage,
DelegationsPage,
DepartmentsPage,
ErpIntegrationPage,
@@ -30,13 +32,19 @@ import {
NotificationChannelsPage,
NotificationsPage,
PaymentBatchesPage,
PeoplePage,
PortalAnnouncementsPage,
PortalHomePage,
SystemSettingsPage,
TeamPresencePage,
TodosPage,
PurchaseRequestsPage,
ReimbursementDetailPage,
ReimbursementsPage,
TravelRequestsPage,
UserManagementPage,
WeeklyReportsPage,
WorkspaceSetupPage,
WorkflowDefinitionsPage,
WorkflowTaskDetailPage,
WorkflowTasksPage,
@@ -82,6 +90,10 @@ export function AppRouter() {
>
<Route index element={<Navigate to="/portal" replace />} />
<Route path="portal" element={withRouteFallback(<PortalHomePage />)} />
<Route path="announcements" element={withRouteFallback(<AnnouncementsPage />)} />
<Route path="team" element={withRouteFallback(<TeamPresencePage />)} />
<Route path="weekly-reports" element={withRouteFallback(<WeeklyReportsPage />)} />
<Route path="todos" element={withRouteFallback(<TodosPage />)} />
<Route path="dashboard" element={<DashboardPage />} />
<Route
@@ -263,6 +275,17 @@ export function AppRouter() {
}
/>
<Route
path="people"
element={
<RequirePermission anyOf={["system.users", "report.dashboard.view"]}>
{withRouteFallback(<PeoplePage />)}
</RequirePermission>
}
/>
<Route path="people/:employeeId" element={withRouteFallback(<EmployeeProfilePage />)} />
<Route
path="system/users"
element={
@@ -308,6 +331,24 @@ export function AppRouter() {
}
/>
<Route
path="system/workspace"
element={
<RequirePermission anyOf={["system.settings"]}>
{withRouteFallback(<WorkspaceSetupPage />)}
</RequirePermission>
}
/>
<Route
path="system/settings"
element={
<RequirePermission anyOf={["system.settings", "system.users", "masterdata.view", "masterdata.manage", "notification.channel.manage", "integration.manage"]}>
{withRouteFallback(<SystemSettingsPage />)}
</RequirePermission>
}
/>
<Route
path="system/approval-rules"
element={
@@ -0,0 +1 @@
export { AnnouncementsPage as default } from "../../pages/AnnouncementsPage";
@@ -0,0 +1 @@
export { EmployeeProfilePage as default } from "../../pages/EmployeeProfilePage";
+1
查看文件
@@ -0,0 +1 @@
export { PeoplePage as default } from "../../pages/PeoplePage";
@@ -0,0 +1 @@
export { SystemSettingsPage as default } from "../../pages/SystemSettingsPage";
@@ -0,0 +1 @@
export { TeamPresencePage as default } from "../../pages/TeamPresencePage";
+1
查看文件
@@ -0,0 +1 @@
export { TodosPage as default } from "../../pages/TodosPage";
@@ -0,0 +1 @@
export { WeeklyReportsPage as default } from "../../pages/WeeklyReportsPage";
@@ -0,0 +1 @@
export { WorkspaceSetupPage as default } from "../../pages/WorkspaceSetupPage";
+8
查看文件
@@ -18,7 +18,15 @@ export const MobileAssetScanPage = lazy(() => import("./MobileAssetScanPage"));
export const MobileCapturePage = lazy(() => import("./MobileCapturePage"));
export const NotificationChannelsPage = lazy(() => import("./NotificationChannelsPage"));
export const NotificationsPage = lazy(() => import("./NotificationsPage"));
export const AnnouncementsPage = lazy(() => import("./AnnouncementsPage"));
export const PaymentBatchesPage = lazy(() => import("./PaymentBatchesPage"));
export const PeoplePage = lazy(() => import("./PeoplePage"));
export const EmployeeProfilePage = lazy(() => import("./EmployeeProfilePage"));
export const TeamPresencePage = lazy(() => import("./TeamPresencePage"));
export const WeeklyReportsPage = lazy(() => import("./WeeklyReportsPage"));
export const TodosPage = lazy(() => import("./TodosPage"));
export const WorkspaceSetupPage = lazy(() => import("./WorkspaceSetupPage"));
export const SystemSettingsPage = lazy(() => import("./SystemSettingsPage"));
export const PortalAnnouncementsPage = lazy(() => import("./PortalAnnouncementsPage"));
export const PortalHomePage = lazy(() => import("./PortalHomePage"));
export const PurchaseRequestsPage = lazy(() => import("./PurchaseRequestsPage"));