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.
138 lines
3.4 KiB
138 lines
3.4 KiB
<span class="{{ $class }}"> |
|
<span style="cursor: pointer" class="switch-dialog">{!! $button !!}</span> |
|
|
|
<template class="content"> |
|
<div {!! $attributes !!}> |
|
<div class="p-2 dialog-body">{!! $table !!}</div> |
|
|
|
@if($footer) |
|
<div class="dialog-footer layui-layer-btn">{!! $footer !!}</div> |
|
@endif |
|
</div> |
|
</template> |
|
|
|
{{-- 标题 --}} |
|
<template class="title">{!! $title !!}</template> |
|
|
|
{{-- 事件监听 --}} |
|
<template class="event"> |
|
{!! $events['shown'] !!} |
|
|
|
@if(!empty($events['load'])) |
|
$t.on('table:loaded', function (e) { {!! $events['load'] !!} }); |
|
@endif |
|
</template> |
|
</span> |
|
|
|
<script init=".{{ $class }}"> |
|
var area = screen.width <= 850 ? ['100%', '100%',] : '{{ $width }}', |
|
offset = screen.width <= 850 ? 0 : '70px', |
|
_tb = '.async-table', |
|
_container = '.dialog-table', |
|
_id, |
|
_temp, |
|
_title, |
|
_event, |
|
_btnId; |
|
|
|
setId(id); |
|
|
|
function hidden(index) { |
|
{!! $events['hidden'] !!} |
|
|
|
getLayer(index).find(_container).trigger('dialog:hidden'); |
|
} |
|
|
|
function open(btn) { |
|
var index = layer.open({ |
|
type: 1, |
|
title: $(_title).html(), |
|
area: area, |
|
offset: offset, |
|
maxmin: false, |
|
resize: false, |
|
content: $(_temp).html(), |
|
success: function(layero, index) { |
|
var $c = getLayer(index).find(_container), |
|
$t = getLayer(index).find(_tb); |
|
|
|
$c.attr('layer', index); |
|
|
|
setDataId($c); |
|
setMaxHeight(index); |
|
|
|
eval($(_event).html()); |
|
|
|
setTimeout(function () { |
|
Dcat.grid.AsyncTable({container: $t}); |
|
|
|
$t.trigger('table:load'); |
|
}, 100); |
|
|
|
$c.trigger('dialog:shown'); |
|
|
|
$c.on('dialog:open', openDialog); |
|
$c.on('dialog:close', closeDialog) |
|
}, |
|
cancel: function (index) { |
|
btn && btn.removeAttr('layer'); |
|
|
|
hidden(index) |
|
} |
|
}); |
|
|
|
btn && btn.attr('layer', index); |
|
} |
|
|
|
function setDataId(obj) { |
|
if (! obj.attr('data-id')) { |
|
obj.attr('data-id', id); |
|
} |
|
} |
|
|
|
function setId(val) { |
|
if (! val) return; |
|
|
|
_id = '#' + val; |
|
_temp = _id + ' .content'; |
|
_title = _id + ' .title'; |
|
_event = _id + ' .event'; |
|
_btnId = _id + ' .switch-dialog'; |
|
} |
|
|
|
function openDialog () { |
|
setId($(this).attr('data-id')); |
|
setDataId($(this)); |
|
|
|
if (! $(this).attr('layer')) { |
|
open($(this)); |
|
} |
|
} |
|
|
|
function getLayer(index) { |
|
return $('#layui-layer'+index) |
|
} |
|
|
|
function closeDialog() { |
|
var index = $(this).attr('layer'); |
|
|
|
getLayer(index).find(_container).removeAttr('layer'); |
|
$(_btnId).removeAttr('layer'); |
|
|
|
if (index) { |
|
layer.close(index); |
|
hidden(index); |
|
} |
|
} |
|
|
|
function setMaxHeight(index) { |
|
var maxHeight = ($(window).height() - 220); |
|
if (maxHeight < 250) { |
|
maxHeight = maxHeight + 120; |
|
} |
|
|
|
getLayer(index).find('.layui-layer-content').css({'max-height': maxHeight}); |
|
} |
|
|
|
$(_btnId).on('click', openDialog); |
|
</script> |