fix: 修复路由命名问题 - 将my_device和my_application改为连字符格式

- 问题:数据库中路由使用下划线(my_device),前端期望连字符(my-device)
- 导致路由无法匹配,页面全屏显示
- 添加诊断和修复脚本:
  * check_route_naming.sql - 检查路由命名问题
  * fix_my_routes_naming.sql - 修复路由命名
  * fix_my_routes_naming.bat - 批处理执行脚本
- 修复后需要重启后端服务和清除浏览器缓存
This commit is contained in:
lvfengfree 2026-03-01 10:36:18 +08:00
parent d92f6e4d8c
commit 44cb688072
19 changed files with 918 additions and 0 deletions

46
add_missing_routes.bat Normal file
View File

@ -0,0 +1,46 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 添加缺失的路由到数据库
echo ========================================
echo.
echo 正在执行 SQL 脚本...
mysql -u root -proot < add_missing_routes.sql
if %errorlevel% equ 0 (
echo.
echo ========================================
echo 路由添加成功!
echo ========================================
echo.
echo 下一步操作:
echo 1. 重启后端服务(必须!)
echo - 停止当前后端Ctrl+C
echo - cd backend
echo - mvn spring-boot:run
echo.
echo 2. 清除浏览器缓存
echo - 按 Ctrl+Shift+Delete
echo - 选择"全部时间"
echo - 清除缓存
echo.
echo 3. 重新登录测试
echo - 点击"我的设备"菜单
echo - 点击"设备申请"菜单
echo - 应该正常显示在布局中,不再跳转到独立页面
echo.
) else (
echo.
echo ========================================
echo 执行失败!
echo ========================================
echo.
echo 请检查:
echo 1. MySQL 服务是否运行
echo 2. 数据库连接信息是否正确
echo 3. 数据库 soybean_admin 是否存在
echo.
)
pause

61
add_missing_routes.sql Normal file
View File

@ -0,0 +1,61 @@
-- 添加缺失的"我的设备"和"设备申请"路由到数据库
USE soybean_admin;
-- 1. 删除可能存在的旧数据
DELETE FROM sys_route WHERE name LIKE 'my-device%' OR name LIKE 'my-application%';
-- 2. 添加"我的设备"父路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-device', 'my-device', '/my-device', 'layout.base',
'{"title":"我的设备","i18nKey":"route.my_device","icon":"mdi:laptop","order":7}',
1, 70);
-- 3. 添加"我的设备"子路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-device_status', 'my-device_status', '/my-device/status', 'view.my-device_status',
'{"title":"设备状态","i18nKey":"route.my_device_status","icon":"mdi:information","order":1}',
1, 71),
('my-device_remote-control', 'my-device_remote-control', '/my-device/remote-control', 'view.my-device_remote-control',
'{"title":"远程控制","i18nKey":"route.my_device_remote","icon":"mdi:remote-desktop","order":3}',
1, 72),
('my-device_power-control', 'my-device_power-control', '/my-device/power-control', 'view.my-device_power-control',
'{"title":"电源控制","i18nKey":"route.my_device_power","icon":"mdi:power-settings","order":2}',
1, 73);
-- 4. 添加"设备申请"父路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-application', 'my-application', '/my-application', 'layout.base',
'{"title":"设备申请","i18nKey":"route.my_application","icon":"mdi:file-document","order":8}',
1, 80);
-- 5. 添加"设备申请"子路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-application_apply', 'my-application_apply', '/my-application/apply', 'view.my-application_apply',
'{"title":"申请使用","i18nKey":"route.my_application_apply","icon":"mdi:file-plus","order":1}',
1, 81),
('my-application_my-list', 'my-application_my-list', '/my-application/my-list', 'view.my-application_my-list',
'{"title":"我的申请","i18nKey":"route.my_application_list","icon":"mdi:format-list-checks","order":2}',
1, 82);
-- 6. 验证添加结果
SELECT '=== 我的设备路由 ===' AS info;
SELECT route_id, name, path, component FROM sys_route WHERE name LIKE 'my-device%' ORDER BY order_num;
SELECT '=== 设备申请路由 ===' AS info;
SELECT route_id, name, path, component FROM sys_route WHERE name LIKE 'my-application%' ORDER BY order_num;
-- 7. 更新角色权限(确保角色有这些菜单的访问权限)
SELECT '=== 更新角色权限 ===' AS info;
-- 超级管理员添加这些菜单
UPDATE sys_role
SET menus = CONCAT(menus, ',my-device,my-device_status,my-device_remote-control,my-device_power-control,my-application,my-application_apply,my-application_my-list')
WHERE role_code = 'R_SUPER' AND menus NOT LIKE '%my-device%';
-- 普通用户添加这些菜单
UPDATE sys_role
SET menus = CONCAT(menus, ',my-device,my-device_status,my-device_remote-control,my-device_power-control,my-application,my-application_apply,my-application_my-list')
WHERE role_code = 'R_USER' AND menus NOT LIKE '%my-device%';
SELECT '=== 完成 ===' AS info;
SELECT '路由已添加到数据库,请重启后端服务!' AS message;

