PaperPartResource.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Filament\Resources;
  3. use App\Filament\Resources\PaperPartResource\Pages;
  4. use App\Filament\Resources\PaperPartResource\RelationManagers\PreQuestionCandidatesRelationManager;
  5. use App\Models\PaperPart;
  6. use Filament\Forms;
  7. use Filament\Resources\Resource;
  8. use Filament\Schemas\Schema;
  9. use Filament\Tables;
  10. use Filament\Tables\Table;
  11. use Filament\Actions\ViewAction;
  12. use Illuminate\Database\Eloquent\Model;
  13. use BackedEnum;
  14. use UnitEnum;
  15. class PaperPartResource extends Resource
  16. {
  17. protected static ?string $model = PaperPart::class;
  18. protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-clipboard-document-list';
  19. protected static UnitEnum|string|null $navigationGroup = 'Markdown 解析';
  20. protected static ?string $navigationLabel = '题型区块';
  21. protected static ?int $navigationSort = 3;
  22. public static function canCreate(): bool
  23. {
  24. return false;
  25. }
  26. public static function canEdit(Model $record): bool
  27. {
  28. return false;
  29. }
  30. public static function form(Schema $schema): Schema
  31. {
  32. return $schema->schema([
  33. Forms\Components\TextInput::make('title')->label('标题')->disabled(),
  34. Forms\Components\TextInput::make('type')->label('题型')->disabled(),
  35. Forms\Components\TextInput::make('question_count')->label('题量')->disabled(),
  36. Forms\Components\Textarea::make('raw_markdown')->label('区块 Markdown')->rows(12)->disabled(),
  37. ]);
  38. }
  39. public static function table(Table $table): Table
  40. {
  41. return $table
  42. ->columns([
  43. Tables\Columns\TextColumn::make('paper.title')->label('卷子'),
  44. Tables\Columns\TextColumn::make('order')->label('顺序')->sortable(),
  45. Tables\Columns\TextColumn::make('title')->label('区块标题')->searchable(),
  46. Tables\Columns\TextColumn::make('type')->label('题型'),
  47. Tables\Columns\TextColumn::make('question_count')->label('题量'),
  48. ])
  49. ->actions([
  50. ViewAction::make(),
  51. ]);
  52. }
  53. public static function getRelations(): array
  54. {
  55. return [
  56. PreQuestionCandidatesRelationManager::class,
  57. ];
  58. }
  59. public static function getPages(): array
  60. {
  61. return [
  62. 'index' => Pages\ListPaperParts::route('/'),
  63. 'view' => Pages\ViewPaperPart::route('/{record}'),
  64. ];
  65. }
  66. }