From 44cb688072814d0655a9168734162dcd66fa6934 Mon Sep 17 00:00:00 2001 From: lvfengfree Date: Sun, 1 Mar 2026 10:36:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E9=97=AE=E9=A2=98=20-=20=E5=B0=86my=5Fdevice?= =?UTF-8?q?=E5=92=8Cmy=5Fapplication=E6=94=B9=E4=B8=BA=E8=BF=9E=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 问题:数据库中路由使用下划线(my_device),前端期望连字符(my-device) - 导致路由无法匹配,页面全屏显示 - 添加诊断和修复脚本: * check_route_naming.sql - 检查路由命名问题 * fix_my_routes_naming.sql - 修复路由命名 * fix_my_routes_naming.bat - 批处理执行脚本 - 修复后需要重启后端服务和清除浏览器缓存 --- add_missing_routes.bat | 46 +++++ add_missing_routes.sql | 61 +++++++ add_my_device_and_application_routes.bat | 42 +++++ add_my_device_and_application_routes.sql | 49 ++++++ check_existing_routes.bat | 11 ++ check_existing_routes.sql | 19 +++ check_fullscreen_routes.sql | 14 ++ check_my_device_routes.sql | 41 +++++ check_problem_routes.sql | 26 +++ check_route_naming.sql | 28 +++ fix_fullscreen_issue.bat | 46 +++++ fix_fullscreen_issue.sql | 51 ++++++ fix_my_routes_naming.bat | 20 +++ fix_my_routes_naming.sql | 53 ++++++ rollback_add_routes.sql | 11 ++ rollback_my_routes.bat | 30 ++++ rollback_my_routes.sql | 12 ++ 修复全屏显示问题说明.md | 209 +++++++++++++++++++++++ 诊断全屏问题.md | 149 ++++++++++++++++ 19 files changed, 918 insertions(+) create mode 100644 add_missing_routes.bat create mode 100644 add_missing_routes.sql create mode 100644 add_my_device_and_application_routes.bat create mode 100644 add_my_device_and_application_routes.sql create mode 100644 check_existing_routes.bat create mode 100644 check_existing_routes.sql create mode 100644 check_fullscreen_routes.sql create mode 100644 check_my_device_routes.sql create mode 100644 check_problem_routes.sql create mode 100644 check_route_naming.sql create mode 100644 fix_fullscreen_issue.bat create mode 100644 fix_fullscreen_issue.sql create mode 100644 fix_my_routes_naming.bat create mode 100644 fix_my_routes_naming.sql create mode 100644 rollback_add_routes.sql create mode 100644 rollback_my_routes.bat create mode 100644 rollback_my_routes.sql create mode 100644 修复全屏显示问题说明.md create mode 100644 诊断全屏问题.md diff --git a/add_missing_routes.bat b/add_missing_routes.bat new file mode 100644 index 0000000..a8626d2 --- /dev/null +++ b/add_missing_routes.bat @@ -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 diff --git a/add_missing_routes.sql b/add_missing_routes.sql new file mode 100644 index 0000000..dc74715 --- /dev/null +++ b/add_missing_routes.sql @@ -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; diff --git a/add_my_device_and_application_routes.bat b/add_my_device_and_application_routes.bat new file mode 100644 index 0000000..6ab1e81 --- /dev/null +++ b/add_my_device_and_application_routes.bat @@ -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 diff --git a/add_my_device_and_application_routes.sql b/add_my_device_and_application_routes.sql new file mode 100644 index 0000000..a2e3d87 --- /dev/null +++ b/add_my_device_and_application_routes.sql @@ -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; diff --git a/check_existing_routes.bat b/check_existing_routes.bat new file mode 100644 index 0000000..27ed8b0 --- /dev/null +++ b/check_existing_routes.bat @@ -0,0 +1,11 @@ +@echo off +chcp 65001 >nul +echo ======================================== +echo 检查数据库中现有的路由配置 +echo ======================================== +echo. + +mysql -u root -proot < check_existing_routes.sql + +echo. +pause diff --git a/check_existing_routes.sql b/check_existing_routes.sql new file mode 100644 index 0000000..7baf979 --- /dev/null +++ b/check_existing_routes.sql @@ -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; diff --git a/check_fullscreen_routes.sql b/check_fullscreen_routes.sql new file mode 100644 index 0000000..fdb764d --- /dev/null +++ b/check_fullscreen_routes.sql @@ -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; diff --git a/check_my_device_routes.sql b/check_my_device_routes.sql new file mode 100644 index 0000000..626df08 --- /dev/null +++ b/check_my_device_routes.sql @@ -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_%'; diff --git a/check_problem_routes.sql b/check_problem_routes.sql new file mode 100644 index 0000000..1b9e6ea --- /dev/null +++ b/check_problem_routes.sql @@ -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; diff --git a/check_route_naming.sql b/check_route_naming.sql new file mode 100644 index 0000000..30fd006 --- /dev/null +++ b/check_route_naming.sql @@ -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; diff --git a/fix_fullscreen_issue.bat b/fix_fullscreen_issue.bat new file mode 100644 index 0000000..4bcf4c6 --- /dev/null +++ b/fix_fullscreen_issue.bat @@ -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 diff --git a/fix_fullscreen_issue.sql b/fix_fullscreen_issue.sql new file mode 100644 index 0000000..13f2fdf --- /dev/null +++ b/fix_fullscreen_issue.sql @@ -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; diff --git a/fix_my_routes_naming.bat b/fix_my_routes_naming.bat new file mode 100644 index 0000000..c2e0345 --- /dev/null +++ b/fix_my_routes_naming.bat @@ -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 diff --git a/fix_my_routes_naming.sql b/fix_my_routes_naming.sql new file mode 100644 index 0000000..cf7d2b9 --- /dev/null +++ b/fix_my_routes_naming.sql @@ -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; diff --git a/rollback_add_routes.sql b/rollback_add_routes.sql new file mode 100644 index 0000000..77a09c9 --- /dev/null +++ b/rollback_add_routes.sql @@ -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%'; diff --git a/rollback_my_routes.bat b/rollback_my_routes.bat new file mode 100644 index 0000000..5ec835f --- /dev/null +++ b/rollback_my_routes.bat @@ -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 diff --git a/rollback_my_routes.sql b/rollback_my_routes.sql new file mode 100644 index 0000000..724eba5 --- /dev/null +++ b/rollback_my_routes.sql @@ -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; diff --git a/修复全屏显示问题说明.md b/修复全屏显示问题说明.md new file mode 100644 index 0000000..623f210 --- /dev/null +++ b/修复全屏显示问题说明.md @@ -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. ✅ 重新登录测试 + +完成后,"我的设备"和"设备申请"菜单应该正常显示在布局中,不再全屏。 diff --git a/诊断全屏问题.md b/诊断全屏问题.md new file mode 100644 index 0000000..3117a4e --- /dev/null +++ b/诊断全屏问题.md @@ -0,0 +1,149 @@ +# 诊断"设备状态"全屏显示问题 + +## 问题描述 +点击"我的设备 > 设备状态"选项卡后,页面全屏显示,侧边栏和顶栏消失。 + +## 可能的原因 + +### 1. 后端未重启 +之前修改了 `RouteService.java` 和 `RouteController.java`,添加了 `getAllRoutes()` 方法。 +如果后端没有重启,这些修改不会生效。 + +**解决方法:** +```bash +# 停止后端(Ctrl+C) +cd backend +mvn spring-boot:run +``` + +### 2. 浏览器缓存未清除 +前端代码已经修改(将父级 index.vue 改为 ``),但浏览器可能还在使用旧的缓存。 + +**解决方法:** +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. ✅ 浏览器缓存未清除 + +请按照"快速修复步骤"操作,应该就能解决问题。