DistProductAuditController.php 5.6 KB

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