6
0
Fork 0
jiqu-library-server/app/Admin/Controllers/OfflineProductCategoryContr...

85 lines
2.8 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\OfflineProductCategory as OfflineProductCategoryRepository;
use App\Exceptions\BizException;
use App\Models\OfflineOrderItem;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\Column;
use Dcat\Admin\Http\Controllers\AdminController;
class OfflineProductCategoryController extends AdminController
{
public function destroy($id)
{
if (OfflineOrderItem::where('product_category_id', $id)->exists()) {
throw new BizException('商品分类已使用');
}
return $this->form()->destroy($id);
}
protected function grid()
{
return Grid::make(new OfflineProductCategoryRepository(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('name');
$grid->column('enabled')->filter(
Grid\Column\Filter\In::make([
0 => '否',
1 => '是',
])
)
->if(function () {
return Admin::user()->can('dcat.admin.offline_product_categories.edit');
})
->then(function (Column $column) {
$column->switch();
})
->else(function (Column $column) {
$column->bool();
});
$grid->column('color')->display(fn ($v) => $v ? "<span class=\"label\" style=\"background-color:{$v}\">{$v}</span>" : '');
$grid->column('sort')->sortable();
$grid->column('created_at');
$grid->model()->orderBy('id', 'desc');
if (Admin::user()->can('dcat.admin.offline_product_categories.create')) {
$grid->disableCreateButton(false);
$grid->enableDialogCreate();
}
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->quickEdit(Admin::user()->can('dcat.admin.offline_product_categories.edit'));
$actions->delete(Admin::user()->can('dcat.admin.offline_product_categories.destroy'));
});
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->like('name')->width(3);
});
});
}
protected function form()
{
return Form::make(new OfflineProductCategoryRepository(), function (Form $form) {
$form->text('name')
->rules(['bail', 'required', 'string', 'max:255'])
->setLabelClass(['asterisk'])
->attribute('required', true);
$form->color('color');
$form->switch('enabled')
->default(true);
$form->number('sort')->default(0);
});
}
}