LibraryTaskController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Repositories\LibraryTask;
  4. use App\Jobs\ImportTaskJob;
  5. use App\Models\LibraryCategory;
  6. use Dcat\Admin\Admin;
  7. use Dcat\Admin\Form;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Show;
  10. use Dcat\Admin\Http\Controllers\AdminController;
  11. use Illuminate\Http\Request;
  12. class LibraryTaskController extends AdminController
  13. {
  14. /**
  15. * Make a grid builder.
  16. *
  17. * @return Grid
  18. */
  19. protected function grid()
  20. {
  21. return Grid::make(new LibraryTask(['category']), function (Grid $grid) {
  22. $grid->model()->orderByDesc('id');
  23. $grid->column('id')->sortable();
  24. $grid->column('name');
  25. $grid->column('category.name', '分类名称');
  26. // $grid->column('path');
  27. $grid->column('message', '结果');
  28. // $grid->column('admin');
  29. $grid->column('status', '状态')->using(\App\Models\LibraryTask::statusMaps);
  30. // $grid->column('created_at');
  31. $grid->column('updated_at')->sortable();
  32. $grid->filter(function (Grid\Filter $filter) {
  33. $filter->equal('id');
  34. $filter->like('name');
  35. $filter->equal('category_id', '分类')->select(LibraryCategory::selectOptions());
  36. });
  37. $grid->actions(function (Grid\Displayers\Actions $actions) {
  38. $actions->prepend('<a href="/admin/library/task-re-import?id=' . $actions->getKey() . '" ><i title="重试导入" class="fa fa-circle-o-notch"></i></a> &nbsp;');
  39. });
  40. $grid->tools('<a target="_blank" href="/templates/books.xlsx" class="btn btn-primary ">下载模版</a>');
  41. });
  42. }
  43. /**
  44. * Make a show builder.
  45. *
  46. * @param mixed $id
  47. *
  48. * @return Show
  49. */
  50. protected function detail($id)
  51. {
  52. return Show::make($id, new LibraryTask(), function (Show $show) {
  53. $show->field('id');
  54. $show->field('name');
  55. $show->field('category_id');
  56. $show->field('path');
  57. $show->field('result');
  58. $show->field('admin_id');
  59. $show->field('status');
  60. $show->field('created_at');
  61. $show->field('updated_at');
  62. });
  63. }
  64. /**
  65. * Make a form builder.
  66. *
  67. * @return Form
  68. */
  69. protected function form()
  70. {
  71. return Form::make(new LibraryTask(), function (Form $form) {
  72. $form->display('id');
  73. $form->text('name')->required();
  74. $form->select('category_id')->options(LibraryCategory::selectOptions())->required();
  75. $form->file('path')->autoUpload()->uniqueName()->required();
  76. $form->hidden('admin_id')->value(Admin::user()->id);
  77. $form->disableCreatingCheck();
  78. $form->disableDeleteButton();
  79. $form->disableEditingCheck();
  80. $form->defaultViewChecked();
  81. $form->saved(function (Form $form) {
  82. dispatch(new ImportTaskJob($form->getKey()));
  83. return $form->response()->success('保存成功')->redirect('/library/task');
  84. });
  85. });
  86. }
  87. /**
  88. * 重试导入
  89. * @param Request $request
  90. * @return mixed
  91. */
  92. public function reImport(Request $request)
  93. {
  94. $id = $request->get('id');
  95. dispatch(new ImportTaskJob($id));
  96. return $this->response()->success("重试成功")->refresh();
  97. }
  98. }