define(['jquery'], function($) {
$(document).on('change', 'table tfoot [type="checkbox"]', function(e) {
e && e.preventDefault();
var $table = $(e.target).closest('table'),
$checked = $(e.target).is(':checked');
$('thead [type="checkbox"]', $table).prop('checked', $checked);
$('.page-table-header input[type="checkbox"]').prop('checked', $checked);
$('tbody [type="checkbox"]', $table).prop('checked', $checked)
});
$(document).on('change', 'table thead [type="checkbox"]', function(e) {
e && e.preventDefault();
var $table = $(e.target).closest('table'),
$checked = $(e.target).is(':checked');
$('.page-table-header input[type="checkbox"]').prop('checked', $checked);
$('tbody [type="checkbox"]:not(:disabled)', $table).prop('checked', $checked);
$('tfoot [type="checkbox"]', $table).prop('checked', $checked)
});
$(document).on('change', '.page-table-header input[type="checkbox"]', function(e) {
e && e.preventDefault();
var $table = $(e.target).parent().next('table'),
$checked = $(e.target).is(':checked');
$('thead [type="checkbox"]', $table).prop('checked', $checked);
$('tfoot [type="checkbox"]', $table).prop('checked', $checked);
$('tbody [type="checkbox"]', $table).prop('checked', $checked)
});
var table_search = $('form.table-search');
if (table_search.length > 0) {
$('.daterange-time').addClass('btn-sm')
}
var div = $(".table-responsive"),
checkboxs = $('tbody tr td:first-child [type="checkbox"]', div),
batch = $('[data-toggle^="batch"]'),
trigger = $('[data-trigger="batch"]');
if (div.length > 0) {
$('[data-toggle="ajaxDisplayorder"]').click(function() {
var $this = $(this),
href = $this.data("href"),
html = $this.val() || $this.html(),
buttontype = $this.val() ? 'input' : 'button';
var postdata = {},
selecteds = all_selects();
postdata.displayorder = (function() {
var displayorders = [];
$.each(selecteds, function(i) {
displayorders.push({
id: this,
displayorder: $(":input[name='displayorder[" + this + "]']").val()
})
});
return displayorders
})();
$this.attr('disabled', true), buttontype == 'button' ? $this.html(' ' + tip.lang.processing) : $this.val(tip.lang.processing);
$.post(href, postdata).done(function(data) {
data = eval("(" + data + ")");
if (data.status == 1) {
tip.msgbox.suc(data.result.message || tip.lang.success);
$this.removeAttr('disabled'), buttontype == 'button' ? $this.html(html) : $this.val(html)
} else {
buttontype == 'button' ? $this.html(html) : $this.val(html);
$this.removeAttr('disabled'), tip.msgbox.err(data.result.message || tip.lang.error)
}
}).fail(function() {
$this.removeAttr('disabled'), buttontype == 'button' ? $this.html(html) : $this.val(html), tip.msgbox.err(tip.lang.exception)
})
});
checkboxs.click(function() {
var $this = $(this);
if ($this[0].checked) {
$this.closest('tr').find('td').css('background', '#f7fbff')
} else {
$this.closest('tr').find('td').css('background', 'none')
}
});
var all_selects = function() {
var vals = checkboxs.map(function() {
return $(this).val()
}).get();
return vals
};
var get_selecteds = function() {
var selected_checkboxs = $('tbody tr td:first-child [type="checkbox"]:checked', div);
selecteds = selected_checkboxs.map(function() {
return $(this).val()
}).get();
return selecteds
};
var selecteds = get_selecteds();
if (selecteds.length <= 0) {
batch.attr("disabled", "disabled")
}
batch.on("click", function() {
var $this = $(this),
href = $this.data("href"),
html = $this.val() || $this.html(),
buttontype = $this.val() ? 'input' : 'button';
if ($this.data('toggle') == 'batch-level' || $this.data('toggle') == 'batch-group') {
return
}
$this.attr("disabled", "disabled");
var chks = $('tbody tr td:first-child [type="checkbox"]:checked', div);
var selecteds = get_selecteds();
var submit = function() {
buttontype == 'button' ? $this.html(' ' + tip.lang.processing) : $this.val(tip.lang.processing);
$.post(href, {
ids: selecteds
}).done(function(data) {
data = eval("(" + data + ")");
if (data.status == 1) {
if ($this.data('toggle') == 'batch-remove') {
var deferred = $.Deferred(),
removeHandler = function(def) {
var c = 0;
return chks.parents("tr").fadeOut(function() {
$(this).remove(), c++, chks.length == c && def.resolve()
}), def
};
$.when(removeHandler(deferred)).done(function() {
batch.attr("disabled", 0 == $('tbody tr td:first-child [type="checkbox"]:checked', div).length), 0 == $("table tbody tr", div).length && window.location.reload()
})
} else {
batch.attr("disabled", 0 == $('table tbody tr td:first-child [type="checkbox"]:checked', div).length);
tip.msgbox.suc(data.result.message || tip.lang.success, data.result.url)
}
buttontype == 'button' ? $this.html(html) : $this.val(html)
} else {
buttontype == 'button' ? $this.html(html) : $this.val(html);
tip.msgbox.err(data.result.message || tip.lang.error)
}
}).fail(function() {
buttontype == 'button' ? $this.html(html) : $this.val(html), tip.msgbox.err(tip.lang.exception)
})
};
if ($this.data('confirm')) {
tip.confirm($this.data('confirm'), submit, function() {
$this.removeAttr("disabled", "disabled")
})
} else {
submit()
}
}), trigger.on("click", function() {
var ids = all_selects();
$(this).data("set", {
ids: ids.join(',')
})
}), $(document).on("change", '.page-table-header input[type="checkbox"]', function(e) {
e && e.preventDefault();
var t = $(e.target).parent().next("table"),
checked = $(e.target).is(":checked");
$('.page-table-header input[type="checkbox"]', t).prop("checked", checked), batch.add(trigger).attr("disabled", !checked);
$('tbody tr td:first-child [type="checkbox"]', t).each(function() {
var $this = $(this);
if (checked) {
$this.closest('tr').find('td').css('background', '#f7fbff')
} else {
$this.closest('tr').find('td').css('background', 'none')
}
})
}), $(document).on("change", '.table-responsive tfoot td:first [type="checkbox"]', function(e) {
e && e.preventDefault();
var t = $(e.target).closest("table"),
checked = $(e.target).is(":checked");
$('.page-table-header input[type="checkbox"]', t).prop("checked", checked), batch.add(trigger).attr("disabled", !checked);
$('tbody tr td:first-child [type="checkbox"]', t).each(function() {
var $this = $(this);
if (checked) {
$this.closest('tr').find('td').css('background', '#f7fbff')
} else {
$this.closest('tr').find('td').css('background', 'none')
}
})
}), $(document).on("change", '.table-responsive thead th:first [type="checkbox"]', function(e) {
e && e.preventDefault();
var t = $(e.target).closest("table"),
checked = $(e.target).is(":checked");
$('.page-table-header input[type="checkbox"]', t).prop("checked", checked), batch.add(trigger).attr("disabled", !checked);
$('tbody tr td:first-child [type="checkbox"]', t).each(function() {
var $this = $(this);
if (checked) {
$this.closest('tr').find('td').css('background', '#f7fbff')
} else {
$this.closest('tr').find('td').css('background', 'none')
}
})
}), $(document).on("change", '.table-responsive tbody td:first-child [type="checkbox"]', function(e) {
e && e.preventDefault();
var t = $(e.target).closest("table"),
checked = $(e.target).is(":checked"),
chk = $('tbody tr td:first-child [type="checkbox"]:checked', t);
$('.page-table-header input[type="checkbox"]').prop("checked", checked && chk.length == checkboxs.length);
$('tfoot td:first [type="checkbox"]', t).prop("checked", checked && chk.length == checkboxs.length);
$('thead th:first [type="checkbox"]', t).prop("checked", checked && chk.length == checkboxs.length);
if (chk.length > 0) {
batch.add(trigger).removeAttr("disabled")
} else {
batch.add(trigger).attr("disabled", "disabled")
}
}), $(document).on("click", '.table-responsive tbody [data-toggle="ajaxRemove"]', function(e) {
e.preventDefault();
var obj = $(this),
url = obj.attr('href') || obj.data('href') || obj.data('url'),
confirm = obj.data('msg') || obj.data('confirm');
var submit = function() {
obj.html(' ' + tip.lang.processing);
$.post(url).done(function(data) {
data = eval("(" + data + ")");
if (data.status == 1) {
var tr = obj.parents("tr");
tr.css({
"background-color": "#dff0d8"
}).find("td").css({
"background-color": "#dff0d8"
}), tr.fadeOut(function() {
tr.remove(), 0 == $(obj.closest('tbody')).find('tr').length && window.location.reload()
})
} else {
obj.button('reset'), tip.msgbox.err(data.result.message || tip.lang.error, data.result.url)
}
}).fail(function() {
obj.button('reset');
tip.msgbox.err(tip.lang.exception)
})
};
if (confirm) {
tip.confirm(confirm, submit, function() {
obj.removeAttr("disabled", "disabled")
})
} else {
submit()
}
})
} else {
batch.attr("disabled", "disabled")
}
}), $(document).on("click.dropdown-menu", ".dropdown-select > li > a", function(e) {
e.preventDefault();
var target = $(e.target);
if (!target.is('a')) {
target = target.closest('a')
}
var menu = target.closest('.dropdown-menu'),
label = menu.parent().find('.dropdown-label');
var input = target.find('input'),
checked = input.is(':checked');
if (!input.is(':disabled') && input.attr('type') == 'radio' && checked) {
menu.find('li').removeClass('active')
}
target.parent().removeClass('active');
if (!checked) {
target.parent().addClass('active')
}
input.prop('checked', !input.prop('checked'));
var textchange = label.data('change') == 'true' || label.data('change') === undefined;
if (textchange) {
var checkedinput = menu.find('li > a >input:checked');
if (checkedinput.length > 0) {
var texts = [];
checkedinput.each(function() {
var text = $(this).parent().text();
if (text) {
texts.push($.trim(text))
}
});
if (texts.length < 6) {
texts = texts.join(", ")
} else {
texts = " 选中" + texts.length + "项"
}
label.html(texts)
} else {
label.html(label.data('placeholder'))
}
}
input.trigger('change', [input.val()]);
var change = menu.data('change') || '';
if (change == 'submit') {
menu.closest('form').submit()
}
});