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

150 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 诊断"设备状态"全屏显示问题
## 问题描述
点击"我的设备 > 设备状态"选项卡后,页面全屏显示,侧边栏和顶栏消失。
## 可能的原因
### 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. ✅ 浏览器缓存未清除
请按照"快速修复步骤"操作,应该就能解决问题。