import * as React from "react" import { ShieldCheck, UserCog, Users } from "lucide-react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table" type UserStatus = "enabled" | "disabled" type UserRecord = { id: string name: string account: string role: "业务/市场负责人" | "内容运营专员" | "项目与运维负责人" status: UserStatus lastLogin: string } type PermissionKey = | "dashboard.view" | "source.sync" | "content.edit" | "content.approve" | "content.publish" | "leads.manage" | "settings.manage" | "users.manage" type RolePermission = { roleName: "业务/市场负责人" | "内容运营专员" | "项目与运维负责人" permissions: PermissionKey[] } const INITIAL_USERS: UserRecord[] = [ { id: "u1", name: "陈经理", account: "market.chen", role: "业务/市场负责人", status: "enabled", lastLogin: "2026-04-12 09:18", }, { id: "u2", name: "刘运营", account: "content.liu", role: "内容运营专员", status: "enabled", lastLogin: "2026-04-12 08:42", }, { id: "u3", name: "王运维", account: "ops.wang", role: "项目与运维负责人", status: "enabled", lastLogin: "2026-04-11 20:05", }, { id: "u4", name: "赵测试", account: "qa.zhao", role: "内容运营专员", status: "disabled", lastLogin: "2026-04-01 11:20", }, ] const PERMISSION_LABEL: Record = { "dashboard.view": "查看仪表盘", "source.sync": "车型同步", "content.edit": "内容编辑", "content.approve": "内容审核", "content.publish": "内容发布", "leads.manage": "潜客管理", "settings.manage": "系统设置", "users.manage": "用户与权限管理", } const INITIAL_ROLE_PERMISSIONS: RolePermission[] = [ { roleName: "业务/市场负责人", permissions: [ "dashboard.view", "content.approve", "content.publish", "leads.manage", ], }, { roleName: "内容运营专员", permissions: [ "dashboard.view", "source.sync", "content.edit", "content.publish", "leads.manage", ], }, { roleName: "项目与运维负责人", permissions: [ "dashboard.view", "source.sync", "settings.manage", "users.manage", ], }, ] const PERMISSION_COLUMNS: PermissionKey[] = [ "dashboard.view", "source.sync", "content.edit", "content.approve", "content.publish", "leads.manage", "settings.manage", "users.manage", ] export function UserAccessManagement() { const [query, setQuery] = React.useState("") const [users, setUsers] = React.useState(INITIAL_USERS) const [rolePermissions, setRolePermissions] = React.useState(INITIAL_ROLE_PERMISSIONS) const filteredUsers = users.filter((user) => { const key = `${user.name} ${user.account} ${user.role}`.toLowerCase() return key.includes(query.toLowerCase()) }) const toggleUserStatus = (id: string) => { setUsers((prev) => prev.map((user) => user.id === id ? { ...user, status: user.status === "enabled" ? "disabled" : "enabled" } : user ) ) } const togglePermission = (roleName: RolePermission["roleName"], permission: PermissionKey) => { setRolePermissions((prev) => prev.map((role) => { if (role.roleName !== roleName) return role const has = role.permissions.includes(permission) return { ...role, permissions: has ? role.permissions.filter((item) => item !== permission) : [...role.permissions, permission], } }) ) } return (

用户与权限管理

集中维护账号状态、角色定义与权限边界。

用户管理 管理账号启用状态与角色归属。
setQuery(e.target.value)} placeholder="搜索姓名、账号或角色..." />
姓名 账号 角色 状态 最近登录 操作 {filteredUsers.map((user) => ( {user.name} {user.account} {user.role} {user.status === "enabled" ? "启用" : "停用"} {user.lastLogin}
))}
角色与权限管理 按角色授予菜单、操作与审批权限(原型可直接勾选)。
角色 权限 权限边界
角色 {PERMISSION_COLUMNS.map((permission) => ( {PERMISSION_LABEL[permission]} ))} {rolePermissions.map((role) => ( {role.roleName} {PERMISSION_COLUMNS.map((permission) => { const checked = role.permissions.includes(permission) return ( togglePermission(role.roleName, permission)} /> ) })} ))}
) }