WxVoterPlayerController.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace App\Admin\Controllers\Voter;
  3. use App\Admin\Actions\Grid\Voter\RefusePlayerNoticeAction;
  4. use App\Admin\Repositories\Voter\WxVoterPlayer;
  5. use App\Models\Voter\WxVoter;
  6. use App\Wen\Utils\Settings;
  7. use Dcat\Admin\Form;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Show;
  10. use Dcat\Admin\Http\Controllers\AdminController;
  11. class WxVoterPlayerController extends AdminController
  12. {
  13. /**
  14. * Make a grid builder.
  15. *
  16. * @return Grid
  17. */
  18. protected function grid()
  19. {
  20. return Grid::make(new WxVoterPlayer(), function (Grid $grid) {
  21. $grid->model()->orderBy('id', 'desc');
  22. $grid->column('id')->sortable();
  23. $grid->column('owers', '头像')->display(function ($v) {
  24. return '<img src="' . ($this->ower['user_avatar'] ?? Settings::get('img_default', 'https://img.mini.minisns.cn/icons/dafault.png')) . '" style="border-radius:50px;width:30px;" />';
  25. })->width('50px');
  26. $grid->column('ower', '用户名称')->display(function ($v) {
  27. if($v && $v['user_name']){
  28. return '<a target="_blank" href="'.admin_url('users?id='.$v['id']).'">'.$v['user_name'].'</a>' ?? '用户已删除';
  29. }
  30. return '用户已删除';
  31. })->width('100px');
  32. $grid->column('voter_id');
  33. $grid->column('relative_id');
  34. $grid->column('show_name');
  35. $grid->column('work_name');
  36. // $grid->column('work_desc');
  37. $grid->column('img_urls')->display(function ($v){
  38. $str = '';
  39. if($v){
  40. foreach ($v as $img){
  41. $str .= '<a href="'.$img.'" target="_blank"><div style="background-image: url(\''.$img.'\');background-size: cover; width: 87px; height: 100px;"/></div></a>';
  42. break;
  43. }
  44. }
  45. return $str;
  46. });
  47. $grid->column('video_url')->display(function ($v){
  48. if($v){
  49. return '<video controls width="150">
  50. <source src="'.$v.'" type="video/mp4">
  51. 您的浏览器不支持 video 标签。
  52. </video>';
  53. }
  54. return '';
  55. });
  56. $grid->column('video_cover')->image();
  57. $grid->column('contact_text');
  58. $grid->column('status')->switch();
  59. // $grid->column('created_at');
  60. $grid->column('updated_at')->sortable();
  61. $grid->filter(function (Grid\Filter $filter) {
  62. $filter->equal('id');
  63. $filter->equal('voter_id');
  64. });
  65. $grid->actions(function (Grid\Displayers\Actions $actions) {
  66. $actions->append((new RefusePlayerNoticeAction())->setKey($this->id));
  67. });
  68. });
  69. }
  70. /**
  71. * Make a show builder.
  72. *
  73. * @param mixed $id
  74. *
  75. * @return Show
  76. */
  77. protected function detail($id)
  78. {
  79. return Show::make($id, new WxVoterPlayer(), function (Show $show) {
  80. $show->field('id');
  81. $show->field('user_id');
  82. $show->field('voter_id');
  83. $show->field('relative_id');
  84. $show->field('show_name');
  85. $show->field('work_name');
  86. $show->field('work_desc');
  87. $show->field('img_urls');
  88. $show->field('video_url');
  89. $show->field('video_cover');
  90. $show->field('contact_text');
  91. $show->field('status');
  92. $show->field('created_at');
  93. $show->field('updated_at');
  94. });
  95. }
  96. /**
  97. * Make a form builder.
  98. *
  99. * @return Form
  100. */
  101. protected function form()
  102. {
  103. return Form::make(new WxVoterPlayer(), function (Form $form) {
  104. $form->display('id');
  105. $form->select('user_id', '用户')->options(function ($id) {
  106. $user = \App\Models\User\WxUser::find($id);
  107. if ($user) {
  108. return [$user->id => $user->user_name];
  109. }
  110. })->ajax('select/users');
  111. $form->select('voter_id')->options(function ($id) {
  112. $user = WxVoter::find($id);
  113. if ($user) {
  114. return [$user->id => $user->title];
  115. }
  116. })->ajax('select/voters');
  117. $form->text('relative_id', '编号')->help('不能重复,建议从1开始加');
  118. $form->text('show_name');
  119. $form->text('work_name');
  120. $form->textarea('work_desc');
  121. $form->multipleImage('img_urls')->limit(100)->url('files/uploads')->uniqueName()->autoUpload()->saveAsJson();
  122. $form->text('video_url');
  123. $form->text('video_cover');
  124. $form->text('contact_text');
  125. $form->switch('status')->default(1);
  126. $form->display('created_at');
  127. $form->display('updated_at');
  128. $form->deleting(function (Form $form){
  129. global $__MINI_GLOBAL_TENANT_ID__;
  130. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  131. return $form->response()->error('权限不足,不可以删除其他分站对象');
  132. }
  133. });
  134. });
  135. }
  136. }