View File

@ -0,0 +1,42 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 添加"我的设备""设备申请"路由配置
echo ========================================
echo.
echo 正在执行 SQL 脚本...
mysql -u root -proot < add_my_device_and_application_routes.sql
if %errorlevel% equ 0 (
echo.
echo ========================================
echo 路由配置添加成功!
echo ========================================
echo.
echo 下一步操作:
echo 1. 重启后端服务(必须!)
echo 2. 清除浏览器缓存Ctrl+Shift+Delete
echo 3. 重新登录测试
echo.
echo 预期结果:
echo - "我的设备""设备申请"菜单正常显示
echo - 点击菜单不会全屏,而是在布局中正常显示
echo - 子菜单可以正常访问
echo.
) else (
echo.
echo ========================================
echo 执行失败!
echo ========================================
echo.
echo 可能的原因:
echo 1. MySQL 未启动
echo 2. 数据库连接信息不正确
echo 3. 数据库 soybean_admin 不存在
echo.
echo 请检查后重试
echo.
)
pause

View File

@ -0,0 +1,49 @@
-- 添加"我的设备"和"设备申请"路由配置
USE soybean_admin;
-- 1. 先删除可能存在的旧数据(如果有)
DELETE FROM sys_route WHERE name LIKE 'my-device%' OR name LIKE 'my-application%';
-- 2. 添加"我的设备"父路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-device', 'my-device', '/my-device', 'layout.base',
'{"title":"我的设备","i18nKey":"route.my-device","icon":"mdi:laptop","order":7}',
1, 70);
-- 3. 添加"我的设备"子路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-device_status', 'my-device_status', '/my-device/status', 'view.my-device_status',
'{"title":"设备状态","i18nKey":"route.my-device_status","icon":"mdi:information","order":1}',
1, 71),
('my-device_remote-control', 'my-device_remote-control', '/my-device/remote-control', 'view.my-device_remote-control',
'{"title":"远程控制","i18nKey":"route.my-device_remote-control","icon":"mdi:remote-desktop","order":2}',
1, 72),
('my-device_power-control', 'my-device_power-control', '/my-device/power-control', 'view.my-device_power-control',
'{"title":"电源控制","i18nKey":"route.my-device_power-control","icon":"mdi:power","order":3}',
1, 73);
-- 4. 添加"设备申请"父路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-application', 'my-application', '/my-application', 'layout.base',
'{"title":"设备申请","i18nKey":"route.my-application","icon":"mdi:file-document","order":8}',
1, 80);
-- 5. 添加"设备申请"子路由
INSERT INTO sys_route (route_id, name, path, component, meta, status, order_num) VALUES
('my-application_apply', 'my-application_apply', '/my-application/apply', 'view.my-application_apply',
'{"title":"申请设备","i18nKey":"route.my-application_apply","icon":"mdi:file-plus","order":1}',
1, 81),
('my-application_my-list', 'my-application_my-list', '/my-application/my-list', 'view.my-application_my-list',
'{"title":"我的申请","i18nKey":"route.my-application_my-list","icon":"mdi:format-list-bulleted","order":2}',
1, 82);
-- 6. 验证添加结果
SELECT '=== 我的设备路由 ===' AS info;
SELECT route_id, name, path, component, meta FROM sys_route WHERE name LIKE 'my-device%' ORDER BY order_num;
SELECT '=== 设备申请路由 ===' AS info;
SELECT route_id, name, path, component, meta FROM sys_route WHERE name LIKE 'my-application%' ORDER BY order_num;
-- 7. 提示
SELECT '=== 重要提示 ===' AS info;
SELECT '请重启后端服务使配置生效!' AS message;

