fix(#IS7XT): 父级菜单禁止选择资源或者按钮
#Comment comment #IS7XT #Issue link https://gitee.com/LongbowEnterprise/dashboard/issues?id=IS7XT
This commit is contained in:
parent
0abd9aa9eb
commit
cd1f242b2b
|
@ -54,5 +54,15 @@ namespace Bootstrap.Admin.Controllers.Api
|
|||
{
|
||||
return !MenuHelper.RetrieveAllMenus(User.Identity.Name).Where(m => m.ParentId == id).Any();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过指定菜单检查父级菜单是否为菜单类型 资源与按钮返回 false
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{id}")]
|
||||
public bool ValidateParentMenuById(string id)
|
||||
{
|
||||
return MenuHelper.RetrieveAllMenus(User.Identity.Name).FirstOrDefault(m => m.Id == id)?.IsResource == 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -131,10 +131,10 @@
|
|||
var html = "";
|
||||
$.each(menus, function (index, menu) {
|
||||
if (menu.Menus.length === 0) {
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{4}" data-category="{3}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{5}</span><span class="menuOrder">{4}</span></div></li>', menu.Id, menu.Icon, menu.Name, menu.Category, menu.Order, formatCategoryName(menu));
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{4}" data-category="{3}" data-resource="{6}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{5}</span><span class="menuOrder">{4}</span></div></li>', menu.Id, menu.Icon, menu.Name, menu.Category, menu.Order, formatCategoryName(menu), menu.IsResource);
|
||||
}
|
||||
else {
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{5}" data-category="{3}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{6}</span><span class="menuOrder">{5}</span></div><ol class="dd-list">{4}</ol></li>', menu.Id, menu.Icon, menu.Name, menu.Category, cascadeSubMenu(menu.Menus), menu.Order, formatCategoryName(menu));
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{5}" data-category="{3}" data-resource="{7}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{6}</span><span class="menuOrder">{5}</span></div><ol class="dd-list">{4}</ol></li>', menu.Id, menu.Icon, menu.Name, menu.Category, cascadeSubMenu(menu.Menus), menu.Order, formatCategoryName(menu), menu.IsResource);
|
||||
}
|
||||
});
|
||||
return html;
|
||||
|
@ -144,10 +144,10 @@
|
|||
var html = "";
|
||||
$.each(menus, function (index, menu) {
|
||||
if (menu.Menus.length === 0) {
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{4}" data-category="{3}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{5}</span><span class="menuOrder">{4}</span></div></li>', menu.Id, menu.Icon, menu.Name, menu.Category, menu.Order, formatCategoryName(menu));
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{4}" data-category="{3}" data-resource="{6}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{5}</span><span class="menuOrder">{4}</span></div></li>', menu.Id, menu.Icon, menu.Name, menu.Category, menu.Order, formatCategoryName(menu), menu.IsResource);
|
||||
}
|
||||
else {
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{5}" data-category="{3}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{6}</span><span class="menuOrder">{5}</span></div><ol class="dd-list">{4}</ol></li>', menu.Id, menu.Icon, menu.Name, menu.Category, cascadeSubMenu(menu.Menus), menu.Order, formatCategoryName(menu));
|
||||
html += $.format('<li class="dd-item dd3-item" data-id="{0}" data-order="{5}" data-category="{3}" data-resource="{7}"><div class="dd-handle dd3-handle"></div><div class="dd3-content"><div class="checkbox"><label><input type="checkbox" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><div class="radio"><label><input type="radio" name="menu" value="{0}"><span><i class="{1}"></i>{2}</span></label></div><span class="menuType">{6}</span><span class="menuOrder">{5}</span></div><ol class="dd-list">{4}</ol></li>', menu.Id, menu.Icon, menu.Name, menu.Category, cascadeSubMenu(menu.Menus), menu.Order, formatCategoryName(menu), menu.IsResource);
|
||||
}
|
||||
});
|
||||
return html;
|
||||
|
|
|
@ -217,6 +217,7 @@ $(function () {
|
|||
$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-resource!="0"]').find(':radio').prop('disabled', true)
|
||||
$nestMenu.find('li[data-category="' + $category.val() + '"]').show();
|
||||
showDialog();
|
||||
});
|
||||
|
@ -240,8 +241,16 @@ $(function () {
|
|||
var type = $(this).data('type');
|
||||
switch (type) {
|
||||
case "parent":
|
||||
$parentMenuID.val($('.dd3-content :radio:checked').val());
|
||||
$parentMenuName.val($('.dd3-content :radio:checked').next('span').text());
|
||||
// 父级菜单不可以是资源或者按钮类型
|
||||
var pId = $('.dd3-content :radio:checked').val();
|
||||
var check = $.remoteValidate('api/Category/ValidateParentMenuById/' + pId);
|
||||
if (check) {
|
||||
$parentMenuID.val(pId);
|
||||
$parentMenuName.val($('.dd3-content :radio:checked').next('span').text());
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case "order":
|
||||
var data = $nestMenu.find('li:visible');
|
||||
|
@ -344,17 +353,7 @@ $(function () {
|
|||
if ($.isFunction($.validator)) {
|
||||
$.validator.addMethod("menuChild", function (value, element) {
|
||||
var id = $("#menuID").val();
|
||||
var check = id === "" || value === "菜单";
|
||||
if (!check) {
|
||||
$.get({
|
||||
url: $.formatUrl('api/Category/ValidateMenuBySubMenu/' + id),
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function (result) {
|
||||
check = result
|
||||
}
|
||||
});
|
||||
}
|
||||
var check = id === "" || value === "菜单" || $.remoteValidate('api/Category/ValidateMenuBySubMenu/' + id);
|
||||
return check;
|
||||
}, "拥有子菜单时菜单类型不可更改为资源或者按钮");
|
||||
}
|
||||
|
|
|
@ -125,6 +125,19 @@
|
|||
document.webkitIsFullScreen || window.fullscreen ||
|
||||
false;
|
||||
},
|
||||
remoteValidate: function (url, method) {
|
||||
if (method === undefined) method = 'get';
|
||||
var check = false;
|
||||
jQuery[method]({
|
||||
url: $.formatUrl(url),
|
||||
async: false,
|
||||
cache: false,
|
||||
success: function (result) {
|
||||
check = result
|
||||
}
|
||||
});
|
||||
return check;
|
||||
},
|
||||
bc: function (options) {
|
||||
options = $.extend({
|
||||
id: "",
|
||||
|
|
Loading…
Reference in New Issue