ActivityLazyRenderable.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Module\Activity\AdminControllers\LazyRenderable;
  3. use App\Module\Activity\Enums\ACTIVITY_STATUS;
  4. use App\Module\Activity\Enums\ACTIVITY_TYPE;
  5. use App\Module\Activity\Models\ActivityConfig;
  6. use Dcat\Admin\Grid;
  7. use Dcat\Admin\Grid\LazyRenderable;
  8. /**
  9. * 活动懒加载渲染类
  10. *
  11. * 用于在表单中选择活动时的数据表格渲染
  12. */
  13. class ActivityLazyRenderable extends LazyRenderable
  14. {
  15. /**
  16. * 获取模型
  17. *
  18. * @return string
  19. */
  20. public function getModel(): string
  21. {
  22. return ActivityConfig::class;
  23. }
  24. /**
  25. * 获取模型选择ID字段
  26. *
  27. * @return string
  28. */
  29. public function getModelSelectId(): string
  30. {
  31. return 'id';
  32. }
  33. /**
  34. * 获取模型显示名称字段
  35. *
  36. * @return string
  37. */
  38. public function getModelViewName(): string
  39. {
  40. return 'name';
  41. }
  42. /**
  43. * 构建表格
  44. *
  45. * @param Grid $grid
  46. * @return void
  47. */
  48. public function grid(Grid $grid): void
  49. {
  50. $grid->column('id', 'ID')->sortable();
  51. $grid->column('name', '活动名称');
  52. $grid->column('type', '活动类型')->using(ACTIVITY_TYPE::getAll());
  53. $grid->column('status', '活动状态')->using(ACTIVITY_STATUS::getAll());
  54. $grid->column('start_time', '开始时间');
  55. $grid->column('end_time', '结束时间');
  56. $grid->quickSearch(['id', 'name']);
  57. $grid->filter(function (Grid\Filter $filter) {
  58. $filter->panel();
  59. $filter->equal('id', 'ID');
  60. $filter->like('name', '活动名称');
  61. $filter->equal('type', '活动类型')->select(ACTIVITY_TYPE::getAll());
  62. $filter->equal('status', '活动状态')->select(ACTIVITY_STATUS::getAll());
  63. });
  64. }
  65. }