GiftBoxController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Repositories\GiftBox;
  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 GiftBoxController extends AdminController
  10. {
  11. public $levels = [
  12. 'N' => 'N',
  13. 'R' => 'R',
  14. 'SR' => 'SR',
  15. 'SSR' => 'SSR',
  16. ];
  17. public $cates = [
  18. '套装' => '套装',
  19. '皮肤' => '皮肤',
  20. ];
  21. /**
  22. * Make a grid builder.
  23. *
  24. * @return Grid
  25. */
  26. protected function grid()
  27. {
  28. return Grid::make(new GiftBox(['attire']), function (Grid $grid) {
  29. $grid->column('id');
  30. $grid->column('attire.name', '装扮名称');
  31. $grid->column('attire.img_1', '正面图片')->image(config("filesystems.disks.cosv5.url"), 100, 100);
  32. $grid->column('attire.img_2', '背面图片')->image(config("filesystems.disks.cosv5.url"), 100, 100);
  33. $grid->column('attire.cate', '类别');
  34. $grid->column('attire.level','等级');
  35. $grid->column('sort')->editable(true)->sortable();
  36. // $grid->column('created_at');
  37. // $grid->column('updated_at');
  38. $grid->enableDialogCreate();
  39. $grid->setDialogFormDimensions('40%', '30%');
  40. $grid->withBorder();
  41. $grid->actions(function (Grid\Displayers\Actions $actions) {
  42. $actions->quickEdit(false);
  43. $actions->disableEdit();
  44. $actions->disableView();
  45. });
  46. $grid->model()->orderBy("sort","asc")->orderBy("id","asc");
  47. //
  48. $grid->filter(function ($filter) {
  49. // 展开过滤器
  50. $filter->panel();
  51. $filter->expand();
  52. $filter->withoutInputBorder();
  53. // 在这里添加字段过滤器
  54. // $filter->equal('id')->width(2);
  55. $filter->equal('attire_id', '装扮')
  56. ->selectTable(AttireTable::make()) // 设置渲染类实例,并传递自定义参数
  57. ->title('装扮列表')
  58. ->dialogWidth('50%') // 弹窗宽度,默认 800px
  59. ->model(\App\Models\Attire::class, 'id', 'name')->width(3); // 设置编辑数据显示
  60. $filter->equal('attire.cate', '类别')->select($this->cates)->width(2); // 设置编辑数据显示
  61. $filter->equal('attire.level','等级')->select($this->levels)->width(2);
  62. });
  63. //
  64. $grid->tools(function (Grid\Tools $tools) {
  65. $tools->append(new \App\Admin\Actions\Grid\LevelPercentAction());
  66. $tools->append(new \App\Admin\Actions\Grid\LevelPasterAction());
  67. $tools->append(new \App\Admin\Actions\Grid\GiftBoxHitAction());
  68. $tools->append('<a target="_blank" class="btn btn-primary grid-refresh btn-mini btn-outline" href="/admin/box_records">开盒记录</a>');
  69. });
  70. });
  71. }
  72. /**
  73. * Make a show builder.
  74. *
  75. * @param mixed $id
  76. *
  77. * @return Show
  78. */
  79. protected function detail($id)
  80. {
  81. return Show::make($id, new GiftBox(), function (Show $show) {
  82. $show->field('id');
  83. $show->field('attire_id');
  84. $show->field('level');
  85. $show->field('created_at');
  86. $show->field('updated_at');
  87. });
  88. }
  89. /**
  90. * Make a form builder.
  91. *
  92. * @return Form
  93. */
  94. protected function form()
  95. {
  96. return Form::make(new GiftBox(), function (Form $form) {
  97. // $form->display('id');
  98. $form->selectTable('attire_id', '装扮') // 设置渲染类实例,并传递自定义参数
  99. ->title('装扮列表')
  100. ->dialogWidth('50%') // 弹窗宽度,默认 800px
  101. ->from(AttireTable::make())
  102. ->model(\App\Models\Attire::class, 'id', 'name')
  103. ->rules('unique:gift_boxes,attire_id,$selfId,id,deleted_at,NULL', ['unique' => '已经在礼盒中了,请选择其它的'])
  104. ->required();
  105. $form->number("sort");
  106. // $form->radio('level')->options($this->levels)->default('N')->required();
  107. // $form->display('created_at');
  108. // $form->display('updated_at');
  109. });
  110. }
  111. }