header($model . ' => ' . $key) ->description('数据操作日志') ->body($this->grid($model, $key)); } public function grid($model, $key): Grid { $grid = new Grid(new Version()); $grid->disableCreateButton(); $grid->disableActions(); $grid->disableTools(); $grid->model()->whereHasMorph( 'versionable', $model, function (Builder $query) use ($key) { $query->where('id', $key); } )->orderByDesc('id'); $grid->column('操作用户')->display(function () { if ($this->user_id < config('mall.administrator_max_id')) { config(['versionable.user_model' => Administrator::class]); return '[Admin] ' . ($this->user->name ?? '--SYSTEM--'); } else { return '[USER] ' . ($this->user->username ?? '--USER--'); } }); $grid->column('versionable_type', '数据变动')->expand(function () { $data = []; foreach ($this->contents as $key => $item) { $data[] = [ $key, is_array($item) ? json_encode($item, JSON_UNESCAPED_UNICODE) : $item, ]; } return new Table(['字段名称', '变更值'], $data); }); $grid->column('操作时间')->display(function () { return $this->created_at->toDateTimeString(); }); return $grid; } }