You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.3 KiB
154 lines
5.3 KiB
3 years ago
|
<?php
|
||
|
/**
|
||
|
* Date: 2020/11/25 12:48
|
||
|
* User: chenlong <vip_chenlong@163.com>
|
||
|
*/
|
||
|
|
||
|
namespace app\admin\page\system;
|
||
|
|
||
|
|
||
|
use app\admin\model\system\Administrators as AdministratorsM;
|
||
|
use app\admin\model\system\DataAuth;
|
||
|
use app\admin\model\system\Role;
|
||
|
use app\common\BaseModel;
|
||
|
use app\common\BasePage;
|
||
|
use sdModule\layui\defaultForm\FormData;
|
||
|
use sdModule\layui\Layui;
|
||
|
use sdModule\layui\TablePage;
|
||
|
use sdModule\layui\tablePage\TableAux;
|
||
|
use sdModule\layuiSearch\Form;
|
||
|
use sdModule\layuiSearch\SearchForm;
|
||
|
use think\facade\Db;
|
||
|
|
||
|
class Administrators extends BasePage
|
||
|
{
|
||
|
public array $default_filter = [
|
||
|
'edit' => ['id', 'account', 'name', 'status', 'role_id']
|
||
|
];
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function listPageName(): string
|
||
|
{
|
||
|
return lang('administrator.administrator');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取创建列表table的数据
|
||
|
* @return TablePage
|
||
|
*/
|
||
|
public function getTablePageData(): TablePage
|
||
|
{
|
||
|
$field_data = [
|
||
|
TableAux::column(['type' => 'checkbox']),
|
||
|
TableAux::column('id', '唯一ID'),
|
||
|
TableAux::column('name', '用户名'),
|
||
|
TableAux::column('account', '账号'),
|
||
|
TableAux::column('error_number', '密码错误次数'),
|
||
|
TableAux::column('lately_time', '最近登录'),
|
||
|
TableAux::column('error_date', '错误日期'),
|
||
|
TableAux::column('role', '角色'),
|
||
|
TableAux::column('status', '状态'),
|
||
|
TableAux::column('create_time', '创建时间'),
|
||
|
];
|
||
|
|
||
|
$table = TablePage::create($field_data);
|
||
|
$table->addEvent(['directly_under', 'all']);
|
||
|
$table->setBarEventHtml('directly_under', Layui::button('直属', 'username')->setEvent('directly_under')->normal('sm'));
|
||
|
$table->setBarEventHtml('all', Layui::button('全部', 'group')->setEvent('all')->normal('sm'));
|
||
|
$table->setBarEventJs('directly_under', TableAux::searchWhere(['mode' => 'directly_under']));
|
||
|
$table->setBarEventJs('all', TableAux::searchWhere(['mode' => 'all']));
|
||
|
return $table;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @inheritDoc
|
||
|
* @return array
|
||
|
*/
|
||
|
public function formData(): array
|
||
|
{
|
||
|
$form_data = [
|
||
|
FormData::hidden('id'),
|
||
|
FormData::text('name', lang('administrator.name')),
|
||
|
FormData::textShort('account', lang('administrator.account'), '', lang('administrator.login account')),
|
||
|
FormData::password('password', lang('administrator.password'), lang('administrator.password require')),
|
||
|
FormData::password('password_confirm', lang('administrator.password confirm'), lang('administrator.password require')),
|
||
|
FormData::selects('role_id', lang('administrator.role'), Role::addSoftDelWhere(['administrators_id' => AdministratorsM::getSession('id')])->column('role', 'id')),
|
||
|
FormData::radio('status', lang('administrator.status'), AdministratorsM::getStatusSc())->preset(AdministratorsM::STATUS_NORMAL),
|
||
|
];
|
||
|
if (env('APP.DATA_AUTH', false)){
|
||
|
$default = DataAuth::where(['delete_time' => 0])->where(['administrators_id' => request()->get('id')])
|
||
|
->column('auth_id', 'table_names');
|
||
|
|
||
|
foreach (config('admin.data_auth') as $data){
|
||
|
$form_data[] = FormData::selects("data_auth_table_{$data['table']}", $data['remark'], self::dataAuth($data['table']))
|
||
|
->preset(empty($default[$data['table']]) ? [] : explode(',', $default[$data['table']]));
|
||
|
}
|
||
|
}
|
||
|
return $form_data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 数据权限的数据获取
|
||
|
* @param string $table
|
||
|
* @return array|\think\Collection
|
||
|
*/
|
||
|
public static function dataAuth(string $table)
|
||
|
{
|
||
|
$data_auth = array_column(config('admin.data_auth'), null, 'table');
|
||
|
if (empty($data_auth[$table])){
|
||
|
return [];
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
return Db::name($table)->where(BaseModel::getSoftDeleteData())
|
||
|
->column("{$data_auth[$table]['field']}", "id");
|
||
|
} catch (\Exception $exception) {
|
||
|
return [];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @inheritDoc
|
||
|
* @return string
|
||
|
*/
|
||
|
public function searchFormData():string
|
||
|
{
|
||
|
$form_data = [
|
||
|
SearchForm::Text('account%%', lang('administrator.account'))->label(true)->html(),
|
||
|
SearchForm::Text('name%%', lang('administrator.administrator'))->label(true)->html(),
|
||
|
SearchForm::Text('r.role%%', lang('administrator.role'))->label(true)->html(),
|
||
|
SearchForm::Select('status', lang('administrator.status'))->label(true)->html([
|
||
|
AdministratorsM::STATUS_NORMAL => lang('normal'),
|
||
|
AdministratorsM::STATUS_FROZEN => lang('disable'),
|
||
|
]),
|
||
|
];
|
||
|
|
||
|
return Form::CreateHTML($form_data);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 快捷搜索设置
|
||
|
* @return array
|
||
|
*/
|
||
|
public function setQuickSearchField(): array
|
||
|
{
|
||
|
return [
|
||
|
'name%%' => lang('administrator.administrator'),
|
||
|
'account%%' => lang('administrator.account')
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public function shortInput(): array
|
||
|
{
|
||
|
return [
|
||
|
'password' => lang('administrator.6-16 digit password'),
|
||
|
'password_confirm' => lang('administrator.6-16 digit password'),
|
||
|
];
|
||
|
}
|
||
|
}
|