90 lines
1.8 KiB
PHP
90 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Dcat\Admin\Form\Field;
|
|
|
|
use Dcat\Admin\Admin;
|
|
use Dcat\Admin\Form\Field;
|
|
|
|
class PermissionSelect extends Field
|
|
{
|
|
protected $view = 'admin::form.permission-select';
|
|
|
|
protected $listen = '';
|
|
|
|
protected static $css = [
|
|
'@element',
|
|
];
|
|
|
|
protected static $js = [
|
|
'@vue',
|
|
'@element',
|
|
];
|
|
|
|
public function render()
|
|
{
|
|
Admin::style(
|
|
<<<CSS
|
|
.el-tree>.el-tree-node {
|
|
border-top: 1px solid #EBEEF5 !important;
|
|
padding: 10px 0;
|
|
}
|
|
.el-tree-node__children .el-tree-node{
|
|
display: flex !important;
|
|
}
|
|
.el-tree-node__children .el-tree-node .el-tree-node__children{
|
|
display: flex !important;
|
|
flex-wrap: wrap;
|
|
padding-left: 0 !important;
|
|
}
|
|
.el-tree-node__expand-icon{
|
|
display: none !important;
|
|
}
|
|
.custom-tree-node {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-size: 16px;
|
|
padding-right: 8px;
|
|
}
|
|
.tran{
|
|
transition: transform .3s;
|
|
}
|
|
.isactive{
|
|
transform: rotate(90deg) ;
|
|
}
|
|
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{
|
|
background-color:transparent !important;
|
|
}
|
|
.el-tree-node__content:hover, .el-upload-list__item:hover{
|
|
background-color:transparent !important;
|
|
}
|
|
CSS
|
|
);
|
|
|
|
$this->addVariables(['listen' => $this->listen]);
|
|
return parent::render();
|
|
}
|
|
|
|
/**
|
|
* 格式化渲染值
|
|
*
|
|
* @param [type] $value
|
|
* @return void
|
|
*/
|
|
protected function formatFieldData($data)
|
|
{
|
|
$value = parent::formatFieldData($data);
|
|
$hasChecked = [];
|
|
foreach ($value ?? [] as $permission){
|
|
$hasChecked[] = $permission['id'];
|
|
}
|
|
return json_encode($hasChecked);
|
|
}
|
|
|
|
protected function prepareInputValue($value)
|
|
{
|
|
return json_decode($value);
|
|
}
|
|
}
|