Просмотр исходного кода

修复权限下放导致菜单显示不出来的问题

Signed-off-by: pddeng <517849241@qq.com>
pddeng 3 лет назад
Родитель
Сommit
829d839fd7

+ 4 - 7
Admin.NET/Admin.NET.Core/Service/Role/SysRoleMenuService.cs

@@ -50,13 +50,10 @@ public class SysRoleMenuService : ITransient
     /// <returns></returns>
     public async Task<List<long>> GetRoleMenuList(List<long> roleIdList)
     {
-        var menuIdList = await _sysRoleMenuRep.AsQueryable()
-            .Where(u => roleIdList.Contains(u.RoleId))
-            .Select(u => u.MenuId).ToListAsync();
-
-        return await _sysRoleMenuRep.ChangeRepository<SqlSugarRepository<SysMenu>>().AsQueryable()
-            .Where(u => menuIdList.Contains(u.Id))
-            .Select(u => u.Id).ToListAsync();
+        return await _sysRoleMenuRep.AsQueryable()
+            .InnerJoin<SysMenu>((a, b) => a.MenuId == b.Id)
+            .Where((a, b) => roleIdList.Contains(a.RoleId) && b.Type == MenuTypeEnum.Btn)
+            .Select((a, b) => b.Id).ToListAsync();
     }
 
     /// <summary>

+ 9 - 3
Web/src/views/system/role/component/editRole.vue

@@ -65,6 +65,7 @@
 
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
 import type { ElTree } from 'element-plus';
 import type Node from 'element-plus/es/components/tree/src/model/node';
 import mittBus from '/@/utils/mitt';
@@ -121,13 +122,18 @@ export default defineComponent({
 		const submit = () => {
 			ruleFormRef.value.validate(async (valid: boolean) => {
 				if (!valid) return;
-				state.ruleForm.menuIdList = treeRef.value?.getCheckedKeys() as Array<number>; //.concat(treeRef.value?.getHalfCheckedKeys());
+				//提交全选和半选的key
+				var allCheckedKeys = treeRef.value?.getCheckedKeys() as Array<number>;
+				var halfCheckedKeys = treeRef.value?.getHalfCheckedKeys() as Array<number>;
+				state.ruleForm.menuIdList = allCheckedKeys.concat(halfCheckedKeys);
+				var res = null;
 				if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
-					await getAPI(SysRoleApi).sysRoleUpdatePost(state.ruleForm);
+					res = await getAPI(SysRoleApi).sysRoleUpdatePost(state.ruleForm);
 				} else {
-					await getAPI(SysRoleApi).sysRoleAddPost(state.ruleForm);
+					res = await getAPI(SysRoleApi).sysRoleAddPost(state.ruleForm);
 				}
 				closeDialog();
+				if(res.data && res.data.code == 200) ElMessage.success('操作成功');
 			});
 		};
 		// 叶子节点同行显示样式

+ 7 - 2
Web/src/views/system/tenant/component/grantMenu.vue

@@ -32,6 +32,7 @@
 
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
 import type { ElTree } from 'element-plus';
 import type Node from 'element-plus/es/components/tree/src/model/node';
 
@@ -76,9 +77,13 @@ export default defineComponent({
 		};
 		// 提交
 		const submit = async () => {
-			state.ruleForm.menuIdList = treeRef.value?.getCheckedKeys();
-			await getAPI(SysTenantApi).sysTenantGrantMenuPost(state.ruleForm);
+			//提交全选和半选的key
+			var allCheckedKeys = treeRef.value?.getCheckedKeys() as Array<number>;
+			var halfCheckedKeys = treeRef.value?.getHalfCheckedKeys() as Array<number>;
+			state.ruleForm.menuIdList = allCheckedKeys.concat(halfCheckedKeys);
+			var res = await getAPI(SysTenantApi).sysTenantGrantMenuPost(state.ruleForm);
 			state.isShowDialog = false;
+			if(res.data && res.data.code == 200) ElMessage.success('操作成功');
 		};
 		// 叶子节点同行显示样式
 		const treeNodeClass = (node: Node) => {