104 Commits

Author SHA1 Message Date
e729ac1af2
fix: 过滤 dev overlay 中误报的 ResizeObserver loop 错误
ResizeObserver loop completed with undelivered notifications 是浏览器
规范允许的良性通知,Element Plus 下拉框展开时会触发,不影响实际功能。
webpack-dev-server 错误地将其当成运行时错误弹出 overlay,通过
client.overlay.runtimeErrors 回调将其过滤掉。

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 01:32:55 +08:00
d4ec727437
feat: 美化文章 Markdown 预览样式,支持亮/暗双色模式
- Drawer 宽度调整为 50%,标题栏加背景/底部边框
- 为预览内容 div 添加 markdown-body 类
- 新增完整 markdown-body 样式:
  - h1-h6 标题层级(h1/h2 带下划线)
  - 段落、强调、链接(带 hover 过渡)
  - 内联代码:使用 Element Plus 填充色 + danger 颜色
  - 代码块:亮色模式 #f6f8fa 浅灰背景,暗色模式 #161b22 深背景
  - 引用块:主题色左边框 + 浅色背景
  - 有序/无序列表(支持嵌套)
  - 表格:条纹行 + hover 高亮
  - 图片:居中、圆角、阴影
  - 水平线
- 暗色模式通过 html.dark 选择器单独覆盖代码块和图片阴影

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 01:27:39 +08:00
18224299aa
fix: 修复 dev 模式下 extract-css 插件不存在导致的报错
dev 模式不加载 mini-css-extract-plugin,需先判断插件是否存在再调用 tap()

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 01:19:40 +08:00
d5d82d3488
fix: 修复 npm 依赖安全漏洞并消除 CSS 顺序警告
- 执行 npm audit fix 自动修复 41 个漏洞中的大部分(babel、webpack、axios 等)
- 在 package.json 中添加 overrides 强制升级无法自动修复的间接依赖:
  - postcss >= 8.4.31(修复 CVE in @vue/component-compiler-utils)
  - serialize-javascript >= 7.0.5(修复 XSS/RCE in copy-webpack-plugin)
  - webpack-dev-server >= 5.2.1(修复源码泄露漏洞)
- 漏洞数从 41 降至 0
- vue.config.js 中为 mini-css-extract-plugin 添加 ignoreOrder: true,
  消除 Element Plus 按需导入时不同路由 chunk CSS 顺序冲突的警告

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 01:10:58 +08:00
c144830fd7
el-alert换成tooltip 2026-04-03 11:02:11 +08:00
55877c5e92
修改照片墙搜索框, 换用input-number 2026-04-03 10:53:50 +08:00
df11fa47a5
所有大按钮都加上plain 2026-04-03 10:41:29 +08:00
11f52789eb
删除发布博客的功能 2026-04-03 10:27:50 +08:00
ca4c17042d
首页菜单按权限过滤 2026-04-02 20:47:29 +08:00
a4f7db415e
权限系统重构:
- 角色模型改为 permissions 字段,移除 methods/includeUri/excludeUri
- 角色管理页面支持权限树选择,保存时只传最上级权限
- /common/verifyToken 返回 permissions,存入 vuex
- 新增 v-permission 指令,所有操作按钮和菜单均按权限控制显示
- 菜单按 list 权限过滤
- 各业务页面按钮加权限指令
- 角色管理列表只显示名称/描述/时间,不显示权限列,权限必选
2026-04-02 20:38:14 +08:00
86c7d75963
feat: 引入环境变量配置,统一管理接口路径
- 新增 .env 文件,配置 VUE_APP_PROXY_TARGET(开发模式代理目标)和 VUE_APP_API_BASE(接口根路径)
- vue.config.js 的 devServer proxy 目标改用 VUE_APP_PROXY_TARGET 环境变量
- src/utils/http.ts 的 axios 实例配置 baseURL 为 VUE_APP_API_BASE,所有请求自动加前缀
- 所有页面中 http 接口调用去掉 /api/v2 前缀,由 axios baseURL 自动补全
- 文件上传的 el-upload action 属性改用动态绑定,引用 VUE_APP_API_BASE 环境变量
- 涉及文件:Login.vue、Home.vue、Article.vue、Hitokoto.vue、Music.vue、PhotoWall.vue、SourceImage.vue、Statistics.vue、SystemUser.vue、SystemConfig.vue、SystemConfigAdd.vue、SystemRole.vue

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-01 15:21:39 +08:00
98d2852604
树添加图标 2026-04-01 14:44:13 +08:00
9aaacb9937
优化表格页面布局样式,统一表格容器与分页、操作栏结构,调整相关 .vue 页面表格结构以适配新样式。\n\n- 优化 src/static/common.less 的表格、分页、操作栏样式结构\n- 调整 src/views/api/Hitokoto.vue、Music.vue、PhotoWall.vue、SourceImage.vue、Article.vue、SystemConfig.vue、SystemRole.vue、SystemUser.vue 的表格结构,统一使用 .table-container 类\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-04-01 14:21:23 +08:00
58729a2960
feat(Music.vue): 新增“时长”列,显示格式为mm:ss,展示音乐时长(time字段)并格式化为两位数分钟和秒数。 2026-04-01 10:46:34 +08:00
b0370df011
/lib/update 2026-04-01 10:25:14 +08:00
3656f91370
style: 登录页和首页适配深色模式
- 将硬编码颜色值替换为Element Plus CSS变量
- 适配Login.vue和Welcome.vue的文字色、背景色、边框色

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-31 23:04:05 +08:00
de58ca78be
换用el-image-viewer 2026-03-31 22:56:31 +08:00
3ca39fc010
feat: 添加深色模式和照片预览优化
- 新增全局深色模式切换功能,支持手动切换和跟随系统主题
- 优化照片墙预览,使用ElImageViewer组件支持左右切换
- 引入Element Plus深色模式相关样式文件

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-31 22:51:51 +08:00
b68de2e9bf
feat: 添加歌单管理功能
- 新增歌单管理界面,支持添加和删除歌单
- 在MusicLibModel中添加musicCount字段显示歌曲数量
- 优化歌词编辑界面,添加加载状态提示
- 优化UI细节和路由视图加载时机

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-31 22:23:24 +08:00
265ce0c6c7
/music/lib/list 2026-03-31 16:44:52 +08:00
0e9cafd6c4
修改删除接口参数 2026-03-31 15:29:12 +08:00
6ffb158bf7
退出登录调用 2026-03-28 00:56:59 +08:00
96f5b93053
更新caniuse-lite 2026-03-27 22:20:02 +08:00
e9fa36a661
修改密码功能 2026-03-25 15:14:16 +08:00
ad9c2b0086
feat: 添加紫色系书本风格 Logo
- 创建 public/logo.svg:紫色渐变书本图标,带金色书签装饰
- 更新 public/index.html:使用 SVG 作为 favicon
- 删除旧的 favicon.ico

