columnId(); $grid->column('item.name', '物品名称'); $grid->column('limit_type', '限制类型')->display(function ($value) { $types = [ ItemOutputLimit::LIMIT_TYPE_GLOBAL => '全局限制', ItemOutputLimit::LIMIT_TYPE_USER => '用户限制', ItemOutputLimit::LIMIT_TYPE_DAILY => '每日限制', ItemOutputLimit::LIMIT_TYPE_WEEKLY => '每周限制', ItemOutputLimit::LIMIT_TYPE_MONTHLY => '每月限制', ]; return $types[$value] ?? '未知'; }); $grid->column('max_quantity', '最大数量'); $grid->column('period_type', '周期类型')->display(function ($value) { $types = [ 1 => '永久', 2 => '每日', 3 => '每周', 4 => '每月', 5 => '自定义', ]; return $types[$value] ?? '未知'; }); $grid->column('period_value', '周期值')->display(function ($value) { if ($this->period_type == 5) { return $value . ' 小时'; } return '-'; }); $grid->column('reset_time', '重置时间'); $grid->column('is_active', '是否启用')->switch(); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); // 筛选 $grid->filter(function ($filter) { $helper = new FilterHelper($filter, $this); $helper->equal('id', 'ID'); $filter->equal('item_id', '物品')->select( (new ItemRepository())->pluck('name', 'id') ); $filter->equal('limit_type', '限制类型')->select([ ItemOutputLimit::LIMIT_TYPE_GLOBAL => '全局限制', ItemOutputLimit::LIMIT_TYPE_USER => '用户限制', ItemOutputLimit::LIMIT_TYPE_DAILY => '每日限制', ItemOutputLimit::LIMIT_TYPE_WEEKLY => '每周限制', ItemOutputLimit::LIMIT_TYPE_MONTHLY => '每月限制', ]); $filter->equal('is_active', '是否启用')->radio([ 1 => '是', 0 => '否', ]); }); }); } /** * 详情页 * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header($this->title) ->description('详情') ->body($this->detail($id)); } /** * 详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new ItemOutputLimitRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->field('id', 'ID'); $show->field('item.name', '物品名称'); $show->field('limit_type', '限制类型')->as(function ($value) { $types = [ ItemOutputLimit::LIMIT_TYPE_GLOBAL => '全局限制', ItemOutputLimit::LIMIT_TYPE_USER => '用户限制', ItemOutputLimit::LIMIT_TYPE_DAILY => '每日限制', ItemOutputLimit::LIMIT_TYPE_WEEKLY => '每周限制', ItemOutputLimit::LIMIT_TYPE_MONTHLY => '每月限制', ]; return $types[$value] ?? '未知'; }); $helper->field('max_quantity', '最大数量'); $show->field('period_type', '周期类型')->as(function ($value) { $types = [ 1 => '永久', 2 => '每日', 3 => '每周', 4 => '每月', 5 => '自定义', ]; return $types[$value] ?? '未知'; }); $show->field('period_value', '周期值')->as(function ($value) { if ($this->period_type == 5) { return $value . ' 小时'; } return '-'; }); $helper->field('reset_time', '重置时间'); $show->field('is_active', '是否启用')->as(function ($value) { return $value ? '是' : '否'; }); $helper->field('created_at', '创建时间'); $helper->field('updated_at', '更新时间'); }); } /** * 创建页 * * @param Content $content * @return Content */ public function create(Content $content) { return $content ->header($this->title) ->description('创建') ->body($this->form()); } /** * 编辑页 * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { return $content ->header($this->title) ->description('编辑') ->body($this->form()->edit($id)); } /** * 表单 * * @return Form */ protected function form() { return Form::make(new ItemOutputLimitRepository(), function (Form $form) { $form->select('item_id', '物品') ->options((new ItemRepository())->pluck('name', 'id')) ->required(); $form->select('limit_type', '限制类型') ->options([ ItemOutputLimit::LIMIT_TYPE_GLOBAL => '全局限制', ItemOutputLimit::LIMIT_TYPE_USER => '用户限制', ItemOutputLimit::LIMIT_TYPE_DAILY => '每日限制', ItemOutputLimit::LIMIT_TYPE_WEEKLY => '每周限制', ItemOutputLimit::LIMIT_TYPE_MONTHLY => '每月限制', ]) ->required() ->help('全局限制:所有用户共享限制;用户限制:每个用户单独限制;每日/周/月限制:每个用户在周期内的限制'); $form->number('max_quantity', '最大数量') ->min(1) ->required() ->help('最大产出数量'); $form->select('period_type', '周期类型') ->options([ 1 => '永久', 2 => '每日', 3 => '每周', 4 => '每月', 5 => '自定义', ]) ->default(1) ->required() ->when(5, function (Form $form) { $form->number('period_value', '周期值(小时)') ->min(1) ->required() ->help('自定义周期的小时数'); }); $form->datetime('reset_time', '重置时间') ->help('下一次重置时间,为空表示不重置'); $form->switch('is_active', '是否启用') ->default(true); }); } }