model()->latest('created_at'); $grid->disableViewButton(false); $grid->column('order.sn')->link(fn() => admin_url('orders', ['id' => $this->order_id])); $grid->column('fromUser.phone'); $grid->column('user.phone'); $grid->column('role_name'); $grid->column('growth_value'); $grid->column('ratio')->display(function ($v) { return $v . '%'; }); $grid->column('money'); $grid->column('status')->using(OrderProfit::$statusMap)->dot(OrderProfit::$statusColor); $grid->column('created_at'); $grid->filter(function (Grid\Filter $filter) { $filter->panel(); $filter->like('order.sn')->width(3); $filter->like('fromUser.phone')->width(3); $filter->like('user.phone')->width(3); $filter->equal('status')->select(OrderProfit::$statusMap)->width(3); $filter->where('role_name', fn($q) => $q->role($this->input))->select(Agent::$typeMap)->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->showRowSelector(); $grid->batchActions(function (Grid\Tools\BatchActions $batch) { $batch->disableDelete(); if (Admin::user()->can('dcat.admin.profit.pay')) { $batch->add(new ProfitBatchSuccess()); } }); $grid->footer(function ($collection) use ($grid) { $query = OrderProfit::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'] ?? []); }); $money = number_format($query->sum('money'), 2); return <<