Skip to content

v3.1.0

Choose a tag to compare

@wenjianzhang wenjianzhang released this 16 Aug 03:20
· 260 commits to master since this release
874b222

✨ 新功能

  • 新增 @/mixins/crud —— 列表页的分页查询、搜索重置、多选、新增/修改弹窗、
    删除确认此前在每个页面各写一遍,实现完全相同。收敛后页面只需通过
    crudOptions() 声明接口与主键字段的差异。附 11 项测试锁定关键约定
  • 新增 src/views/demo/ —— 标准列表页参照,与后端 app/demo 一一对应
  • 新增 AGENTS.md —— 给 AI 编码工具与新贡献者的约定

现有页面未做改动,可按需逐个迁移到 crud mixin。

🐛 修复

keep-alive 缓存

此前多级菜单的页面缓存实际处于失效状态,四处原因均已修复:

  • router-view 作为 transition / keep-alive 直接子元素在 Vue Router 4 中
    不生效,改用 v-slot + <component :is>
  • 二级及更深层菜单的容器组件断开了缓存链,新增 RouterViewKeepAlive 统一承载
  • include组件 name 匹配而缓存名单存的是路由 name,两者不一致时静默
    失效 —— 现由 loadView 在运行时对齐
  • 统一页面组件 name 与路由 name

侧边栏

  • 折叠后菜单文字被裁切、图标消失 —— Element Plus 的折叠选择器要求 span
    直接子元素,此前被包了一层 div;折叠态样式此前一直写在 Element UI
    .el-tooltip 上,从未匹配到
  • 菜单外链失效
  • 折叠时 logo 错位,改用首字母标记替代完整应用名

上传

  • FormData 被序列化为 JSON 导致文件丢失 —— 拦截器无条件设置
    Content-Type: application/json,axios 据此把 FormData 转成了 JSON
  • 头像上传后回显地址缺少路径分隔符

其他

  • el-tag 非法 type 值导致开发环境刷新卡顿 —— 空字符串会在每次渲染触发 prop
    校验告警,Vite 8 将其连同整棵组件树转发到终端,单次刷新耗时 22 秒
  • parseTime 对非字符串入参抛 TypeError
  • 目录型路由缺少 redirect 导致内容区空白
  • 字典标签作为显示值创建后可以编辑
  • 移除错绑变量的用户导入对话框及其死接口
  • 全局注册 Element Plus 图标组件
  • 消除 TagsView 顶部贯穿的多余横线
  • 限制部署步骤仅在 master 收到 push 时执行 —— 此前 PR 可触发生产部署
  • 移除刷新 token 的客户端死代码(配合 go-admin v2.4.0 移除该接口)

💄 界面

  • 重新设计登录页,引入 Go Gopher 形象
  • 重做首屏加载层
  • 统一残留的紫色为品牌蓝

🔧 依赖

  • 显式声明 fast-glob —— vite-plugin-svg-icons 引用它却未声明,此前靠其他包
    的扁平结构偶然满足,CI 全新安装时构建失败
  • 升级 svgo 至 4.0.2 并迁移配置格式,以 svgo 4 重新处理图标源文件
  • 升级 plop 至 4.0.5,放开 @babel/core 版本约束
  • 移除 autoprefixer 与 postcss.config.js
  • 删除零引用的 SingleImage 上传组件

配套后端版本:go-admin v2.4.0