MexAdminOperationController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Module\Mex\AdminControllers;
  3. use App\Module\Mex\Repositories\MexAdminOperationRepository;
  4. use App\Module\Mex\Models\MexAdminOperation;
  5. use App\Module\Mex\Enums\AdminOperationType;
  6. use Spatie\RouteAttributes\Attributes\Resource;
  7. use UCore\DcatAdmin\AdminController;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Show;
  11. /**
  12. * 农贸市场管理员操作记录
  13. *
  14. * 路由:/admin/mex-admin-operations
  15. */
  16. #[Resource('mex-admin-operations', names: 'dcat.admin.mex-admin-operations')]
  17. class MexAdminOperationController extends AdminController
  18. {
  19. /**
  20. * 页面标题
  21. *
  22. * @var string
  23. */
  24. protected $title = '农贸市场管理员操作记录';
  25. /**
  26. * 列表页面
  27. *
  28. * @return Grid
  29. */
  30. protected function grid()
  31. {
  32. return Grid::make(new MexAdminOperationRepository(), function (Grid $grid) {
  33. $grid->column('id', 'ID')->sortable();
  34. $grid->column('admin_user_id', '管理员ID')->link(function ($value) {
  35. return admin_url("auth/users/{$value}");
  36. });
  37. $grid->column('operation_type', '操作类型')->using(AdminOperationType::getAll())->label([
  38. AdminOperationType::INJECT->value => 'warning',
  39. AdminOperationType::RECYCLE->value => 'info',
  40. AdminOperationType::PRICE_ADJUST->value => 'primary',
  41. AdminOperationType::FORCE_MATCH->value => 'danger',
  42. ]);
  43. $grid->column('item_id', '商品ID')->link(function ($value) {
  44. return $value ? admin_url("game-items/{$value}") : '-';
  45. });
  46. $grid->column('quantity', '数量')->display(function ($value) {
  47. return $value ? number_format($value) : '-';
  48. });
  49. $grid->column('price', '价格')->display(function ($value) {
  50. return $value ? number_format($value, 5) : '-';
  51. });
  52. $grid->column('total_amount', '总金额')->display(function ($value) {
  53. return $value ? number_format($value, 5) : '-';
  54. });
  55. $grid->column('reason', '操作原因')->limit(50);
  56. $grid->column('created_at', '操作时间')->sortable();
  57. // 禁用新增、编辑和删除
  58. $grid->disableCreateButton();
  59. $grid->disableEditButton();
  60. $grid->disableDeleteButton();
  61. // 筛选器
  62. $grid->filter(function (Grid\Filter $filter) {
  63. $filter->equal('id', 'ID');
  64. $filter->equal('admin_user_id', '管理员ID');
  65. $filter->equal('operation_type', '操作类型')->select(AdminOperationType::getAll());
  66. $filter->equal('item_id', '商品ID');
  67. $filter->between('quantity', '数量范围');
  68. $filter->between('price', '价格范围');
  69. $filter->between('total_amount', '总金额范围');
  70. $filter->like('reason', '操作原因');
  71. $filter->between('created_at', '操作时间')->datetime();
  72. });
  73. // 默认排序
  74. $grid->model()->orderBy('created_at', 'desc');
  75. // 工具栏
  76. $grid->tools(function (Grid\Tools $tools) {
  77. $tools->append('<div class="btn-group">
  78. <button type="button" class="btn btn-sm btn-outline-primary" onclick="showOperationStats()">
  79. <i class="fa fa-bar-chart"></i> 操作统计
  80. </button>
  81. </div>');
  82. });
  83. });
  84. }
  85. /**
  86. * 详情页面
  87. *
  88. * @param mixed $id
  89. * @return Show
  90. */
  91. protected function detail($id)
  92. {
  93. return Show::make($id, new MexAdminOperationRepository(), function (Show $show) {
  94. $show->field('id', 'ID');
  95. $show->field('admin_user_id', '管理员ID');
  96. $show->field('operation_type', '操作类型')->as(function ($value) {
  97. return AdminOperationType::from($value)->getDescription();
  98. });
  99. $show->field('item_id', '商品ID');
  100. $show->field('quantity', '数量');
  101. $show->field('price', '价格');
  102. $show->field('total_amount', '总金额');
  103. $show->field('reason', '操作原因');
  104. $show->field('operation_data', '操作数据')->json();
  105. $show->field('created_at', '操作时间');
  106. // 禁用编辑和删除
  107. $show->disableEditButton();
  108. $show->disableDeleteButton();
  109. });
  110. }
  111. /**
  112. * 表单页面(仅用于查看,不允许编辑)
  113. *
  114. * @return Form
  115. */
  116. protected function form()
  117. {
  118. return Form::make(new MexAdminOperationRepository(), function (Form $form) {
  119. $form->display('id', 'ID');
  120. $form->display('admin_user_id', '管理员ID');
  121. $form->display('operation_type', '操作类型')->with(function ($value) {
  122. return AdminOperationType::from($value)->getDescription();
  123. });
  124. $form->display('item_id', '商品ID');
  125. $form->display('quantity', '数量');
  126. $form->display('price', '价格');
  127. $form->display('total_amount', '总金额');
  128. $form->display('reason', '操作原因');
  129. $form->display('operation_data', '操作数据');
  130. $form->display('created_at', '操作时间');
  131. // 禁用保存按钮
  132. $form->disableSubmitButton();
  133. $form->disableResetButton();
  134. });
  135. }
  136. }