编辑 | blame | 历史 | 原始文档

车辆异常运行监控告警 - 菜单配置说明

📋 概述

本文档详细说明车辆异常运行监控告警功能的后台菜单结构和权限配置。执行SQL脚本后会自动创建完整的菜单结构。

🎯 菜单结构

一级菜单:车辆监控

车辆监控 (vehicle-monitor) - 目录菜单
├── 车辆异常告警 (vehicleAlert) - 菜单
│   ├── 告警查询 - 按钮权限
│   ├── 处理告警 - 按钮权限
│   ├── 删除告警 - 按钮权限
│   └── 导出告警 - 按钮权限
└── 告警配置管理 (vehicleAlertConfig) - 菜单
    ├── 配置查询 - 按钮权限
    ├── 新增配置 - 按钮权限
    ├── 修改配置 - 按钮权限
    ├── 删除配置 - 按钮权限
    └── 导出配置 - 按钮权限

📊 详细配置

1. 车辆监控(父菜单)

字段
菜单名称 车辆监控
父菜单 顶级菜单 (0)
显示排序 5
路由地址 vehicle-monitor
菜单类型 目录 (M)
菜单图标 monitor
是否可见
菜单状态 正常
备注 车辆监控管理目录

特点
- 📁 目录类型,不对应具体页面
- 🎨 使用monitor图标
- 📍 顶级菜单,显示在左侧导航栏

2. 车辆异常告警(子菜单)

字段
菜单名称 车辆异常告警
父菜单 车辆监控
显示排序 1
路由地址 vehicleAlert
组件路径 system/vehicleAlert/index
菜单类型 菜单 (C)
菜单图标 warning
是否缓存
权限标识 system:vehicleAlert:list
备注 车辆异常运行告警管理

功能按钮权限

2.1 告警查询

  • 权限标识: system:vehicleAlert:query
  • 用途: 查询告警列表和详情

2.2 处理告警

  • 权限标识: system:vehicleAlert:handle
  • 用途: 处理单条或批量处理告警

2.3 删除告警

  • 权限标识: system:vehicleAlert:remove
  • 用途: 删除告警记录

2.4 导出告警

  • 权限标识: system:vehicleAlert:export
  • 用途: 导出告警数据为Excel

3. 告警配置管理(子菜单)

字段
菜单名称 告警配置管理
父菜单 车辆监控
显示排序 2
路由地址 vehicleAlertConfig
组件路径 system/vehicleAlertConfig/index
菜单类型 菜单 (C)
菜单图标 edit
是否缓存
权限标识 system:vehicleAlertConfig:list
备注 车辆告警配置管理

功能按钮权限

3.1 配置查询

  • 权限标识: system:vehicleAlertConfig:query
  • 用途: 查询配置列表和详情

3.2 新增配置

  • 权限标识: system:vehicleAlertConfig:add
  • 用途: 新增全局/部门/车辆配置

3.3 修改配置

  • 权限标识: system:vehicleAlertConfig:edit
  • 用途: 修改已有配置

3.4 删除配置

  • 权限标识: system:vehicleAlertConfig:remove
  • 用途: 删除配置记录

3.5 导出配置

  • 权限标识: system:vehicleAlertConfig:export
  • 用途: 导出配置数据为Excel

🔐 权限标识列表

车辆异常告警模块

权限标识 说明 类型
system:vehicleAlert:list 告警列表 菜单访问
system:vehicleAlert:query 告警查询 按钮权限
system:vehicleAlert:handle 处理告警 按钮权限
system:vehicleAlert:remove 删除告警 按钮权限
system:vehicleAlert:export 导出告警 按钮权限

告警配置管理模块

权限标识 说明 类型
system:vehicleAlertConfig:list 配置列表 菜单访问
system:vehicleAlertConfig:query 配置查询 按钮权限
system:vehicleAlertConfig:add 新增配置 按钮权限
system:vehicleAlertConfig:edit 修改配置 按钮权限
system:vehicleAlertConfig:remove 删除配置 按钮权限
system:vehicleAlertConfig:export 导出配置 按钮权限

🚀 SQL脚本说明

脚本特点

  1. 防重复执行: 使用 NOT EXISTS 检查,避免重复插入
  2. 动态获取ID: 使用变量存储父菜单ID
  3. 顺序执行: 先创建父菜单,再创建子菜单和按钮
  4. 完整性: 一次性创建所有菜单和权限

关键SQL语句

1. 创建父菜单(防重复)

INSERT INTO sys_menu (...)
SELECT '车辆监控', 0, 5, 'vehicle-monitor', ...
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '车辆监控' AND menu_type = 'M');

2. 获取父菜单ID

SET @vehicleMonitorMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '车辆监控' AND menu_type = 'M' LIMIT 1);

3. 创建子菜单

INSERT INTO sys_menu (...)
SELECT '车辆异常告警', @vehicleMonitorMenuId, 1, 'vehicleAlert', ...
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '车辆异常告警' AND perms = 'system:vehicleAlert:list');

