label('编辑') ->visible(fn (): bool => $this->record->name !== 'super-admin'), ]; } public function infolist(Infolist $infolist): Infolist { return $infolist ->schema([ Infolists\Components\Section::make('角色信息') ->schema([ Infolists\Components\TextEntry::make('name') ->label('角色标识') ->badge() ->color(fn (string $state): string => match ($state) { 'super-admin' => 'danger', 'admin' => 'warning', 'user' => 'success', default => 'gray', }), Infolists\Components\TextEntry::make('guard_name') ->label('守卫') ->badge(), Infolists\Components\TextEntry::make('permissions_count') ->label('权限数量') ->getStateUsing(fn ($record) => $record->permissions()->count()) ->badge() ->color('info'), Infolists\Components\TextEntry::make('users_count') ->label('用户数量') ->getStateUsing(fn ($record) => $record->users()->count()) ->badge() ->color('success'), Infolists\Components\TextEntry::make('created_at') ->label('创建时间') ->dateTime('Y-m-d H:i:s'), Infolists\Components\TextEntry::make('updated_at') ->label('更新时间') ->dateTime('Y-m-d H:i:s'), ]) ->columns(2), Infolists\Components\Section::make('权限列表') ->schema([ Infolists\Components\RepeatableEntry::make('permissions') ->label('') ->schema([ Infolists\Components\TextEntry::make('name') ->label('权限') ->badge() ->formatStateUsing(function (string $state): string { // 格式化权限名称 $parts = explode('.', $state); $module = $parts[0] ?? ''; $action = $parts[1] ?? ''; $moduleNames = [ 'document' => '文档管理', 'system-setting' => '系统设置', 'activity-log' => '操作日志', 'terminal' => '终端管理', 'sop-template' => 'SOP模板', 'group' => '分组管理', 'user' => '用户管理', 'role' => '角色管理', ]; $actionNames = [ 'viewAny' => '查看列表', 'view' => '查看详情', 'create' => '创建', 'update' => '编辑', 'delete' => '删除', 'download' => '下载', 'export' => '导出', 'sync' => '同步', 'publish' => '发布', 'archive' => '归档', ]; $moduleName = $moduleNames[$module] ?? $module; $actionName = $actionNames[$action] ?? $action; return "{$moduleName} - {$actionName}"; }), ]) ->columns(3) ->grid(3), ]) ->collapsible(), ]); } }