树形构造器修改

This commit is contained in:
chenchun
2022-09-11 16:49:40 +08:00
parent ef35e1cfd9
commit c65e76bbc3
15 changed files with 62 additions and 36 deletions

View File

@@ -294,6 +294,14 @@
</summary>
<returns></returns>
</member>
<member name="M:Yi.Framework.ApiMicroservice.Controllers.RoleController.UpdateStatus(System.Int64,System.Boolean)">
<summary>
更改角色状态
</summary>
<param name="roleId"></param>
<param name="isDel"></param>
<returns></returns>
</member>
<member name="T:Yi.Framework.ApiMicroservice.Controllers.TestController">
<summary>
测试控制器

View File

@@ -74,5 +74,18 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
return Result.Success().SetStatus(await _iRoleService.UpdateInfo(roleDto));
}
/// <summary>
/// 更改角色状态
/// </summary>
/// <param name="roleId"></param>
/// <param name="isDel"></param>
/// <returns></returns>
[HttpPut]
public async Task<Result> UpdateStatus(long roleId, bool isDel)
{
return Result.Success().SetData(await _iRoleService._repository.UpdateIgnoreNullAsync(new RoleEntity() { Id = roleId, IsDeleted = isDel }));
}
}
}

View File

@@ -190,9 +190,9 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
List<VueRouterModel> vueRouterModels = new()
{
new VueRouterModel { Id = 1, Sort = 1, ParentId = 0, Name = "001" },
new VueRouterModel { Id = 2, Sort = 1, ParentId = 1, Name = "001001" },
new VueRouterModel { Id = 3, Sort = 1, ParentId = 1, Name = "001002" }
new VueRouterModel { Id = 1, OrderNum = 1, ParentId = 0, Name = "001" },
new VueRouterModel { Id = 2, OrderNum = 1, ParentId = 1, Name = "001001" },
new VueRouterModel { Id = 3, OrderNum = 1, ParentId = 1, Name = "001002" }
};
var treeData = Common.Helper.TreeHelper.SetTree(vueRouterModels);
return Result.Success().SetData(treeData);

View File

@@ -9,7 +9,7 @@ namespace Yi.Framework.Common.Helper
{
public static class TreeHelper
{
public static IList<T> SetTree<T>(IList<T> list, Action<T> action = null)
public static List<T> SetTree<T>(List<T> list, Action<T> action = null)
{
if (list != null && list.Count > 0)
{
@@ -30,7 +30,7 @@ namespace Yi.Framework.Common.Helper
SetTreeChildren(list, children, model, action);
}
}
return result.OrderBy(m => (m as ITreeModel<T>).Sort).ToList();
return result.OrderBy(m => (m as ITreeModel<T>).OrderNum).ToList();
}
return null;
}
@@ -52,7 +52,7 @@ namespace Yi.Framework.Common.Helper
SetTreeChildren(list, _children, item, action);
}
}
mm.Children = mm.Children.OrderBy(m => (m as ITreeModel<T>).Sort).ToList();
mm.Children = mm.Children.OrderBy(m => (m as ITreeModel<T>).OrderNum).ToList();
}
}
}

View File

@@ -8,10 +8,10 @@ namespace Yi.Framework.Common.Models
{
public interface ITreeModel<T>
{
public int Id { get; set; }
public int ParentId { get; set; }
public int Sort { get; set; }
public long Id { get; set; }
public long ParentId { get; set; }
public int OrderNum { get; set; }
public IList<T> Children { get; set; }
public List<T> Children { get; set; }
}
}

View File

