R36-1/R36-2/R36-3/R36-5 收口请假编辑与团队日历

这个提交包含在:
2026-03-25 15:32:23 +08:00
父节点 18af4aedc4
当前提交 d0b9d9eaca
共修改 9 个文件,包含 874 行新增和 69 行删除
+2 -2
查看文件
@@ -4,7 +4,7 @@ import { fetchPortalHome, type PortalHomePayload } from "../api/portal";
import { mapApiErrorMessage } from "../api/errorMessages";
import { isApiError } from "../api/types";
import { useAuth } from "../auth/AuthContext";
import { hasAnyPermission } from "../auth/permissions";
import { hasAnyPermission, isManagerRole } from "../auth/permissions";
import { EmptyStateCard } from "../components/common/EmptyStateCard";
import { MetricCard } from "../components/patterns/MetricCard";
import { PageScaffold } from "../components/patterns/PageScaffold";
@@ -201,7 +201,7 @@ export function PortalHomePage() {
const { permissions } = useAuth();
const portalQuery = useQuery({ queryKey: ["portal-home"], queryFn: () => fetchPortalHome() });
const canSetupWorkspace = hasAnyPermission(permissions, ["system.settings"]);
const isManagerView = hasAnyPermission(permissions, ["system.users", "report.dashboard.view", "*"]);
const isManagerView = isManagerRole(permissions);
if (portalQuery.isLoading) {
return <div className="card-std p-6 text-sm text-zinc-500">加载 Portal 中...</div>;