feat: 重构前端项目结构并优化代码

refactor: 迁移前端资源文件至web目录
feat: 新增多种图标资源
style: 统一代码风格和格式化配置
docs: 更新README和文档说明
chore: 更新依赖和配置文件
fix: 修复部分类型定义和枚举
perf: 优化路由和组件加载逻辑
This commit is contained in:
zhangtao
2026-05-01 01:01:17 +08:00
parent 1355a09441
commit 80263e98e1
887 changed files with 116349 additions and 33825 deletions
File diff suppressed because it is too large Load Diff
+193
View File
@@ -0,0 +1,193 @@
import cover1 from '@imgs/cover/img1.webp';
import cover2 from '@imgs/cover/img2.webp';
import cover3 from '@imgs/cover/img3.webp';
import cover4 from '@imgs/cover/img4.webp';
import cover5 from '@imgs/cover/img5.webp';
import cover6 from '@imgs/cover/img6.webp';
import cover7 from '@imgs/cover/img7.webp';
import cover8 from '@imgs/cover/img8.webp';
import cover9 from '@imgs/cover/img9.webp';
import cover10 from '@imgs/cover/img10.webp';
export const ArticleList = [
{
id: 452,
blog_class: '42',
title: 'Node.js + Docker自动化部署',
count: 56,
create_time: '2024-08-26T00:00:00.000Z',
home_img: cover1,
brief:
'本章将介绍 Node.js 使用 Docker 、Webhook 自动化部署、蓝绿部署、项目到服务器。1、Mac os 安装 Docker 客户端 OrbStack我这里使用的是第三方客户端,相比于官方的,较轻量,启动速度快OrbStack 是一种快速、轻便且简单的运行 Docker 容器和 Linux 的方法。使用我们的 Docker Desktop 替代方案以光速进行开发。下载地址: http',
type_name: 'Node.js',
html_content: '',
},
{
id: 451,
blog_class: '36',
title: 'HTTP 协议',
count: 109,
create_time: '2024-02-22T00:00:00.000Z',
home_img: cover2,
brief:
'概念HTTP(hypertext transport protocol)协议;中文叫超文本传输协议是一种基于TCP/IP的应用层通信协议这个协议详细规定了 浏览器 和万维网 服务器 之间互相通信的规则。协议中主要规定了两个方面的内容客户端:用来向服务器发送数据,可以被称之为请求报文服务端:向客户端返回数据,可以被称之为响应报文报文:可以简单理解为就是一堆字符串请求报文的组成请求行请求头空行请求体H',
type_name: '浏览器',
html_content: '',
},
{
id: 450,
blog_class: '40',
title: 'MongoDB 数据库基本操作',
count: 66,
create_time: '2023-11-30T00:00:00.000Z',
home_img: cover3,
brief:
'简介Mongodb 是什么MongoDB 是一个基于分布式文件存储的数据库,官方地址 https://www.mongodb.com/ 数据库是什么数据库(DataBase)是按照数据结构来组织、存储和管理数据的 应用程序数据库的作用数据库的主要作用就是 管理数据 ,对数据进行 增(c)、删(d)、改(u)、查(r)数据库管理数据的特点相比于纯文件管理数据,数据库管理数据有如下特点:1. 速度更快',
type_name: 'MongoDB',
html_content: '',
},
{
id: 449,
blog_class: '40',
title: 'Mac os 安装 MongoDB',
count: 59,
create_time: '2023-11-15T00:00:00.000Z',
home_img: cover4,
brief:
'下载MongoDB安装包官网下载地址:https://www.mongodb.com/try/download/community?tck=docs_server安装MongoDB# 将压缩包解压到 /usr/local/目录下\nsudo tar -zxvf mongodb-macos-x86_64-5.0.24.tgz -C /usr/local\n\n# 重命名\nsudo mv mongodb-o',
type_name: 'MongoDB',
html_content: '',
},
{
id: 448,
blog_class: '42',
title: 'npm、yarn、nrm 常用命令',
count: 91,
create_time: '2023-11-07T00:00:00.000Z',
home_img: cover5,
brief:
'设置镜像源#1,淘宝镜像源\nnpm config set registry https://registry.npmmirror.com\nnpm config set registry https://registry.npm.taobao.org\n\n#2,腾讯云镜像源\nnpm config set registry http://mirrors.cloud.tencent.com/npm/\n\n#',
type_name: 'Node.js',
html_content: '',
},
{
id: 447,
blog_class: '42',
title: 'Node.js 包管理工具',
count: 53,
create_time: '2023-10-31T00:00:00.000Z',
home_img: cover6,
brief:
'介绍包是什么『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作借助包管理工具,可以快速开发项目,提升开发效率包管理工具是一个通用的概念,很多编程语言都有包管理工具,所以 掌握好包管理工具非常重要常用的包管理工具下面列举了前端常用的包管理工具npmyarncnpmnpmnpm 全称 Node',
type_name: 'Node.js',
html_content: '',
},
{
id: 446,
blog_class: '42',
title: 'Node.js 模块化',
count: 40,
create_time: '2023-10-25T00:00:00.000Z',
home_img: cover7,
brief:
'介绍什么是模块化与模块 ?将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用什么是模块化项目 ?编码时是按照模块一个一个编码的, 整个项目就是一个模块化的项目模块化好处下面是模块化的一些好处:1.防止命名冲突2.高复用性3.高维护性模块暴露数据模块初体验可以通过下面的操作步骤,快速',
type_name: 'Node.js',
html_content: '',
},
{
id: 445,
blog_class: '42',
title: 'Node.js学习笔记',
count: 198,
create_time: '2023-10-15T00:00:00.000Z',
home_img: cover8,
brief:
'fs 模块fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块 ,可以对计算机中的磁盘进行操作。例如文件的创建、删除、修改移动,文件内容的写入、读取,以及文件夹的相关操作// 1 ------------------------------------------------------\n/**\n * 需求\n * 新建一个文件,写入内容\n */\n\n// 1',
type_name: 'Node.js',
html_content: '',
},
{
id: 444,
blog_class: '41',
title: '最好用的ChatGPT应用',
count: 78,
create_time: '2023-05-22T00:00:00.000Z',
home_img: cover9,
brief:
'目前为止最好用的ChatGPT网站,支持6种AI模型和每日一次GPT4的使用机会,有网页版和ios应用程序,可以使用邮箱和手机号等方式注册,中国大陆可放心使用(需要科学上网),下面就介绍一下如何使用吧。网站地址:https://poe.com/进去之后可以选择邮箱或手机号等其他方式注册。除了网页版,你还可以到AppStore搜索poe下载ios客户端',
type_name: 'GPT',
html_content: '',
},
{
id: 443,
blog_class: '35',
title: 'Nuxt 百度收录 robots 和 sitemap',
count: 109,
create_time: '2023-04-07T00:00:00.000Z',
home_img: cover10,
brief:
'前言robots 和 sitemap 文件,前者的作用是减少百度蜘蛛在站内的无谓爬取,后者增加百度蜘蛛在站内的有效爬取,对百度收录和自己网站的SEO推广都十分重要。robots只有一个:robot.txt,这是一个文本文件,主要利用Allow(允许)和DisAllow(禁止)两个命令,(这两个重要的是禁止),禁止百度蜘蛛爬取一些无谓的文件和文件夹,增加百度搜录速度。具体原理和写法网上去搜,制作简单',
type_name: 'Nuxt',
html_content: '',
},
{
id: 442,
blog_class: '12',
title: 'Vue3+TS+Vite 项目搭建笔记(更新中)',
count: 516,
create_time: '2023-04-03T00:00:00.000Z',
home_img: cover4,
brief:
'介绍本章会教你在真实项目中如何搭建 VueRouter、Vuex、pinia、axios、主题切换等,你会见证一个后台管理系统的详细搭建过程。效果图:功能:后台管理系统常用模块登录加密多标签页全局面包屑国际化异常处理Utils工具包可配置的菜单栏徽标亮色 / 暗色 侧边栏浅色主题 / 暗黑主题丰富的个性化配置可折叠侧边栏支持内嵌页面重载当前页面动态路由支持自动重载支持多级路由嵌套及菜单栏嵌套分离路',
type_name: 'Vue',
html_content: '',
},
{
id: 441,
blog_class: '9',
title: 'CSS 根据系统自动切换主题方案',
count: 184,
create_time: '2023-04-01T00:00:00.000Z',
home_img: cover8,
brief:
'原理是改变 css 变量 + window.matchMedia 来监听系统主题变,从而实现点击改变主题和监听系统主题变化1、首先定义 css 全局变量创建 variables.scss 文件light color(浅色模式)定义浅色模式下 css 主题变量dark color(深色模式)定义深色模式下 css 主题变量// css全局变量\n:root {\n // 文字大小\n --art-fo',
type_name: 'CSS',
html_content: '',
},
{
id: 440,
blog_class: '36',
title: '浏览器-安全',
count: 116,
create_time: '2023-03-28T00:00:00.000Z',
home_img: cover2,
brief:
'通过这篇文章你可以了解到同源策略、跨站脚本攻击(xss)、跨域请求伪造(CSRF)以及安全沙箱相关知识;以下是本文的思维导图:(手机端可能看不清)获取高清 PDF,请在微信公众号【小狮子前端】回复【浏览器安全】同源策略什么是同源策略如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。两个不同的源之间若想要相互访问资源或者操作 DOM,那么会有一套基础的安全策略的制约,我们把这',
type_name: '浏览器',
html_content: '',
},
{
id: 439,
blog_class: '12',
title: 'Vue-Router4',
count: 135,
create_time: '2023-02-08T00:00:00.000Z',
home_img: cover3,
brief:
"路由模式构建 router.tsimport { createRouter, createWebHistory, createWebHashHistory, createMemoryHistory, createRouterMatcher } from 'vue-router'\nimport Home from '../views/home/index.vue'\nimport Login from",
type_name: 'Vue',
html_content: '',
},
{
id: 438,
blog_class: '10',
title: 'Event Loop(事件循环)',
count: 161,
create_time: '2023-01-03T00:00:00.000Z',
home_img: cover1,
brief:
'js是单线程的,一次只能执行一段代码。单线程会导致很多任务需要排队,一个个去执行,如果此时某个任务执行时间太长,就会出现阻塞,为了解决这个问题,js引入了事件循环机制。为什么要区分宏任务和微任务?js是单线程的,但是分同步异步微任务和宏任务皆为异步任务,它们都属于一个队列宏任务:script(整体代码)、setTimeout、setInterval、I/O、UI、 renderingsetImme',
type_name: 'JavaScript',
html_content: '',
},
];
@@ -0,0 +1,79 @@
export interface Comment {
id: number;
author: string;
content: string;
timestamp: string;
replies: Comment[];
}
export const commentList = ref<Comment[]>([
{
id: 1,
author: '白夜',
content: '黑神话悟空的打斗场面真的燃爆了!期待上线!',
timestamp: '2024-09-04 09:00',
replies: [
{
id: 101,
author: '星河',
content: '是啊,特别是那些技能特效,简直帅炸!',
timestamp: '2024-09-04 09:15',
replies: [
{
id: 201,
author: '光芒',
content: '希望优化能跟上,不然这么好的画面如果卡顿就可惜了。',
timestamp: '2024-09-04 09:30',
replies: [],
},
],
},
],
},
{
id: 2,
author: '浮生',
content: '据说黑神话悟空需要很高的配置,不知道我的电脑能不能跑起来。',
timestamp: '2024-09-04 10:00',
replies: [
{
id: 102,
author: '晨曦',
content: '同担心啊,听说需要至少RTX 3070才能高效运行。',
timestamp: '2024-09-04 10:20',
replies: [
{
id: 202,
author: '流光',
content: '我是打算升级配置,等这款游戏就是了。',
timestamp: '2024-09-04 10:40',
replies: [],
},
],
},
],
},
{
id: 3,
author: '风铃',
content: '130GB的存储要求有点夸张啊,不过画质这么好,也情有可原。',
timestamp: '2024-09-04 11:00',
replies: [
{
id: 103,
author: '云端',
content: '确实有点高,不过为了这种品质的游戏,值得。',
timestamp: '2024-09-04 11:15',
replies: [
{
id: 203,
author: '梦境',
content: '希望发售后能优化一下安装包体积。',
timestamp: '2024-09-04 11:30',
replies: [],
},
],
},
],
},
]);
+242
View File
@@ -0,0 +1,242 @@
export const commentList = reactive([
{
id: 1,
date: '2024-9-3',
content: '发现了一个超级好用的工具,开心',
collection: 5,
comment: 8,
userName: '匿名',
},
{
id: 2,
date: '2024-9-3',
content: '今天的代码写得很顺利!',
collection: 3,
comment: 2,
userName: 'Coder123',
},
{
id: 3,
date: '2024-9-4',
content: '遇到个bug,调试了一整天',
collection: 7,
comment: 10,
userName: 'DebugMaster',
},
{
id: 4,
date: '2024-9-4',
content: '学Node真的是一件很有趣的事',
collection: 9,
comment: 4,
userName: 'NodeLover',
},
{
id: 5,
date: '2024-9-5',
content: '今天的进度有点慢,需要加把劲了',
collection: 2,
comment: 3,
userName: '努力中的小白',
},
{
id: 6,
date: '2024-9-5',
content: '太好了,终于解决了一个难题!',
collection: 11,
comment: 5,
userName: '匿名',
},
{
id: 7,
date: '2024-9-6',
content: '学会了新的Node技巧,开心!',
collection: 4,
comment: 7,
userName: '开心每一天',
},
{
id: 8,
date: '2024-9-6',
content: '代码优化真的是一个细致活',
collection: 6,
comment: 4,
userName: '精益求精',
},
{
id: 9,
date: '2024-9-7',
content: '今天的工作太顺利了,完美!',
collection: 10,
comment: 9,
userName: '完美主义者',
},
{
id: 10,
date: '2024-9-7',
content: '需要多练习,才能掌握更多技能',
collection: 5,
comment: 6,
userName: '匿名',
},
{
id: 11,
date: '2024-9-8',
content: '每天进步一点点,终会成功',
collection: 8,
comment: 7,
userName: '逐梦者',
},
{
id: 12,
date: '2024-9-8',
content: '与其抱怨,不如努力改变',
collection: 12,
comment: 10,
userName: '改变命运',
},
{
id: 13,
date: '2024-9-9',
content: '今天尝试了新的库,感觉不错',
collection: 9,
comment: 8,
userName: '新手尝试',
},
{
id: 14,
date: '2024-9-9',
content: '写代码也需要灵感,今天灵感不错',
collection: 6,
comment: 5,
userName: '灵感源泉',
},
{
id: 15,
date: '2024-9-10',
content: '感谢社区的帮助,让我解决了问题',
collection: 7,
comment: 4,
userName: '受益匪浅',
},
{
id: 16,
date: '2024-9-10',
content: '学习的路上要保持耐心和恒心',
collection: 3,
comment: 2,
userName: '匿名',
},
{
id: 17,
date: '2024-9-11',
content: '今天学习了异步编程的知识,受益匪浅',
collection: 10,
comment: 9,
userName: '异步学习者',
},
{
id: 18,
date: '2024-9-11',
content: '今天的代码质量提升了不少',
collection: 11,
comment: 6,
userName: '代码匠人',
},
{
id: 19,
date: '2024-9-12',
content: '感觉学习编程真的很有成就感',
collection: 8,
comment: 7,
userName: '成就感满满',
},
{
id: 20,
date: '2024-9-12',
content: '要加倍努力,才能超越昨天的自己',
collection: 5,
comment: 4,
userName: '努力超越',
},
{
id: 21,
date: '2024-9-13',
content: '今天的代码写得很顺手,继续保持',
collection: 9,
comment: 8,
userName: '顺风顺水',
},
{
id: 22,
date: '2024-9-13',
content: '写代码也需要创意,今天很有创意',
collection: 7,
comment: 5,
userName: '创意无限',
},
{
id: 23,
date: '2024-9-14',
content: '遇到的难题解决了,感觉很有成就感',
collection: 10,
comment: 9,
userName: '匿名',
},
{
id: 24,
date: '2024-9-14',
content: '今天的编程练习很有收获',
collection: 8,
comment: 7,
userName: '收获满满',
},
{
id: 25,
date: '2024-9-15',
content: '学习编程的路上,有苦有甜',
collection: 6,
comment: 4,
userName: '苦乐编程',
},
{
id: 26,
date: '2024-9-15',
content: '今天的代码写得特别流畅,开心!',
collection: 11,
comment: 6,
userName: '流畅编程',
},
{
id: 27,
date: '2024-9-16',
content: '今天的编程练习让我更有信心',
collection: 9,
comment: 8,
userName: '信心满满',
},
{
id: 28,
date: '2024-9-16',
content: '今天的编程学习让我收获很多',
collection: 7,
comment: 5,
userName: '匿名',
},
{
id: 29,
date: '2024-9-17',
content: '编程是一门艺术,今天体会到了',
collection: 12,
comment: 10,
userName: '编程艺术家',
},
{
id: 30,
date: '2024-9-17',
content: '今天的代码写得很顺利,继续加油!',
collection: 10,
comment: 9,
userName: '匿名',
},
]);
+273
View File
@@ -0,0 +1,273 @@
import avatar1 from '@/assets/images/avatar/avatar1.webp';
import avatar2 from '@/assets/images/avatar/avatar2.webp';
import avatar3 from '@/assets/images/avatar/avatar3.webp';
import avatar4 from '@/assets/images/avatar/avatar4.webp';
import avatar5 from '@/assets/images/avatar/avatar5.webp';
import avatar6 from '@/assets/images/avatar/avatar6.webp';
import avatar7 from '@/assets/images/avatar/avatar7.webp';
import avatar8 from '@/assets/images/avatar/avatar8.webp';
import avatar9 from '@/assets/images/avatar/avatar9.webp';
import avatar10 from '@/assets/images/avatar/avatar10.webp';
export interface User {
id: number;
username: string;
gender: 1 | 0;
mobile: string;
email: string;
dep: string;
status: string;
create_time: string;
avatar: string;
}
// 用户列表
export const ACCOUNT_TABLE_DATA: User[] = [
{
id: 1,
username: 'alexmorgan',
gender: 1,
mobile: '18670001591',
email: 'alexmorgan@company.com',
dep: '研发部',
status: '1',
create_time: '2020-09-09 10:01:10',
avatar: avatar1,
},
{
id: 2,
username: 'sophiabaker',
gender: 1,
mobile: '17766664444',
email: 'sophiabaker@company.com',
dep: '电商部',
status: '1',
create_time: '2020-10-10 13:01:12',
avatar: avatar2,
},
{
id: 3,
username: 'liampark',
gender: 1,
mobile: '18670001597',
email: 'liampark@company.com',
dep: '人事部',
status: '1',
create_time: '2020-11-14 12:01:45',
avatar: avatar3,
},
{
id: 4,
username: 'oliviagrant',
gender: 0,
mobile: '18670001596',
email: 'oliviagrant@company.com',
dep: '产品部',
status: '1',
create_time: '2020-11-14 09:01:20',
avatar: avatar4,
},
{
id: 5,
username: 'emmawilson',
gender: 0,
mobile: '18670001595',
email: 'emmawilson@company.com',
dep: '财务部',
status: '1',
create_time: '2020-11-13 11:01:05',
avatar: avatar5,
},
{
id: 6,
username: 'noahevan',
gender: 1,
mobile: '18670001594',
email: 'noahevan@company.com',
dep: '运营部',
status: '1',
create_time: '2020-10-11 13:10:26',
avatar: avatar6,
},
{
id: 7,
username: 'avamartin',
gender: 1,
mobile: '18123820191',
email: 'avamartin@company.com',
dep: '客服部',
status: '2',
create_time: '2020-05-14 12:05:10',
avatar: avatar7,
},
{
id: 8,
username: 'jacoblee',
gender: 1,
mobile: '18670001592',
email: 'jacoblee@company.com',
dep: '总经办',
status: '3',
create_time: '2020-11-12 07:22:25',
avatar: avatar8,
},
{
id: 9,
username: 'miaclark',
gender: 0,
mobile: '18670001581',
email: 'miaclark@company.com',
dep: '研发部',
status: '4',
create_time: '2020-06-12 05:04:20',
avatar: avatar9,
},
{
id: 10,
username: 'ethanharris',
gender: 1,
mobile: '13755554444',
email: 'ethanharris@company.com',
dep: '研发部',
status: '1',
create_time: '2020-11-12 16:01:10',
avatar: avatar10,
},
{
id: 11,
username: 'isabellamoore',
gender: 1,
mobile: '13766660000',
email: 'isabellamoore@company.com',
dep: '研发部',
status: '1',
create_time: '2020-11-14 12:01:20',
avatar: avatar6,
},
{
id: 12,
username: 'masonwhite',
gender: 1,
mobile: '18670001502',
email: 'masonwhite@company.com',
dep: '研发部',
status: '1',
create_time: '2020-11-14 12:01:20',
avatar: avatar7,
},
{
id: 13,
username: 'charlottehall',
gender: 1,
mobile: '13006644977',
email: 'charlottehall@company.com',
dep: '研发部',
status: '1',
create_time: '2020-11-14 12:01:20',
avatar: avatar8,
},
{
id: 14,
username: 'benjaminscott',
gender: 0,
mobile: '13599998888',
email: 'benjaminscott@company.com',
dep: '研发部',
status: '1',
create_time: '2020-11-14 12:01:20',
avatar: avatar9,
},
{
id: 15,
username: 'ameliaking',
gender: 1,
mobile: '13799998888',
email: 'ameliaking@company.com',
dep: '研发部',
status: '1',
create_time: '2020-11-14 12:01:20',
avatar: avatar10,
},
];
export interface Role {
roleName: string;
roleCode: string;
des: string;
date: string;
enable: boolean;
}
// 角色列表
export const ROLE_LIST_DATA: Role[] = [
{
roleName: '超级管理员',
roleCode: 'R_SUPER',
des: '拥有系统全部权限',
date: '2025-05-15 12:30:45',
enable: true,
},
{
roleName: '管理员',
roleCode: 'R_ADMIN',
des: '拥有系统管理权限',
date: '2025-05-15 12:30:45',
enable: true,
},
{
roleName: '普通用户',
roleCode: 'R_USER',
des: '拥有系统普通权限',
date: '2025-05-15 12:30:45',
enable: true,
},
{
roleName: '财务管理员',
roleCode: 'R_FINANCE',
des: '管理财务相关权限',
date: '2025-05-16 09:15:30',
enable: true,
},
{
roleName: '数据分析师',
roleCode: 'R_ANALYST',
des: '拥有数据分析权限',
date: '2025-05-16 11:45:00',
enable: false,
},
{
roleName: '客服专员',
roleCode: 'R_SUPPORT',
des: '处理客户支持请求',
date: '2025-05-17 14:30:22',
enable: true,
},
{
roleName: '营销经理',
roleCode: 'R_MARKETING',
des: '管理营销活动权限',
date: '2025-05-17 15:10:50',
enable: true,
},
{
roleName: '访客用户',
roleCode: 'R_GUEST',
des: '仅限浏览权限',
date: '2025-05-18 08:25:40',
enable: false,
},
{
roleName: '系统维护员',
roleCode: 'R_MAINTAINER',
des: '负责系统维护和更新',
date: '2025-05-18 09:50:12',
enable: true,
},
{
roleName: '项目经理',
roleCode: 'R_PM',
des: '管理项目相关权限',
date: '2025-05-19 13:40:35',
enable: true,
},
];
+449
View File
@@ -0,0 +1,449 @@
interface UpgradeLog {
version: string; // 版本号
title: string; // 更新标题
date: string; // 更新日期
detail?: string[]; // 更新内容
requireReLogin?: boolean; // 是否需要重新登录
remark?: string; // 备注
}
export const upgradeLogList = ref<UpgradeLog[]>([
{
version: 'v3.0.2',
title: '问题修复、表单与路由体验优化',
date: '2026-03-15',
detail: [
'修复:富文本编辑器样式异常问题',
'修复:菜单区域无法滚动的问题',
'修复:特殊路由打开后显示空白页面的问题',
'修复:WebSocket 重连异常问题',
'修复:特殊动态路由参数处理异常问题',
'优化:ArtForm、ArtSearchBar 表单提交前增加数据清洗,避免无效字段提交到后端',
'修复:ArtTable 与 ElForm 组合使用时动态表单校验错误的问题',
'修复:隐藏子菜单时父级菜单被一并隐藏的问题',
'修复:静态路由刷新后跳回首页的问题',
'修复:art-table 属性继承异常问题',
'修复:PC 端切换到移动端后再切回 PC 端,菜单无法恢复原桌面布局的问题',
],
},
{
version: 'v3.0.1',
title: 'bug修复、新增功能',
date: '2025-11-15',
detail: [
'修复:路由注册时不存在接口的重复请求问题',
'修复:一键精简脚本打包失败的问题',
'优化:完善路由配置验证机制,自动检测并提示非一级菜单的路径配置错误',
'优化:顶部进度条残影',
'优化:vite 预构建优化',
'优化:圆角、边框统一',
'优化:锁屏页面重新设计',
'优化:退出登录菜单提前消失造成的视觉体验不好问题',
'新增:ArtForm 和 ArtSearchBar 组件的 label 支持自定义渲染函数,可实现带 tooltip 等复杂标签',
'新增:菜单管理表单关键字段新增 Tooltip 提示,降低用户配置门槛',
'新增:iconify 新增离线图标加载模式',
'新增:退出登录新增 redirect 属性,用于重新登录后跳转到对应页面',
'新增:退出登录重新进入系统保留用户标签页,根据 userId 进行身份识别',
'新增:双列菜单新增折叠按钮',
'新增:菜单图标完善',
'新增:多标签页增加图标',
'新增:WebSocket 连接',
],
},
{
version: 'v3.0.0',
title: 'Sass 重构为 Tailwind CSS,Iconfont 替换为 Iconify,性能,目录结构,文件注释全方位优化',
date: '2025-11-9',
requireReLogin: true,
detail: [
'样式系统重构:Sass 全面迁移至 Tailwind CSS,提升开发效率与样式一致性',
'图标方案升级:Iconfont 替换为 Iconify,支持更丰富的图标库与按需加载',
'构建优化:完整包体积减少 1.3 MB,显著提升加载性能',
'路由注册重构:全面重构路由注册系统,引入面向对象设计,提高代码的可维护性、可测试性和扩展能力',
'架构优化:优化目录结构,职责划分更清晰,降低用户学习成本与上手难度',
'注释优化:统一模块注释规范,完善每一个组件介绍、功能说明与使用示例,降低用户理解成本与上手难度',
'性能提升:优化核心代码逻辑,提升系统运行效率',
'设计系统:重构颜色体系,统一 UI 视觉规范,提升界面一致性',
'菜单优化:细化菜单样式,优化交互体验与视觉呈现',
'组件重构:重构 ArtTextScroll 组件,提升性能与可维护性',
'问题修复:修复 ArtForm、ArtSearchBar 自定义组件渲染异常',
'功能增强:ArtForm、ArtSearchBar 新增 render 属性,支持自定义组件渲染',
'功能增强:useTable hooks 新增 visible 属性,用于控制列默认是否显示',
'响应式优化:优化 ArtForm、ArtSearchBar 栅格布局,适配多种屏幕尺寸',
'节日功能增强:礼花配置支持跨日期范围设置与自定义播放次数',
'依赖更新:升级核心依赖至最新稳定版本',
'配置管理优化:新增 setting.ts 配置文件,支持一键复制与重置系统默认设置',
],
remark:
'重要提示:本次升级涉及样式系统(Sass → Tailwind CSS)与图标库(Iconfont → Iconify)的底层重构,属于破坏性更新。建议新项目直接使用 v3.0,旧版本项目不建议升级。',
},
{
version: 'v2.6.1',
title: 'bug修复、授权页增加主题色切换功能',
date: '2025-10-19',
detail: [
'修复获取用户信息、获取菜单接口访问无效地址重复调用问题',
'升级部分依赖兼容 tailwindcss',
'修复 ElButton circle 模式样式',
'修复 ElSlect 无法通过键盘选择问题',
'修复带参数静态路由跳转登录页面问题',
'优化外部链接菜单点击选中状态',
'授权页增加主题色切换功能',
],
},
{
version: 'v2.6.0',
title: '代码优化、bug修复',
date: '2025-10-16',
detail: [
'优化精简版本菜单数据结构,提升数据一致性',
'优化本地开发环境网络请求代理配置',
'优化 ElTree 组件默认样式',
'新增 VsCode 推荐插件相关配置',
'优化 ElDropdown 组件点击触发模式下的交互样式',
'扩展注册、密码重置页面顶部组件支持',
'优化菜单过滤逻辑',
'优化页面切换动画,提升加载速度',
'优化暗黑模式文字颜色',
'修复静态路由自定义首页路径首次访问跳转登录页问题',
'修复退出登录时短暂跳转至 500 页的问题',
'修复 v2.5.9 版本首页路由跳转配置失效问题',
'修复 v2.5.9 自动导包机制导致的构建异常',
],
requireReLogin: true,
},
{
version: 'v2.5.9',
title: '代码优化',
date: '2025-10-12',
detail: [
'views 文件目录、文件名、代码优化',
'useTable 分页请求字段增加全局配置 tableConfig.ts',
'优化路由配置为模块化结构',
'获取菜单接口使用 apifox mock 数据(需在 .env 中 将 VITE_ACCESS_MODE 设为 backend 模式)',
],
},
{
version: 'v2.5.8',
title: '依赖升级、bug修复',
date: '2025-09-29',
detail: [
'vue、vite、element-plus 等核心库升级',
'修复富文本编辑器全屏顶栏层级问题',
'修复表格列排序组件文字益处问题',
'修复统计卡片条件判断',
'优化 el-tag 样式',
'优化顶部进度条颜色',
'优化自定义主题配置',
'优化 ElementPlus 自定义主题问题',
'修复根路径 / 与 HOME_PAGE_PATH 同为 / 时出现的无限重定向',
],
remark: '由于项目依赖升级,node 版本需要升级到 v20.19.0 或以上',
},
{
version: 'v2.5.7',
title: '新增表单组件',
date: '2025-09-14',
detail: [
'新增 ArtForm 组件',
'修复新版本谷歌浏览器切换主题闪烁问题',
'优化表单 label 高度没有对齐问题',
'首屏启动性能优化',
],
},
{
version: 'v2.5.6',
title: '优化用户体验、bug修复',
date: '2025-09-06',
detail: [
'useTable 类型推导优化,不需要手动传递类型即可实现类型提示',
'useTable removeColumn 支持多数据删除',
'useTable 自动识别响应体支持自定义配置 (src/utils/table/tableConfig.ts)',
'useTable 空数据浏览器警告优化',
'api 接口请求代码优化、api.d.ts 类型优化',
'优化 ArtTable 顶部按钮换行无法自适应问题(示例:功能示例 / 左右布局表格)',
'ArtTable 分页组件选中样式优化',
'ArtTable 空状态高度默认撑满',
'ArtButtonMore 组件新增图标、颜色配置',
'ArtTableHeader 新增搜索按钮,用于控制顶部搜索栏的显示与隐藏',
'ArtSearchBar label 为空时不占空间',
'表格操作栏拖拽禁止固定列拖拽',
'角色管理页面接口对接、代码优化',
'菜单管理页面优化',
'优化设置中心滚动页面跟随滚动问题',
'一级路由是外链时,component 校验逻辑优化',
'优化地图右下角拖动问题',
'优化暗黑模式刷新页面白色背景问题',
'优化左侧菜单折叠按钮间距问题',
'移动端显示左侧菜单 logo',
'网络请求新增 showSuccessMessage,用于配置是否显示成功消息',
'添加全局错误处理基础框架',
'修复批量删除整页数据没有返回上一页的bug',
'修复动态路由参数导致的问题',
'修复动态路由配置 一级路由是 iframe 页面时,全屏问题',
'新增权限演示示例',
'全局组件采用异步加载策略,提升首屏加载性能',
],
},
{
version: 'v2.5.5',
title: 'bug修复、优化用户体验',
date: '2025-08-17',
detail: [
'重构 ArtSearchBar 组件,支持更多组件、表单校验等能力',
'useTable 列配置:支持动态更新能力',
'修复多个富文本编辑器图标不统一问题',
'优化颜色选择器圆角',
'el-radio、el-checkbox 统一大小',
'art-stats-card 新增小数位、分隔符配置',
'路由配置示例优化',
'高级表格新增自定义获取数据示例(等待其他请求完成后执行 useTable 数据获取)',
'useTable 新增 excludeParams,用于排除某些参数不参与请求',
'优化路径别名类型问题',
'本地开发跨域配置优化',
'修复 useTable 删除最后一整页数据没有返回上一页的问题',
'修复 echarts 图表数据初始化、更新数据浏览器报错',
'删除 art-chart-empty 组件',
'新增 ArtSearchBar 组件示例',
'网络请求支持 http 状态码为 401 时退出登录',
'优化网络请求退出登录多次提示问题',
'useTable 属性、方法命名优化',
'登录页UI升级',
'403、404、500 页面UI升级',
],
},
{
version: 'v2.5.4',
title: 'bug修复、优化用户体验',
date: '2025-07-27',
detail: [
'修复获取用户信息接口时序问题导致路由注册菜单渲染错误bug',
'修复动态路由校验问题导致的 iframe 不显示bug',
'修复 reset 文件语法错误',
'修复 ArtTable 数据类型错误',
'路由注册新增 component 校验',
'修复地图滚轮滚动放大问题',
'网络请求 headers 支持自定义配置',
'展开行支持 formatter 渲染',
],
},
{
version: 'v2.5.3',
title: 'bug修复、优化用户体验',
date: '2025-07-20',
detail: [
'ArtTable 组件重构',
'Element Plus 升级到 v2.10.2',
'优化 useTable 分页参数问题',
'修复 ArtTable 切换分页大小时执行两次请求bug',
'优化网络请求示例:初始化参数、分页携带参数问题',
'优化搜索日期范围参数处理',
'优化 el-date-picker 组件圆角问题',
'优化 el-select 组件 hover 样式',
'新增表格左右布局示例',
'搜索组件、分页组件高度降低',
'优化登录页面滑块动画间隔时长',
'优化菜单没有子菜单显示的问题',
],
},
{
version: 'v2.5.2',
title: 'bug修复、优化用户体验',
date: '2025-07-13',
detail: [
'新增一键精简脚本,快速准备开发环境',
'优化表格无数据时表头不显示问题',
'useTable hooks 支持分页字段名自定义映射',
'修复 v2.5.0 顶部进度条不显示问题',
'修复左侧菜单遮罩异常显示问题',
'修复隐藏所有子菜单时仍显示父级菜单的问题',
'水平菜单、混合菜单、双列菜单支持徽章显示',
'修复 stylelint 导致的登录页滑块样式异常',
'修复老旧移动端设备 loading 定位问题',
'快速入口支持配置文件模式',
'顶栏功能支持配置文件模式',
'全局事件总线 mittBus 类型安全优化',
'支持自定义首页路径',
'优化移动端设置中容器宽度样式',
'优化登录页验证滑块文字居中效果',
'路由支持配置 redirect 等属性',
],
},
{
version: 'v2.5.1',
title: 'bug修复、优化用户体验',
date: '2025-07-08',
detail: [
'修复首次登录系统时 loading 提前关闭bug',
'el-card、el-table 背景色跟系统保持一致',
'修复 v2.5.0 版本引起的全屏页样式层级过低bug',
'修复 v2.5.0 版本引起的表格展开行折叠bug',
],
},
{
version: 'v2.5.0',
title: '新增 useTable hooks 表格封装、组件重构',
date: '2025-07-06',
remark: '建议升级,带来更高效、更智能的表格开发体验',
detail: [
'重构 ArtTable、ArtTableHeader、ArtNotification 组件',
'新增 useTable hooks 表格封装,支持数据获取、转换、响应适配、智能缓存(基于 LRU 算法)、错误处理、列配置与插槽、分页控制、刷新策略等核心功能,全面提升开发效率与用户体验',
'修复菜单管理搜索直接修改 pinia 数据的问题',
'移除 CountTo 插件,替换为 ArtCountTo 组件',
'Echarts 版本升级到 5.6.0',
'修复路由守卫 loading 闪烁问题',
],
},
{
version: 'v2.4.2.9',
title: '代码重构、修复bug、优化用户体验',
date: '2025-07-02',
detail: [
'菜单布局、顶部导航代码重构',
'修复移动端锁屏页部分浏览器无法解锁bug',
'优化移动端菜单滚动用户体验',
'优化顶部菜单样式问题',
'顶部菜单宽度自适应,可显示更多内容,混合菜单支持鼠标滚动',
'asyncRoutes 路由配置 auth_mark 字段改为 authMark',
'去除重复的 components.d.ts 文件,components.d.ts、auto-imports.d.ts 忽略提交',
'优化国际化语言文件加载方式,异步改成同步模式',
'优化 el-pagination 大小不一致问题',
],
},
{
version: 'v2.4.2.8',
title: '修复 v2.4.2.7 版本访问 / 路径时显示 404 的问题',
date: '2025-06-26',
},
{
version: 'v2.4.2.7',
title: 'bug修复、优化用户体验',
date: '2025-06-25',
detail: [
'路由支持配置全屏模式',
'路由支持自动跳转到菜单的第一个有效路由',
'动态路由新增 removeAllDynamicRoutes 方法,可用于彻底清除所有动态路由',
'权限自定义指令优化、新增角色权限指令 v-roles、可用于控制元素的显示与隐藏',
'修复登录页面拖拽组件 ArtDragVerify 宽度、颜色异常bug',
'修复 iframe 页面混合模式、双列模式异常bug',
'优化锁屏页面被 el-loading 穿透bug',
'跨域请求携带 cookie 配置从环境变量中获取,默认关闭',
'针对SEO、可访问性做一些优化',
'新增标签页操作示例',
],
},
{
version: 'v2.4.2.6',
title: '组件重构与性能优化',
date: '2025-06-23',
detail: [
'重构 components/core/forms 文件夹下的表单相关组件,提升可维护性与一致性',
'重构 ArtBreadcrumb 面包屑导航组件,优化逻辑结构与样式',
'优化 ArtChatWindow 与 ArtFastEnter 组件代码,提升可读性与性能',
'重构 ArtFireworksEffect 烟花效果组件,显著提升渲染性能与动画流畅度',
'README 文档新增官方网站链接,便于用户查看项目文档',
],
},
{
version: 'v2.4.2.5',
title: '图表组件重构',
date: '2025-06-22',
detail: [
'重构图表组件,优化代码结构与可维护性',
'精细调整图表动画与主题配色方案,提升视觉一致性',
],
},
{
version: 'v2.4.2.4',
title: '组件重构、代码优化',
date: '2025-06-18',
detail: [
'ArtMenuRight 组件重构',
'ArtWatermark 增加类型注释',
'components/core/cards 下面的组件重构,代码优化',
],
},
{
version: 'v2.4.2.3',
title: '组件重构、代码优化',
date: '2025-06-18',
detail: [
'ArtResultPage 组件重构',
'ArtTextScroll 组件代码优化',
'ArtException 组件增加类型提示',
'ArtCutterImg 组件样式优化、增加类型定义',
'ArtVideoPlayer 组件增加类型定义',
],
},
{
version: 'v2.4.2.2',
title: '组件重构',
date: '2025-06-16',
detail: ['返回顶部组件重构', '图标选择器组件重构', '系统Logo组件属性变更'],
},
{
version: 'v2.4.2.1',
title: '横幅组件重构、Bug修复',
date: '2025-06-16',
detail: ['横幅组件重构以及优化', '修复混合菜单下第一个菜单是嵌套菜单跳转bug'],
},
{
version: 'v2.4.2',
title: 'Bug修复与体验优化',
date: '2025-06-14',
detail: [
'重构网络请求模块,增强错误处理、类型安全与多语言支持',
'修复移动端搜索栏无法滚动、iPad端页面滚动异常问题',
'修复 el-dialog 启用 draggable 属性后,自定义动画失效的问题',
'修复 2.3.0 版本本地存储重构后,导致登录、注册等页面多语言设置无法持久化的问题',
'引导、列设置多语言完善',
'修复表格固定列不起作用bug',
'路由配置新增 activePath 激活菜单路径属性',
'去除用户列表、菜单管理页面无效代码',
'更新技术支持链接',
],
requireReLogin: true,
},
{
version: 'v2.4.1.1',
title: 'Bug修复与体验优化',
date: '2025-06-07',
detail: [
'修复菜单管理折叠 bug',
'优化角色管理页面代码',
'修复表格数据为空高度无限变大bug',
'el-dialog视觉效果优化,支持配置线条',
'系统主题模式从Light改成跟随系统模式',
],
},
{
version: 'v2.4.1',
title: '优化菜单交互体验、Echarts 图表性能优化',
date: '2025-06-07',
detail: [
'提升菜单操作跟手感',
'页面入场动画时间减少0.04s',
'修复 Echarts 图表组件在弹窗中不显示的 bug',
'Echarts 图表性能优化,新增可视区域初始化、内存泄漏防护、防抖处理',
'锁屏状下禁止使用开发者工具破解锁屏',
],
},
{
version: 'v2.4.0',
title: '代码重构与资源优化',
date: '2025-06-06',
detail: [
'全局 TypeScript 类型体系重构,提升类型准确性与可维护性',
'重构 utils 工具包,统一工具方法结构,增强可读性与复用性',
'utils 新增表单验证与 Cookie 操作相关工具函数',
'删除未使用的工具模块与无效资源,精简项目体积',
'优化 views 页面结构,移除冗余页面文件',
'页面组件增加 defineOptions,明确组件命名',
'异常页面多语言支持, 提升国际化体验',
'图片资源统一转换为 webp 格式,整体资源体积减少约 50%',
'打包产物减少约 1MB,提高加载效率',
'HTTP 请求增加 token 过期自动处理逻辑,提升安全性与用户体验',
],
requireReLogin: true,
},
]);