BootstrapAdmin11/Bootstrap.Admin/Scripts/Menus.js

186 lines
7.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$(function () {
var bsa = new BootstrapAdmin({
url: '../api/Menus',
dataEntity: new DataEntity({
map: {
ID: "menuID",
ParentId: "parentId",
ParentName: "parentName",
Name: "name",
Order: "order",
Icon: "icon",
Url: "url",
Category: "category"
}
}),
click: {
assign: [{
id: 'btn_assignRole',
click: function (row) {
Role.getRolesByMenuId(row.ID, function (data) {
var dialog = $('#dialogRole');
dialog.find('.modal-title').text($.format('{0}-角色授权窗口', row.Name));
dialog.find('form').html(data);
dialog.modal('show');
});
}
}, {
id: 'btnSubmitRole',
click: function (row) {
var menuId = row.ID;
var dialog = $('#dialogRole');
var roleIds = dialog.find('input:checked').map(function (index, element) {
return $(element).val();
}).toArray().join(',');
Role.saveRolesByMenuId(menuId, roleIds, { modal: 'dialogRole' });
}
}]
}
});
$('table').smartTable({
url: '../api/Menus', //请求后台的URL*
sortName: 'Order',
queryParams: function (params) { return $.extend(params, { parentName: $('#txt_parent_menus_name').val(), name: $("#txt_menus_name").val(), category: $('#sel_menus_category').val() }); }, //传递参数(*
columns: [{ checkbox: true },
{ title: "Id", field: "ID", events: bsa.idEvents(), formatter: BootstrapAdmin.idFormatter },
{ title: "父级菜单", field: "ParentName", sortable: true },
{ title: "菜单名称", field: "Name", sortable: true },
{ title: "菜单序号", field: "Order", sortable: true },
{ title: "菜单图标", field: "Icon", sortable: false },
{ title: "菜单路径", field: "Url", sortable: false },
{ title: "菜单类别", field: "CategoryName", sortable: true }
]
});
// validate
$('#dataForm').autoValidate({
name: {
required: true,
maxlength: 50
},
order: {
digits: true
},
url: {
required: true,
maxlength: 50
},
category: {
required: true,
maxlength: 50
}
});
var $dialog = $('#dialogNew');
var $pickIcon = $('#pickIcon');
var $iconList = $('#iconTab').find('div.fontawesome-icon-list');
var $dialogNew = $dialog.find('div.modal-dialog');
var $dialogIcon = $('#dialogIcon');
var $dialogMenu = $('#dialogSubMenu').find('.modal-content');
var $btnSubmitMenu = $('#btnSubmitMenu');
var $btnPickIcon = $('#btnIcon');
var $inputIcon = $('#icon');
var $nestMenu = $('#nestable_menu');
var $nestMenuInput = $nestMenu.find('div.dd3-content');
var $parentMenuID = $('#parentId');
var $parentMenuName = $('#parentName');
$nestMenuInput.find('label:first').hide();
$iconList.find('ul li').addClass('col-md-3 col-sm-4 col-sm-6');
$iconList.on('click', 'div.fa-hover a, ul li', function () {
$pickIcon.attr('class', $(this).find('i, span:first').attr('class'));
return false;
});
$btnPickIcon.on('click', function () {
$dialogIcon.show();
});
$dialogIcon.find('div.modal-header, div.modal-footer').on('click', 'button', function () {
$dialogIcon.hide();
});
$dialogIcon.find('div.modal-footer').on('click', 'button:last', function () {
var icon = $pickIcon.attr('class');
$('#icon').val(icon);
$('#btnIcon').find('i').attr('class', icon);
});
// 排序按钮
$('#btnMenuOrder').on('click', function () {
$dialogNew.hide();
$btnSubmitMenu.data('type', 'order');
$nestMenuInput.find('label:last').find('input').hide();
$nestMenu.find('li.dd-item').hide().remove('[data-id="0"]');
$nestMenu.find('li[data-category="' + $('#category').selectpicker('val') + '"]').show();
// handler new menu
var did = $('#menuID').val();
if (did == "") did = 0;
if (did == 0) {
var menuName = $('#name').val();
var menuCate = $('select').selectpicker('val');
if (menuName == "") menuName = "新建菜单-未命名";
$nestMenu.find('ol.dd-list:first').append($.format('<li class="dd-item dd3-item" data-id="0" data-category="{1}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><label><span>{0}</span></label></div></li>', menuName, menuCate));
}
$nestMenu.find('li[data-id="' + did + '"] > div.dd3-content span').addClass('active');
$dialogMenu.show().adjustDialog();
});
// 选择父节点按钮
$('#btnMenuParent').on('click', function () {
$dialogNew.hide();
$btnSubmitMenu.data('type', 'parent');
$nestMenuInput.find('label:last').find('input').show();
$nestMenu.find('li.dd-item').hide().remove('[data-id="0"]');
$nestMenu.find('li[data-category="' + $('#category').selectpicker('val') + '"]').show();
var pid = $parentMenuID.val();
if (pid != "") {
// set active class
var radio = $nestMenuInput.find('input[value=' + pid + ']').filter(':radio');
radio.next('span').addClass('active');
}
$dialogMenu.show().adjustDialog();
});
$dialogMenu.find('div.modal-header, div.modal-footer').on('click', 'button', function () {
// remove active css
$nestMenu.find('li span').removeClass('active');
$dialogMenu.hide();
$dialogNew.show();
});
$btnSubmitMenu.on('click', function () {
var type = $(this).data('type');
switch (type) {
case "parent":
$parentMenuID.val($nestMenuInput.find('input').filter(':radio:checked').val());
$parentMenuName.val($nestMenuInput.find('input').filter(':radio:checked').next('span').text());
break;
case "order":
var data = $('#nestable_menu').nestable('serialize');
var mid = $('#menuID').val();
for (index in data) {
if (data[index].id == mid || data[index] == 0) {
$('#order').val(10 + index * 10);
break;
}
}
break;
default:
break;
}
});
// Dialog shown event
$dialog.on('show.bs.modal', function () {
var icon = $inputIcon.val();
if (icon == "") icon = "fa fa-dashboard";
$btnPickIcon.find('i').attr('class', icon);
});
$nestMenu.nestable();
// select
$('select').selectpicker();
});