DistProductAuditController.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Grid\AppearanceImport;
  4. use App\Admin\Actions\Grid\ProductAudit;
  5. use App\Admin\Repositories\DistAdminDistributor;
  6. use App\Admin\Repositories\DistAppearance;
  7. use App\Admin\Repositories\DistProduct;
  8. use App\Admin\Repositories\DistProductCategory;
  9. use App\Libraries\CommonHelper;
  10. use Dcat\Admin\Admin;
  11. use Dcat\Admin\Form;
  12. use Dcat\Admin\Grid;
  13. use Dcat\Admin\Http\Controllers\AdminController;
  14. use Dcat\Admin\Layout\Content;
  15. use Dcat\Admin\Show;
  16. class DistProductAuditController extends AdminController
  17. {
  18. protected function title()
  19. {
  20. return admin_trans('admin.product');
  21. }
  22. /**
  23. * page index
  24. */
  25. public function index(Content $content)
  26. {
  27. return $content
  28. ->header(admin_trans( 'admin.products_list'))
  29. ->description(admin_trans('admin.all'))
  30. ->description('')
  31. //->breadcrumb(['text'=>'Product Management','url'=>''])
  32. ->body($this->grid());
  33. }
  34. /**
  35. * Make a grid builder.
  36. *
  37. * @return Grid
  38. */
  39. protected function grid()
  40. {
  41. return Grid::make(DistProduct::with(['distProductCategory','images']), function (Grid $grid) {
  42. //默认分页条数
  43. $grid->paginate(config('admin.per_page'));
  44. //$grid->model()->where('dist_id', getDistributorId());
  45. $grid->column('id')->display(function () {
  46. return $this->_index+1;
  47. });
  48. $grid->column('title');
  49. $grid->column('sku');
  50. $grid->column('dist_product_category.name',admin_trans_label('category_name'));
  51. $grid->column('images')->display(function ($images) {
  52. $images = $images->toArray();
  53. $dataImages = array_column($images, 'image_url');
  54. // 限制最多显示1个缩略图
  55. $dataImages = array_slice($dataImages, 0, 1);
  56. return CommonHelper::displayImage($dataImages,100);
  57. });
  58. $grid->column('dist_id',admin_trans_label('distributor_name')) ->display(function () {
  59. return DistAdminDistributor::getClientCodeById($this->dist_id);
  60. });
  61. $grid->column('status')->using(admin_trans_array(config('dictionary.dist_product_status')))->label([
  62. -1 => 'danger',
  63. 0 => 'gray',
  64. 1 => 'orange1',
  65. 2 => 'success',
  66. ])->display(function($status) {
  67. if ($this->status == -1) {
  68. return '<span class="status-popover" data-container="body" data-toggle="popover" data-placement="top" data-content="'.$this->review_reply.'">'.$status.'</span>';
  69. }
  70. return $status;
  71. });
  72. $grid->column('created_at')->sortable();
  73. //$grid->column('updated_at')->sortable();
  74. // 筛选
  75. $grid->filter(function (Grid\Filter $filter) {
  76. $filter->panel();
  77. $filter->expand();
  78. $filter->like('title')->width(2);
  79. $filter->equal('sku')->width(2);
  80. $filter->equal('status')->select(admin_trans_array(config('dictionary.dist_product_status')))->width(2);
  81. $filter->equal('dist_id',admin_trans_label('distributor_name'))->select(DistAdminDistributor::selectOptionsNew(300))->width(3);
  82. });
  83. //排序
  84. $grid->model()->orderBy('created_at', 'desc')->orderBy('id', 'desc');
  85. //操作
  86. $grid->actions(function (Grid\Displayers\Actions $actions) {
  87. if ($this->status == 1) {
  88. $actions->append(new ProductAudit());
  89. }
  90. });
  91. //按钮
  92. //$grid->disableViewButton();
  93. $grid->disableDeleteButton();
  94. $grid->disableEditButton();
  95. $grid->disableBatchDelete();
  96. $this->addGridJS();
  97. });
  98. }
  99. /**
  100. * Make a show builder.
  101. *
  102. * @param mixed $id
  103. *
  104. * @return Show
  105. */
  106. protected function detail($id)
  107. {
  108. return Show::make($id, DistProduct::with(['distProductCategory','images']), function (Show $show) {
  109. $show->field('title');
  110. $show->field('sku');
  111. $show->field('dist_product_category.name',admin_trans_label('category_name'));
  112. $show->field('keywords');
  113. $show->field('description');
  114. $show->field('issuance_date');
  115. $show->field('parameters',admin_trans_label('attribute_name'))->as(function ($items) {
  116. if (is_array($items)) {
  117. // 创建表格的表头
  118. $table = '<table class="table table-bordered table-condensed">';
  119. // 遍历数组并将数据填充到表格中
  120. foreach ($items as $item) {
  121. $table .= '<tr>';
  122. $table .= '<td style="vertical-align: middle !important;width: 20%">' . $item['key'] . '</td>'; // 商品名称
  123. $table .= '<td style="vertical-align: middle !important;">' . $item['value'] . '</td>'; // 数量
  124. $table .= '</tr>';
  125. }
  126. $table .= '</table>';
  127. return $table;
  128. }
  129. return ''; // 当没有数组数据时
  130. })->unescape();
  131. $show->field('images')->as(function ($images) {
  132. // 开始生成 HTML
  133. $dataImages = array_column($images, 'image_url');
  134. return CommonHelper::displayImage($dataImages,150);
  135. })->unescape();
  136. $show->field('content')->unescape();
  137. $show->field('seo_title');
  138. $show->field('seo_keywords');
  139. $show->field('seo_description');
  140. $show->field('order');
  141. $show->field('enabled')->using(admin_trans_array(config('dictionary.enabled')));
  142. $show->field('created_at');
  143. $show->field('updated_at');
  144. $show->disableEditButton();
  145. $show->disableDeleteButton();
  146. });
  147. }
  148. private function addGridJS()
  149. {
  150. Admin::script(
  151. <<<JS
  152. $('.status-popover').popover({
  153. container: 'body',
  154. trigger: 'hover'
  155. })
  156. JS
  157. );
  158. }
  159. }