<a href="javascript:void(0)" class="grid-dialog-tree"
   data-url="<?php echo e($url, false); ?>"
   data-title="<?php echo e($title, false); ?>"
   data-checked="<?php echo e($checkAll, false); ?>"
   data-val="<?php echo e($value, false); ?>">
    <i class='feather icon-align-right'></i> <?php echo e(trans('admin.view'), false); ?>

</a>

<template>
    <template id="dialog-tree-tpl">
        <div class="jstree-wrapper p-1" style="border:0"><div class="da-tree" style="margin-top:10px"></div></div>
    </template>
</template>

<script require="@jstree" once>
    window.resolveDialogTree = function (options) {
        var tpl = $('#dialog-tree-tpl').html(),
            t = $(this),
            val = t.data('val'),
            url = t.data('url'),
            title = t.data('title'),
            ckall = t.data('checked'),
            idx,
            loading;

        val = val ? String(val).split(',') : [];

        if (url) {
            if (loading) return;
            loading = 1;

            t.buttonLoading();
            $.ajax(url, {data: {value: val}}).then(function (resp) {
                loading = 0;
                t.buttonLoading(false);

                if (!resp.status) {
                    return Dcat.error(resp.message || '系统繁忙,请稍后再试');
                }

                open(resp.value);
            });
        } else {
            open(val);
        }

        function open(val) {
            options.config.core.data = formatNodes(val, options.nodes);

            idx = layer.open({
                type: 1,
                area: options.area,
                content: tpl,
                title: title,
                success: function (a, idx) {
                    var tree = $('#layui-layer'+idx).find('.da-tree');

                    tree.on("loaded.jstree", function () {
                        tree.jstree('open_all');
                    }).jstree(options.config);
                }
            });

            $(document).one('pjax:complete', function () {
                layer.close(idx);
            });
        }

        function formatNodes(value, all) {
            var idColumn = options.columns.id,
                textColumn = options.columns.text,
                parentColumn = options.columns.parent,
                nodes = [], i, v, parentId;

            for (i in all) {
                v = all[i];
                if (!v[idColumn]) continue;

                parentId = v[parentColumn] || '#';
                if (!parentId || parentId == options.rootParentId || parentId == '0') {
                    parentId = '#';
                }

                v['state'] = {'disabled': true};

                if (ckall || (value && Dcat.helpers.inObject(value, v[idColumn]))) {
                    v['state']['selected'] = true;
                }

                nodes.push({
                    'id'     : v[idColumn],
                    'text'   : v[textColumn] || null,
                    'parent' : parentId,
                    'state'  : v['state'],
                });
            }

            return nodes;
        }
    }
</script>

<script require="@jstree">
    var nodes = <?php echo json_encode($nodes); ?>;
    var options = <?php echo admin_javascript_json($options); ?>;
    var area = <?php echo json_encode($area); ?>;

    $('.grid-dialog-tree').off('click').on('click', function () {
        resolveDialogTree.call(this, {config: options, nodes: nodes, area: area, rootParentId: '<?php echo $rootParentId; ?>', columns: <?php echo json_encode($columnNames); ?>});
    });
</script>
<?php /**PATH D:\work\PHP\aimeiyue\all\service\vendor\dcat\laravel-admin\src/../resources/views/grid/displayer/dialogtree.blade.php ENDPATH**/ ?>