4.6 KiB
4.6 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| session-20260613-5 | 2026-06-13 第5次会话 — 前端5问题 + 系统下拉框过滤 + Token失效 + ECharts修复 + Token日志复制 |
|
2026-06-13 第5次会话 — 完整记录
会话摘要
修复了前端 5 个问题 + 系统下拉框 gateway 过滤 + 角色菜单保存后 token 失效 + ECharts 图表空指针 + Token 日志列点击复制。
1. ElMessage 错误提示显示在左下角(非弹窗)
- 尝试: 改为全量
element-plus/dist/index.css→ 与 unplugin-vue-components 按需加载冲突导致首页空白 - 回退: 保持 3 个独立 CSS 引入(el-message.css/message-box.css/notification.css)
- 文件:
mokee-gateway-web/src/main.ts
2. 登录后显示两个首页
- 修复: 删除 AdminLayout 侧边栏硬编码"首页"菜单项 + 删除
removeDashboard()函数 - 菜单完全由 API 动态提供,需确保 DB 中"首页"菜单已分配角色
- 文件:
mokee-gateway-web/src/views/admin/AdminLayout.vue
3. 去掉首页服务器状态卡片
- 删除 server-panel 块(微服务状态 + JVM 信息)及关联 CSS
- 布局简化:统计卡片 + 登录趋势图表全宽
- 文件:
mokee-gateway-web/src/views/admin/Dashboard.vue
4. 近30天登录趋势图表 — 两次修复
4a. 执行顺序 bug
chartLoading=false原在 finally 块,renderChart() 在 try 块 → chartRef 未挂载- 修复: chartLoading=false 移到 nextTick 前
4b. ECharts init(null) 崩溃
- 根因:
v-if/v-else导致 ref div 按需创建/销毁,nextTick 后 chartRef.value 仍为 null - 修复: 改为
v-show,div 始终在 DOM 中。renderChart 增加动态 import 前后双重 null 检查 - 文件:
mokee-gateway-web/src/views/admin/Dashboard.vue
5. 用户编辑页添加头像上传
v-if="isSelf"— 仅authStore.userInfo.userId === editId时显示- 复用 PersonalView 上传逻辑: 获取Token → 上传 → 保存baseUrl
- loadData 时自动刷新文件服务 Token(避免 401)
- 文件:
mokee-gateway-web/src/views/admin/user/UserForm.vue
6. Token日志菜单后端不返回
- 根因: 初始化脚本是破坏性的(DELETE+重建),Token日志菜单从未被加入
- 修复: 3 个脚本补充 Token日志菜单 INSERT
- 文件:
init_gateway_system.py,sql/init_qa.py,sql/qa_data.sql
7. 系统下拉框过滤 gateway(非 super_admin)
- 需求: admin 页面系统下拉框不显示"网关管理平台"
- 初次方案:
listByUserId()SQL 加AND system_code != 'gateway'→ 用户指出会误伤 super_admin - 最终方案: 过滤移到
SystemController.listAll(),Stream 加.filter(s -> isSuperAdmin || !"gateway".equals(s.getSystemCode())) - 编译错误修复:
isSuperAdmin需声明final - 文件:
mokee-gateway-admin/.../controller/SystemController.java
8. 编辑角色菜单保存后 token 失效跳登录
- 根因:
RoleServiceImpl.invalidateSessionsForRole()删除所有拥有该角色的用户的 Redis 会话,包括操作者自己 - 修复: 加
.filter(uid -> !uid.equals(currentUserId))跳过当前操作用户 - 文件:
mokee-gateway-admin/.../service/impl/RoleServiceImpl.java
9. Token日志列点击复制
- 显示:
tokenSuffix()只显示...后缀部分(如...dQwNJ9HG0E) - 点击:
navigator.clipboard.writeText()复制完整 tokenPreview - 注意: 完整 JWT token 不存库,只有 tokenPreview(前20+...+后10字符)
- 文件:
mokee-gateway-web/src/views/admin/log/OpenTokenLogList.vue
涉及文件清单
| 文件 | 改动 |
|---|---|
mokee-gateway-web/src/main.ts |
CSS 引入(保持 3 个独立引入) |
mokee-gateway-web/src/views/admin/AdminLayout.vue |
去硬编码首页 + removeDashboard |
mokee-gateway-web/src/views/admin/Dashboard.vue |
去服务器卡片 + 图表v-show + 双重null检查 |
mokee-gateway-web/src/views/admin/user/UserForm.vue |
新增头像上传(仅编辑自己) |
mokee-gateway-web/src/views/admin/log/OpenTokenLogList.vue |
Token列点击复制 + 后缀展示 |
init_gateway_system.py |
新增 Token日志菜单 |
sql/init_qa.py |
新增 Token日志菜单 |
sql/qa_data.sql |
新增 Token日志菜单 |
mokee-gateway-admin/.../controller/SystemController.java |
非super_admin过滤gateway |
mokee-gateway-admin/.../service/impl/RoleServiceImpl.java |
invalidateSessions跳过当前用户 |
待处理
- 重新构建部署前后端验证所有修复
- 问题1(ElMessage 左下角)需进一步排查 — CSS 引入正确但可能浏览器缓存