generated from liutk/owl-admin-base
99 lines
4.6 KiB
PHP
99 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Services\AdminUserService;
|
|
use Slowlyo\OwlAdmin\Controllers\AdminController;
|
|
use Slowlyo\OwlAdmin\Renderers\Form;
|
|
use Slowlyo\OwlAdmin\Renderers\Operation;
|
|
use Slowlyo\OwlAdmin\Renderers\Page;
|
|
use Slowlyo\OwlAdmin\Renderers\SwitchControl;
|
|
use Slowlyo\OwlAdmin\Services\AdminRoleService;
|
|
|
|
/**
|
|
* @property AdminUserService $service
|
|
*/
|
|
class AdminUserController extends AdminController
|
|
{
|
|
protected string $serviceName = AdminUserService::class;
|
|
|
|
public function list(): Page
|
|
{
|
|
$crud = $this->baseCRUD()
|
|
->headerToolbar([
|
|
$this->createButton(true),
|
|
...$this->baseHeaderToolBar(),
|
|
])
|
|
->filter($this->baseFilter()->body(
|
|
amisMake()->TextControl('keyword', __('admin.keyword'))
|
|
->size('md')
|
|
->placeholder(__('admin.admin_user.search_username'))
|
|
))
|
|
->quickSaveItemApi(admin_url('quick-edit/admin_users/$id'))
|
|
->itemCheckableOn('${id !== 1}')
|
|
->columns([
|
|
amisMake()->TableColumn('id', 'ID')->sortable(),
|
|
amisMake()->TableColumn('avatar', __('admin.admin_user.avatar'))->type('avatar')->src('${avatar}'),
|
|
amisMake()->TableColumn('username', __('admin.username')),
|
|
amisMake()->TableColumn('name', __('admin.admin_user.name')),
|
|
amisMake()->TableColumn('roles', __('admin.admin_user.roles'))->type('each')->items(
|
|
amisMake()->Tag()->label('${name}')->className('my-1')
|
|
),
|
|
amisMake()->TableColumn('lock', __('admin.admin_user.lock'))->quickEdit(SwitchControl::make()->saveImmediately(true)->mode('inline')->disabledOn('${id === 1}')),
|
|
amisMake()->TableColumn('created_at', __('admin.created_at'))->type('datetime')->sortable(true),
|
|
Operation::make()->label(__('admin.actions'))->buttons([
|
|
$this->rowEditButton(true)->visibleOn('${id != 1}'),
|
|
//单独修改密码
|
|
$this->editPassword()->visibleOn('${id != 1}'),
|
|
$this->rowDeleteButton()->visibleOn('${id != 1}'),
|
|
]),
|
|
]);
|
|
|
|
return $this->baseList($crud);
|
|
}
|
|
|
|
public function form(): Form
|
|
{
|
|
return $this->baseForm()->body([
|
|
amisMake()->ImageControl('avatar', __('admin.admin_user.avatar'))->receiver($this->uploadImagePath()),
|
|
amisMake()->TextControl('name', __('admin.admin_user.name'))->required(),
|
|
amisMake()->TextControl('username', __('admin.username'))->required(),
|
|
amisMake()->TextControl('password', __('admin.password'))->type('input-password')->required()->validations(['minLength' => 6])->hiddenOn('${id > 0}'),
|
|
amisMake()->TextControl('confirm_password', __('admin.confirm_password'))->type('input-password')->required()->validations(['minLength' => 6])->hiddenOn('${id > 0}'),
|
|
amisMake()->SelectControl('roles', __('admin.admin_user.roles'))
|
|
->searchable()
|
|
->multiple()
|
|
->labelField('name')
|
|
->valueField('id')
|
|
->joinValues(false)
|
|
->extractValue()
|
|
->options(AdminRoleService::make()->query()->get(['id', 'name'])),
|
|
SwitchControl::make()->name('lock')->label(__('admin.admin_user.lock'))->value(false),
|
|
]);
|
|
}
|
|
|
|
public function detail(): Form
|
|
{
|
|
return $this->baseDetail()->body([]);
|
|
}
|
|
|
|
public function editPassword()
|
|
{
|
|
return amisMake()->DialogAction()->icon('fa-regular fa-lightbulb')->label(__('admin.admin_user.edit_password'))->level('link')->dialog(
|
|
amisMake()->Dialog()->title(__('admin.admin_user.edit_password'))->body([
|
|
amisMake()->Form()->title('')
|
|
->api([
|
|
'method'=>'PUT',
|
|
'url'=> admin_url('system/admin_users/$id')
|
|
])
|
|
->body([
|
|
amisMake()->TextControl('id')->value('${id}')->hidden(true),
|
|
amisMake()->TextControl('username')->value('${username}')->hidden(true),
|
|
amisMake()->TextControl('password', __('admin.password'))->type('input-password')->required()->validations(['minLength' => 6]),
|
|
amisMake()->TextControl('confirm_password', __('admin.confirm_password'))->type('input-password')->required()->validations(['minLength' => 6]),
|
|
]),
|
|
])->size('md')
|
|
);
|
|
}
|
|
}
|