model()->settleCompleted()->orderBy('id', 'desc');//默认ID倒叙 $grid->column('settle_period', '结算周期')->display(function () { return $this->start_at->rawFormat('Y/m/d') . '-' . $this->end_at->rawFormat('Y/m/d'); })->link(function () { return admin_route('dealer_purchase_logs.index', [ 'user_phone' => $this->user?->phone, 'order_completed_at[start]' => $this->start_at->toDateTimeString(), 'order_completed_at[end]' => $this->end_at->toDateTimeString(), ]); }); $grid->column('user.phone', '手机号')->copyable(); $grid->column('user.userInfo.nickname', '昵称'); $grid->column('lvl', '等级')->display(function () { return $this->lvl->text(); }); $grid->column('total_purchase_amount', '进货业绩')->prepend('¥'); $grid->column('subsidy_rate', '补贴比例')->append('%'); $grid->column('total_subsidy', '补贴总额')->prepend('¥')->help('补贴总额=进货业绩*补贴比例'); $grid->column('total_amount', '应得补贴')->prepend('¥'); $grid->column('fee_rate', '手续费率')->append('%'); $grid->column('fee', '手续费')->prepend('¥')->help('手续费=应得补贴*手续费率'); $grid->column('status', '状态')->display(function ($v) { return $v->text(); })->circleDot(DealerPurchaseSubsidyStatus::colors()); $grid->showRowSelector(); $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(); if (Admin::user()->can('dcat.admin.dealer_purchase_subsidies.batch_pay')) { $batch->add(new DealerPurchaseSubsidyBatchPay()); } }); }); $grid->actions(function (Grid\Displayers\Actions $actions) { if (Admin::user()->can('dcat.admin.dealer_purchase_subsidies.show')) { $actions->append(' 显示   '); } if ($actions->row->isPending() && Admin::user()->can('dcat.admin.dealer_purchase_subsidies.pay')) { $actions->append(new DealerPurchaseSubsidyPay()); } }); $grid->header(function ($collection) use ($grid) { return tap(new Row(), function ($row) use ($grid) { $query = DealerPurchaseSubsidyModel::query(); $grid->model()->getQueries()->unique()->each(function ($value) use (&$query) { if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) { return; } $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); }); $row->column(3, new InfoBox('进货业绩', (clone $query)->sum('total_purchase_amount'), 'fa fa-cny')); $row->column(3, new InfoBox('补贴金额', (clone $query)->sum('total_amount'), 'fa fa-cny')); $row->column(3, new InfoBox('手续费', (clone $query)->sum('fee'), 'fa fa-cny')); }); }); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->equal('user.phone', '手机号')->width(3); $filter->equal('status', '状态')->select(DealerPurchaseSubsidyStatus::texts())->width(3); $filter->whereBetween('settle_period', function ($query) { $start = $this->input['start'] ?? null; $end = $this->input['end'] ?? null; $query->when($start, function ($query, $start) { $query->where('start_at', '>=', "{$start} 00:00:00"); }); $query->when($end, function ($query, $end) { $query->where('end_at', '<=', "{$end} 23:59:59"); }); }, '结算周期')->date()->width(6); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { $row = new Row(); $row->column(5, function ($column) use ($id) { $builder = DealerPurchaseSubsidy::with(['user.userInfo']); $column->row(Show::make($id, $builder, function (Show $show) { $show->field('id'); $show->field('settle_period', '结算周期')->as(function () { return $this->start_at->rawFormat('Y/m/d') . '-' . $this->end_at->rawFormat('Y/m/d'); }); $show->field('user.phone', '手机号'); $show->field('user.user_info.nickname', '昵称'); $show->field('lvl', '经销商等级')->as(function () { return $this->lvl->text(); }); $show->field('total_purchase_amount', '进货业绩')->prepend('¥'); $show->field('subsidy_rate', '补贴比例')->append('%'); $show->field('total_subsidy', '补贴总额')->prepend('¥'); $show->field('total_amount', '应得补贴')->prepend('¥'); $show->field('fee_rate', '手续费率')->append('%'); $show->field('fee', '手续费')->prepend('¥'); $show->field('real_amount', '实得补贴')->prepend('¥'); $show->field('status', '状态')->as(function () { return $this->status?->text(); })->circleDot(DealerPurchaseSubsidyStatus::colors()); $show->panel() ->tools(function (Show\Tools $tools) use ($show) { $tools->disableEdit(); $tools->disableDelete(); }); })); }); $row->column(7, function ($column) use ($id) { $dealerPurchaseSubsidyLogBox = Box::make('补贴明细', Grid::make(DealerPurchaseSubsidyLog::class, function (Grid $grid) use ($id) { $grid->model()->where('purchase_subsidy_id', $id); $grid->column('id'); $grid->column('change_amount', '变更金额'); $grid->column('remark', '备注'); $grid->column('created_at', '结算时间'); $grid->disableCreateButton(); $grid->disableActions(); $grid->disableRefreshButton(); })); $column->row($dealerPurchaseSubsidyLogBox); }); return $row; } }