title(trans('admin.operation_log'))
->description(trans('admin.list'))
->body($this->grid());
}
protected function grid()
{
return new Grid(new OperationLog(), function (Grid $grid) {
$grid->column('id', 'ID')->sortable();
$grid->column('user', trans('admin.user'))
->get('name')
->link(function () {
if ($this->user) {
return admin_url('auth/users/'.$this->user['id']);
}
})
->responsive();
$grid->column('method', trans('admin.method'))
->responsive()
->label(OperationLogModel::$methodColors)
->filterByValue();
$grid->column('path', trans('admin.uri'))->responsive()->display(function ($v) {
return "$v
";
})->filterByValue();
$grid->column('ip', 'IP')->filterByValue()->responsive();
$grid->column('input')->responsive()->display(function ($input) {
$input = json_decode($input, true);
if (empty($input)) {
return;
}
$input = Arr::except($input, ['_pjax', '_token', '_method', '_previous_']);
if (empty($input)) {
return;
}
return '
'.json_encode($input, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE).''; }); $grid->column('created_at', trans('admin.created_at'))->responsive(); $grid->model()->with('user')->orderBy('id', 'DESC'); $grid->disableCreateButton(); $grid->disableQuickEditButton(); $grid->disableEditButton(); $grid->disableViewButton(); $grid->setActionClass(Grid\Displayers\Actions::class); $grid->filter(function (Grid\Filter $filter) { $userModel = config('admin.database.users_model'); $filter->in('user_id', trans('admin.user')) ->multipleSelect($userModel::pluck('name', 'id')); $filter->equal('method', trans('admin.method')) ->select( array_combine(OperationLogModel::$methods, OperationLogModel::$methods) ); $filter->like('path', trans('admin.uri')); $filter->equal('ip', 'IP'); $filter->between('created_at')->datetime(); }); }); } public function destroy($id) { $ids = explode(',', $id); if (OperationLogModel::destroy(array_filter($ids))) { $data = [ 'status' => true, 'message' => trans('admin.delete_succeeded'), ]; } else { $data = [ 'status' => false, 'message' => trans('admin.delete_failed'), ]; } return response()->json($data); } }