@@ -8,9 +8,9 @@ namespace Yi.Framework.Common.Models
{
public class VueRouterModel : ITreeModel<VueRouterModel>
{
public int Id { get; set; }
public int ParentId { get; set; }
public int Sort { get; set; }
public long Id { get; set; }
public long ParentId { get; set; }
public int OrderNum { get; set; }
public string Name { get; set; }
public string Path { get; set; }
@@ -19,7 +19,7 @@ namespace Yi.Framework.Common.Models
public string Component { get; set; }
public bool AlwaysShow { get; set; }
public Meta Meta { get; set; }
public IList<VueRouterModel> Children { get; set; }
public List<VueRouterModel> Children { get; set; }
}

View File

@@ -13,7 +13,7 @@ namespace Yi.Framework.Model.Models
{
public RoleEntity()
{
this.IsDeleted = false;
//this.IsDeleted = false;
this.CreateTime = DateTime.Now;
}
[JsonConverter(typeof(ValueToStringConverter))]

View File

@@ -13,7 +13,6 @@ namespace Yi.Framework.Model.Models
{
public UserEntity()
{
this.IsDeleted = false;
this.CreateTime = DateTime.Now;
}
[JsonConverter(typeof(ValueToStringConverter))]

View File

@@ -60,7 +60,7 @@ namespace Yi.Framework.Service
.WhereIF(!string.IsNullOrEmpty(role.RoleName), u => u.RoleName.Contains(role.RoleName))
.WhereIF(!string.IsNullOrEmpty(role.RoleCode), u => u.RoleCode.Contains(role.RoleCode))
.WhereIF(page.StartTime.IsNotNull() && page.EndTime.IsNotNull(), u => u.CreateTime >= page.StartTime && u.CreateTime <= page.EndTime)
.Where(u => u.IsDeleted == role.IsDeleted)
.WhereIF(role.IsDeleted.IsNotNull(), u => u.IsDeleted == role.IsDeleted)
.OrderBy(u => u.OrderNum, OrderByType.Desc)
.ToPageListAsync(page.PageNum, page.PageSize, total);

View File

@@ -132,10 +132,10 @@ namespace Yi.Framework.Service
if (!string.IsNullOrEmpty(menu.PermissionCode))
{
userRoleMenu.PermissionCodes.Add(menu.PermissionCode);
userRoleMenu.Menus.Add(menu);
}
userRoleMenu.Menus.Add(menu);
}
}
@@ -164,7 +164,7 @@ namespace Yi.Framework.Service
.WhereIF(!string.IsNullOrEmpty(user.Name), u => u.Name.Contains(user.Name))
.WhereIF(!string.IsNullOrEmpty(user.Phone), u => u.Phone.Contains(user.Phone))
.WhereIF(page.StartTime.IsNotNull() && page.EndTime.IsNotNull(), u => u.CreateTime >= page.StartTime && u.CreateTime <= page.EndTime)
.Where(u => u.IsDeleted == user.IsDeleted)
.WhereIF(user.IsDeleted.IsNotNull(),u => u.IsDeleted == user.IsDeleted)
.Includes(u => u.Roles)
.OrderBy(u => u.OrderNum, OrderByType.Desc)
.ToPageListAsync(page.PageNum, page.PageSize, total);
@@ -179,8 +179,12 @@ namespace Yi.Framework.Service
List<VueRouterModel> routers = new();
foreach (var m in menus)
{
var r = new VueRouterModel();
var routerName = m.Router.Split("/").LastOrDefault();
r.Id = m.Id;
r.ParentId = (long)m.ParentId;
//开头大写
r.Name = routerName.First().ToString().ToUpper() + routerName.Substring(1);
r.Path = m.Router;
@@ -195,6 +199,9 @@ namespace Yi.Framework.Service
}
if (m.MenuType == MenuTypeEnum.Menu.GetHashCode())
{
r.Redirect = "noRedirect";
r.AlwaysShow = true;
r.Component = m.Component;
}
@@ -212,7 +219,7 @@ namespace Yi.Framework.Service
routers.Add(r);
}
return routers;
return Common.Helper.TreeHelper.SetTree(routers) ;
}
public async Task<bool> UpdateInfo(UserInfoDto userDto)

View File

@@ -3,7 +3,7 @@ import request from '@/utils/request'
// 获取路由
export const getRouters = () => {
return request({
url: '/getRouters',
url: '/account/GetRouterInfo',
method: 'get'
})
}

View File

@@ -47,15 +47,10 @@ export function dataScope(data) {
}
// 角色状态修改
export function changeRoleStatus(roleId, status) {
const data = {
roleId,
status
}
export function changeRoleStatus(roleId, isDel) {
return request({
url: '/system/role/changeStatus',
method: 'put',
data: data
url: `/role/updateStatus?roleId=${roleId}&isDel=${isDel}`,
method: 'put'
})
}

View File

@@ -35,8 +35,8 @@ const usePermissionStore = defineStore(
generateRoutes(roles) {
return new Promise(resolve => {
// 向后端请求路由数据
// getRouters().then(res => {
// getRouters().then(response => {
// const res=response.data;
const res=[
{
"name": "System",
@@ -344,6 +344,7 @@ const res=[
}
];
const sdata = JSON.parse(JSON.stringify(res))
const rdata = JSON.parse(JSON.stringify(res))
const defaultData = JSON.parse(JSON.stringify(res))
@@ -357,7 +358,10 @@ const res=[
this.setDefaultRoutes(sidebarRoutes)
this.setTopbarRoutes(defaultRoutes)
resolve(rewriteRoutes)
// })
// })
})
}
}

View File

@@ -66,8 +66,8 @@
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="用户号" align="center" key="userName" prop="userName" v-if="columns[0].visible" />
<el-table-column label="用户名称" align="center" key="name" prop="name" v-if="columns[1].visible"
<el-table-column label="用户号" align="center" key="id" prop="id" v-if="columns[0].visible" />
<el-table-column label="用户账号" align="center" key="userName" prop="userName" v-if="columns[1].visible"
:show-overflow-tooltip="true" />
<el-table-column label="用户昵称" align="center" key="nick" prop="nick" v-if="columns[2].visible"
:show-overflow-tooltip="true" />
@@ -177,7 +177,7 @@
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择">
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName"
:value="item.postId" :disabled="item.status == 1"></el-option>
:value="item.postId" :disabled="item.isDeleted == true"></el-option>
</el-select>
</el-form-item>
</el-col>