FarmCropController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace App\Module\Farm\AdminControllers;
  3. use App\Module\Farm\AdminControllers\Helper\FilterHelper;
  4. use App\Module\Farm\AdminControllers\Helper\FormHelper;
  5. use App\Module\Farm\AdminControllers\Helper\GridHelper;
  6. use App\Module\Farm\AdminControllers\Helper\ShowHelper;
  7. use App\Module\Farm\Enums\GROWTH_STAGE;
  8. use App\Module\Farm\Repositories\FarmCropRepository;
  9. use App\Module\Farm\Repositories\FarmSeedRepository;
  10. use Dcat\Admin\Form;
  11. use Dcat\Admin\Grid;
  12. use Dcat\Admin\Show;
  13. use UCore\DcatAdmin\AdminController;
  14. use Spatie\RouteAttributes\Attributes\Resource;
  15. /**
  16. * 作物管理控制器
  17. */
  18. #[Resource('farm-crops', names: 'dcat.admin.farm-crops')]
  19. class FarmCropController extends AdminController
  20. {
  21. /**
  22. * 页面标题
  23. *
  24. * @var string
  25. */
  26. protected $title = '作物管理';
  27. /**
  28. * 页面描述
  29. *
  30. * @var string
  31. */
  32. protected $description = '管理用户种植的作物';
  33. /**
  34. * 构建表格
  35. *
  36. * @return Grid
  37. */
  38. protected function grid()
  39. {
  40. return Grid::make(new FarmCropRepository(), function (Grid $grid) {
  41. $helper = new GridHelper($grid, $this);
  42. $helper->columnId();
  43. $grid->column('land_id', '土地ID')->sortable();
  44. $helper->columnUserId();
  45. $grid->column('seed_id', '种子ID')->sortable();
  46. $grid->column('plant_time', '种植时间')->sortable();
  47. $helper->columnGrowthStage();
  48. $grid->column('stage_end_time', '阶段结束时间')->sortable();
  49. $helper->columnFertilized();
  50. $helper->columnCreatedAt();
  51. $helper->columnUpdatedAt();
  52. $grid->filter(function (Grid\Filter $filter) {
  53. $filterHelper = new FilterHelper($filter, $this);
  54. $filterHelper->equalId();
  55. $filter->equal('land_id', '土地ID');
  56. $filterHelper->equalUserId();
  57. $filter->equal('seed_id', '种子ID');
  58. $filterHelper->equalGrowthStage();
  59. $filterHelper->betweenDatetime('plant_time', '种植时间');
  60. $filterHelper->betweenDatetime('stage_end_time', '阶段结束时间');
  61. $filterHelper->equalFertilized();
  62. $filterHelper->betweenDatetime('created_at', '创建时间');
  63. });
  64. });
  65. }
  66. /**
  67. * 构建详情页
  68. *
  69. * @param mixed $id
  70. * @return Show
  71. */
  72. protected function detail($id)
  73. {
  74. return Show::make($id, new FarmCropRepository(), function (Show $show) {
  75. $helper = new ShowHelper($show, $this);
  76. $show->field('id', 'ID');
  77. $show->field('land_id', '土地ID');
  78. $helper->fieldUserId('user_id', '用户ID');
  79. $show->field('seed_id', '种子ID');
  80. $show->field('plant_time', '种植时间');
  81. $helper->fieldGrowthStage('growth_stage', '生长阶段');
  82. $show->field('stage_end_time', '阶段结束时间');
  83. $helper->fieldModelCatsJson('disasters', '灾害情况');
  84. $helper->fieldFertilized('fertilized', '已施肥');
  85. $show->field('created_at', '创建时间');
  86. $show->field('updated_at', '更新时间');
  87. });
  88. }
  89. /**
  90. * 构建表单
  91. *
  92. * @return Form
  93. */
  94. protected function form()
  95. {
  96. return Form::make(new FarmCropRepository(), function (Form $form) {
  97. $helper = new FormHelper($form, $this);
  98. $form->display('id', 'ID');
  99. $form->text('land_id', '土地ID')->required()->rules('required|integer');
  100. $helper->display('user_id', '用户ID');
  101. // 获取所有种子选项
  102. $form->display('seed_id', '种子ID');
  103. $form->datetime('plant_time', '种植时间')->required();
  104. $helper->selectOptionCast('growth_stage', '生长阶段');
  105. $form->datetime('stage_end_time', '阶段结束时间');
  106. $helper->display('disasters', '灾害情况');
  107. $helper->switchFertilized();
  108. $form->display('created_at', '创建时间');
  109. $form->display('updated_at', '更新时间');
  110. });
  111. }
  112. }