admin/诊断全屏问题.md
lvfengfree 44cb688072 fix: 修复路由命名问题 - 将my_device和my_application改为连字符格式
- 问题:数据库中路由使用下划线(my_device),前端期望连字符(my-device)
- 导致路由无法匹配,页面全屏显示
- 添加诊断和修复脚本:
  * check_route_naming.sql - 检查路由命名问题
  * fix_my_routes_naming.sql - 修复路由命名
  * fix_my_routes_naming.bat - 批处理执行脚本
- 修复后需要重启后端服务和清除浏览器缓存
2026-03-01 10:36:18 +08:00

3.7 KiB
Raw Permalink Blame History

诊断"设备状态"全屏显示问题

问题描述

点击"我的设备 > 设备状态"选项卡后,页面全屏显示,侧边栏和顶栏消失。

可能的原因

1. 后端未重启

之前修改了 RouteService.javaRouteController.java,添加了 getAllRoutes() 方法。 如果后端没有重启,这些修改不会生效。

解决方法:

# 停止后端Ctrl+C
cd backend
mvn spring-boot:run

2. 浏览器缓存未清除

前端代码已经修改(将父级 index.vue 改为 <router-view />),但浏览器可能还在使用旧的缓存。

解决方法:

  1. Ctrl + Shift + Delete
  2. 选择"全部时间"
  3. 勾选"缓存的图片和文件"
  4. 点击"清除数据"
  5. 关闭所有浏览器窗口
  6. 重新打开浏览器

3. 前端开发服务器未重启

如果前端开发服务器还在运行旧代码,需要重启。

解决方法:

# 停止前端服务Ctrl+C
npm run dev
# 或
pnpm dev

4. 路由配置问题

检查数据库中 my-device 相关路由的配置是否正确。

检查方法:

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重启后端

cd backend
# 停止当前运行的后端Ctrl+C
mvn spring-boot:run

步骤2清除浏览器缓存

  • Ctrl + Shift + Delete
  • 选择"全部时间"
  • 清除缓存

步骤3硬刷新页面

  • Ctrl + F5Ctrl + Shift + R

步骤4测试

  1. 登录系统
  2. 点击"我的设备"菜单
  3. 点击"设备状态"选项卡
  4. 检查是否还有侧边栏和顶栏

如果还是有问题

检查浏览器控制台

  1. F12 打开开发者工具
  2. 切换到 Console 标签
  3. 查看是否有错误信息
  4. 切换到 Network 标签
  5. 刷新页面
  6. 查看 /route/getUserRoutes 请求的响应

检查路由响应

在 Network 标签中找到 /route/getUserRoutes 请求,查看响应:

正确的响应应该包含:

{
  "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"
  }
}

检查前端路由

在浏览器控制台中运行:

// 查看当前路由
console.log(router.currentRoute.value)

// 查看所有路由
console.log(router.getRoutes())

常见问题

Q: 为什么会全屏显示?

A: 当路由的 component 配置不正确时Vue Router 无法找到正确的布局组件,导致只渲染页面内容,不渲染布局(侧边栏和顶栏)。

Q: 为什么清除缓存很重要?

A: 浏览器会缓存 JavaScript 文件,如果不清除缓存,浏览器会继续使用旧的代码,即使服务器上的代码已经更新。

Q: 为什么要重启后端?

A: Java 是编译型语言修改代码后需要重新编译和启动才能生效。Spring Boot 的热重载只对某些类型的修改有效。

总结

最可能的原因是:

  1. 后端未重启
  2. 浏览器缓存未清除

请按照"快速修复步骤"操作,应该就能解决问题。