Releases: huzhushan/vue3-element-admin
v3.0.0
V3 升级
升级内容
- element-plus 升级到 2.2.13
- vite 升级到 2.3.7
- 图标替代为@element-plus/icons-vue,原图标不能再使用
- 国际化支持
- 使用 pinia 替代 vuex
从 v2 升级到 v3
-
安装[email protected]和[email protected]
npm install element-plus@2.2.13 vite@2.3.7
-
修改
src/main.js,增加以下代码// 全局注册element-plus/icons-vue import * as ICONS from "@element-plus/icons-vue"; Object.entries(ICONS).forEach(([key, component]) => { // app.component(key === 'PieChart' ? 'PieChartIcon' : key, component) app.component(key, component); });
-
所有
el-icon-xxx的图标都要改成@element-plus/icons-vue图标<el-icon> <Edit /> </el-icon> <el-button type="primary" icon="Edit"> 编辑 </el-button>
-
菜单图标配置规则
// element-plus官方图标 { path: '/dashboard', icon:'Dashboard', } // svg icon { path: '/xxx', icon:'icon-xxx', // 必须以“icon-”开头,代码中通过“icon-”判断svg icon }
-
修改
src/assets/style/element-variables.scss@forward "element-plus/theme-chalk/src/common/var.scss" with ( $colors: ( "primary": ( "base": $mainColor ) ) ); @use "element-plus/theme-chalk/src/reset.scss" as *; @use "element-plus/theme-chalk/src/index.scss" as *;
-
修改
vite.config.js// additionalData: '@import "./src/assets/style/global-variables.scss";', // 改为: additionalData: `@use "./src/assets/style/global-variables.scss" as *;`,
-
修改
src/layout/components/Sidebar/Menus.vue和src/layout/components/Sidebar/Submenu.vue将所有的el-submenu替换为el-sub-menu -
修改
src/layout/components/Sidebar/Item.vue
文件参考:<template> <svg-icon class="icon" v-if="isCustomSvg" :name="icon" /> <component :is="icon" v-else-if="!!icon" class="icon" /> <span>{{ $t(title) }}</span> </template> <script> import { computed, defineComponent } from "vue"; export default defineComponent({ props: ["title", "icon"], setup({ icon }) { const isCustomSvg = computed(() => icon && icon.startsWith("icon-")); return { isCustomSvg, }; }, }); </script> <style lang="scss" scoped> .icon { margin-right: 10px; width: 16px !important; height: 16px !important; font-size: 16px; text-align: center; color: currentColor; } </style>
-
修改
src/layout/components/Topbar/Hamburger.vue图标修改 -
修改
src/layout/components/Topbar/Breadcrumbs.vue
删除以下样式:::v-deep(.el-breadcrumb__item) { float: none; }
-
修改
src/layout/components/Tagsbar/index.vue图标修改 -
修改
src/layout/components/Tagsbar/hooks/useScrollbar.js
整体替换为:import { ref } from "vue"; export const useScrollbar = (tagsItem) => { const scrollContainer = ref(null); const scrollLeft = ref(0); const doScroll = (val) => { scrollLeft.value = val; scrollContainer.value.setScrollLeft(scrollLeft.value); }; const handleScroll = (e) => { const $wrap = scrollContainer.value.wrap$; if ( $wrap.offsetWidth + scrollLeft.value > $wrap.children[0].scrollWidth ) { doScroll($wrap.children[0].scrollWidth - $wrap.offsetWidth); return; } else if (scrollLeft.value < 0) { doScroll(0); return; } const eventDelta = e.wheelDelta || -e.deltaY; doScroll(scrollLeft.value - eventDelta / 4); }; const moveToTarget = (currentTag) => { const $wrap = scrollContainer.value.wrap$; const tagList = tagsItem.value; let firstTag = null; let lastTag = null; if (tagList.length > 0) { firstTag = tagList[0]; lastTag = tagList[tagList.length - 1]; } if (firstTag === currentTag) { doScroll(0); } else if (lastTag === currentTag) { doScroll($wrap.children[0].scrollWidth - $wrap.offsetWidth); } else { const el = currentTag.$el.nextElementSibling; el.offsetLeft + el.offsetWidth > $wrap.offsetWidth ? doScroll(el.offsetLeft - el.offsetWidth) : doScroll(0); } }; return { scrollContainer, handleScroll, moveToTarget, }; };
-
修改
.eslintrc.js,增加一行'vue/script-setup-uses-vars': 'off',
-
国际化
请参考国际化页面升级
-
pinia
把 vuex 的代码改成 pinia,代码量比较大,建议新项目再使用 pinia。
V2.1.0 副版本升级
升级element-plus
升级sass
更新App.vue国际化配置
defaultSettings:重命名、增加menus.isShow
permission.js增加loading
permission.js删除所有动态路由
退出的时候清空标签栏和menus
tags增加清空标签栏的mutations
404页面路由修改
增加公共hooks
增加树形下拉组件
增加(按钮、组件等)权限控制自定义指令
V2.0.1 优化权限菜单生成方式
✨ Features
- 两种权限菜单的生成方式:
- 只有固定菜单
- 有动态菜单
V2.0.0 重构路由权限控制
✨ Features
-
新增页面布局设置
-
可以对
内容宽度、菜单栏排列方式、是否显示标签栏和面包屑等进行设置
✨ refactor 重构路由权限控制
-
新增动态路由:根据接口动态添加路由,未添加的路由则无法访问
-
删除根据角色判断路由权限的逻辑
v1.1.3 完善prettier配置
🎫 Chores
完善prettier配置
v1.1.2 修复一些Bug
🐛 Bug Fixes
修复getCurrentInstance方法中的ctx无法调用element组件的bug
v1.1.1 添加锁屏页面
✨ Features
- 新增锁屏页面
🐛 Bug Fixes
- 修复用户退出后再次登录,不会获取用户信息的bug
v1.1.0 Add ErrorLog
✨ Features
- add error log
🎫 Chores
- 完善eslint校验
v1.0.1 Add Eslint
🎫 Chores
- add eslint config
v1.0.0 Astroboy
initial version