浏览代码

修复登录菜单、机构显示等bug

zuohuaijun 3 年之前
父节点
当前提交
4c3eb51028

+ 20 - 3
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -43,18 +43,35 @@ public class SysMenuService : IDynamicApiController, ITransient
         {
             var menuIdList = await GetMenuIdList();
             var menuList = await _sysMenuRep.AsQueryable()
-                .Where(u => u.Type != MenuTypeEnum.Btn)
-                .Where(u => menuIdList.Contains(u.Id))
-                .OrderBy(u => u.Order).ToTreeAsync(u => u.Children, u => u.Pid, 0);
+                //.Where(u => u.Type != MenuTypeEnum.Btn)
+                //.Where(u => menuIdList.Contains(u.Id))
+                .OrderBy(u => u.Order).ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray());
+            DeleteBtnFromMenuTree(menuList);
             return menuList.Adapt<List<MenuOutput>>();
         }
     }
 
+    /// <summary>
+    /// 删除登录菜单树里面的按钮
+    /// </summary>
+    private void DeleteBtnFromMenuTree(List<SysMenu> menuList)
+    {
+        for (var i = menuList.Count - 1; i >= 0; i--)
+        {
+            var menu = menuList[i];
+            if (menu.Type == MenuTypeEnum.Btn)
+                menuList.Remove(menu);
+            else if (menu.Children.Count > 0)
+                DeleteBtnFromMenuTree(menu.Children);
+        }
+    }
+
     /// <summary>
     /// 获取菜单列表
     /// </summary>
     /// <returns></returns>
     [HttpGet("/sysMenu/list")]
+    [AllowAnonymous]
     public async Task<List<SysMenu>> GetMenuList([FromQuery] MenuInput input)
     {
         var menuIdList = new List<long>();

+ 3 - 0
Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs

@@ -183,6 +183,9 @@ public class SysOrgService : IDynamicApiController, ITransient
             var orgList2 = await GetUserRoleOrgIdList(userId);
             // 机构并集
             orgIdList = orgList1.Select(u => u.OrgId).Union(orgList2).ToList();
+            // 当前所属机构
+            if (!orgIdList.Contains(_userManager.OrgId))
+                orgIdList.Add(_userManager.OrgId);
             _sysCacheService.Set(CacheConst.KeyOrgIdList + userId, orgIdList); // 存缓存
         }
         return orgIdList;

+ 33 - 30
Web/src/views/system/user/component/editUser.vue

@@ -84,40 +84,43 @@
 								<div style="color: #b1b3b8">附属机构</div>
 							</el-divider>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-								<el-button icon="ele-Plus" type="primary" @click="addExtOrgRow"> 增加附属机构 </el-button>
+								<el-button icon="ele-Plus" type="primary" plain @click="addExtOrgRow"> 增加附属机构 </el-button>
 								<span style="font-size: 12px; color: gray; padding-left: 5px"> 具有相应组织机构的数据权限 </span>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-								<el-row :gutter="35" v-for="(v, k) in ruleForm.extOrgIdList" :key="k">
-									<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-										<el-form-item label="机构" :prop="`extOrgIdList[${k}].orgId`" :rules="[{ required: true, message: `机构不能为空`, trigger: 'blur' }]">
-											<template #label>
-												<el-button icon="ele-Delete" type="danger" circle plain size="small" @click="deleteExtOrgRow(k)"></el-button>
-												<span class="ml5">机构</span>
-											</template>
-											<el-cascader
-												:options="orgData"
-												:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name' }"
-												placeholder="机构组织"
-												clearable
-												class="w100"
-												v-model="ruleForm.extOrgIdList[k].orgId"
-											>
-												<template #default="{ node, data }">
-													<span>{{ data.name }}</span>
-													<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+								<template v-if="ruleForm.extOrgIdList != undefined && ruleForm.extOrgIdList.length > 0">
+									<el-row :gutter="35" v-for="(v, k) in ruleForm.extOrgIdList" :key="k">
+										<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+											<el-form-item label="机构" :prop="`extOrgIdList[${k}].orgId`" :rules="[{ required: true, message: `机构不能为空`, trigger: 'blur' }]">
+												<template #label>
+													<el-button icon="ele-Delete" type="danger" circle plain size="small" @click="deleteExtOrgRow(k)"></el-button>
+													<span class="ml5">机构</span>
 												</template>
-											</el-cascader>
-										</el-form-item>
-									</el-col>
-									<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-										<el-form-item label="职位" :prop="`extOrgIdList[${k}].posId`" :rules="[{ required: true, message: `职位不能为空`, trigger: 'blur' }]">
-											<el-select v-model="ruleForm.extOrgIdList[k].posId" placeholder="职位名称" style="width: 100%">
-												<el-option v-for="d in posData" :key="d.id" :label="d.name" :value="d.id" />
-											</el-select>
-										</el-form-item>
-									</el-col>
-								</el-row>
+												<el-cascader
+													:options="orgData"
+													:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name' }"
+													placeholder="机构组织"
+													clearable
+													class="w100"
+													v-model="ruleForm.extOrgIdList[k].orgId"
+												>
+													<template #default="{ node, data }">
+														<span>{{ data.name }}</span>
+														<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+													</template>
+												</el-cascader>
+											</el-form-item>
+										</el-col>
+										<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+											<el-form-item label="职位" :prop="`extOrgIdList[${k}].posId`" :rules="[{ required: true, message: `职位不能为空`, trigger: 'blur' }]">
+												<el-select v-model="ruleForm.extOrgIdList[k].posId" placeholder="职位名称" style="width: 100%">
+													<el-option v-for="d in posData" :key="d.id" :label="d.name" :value="d.id" />
+												</el-select>
+											</el-form-item>
+										</el-col>
+									</el-row>
+								</template>
+								<el-empty description="空" v-else></el-empty>
 							</el-col>
 						</el-row>
 					</el-form>