FarmLandController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace App\Module\Farm\AdminControllers;
  3. use App\Module\Farm\Enums\LAND_STATUS;
  4. use App\Module\Farm\Enums\LAND_TYPE;
  5. use App\Module\Farm\Repositories\FarmLandRepository;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use UCore\DcatAdmin\AdminController;
  10. use Spatie\RouteAttributes\Attributes\Resource;
  11. /**
  12. * 土地管理控制器
  13. */
  14. #[Resource('farm-lands', names: 'dcat.admin.farm-lands')]
  15. class FarmLandController extends AdminController
  16. {
  17. /**
  18. * 页面标题
  19. *
  20. * @var string
  21. */
  22. protected $title = '土地管理';
  23. /**
  24. * 页面描述
  25. *
  26. * @var string
  27. */
  28. protected $description = '管理用户的土地信息';
  29. /**
  30. * 构建表格
  31. *
  32. * @return Grid
  33. */
  34. protected function grid()
  35. {
  36. return Grid::make(new FarmLandRepository(), function (Grid $grid) {
  37. $grid->column('id', 'ID')->sortable();
  38. $grid->column('user_id', '用户ID')->sortable();
  39. $grid->column('position', '位置')->sortable();
  40. $grid->column('land_type', '土地类型')->display(function ($value) {
  41. return LAND_TYPE::getName($value);
  42. })->sortable();
  43. $grid->column('status', '状态')->display(function ($value) {
  44. return LAND_STATUS::getName($value);
  45. })->sortable();
  46. $grid->column('created_at', '创建时间')->sortable();
  47. $grid->column('updated_at', '更新时间')->sortable();
  48. $grid->filter(function (Grid\Filter $filter) {
  49. $filter->equal('id', 'ID');
  50. $filter->equal('user_id', '用户ID');
  51. $filter->equal('position', '位置');
  52. $filter->equal('land_type', '土地类型')->select([
  53. LAND_TYPE::NORMAL => LAND_TYPE::getName(LAND_TYPE::NORMAL),
  54. LAND_TYPE::RED => LAND_TYPE::getName(LAND_TYPE::RED),
  55. LAND_TYPE::BLACK => LAND_TYPE::getName(LAND_TYPE::BLACK),
  56. LAND_TYPE::GOLD => LAND_TYPE::getName(LAND_TYPE::GOLD),
  57. LAND_TYPE::BLUE => LAND_TYPE::getName(LAND_TYPE::BLUE),
  58. LAND_TYPE::PURPLE => LAND_TYPE::getName(LAND_TYPE::PURPLE),
  59. ]);
  60. $filter->equal('status', '状态')->select([
  61. LAND_STATUS::IDLE => LAND_STATUS::getName(LAND_STATUS::IDLE),
  62. LAND_STATUS::PLANTING => LAND_STATUS::getName(LAND_STATUS::PLANTING),
  63. LAND_STATUS::DISASTER => LAND_STATUS::getName(LAND_STATUS::DISASTER),
  64. LAND_STATUS::HARVESTABLE => LAND_STATUS::getName(LAND_STATUS::HARVESTABLE),
  65. LAND_STATUS::WITHERED => LAND_STATUS::getName(LAND_STATUS::WITHERED),
  66. ]);
  67. $filter->between('created_at', '创建时间')->datetime();
  68. });
  69. });
  70. }
  71. /**
  72. * 构建详情页
  73. *
  74. * @param mixed $id
  75. * @return Show
  76. */
  77. protected function detail($id)
  78. {
  79. return Show::make($id, new FarmLandRepository(), function (Show $show) {
  80. $show->field('id', 'ID');
  81. $show->field('user_id', '用户ID');
  82. $show->field('position', '位置');
  83. $show->field('land_type', '土地类型')->as(function ($value) {
  84. return LAND_TYPE::getName($value);
  85. });
  86. $show->field('status', '状态')->as(function ($value) {
  87. return LAND_STATUS::getName($value);
  88. });
  89. $show->field('created_at', '创建时间');
  90. $show->field('updated_at', '更新时间');
  91. });
  92. }
  93. /**
  94. * 构建表单
  95. *
  96. * @return Form
  97. */
  98. protected function form()
  99. {
  100. return Form::make(new FarmLandRepository(), function (Form $form) {
  101. $form->display('id', 'ID');
  102. $form->text('user_id', '用户ID')->required()->rules('required|integer');
  103. $form->number('position', '位置')->min(1)->max(20)->required();
  104. $form->select('land_type', '土地类型')->options([
  105. LAND_TYPE::NORMAL => LAND_TYPE::getName(LAND_TYPE::NORMAL),
  106. LAND_TYPE::RED => LAND_TYPE::getName(LAND_TYPE::RED),
  107. LAND_TYPE::BLACK => LAND_TYPE::getName(LAND_TYPE::BLACK),
  108. LAND_TYPE::GOLD => LAND_TYPE::getName(LAND_TYPE::GOLD),
  109. LAND_TYPE::BLUE => LAND_TYPE::getName(LAND_TYPE::BLUE),
  110. LAND_TYPE::PURPLE => LAND_TYPE::getName(LAND_TYPE::PURPLE),
  111. ])->required();
  112. $form->select('status', '状态')->options([
  113. LAND_STATUS::IDLE => LAND_STATUS::getName(LAND_STATUS::IDLE),
  114. LAND_STATUS::PLANTING => LAND_STATUS::getName(LAND_STATUS::PLANTING),
  115. LAND_STATUS::DISASTER => LAND_STATUS::getName(LAND_STATUS::DISASTER),
  116. LAND_STATUS::HARVESTABLE => LAND_STATUS::getName(LAND_STATUS::HARVESTABLE),
  117. LAND_STATUS::WITHERED => LAND_STATUS::getName(LAND_STATUS::WITHERED),
  118. ])->required();
  119. $form->display('created_at', '创建时间');
  120. $form->display('updated_at', '更新时间');
  121. });
  122. }
  123. }