diff --git a/app/Admin/Controllers/v3/LanzuEmployeesController.php b/app/Admin/Controllers/v3/LanzuEmployeesController.php index 7332ff6..16a5475 100644 --- a/app/Admin/Controllers/v3/LanzuEmployeesController.php +++ b/app/Admin/Controllers/v3/LanzuEmployeesController.php @@ -10,6 +10,8 @@ use Dcat\Admin\Controllers\AdminController; use App\Models\v3\LanzuEmployees as EmployeesModel; use App\Models\v3\User as UserModel; use App\Models\v3\Store as StoreModel; +use App\Models\v3\ServicePersonnel as ServicePersonnelModel; +use App\Models\v3\Market as MarketModel; class LanzuEmployeesController extends AdminController { @@ -21,26 +23,39 @@ class LanzuEmployeesController extends AdminController protected function grid() { return Grid::make(new LanzuEmployees(), function (Grid $grid) { + //市场 + $marketList = MarketModel::getMarketArray(); + $roleList = config('role.position'); + $grid->column('id')->sortable(); - $grid->column('market_id'); + $grid->column('market_id')->display(function($marketId) use($marketList){ + return isset($marketList[$marketId]) ? $marketList[$marketId] : ''; + }); $grid->column('user_id')->display(function($userId){ $item = UserModel::getUserInfo($userId,'real_name'); - return empty($item) ? '' : $$item['real_name']; + return empty($item) ? '' : $item->real_name; }); $grid->column('store_id')->display(function($storeId){ - $item = StoreModel::getStoreInfo($storeId,'real_name'); - return empty($item) ? '' : $$item['real_name']; + $item = StoreModel::getStoreInfo($storeId,'name'); + return empty($item) ? '' : $item->name; }); - $grid->column('role')->display(function($role){ - return $role; + $grid->column('role')->display(function($role) use($roleList){ + $item = ''; + if(!empty($role) && is_array($role)){ + foreach($role as $key => $value){ + $item .= '【'.$roleList[$value].'】'; + } + } + return $item; }); - $grid->column('status')->select(EmployeesModel::$_STATUS); + $grid->column('status')->width(3)->select(EmployeesModel::$_STATUS); - $grid->filter(function (Grid\Filter $filter) { + $grid->filter(function (Grid\Filter $filter) use($marketList){ $filter->equal('id'); - + $filter->equal('market_id')->select($marketList); }); + $grid->model()->orderBy('status','desc'); $grid->model()->orderBy('id','desc'); // 每页10条 $grid->paginate(10); @@ -58,11 +73,29 @@ class LanzuEmployeesController extends AdminController { return Show::make($id, new LanzuEmployees(), function (Show $show) { $show->field('id'); - $show->field('user_id'); - $show->field('store_id'); - $show->field('market_id'); - $show->field('role'); - $show->field('status'); + $show->field('user_id')->as(function($userId){ + $item = UserModel::getUserInfo($userId,'real_name'); + return empty($item) ? '' : $item->real_name; + }); + $show->field('store_id')->as(function($storeId){ + $item = StoreModel::getStoreInfo($storeId,'name'); + return empty($item) ? '' : $item->name; + }); + $show->field('market_id')->as(function($marketId){ + $item = MarketModel::getMarketInfo($marketId,'name'); + return empty($item) ? '' : $item->name; + }); + $show->field('role')->as(function($role){ + $roleList = config('role.position'); + $item = ''; + if(!empty($role) && is_array($role)){ + foreach($role as $key => $value){ + $item .= ' 【'.$roleList[$value].'】'; + } + } + return $item; + }); + $show->field('status_text'); $show->field('note'); $show->field('created_at'); $show->field('updated_at'); @@ -77,16 +110,32 @@ class LanzuEmployeesController extends AdminController protected function form() { return Form::make(new LanzuEmployees(), function (Form $form) { - $form->display('id'); - $form->text('user_id'); - $form->text('store_id'); - $form->text('market_id'); - $form->text('role'); - $form->text('status'); - $form->text('note'); + $userId = $form->model()->user_id; + //市场 + $marketList = MarketModel::getMarketArray(); + //店铺 + $storeList = StoreModel::getStoreArray(); + // 用户 + $userList = UserModel::getUserArray(); + // 已绑定的用户 + $userHas = EmployeesModel::pluck('user_id')->toArray(); + foreach($userList as $ku => $uv){ + if($ku != 0 && in_array($ku,$userHas) && !in_array($userId,$userHas)){ + unset($userList[$ku]); + } + } + $form->hidden('id'); + $form->select('user_id')->required()->options($userList); + $form->select('market_id')->required()->options($marketList); + $form->multipleSelect('role')->required()->options(config('role.position')); + $form->select('store_id')->options($storeList); + $form->text('note')->maxLength(200); - $form->display('created_at'); - $form->display('updated_at'); + $form->hidden('status')->default(1); + $form->disableResetButton(); + $form->disableViewCheck(); + $form->disableEditingCheck(); + $form->disableCreatingCheck(); }); } } diff --git a/app/Admin/Controllers/v3/UserController.php b/app/Admin/Controllers/v3/UserController.php new file mode 100644 index 0000000..957ae19 --- /dev/null +++ b/app/Admin/Controllers/v3/UserController.php @@ -0,0 +1,110 @@ +column('id')->sortable(); + $grid->column('avatar')->image('',50); + $grid->column('nick_name'); + $grid->column('openid'); + $grid->column('unionid'); + $grid->column('real_name')->editable(); + $grid->column('tel'); + $grid->column('gender_text'); + $grid->column('status')->using(UserModel::$_STATUS)->label(config('label.status_label')); + + $grid->filter(function (Grid\Filter $filter) { + $filter->equal('id'); + $filter->like('nick_name'); + $filter->like('real_name'); + }); + $grid->model()->orderBy('id','desc'); + // 每页10条 + $grid->paginate(10); + $grid->disableCreateButton(); + $grid->disableDeleteButton(); + $grid->disableEditButton(); + }); + } + + /** + * Make a show builder. + * + * @param mixed $id + * + * @return Show + */ + protected function detail($id) + { + return Show::make($id, new User(), function (Show $show) { + $show->field('id'); + $show->field('nick_name'); + $show->field('avatar')->image(); + $show->field('openid'); + $show->field('real_name'); + $show->field('tel'); + $show->field('unionid'); + $show->field('status'); + $show->field('country'); + $show->field('province'); + $show->field('city'); + $show->field('gender'); + $show->field('language'); + $show->field('created_at'); + $show->field('updated_at'); + + $show->panel()->tools(function ($tools) { + $tools->disableEdit(); + // $tools->disableList(); + $tools->disableDelete(); + // 显示快捷编辑按钮 + // $tools->showQuickEdit(); + }); + }); + } + + /** + * Make a form builder. + * + * @return Form + */ + protected function form() + { + return Form::make(new User(), function (Form $form) { + $form->hidden('id'); + $form->text('nick_name'); + $form->image('avatar'); + $form->text('openid'); + $form->text('real_name'); + $form->tel('tel'); + $form->text('unionid'); + $form->text('status'); + $form->text('country'); + $form->text('province'); + $form->text('city'); + $form->radio('gender')->options(UserModel::$_GENDER); + $form->text('language'); + + $form->disableResetButton(); + $form->disableViewCheck(); + $form->disableEditingCheck(); + $form->disableCreatingCheck(); + }); + } +} diff --git a/app/Admin/Repositories/v3/User.php b/app/Admin/Repositories/v3/User.php new file mode 100644 index 0000000..a5a1297 --- /dev/null +++ b/app/Admin/Repositories/v3/User.php @@ -0,0 +1,16 @@ +resource('/employees', 'v3\LanzuEmployeesController'); + $router->resource('/user', 'v3\UserController'); + //地区 $router->any('/api/area', 'LanzuArea@getArea'); }); diff --git a/app/Models/v3/LanzuEmployees.php b/app/Models/v3/LanzuEmployees.php index 6736577..d213617 100644 --- a/app/Models/v3/LanzuEmployees.php +++ b/app/Models/v3/LanzuEmployees.php @@ -16,13 +16,15 @@ class LanzuEmployees extends Model /* 查询记录数 limit */ protected $perPage = 10; - + protected $casts = [ + 'role'=>'array', + ]; public static $_TYPE= ['']; public static $_STATUS = [-1=>'离职',0=>'禁用',1=>'正常']; protected $appends = [ - 'is_rest_text', - 'is_open_text' + 'type_text', + 'status_text' ]; public function getTypeTextAttribute($value) @@ -30,7 +32,7 @@ class LanzuEmployees extends Model $value = $value ? $value : $this->type; return isset(self::$_TYPE[$value]) ? self::$_TYPE[$value] : ''; } - public function getIsRestTextAttribute($value) + public function getStatusTextAttribute($value) { $value = $value ? $value : $this->status; return isset(self::$_STATUS[$value]) ? self::$_STATUS[$value] : ''; diff --git a/app/Models/v3/User.php b/app/Models/v3/User.php index f0b9fbc..7a1feac 100644 --- a/app/Models/v3/User.php +++ b/app/Models/v3/User.php @@ -9,6 +9,25 @@ class User extends Model protected $table = 'lanzu_user'; protected $dateFormat = 'U'; + public static $_GENDER = ['保密','男','女']; + public static $_STATUS = [0=>'禁用',1=>'正常']; + + protected $appends = [ + 'gender_text', + 'status_text' + ]; + + public function getGenderTextAttribute($value) + { + $value = $value ? $value : $this->gender; + return isset(self::$_GENDER[$value]) ? self::$_GENDER[$value] : ''; + } + public function getStatusTextAttribute($value) + { + $value = $value ? $value : $this->status; + return isset(self::$_STATUS[$value]) ? self::$_STATUS[$value] : ''; + } + /** * 获取单个用户信息 * @param int $id diff --git a/config/role.php b/config/role.php new file mode 100644 index 0000000..69ac526 --- /dev/null +++ b/config/role.php @@ -0,0 +1,42 @@ +[ + 1 => '董事长', + 2 => '总经理', + 3 => '人力资源总监', + 4 => 'CTO', + 5 => '财务经理', + 6 => '运营总监', + 7 => '招商总监', + 8 => 'PHP研发主管', + 9 => '迁江智慧商城主管', + 10 => '拓展部主管', + + 11 => '拓展部副主管', + 12 => '拓展部经理', + 13 => '运维部经理', + 14 => '产品主管', + 15 => '策划经理', + 16 => '运维部副经理', + 17 => '新媒体运营', + 18 => '平面设计师', + 19 => 'UI设计师', + 20 => '前端开发工程师', + + 21 => 'PHP研发工程师', + 22 => '测试工程师', + 23 => '招商经理', + 24 => '服务站管理员', + 25 => '运维专员', + 26 => '拓展经理', + 27 => '行政助理', + 28 => '出纳', + + 29 => '骑手', + 30 => '服务专员', + + ] +]; diff --git a/resources/lang/zh-CN/lanzu-employees.php b/resources/lang/zh-CN/lanzu-employees.php index 257958e..10a010e 100644 --- a/resources/lang/zh-CN/lanzu-employees.php +++ b/resources/lang/zh-CN/lanzu-employees.php @@ -4,13 +4,15 @@ return [ 'LanzuEmployees' => '懒族员工', 'lanzuEmployees' => '懒族员工', 'lanzu_employees' => '懒族员工', + 'employees' => '懒族员工', ], 'fields' => [ 'user_id' => '用户懒ID', 'store_id' => '店铺', - 'market_id' => '服务站ID', + 'market_id' => '服务站', 'role' => '用户角色', 'status' => '状态', + 'status_text' => '状态', 'note' => '备注', ], 'options' => [ diff --git a/resources/lang/zh-CN/user.php b/resources/lang/zh-CN/user.php new file mode 100644 index 0000000..54561b9 --- /dev/null +++ b/resources/lang/zh-CN/user.php @@ -0,0 +1,25 @@ + [ + 'User' => '微信用户', + 'user' => '微信用户', + ], + 'fields' => [ + 'nick_name' => '昵称', + 'avatar' => '微信头像', + 'openid' => '微信小程序openid', + 'real_name' => '真实姓名', + 'tel' => '电话号码', + 'unionid' => '微信小程序unionid', + 'status' => '状态', + 'status_text' => '状态', + 'country' => '国家', + 'province' => '省份', + 'city' => '城市', + 'gender' => '性别', + 'gender_text' => '性别', + 'language' => '语言', + ], + 'options' => [ + ], +];