import { useEffect, useMemo, useState } from "react"; import { Menu } from "antd"; import { SettingOutlined, TeamOutlined } from "@ant-design/icons"; import { Component } from "lucide-react"; import SystemConfig from "./SystemConfig"; import ModelAccess from "./ModelAccess"; import UserPermissionManagement from "./UserPermissionManagement"; import { useAppSelector } from "@/store/hooks"; import { hasPermission, PermissionCodes } from "@/auth/permissions"; export default function SettingsPage() { const permissions = useAppSelector((state) => state.auth.permissions); const canManageUsers = hasPermission(permissions, PermissionCodes.userManage); const canViewRoles = hasPermission(permissions, PermissionCodes.roleManage); const canViewPermissions = hasPermission( permissions, PermissionCodes.permissionManage ); const tabs = useMemo(() => { const nextTabs = [ { key: "model-access", icon: , label: "模型接入", }, { key: "system-config", icon: , label: "参数配置", }, ]; if (canManageUsers || canViewRoles || canViewPermissions) { nextTabs.push({ key: "user-permission", icon: , label: "用户与权限", }); } return nextTabs; }, [canManageUsers, canViewPermissions, canViewRoles]); const [activeTab, setActiveTab] = useState(tabs[0]?.key ?? "model-access"); useEffect(() => { const hasActiveTab = tabs.some((tab) => tab.key === activeTab); if (!hasActiveTab && tabs.length > 0) { setActiveTab(tabs[0].key); } }, [activeTab, tabs]); return (
{/*

*/}
{ setActiveTab(String(key)); }} />
{/* 内容区域,根据 activeTab 渲染不同的组件 */} {activeTab === "system-config" && } {activeTab === "model-access" && } {activeTab === "user-permission" && ( )}
); }