6.1 KiB
6.1 KiB
知识库管理菜单不显示 - 完整解决方案
当前状态
✅ SQL执行成功
✅ 直接访问URL可以打开页面:http://localhost:30081/#/psychology/knowledge
❌ 左侧菜单不显示"知识库管理"
原因分析
页面能访问说明:
- ✅ 后端API正常
- ✅ 前端页面存在
- ✅ 路由配置正确
菜单不显示的原因:
- ❌ 用户权限未刷新
- ❌ 角色权限未分配
- ❌ 菜单状态不正确
解决步骤
步骤1:验证菜单是否添加成功
执行验证SQL(验证菜单.sql):
-- 查看知识库管理菜单
SELECT menu_id, menu_name, parent_id, path, component, perms, visible, status
FROM sys_menu
WHERE menu_name = '知识库管理';
预期结果:应该返回1条记录
步骤2:检查角色权限
-- 查看角色是否有知识库管理权限
SELECT rm.role_id, r.role_name, m.menu_id, m.menu_name
FROM sys_role_menu rm
INNER JOIN sys_role r ON rm.role_id = r.role_id
INNER JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE m.menu_name LIKE '知识库%'
ORDER BY rm.role_id, m.menu_id;
如果没有结果:说明权限未分配,执行步骤3
步骤3:手动分配权限
-- 为管理员角色(role_id=1)添加知识库权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 1, menu_id FROM sys_menu
WHERE menu_name LIKE '知识库%'
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu
WHERE role_id = 1 AND sys_role_menu.menu_id = sys_menu.menu_id
);
步骤4:退出登录重新登录 ⭐ 重要
必须退出登录后重新登录!
原因:用户的菜单权限在登录时加载,不会自动刷新。
操作:
- 点击右上角用户名
- 选择"退出登录"
- 重新登录
- 查看左侧菜单
步骤5:强制刷新浏览器
如果还是不显示:
- 按
Ctrl + Shift + Delete清除缓存 - 或按
Ctrl + F5强制刷新 - 或使用无痕模式重新登录
快速解决方案
如果上述步骤太复杂,直接执行以下操作:
方案A:一键修复SQL
-- 一键修复脚本
-- 1. 删除可能存在的旧数据
DELETE FROM sys_role_menu
WHERE menu_id IN (
SELECT menu_id FROM sys_menu WHERE menu_name LIKE '知识库%'
);
DELETE FROM sys_menu WHERE menu_name LIKE '知识库%';
-- 2. 重新添加菜单
INSERT INTO sys_menu (
menu_name, parent_id, order_num, path, component,
is_frame, is_cache, menu_type, visible, status,
perms, icon, create_by, create_time, remark
) VALUES (
'知识库管理',
(SELECT menu_id FROM (SELECT menu_id FROM sys_menu WHERE menu_name LIKE '%心理测评%' LIMIT 1) AS t),
8, 'knowledge', 'psychology/knowledge/index',
1, 0, 'C', '0', '0',
'psychology:knowledge:list', 'documentation', 'admin', NOW(), 'AI知识库文档管理'
);
-- 3. 获取菜单ID
SET @menu_id = LAST_INSERT_ID();
-- 4. 添加按钮权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time)
VALUES
('知识库查询', @menu_id, 1, '#', '', 1, 0, 'F', '0', '0', 'psychology:knowledge:query', '#', 'admin', NOW()),
('知识库上传', @menu_id, 2, '#', '', 1, 0, 'F', '0', '0', 'psychology:knowledge:upload', '#', 'admin', NOW()),
('知识库删除', @menu_id, 3, '#', '', 1, 0, 'F', '0', '0', 'psychology:knowledge:remove', '#', 'admin', NOW()),
('知识库重建', @menu_id, 4, '#', '', 1, 0, 'F', '0', '0', 'psychology:knowledge:rebuild', '#', 'admin', NOW());
-- 5. 为所有管理员角色分配权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT r.role_id, m.menu_id
FROM sys_role r
CROSS JOIN sys_menu m
WHERE r.role_key = 'admin'
AND m.menu_name LIKE '知识库%'
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu rm
WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id
);
-- 6. 完成
SELECT '修复完成!请退出登录后重新登录' AS message;
方案B:通过系统界面添加
- 登录系统
- 进入"系统管理" → "菜单管理"
- 找到"心理测评管理"
- 点击"新增"
- 填写信息:
- 菜单名称:
知识库管理 - 显示排序:
8 - 路由地址:
knowledge - 组件路径:
psychology/knowledge/index - 菜单类型:
目录 - 菜单图标:
documentation - 权限标识:
psychology:knowledge:list - 显示状态:
显示 - 菜单状态:
正常
- 菜单名称:
- 保存
- 进入"系统管理" → "角色管理"
- 编辑管理员角色
- 勾选"知识库管理"权限
- 保存
- 退出登录重新登录
临时访问方案
在菜单修复之前,可以直接访问:
http://localhost:30081/#/psychology/knowledge
或者在浏览器收藏夹添加此链接。
检查清单
- SQL执行成功
- 验证菜单已添加(执行验证SQL)
- 验证角色权限已分配
- 退出登录
- 重新登录
- 清除浏览器缓存
- 强制刷新页面(Ctrl+F5)
- 查看左侧菜单
最终验证
执行以下SQL确认一切正常:
-- 最终验证
SELECT
m.menu_name AS '菜单名称',
m.path AS '路由',
m.component AS '组件',
m.visible AS '可见',
m.status AS '状态',
COUNT(rm.role_id) AS '分配角色数'
FROM sys_menu m
LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
WHERE m.menu_name LIKE '知识库%'
GROUP BY m.menu_id
ORDER BY m.menu_id;
预期结果:
- 知识库管理:分配角色数 > 0
- 所有菜单:可见=0,状态=0
常见问题
Q: 执行SQL后还是不显示?
A: 必须退出登录重新登录! 这是最关键的步骤。
Q: 重新登录后还是不显示?
A:
- 清除浏览器缓存
- 使用无痕模式登录
- 检查角色权限是否真的分配了
Q: 其他用户看不到?
A: 需要为对应的角色分配权限:
-- 为指定角色添加权限(将2改为实际角色ID)
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 2, menu_id FROM sys_menu WHERE menu_name LIKE '知识库%';
Q: 菜单显示但点击404?
A: 检查前端页面是否存在:
xinli-ui/src/views/psychology/knowledge/index.vue
记住:执行SQL后必须退出登录重新登录! 🔑