链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
4.5 KiB

  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Repositories\v3\ServicePersonnel;
  4. use Dcat\Admin\Form;
  5. use Dcat\Admin\Grid;
  6. use Dcat\Admin\Show;
  7. use Dcat\Admin\Controllers\AdminController;
  8. use App\Models\v3\ServicePersonnel as ServicePersonnelModel;
  9. use App\Models\v3\Market as MarketModel;
  10. use App\Models\v3\User as UserModel;
  11. use App\Admin\Common\WeChatQrCode;
  12. class ServicePersonnelController extends AdminController
  13. {
  14. /**
  15. * Make a grid builder.
  16. *
  17. * @return Grid
  18. */
  19. protected function grid()
  20. {
  21. return Grid::make(new ServicePersonnel(), function (Grid $grid) {
  22. //市场
  23. $marketList = MarketModel::getMarketArray();
  24. $grid->column('id')->sortable();
  25. $grid->column('head_url')->image('',50);
  26. $grid->column('name');
  27. $grid->column('tel');
  28. $grid->column('market_id')->display(function($marketId) use ($marketList){
  29. return isset($marketList[$marketId]) ? $marketList[$marketId] : '';
  30. });
  31. $grid->column('type_text');
  32. $grid->column('qr_url')->image('',50);
  33. $grid->column('status')->using(ServicePersonnelModel::$_STATUS)->label(config('label.status_label'));
  34. $grid->model()->orderby('id','desc');
  35. $grid->filter(function (Grid\Filter $filter) use($marketList){
  36. $filter->equal('id');
  37. $filter->like('name');
  38. $filter->equal('type')->select(ServicePersonnelModel::$_TYPE);
  39. $filter->equal('market_id')->select($marketList);
  40. });
  41. // 每页10条
  42. $grid->paginate(10);
  43. });
  44. }
  45. /**
  46. * Make a show builder.
  47. *
  48. * @param mixed $id
  49. *
  50. * @return Show
  51. */
  52. protected function detail($id)
  53. {
  54. return Show::make($id, new ServicePersonnel(), function (Show $show) {
  55. $show->field('id');
  56. $show->field('user_id');
  57. $show->field('name');
  58. $show->field('tel');
  59. $show->field('market_id');
  60. $show->field('type');
  61. $show->field('status');
  62. $show->field('qr_url');
  63. $show->field('head_url');
  64. $show->field('created_at');
  65. $show->field('updated_at');
  66. });
  67. }
  68. /**
  69. * Make a form builder.
  70. *
  71. * @return Form
  72. */
  73. protected function form()
  74. {
  75. return Form::make(new ServicePersonnel(), function (Form $form) {
  76. $userId = $form->model()->user_id;
  77. //市场
  78. $marketList = MarketModel::getMarketArray();
  79. // 用户
  80. $userList = UserModel::getUserArray();
  81. // 已绑定的用户
  82. $userHas = ServicePersonnelModel::pluck('user_id')->toArray();
  83. foreach($userList as $ku => $uv){
  84. if($ku != 0 && in_array($ku,$userHas) && !in_array($userId,$userHas)){
  85. unset($userList[$ku]);
  86. }
  87. }
  88. $form->column(6,function(Form $form){
  89. $form->hidden('id');
  90. $form->text('name')->required();
  91. $form->text('tel')->required();
  92. $form->image('head_url')->required();
  93. });
  94. $form->column(6,function(Form $form) use($marketList,$userList){
  95. $form->select('type')->options(ServicePersonnelModel::$_TYPE)->required();
  96. $form->select('market_id')->options($marketList)->required();
  97. $form->select('user_id')->options($userList)->required();
  98. $statusList = ServicePersonnelModel::$_STATUS;
  99. unset($statusList[0],$statusList[2]);
  100. $form->radio('status')->options($statusList)->default(1);
  101. });
  102. $form->saved(function(Form $form){
  103. $id = $form->getKey();
  104. if($form->isCreating && !empty($id)){
  105. $model = ServicePersonnelModel::find($id);
  106. $qrCode = new WeChatQrCode();
  107. // 生成专员二维码
  108. $qrCodeImg = $qrCode->getServicePersonnel($id);
  109. if($qrCodeImg['status']){
  110. $model->qr_url = $qrCodeImg['path'];
  111. $model->save();
  112. }
  113. }
  114. });
  115. $form->disableResetButton();
  116. $form->disableViewCheck();
  117. $form->disableEditingCheck();
  118. $form->disableCreatingCheck();
  119. });
  120. }
  121. }