海工商新版后台
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.
 
 

111 lines
3.4 KiB

<a href="javascript:void(0)" class="grid-dialog-tree"
data-url="{{ $url }}"
data-title="{{ $title }}"
data-checked="{{ $checkAll }}"
data-val="{{ $value }}">
<i class='feather icon-align-right'></i> {{ trans('admin.view') }}
</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 = {!! json_encode($nodes) !!};
var options = {!! admin_javascript_json($options) !!};
var area = {!! json_encode($area) !!};
$('.grid-dialog-tree').off('click').on('click', function () {
resolveDialogTree.call(this, {config: options, nodes: nodes, area: area, rootParentId: '{!! $rootParentId !!}', columns: {!! json_encode($columnNames) !!}});
});
</script>