链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.7 KiB

  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Repositories\v3\Banners;
  4. use Dcat\Admin\Form;
  5. use Dcat\Admin\Grid;
  6. use Dcat\Admin\Show;
  7. use Dcat\Admin\Controllers\AdminController;
  8. use App\Models\ImsCjdcMarket as MarketModel;
  9. use App\Models\v3\Banners as BannersModel;
  10. class BannersController extends AdminController
  11. {
  12. /**
  13. * Make a grid builder.
  14. *
  15. * @return Grid
  16. */
  17. protected function grid()
  18. {
  19. return Grid::make(new Banners(), function (Grid $grid) {
  20. $marketList = MarketModel::getMarket();
  21. $grid->column('id')->sortable();
  22. $grid->column('market_ids','适用市场')->display(function($marketIds) use($marketList){
  23. $item = '';
  24. if(!empty($marketIds)){
  25. foreach($marketIds as $value){
  26. $item .= isset($marketList[$value])?$marketList[$value].'</br>' : '';
  27. }
  28. }
  29. return $item;
  30. });
  31. $grid->column('title');
  32. $grid->column('cover_url')->image('',100);
  33. $grid->column('bg_color')->display(function($bgColor){
  34. return "<span style='display: block;color: $bgColor;width: 10px;height: 20px;'></span>";
  35. });
  36. $grid->column('cover_type_text');
  37. $grid->column('path');
  38. $grid->column('path_type_text');
  39. $grid->column('type_text');
  40. $grid->column('sort')->sortable();
  41. $grid->column('status')->switch();
  42. // ->using(BannersModel::$_status)->label(['default' => 'primary',1 => 'primary', 0 => 'danger']);
  43. $grid->model()->orderby('id','desc');
  44. $grid->filter(function (Grid\Filter $filter) {
  45. $filter->equal('id');
  46. });
  47. });
  48. }
  49. /**
  50. * Make a show builder.
  51. *
  52. * @param mixed $id
  53. *
  54. * @return Show
  55. */
  56. protected function detail($id)
  57. {
  58. return Show::make($id, new Banners(), function (Show $show) {
  59. $show->row(function (Show\Row $show) {
  60. $show->width(6)->field('id');
  61. $show->width(6)->field('market_id')->as(function ($marketId){
  62. $market = MarketModel::getMarketInfo($marketId,'name');
  63. return empty($market) ? '' : $market->name;
  64. });
  65. $show->width(6)->field('title');
  66. $show->width(6)->field('sub_title');
  67. $show->width(6)->field('cover_type_text');
  68. $show->width(6)->field('cover')->image();
  69. $show->width(6)->field('bg_color')->color();
  70. $show->width(6)->field('type_text');
  71. });
  72. $show->row(function (Show\Row $show) {
  73. $show->width(6)->field('path_type_text');
  74. $show->width(6)->field('path');
  75. $show->width(6)->field('status_text');
  76. $show->width(6)->field('sort');
  77. $show->width(6)->field('created_at');
  78. $show->width(6)->field('updated_at');
  79. });
  80. });
  81. }
  82. /**
  83. * Make a form builder.
  84. *
  85. * @return Form
  86. */
  87. protected function form()
  88. {
  89. return Form::make(new Banners(), function (Form $form) {
  90. $form->column(6, function (Form $form) {
  91. $form->hidden('id');
  92. // 市场
  93. $marketList = MarketModel::getMarket();
  94. $form->hidden('market_id')->options($marketList)->default(0);
  95. // 多个市场
  96. $form->multipleSelect('market_ids')->options($marketList);
  97. $form->select('type')->options(BannersModel::$_TYPE)->required();
  98. $form->text('title')->required();
  99. $form->text('sub_title');
  100. $form->number('sort')->default(0);
  101. $form->switch('status')
  102. ->customFormat(function ($v) {
  103. return $v == 1 ? 1 : 0;
  104. })
  105. ->saving(function ($v) {
  106. return $v == 1 ? 1 : 0;
  107. });
  108. });
  109. $form->column(6, function (Form $form) {
  110. $form->color('bg_color')->required()->default('#FF7B21');
  111. $form->image('cover')->autoUpload()->required()->uniqueName();
  112. $form->select('cover_type')->options(BannersModel::$_COVER_TYPE)->required();
  113. $form->text('path')->default('');
  114. $form->select('path_type')->options(BannersModel::$_PATH_TYPE)->default('');
  115. });
  116. $form->disableResetButton();
  117. $form->disableViewCheck();
  118. $form->disableEditingCheck();
  119. $form->disableCreatingCheck();
  120. });
  121. }
  122. }