model()->channelSubsidy()->withoutPayer()->orderBy('id', 'desc'); $grid->column('id')->sortable(); $grid->column('user.phone', '手机号'); $grid->column('user.userInfo.nickname', '昵称'); $grid->column('lvl', '经销商等级')->display(function () { return $this->lvl->text(); }); $grid->column('total_amount', '补贴金额')->prepend('¥'); $grid->column('fee', '手续费')->prepend('¥')->help('手续费=补贴金额*手续费率'); $grid->column('fee_rate', '手续费率')->append('%'); $grid->column('total_earnings', '总收入')->prepend('¥')->help('总收入=补贴金额-手续费'); $grid->column('remark', '备注')->display('查看') // 设置按钮名称 ->expand(function () { $card = new Card(null, nl2br($this->remark)); return "
$card
"; }); $grid->column('settle_at', '结算时间')->display(function () { return $this->settle_at?->toDateTimeString(); })->sortable(); $grid->column('status', '状态')->display(function ($v) { return "  {$v->text()}"; }); $grid->column('pay_at', '付款时间')->display(function () { return $this->pay_at?->toDateTimeString(); })->sortable(); $grid->column('created_at', '创建时间')->display(function () { return $this->created_at?->toDateTimeString(); }); // $grid->showRowSelector(); // $grid->tools(function ($tools) { // $tools->batch(function ($batch) { // $batch->disableDelete(); // if (Admin::user()->can('dcat.admin.dealer_channel_subsidies.batch_pay')) { // $batch->add(new DealerChannelSubsidyBatchPay()); // } // }); // }); $grid->disableActions(); // $grid->actions(function (Grid\Displayers\Actions $actions) { // if ( // $actions->row->isSettled() && // $actions->row->isPending() && // Admin::user()->can('dcat.admin.dealer_channel_subsidies.pay') // ) { // $actions->append(new DealerChannelSubsidyPay()); // } // }); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->equal('user.phone', '手机号')->width(3); $filter->equal('status', '状态')->select([ DealerEarningStatus::Pending->value => '待付款', DealerEarningStatus::Completed->value => '已完成', ])->width(3); $filter->between('settle_at', '结算时间')->datetime()->width(6); }); $grid->header(function ($collection) use ($grid) { return tap(new Row(), function ($row) use ($grid) { $query = DealerEarningModel::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')); }); }); }); } }