columns([ TextColumn::make('hash') ->label('短码') ->badge() ->color('gray'), TextColumn::make('target_url') ->label('目标地址') ->limit(50) ->copyable() ->searchable(), TextColumn::make('clicks') ->label('点击量') ->numeric() ->sortable(), TextColumn::make('status') ->label('状态') ->badge() ->formatStateUsing(fn ($state) => $state === 'active' ? '启用' : '停用') ->color(fn ($state) => $state === 'active' ? 'success' : 'danger'), TextColumn::make('last_clicked_at') ->label('最后点击') ->dateTime('Y-m-d H:i') ->placeholder('—') ->sortable(), TextColumn::make('created_at') ->label('创建时间') ->dateTime('Y-m-d H:i') ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ \Filament\Tables\Filters\SelectFilter::make('status') ->label('状态') ->options(['active' => '启用', 'disabled' => '停用']), ], \Filament\Tables\Enums\FiltersLayout::AboveContent) ->recordActions([ Action::make('toggle') ->label(fn (Redirect $record) => $record->isActive() ? '停用' : '启用') ->color(fn (Redirect $record) => $record->isActive() ? 'danger' : 'success') ->action(fn (Redirect $record) => $record->update(['status' => $record->isActive() ? 'disabled' : 'active'])), DeleteAction::make(), ]) ->recordUrl(null) ->recordAction(null) ->defaultSort('clicks', 'desc'); } public static function getPages(): array { return [ 'index' => ListRedirects::route('/'), ]; } }