链街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.

141 lines
5.0 KiB

  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Repositories\v3\LanzuEmployees;
  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\LanzuEmployees as EmployeesModel;
  9. use App\Models\v3\User as UserModel;
  10. use App\Models\v3\Store as StoreModel;
  11. use App\Models\v3\ServicePersonnel as ServicePersonnelModel;
  12. use App\Models\v3\Market as MarketModel;
  13. class LanzuEmployeesController extends AdminController
  14. {
  15. /**
  16. * Make a grid builder.
  17. *
  18. * @return Grid
  19. */
  20. protected function grid()
  21. {
  22. return Grid::make(new LanzuEmployees(), function (Grid $grid) {
  23. //市场
  24. $marketList = MarketModel::getMarketArray();
  25. $roleList = config('role.position');
  26. $grid->column('id')->sortable();
  27. $grid->column('market_id')->display(function($marketId) use($marketList){
  28. return isset($marketList[$marketId]) ? $marketList[$marketId] : '';
  29. });
  30. $grid->column('user_id')->display(function($userId){
  31. $item = UserModel::getUserInfo($userId,'real_name');
  32. return empty($item) ? '' : $item->real_name;
  33. });
  34. $grid->column('store_id')->display(function($storeId){
  35. $item = StoreModel::getStoreInfo($storeId,'name');
  36. return empty($item) ? '' : $item->name;
  37. });
  38. $grid->column('role')->display(function($role) use($roleList){
  39. $item = '';
  40. if(!empty($role) && is_array($role)){
  41. foreach($role as $key => $value){
  42. $item .= '【'.$roleList[$value].'】';
  43. }
  44. }
  45. return $item;
  46. });
  47. $grid->column('status')->width(3)->select(EmployeesModel::$_STATUS);
  48. $grid->filter(function (Grid\Filter $filter) use($marketList){
  49. $filter->equal('id');
  50. $filter->equal('market_id')->select($marketList);
  51. });
  52. $grid->model()->orderBy('status','desc');
  53. $grid->model()->orderBy('id','desc');
  54. // 每页10条
  55. $grid->paginate(10);
  56. });
  57. }
  58. /**
  59. * Make a show builder.
  60. *
  61. * @param mixed $id
  62. *
  63. * @return Show
  64. */
  65. protected function detail($id)
  66. {
  67. return Show::make($id, new LanzuEmployees(), function (Show $show) {
  68. $show->field('id');
  69. $show->field('user_id')->as(function($userId){
  70. $item = UserModel::getUserInfo($userId,'real_name');
  71. return empty($item) ? '' : $item->real_name;
  72. });
  73. $show->field('store_id')->as(function($storeId){
  74. $item = StoreModel::getStoreInfo($storeId,'name');
  75. return empty($item) ? '' : $item->name;
  76. });
  77. $show->field('market_id')->as(function($marketId){
  78. $item = MarketModel::getMarketInfo($marketId,'name');
  79. return empty($item) ? '' : $item->name;
  80. });
  81. $show->field('role')->as(function($role){
  82. $roleList = config('role.position');
  83. $item = '';
  84. if(!empty($role) && is_array($role)){
  85. foreach($role as $key => $value){
  86. $item .= ' 【'.$roleList[$value].'】';
  87. }
  88. }
  89. return $item;
  90. });
  91. $show->field('status_text');
  92. $show->field('note');
  93. $show->field('created_at');
  94. $show->field('updated_at');
  95. });
  96. }
  97. /**
  98. * Make a form builder.
  99. *
  100. * @return Form
  101. */
  102. protected function form()
  103. {
  104. return Form::make(new LanzuEmployees(), function (Form $form) {
  105. $userId = $form->model()->user_id;
  106. //市场
  107. $marketList = MarketModel::getMarketArray();
  108. //店铺
  109. $storeList = StoreModel::getStoreArray();
  110. // 用户
  111. $userList = UserModel::getUserArray();
  112. // 已绑定的用户
  113. $userHas = EmployeesModel::pluck('user_id')->toArray();
  114. foreach($userList as $ku => $uv){
  115. if($ku != 0 && in_array($ku,$userHas) && !in_array($userId,$userHas)){
  116. unset($userList[$ku]);
  117. }
  118. }
  119. $form->hidden('id');
  120. $form->select('user_id')->required()->options($userList);
  121. $form->select('market_id')->required()->options($marketList);
  122. $form->multipleSelect('role')->required()->options(config('role.position'));
  123. $form->select('store_id')->options($storeList);
  124. $form->text('note')->maxLength(200);
  125. $form->hidden('status')->default(1);
  126. $form->disableResetButton();
  127. $form->disableViewCheck();
  128. $form->disableEditingCheck();
  129. $form->disableCreatingCheck();
  130. });
  131. }
  132. }