Logo 特点:
- 圆形背景配紫色渐变(#7c3aed → #c084fc)
- 打开的书本造型,淡紫色书页
- 金色书签点缀,增加视觉层次
- 响应式矢量图形,任意尺寸清晰显示

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 03:24:30 +08:00
9232901211
处理日期传参 2026-03-21 13:29:41 +08:00
a22bc9dac6
refactor: 优化接口响应处理,移除冗余代码
- Login.vue: 删除多余的 else 分支(拦截器已处理错误)
- Hitokoto.vue/Music.vue/SystemConfig.vue/SystemRole.vue/SystemUser.vue:
  - ElMessage.success 使用固定中文提示替代 data.message
  - 删除未使用的 data 变量
- SourceImage.vue/Article.vue: response.status → response.code === 0

统一接口响应格式后的代码优化。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:01:51 +08:00
4dd48489a5
refactor: 统一接口响应格式处理
- 修改 axios 响应拦截器,统一处理包装后的响应格式:
  - code === 0: 返回 data 中的实际数据
  - code === -1: ElMessage.error 提示 message 并 reject
  - 其他情况: 兼容原始响应格式

- 更新各页面数据取值方式:
  - 分页列表: data.data → data.list
  - SystemUser.vue, SystemRole.vue, Article.vue
  - Music.vue, Hitokoto.vue, PhotoWall.vue, SourceImage.vue
  - SystemConfigAdd.vue: data.data.exists → data.exists

- Home.vue: 简化 verifyToken 响应处理
- SystemConfig.vue: 简化 save 响应处理
- SystemRole.vue/SystemUser.vue: 简化 delete 响应处理

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 11:46:15 +08:00
4bad97a81d
修复报错 2026-03-21 02:38:04 +08:00
a0e49ceda6
修改下划线分隔的字段 2026-03-21 01:26:06 +08:00
499951f9da
v1改为v2 2026-03-21 01:06:54 +08:00
9131148bc1
feat: 美化统计页面布局
- 新增顶部统计卡片:文章总数、分类数量、最早发布、高频词汇
- 图表卡片化设计,统一圆角、阴影、边框样式
- 优化 ECharts 配色,使用 Element Plus 主题色系
- 图表添加标题、副标题和图标
- 支持响应式布局(大屏/中屏/小屏适配)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 22:27:35 +08:00
1e7748db64
feat: 表格区域独立滚动,表头固定
- 修改 common.less:
  - 新增 .page-wrapper 类,使用 flex 纵向布局占满父容器
  - 修改 .table-container 为 flex 布局,让表格自适应高度
  - .el-table 使用 flex:1 实现内容区域滚动、表头固定

- 7个列表页面添加 page-wrapper 类:
  - SystemUser.vue, SystemRole.vue
  - Hitokoto.vue, PhotoWall.vue, Music.vue, SourceImage.vue
  - Article.vue(特殊处理:左右分栏布局适配)

现在设置 100 条数据时,表格内容独立滚动,分页始终可见,不会触发整页滚动。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 22:16:49 +08:00
5b9dc0ccb9
refactor: 使用 CSS 变量定制 Element Plus 主题,优化 Welcome 页样式
- 重构 common.less,使用 Element Plus CSS 变量覆盖组件样式:
  - Menu: --el-menu-bg-color, --el-menu-hover-bg-color 等
  - Table: --el-table-header-bg-color, --el-table-row-hover-bg-color 等
  - Dialog: --el-dialog-border-radius, --el-dialog-padding-primary
  - 保留无对应变量的直接样式,添加注释说明

- 优化 Welcome.vue:
  - 调整 max-width 从 900px 到 1000px
  - 添加 box-sizing: border-box

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 22:03:54 +08:00
83731771a1
fix: 移除 fork-ts-checker 插件,修复与 TypeScript 5 的兼容性错误 2026-03-20 00:37:47 +08:00
90a6153776
升级依赖 & 修复 TS 类型解析 & 适配 element-plus 样式变化
依赖升级:
- element-plus 2.2.28 -> 2.13.5
- vue 3.2.45 -> 3.5.30
- vue-router 4.0.11 -> 4.6.4
- axios 0.22 -> 1.13.6
- echarts 5.2.1 -> 5.6.0
- hls.js 1.3 -> 1.6.15
- typescript 4.5.5 -> 5.9.3

破坏性变更修复:
- axios 1.x: config.headers.token= 改为 config.headers.set()
- element-plus locale 路径: lib/ -> es/
- Article.vue: Node 改为具名导入 { Node }
- main.ts: 路由守卫参数补全显式类型声明
- SystemConfig.vue: 移除废弃的 clearValidate 包装函数

TypeScript 配置修复 (tsconfig.json):
- moduleResolution: node -> bundler (支持 exports 字段, 解决 vue-router .mts 类型文件)
- 新增 skipLibCheck: true (规避第三方库内部类型冲突)
- 新增 vuex paths 映射 (vuex exports 字段缺少 types 条件)

样式适配 (common.less):
- el-dialog 新增 padding: 0, 消除升级后产生的白边
- el-form--inline 内 el-select 补 min-width: 160px, 修复搜索栏下拉框过窄问题

清理:
- 删除 src/vuex.d.ts (已无用的 vuex store 类型扩充文件)
2026-03-20 00:33:09 +08:00
2c8789b8cb
导航tab美化 2026-03-19 23:30:31 +08:00
8a2ba4e2bf
样式优化 2026-03-19 23:24:30 +08:00
cf34013c53
登录页/欢迎页美化 2026-03-19 23:11:03 +08:00
96b032d262
refactor: 全面迁移 vue-class-component 至 Vue 3 Composition API
- 将所有页面组件从 class 语法重写为 <script setup> 风格
  - App.vue / Login.vue / Home.vue / Welcome.vue
  - api: Hitokoto.vue / HitokotoAdd.vue / Music.vue / PhotoWall.vue / SourceImage.vue
  - system: Article.vue / Statistics.vue / SystemConfig.vue / SystemConfigAdd.vue / SystemRole.vue / SystemUser.vue

- 新增 src/utils/http.ts:独立 axios 实例,含请求/响应拦截器,替代 vue-axios 插件
- baselist.ts:abstract class BaseList<T> → useBaseList<T>() 组合式函数
- types.ts:VForm 类型改用 Element Plus 原生 FormInstance
- main.ts:移除 vue-axios 及内联 axios 配置,路由守卫直接引用 store

- 依赖清理:移除 vue-class-component、vue-axios
2026-03-19 23:05:59 +08:00
1ffd56efc2
登录页面加载时清空用户信息&导航页签信息 2023-10-22 11:38:57 +08:00
ac3388f35d
导航面包屑修改为tab页签 2023-10-22 00:24:48 +08:00
ce19454b5e
歌曲库添加下载功能 2023-02-06 10:19:08 +08:00
72c0fc08b4
删除aplayer-fill 2023-01-28 20:44:29 +08:00
82236272a9
默认主题色兼容 2023-01-28 03:39:07 +08:00
c0291d2404
播放器主题色根据专辑封面图片提取 2023-01-28 03:30:55 +08:00
2be35021b4
精简部分播放器代码 2023-01-28 01:02:19 +08:00
289d7e0b8b
修复歌词显示错误 2023-01-26 06:16:39 +08:00
b0e8e8aab3
修复音乐播放媒体信息显示问题 2023-01-26 05:42:39 +08:00
c4645b29e4
删除访客模式登录 2023-01-26 04:35:11 +08:00