ProjectCateController.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Enums\ProjectStatus;
  4. use App\Services\ProjectCateService;
  5. use Slowlyo\OwlAdmin\Controllers\AdminController;
  6. /**
  7. * 项目分类
  8. *
  9. * @property ProjectCateService $service
  10. */
  11. class ProjectCateController extends AdminController
  12. {
  13. protected string $serviceName = ProjectCateService::class;
  14. public function list()
  15. {
  16. $crud = $this->baseCRUD()
  17. ->filterTogglable(false)
  18. ->headerToolbar([
  19. $this->createButton('dialog'),
  20. ...$this->baseHeaderToolBar()
  21. ])
  22. ->columns([
  23. amis()->TableColumn('id', 'ID')->sortable(),
  24. amis()->TableColumn('name', '项目分类名称'),
  25. amis()->TableColumn('cover', '分类封面')
  26. ->type('image')
  27. ->enlargeAble(true)
  28. ->thumbMode('cover')
  29. ->height(50)
  30. ->width(50),
  31. amis()->TableColumn('sort', '排序')->sortable(),
  32. amis()->TableColumn('state', '状态')
  33. ->type('mapping')
  34. ->map([
  35. ProjectStatus::CLOSE->value => '关闭',
  36. ProjectStatus::OPEN->value => '开启',
  37. ]),
  38. amis()->TableColumn('created_at', admin_trans('admin.created_at'))->type('datetime')->sortable(),
  39. amis()->TableColumn('updated_at', admin_trans('admin.updated_at'))->type('datetime')->sortable(),
  40. $this->rowActions('dialog')
  41. ]);
  42. return $this->baseList($crud);
  43. }
  44. public function form($isEdit = false)
  45. {
  46. return $this->baseForm()->body([
  47. amis()->TextControl('name', '项目分类名称')
  48. ->required(),
  49. amis()->ImageControl('cover', '分类封面')
  50. ->receiver('/upload-project-cate')
  51. ->data([
  52. 'bucket' => 'project-cate'
  53. ])
  54. ->autoUpload(true)
  55. ->accept('image/*')
  56. ->multiple(false),
  57. amis()->NumberControl('sort', '排序')
  58. ->min(0)
  59. ->value(0),
  60. amis()->SelectControl('state', '状态')
  61. ->options([
  62. ['label' => '关闭', 'value' => ProjectStatus::CLOSE],
  63. ['label' => '开启', 'value' => ProjectStatus::OPEN],
  64. ])
  65. ->value(ProjectStatus::OPEN)
  66. ->required(),
  67. ]);
  68. }
  69. public function detail()
  70. {
  71. return $this->baseDetail()->body([
  72. amis()->TextControl('id', 'ID')->static(),
  73. amis()->TextControl('name', '项目分类名称')->static(),
  74. amis()->TextControl('cover', '分类封面')->static(),
  75. amis()->TextControl('sort', '排序')->static(),
  76. amis()->TextControl('state', '状态')->static(),
  77. amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
  78. amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
  79. ]);
  80. }
  81. }