11
check_existing_routes.bat Normal file
View File

@ -0,0 +1,11 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 检查数据库中现有的路由配置
echo ========================================
echo.
mysql -u root -proot < check_existing_routes.sql
echo.
pause

19
check_existing_routes.sql Normal file
View File

@ -0,0 +1,19 @@
-- 检查数据库中所有现有路由
USE soybean_admin;
SELECT '=== 所有路由列表 ===' AS info;
SELECT route_id, name, path, component, status, order_num
FROM sys_route
ORDER BY order_num;
SELECT '=== 检查"我的设备"相关路由 ===' AS info;
SELECT route_id, name, path, component, meta, status
FROM sys_route
WHERE name LIKE 'my-device%' OR name LIKE 'my_device%'
ORDER BY order_num;
SELECT '=== 检查"设备申请"相关路由 ===' AS info;
SELECT route_id, name, path, component, meta, status
FROM sys_route
WHERE name LIKE 'my-application%' OR name LIKE 'my_application%'
ORDER BY order_num;

View File

@ -0,0 +1,14 @@
-- 检查"我的设备"和"设备申请"路由的配置
USE soybean_admin;
SELECT '=== 我的设备相关路由 ===' AS info;
SELECT route_id, name, path, component, meta, status
FROM sys_route
WHERE name LIKE 'my-device%'
ORDER BY order_num;
SELECT '=== 设备申请相关路由 ===' AS info;
SELECT route_id, name, path, component, meta, status
FROM sys_route
WHERE name LIKE 'my-application%'
ORDER BY order_num;

View File

@ -0,0 +1,41 @@
-- 检查"我的设备"路由配置
USE soybean_admin;
SELECT '=== 我的设备路由配置 ===' AS info;
SELECT
route_id,
name,
path,
component,
JSON_EXTRACT(meta, '$.title') as title,
status,
order_num
FROM sys_route
WHERE name LIKE 'my-device%'
ORDER BY order_num;
SELECT '=== 检查父路由 ===' AS info;
SELECT
route_id,
name,
path,
component,
CASE
WHEN component = 'layout.base' THEN '✅ 正确'
ELSE '❌ 错误 - 应该是 layout.base'
END as component_check
FROM sys_route
WHERE name = 'my-device';
SELECT '=== 检查子路由 ===' AS info;
SELECT
route_id,
name,
path,
component,
CASE
WHEN component LIKE 'view.my-device_%' THEN '✅ 正确'
ELSE '❌ 错误 - 应该是 view.my-device_xxx'
END as component_check
FROM sys_route
WHERE name LIKE 'my-device_%';

26
check_problem_routes.sql Normal file
View File

