DistAdminDistributorController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Grid\InitAppearance;
  4. use App\Admin\Repositories\BaseIso3166;
  5. use App\Admin\Repositories\DistAdminDistributor;
  6. use App\Admin\Repositories\DistAppearance;
  7. use App\Libraries\CommonHelper;
  8. use App\Models\DistProductCategory;
  9. use Dcat\Admin\Form;
  10. use Dcat\Admin\Grid;
  11. use Dcat\Admin\Show;
  12. use Dcat\Admin\Http\Controllers\AdminController;
  13. use Dcat\Admin\Layout\Content;
  14. use Dcat\Admin\Admin;
  15. use Illuminate\Support\Facades\DB;
  16. class DistAdminDistributorController extends AdminController
  17. {
  18. public function title()
  19. {
  20. return admin_trans( 'admin.distro_list');
  21. }
  22. /**
  23. * page index
  24. */
  25. public function index(Content $content)
  26. {
  27. return $content
  28. ->header($this->title())
  29. ->description('')
  30. ->breadcrumb(['text'=>'list','url'=>''])
  31. ->body($this->grid());
  32. }
  33. /**
  34. * Make a grid builder.
  35. *
  36. * @return Grid
  37. */
  38. protected function grid()
  39. {
  40. return Grid::make(DistAdminDistributor::with(['appearance']), function (Grid $grid) {
  41. //默认分页条数
  42. $grid->paginate(config('admin.per_page'));
  43. //指定视图,去掉删除按钮
  44. $grid->view('admin.grid.table');
  45. $grid->column('id')->sortable();
  46. $grid->column('client_code',admin_trans_label('client_code'))->width('15%');
  47. $grid->column('dist_email',admin_trans_label('email'));
  48. // $grid->column('dist_contact_number',admin_trans_label('contact_number'));
  49. // $grid->column('domain_type')->using(admin_trans_array(config('dictionary.domain_type')));
  50. // $grid->column('secondary_domain');
  51. // $grid->column('custom_domain');
  52. $grid->column('country',);
  53. $grid->column('enabled')->switch();
  54. $grid->column('created_at')->sortable();
  55. // 过滤
  56. $grid->filter(function (Grid\Filter $filter) {
  57. $filter->panel();
  58. $filter->expand();
  59. $filter->equal('dist_code',admin_trans_label('client_code') )->width(2);
  60. $filter->equal('secondary_domain')->width(2);
  61. $filter->equal('enabled')->select(admin_trans_array(config('dictionary.enabled')))->width(2);
  62. });
  63. // 排序
  64. $grid->model()->orderBy("id",'desc');
  65. //按钮
  66. $grid->showQuickEditButton();
  67. $grid->enableDialogCreate();
  68. $grid->disableEditButton();
  69. $grid->disableDeleteButton();
  70. //$grid->disableBatchDelete();
  71. //批量操作
  72. $grid->batchActions(function (Grid\Tools\BatchActions $batch) {
  73. $batch->disableDelete();
  74. $batch->add(new InitAppearance());
  75. });
  76. });
  77. }
  78. /**
  79. * Make a show builder.
  80. *
  81. * @param mixed $id
  82. *
  83. * @return Show
  84. */
  85. protected function detail($id)
  86. {
  87. return Show::make($id, DistAdminDistributor::with(['appearance']), function (Show $show) {
  88. $show->field('client_code',admin_trans_label('client_code'));
  89. $show->field('dist_email',admin_trans_label('email'));
  90. $show->field('dist_contact_number',admin_trans_label('contact_number'));
  91. $show->field('country');
  92. $show->field('country_alpha_2');
  93. $show->field('country_lang');
  94. $show->field('address');
  95. // $show->field('domain_type')->using([0=>admin_trans_field('secondary_domain'),1=>admin_trans_field('custom_domain')]);
  96. // $show->field('secondary_domain');
  97. // $show->field('custom_domain');
  98. $show->field('created_at');
  99. $show->field('updated_at');
  100. $show->field('enabled')->using(admin_trans_array(config('dictionary.enabled')));
  101. // 按钮
  102. $show->disableDeleteButton();
  103. });
  104. }
  105. /**
  106. * Make a form builder.
  107. *
  108. * @return Form
  109. */
  110. protected function form()
  111. {
  112. return Form::make(new DistAdminDistributor(), function (Form $form) {
  113. $form->text('client_code',admin_trans_label('client_code'))->width(9,3)->required();
  114. $form->text('dist_email',admin_trans_label('email'))->width(9,3);
  115. $form->text('dist_contact_number',admin_trans_label('contact_number'))->width(9,3);
  116. $form->select('country')
  117. ->options(BaseIso3166::selectOptions())
  118. ->width(9,3)->required();
  119. $form->text('country_lang')->width(9,3)->required()->help('Please enter the language code, such as en ru es');
  120. $form->text('address')->width(9,3);
  121. $form->switch('enabled')->width(9,3)->default(1);
  122. //保存前回调
  123. $form->saving(function (Form $form) {
  124. $form->country_alpha_2 = BaseIso3166::getAlpha2($form->country);
  125. });
  126. //保存后回调
  127. $form->saved(function (Form $form, $result) {
  128. if ($form->isCreating()) {
  129. //创建后创建默认分类
  130. $newId = $form->getKey();
  131. //初始化分销商
  132. DistAdminDistributor::initDist($newId);
  133. }
  134. });
  135. });
  136. }
  137. /*
  138. * 新增事件事务
  139. */
  140. public function store()
  141. {
  142. try {
  143. DB::beginTransaction();
  144. $result = parent::store();
  145. DB::commit();
  146. return $result;
  147. } catch (\Exception $e) {
  148. DB::rollBack();
  149. throw $e;
  150. }
  151. }
  152. }