添加目录、菜单、控件
This commit is contained in:
Binary file not shown.
@@ -148,6 +148,13 @@
|
|||||||
<param name="menu"></param>
|
<param name="menu"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MenuController.Add(Yi.Framework.Model.Models.MenuEntity)">
|
||||||
|
<summary>
|
||||||
|
插入
|
||||||
|
</summary>
|
||||||
|
<param name="menu"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MenuController.GetMenuTree">
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MenuController.GetMenuTree">
|
||||||
<summary>
|
<summary>
|
||||||
得到树形菜单
|
得到树形菜单
|
||||||
|
|||||||
@@ -37,7 +37,20 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<Result> GetList([FromQuery] MenuEntity menu)
|
public async Task<Result> GetList([FromQuery] MenuEntity menu)
|
||||||
{
|
{
|
||||||
return Result.Success().SetData(await _iMenuService.SelctGetList(menu));
|
var p= await _iMenuService.SelctGetList(menu);
|
||||||
|
p.ForEach(m => m.Children = new List<MenuEntity>());
|
||||||
|
return Result.Success().SetData(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 插入
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="menu"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<Result> Add(MenuEntity menu)
|
||||||
|
{
|
||||||
|
return Result.Success().SetData(await _iMenuService._repository.InsertReturnSnowflakeIdAsync(menu));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -104,5 +104,15 @@ namespace Yi.Framework.Model.Models
|
|||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="Remark" )]
|
[SugarColumn(ColumnName="Remark" )]
|
||||||
public string Remark { get; set; }
|
public string Remark { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 组件路径
|
||||||
|
///</summary>
|
||||||
|
[SugarColumn(ColumnName="Component" )]
|
||||||
|
public string Component { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 路由参数
|
||||||
|
///</summary>
|
||||||
|
[SugarColumn(ColumnName="Query" )]
|
||||||
|
public string Query { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,14 +124,22 @@ namespace Yi.Framework.Service
|
|||||||
{
|
{
|
||||||
userRoleMenu.RoleCodes.Add(role.RoleCode);
|
userRoleMenu.RoleCodes.Add(role.RoleCode);
|
||||||
|
|
||||||
foreach (var menu in role.Menus)
|
if (role.Menus.IsNotNull())
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(menu.PermissionCode))
|
foreach (var menu in role.Menus)
|
||||||
{
|
{
|
||||||
userRoleMenu.PermissionCodes.Add(menu.PermissionCode);
|
|
||||||
userRoleMenu.Menus.Add(menu);
|
|
||||||
|
if (!string.IsNullOrEmpty(menu.PermissionCode))
|
||||||
|
{
|
||||||
|
userRoleMenu.PermissionCodes.Add(menu.PermissionCode);
|
||||||
|
userRoleMenu.Menus.Add(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//刚好可以去除一下多余的导航属性
|
//刚好可以去除一下多余的导航属性
|
||||||
role.Menus = null;
|
role.Menus = null;
|
||||||
userRoleMenu.Roles.Add(role);
|
userRoleMenu.Roles.Add(role);
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export function roleMenuTreeselect(roleId) {
|
|||||||
// 新增菜单
|
// 新增菜单
|
||||||
export function addMenu(data) {
|
export function addMenu(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/menu',
|
url: '/menu/add',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ export function mergeRecursive(source, target) {
|
|||||||
* @param {*} children 孩子节点字段 默认 'children'
|
* @param {*} children 孩子节点字段 默认 'children'
|
||||||
*/
|
*/
|
||||||
export function handleTree(data, id, parentId, children) {
|
export function handleTree(data, id, parentId, children) {
|
||||||
|
|
||||||
let config = {
|
let config = {
|
||||||
id: id || 'id',
|
id: id || 'id',
|
||||||
parentId: parentId || 'parentId',
|
parentId: parentId || 'parentId',
|
||||||
|
|||||||
@@ -106,8 +106,8 @@
|
|||||||
<el-tree-select
|
<el-tree-select
|
||||||
v-model="form.parentId"
|
v-model="form.parentId"
|
||||||
:data="menuOptions"
|
:data="menuOptions"
|
||||||
:props="{ value: 'menuId', label: 'menuName', children: 'children' }"
|
:props="{ value: 'id', label: 'menuName', children: 'children' }"
|
||||||
value-key="menuId"
|
value-key="id"
|
||||||
placeholder="选择上级菜单"
|
placeholder="选择上级菜单"
|
||||||
check-strictly
|
check-strictly
|
||||||
/>
|
/>
|
||||||
@@ -122,8 +122,8 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24" v-if="form.menuType != 1">
|
<el-col :span="24" v-if="form.menuType != 2">
|
||||||
<el-form-item label="菜单图标" prop="icon">
|
<el-form-item label="菜单图标" prop="menuIcon">
|
||||||
<el-popover
|
<el-popover
|
||||||
placement="bottom-start"
|
placement="bottom-start"
|
||||||
:width="540"
|
:width="540"
|
||||||
@@ -132,11 +132,11 @@
|
|||||||
@show="showSelectIcon"
|
@show="showSelectIcon"
|
||||||
>
|
>
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-input v-model="form.icon" placeholder="点击选择图标" @click="showSelectIcon" v-click-outside="hideSelectIcon" readonly>
|
<el-input v-model="form.menuIcon" placeholder="点击选择图标" @click="showSelectIcon" v-click-outside="hideSelectIcon" readonly>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<svg-icon
|
<svg-icon
|
||||||
v-if="form.icon"
|
v-if="form.menuIcon"
|
||||||
:icon-class="form.icon"
|
:icon-class="form.menuIcon"
|
||||||
class="el-input__icon"
|
class="el-input__icon"
|
||||||
style="height: 32px;width: 16px;"
|
style="height: 32px;width: 16px;"
|
||||||
/>
|
/>
|
||||||
@@ -167,14 +167,16 @@
|
|||||||
</el-tooltip>是否外链
|
</el-tooltip>是否外链
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<el-radio-group v-model="form.isFrame">
|
<el-radio-group v-model="form.isLink">
|
||||||
<el-radio label="0">是</el-radio>
|
<el-radio :label=true>是</el-radio>
|
||||||
<el-radio label="1">否</el-radio>
|
<el-radio :label=false>否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
|
||||||
<el-col :span="12" v-if="form.menuType != 1">
|
<el-col :span="12" v-if="form.menuType != 1">
|
||||||
<el-form-item prop="path">
|
<el-form-item prop="router">
|
||||||
<template #label>
|
<template #label>
|
||||||
<span>
|
<span>
|
||||||
<el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top">
|
<el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top">
|
||||||
@@ -183,7 +185,7 @@
|
|||||||
路由地址
|
路由地址
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<el-input v-model="form.path" placeholder="请输入路由地址" />
|
<el-input v-model="form.router" placeholder="请输入路由地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" v-if="form.menuType == 2">
|
<el-col :span="12" v-if="form.menuType == 2">
|
||||||
@@ -201,7 +203,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" v-if="form.menuType != 0">
|
<el-col :span="12" v-if="form.menuType != 0">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" />
|
<el-input v-model="form.permissionCode" placeholder="请输入权限标识" maxlength="100" />
|
||||||
<template #label>
|
<template #label>
|
||||||
<span>
|
<span>
|
||||||
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top">
|
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top">
|
||||||
@@ -236,8 +238,8 @@
|
|||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<el-radio-group v-model="form.isCache">
|
<el-radio-group v-model="form.isCache">
|
||||||
<el-radio label="0">缓存</el-radio>
|
<el-radio :label=true>缓存</el-radio>
|
||||||
<el-radio label="1">不缓存</el-radio>
|
<el-radio :label=false>不缓存</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -251,7 +253,7 @@
|
|||||||
显示状态
|
显示状态
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<el-radio-group v-model="form.visible">
|
<el-radio-group v-model="form.isShow">
|
||||||
<el-radio
|
<el-radio
|
||||||
v-for="dict in sys_show_hide"
|
v-for="dict in sys_show_hide"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
@@ -270,7 +272,7 @@
|
|||||||
菜单状态
|
菜单状态
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.isDeleted">
|
||||||
<el-radio
|
<el-radio
|
||||||
v-for="dict in sys_normal_disable"
|
v-for="dict in sys_normal_disable"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
@@ -320,7 +322,7 @@ const data = reactive({
|
|||||||
rules: {
|
rules: {
|
||||||
menuName: [{ required: true, message: "菜单名称不能为空", trigger: "blur" }],
|
menuName: [{ required: true, message: "菜单名称不能为空", trigger: "blur" }],
|
||||||
orderNum: [{ required: true, message: "菜单顺序不能为空", trigger: "blur" }],
|
orderNum: [{ required: true, message: "菜单顺序不能为空", trigger: "blur" }],
|
||||||
path: [{ required: true, message: "路由地址不能为空", trigger: "blur" }]
|
router: [{ required: true, message: "路由地址不能为空", trigger: "blur" }]
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -354,13 +356,13 @@ function reset() {
|
|||||||
menuId: undefined,
|
menuId: undefined,
|
||||||
parentId: 0,
|
parentId: 0,
|
||||||
menuName: undefined,
|
menuName: undefined,
|
||||||
icon: undefined,
|
menuIcon: undefined,
|
||||||
menuType: "M",
|
menuType: 0,
|
||||||
orderNum: undefined,
|
orderNum: 0,
|
||||||
isFrame: "1",
|
isLink: false,
|
||||||
isCache: "0",
|
isCache: false,
|
||||||
visible: "0",
|
isShow: true,
|
||||||
isDeleted: "0"
|
isDeleted: false
|
||||||
};
|
};
|
||||||
proxy.resetForm("menuRef");
|
proxy.resetForm("menuRef");
|
||||||
}
|
}
|
||||||
@@ -371,7 +373,7 @@ function showSelectIcon() {
|
|||||||
}
|
}
|
||||||
/** 选择图标 */
|
/** 选择图标 */
|
||||||
function selected(name) {
|
function selected(name) {
|
||||||
form.value.icon = name;
|
form.value.menuIcon = name;
|
||||||
showChooseIcon.value = false;
|
showChooseIcon.value = false;
|
||||||
}
|
}
|
||||||
/** 图标外层点击隐藏下拉列表 */
|
/** 图标外层点击隐藏下拉列表 */
|
||||||
@@ -395,8 +397,8 @@ function resetQuery() {
|
|||||||
function handleAdd(row) {
|
function handleAdd(row) {
|
||||||
reset();
|
reset();
|
||||||
getTreeselect();
|
getTreeselect();
|
||||||
if (row != null && row.menuId) {
|
if (row != null && row.id) {
|
||||||
form.value.parentId = row.menuId;
|
form.value.parentId = row.id;
|
||||||
} else {
|
} else {
|
||||||
form.value.parentId = 0;
|
form.value.parentId = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user