@ -0,0 +1,26 @@
USE soybean_admin;
-- 检查"我的设备"相关路由
SELECT '=== 我的设备路由 ===' AS info;
SELECT route_id, name, path, component, meta, status
FROM sys_route
WHERE name LIKE 'my-device%' OR name LIKE 'my_device%'
ORDER BY order_num;
-- 检查"设备申请"相关路由
SELECT '=== 设备申请路由 ===' AS info;
SELECT route_id, name, path, component, meta, status
FROM sys_route
WHERE name LIKE 'my-application%' OR name LIKE 'my_application%'
ORDER BY order_num;
-- 检查所有路由的父子关系
SELECT '=== 所有路由概览 ===' AS info;
SELECT route_id, name, path, component,
CASE
WHEN component LIKE 'layout.%' THEN '父路由'
WHEN component LIKE 'view.%' THEN '子路由'
ELSE '其他'
END AS route_type
FROM sys_route
ORDER BY order_num;

28
check_route_naming.sql Normal file
View File

@ -0,0 +1,28 @@
-- 检查路由命名问题
USE soybean_admin;
SELECT '=== 检查 my_device 和 my_application 路由命名 ===' AS info;
SELECT
route_id,
name,
path,
component,
JSON_EXTRACT(meta, '$.title') as title
FROM sys_route
WHERE name LIKE 'my_%device%' OR name LIKE 'my_%application%'
ORDER BY order_num;
SELECT '=== 前端期望的路由命名(使用连字符) ===' AS info;
SELECT 'my-device (父路由)' AS expected_name UNION ALL
SELECT 'my-device_status (子路由)' UNION ALL
SELECT 'my-device_power-control (子路由)' UNION ALL
SELECT 'my-device_remote-control (子路由)' UNION ALL
SELECT 'my-application (父路由)' UNION ALL
SELECT 'my-application_apply (子路由)' UNION ALL
SELECT 'my-application_my-list (子路由)';
SELECT '=== 问题分析 ===' AS info;
SELECT '数据库中使用下划线: my_device, my_application' AS issue UNION ALL
SELECT '前端期望使用连字符: my-device, my-application' AS expected UNION ALL
SELECT '这导致路由无法匹配,页面显示异常' AS result;

46
fix_fullscreen_issue.bat Normal file
View File

@ -0,0 +1,46 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 修复"我的设备""设备申请"全屏显示问题
echo ========================================
echo.
echo 正在执行修复...
mysql -u root -proot < fix_fullscreen_issue.sql
if %errorlevel% equ 0 (
echo.
echo ========================================
echo 修复成功!
echo ========================================
echo.
echo 下一步操作:
echo 1. 重启后端服务(必须!)
echo - 停止当前后端Ctrl+C
echo - cd backend
echo - mvn spring-boot:run
echo.
echo 2. 清除浏览器缓存
echo - 按 Ctrl+Shift+Delete
echo - 选择"全部时间"
echo - 清除缓存
echo.
echo 3. 重新登录测试
echo - 点击"我的设备"菜单
echo - 点击"设备申请"菜单
echo - 应该正常显示在布局中,不再全屏
echo.
) else (
echo.
echo ========================================
echo 执行失败!
echo ========================================
echo.
echo 请检查:
echo 1. MySQL 服务是否运行
echo 2. 数据库连接信息是否正确
echo 3. 数据库 soybean_admin 是否存在
echo.
)
pause

51
fix_fullscreen_issue.sql Normal file
View File

