Files
tiantian-system/app/pages/developer/.workbuddy/memory/2026-03-30.md
2026-04-08 17:10:58 +08:00

2.0 KiB

2026-03-30

应用配置页面修复

问题1: 页面内容贴边

  • 现象: 应用配置页面内容紧贴浏览器边缘
  • 解决: 给 .app-config-page 容器添加了 padding: 24px

问题2: 数据库加密错误

  • 现象: InvalidKeyOrParametersException: Key length not 128/192/256 bits
  • 原因: 后端 Hutool 加密库在处理敏感字段时出错
  • 解决:
    • 移除了所有配置字段的 secret: true 标记
    • 保存时设置 isEncryptedisSecret 为 0
    • 移除了"敏感信息,已加密存储"的 UI 提示
  • 注意: 后端加密密钥 WLgNsWJ8rPjRtnjzX/Gx2RGS80Kwnm/ZeLbvIL+NrBs= 长度为 32字节,符合要求,问题可能是 Base64 解码处理不当

问题3: 刷新页面 404

  • 现象: 访问 /developer/config?websiteId=6268 刷新后显示 "Page not found"
  • 尝试的方案:
    1. 添加 ssr: false - 未解决
    2. 使用 ClientOnly 包裹 - 未解决
    3. 添加参数验证和自动跳转 - 未解决
    4. 添加 mounted 标志延迟渲染 - 未解决
  • 最终解决方案:
    • 将查询参数改为路由参数: /developer/config?websiteId=6268/developer/config/6268
    • 创建正确的文件结构: /app/pages/developer/config/[id].vue
    • 修改参数读取逻辑: 支持 route.params.idroute.query.websiteId 两种方式
    • 更新 AppDetail.vue 中的跳转链接
  • 注意: 修改文件结构后需要重启开发服务器
  • 状态: 已解决

问题4: 唯一键冲突错误

  • 现象: Duplicate entry '6268-api.baseUrl-1' for key 'app_config.uk_website_key'
  • 原因: 后端批量保存时先执行 DELETE WHERE website_id = ?,但数据库唯一键 uk_website_key 包含 website_idconfig_key,软删除的记录 (deleted=1) 仍会导致唯一键冲突
  • 解决:
    • 先加载配置列表建立 configKey -> configId 映射
    • 保存时判断: 有 configId 则用 updateAppConfig,无则用 saveAppConfig
    • 避免后端批量删除逻辑导致的唯一键冲突
  • 状态: 已解决