fix(#I13MQS): 保存菜单时检查菜单类型

#Comment
comment #I13MQS
增加客户端检查 menuChild rule

#Issue
link https://gitee.com/LongbowEnterprise/dashboard/issues?id=I13MQS
This commit is contained in:
Argo Zhang 2019-11-14 16:26:59 +08:00
parent 9f832c365e
commit 0abd9aa9eb
No known key found for this signature in database
GPG Key ID: 152E398953DDF19F
4 changed files with 30 additions and 2 deletions

View File

@ -44,5 +44,15 @@ namespace Bootstrap.Admin.Controllers.Api
{
return MenuHelper.RetrieveMenus(User.Identity.Name).Where(m => m.Menus.Count() > 0).OrderBy(m => m.Name).Select(m => m.Name);
}
/// <summary>
/// 通过指定菜单检查子菜单是否有子菜单
/// </summary>
/// <returns></returns>
[HttpGet("{id}")]
public bool ValidateMenuBySubMenu(string id)
{
return !MenuHelper.RetrieveAllMenus(User.Identity.Name).Where(m => m.ParentId == id).Any();
}
}
}

View File

@ -148,7 +148,7 @@
</div>
<div class="form-group col-sm-6">
<label class="control-label" for="isRes">菜单类型</label>
<select data-toggle="lgbSelect" class="d-none" data-default-val="0" id="isRes">
<select data-toggle="lgbSelect" class="d-none menuChild" data-default-val="0" id="isRes" data-valid="true">
<option value="0">菜单</option>
<option value="1">资源</option>
<option value="2">按钮</option>

View File

@ -340,4 +340,22 @@ $(function () {
var val = defaultVal === $app.val() ? '0' : '1';
$category.lgbSelect('val', val);
})
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
}
});
}
return check;
}, "拥有子菜单时菜单类型不可更改为资源或者按钮");
}
});

View File

@ -114,7 +114,7 @@
// save attributes
var attrs = [];
["id", "name", "data-default-val"].forEach(function (v, index) {
["id", "name", "class", "data-valid", "data-default-val"].forEach(function (v, index) {
var value = that.$element.attr(v);
if (value !== undefined) attrs.push({ name: v, value: value });
});