| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | <?phpnamespace App\Admin\Extensions\Displayers;use Encore\Admin\Admin;use Encore\Admin\Grid\Displayers\AbstractDisplayer;class AjaxExpand extends AbstractDisplayer{    public function display()    {        $this->setupScript();        $key = $this->getKey();        if ($this->row->children->isEmpty()) {            return <<<EOT<i class="fa fa-file-o fa-fw"></i><span style="margin-left: 4px">{$this->value}</span>EOT;        }        return <<<EOT<span class="grid-expand" data-inserted="0" data-level="1" data-key="{$key}" data-parent_group="collapse-g-{$key}">   <a href="javascript:void(0)" style="color: #666666;"><i class="fa fa-folder fa-fw"></i><span style="margin-left: 4px">{$this->value}</span></a></span>EOT;    }    protected function setupScript()    {        $script = <<<EOT$("tbody").off().delegate('.grid-expand',"click",function(){    var expand=this;    if ($(this).data('inserted') == '0') {        $.ajax({            method: 'get',            url: "{$this->getResource()}?_expand_="+$(expand).data('key')+"&level="+$(expand).data('level')+"&parent_group="+$(expand).data('parent_group'),            beforeSend: function () {                $("i", expand).removeClass("fa-folder");                $("i", expand).addClass("fa-refresh fa-spin");            },            success: function (data) {                if (data.has_children == 0) {                    $("i", expand).removeClass("fa-refresh fa-spin");                    $("i", expand).addClass("fa-file-o");                    return false;                }                $("i", expand).removeClass("fa-refresh fa-spin");                $("i", expand).addClass("fa-folder-open");                var html = data.html;                var row = $(expand).closest('tr');                row.after(html);                $(expand).data('inserted', 1);                $('.{$this->grid->getGridRowName()}-checkbox').iCheck({checkboxClass:'icheckbox_minimal-blue'}).on('ifChanged', function () {                    if (this.checked) {                        $(this).closest('tr').css('background-color', '#ffffd5');                    } else {                        $(this).closest('tr').css('background-color', '');                    }                });                 render_action_delete();            }        });    } else {        if ($("i", this).hasClass("fa-folder")) {            //关闭状态,展开,展开只展开子类            $('.collapse-c-'+$(this).data('key')).collapse('show');        } else {            //开启状态,关闭,关闭要关闭所有的子类            $('.collapse-g-'+$(this).data('key')).collapse('hide');            $('.collapse-g-'+$(this).data('key')).find("i.fa-folder-open").toggleClass("fa-folder fa-folder-open");        }        $("i", this).toggleClass("fa-folder fa-folder-open");    }});EOT;        Admin::script($script);    }}
 |