model()->sort(); $grid->column('order.sn'); $grid->column('sn'); $grid->column('refund_reason'); $grid->column('refund_money'); $grid->column('refund_status')->display(fn() => $this->refund_status->label()); $grid->column('created_at'); $grid->filter(function (Filter $filter) { $filter->panel(); $filter->like('order.sn')->width(3); $filter->like('sn')->width(3); $filter->equal('refund_status')->select(RefundStatus::options())->width(3); $filter->whereBetween('created_at', function ($q) { $start = data_get($this->input, 'start'); $start = $start ? Carbon::createFromFormat('Y-m-d', $start) : null; $end = data_get($this->input, 'end'); $end = $end ? Carbon::createFromFormat('Y-m-d', $end) : null; if ($start) { if ($end) { $q->whereBetween('created_at', [$start, $end]); } $q->where('created_at', '>=', $start); } else if ($end) { $q->where('created_at', '<=', $end); } })->date()->width(6); }); $grid->disableRowSelector(); $grid->disableCreateButton(); $grid->disableDeleteButton(); $user = Admin::user(); $grid->actions(function (Actions $actions) use ($user) { $row = $actions->row; $actions->edit($row->refund_status === RefundStatus::Apply && $user->can('dcat.admin.order_refunds.edit')); }); }); } protected function detail($id) { return Show::make($id, OrderRefund::with(['order']), function (Show $show) { $show->field('order.sn'); $show->field('sn'); $show->field('refund_reason'); $show->field('refund_money'); $show->field('refund_way')->as(fn() => $this->refund_way->label())->unescape(); $show->field('refund_status')->as(fn() => $this->refund_status->label())->unescape(); $show->field('finish_at'); $show->field('created_at'); $show->field('refund_data')->json(); $show->disableDeleteButton(); $show->disableEditButton(); }); } protected function form() { return Form::make(OrderRefund::with(['order']), function (Form $form) { $form->display('order.sn'); $form->text('sn')->required(); $form->select('refund_way')->options(RefundWay::options())->required(); $form->currency('refund_money')->symbol('¥')->required(); $form->text('refund_reason')->required(); $form->disableEditingCheck(); $form->disableCreatingCheck(); $form->disableViewCheck(); $form->disableViewButton(); $form->disableDeleteButton(); }); } }