header(trans('admin.administrator')) ->description(trans('admin.list')) ->body($this->adminGrid()->render()); } protected function adminGrid() { $userModel = config('admin.database.users_model'); $grid = new Grid(new $userModel()); $grid->column('id', 'ID')->sortable(); $grid->column('username', trans('admin.username')); $grid->column('name', trans('admin.name')); $grid->column('login_ip', '登录ip'); $grid->roles(trans('admin.roles'))->pluck('name')->label(); $grid->column('created_at', trans('admin.created_at')); $grid->column('updated_at', trans('admin.updated_at')); $grid->actions(function (Grid\Displayers\DropdownActions $actions) { if ($actions->getKey() == 1) { $actions->disableDelete(); } }); $grid->tools(function (Grid\Tools $tools) { $tools->batch(function (Grid\Tools\BatchActions $actions) { $actions->disableDelete(); }); }); return $grid; } public function indexLogs(Content $content) { return $content ->header(trans('admin.operation_log')) ->description(trans('admin.list')) ->body($this->logGrid()); } /** * @return Grid */ protected function logGrid() { $grid = new Grid(new OperationLog()); $grid->model()->orderBy('id', 'DESC'); $grid->column('id', 'ID')->sortable(); $grid->column('user.name', '用户'); $grid->column('method', '方法')->display(function ($method) { $color = array_get(OperationLog::$methodColors, $method, 'grey'); return "$method"; }); $grid->column('path', '路径')->label('info'); $grid->column('ip', '地址')->label('primary'); $grid->column('description', '描述')->limit(20)->modal(function ($model) { return new Box('详情', $model->description ?: ' '); }); $grid->column('input', '输入数据')->limit(20)->expand(function ($model) { $input = json_decode($model->input, true); $input = array_except($input, ['_pjax', '_token', '_method', '_previous_']); $codes = empty($input) ? '{}' : '
'.json_encode($input, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE).'
'; return new Box('详情', $codes); }); $grid->column('created_at', trans('admin.created_at')); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableEdit(); $actions->disableView(); }); $grid->disableCreateButton(); $grid->filter(function (Grid\Filter $filter) { $userModel = config('admin.database.users_model'); $filter->equal('user_id', 'User')->select($userModel::all()->pluck('name', 'id')); $filter->equal('method')->select(array_combine(OperationLog::$methods, OperationLog::$methods)); $filter->like('path'); $filter->equal('ip'); }); return $grid; } }