model()->settled()->orderBy('id', 'desc'); $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_manager_sales_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', '手机号'); $grid->column('userinfo.nickname', '昵称'); $grid->column('is_manager', '管理者')->bool(); $grid->column('lvl', '经销商等级')->display(function () { return $this->lvl->text(); }); $grid->column('total_amount', '津贴总额')->prepend('¥'); $grid->column('fee', '手续费')->prepend('¥')->help('手续费=津贴总额*手续费率'); $grid->column('real_amount', '总收入')->prepend('¥')->help('总收入=津贴总额-手续费'); $grid->column('fee_rate', '手续费率')->append('%'); $grid->column('remark', '备注')->display('查看') // 设置按钮名称 ->expand(function () { $card = new Card(null, nl2br($this->remark)); return "
$card
"; }); $grid->column('status', '状态')->display(function ($v) { return $v->text(); })->circleDot(DealerManagerSubsidyStatus::colors()); $grid->column('earning.pay_at', '付款时间'); $grid->showRowSelector(); $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(); if (Admin::user()->can('dcat.admin.dealer_manager_subsidies.batch_pay')) { $batch->add(new DealerManagerSubsidyBatchPay()); } }); }); $grid->actions(function (Grid\Displayers\Actions $actions) { if ($actions->row->isPending() && Admin::user()->can('dcat.admin.dealer_manager_subsidies.pay')) { $actions->append(new DealerManagerSubsidyPay()); } }); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->equal('user.phone', '手机号')->width(3); $filter->equal('status', '状态')->select(DealerManagerSubsidyStatus::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); }); $grid->header(function ($collection) use ($grid) { return tap(new Row(), function ($row) use ($grid) { $query = DealerManagerSubsidyModel::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'] ?? []); }); $totalAmount = (clone $query)->sum('total_amount'); $totalFee = (clone $query)->sum('fee'); $row->column(3, new InfoBox('津贴总额', $totalAmount, 'fa fa-cny')); $row->column(3, new InfoBox('手续费', $totalFee, 'fa fa-cny')); }); }); }); } }