🎨 前端路由配置

如果使用动态路由(从后端加载菜单),无需额外配置。如果使用静态路由,需在 router/index.js 中添加:

{
  path: '/vehicle-monitor',
  component: Layout,
  redirect: '/vehicle-monitor/vehicleAlert',
  name: 'VehicleMonitor',
  meta: { title: '车辆监控', icon: 'monitor' },
  children: [
    {
      path: 'vehicleAlert',
      component: () => import('@/views/system/vehicleAlert/index'),
      name: 'VehicleAlert',
      meta: { title: '车辆异常告警', icon: 'warning' }
    },
    {
      path: 'vehicleAlertConfig',
      component: () => import('@/views/system/vehicleAlertConfig/index'),
      name: 'VehicleAlertConfig',
      meta: { title: '告警配置管理', icon: 'edit' }
    }
  ]
}

👥 角色权限分配

管理员角色(admin)

建议分配所有权限:
- ✅ 告警列表访问
- ✅ 告警查询
- ✅ 处理告警
- ✅ 删除告警
- ✅ 导出告警
- ✅ 配置管理所有权限

普通用户角色(user)

建议分配基础权限:
- ✅ 告警列表访问
- ✅ 告警查询
- ✅ 处理告警
- ❌ 删除告警
- ✅ 导出告警
- ❌ 配置管理权限

查看者角色(viewer)

建议分配只读权限:
- ✅ 告警列表访问
- ✅ 告警查询
- ❌ 处理告警
- ❌ 删除告警
- ✅ 导出告警
- ❌ 配置管理权限

🔧 角色分配步骤

方式一:通过后台管理界面

  1. 登录后台系统
  2. 进入 系统管理 > 角色管理
  3. 选择要分配权限的角色,点击"修改"
  4. 在"菜单权限"中勾选需要的菜单和按钮
  5. 点击"确定"保存

方式二:通过SQL直接分配

-- 为角色ID=2(示例)分配告警管理权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT 2, menu_id FROM sys_menu 
WHERE perms LIKE 'system:vehicleAlert:%' OR perms LIKE 'system:vehicleAlertConfig:%';

📋 验证清单

执行SQL脚本后,请验证以下内容:

1. 菜单创建验证

-- 查询车辆监控菜单结构
SELECT 
    m1.menu_name AS '一级菜单',
    m2.menu_name AS '二级菜单',
    m3.menu_name AS '按钮',
    m3.perms AS '权限标识'
FROM sys_menu m1
LEFT JOIN sys_menu m2 ON m2.parent_id = m1.menu_id
LEFT JOIN sys_menu m3 ON m3.parent_id = m2.menu_id
WHERE m1.menu_name = '车辆监控'
ORDER BY m2.order_num, m3.order_num;

预期结果:应该看到完整的菜单树结构

2. 权限数量验证

-- 统计告警相关权限数量
SELECT COUNT(*) AS '权限数量' FROM sys_menu 
WHERE perms LIKE 'system:vehicleAlert%';

预期结果:应该有11个权限(2个list + 9个按钮)

3. 前端访问验证

  • [ ] 登录系统后能看到"车辆监控"菜单
  • [ ] 点击"车辆异常告警"能正常访问页面
  • [ ] 点击"告警配置管理"能正常访问页面
  • [ ] 各功能按钮根据权限正确显示/隐藏

⚠️ 常见问题

1. 菜单不显示

原因
- 菜单未创建成功
- 用户角色未分配菜单权限
- 缓存未刷新

解决方法
```sql
-- 检查菜单是否存在
SELECT * FROM sys_menu WHERE menu_name = '车辆监控';

-- 检查角色权限
SELECT rm.*, m.menu_name, m.perms
FROM sys_role_menu rm
JOIN sys_menu m ON rm.menu_id = m.menu_id
WHERE rm.role_id = YOUR_ROLE_ID
AND m.menu_name LIKE '%告警%';

-- 清除用户缓存
DELETE FROM sys_user_online WHERE user_name = 'YOUR_USERNAME';
```

2. 按钮不显示

原因
- 按钮权限未分配
- 前端v-hasPermi指令权限标识不匹配

解决方法
- 检查角色是否分配了对应的按钮权限
- 确认前端代码中的权限标识与数据库一致

3. 重复执行SQL报错

原因:菜单已存在

解决方法
- SQL脚本已使用NOT EXISTS防重复,正常情况不会报错
- 如果报唯一键冲突,说明数据已存在,可以忽略

4. 父菜单ID获取失败

原因:父菜单不存在或名称不匹配

解决方法
```sql
-- 检查父菜单
SELECT menu_id, menu_name FROM sys_menu WHERE menu_name = '车辆监控';

-- 如果不存在,先执行父菜单创建SQL
```

📞 技术支持

如有问题,请参考:
- 📄 完整实现总结
- 📄 快速部署指南
- 📄 前端部署指南


文档版本: v1.0
更新时间: 2026-01-12
维护人员: AI开发助手