WxUniversityController.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Actions\Grid\System\UniversityCancelCertifyAction;
  4. use App\Admin\Actions\Grid\System\UniversityCanCertifyAction;
  5. use App\Admin\Repositories\WxUniversity;
  6. use App\Wen\Utils\AdminUtils;
  7. use App\Wen\Utils\Settings;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Form\NestedForm;
  10. use Dcat\Admin\Grid;
  11. use Dcat\Admin\Show;
  12. use Dcat\Admin\Http\Controllers\AdminController;
  13. use Illuminate\Http\Request;
  14. class WxUniversityController extends AdminController
  15. {
  16. public function universities(Request $request)
  17. {
  18. $q = $request->get('q');
  19. return \App\Models\WxUniversity::where('name', 'like', "%$q%")->orWhere('sid', $q)->orWhere('sid', '-1')->paginate(null, ['sid as id', 'name as text']);
  20. }
  21. /**
  22. * Make a grid builder.
  23. *
  24. * @return Grid
  25. */
  26. protected function grid()
  27. {
  28. return Grid::make(new WxUniversity(), function (Grid $grid) {
  29. global $__MINI_GLOBAL_TENANT_ID__;
  30. $grid->model()->orderBy('order', 'asc');
  31. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  32. $grid->model()->whereIn('sid', Settings::get('tenant_'.$__MINI_GLOBAL_TENANT_ID__.'_with_student_certify', []));
  33. }
  34. $grid->column('sid')->sortable();
  35. $grid->quickSearch(['sid', 'name','charge','location'])->placeholder('搜索学校id,名字,主管部门,所在地...')->width(50);
  36. $grid->column('name')->editable();
  37. // $grid->column('order');
  38. $grid->column('charge');
  39. $grid->column('location');
  40. $grid->column('email_suffix')->editable();
  41. // $grid->column('class_time')->limit(10);
  42. $grid->column('level')->using([1=>'本科',2=>'专科', 3=>'成人高等学校'])->label([
  43. 1=>'green',
  44. 2=>'pink',
  45. 3=>'blue'
  46. ])->sortable();
  47. $grid->column('private')->using([0=>'',1=>'民办'])->label([
  48. 0=>'',
  49. 1=>'default',
  50. ])->sortable();
  51. $grid->column('is_certify')->switch();
  52. if(env('APP_URL', '') == 'https://mini.minisns.cn'){
  53. $grid->column('jiaowu_url')->display(function ($v){
  54. if($v){
  55. return '<a href="'.$v.'" target="_blank">链接</a>';
  56. }
  57. return '';
  58. });
  59. }
  60. $grid->filter(function (Grid\Filter $filter) {
  61. $filter->equal('sid');
  62. $filter->equal('is_certify')->radio([0=>'不开放', 1=>'开放'])->default(0);
  63. });
  64. // $grid->disableEditButton();
  65. $grid->disableCreateButton();
  66. $grid->disableDeleteButton();
  67. $grid->disableViewButton();
  68. $grid->disableBatchDelete();
  69. $grid->batchActions(function ($batch) {
  70. $batch->add(new UniversityCanCertifyAction());
  71. $batch->add(new UniversityCancelCertifyAction());
  72. });
  73. });
  74. }
  75. /**
  76. * Make a show builder.
  77. *
  78. * @param mixed $id
  79. *
  80. * @return Show
  81. */
  82. protected function detail($id)
  83. {
  84. return Show::make($id, new WxUniversity(), function (Show $show) {
  85. $show->field('sid');
  86. $show->field('name');
  87. $show->field('order');
  88. $show->field('charge');
  89. $show->field('location');
  90. $show->field('email_suffix');
  91. $show->field('class_time');
  92. $show->field('sem_start_date_1');
  93. $show->field('sem_end_date_1');
  94. $show->field('sem_start_date_2');
  95. $show->field('sem_end_date_2');
  96. $show->field('level');
  97. $show->field('private');
  98. $show->field('is_certify');
  99. if(env('APP_URL', '') == 'https://mini.minisns.cn'){
  100. $show->field('jiaowu_url');
  101. }
  102. $show->disableEditButton();
  103. $show->disableDeleteButton();
  104. });
  105. }
  106. /**
  107. * Make a form builder.
  108. *
  109. * @return Form
  110. */
  111. protected function form()
  112. {
  113. return Form::make(new WxUniversity(), function (Form $form) {
  114. $form->display('sid');
  115. $form->display('name');
  116. $modle = $form->model();
  117. $form->text('order')->default(0)->help('虽然一般是越大越靠前,但这个地方是越小越靠前');
  118. $form->text('email_suffix');
  119. $form->dateRange('sem_start_date_1', 'sem_end_date_1', '第一学期(下半年)');
  120. $form->dateRange('sem_start_date_2', 'sem_end_date_2', '第二学期(上半年)');
  121. $form->html(function () {
  122. return '<div style="background-color: #efe8d9; color: #dea550; padding: 10px;">提示: 必须是12节课,就是添加12个。</div>';
  123. }, '');
  124. $class_arr = [];
  125. $class_time_origin = [];
  126. if(is_string($modle->class_time)){
  127. $class_time_origin = json_decode($modle->class_time, true);
  128. }
  129. if(_empty_($class_time_origin)){
  130. $class_time_origin = json_decode('[{"startTime":"08:00:00","endTime":"08:40:00"},{"startTime":"08:45:00","endTime":"09:25:00"},{"startTime":"09:40:00","endTime":"10:20:00"},{"startTime":"10:35:00","endTime":"11:15:00"},{"startTime":"11:20:00","endTime":"12:00:00"},{"startTime":"13:30:00","endTime":"14:10:00"},{"startTime":"14:15:00","endTime":"14:55:00"},{"startTime":"15:10:00","endTime":"15:50:00"},{"startTime":"15:55:00","endTime":"16:35:00"},{"startTime":"18:30:00","endTime":"19:10:00"},{"startTime":"19:20:00","endTime":"20:00:00"},{"startTime":"20:20:00","endTime":"20:50:00"}]', true);
  131. }
  132. if($class_time_origin){
  133. foreach ($class_time_origin as $class){
  134. $class_arr[] = [
  135. 'startTime' => $class['startTime'],
  136. 'endTime' => $class['endTime'],
  137. ];
  138. }
  139. }
  140. $form->table('class_time2', '课程时间', function (NestedForm $table) {
  141. $table->time('startTime', '开始时间');
  142. $table->time('endTime', '结束时间');
  143. })->saveAsJson()->value($class_arr);
  144. $form->switch('is_certify')->default(1);
  145. $form->text('class_time')->disable()->display(false);
  146. if(env('APP_URL', '') == 'https://mini.minisns.cn'){
  147. $form->text('jiaowu_url');
  148. }
  149. $form->saving(function (Form $form){
  150. $class_time_origin = [];
  151. if(is_array($form->class_time2)){
  152. $class_time_origin = json_decode(AdminUtils::_table_data(array_values($form->class_time2)), true);
  153. }else if(is_string($form->class_time2)){
  154. $class_time_origin = json_decode(AdminUtils::_table_data(array_values(json_decode($form->class_time2, true))));
  155. }
  156. $class_arr = [];
  157. if($class_time_origin){
  158. foreach ($class_time_origin as $class){
  159. $class_arr[] = [
  160. 'startTime' => $class['startTime'],
  161. 'endTime' => $class['endTime'],
  162. ];
  163. }
  164. }
  165. $form->class_time = $class_arr;
  166. $form->deleteInput(['class_time2']);
  167. });
  168. $form->deleting(function (Form $form){
  169. global $__MINI_GLOBAL_TENANT_ID__;
  170. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  171. return $form->response()->error('权限不足,不可以删除其他分站对象');
  172. }
  173. });
  174. });
  175. }
  176. }