6
0
Fork 0
jiqu-library-server/app/Admin/Controllers/Store/DeskController.php

91 lines
3.1 KiB
PHP

<?php
namespace App\Admin\Controllers\Store;
use Dcat\Admin\{Form, Grid, Admin, Show};
use Dcat\Admin\Http\Controllers\AdminController;
use App\Models\Store\{Store, Desk};
use App\Models\{ProductCategory};
class DeskController extends AdminController
{
protected $translation = 'store-desk';
protected function grid()
{
return Grid::make(Desk::with(['store']), function (Grid $grid) {
$grid->model()->orderBy('created_at', 'desc');
$grid->column('id');
$grid->column('store_id')->display(fn() => data_get($this->store, 'title'));
$grid->column('name');
// $grid->column('status')->switch();
$grid->column('wxcode')->image('', 100, 100);
$grid->column('remarks')->editable();
$user = Admin::user();
$grid->showViewButton($user->can('dcat.admin.store.desk.show'));
$grid->showCreateButton($user->can('dcat.admin.store.desk.create'));
$grid->showEditButton($user->can('dcat.admin.store.desk.edit'));
$grid->showDeleteButton($user->can('dcat.admin.store.desk.destroy'));
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('store_id')->select('api/store')->width(3);
$filter->like('name')->width(3);
});
$grid->actions(new \App\Admin\Actions\Store\RowDeskWxCode());
});
}
protected function form()
{
return Form::make(new Desk(), function (Form $form) {
$form->select('store_id')->options(Store::pluck('title', 'id'))->required();
$form->text('name')->required();
// $form->switch('status')->default(1);
$form->text('remarks');
$form->embeds('extra', function (Form\EmbeddedForm $form) {
$form->select('category_id')->options(ProductCategory::selectOptions());
});
$form->disableCreatingCheck();
$form->disableEditingCheck();
$form->disableDeleteButton();
$form->disableResetButton();
$form->saved(function (Form $form, $result) {
// 新增桌号, 生成小程序码
if ($form->isCreating()) {
}
});
});
}
protected function detail($id)
{
return Show::make($id, Desk::with(['store']), function (Show $show) {
$show->field('id');
$show->field('store_id')->as(fn() => data_get($this->store, 'name'));
$show->field('name');
// $show->field('status')->bool();
$show->field('wxcode');
$show->field('remarks');
$model = $show->model();
$category_id = data_get($model->extra, 'category_id');
if ($category_id) {
$category = ProductCategory::find($category_id);
$show->field('category_id')->as(fn() => $category ? $category->name : $category_id);
}
$show->disableEditButton();
$show->disableDeleteButton();
});
}
}