"use client" import { useState } from "react" import { DashboardShell } from "@/components/dashboard-shell" import { DashboardHeader } from "@/components/dashboard-header" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Badge } from "@/components/ui/badge" import { Search, Edit } from "lucide-react" import { Checkbox } from "@/components/ui/checkbox" import { RoleDialog, type Role } from "@/components/permissions/role-dialog" import { DeleteConfirmationDialog } from "@/components/delete-confirmation-dialog" import { useToast } from "@/components/ui/use-toast" // 初始角色数据 const initialRoles: Role[] = [ { id: "1", name: "超级管理员", description: "拥有系统所有权限,可以管理所有功能", userCount: 1, createdAt: "2023-01-01", status: "系统角色", permissions: { "dashboard.view": true, "dashboard.edit": true, "users.view": true, "users.create": true, "users.edit": true, "users.delete": true, "roles.view": true, "roles.create": true, "roles.edit": true, "roles.delete": true, "ai.view": true, "ai.create": true, "ai.edit": true, "ai.delete": true, "outfits.view": true, "outfits.create": true, "outfits.edit": true, "outfits.delete": true, "props.view": true, "props.create": true, "props.edit": true, "props.delete": true, "homeDecor.view": true, "homeDecor.create": true, "homeDecor.edit": true, "homeDecor.delete": true, "food.view": true, "food.create": true, "food.edit": true, "food.delete": true, "songs.view": true, "songs.create": true, "songs.edit": true, "songs.delete": true, "settings.view": true, "settings.edit": true, "affinity.view": true, "affinity.create": true, "affinity.edit": true, "affinity.delete": true, }, }, { id: "2", name: "内容管理员", description: "管理系统内容,包括服装、道具、歌曲等", userCount: 3, createdAt: "2023-03-15", status: "自定义角色", permissions: { "dashboard.view": true, "outfits.view": true, "outfits.create": true, "outfits.edit": true, "outfits.delete": true, "props.view": true, "props.create": true, "props.edit": true, "props.delete": true, "homeDecor.view": true, "homeDecor.create": true, "homeDecor.edit": true, "homeDecor.delete": true, "food.view": true, "food.create": true, "food.edit": true, "food.delete": true, "songs.view": true, "songs.create": true, "songs.edit": true, "songs.delete": true, }, }, { id: "3", name: "AI模型管理员", description: "管理AI模型、语音合成和知识库", userCount: 2, createdAt: "2023-05-20", status: "自定义角色", permissions: { "dashboard.view": true, "ai.view": true, "ai.create": true, "ai.edit": true, "ai.delete": true, }, }, { id: "4", name: "卡牌管理员", description: "管理卡牌系统,包括服装、道具、家居装饰等", userCount: 4, createdAt: "2023-07-10", status: "自定义角色", permissions: { "dashboard.view": true, "outfits.view": true, "outfits.create": true, "outfits.edit": true, "props.view": true, "props.create": true, "props.edit": true, "homeDecor.view": true, "homeDecor.create": true, "homeDecor.edit": true, "food.view": true, "food.create": true, "food.edit": true, }, }, { id: "5", name: "查看者", description: "只有查看权限,无法修改任何内容", userCount: 2, createdAt: "2023-09-05", status: "自定义角色", permissions: { "dashboard.view": true, }, }, ] export default function PermissionsPage() { const [roles, setRoles] = useState(initialRoles) const [searchQuery, setSearchQuery] = useState("") const [editingRole, setEditingRole] = useState(null) const { toast } = useToast() // 过滤角色 const filteredRoles = roles.filter( (role) => role.name.toLowerCase().includes(searchQuery.toLowerCase()) || role.description.toLowerCase().includes(searchQuery.toLowerCase()), ) // 添加角色 const handleAddRole = async (data: any) => { const newRole: Role = { id: `${roles.length + 1}`, name: data.name, description: data.description, userCount: 0, createdAt: new Date().toISOString().split("T")[0], status: data.status, permissions: data.permissions, } setRoles([...roles, newRole]) toast({ title: "角色创建成功", description: `角色 "${data.name}" 已成功创建`, variant: "default", }) } // 编辑角色 const handleEditRole = async (data: any) => { if (!editingRole) return const updatedRoles = roles.map((role) => role.id === editingRole.id ? { ...role, name: data.name, description: data.description, status: data.status, permissions: data.permissions, } : role, ) setRoles(updatedRoles) setEditingRole(null) toast({ title: "角色更新成功", description: `角色 "${data.name}" 已成功更新`, variant: "default", }) } // 删除角色 const handleDeleteRole = async (roleId: string) => { const updatedRoles = roles.filter((role) => role.id !== roleId) setRoles(updatedRoles) toast({ title: "角色删除成功", description: "角色已成功删除", variant: "default", }) } // 开始���辑角色 const startEditRole = (role: Role) => { setEditingRole(role) } return (
setSearchQuery(e.target.value)} />
角色列表
管理系统角色和权限
角色名称 描述 用户数量 创建日期 状态 操作 {filteredRoles.map((role) => ( {role.name} {role.description} {role.userCount} {role.createdAt} {role.status} {role.status !== "系统角色" && ( handleDeleteRole(role.id)} /> )} ))} {filteredRoles.length === 0 && ( 没有找到匹配的角色 )}
显示 {filteredRoles.length} 共 {roles.length} 个角色
权限矩阵
角色权限分配表
权限/角色 {roles.map((role) => ( {role.name} ))} 仪表盘查看 {roles.map((role) => ( ))} 用户管理 {roles.map((role) => ( ))} 角色权限管理 {roles.map((role) => ( ))} AI模型管理 {roles.map((role) => ( ))} 服装管理 {roles.map((role) => ( ))} 道具管理 {roles.map((role) => ( ))} 歌曲管理 {roles.map((role) => ( ))} 系统设置 {roles.map((role) => ( ))}
{/* 编辑角色对话框 */} {editingRole && ( { if (!open) setEditingRole(null) }} onSubmit={handleEditRole} defaultValues={{ name: editingRole.name, description: editingRole.description, status: editingRole.status, permissions: editingRole.permissions, }} /> )}
) }