-
- ,
- // link: "/",
- // },
-
- hasSomePermissions(
- RolePerms.MANAGE_ANY_DEPT,
- RolePerms.MANAGE_ANY_STAFF,
- RolePerms.MANAGE_ANY_ROLE,
- RolePerms.MANAGE_DOM_STAFF,
- RolePerms.MANAGE_BASE_SETTING
- ) && {
- key: "4",
- label: "系统设置",
- icon: ,
- children: [
- hasSomePermissions(
- RolePerms.MANAGE_BASE_SETTING
- ) && {
- key: "4-0",
- icon: ,
- label: "参数配置",
- link: "/admin/base-setting",
- },
-
- hasSomePermissions(
- RolePerms.MANAGE_ANY_TERM,
- // RolePerms.MANAGE_DOM_TERM
- ) && {
- key: "4-1",
- icon: ,
- label: "分类配置",
- link: "/admin/term",
- },
- hasSomePermissions(
- RolePerms.MANAGE_ANY_DEPT
- ) && {
- key: "4-5",
- icon: ,
- label: "组织架构",
- link: "/admin/department",
- },
- hasSomePermissions(
- RolePerms.MANAGE_ANY_STAFF,
- RolePerms.MANAGE_DOM_STAFF
- ) && {
- key: "4-6",
- icon: ,
- label: "用户管理",
- link: "/admin/staff",
- },
- hasSomePermissions(
- RolePerms.MANAGE_ANY_ROLE,
- RolePerms.MANAGE_DOM_ROLE
- ) && {
- key: "4-7",
- icon: ,
- label: "角色管理",
- link: "/admin/role",
- },
- ].filter(Boolean),
- },
- ].filter(Boolean)}>
-
-
- );
-}
diff --git a/apps/web/src/components/layout/user-header.tsx b/apps/web/src/components/layout/user-header.tsx
deleted file mode 100644
index 788f6a9..0000000
--- a/apps/web/src/components/layout/user-header.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import { Avatar, Button, Dropdown, theme } from "antd";
-import { useAuth } from "@web/src/providers/auth-provider";
-import { Icon } from "@nice/iconer";
-import { useNavigate } from "react-router-dom";
-
-export default function UserHeader() {
- const { logout, user, isAuthenticated } = useAuth();
- const { token } = theme.useToken();
-
- const navigate = useNavigate();
- return (
-
diff --git a/apps/web/src/components/models/staff/staff-editor.tsx b/apps/web/src/components/models/staff/staff-editor.tsx
index 285e149..4bc4b76 100644
--- a/apps/web/src/components/models/staff/staff-editor.tsx
+++ b/apps/web/src/components/models/staff/staff-editor.tsx
@@ -7,7 +7,8 @@ import { useAuth } from "@web/src/providers/auth-provider";
import { Button } from "antd";
import DepartmentSelect from "../department/department-select";
import { FormInstance, useForm } from "antd/es/form/Form";
-import FixedHeader from "../../layout/fix-header";
+import AdminHeader from "../../layout/admin/AdminHeader";
+
export const StaffEditorContext = createContext<{
domainId: string,
modalOpen: boolean,
@@ -51,7 +52,7 @@ export default function StaffEditor() {
return hasSomePermissions(RolePerms.MANAGE_ANY_STAFF)
}, [user])
return
-
+
setDomainId(value as string)} disabled={!canManageAnyStaff} value={domainId} className="w-48" domain={true}>
{canManageStaff &&
-
+
diff --git a/apps/web/src/components/models/term/taxonomy-list.tsx b/apps/web/src/components/models/term/taxonomy-list.tsx
index 2689cce..a3ac151 100644
--- a/apps/web/src/components/models/term/taxonomy-list.tsx
+++ b/apps/web/src/components/models/term/taxonomy-list.tsx
@@ -25,12 +25,12 @@ const TaxonomyList: React.FC = () => {
{taxonomies?.map((item) => (
{
setTaxonomyId(item.id)
setTaxonomyName(item?.name)
- }} className={`flex items-center ${item.id === taxonomyId ? " text-primary border-l-4 border-primaryHover" : ""} gap-4 p-2 hover:bg-textHover transition-all ease-in-out`}>
+ }} className={`flex items-center ${item.id === taxonomyId ? " text-primary border-l-4 border-primary" : ""} gap-4 p-2 hover:bg-textHover transition-all ease-in-out`}>
{item.name}
diff --git a/apps/web/src/components/presentation/NavBar.tsx b/apps/web/src/components/presentation/NavBar.tsx
deleted file mode 100644
index dd9f98c..0000000
--- a/apps/web/src/components/presentation/NavBar.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-// components/NavBar.tsx
-import { motion } from "framer-motion";
-import React, { useState } from "react";
-
-interface NavItem {
- id: string;
- icon?: React.ReactNode;
- label: string;
-}
-
-interface NavBarProps {
- items: NavItem[];
- defaultSelected?: string;
- onSelect?: (id: string) => void;
-}
-
-export const NavBar = ({ items, defaultSelected, onSelect }: NavBarProps) => {
- const [selected, setSelected] = useState(defaultSelected || items[0]?.id);
-
- const handleSelect = (id: string) => {
- setSelected(id);
- onSelect?.(id);
- };
-
- return (
-
- );
-};
diff --git a/apps/web/src/components/presentation/ag-server-table.tsx b/apps/web/src/components/presentation/ag-server-table.tsx
index d7f13af..a73f176 100644
--- a/apps/web/src/components/presentation/ag-server-table.tsx
+++ b/apps/web/src/components/presentation/ag-server-table.tsx
@@ -368,7 +368,6 @@ const AgServerTable: React.FC
= ({
}}>
;
className?: string;
defaultExpandedKeys?: string[];
+ renderItem?: (item: MenuItem, isActive: boolean, level: number) => React.ReactNode;
}
interface MenuItem {
@@ -25,6 +26,7 @@ const CollapsibleSection: React.FC = ({
items,
className,
defaultExpandedKeys = [],
+ renderItem,
}) => {
const location = useLocation();
const navigate = useNavigate();
@@ -59,12 +61,17 @@ const CollapsibleSection: React.FC = ({
const itemUrl = new URL(item.link, window.location.origin);
const itemPath = itemUrl.pathname;
const itemSearchParams = new URLSearchParams(itemUrl.search);
+
+
const hasChildren = item.children && item.children.length > 0;
const isActive =
currentPath === itemPath &&
Array.from(itemSearchParams.entries()).every(
([key, value]) => currentSearchParams.get(key) === value
);
+ if (renderItem) {
+ return renderItem(item, isActive, level);
+ }
const isChildCollapsed = !expandedSections[item.key];
diff --git a/apps/web/src/components/presentation/video-player/ControlButtons/Brightness.tsx b/apps/web/src/components/presentation/video-player/ControlButtons/Brightness.tsx
index 2dcaf4d..7a3e462 100644
--- a/apps/web/src/components/presentation/video-player/ControlButtons/Brightness.tsx
+++ b/apps/web/src/components/presentation/video-player/ControlButtons/Brightness.tsx
@@ -8,7 +8,7 @@ export default function Brightness() {
<>
{/* 亮度控制 */}
-