CourseUserController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Users\UserCourse;
  4. use App\Models\Course;
  5. use App\Models\CourseUser;
  6. use App\Models\User;
  7. use App\Services\Api\UserService;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Http\Controllers\AdminController;
  11. use Dcat\Admin\Show;
  12. class CourseUserController extends AdminController
  13. {
  14. /**
  15. * Make a grid builder.
  16. *
  17. * @return Grid
  18. */
  19. protected function grid()
  20. {
  21. $grid = new Grid(new CourseUser());
  22. $grid->model()->with(['user:id,name,avatar', 'course:id,name'])->orderByDesc('id');
  23. $grid->column('id')->sortable();
  24. $grid->column('user_id')->display(function () {
  25. if ($this->user) {
  26. $str = "";
  27. $str .= "<div style='margin-right:10px;display: flex;align-items: center'>";
  28. $str .= '<img data-action="preview-img" src="' . $this->user->avatar . '" style="max-width:50px;max-height:50px;cursor:pointer;margin-right:5px;" class="img img-thumbnail">';
  29. $str .= '<div>';
  30. $str .= '<p style="margin-bottom: 2px">ID:' . $this->user->id . '</p>';
  31. $str .= '<p>' . trans('user.fields.name') . ':' . $this->user->name . '</p>';
  32. $str .= "</div>";
  33. $str .= "</div>";
  34. return $str;
  35. } else {
  36. return '';
  37. }
  38. });
  39. $grid->column('course.name', trans('course-user.fields.course_id'));
  40. $grid->column('member_name');
  41. $grid->column('member_no');
  42. $grid->column('whs');
  43. $grid->column('type')->using([
  44. 1 => trans('course-user.fields.home'),
  45. 2 => trans('course-user.fields.vice')])->label(['', 'green', 'blue']);
  46. $grid->column('status')->using([
  47. 0 => trans('course-user.fields.check_pending'),
  48. 1 => trans('course-user.fields.pass'),
  49. 2 => trans('course-user.fields.refuse')])->label(['yellow', 'green', 'danger']);
  50. $grid->column('created_at');
  51. $grid->filter(function (Grid\Filter $filter) {
  52. $filter->panel();
  53. $filter->equal('id')->width(3);
  54. $filter->like('user.name')->width(3);
  55. $filter->like('course.name')->width(3);
  56. });
  57. //操作管理
  58. $grid->actions(function (Grid\Displayers\Actions $actions) {
  59. $actions->disableView();
  60. $actions->disableEdit();
  61. if ($actions->row->status == 0) {
  62. $actions->append(new UserCourse());
  63. }
  64. });
  65. return $grid;
  66. }
  67. /**
  68. * Make a form builder.
  69. * @return Form
  70. */
  71. protected function form()
  72. {
  73. return Form::make(new CourseUser(), function (Form $form) {
  74. $form->display('id');
  75. $form->select('course_id')->options(function () {
  76. return Course::query()->whereNull('deleted_at')->orderBy('id')->pluck('name', 'id');
  77. })->width(6)->required();
  78. $form->select('user_id')->options(function () {
  79. return User::query()->whereNull('deleted_at')->orderBy('id')->pluck('name', 'id');
  80. })->width(6)->required();
  81. $form->radio('type')->options([
  82. 1 => trans('course-user.fields.home'),
  83. 2 => trans('course-user.fields.vice')])->default(2)->width(6)->required();
  84. $form->text('member_name')->width(6)->required();
  85. $form->text('member_no')->width(6)->required();
  86. $form->text('whs')->width(6)->required();
  87. $form->hidden('action_from')->value(2); //后台添加
  88. $form->hidden('status')->value(1); //后台添加的直接通过
  89. $form->saving(function (Form $form) {
  90. if ($form->type == 1) {
  91. CourseUser::where('user_id', $form->user_id)->update(['type' => 2]);
  92. }
  93. });
  94. $form->saved(function (Form $form) {
  95. if ($form->isCreating()) {
  96. info($form->user_id);
  97. UserService::changeIntegral($form->user_id, 4); //赠送积分
  98. }
  99. });
  100. $form->footer(function ($footer) {
  101. // 去掉`查看`checkbox
  102. $footer->disableViewCheck();
  103. // 去掉`继续编辑`checkbox
  104. $footer->disableEditingCheck();
  105. // 去掉`继续创建`checkbox
  106. $footer->disableCreatingCheck();
  107. });
  108. });
  109. }
  110. }