4
0
Fork 0
dcat-admin/src/Form/Field/PermissionSelect.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);
}
}