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;
}
}