column(3, new TotalStore()); $row->column(3, new TotalUser()); $row->column(3, new TotalOrder()); $row->column(3, new TotalMoney()); return $content ->title('总览') ->body($row); } public function list() { $q = request('q'); $query = Store::where('title', 'like', '%'.$q.'%'); $user = Admin::user(); $canAdmin = $this->canAdmin(); if (!$canAdmin) { $stores = $user->stores; $query->whereIn('id', $stores->pluck('id')); } return $query->select(['id', 'title as text'])->get(); } protected function grid() { $grid = Grid::make(new Store()); $user = Admin::user(); $canAdmin = $this->canAdmin(); if (!$canAdmin) { $stores = $user->stores; $grid->model()->whereIn('id', $stores->pluck('id')); } $grid->model()->sort(); $grid->column('id'); $grid->column('title'); $grid->column('image')->image('', 100, 100); $grid->column('status')->switch(); $grid->column('sort')->editable(); $grid->column('created_at'); $grid->disableCreateButton(!$canAdmin); $grid->enableDialogCreate(); $grid->showViewButton($user->can('dcat.admin.store.list.show')); $grid->showQuickEditButton($user->can('dcat.admin.store.list.edit')); $grid->showDeleteButton($canAdmin); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->like('title')->width(3); }); return $grid; } protected function detail($id) { if ($this->canAdmin()) { $info = Store::findOrFail($id); } else { $user = Admin::user(); $info = $user->stores()->findOrFail($id); } $show = Show::make($id, $info); $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->tools(function (Tools $tools) { $tools->append(new ExportGoodsSpu()); $tools->disableList(); $tools->disableDelete(); $tools->disableEdit(); }); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(Store::with(['administrators']), function (Form $form) { $form->display('id'); $form->text('title'); $form->image('image') ->required() ->move('store/'.Carbon::now()->toDateString()) ->saveFullUrl() ->removable(false) ->retainable() ->autoUpload(); $form->tree('administrators', '选择管理员') ->nodes(Administrator::all()->toArray()) ->setTitleColumn('name') ->value($form->model()->administrators ? $form->model()->administrators->pluck('id') : '') ->customFormat(function ($v) { if (!$v) { return []; } return array_column($v, 'id'); }); $form->text('remarks'); $form->switch('status')->default(1); $form->number('sort')->min(1)->default(1); $form->disableDeleteButton(); $form->footer(function ($footer) { $footer->disableEditingCheck(); }); }); } 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', 'operator', '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('operator', '操作人')->display(function ($v) { if ($v instanceof \App\Models\Admin\Administrator) { return $v->name . '管理员'; } else if ($v instanceof \App\Models\User) { return $v->phone . '用户'; } return '未知身份'; }); $grid->column('remarks', '备注'); $grid->column('created_at', '操作时间'); $grid->disableActions(); $grid->showCreateButton(); $grid->enableDialogCreate(); return $grid; } }