FarmCropController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Module\Farm\AdminControllers;
  3. use App\Module\Farm\Enums\GROWTH_STAGE;
  4. use App\Module\Farm\Repositories\FarmCropRepository;
  5. use App\Module\Farm\Repositories\FarmSeedRepository;
  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-crops', names: 'dcat.admin.farm-crops')]
  15. class FarmCropController 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 FarmCropRepository(), function (Grid $grid) {
  37. $grid->column('id', 'ID')->sortable();
  38. $grid->column('land_id', '土地ID')->sortable();
  39. $grid->column('user_id', '用户ID')->sortable();
  40. $grid->column('seed_id', '种子ID')->sortable();
  41. $grid->column('plant_time', '种植时间')->sortable();
  42. $grid->column('growth_stage', '生长阶段')->display(function ($value) {
  43. return GROWTH_STAGE::getName($value);
  44. })->sortable();
  45. $grid->column('stage_end_time', '阶段结束时间')->sortable();
  46. $grid->column('fertilized', '已施肥')->bool()->sortable();
  47. $grid->column('created_at', '创建时间')->sortable();
  48. $grid->column('updated_at', '更新时间')->sortable();
  49. $grid->filter(function (Grid\Filter $filter) {
  50. $filter->equal('id', 'ID');
  51. $filter->equal('land_id', '土地ID');
  52. $filter->equal('user_id', '用户ID');
  53. $filter->equal('seed_id', '种子ID');
  54. $filter->equal('growth_stage', '生长阶段')->select([
  55. GROWTH_STAGE::SEED => GROWTH_STAGE::getName(GROWTH_STAGE::SEED),
  56. GROWTH_STAGE::SPROUT => GROWTH_STAGE::getName(GROWTH_STAGE::SPROUT),
  57. GROWTH_STAGE::GROWTH => GROWTH_STAGE::getName(GROWTH_STAGE::GROWTH),
  58. GROWTH_STAGE::MATURE => GROWTH_STAGE::getName(GROWTH_STAGE::MATURE),
  59. GROWTH_STAGE::WITHERED => GROWTH_STAGE::getName(GROWTH_STAGE::WITHERED),
  60. ]);
  61. $filter->between('plant_time', '种植时间')->datetime();
  62. $filter->between('stage_end_time', '阶段结束时间')->datetime();
  63. $filter->equal('fertilized', '已施肥')->radio([
  64. 1 => '是',
  65. 0 => '否',
  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 FarmCropRepository(), function (Show $show) {
  80. $show->field('id', 'ID');
  81. $show->field('land_id', '土地ID');
  82. $show->field('user_id', '用户ID');
  83. $show->field('seed_id', '种子ID');
  84. $show->field('plant_time', '种植时间');
  85. $show->field('growth_stage', '生长阶段')->as(function ($value) {
  86. return GROWTH_STAGE::getName($value);
  87. });
  88. $show->field('stage_end_time', '阶段结束时间');
  89. $show->field('disasters', '灾害情况')->json();
  90. $show->field('fertilized', '已施肥')->as(function ($value) {
  91. return $value ? '是' : '否';
  92. });
  93. $show->field('created_at', '创建时间');
  94. $show->field('updated_at', '更新时间');
  95. });
  96. }
  97. /**
  98. * 构建表单
  99. *
  100. * @return Form
  101. */
  102. protected function form()
  103. {
  104. return Form::make(new FarmCropRepository(), function (Form $form) {
  105. $form->display('id', 'ID');
  106. $form->text('land_id', '土地ID')->required()->rules('required|integer');
  107. $form->text('user_id', '用户ID')->required()->rules('required|integer');
  108. // 获取所有种子选项
  109. $seedRepository = new FarmSeedRepository();
  110. $seedOptions = $seedRepository->all()->pluck('name', 'id')->toArray();
  111. $form->select('seed_id', '种子ID')->options($seedOptions)->required();
  112. $form->datetime('plant_time', '种植时间')->required();
  113. $form->select('growth_stage', '生长阶段')->options([
  114. GROWTH_STAGE::SEED => GROWTH_STAGE::getName(GROWTH_STAGE::SEED),
  115. GROWTH_STAGE::SPROUT => GROWTH_STAGE::getName(GROWTH_STAGE::SPROUT),
  116. GROWTH_STAGE::GROWTH => GROWTH_STAGE::getName(GROWTH_STAGE::GROWTH),
  117. GROWTH_STAGE::MATURE => GROWTH_STAGE::getName(GROWTH_STAGE::MATURE),
  118. GROWTH_STAGE::WITHERED => GROWTH_STAGE::getName(GROWTH_STAGE::WITHERED),
  119. ])->required();
  120. $form->datetime('stage_end_time', '阶段结束时间');
  121. $form->textarea('disasters', '灾害情况')->json();
  122. $form->switch('fertilized', '已施肥')->default(false);
  123. $form->display('created_at', '创建时间');
  124. $form->display('updated_at', '更新时间');
  125. });
  126. }
  127. }