GiftController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Repositories\Gift;
  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 GiftController extends AdminController
  10. {
  11. /**
  12. * Make a grid builder.
  13. *
  14. * @return Grid
  15. */
  16. protected function grid()
  17. {
  18. return Grid::make(new Gift(['attire']), function (Grid $grid) {
  19. //
  20. $types = ['','礼劵','装扮'];
  21. //
  22. $grid->column('id');
  23. // $grid->column('name');
  24. $grid->column('type')->using($types)->label();
  25. // $grid->column('attire_id');
  26. $grid->column('attire.name', '装扮名称');
  27. $grid->column('attire.img_1', '图片')->display(function($v) {
  28. if($this->type == 1) {
  29. return "<img src='".\Storage::disk('cosv5')->url($this->img)."' style='height:100px;width:auto;' />";
  30. } else {
  31. return "<img src='".\Storage::disk('cosv5')->url($v)."' style='height:100px;width:auto;' />";
  32. }
  33. });
  34. $grid->column('info')->width("250px");
  35. $grid->column('attire.cate', '装扮类别');
  36. $grid->column('cost_pasters');
  37. $grid->column('limit')->help("限购规则:礼劵是按每月(自然月)限购,装扮是永久");
  38. $grid->column('sort')->editable(true);
  39. // $grid->column('created_at');
  40. // $grid->column('updated_at');
  41. $grid->filter(function (Grid\Filter $filter) {
  42. $filter->equal('id');
  43. });
  44. $grid->model()->orderBy("sort");
  45. $grid->enableDialogCreate();
  46. $grid->setDialogFormDimensions('50%', '60%');
  47. $grid->withBorder();
  48. $grid->addTableClass(['table-text-center']);
  49. $grid->actions(function (Grid\Displayers\Actions $actions) {
  50. $actions->quickEdit(true);
  51. $actions->disableEdit();
  52. $actions->disableView();
  53. });
  54. $grid->tools(function (Grid\Tools $tools) {
  55. $tools->append('<a target="_blank" class="btn btn-primary grid-refresh btn-mini btn-outline" href="/admin/gift_records">兑换记录</a>');
  56. });
  57. //
  58. $grid->export()->rows(function ($rows) use ($types) {
  59. // dump($rows);
  60. foreach ($rows as &$row) {
  61. unset($row['attire.img_1']);
  62. $tmp = $row->toArray();
  63. $row['type'] = $types[$row['type']];
  64. // dd($tmp);
  65. $row['attire.name'] = $tmp['attire']? $tmp['attire']['name']:'-';
  66. $row['attire.cate'] = $tmp['attire']? $tmp['attire']['cate']:'-';
  67. }
  68. //
  69. return $rows;
  70. });
  71. });
  72. }
  73. /**
  74. * Make a show builder.
  75. *
  76. * @param mixed $id
  77. *
  78. * @return Show
  79. */
  80. protected function detail($id)
  81. {
  82. return Show::make($id, new Gift(), function (Show $show) {
  83. $show->field('id');
  84. $show->field('type');
  85. $show->field('attire_id');
  86. $show->field('limit');
  87. $show->field('sort');
  88. $show->field('created_at');
  89. $show->field('updated_at');
  90. });
  91. }
  92. /**
  93. * Make a form builder.
  94. *
  95. * @return Form
  96. */
  97. protected function form()
  98. {
  99. return Form::make(new Gift(), function (Form $form) {
  100. $form->radio('type')
  101. ->when(1, function (Form $form) {
  102. $form->image('img','礼劵图片')->autoUpload();
  103. })->when(2, function (Form $form) {
  104. $form->selectTable('attire_id', '装扮') // 设置渲染类实例,并传递自定义参数
  105. ->title('装扮列表')
  106. ->dialogWidth('50%') // 弹窗宽度,默认 800px
  107. ->from(AttireTable::make())
  108. ->model(\App\Models\Attire::class, 'id', 'name')
  109. ->default(0);
  110. })->options([1=>'礼劵',2=>'装扮'])
  111. ->required()
  112. ->default(2);
  113. $form->textarea("info")->help("建议字数控制在40字左右,超出会省略...")->required();
  114. $form->number('cost_pasters')->default(0)->required()->help("限购规则:礼劵是每月限购,装扮是永久");
  115. $form->number('limit')->default(1)->required();
  116. $form->number('sort')->help("数字大的优先展示");
  117. });
  118. }
  119. }