@ -0,0 +1,51 @@
-- 修复"我的设备"和"设备申请"全屏显示问题
USE soybean_admin;
-- 1. 检查当前配置
SELECT '=== 当前"我的设备"路由配置 ===' AS info;
SELECT route_id, name, path, component, meta FROM sys_route WHERE name LIKE 'my-device%' ORDER BY order_num;
SELECT '=== 当前"设备申请"路由配置 ===' AS info;
SELECT route_id, name, path, component, meta FROM sys_route WHERE name LIKE 'my-application%' ORDER BY order_num;
-- 2. 修复父路由的 component 配置
-- 确保父路由使用 layout.base
UPDATE sys_route
SET component = 'layout.base'
WHERE name = 'my-device' AND component != 'layout.base';
UPDATE sys_route
SET component = 'layout.base'
WHERE name = 'my-application' AND component != 'layout.base';
-- 3. 确保子路由使用正确的 view 组件
UPDATE sys_route
SET component = 'view.my-device_status'
WHERE name = 'my-device_status' AND component != 'view.my-device_status';
UPDATE sys_route
SET component = 'view.my-device_remote-control'
WHERE name = 'my-device_remote-control' AND component != 'view.my-device_remote-control';
UPDATE sys_route
SET component = 'view.my-device_power-control'
WHERE name = 'my-device_power-control' AND component != 'view.my-device_power-control';
UPDATE sys_route
SET component = 'view.my-application_apply'
WHERE name = 'my-application_apply' AND component != 'view.my-application_apply';
UPDATE sys_route
SET component = 'view.my-application_my-list'
WHERE name = 'my-application_my-list' AND component != 'view.my-application_my-list';
-- 4. 验证修复结果
SELECT '=== 修复后"我的设备"路由配置 ===' AS info;
SELECT route_id, name, path, component, meta FROM sys_route WHERE name LIKE 'my-device%' ORDER BY order_num;
SELECT '=== 修复后"设备申请"路由配置 ===' AS info;
SELECT route_id, name, path, component, meta FROM sys_route WHERE name LIKE 'my-application%' ORDER BY order_num;
-- 5. 提示
SELECT '=== 重要提示 ===' AS info;
SELECT '修复完成!请重启后端服务并清除浏览器缓存' AS message;

20
fix_my_routes_naming.bat Normal file
View File

