GiftPackController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Repositories\GiftPack;
  4. use Dcat\Admin\Form;
  5. use Dcat\Admin\Grid;
  6. use Dcat\Admin\Show;
  7. use Dcat\Admin\Http\Controllers\AdminController;
  8. use App\Admin\Renderable\AttireTable; // 筛选表格弹框
  9. class GiftPackController extends AdminController
  10. {
  11. public $rooms = [];
  12. /**
  13. * Make a grid builder.
  14. *
  15. * @return Grid
  16. */
  17. protected function grid()
  18. {
  19. $this->rooms = \App\Models\LiveRoom::pluck("short_name","room_id")->toArray();
  20. return Grid::make(new GiftPack(['attire']), function (Grid $grid) {
  21. $grid->column('id');
  22. $grid->column('name');
  23. $grid->column('room_id')->using($this->rooms);
  24. $grid->column('coupon');
  25. $grid->column('attire.name', '应援装扮');
  26. $grid->column('img')->image(config("filesystems.disks.cosv5.url"), 100, 100);
  27. // $grid->column('exchage_info');
  28. // $grid->column('attire_id');
  29. $grid->column('sort');
  30. $grid->column('created_at');
  31. // $grid->column('updated_at')->sortable();
  32. $grid->enableDialogCreate();
  33. $grid->setDialogFormDimensions('50%', '70%');
  34. $grid->withBorder();
  35. $grid->actions(function (Grid\Displayers\Actions $actions) {
  36. $actions->quickEdit(true);
  37. $actions->disableEdit();
  38. $actions->disableView();
  39. });
  40. $grid->model()->orderBy("sort","asc");
  41. //
  42. $grid->filter(function ($filter) {
  43. // 展开过滤器
  44. $filter->panel();
  45. $filter->expand();
  46. $filter->withoutInputBorder();
  47. // 在这里添加字段过滤器
  48. $filter->equal('id')->width(2);
  49. $filter->equal('attire_id', '装扮')
  50. ->selectTable(AttireTable::make()) // 设置渲染类实例,并传递自定义参数
  51. ->title('装扮列表')
  52. ->dialogWidth('50%') // 弹窗宽度,默认 800px
  53. ->model(\App\Models\Attire::class, 'id', 'name')->width(3); // 设置编辑数据显示
  54. $filter->equal('room_id')->select($this->rooms)->width(2);
  55. });
  56. $grid->tools(function (Grid\Tools $tools) {
  57. $tools->append(new \App\Admin\Actions\Grid\PackRecordAction());
  58. });
  59. });
  60. }
  61. /**
  62. * Make a show builder.
  63. *
  64. * @param mixed $id
  65. *
  66. * @return Show
  67. */
  68. protected function detail($id)
  69. {
  70. return Show::make($id, new GiftPack(), function (Show $show) {
  71. $show->field('id');
  72. $show->field('name');
  73. $show->field('coupon_cnt');
  74. $show->field('attire_ids');
  75. $show->field('attire_cnt');
  76. $show->field('sort');
  77. $show->field('created_at');
  78. $show->field('updated_at');
  79. });
  80. }
  81. /**
  82. * Make a form builder.
  83. *
  84. * @return Form
  85. */
  86. protected function form()
  87. {
  88. $this->rooms = \App\Models\LiveRoom::pluck("short_name","room_id")->toArray();
  89. return Form::make(new GiftPack(), function (Form $form) {
  90. // $form->display('id');
  91. $form->text('name')->required();
  92. $form->select('room_id')->options($this->rooms)->required();
  93. $form->selectTable('attire_id', '应援装扮') // 设置渲染类实例,并传递自定义参数
  94. ->title('装扮列表')
  95. ->dialogWidth('50%') // 弹窗宽度,默认 800px
  96. ->from(AttireTable::make())
  97. ->model(\App\Models\Attire::class, 'id', 'name')->default(0);
  98. //->rules('unique:gift_packs,attire_id,$selfId,id,deleted_at,NULL', ['unique' => '已经在礼包中了,请选择其它的'])
  99. $form->number('coupon')->required();
  100. $form->image('img')->autoUpload()->removable(false);
  101. // $form->textarea('exchage_info')->required();
  102. //
  103. $form->number('sort');
  104. });
  105. }
  106. }