model()->orderBy('id', 'desc');//默认ID倒叙 $grid->column('id')->sortable(); $grid->column('user.phone', '手机号')->copyable(); $grid->column('lvl', '等级')->display(function () { return $this->lvl->text(); }); $grid->column('order.sn', '订单编号'); $grid->column('product.name', '商品名称'); $grid->column('sales_volume', '销量'); $grid->column('order_completed_at', '结算时间')->sortable(); $grid->column('created_at')->sortable(); $grid->disableCreateButton(); $grid->disableActions(); $grid->header(function ($collection) use ($grid) { $query = DealerManagerSalesLogModel::query()->with(['product']) ->select(['product_id', DB::raw('sum(sales_volume) as sales_volume')]); // 拿到表格筛选 where 条件数组进行遍历 $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'] ?? []); }); // 查出统计数据 $text = ''; foreach ($query->groupBy('product_id')->get() as $log) { if ($text !== '') { $text .= '
'; } $text .= $log->product->name.'销量:'.$log->sales_volume; } // 自定义组件 return "
".$text.'
'; }); $grid->filter(function (Grid\Filter $filter) { $filter->panel(false); $filter->equal('user.phone', '手机号')->width(4); $filter->between('order_completed_at', '结算时间')->dateTime()->width(4); $filter->between('created_at', '创建时间')->dateTime()->width(4); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new DealerManagerSalesLog(), function (Show $show) { $show->field('id'); $show->field('user_id'); $show->field('order_id'); $show->field('product_id'); $show->field('lvl'); $show->field('sales_volume'); $show->field('order_completed_at'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new DealerManagerSalesLog(), function (Form $form) { $form->display('id'); $form->text('user_id'); $form->text('order_id'); $form->text('product_id'); $form->text('lvl'); $form->text('sales_volume'); $form->text('order_completed_at'); $form->display('created_at'); $form->display('updated_at'); }); } }