header('Distribution Management') ->description('Distribution Management') ->breadcrumb(['text'=>'list','url'=>'']) ->body($this->grid()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { return Grid::make(new DistAdminUser(), function (Grid $grid) { //指定表格视图,去掉右上角的操作按钮 $grid->view('admin.grid.table'); //设置列表 $grid->column('id')->sortable(); $grid->column('username'); $grid->column('name','Company Name'); $grid->column('language')->using(config('dictionary.languages')); $grid->column('enabled')->switch(); $grid->column('created_at'); $grid->column('updated_at')->sortable(); $grid->filter(function (Grid\Filter $filter) { $filter->equal('username'); $filter->equal('name','company name'); }); //排序 $grid->model()->orderBy("id",'desc'); //按钮 $grid->showQuickEditButton(); $grid->enableDialogCreate(); $grid->disableEditButton(); $grid->disableDeleteButton(); $grid->disableBatchDelete(); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, DistAdminUser::with(['info']), function (Show $show) { $show->row(function (Show\Row $show) { $show->width(6)->field('id'); $show->width(6)->field('username'); $show->width(6)->field('info.site_name','Site Name'); $show->width(6)->field('name','Company Name'); $show->width(6)->field('info.country','Country'); $show->width(6)->field('info.contact_number','Contact Number'); $show->width(6)->field('info.service_hotline','Service Hotline'); $show->width(6)->field('info.whats_app','whatsApp'); $show->width(6)->field('info.facebook','Facebook'); $show->width(6)->field('info.instagram','Instagram'); $show->width(6)->field('info.youtube','Youtube'); $show->width(6)->field('info.linkedin','Linkedin'); $show->width(6)->field('info.tiktok','Tiktok'); $show->width(6)->field('info.second_level_domain','Second Level Domain'); $show->width(6)->field('language')->using(config('dictionary.languages')); $show->width(6)->field('enabled')->using(config('dictionary.enabled')); $show->width(6)->field('created_at'); $show->width(6)->field('updated_at'); $show->width(6)->field('info.company_address','Company Address'); $show->width(6)->field('info.remark','Remark'); }); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(DistAdminUser::with(['info']), function (Form $form) { $form->display('id'); $form->text('username')->required(); $form->password('password')->customFormat(function ($v) { return ""; }); $form->text('name','Company Name')->required(); $form->text('info.site_name','Site Name')->required(); $form->text('info.second_level_domain','Second Level Domain')->required(); $form->select('language')->options(config('dictionary.languages'))->required(); $form->switch('enabled')->default(1); $form->fieldset('Contact Information', function (Form $form) { $form->text('info.country','Country'); $form->text('info.contact_number','Contact Number'); $form->text('info.service_hotline','Service Hotline'); $form->text('info.whats_app','WhatsApp'); $form->text('info.facebook','Facebook'); $form->text('info.instagram','Instagram'); $form->text('info.youtube','Youtube'); $form->text('info.linkedin','Linkedin'); $form->text('info.tiktok','Tiktok'); $form->textarea('info.company_address','Company Address'); $form->textarea('info.remark','Remark'); }); //保存前回调 $form->saving(function (Form $form) { //判断用户名是否重复 $count = DistAdminUser::findCountByUsername($form->getKey(), $form->username); if ($count > 0) { return $form->response()->error('Username already exists'); } if($form->isCreating() && ($form->password === null || $form->password === '')) { return $form->response()->error('Password cannot be empty'); } //密码加密 if ($form->password) { $form->password = bcrypt($form->password); } else { $form->deleteInput('password'); } }); //保存后回调 $form->saved(function (Form $form, $result) { if ($form->isCreating()) { $newId = $form->getKey(); if (! $newId) { return $form->response()->error('Failed to save data'); } DistAdminUser::addRoleUser($newId, config('dictionary.dist_role_id'));//分销商角色ID 2 } }); }); } }