baseCRUD() ->headerToolbar([ // $this->createTypeButton('drawer', 'lg')->visible(Admin::user()->can('admin.system.admin_users.create')), ...$this->baseHeaderToolBar(), ]) ->bulkActions([]) ->filter($this->baseFilter()->body( amis()->TextControl('keyword', __('admin.keyword')) ->size('md') ->placeholder(__('admin.admin_user.search_username')) )) ->filterDefaultVisible() ->quickSaveItemApi($this->getQuickEditItemPath(['lock'])) ->itemCheckableOn('${id !== 1}') ->columns([ amis()->TableColumn('id', 'ID')->sortable(), amis()->TableColumn('avatar', __('admin.admin_user.avatar'))->type('avatar')->src('${avatar}'), amis()->TableColumn('username', __('admin.username')), amis()->TableColumn('name', __('admin.admin_user.name')), amis()->TableColumn('roles', __('admin.admin_user.roles'))->type('each')->items( amis()->Tag()->label('${name}')->className('my-1') ), tap(amis()->TableColumn('lock', __('admin.admin_user.lock')), function (TableColumn $column) { if (Admin::user()->can('admin.system.admin_users.update')) { return $column->quickEdit( amis()->SwitchControl()->saveImmediately()->mode('inline')->disabledOn('${id === 1}') ); } return $column->type('status')->source([ 0 => ['label' => '未锁定', 'icon' => 'fa fa-times-circle', 'color' => '#30bf13'], 1 => ['label' => '已锁定', 'icon' => 'fa fa-check-circle', 'color' => '#f70e47'], ]); }), amis()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true), $this->rowActions([ $this->rowChangePasswordButton() ->visible(Admin::user()->can('admin.system.admin_users.change_password')) ->visibleOn('${id != 1}'), $this->rowEditTypeButton('drawer', 'lg') ->visible(Admin::user()->can('admin.system.admin_users.update')) ->visibleOn('${id != 1}'), // $this->rowDeleteButton() // ->visible(Admin::user()->can('admin.system.admin_users.delete')) // ->visibleOn('${id != 1}'), ]), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->body([ amis()->ImageControl('avatar', __('admin.admin_user.avatar'))->receiver(admin_url('upload_image').'?full-url=1'), amis()->TextControl('name', __('admin.admin_user.name'))->required(), amis()->TextControl('username', __('admin.username'))->required(), amis()->TextControl('password', __('admin.password'))->type('input-password')->required()->validations(['minLength' => 6])->hiddenOn('${id > 0}'), amis()->TextControl('confirm_password', __('admin.confirm_password'))->type('input-password')->required()->validations(['minLength' => 6])->hiddenOn('${id > 0}'), amis()->SelectControl('roles', __('admin.admin_user.roles')) ->searchable() ->multiple() ->labelField('name') ->valueField('id') ->joinValues(false) ->extractValue() ->options(AdminRoleService::make()->query()->get(['id', 'name'])), amis()->SwitchControl()->name('lock')->label(__('admin.admin_user.lock'))->value(false), ]); } public function detail(): Form { return $this->baseDetail()->body([]); } /** * 修改密码 */ public function changePassword($id, Request $request) { $validator = Validator::make( data: $request->input(), rules: [ 'password' => ['bail', 'required', 'confirmed', 'min:6'], ], attributes: [ 'password' => '密码', ], ); if ($validator->fails()) { admin_abort($validator->errors()->first()); } $this->service->update($id, $request->only(['password'])); return $this->autoResponse('success', __('admin.save')); } /** * 修改密码按钮 */ protected function rowChangePasswordButton(): DrawerAction { return amis()->DrawerAction()->icon('fa-regular fa-lightbulb')->label(__('admin.admin_user.edit_password'))->level('link')->drawer( amis()->Drawer()->title(__('admin.admin_user.edit_password'))->body([ amis()->Form()->title('') ->api([ 'method' => 'POST', 'url' => admin_url('system/admin_users/$id/change-password'), ]) ->body([ amis()->TextControl('password', __('admin.password'))->type('input-password')->required()->validations(['minLength' => 6]), amis()->TextControl('password_confirmation', __('admin.confirm_password'))->type('input-password')->required()->validations(['minLength' => 6]), ]), ])->size('lg') ); } }