canAdmin(); if (!$canAdmin) { $ids = DB::table('store_admin_users')->where('administrator_id', $user->id)->pluck('store_id'); $query = $query->whereIn('id', $ids); } return Grid::make($query, function (Grid $grid) use ($canAdmin) { $grid->model()->sort(); $grid->column('id'); $grid->column('title'); $grid->column('image')->image('', 100, 100); $grid->column('status')->switch(); $grid->column('sort'); $grid->column('created_at'); $grid->disableCreateButton(!$canAdmin); $grid->enableDialogCreate(); $grid->showEditButton(); $grid->showViewButton(); $grid->showDeleteButton($canAdmin); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->like('title')->width(3); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { $query = Store::query(); $user = Admin::user(); $canAdmin = $this->canAdmin(); if (!$canAdmin) { $ids = DB::table('store_admin_users')->where('administrator_id', $user->id)->pluck('store_id'); $query = $query->whereIn('id', $ids); } $row = new Row(); $show = Show::make($id, $query, function (Show $show) use ($canAdmin) { $show->field('id'); $show->field('title'); $show->field('image')->image(); $show->field('sort'); $show->field('status')->using([ 0 => '关闭', 1 => '开启' ]); $show->field('remarks'); $show->field('created_at'); $show->panel()->tools(function ($tools) { $tools->disableDelete(); }); }); $row->column(5, $show); $tab = Tab::make()->theme(); $tab->add('商品', Card::make($this->gridProduct($id))); $tab->add('库存', Card::make($this->gridStock($id))); if ($canAdmin) { $tab->add('管理员', Card::make($this->gridAdmin($id))); } $row->column(7, $tab); return $row; } /** * Make a form builder. * * @return Form */ protected function form() { $query = Store::query(); $user = Admin::user(); $canAdmin = $this->canAdmin(); if (!$canAdmin) { $ids = DB::table('store_admin_users')->where('administrator_id', $user->id)->pluck('store_id'); $query = $query->whereIn('id', $ids); } return Form::make($query, function (Form $form) use ($canAdmin) { $form->display('id'); $form->text('title'); $form->switch('status')->default(1); $form->number('sort')->min(1)->default(1); $form->image('image') ->required() ->move('store/'.Carbon::now()->toDateString()) ->saveFullUrl() ->removable(false) ->retainable() ->autoUpload(); $form->text('remarks'); $form->disableDeleteButton(); }); } protected function canAdmin() { return Admin::user()->isRole('administrator'); } protected function gridAdmin($id) { $grid = Grid::make(StoreAdministrator::with(['administrator'])); $grid->model()->where('store_id', $id); $grid->setResource('store/' . $id . '/admin'); $grid->column('administrator.id', 'ID'); $grid->column('administrator.username', '登录名'); $grid->column('administrator.name', '姓名'); $grid->paginate(10); $grid->showCreateButton(); $grid->enableDialogCreate(); $grid->disableActions(); $grid->showRowSelector(); return $grid; } protected function gridProduct($id) { $grid = new Grid(ProductSku::with(['productSku'])); $grid->model()->where('store_id', $id)->orderBy('id', 'desc'); $grid->setResource('store/'.$id.'/product'); $grid->column('productSku.id', 'ID'); $grid->column('productSku.name', '名称'); $grid->column('amount', '库存'); $grid->column('productSku.specs', '规格')->label(); $grid->column('status', '状态')->switch(); $grid->paginate(10); $grid->showCreateButton(); $grid->enableDialogCreate(); $grid->showDeleteButton(); $grid->showRowSelector(); return $grid; } protected function gridStock($id) { $grid = new Grid(StockLog::with(['productSku', 'administrator', 'source', 'tag'])); $grid->model()->where('store_id', $id)->orderBy('created_at', 'desc'); $grid->setResource('store/'.$id.'/stock'); $grid->column('productSku.name', '商品'); $grid->column('amount', '库存'); $grid->column('tag.name', '类目'); $grid->column('administrator.name', '操作人'); $grid->column('remarks', '备注'); $grid->column('created_at', '操作时间'); $grid->disableActions(); $grid->showCreateButton(); $grid->enableDialogCreate(); return $grid; } }