@ -0,0 +1,20 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 修复 my_device 和 my_application 路由命名
echo ========================================
echo.
mysql -uroot -proot -hlocalhost -P3306 < fix_my_routes_naming.sql
echo.
echo ========================================
echo 修复完成!
echo ========================================
echo.
echo 下一步操作:
echo 1. 重启后端服务(运行 restart_backend_and_test.bat
echo 2. 清除浏览器缓存Ctrl+Shift+Delete
echo 3. 重新登录测试
echo.
pause

53
fix_my_routes_naming.sql Normal file
View File

@ -0,0 +1,53 @@
-- 修复 my_device 和 my_application 路由命名问题
-- 将下划线改为连字符以匹配前端期望
USE soybean_admin;
SELECT '=== 开始修复路由命名 ===' AS info;
-- 1. 修复 my_device 相关路由
UPDATE sys_route
SET name = 'my-device'
WHERE name = 'my_device';
UPDATE sys_route
SET name = 'my-device_status'
WHERE name = 'my_device_status';
UPDATE sys_route
SET name = 'my-device_power-control'
WHERE name = 'my_device_power';
UPDATE sys_route
SET name = 'my-device_remote-control'
WHERE name = 'my_device_remote';
-- 2. 修复 my_application 相关路由
UPDATE sys_route
SET name = 'my-application'
WHERE name = 'my_application';
UPDATE sys_route
SET name = 'my-application_apply'
WHERE name = 'my_application_apply';
UPDATE sys_route
SET name = 'my-application_my-list'
WHERE name = 'my_application_list';
SELECT '=== 修复完成,验证结果 ===' AS info;
-- 3. 验证修复结果
SELECT
route_id,
name,
path,
component,
JSON_EXTRACT(meta, '$.title') as title
FROM sys_route
WHERE name LIKE 'my-%'
ORDER BY order_num;
SELECT '=== 重要提示 ===' AS info;
SELECT '1. 请重启后端服务' AS step1 UNION ALL
SELECT '2. 清除浏览器缓存' AS step2 UNION ALL
SELECT '3. 重新登录测试' AS step3;

11
rollback_add_routes.sql Normal file
View File

@ -0,0 +1,11 @@
-- 撤回添加的路由
USE soybean_admin;
-- 删除刚才添加的路由
DELETE FROM sys_route WHERE name LIKE 'my-device%' OR name LIKE 'my-application%';
SELECT '=== 撤回完成 ===' AS info;
SELECT '已删除 my-device 和 my-application 相关路由' AS message;
-- 验证
SELECT COUNT(*) as remaining_count FROM sys_route WHERE name LIKE 'my-device%' OR name LIKE 'my-application%';

30
rollback_my_routes.bat Normal file
View File

@ -0,0 +1,30 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 撤回"我的设备""设备申请"路由添加操作
echo ========================================
echo.
echo 正在执行撤回操作...
mysql -u root -proot < rollback_my_routes.sql
if %errorlevel% equ 0 (
echo.
echo ========================================
echo 撤回成功!
echo ========================================
echo.
echo 已删除"我的设备""设备申请"相关路由
echo.
echo 下一步:
echo 请告诉我正确的处理方式
echo.
) else (
echo.
echo ========================================
echo 执行失败!
echo ========================================
echo.
)
pause

12
rollback_my_routes.sql Normal file
View File

@ -0,0 +1,12 @@
-- 撤回"我的设备"和"设备申请"路由的添加操作
USE soybean_admin;
-- 1. 删除刚才添加的路由
DELETE FROM sys_route WHERE name LIKE 'my-device%' OR name LIKE 'my-application%';
-- 2. 验证删除结果
SELECT '=== 验证删除结果 ===' AS info;
SELECT COUNT(*) as count FROM sys_route WHERE name LIKE 'my-device%' OR name LIKE 'my-application%';
SELECT '=== 撤回完成 ===' AS info;
SELECT '已删除"我的设备"和"设备申请"相关路由' AS message;

View File

@ -0,0 +1,209 @@
# 修复"我的设备"和"设备申请"全屏显示问题
## 问题描述
点击"我的设备"和"设备申请"菜单后,页面全屏显示,侧边栏和顶部导航栏都消失了,只剩下页面内容。
## 问题原因
**根本原因:** 数据库中这两个路由的 `component` 字段配置不正确。
父路由必须使用 `layout.base` 作为 component这样才能
- 显示侧边栏菜单
- 显示顶部导航栏
- 在内容区域显示子路由页面
如果 component 配置错误或为空,前端会使用默认的全屏布局,导致侧边栏和顶栏消失。
## 解决方案
### 方法1使用批处理脚本推荐
1. 双击运行 `fix_fullscreen_issue.bat`
2. 等待脚本执行完成
3. 重启后端服务
4. 清除浏览器缓存
5. 重新登录测试
### 方法2手动执行 SQL
```bash
# 在命令行中执行
mysql -u root -proot < fix_fullscreen_issue.sql
```
然后:
1. 重启后端服务
2. 清除浏览器缓存
3. 重新登录测试
## 正确的路由配置
### 父路由配置
父路由必须使用 `layout.base`
```sql
-- 我的设备父路由
route_id: 'my-device'
name: 'my-device'
path: '/my-device'
component: 'layout.base' -- 关键!必须是 layout.base
meta: '{"title":"我的设备","i18nKey":"route.my_device","icon":"mdi:laptop","order":7}'
-- 设备申请父路由
route_id: 'my-application'
name: 'my-application'
path: '/my-application'
component: 'layout.base' -- 关键!必须是 layout.base
meta: '{"title":"设备申请","i18nKey":"route.my_application","icon":"mdi:file-document","order":8}'
```
### 子路由配置
子路由使用 `view.{folder}_{subfolder}` 格式:
```sql
-- 我的设备子路由
component: 'view.my-device_status'
component: 'view.my-device_remote-control'
component: 'view.my-device_power-control'
-- 设备申请子路由
component: 'view.my-application_apply'
component: 'view.my-application_my-list'
```
## 关键配置说明
### 为什么之前会全屏显示?
当路由配置为空或缺失时,前端无法识别正确的布局组件,可能会:
1. 使用默认的全屏布局
2. 或者直接渲染页面组件而不包含侧边栏和顶栏
### 正确的配置
父路由必须设置 `component: 'layout.base'`,这样才能:
- 显示侧边栏菜单
- 显示顶部导航栏
- 在内容区域显示子路由页面
子路由使用 `component: 'view.{folder}_{subfolder}'` 格式,例如:
- `view.my-device_status`
- `view.my-application_apply`
## 验证修复
### 1. 检查数据库
```sql
-- 查看"我的设备"路由
SELECT route_id, name, path, component
FROM sys_route
WHERE name LIKE 'my-device%'
ORDER BY order_num;
-- 查看"设备申请"路由
SELECT route_id, name, path, component
FROM sys_route
WHERE name LIKE 'my-application%'
ORDER BY order_num;
```
应该看到完整的路由配置。
### 2. 检查后端日志
重启后端后,登录时应该看到:
```
=== 用户路由权限调试 ===
...
路由: my-device - 是否允许: true
路由: my-device_status - 是否允许: true
路由: my-application - 是否允许: true
路由: my-application_apply - 是否允许: true
...
```
### 3. 检查前端
1. 打开浏览器开发者工具F12
2. 切换到 Network 标签
3. 登录后查看 `/route/getUserRoutes` 请求的响应
4. 应该包含 `my-device``my-application` 路由
### 4. 界面验证
- 左侧菜单栏显示"我的设备"和"设备申请"
- 点击菜单后,页面在正常布局中显示(有侧边栏和顶栏)
- 不再全屏显示
- 子菜单可以正常展开和访问
## 如果还是有问题
### 问题A执行 SQL 失败
**可能原因:**
- MySQL 服务未启动
- 数据库连接信息不正确(用户名/密码)
- 数据库 `soybean_admin` 不存在
**解决:**
1. 检查 MySQL 服务是否运行
2. 确认数据库连接信息:`root/root`
3. 确认数据库 `soybean_admin` 存在
### 问题B后端没有返回这些路由
**可能原因:**
- 后端未重启
- 角色权限配置不正确
**解决:**
1. 确保重启了后端服务
2. 检查角色的 `menus` 字段是否包含这些路由名称:
```sql
-- 检查角色配置
SELECT role_code, menus FROM sys_role WHERE role_code = 'R_USER';
```
应该包含:`my-device,my-device_status,my-device_remote-control,my-device_power-control,my-application,my-application_apply,my-application_my-list`
如果没有,运行:
```bash
fix_403_complete.bat
```
### 问题C前端还是全屏显示
**可能原因:**
- 浏览器缓存未清除
- 前端路由缓存
**解决:**
1. 完全清除浏览器缓存Ctrl+Shift+Delete选择全部时间
2. 关闭所有浏览器窗口
3. 重新打开浏览器
4. 使用无痕模式测试
## 相关文件
- `fix_fullscreen_issue.sql` - SQL 修复脚本
- `fix_fullscreen_issue.bat` - 批处理脚本
- `fix_403_complete.sql` - 角色权限修复脚本
- `src/views/my-device/` - "我的设备"页面组件
- `src/views/my-application/` - "设备申请"页面组件
- `src/router/elegant/routes.ts` - 前端路由配置(自动生成)
## 总结
修复步骤:
1. ✅ 运行 `fix_fullscreen_issue.bat`
2. ✅ 重启后端服务
3. ✅ 清除浏览器缓存
4. ✅ 重新登录测试
完成后,"我的设备"和"设备申请"菜单应该正常显示在布局中,不再全屏。

149
诊断全屏问题.md Normal file
View File

@ -0,0 +1,149 @@
# 诊断"设备状态"全屏显示问题
## 问题描述
点击"我的设备 > 设备状态"选项卡后,页面全屏显示,侧边栏和顶栏消失。
## 可能的原因
### 1. 后端未重启
之前修改了 `RouteService.java``RouteController.java`,添加了 `getAllRoutes()` 方法。
如果后端没有重启,这些修改不会生效。
**解决方法:**
```bash
# 停止后端Ctrl+C
cd backend
mvn spring-boot:run
```
### 2. 浏览器缓存未清除
前端代码已经修改(将父级 index.vue 改为 `<router-view />`),但浏览器可能还在使用旧的缓存。
**解决方法:**
1. 按 `Ctrl + Shift + Delete`
2. 选择"全部时间"
3. 勾选"缓存的图片和文件"
4. 点击"清除数据"
5. 关闭所有浏览器窗口
6. 重新打开浏览器
### 3. 前端开发服务器未重启
如果前端开发服务器还在运行旧代码,需要重启。
**解决方法:**
```bash
# 停止前端服务Ctrl+C
npm run dev
# 或
pnpm dev
```
### 4. 路由配置问题
检查数据库中 `my-device` 相关路由的配置是否正确。
**检查方法:**
```sql
USE soybean_admin;
-- 查看"我的设备"路由配置
SELECT route_id, name, path, component, meta
FROM sys_route
WHERE name LIKE 'my-device%'
ORDER BY order_num;
```
**预期结果:**
- `my-device` 的 component 应该是 `layout.base`
- `my-device_status` 的 component 应该是 `view.my-device_status`
- `my-device_power-control` 的 component 应该是 `view.my-device_power-control`
- `my-device_remote-control` 的 component 应该是 `view.my-device_remote-control`
## 快速修复步骤
### 步骤1重启后端
```bash
cd backend
# 停止当前运行的后端Ctrl+C
mvn spring-boot:run
```
### 步骤2清除浏览器缓存
- 按 `Ctrl + Shift + Delete`
- 选择"全部时间"
- 清除缓存
### 步骤3硬刷新页面
- 按 `Ctrl + F5``Ctrl + Shift + R`
### 步骤4测试
1. 登录系统
2. 点击"我的设备"菜单
3. 点击"设备状态"选项卡
4. 检查是否还有侧边栏和顶栏
## 如果还是有问题
### 检查浏览器控制台
1. 按 `F12` 打开开发者工具
2. 切换到 Console 标签
3. 查看是否有错误信息
4. 切换到 Network 标签
5. 刷新页面
6. 查看 `/route/getUserRoutes` 请求的响应
### 检查路由响应
在 Network 标签中找到 `/route/getUserRoutes` 请求,查看响应:
**正确的响应应该包含:**
```json
{
"code": "0000",
"msg": "success",
"data": {
"routes": [
{
"name": "my-device",
"path": "/my-device",
"component": "layout.base",
"children": [
{
"name": "my-device_status",
"path": "/my-device/status",
"component": "view.my-device_status"
}
]
}
],
"home": "home"
}
}
```
### 检查前端路由
在浏览器控制台中运行:
```javascript
// 查看当前路由
console.log(router.currentRoute.value)
// 查看所有路由
console.log(router.getRoutes())
```
## 常见问题
### Q: 为什么会全屏显示?
A: 当路由的 component 配置不正确时Vue Router 无法找到正确的布局组件,导致只渲染页面内容,不渲染布局(侧边栏和顶栏)。
### Q: 为什么清除缓存很重要?
A: 浏览器会缓存 JavaScript 文件,如果不清除缓存,浏览器会继续使用旧的代码,即使服务器上的代码已经更新。
### Q: 为什么要重启后端?
A: Java 是编译型语言修改代码后需要重新编译和启动才能生效。Spring Boot 的热重载只对某些类型的修改有效。
## 总结
最可能的原因是:
1. ✅ 后端未重启
2. ✅ 浏览器缓存未清除
请按照"快速修复步骤"操作,应该就能解决问题。