Merge branch 'main' into gitee

This commit is contained in:
xiaoxian521 2023-02-08 18:10:12 +08:00
commit 9ba545ae3b
42 changed files with 869 additions and 789 deletions

View File

@ -18,7 +18,7 @@
### 🍏 Perf ### 🍏 Perf
- Update [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) to the latest version, bringing more friendly type hints - Update [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) to the latest version, bringing more friendly type hints
- Optimize [PureTableBar](https://github.com/xiaoxian521/vue-pure-admin/tree/main/src/components/RePureTableBar) component - Optimize [PureTableBar](https://github.com/pure-admin/vue-pure-admin/tree/main/src/components/RePureTableBar) component
- Optimize the business code of the system management page to bring better code reference - Optimize the business code of the system management page to bring better code reference
# 3.9.5 (2022-12-13) # 3.9.5 (2022-12-13)
@ -46,7 +46,7 @@
### ✔️ refactor ### ✔️ refactor
- Completely removed `vxe-table`, after removal, the overall package size of the full version is reduced by `1.82MB`, and the initial startup time is basically the same as the lite version 🐮 - Completely removed `vxe-table`, after removal, the overall package size of the full version is reduced by `1.82MB`, and the initial startup time is basically the same as the lite version 🐮
[Click here to see Why Removed? How to integrate it yourself?](https://xiaoxian521.github.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90) [Click here to see Why Removed? How to integrate it yourself?](https://pure-admin.github.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
### 🎫 Feat ### 🎫 Feat
@ -73,7 +73,7 @@
### 🍏 Perf ### 🍏 Perf
- Global coverage of `el-dialog`, `el-drawer`, `el-message-box`, `el-notification` components of `element-plus`The style of the close icon in the upper right corner makes it more vivid [specific modification Code record](https://github.com/xiaoxian521/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1) - Global coverage of `el-dialog`, `el-drawer`, `el-message-box`, `el-notification` components of `element-plus`The style of the close icon in the upper right corner makes it more vivid [specific modification Code record](https://github.com/pure-admin/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1)
- The packaging output information is compatible with different packaging output paths - The packaging output information is compatible with different packaging output paths
- Optimize some animations - Optimize some animations
@ -121,7 +121,7 @@
### 🍏 Perf ### 🍏 Perf
- Great optimization, remove `@pureadmin/components` and use compatible writing, the package size of the platform is reduced by `0.4` MB before compression is not enabled, and the resource of `2.3` MB is reduced for the first screen request, which is for the [lite version ](https://github.com/xiaoxian521/pure-admin-thin) is a very big optimization, the streamlined version has synchronized code - Great optimization, remove `@pureadmin/components` and use compatible writing, the package size of the platform is reduced by `0.4` MB before compression is not enabled, and the resource of `2.3` MB is reduced for the first screen request, which is for the [lite version ](https://github.com/pure-admin/pure-admin-thin) is a very big optimization, the streamlined version has synchronized code
# 3.8.0 (2022-11-26) # 3.8.0 (2022-11-26)
@ -159,7 +159,7 @@
### 🎫 Feat ### 🎫 Feat
- Add front-end single sign-on, test address https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin - Add front-end single sign-on, test address https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
- Add more examples for [@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table) and `element-plus` [table](https://element-plus.org /zh-CN/component/table.html) example remains the same - Add more examples for [@pureadmin/table](https://github.com/pure-admin/pure-admin-table) and `element-plus` [table](https://element-plus.org /zh-CN/component/table.html) example remains the same
- Rich watermark function page (supports customizing various colors, shadows, text, additional attributes, setting undeletable watermarks and setting watermarks for specified elements) - Rich watermark function page (supports customizing various colors, shadows, text, additional attributes, setting undeletable watermarks and setting watermarks for specified elements)
- Optimize the menu, add `MenuArrowIconNoTransition` global configuration, configure it in `public/serverConfig.json`, for the left menu mode, the menu expansion can be set `MenuArrowIconNoTransition: true` to solve - Optimize the menu, add `MenuArrowIconNoTransition` global configuration, configure it in `public/serverConfig.json`, for the left menu mode, the menu expansion can be set `MenuArrowIconNoTransition: true` to solve
- Replacement form designer component demo - Replacement form designer component demo
@ -259,7 +259,7 @@
### ✔️ refactor ### ✔️ refactor
- Replace `unocss` with `tailwindcss`, add `tailwindcss` [documentation](https://xiaoxian521.github.io/pure-admin-doc/pages/39156f/) - Replace `unocss` with `tailwindcss`, add `tailwindcss` [documentation](https://pure-admin.github.io/pure-admin-doc/pages/39156f/)
### 🐞 Bug fixes ### 🐞 Bug fixes
@ -295,8 +295,8 @@
### 🎫 Feat ### 🎫 Feat
- Secondary encapsulation of `Table` of `element-plus` into [@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table), providing flexible configuration items and integrating into the platform - Secondary encapsulation of `Table` of `element-plus` into [@pureadmin/table](https://github.com/pure-admin/pure-admin-table), providing flexible configuration items and integrating into the platform
- Secondary encapsulation of `Descriptions` of `element-plus` into [@pureadmin/descriptions](https://github.com/xiaoxian521/pure-admin-descriptions), providing flexible configuration items and integrating into the platform - Secondary encapsulation of `Descriptions` of `element-plus` into [@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions), providing flexible configuration items and integrating into the platform
- Centralize most of the tools and hooks of the platform to [@pureadmin/utils](https://pure-admin-utils.netlify.app), and delete the code concentrated in this library to reduce the size of the platform - Centralize most of the tools and hooks of the platform to [@pureadmin/utils](https://pure-admin-utils.netlify.app), and delete the code concentrated in this library to reduce the size of the platform
- Add [unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options) plugin, the page can directly write `defineOptions({name: custom name})` - Add [unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options) plugin, the page can directly write `defineOptions({name: custom name})`
- Add project files, language analysis tool [cloc](https://www.npmjs.com/package/cloc) - Add project files, language analysis tool [cloc](https://www.npmjs.com/package/cloc)
@ -341,7 +341,7 @@
- Integrate `Swiper` plugin - Integrate `Swiper` plugin
- Routing supports passing `component`, representing the component path - Routing supports passing `component`, representing the component path
- Added pre-release packaging mode - Added pre-release packaging mode
- Add [hooks] to close a tag (https://github.com/xiaoxian521/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523) - Add [hooks] to close a tag (https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
### ✔️ refactor ### ✔️ refactor
@ -353,7 +353,7 @@
- Optimized the style of the `split-pane` component for the platform - Optimized the style of the `split-pane` component for the platform
- Optimize internationalization, no longer pass the `i18n` field in the route, the platform automatically reads the files in the `locales` folder of the root directory for internationalization matching - Optimize internationalization, no longer pass the `i18n` field in the route, the platform automatically reads the files in the `locales` folder of the root directory for internationalization matching
- Optimized icon selector - Optimized icon selector
- Optimize `layout` to display user information [commit](https://github.com/xiaoxian521/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa) - Optimize `layout` to display user information [commit](https://github.com/pure-admin/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa)
### 🐞 Bug fixes ### 🐞 Bug fixes

View File

@ -18,7 +18,7 @@
### 🍏 Perf ### 🍏 Perf
- Update [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) to the latest version, bringing more friendly type hints - Update [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) to the latest version, bringing more friendly type hints
- Optimize [PureTableBar](https://github.com/xiaoxian521/vue-pure-admin/tree/main/src/components/RePureTableBar) component - Optimize [PureTableBar](https://github.com/pure-admin/vue-pure-admin/tree/main/src/components/RePureTableBar) component
- Optimize the business code of the system management page to bring better code reference - Optimize the business code of the system management page to bring better code reference
# 3.9.5 (2022-12-13) # 3.9.5 (2022-12-13)
@ -46,7 +46,7 @@
### ✔️ refactor ### ✔️ refactor
- Completely removed `vxe-table`, after removal, the overall package size of the full version is reduced by `1.82MB`, and the initial startup time is basically the same as the lite version 🐮 - Completely removed `vxe-table`, after removal, the overall package size of the full version is reduced by `1.82MB`, and the initial startup time is basically the same as the lite version 🐮
[Click here to see Why Removed? How to integrate it yourself?](https://xiaoxian521.github.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90) [Click here to see Why Removed? How to integrate it yourself?](https://pure-admin.github.io/pure-admin-doc/pages/FAQ/#%E5%B9%B3%E5%8F%B0%E5%9C%A8-v3-9-4-%E7%89%88%E6%9C%AC%E5%AE%8C%E5%85%A8%E7%A7%BB%E9%99%A4%E4%BA%86-vxe-table-%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A7%BB%E9%99%A4-%E5%A6%82%E4%BD%95%E8%87%AA%E8%A1%8C%E9%9B%86%E6%88%90)
### 🎫 Feat ### 🎫 Feat
@ -73,7 +73,7 @@
### 🍏 Perf ### 🍏 Perf
- Global coverage of `el-dialog`, `el-drawer`, `el-message-box`, `el-notification` components of `element-plus`The style of the close icon in the upper right corner makes it more vivid [specific modification Code record](https://github.com/xiaoxian521/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1) - Global coverage of `el-dialog`, `el-drawer`, `el-message-box`, `el-notification` components of `element-plus`The style of the close icon in the upper right corner makes it more vivid [specific modification Code record](https://github.com/pure-admin/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1)
- The packaging output information is compatible with different packaging output paths - The packaging output information is compatible with different packaging output paths
- Optimize some animations - Optimize some animations
@ -121,7 +121,7 @@
### 🍏 Perf ### 🍏 Perf
- Great optimization, remove `@pureadmin/components` and use compatible writing, the package size of the platform is reduced by `0.4` MB before compression is not enabled, and the resource of `2.3` MB is reduced for the first screen request, which is for the [lite version ](https://github.com/xiaoxian521/pure-admin-thin) is a very big optimization, the streamlined version has synchronized code - Great optimization, remove `@pureadmin/components` and use compatible writing, the package size of the platform is reduced by `0.4` MB before compression is not enabled, and the resource of `2.3` MB is reduced for the first screen request, which is for the [lite version ](https://github.com/pure-admin/pure-admin-thin) is a very big optimization, the streamlined version has synchronized code
# 3.8.0 (2022-11-26) # 3.8.0 (2022-11-26)
@ -159,7 +159,7 @@
### 🎫 Feat ### 🎫 Feat
- Add front-end single sign-on, test address https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin - Add front-end single sign-on, test address https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
- Add more examples for [@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table) and `element-plus` [table](https://element-plus.org /zh-CN/component/table.html) example remains the same - Add more examples for [@pureadmin/table](https://github.com/pure-admin/pure-admin-table) and `element-plus` [table](https://element-plus.org /zh-CN/component/table.html) example remains the same
- Rich watermark function page (supports customizing various colors, shadows, text, additional attributes, setting undeletable watermarks and setting watermarks for specified elements) - Rich watermark function page (supports customizing various colors, shadows, text, additional attributes, setting undeletable watermarks and setting watermarks for specified elements)
- Optimize the menu, add `MenuArrowIconNoTransition` global configuration, configure it in `public/serverConfig.json`, for the left menu mode, the menu expansion can be set `MenuArrowIconNoTransition: true` to solve - Optimize the menu, add `MenuArrowIconNoTransition` global configuration, configure it in `public/serverConfig.json`, for the left menu mode, the menu expansion can be set `MenuArrowIconNoTransition: true` to solve
- Replacement form designer component demo - Replacement form designer component demo
@ -259,7 +259,7 @@
### ✔️ refactor ### ✔️ refactor
- Replace `unocss` with `tailwindcss`, add `tailwindcss` [documentation](https://xiaoxian521.github.io/pure-admin-doc/pages/39156f/) - Replace `unocss` with `tailwindcss`, add `tailwindcss` [documentation](https://pure-admin.github.io/pure-admin-doc/pages/39156f/)
### 🐞 Bug fixes ### 🐞 Bug fixes
@ -295,8 +295,8 @@
### 🎫 Feat ### 🎫 Feat
- Secondary encapsulation of `Table` of `element-plus` into [@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table), providing flexible configuration items and integrating into the platform - Secondary encapsulation of `Table` of `element-plus` into [@pureadmin/table](https://github.com/pure-admin/pure-admin-table), providing flexible configuration items and integrating into the platform
- Secondary encapsulation of `Descriptions` of `element-plus` into [@pureadmin/descriptions](https://github.com/xiaoxian521/pure-admin-descriptions), providing flexible configuration items and integrating into the platform - Secondary encapsulation of `Descriptions` of `element-plus` into [@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions), providing flexible configuration items and integrating into the platform
- Centralize most of the tools and hooks of the platform to [@pureadmin/utils](https://pure-admin-utils.netlify.app), and delete the code concentrated in this library to reduce the size of the platform - Centralize most of the tools and hooks of the platform to [@pureadmin/utils](https://pure-admin-utils.netlify.app), and delete the code concentrated in this library to reduce the size of the platform
- Add [unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options) plugin, the page can directly write `defineOptions({name: custom name})` - Add [unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options) plugin, the page can directly write `defineOptions({name: custom name})`
- Add project files, language analysis tool [cloc](https://www.npmjs.com/package/cloc) - Add project files, language analysis tool [cloc](https://www.npmjs.com/package/cloc)
@ -341,7 +341,7 @@
- Integrate `Swiper` plugin - Integrate `Swiper` plugin
- Routing supports passing `component`, representing the component path - Routing supports passing `component`, representing the component path
- Added pre-release packaging mode - Added pre-release packaging mode
- Add [hooks] to close a tag (https://github.com/xiaoxian521/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523) - Add [hooks] to close a tag (https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
### ✔️ refactor ### ✔️ refactor
@ -353,7 +353,7 @@
- Optimized the style of the `split-pane` component for the platform - Optimized the style of the `split-pane` component for the platform
- Optimize internationalization, no longer pass the `i18n` field in the route, the platform automatically reads the files in the `locales` folder of the root directory for internationalization matching - Optimize internationalization, no longer pass the `i18n` field in the route, the platform automatically reads the files in the `locales` folder of the root directory for internationalization matching
- Optimized icon selector - Optimized icon selector
- Optimize `layout` to display user information [commit](https://github.com/xiaoxian521/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa) - Optimize `layout` to display user information [commit](https://github.com/pure-admin/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa)
### 🐞 Bug fixes ### 🐞 Bug fixes

View File

@ -18,7 +18,7 @@
### 🍏 Perf ### 🍏 Perf
- 更新 [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) 至最新版,带来更友好的类型提示 - 更新 [@pureadmin/theme](https://github.com/pure-admin/pure-admin-theme) 至最新版,带来更友好的类型提示
- 优化 [PureTableBar](https://github.com/xiaoxian521/vue-pure-admin/tree/main/src/components/RePureTableBar) 组件 - 优化 [PureTableBar](https://github.com/pure-admin/vue-pure-admin/tree/main/src/components/RePureTableBar) 组件
- 优化系统管理页面业务代码,带来更好的代码参考 - 优化系统管理页面业务代码,带来更好的代码参考
# 3.9.5 (2022-12-13) # 3.9.5 (2022-12-13)
@ -73,7 +73,7 @@
### 🍏 Perf ### 🍏 Perf
- 全局覆盖 `element-plus``el-dialog``el-drawer``el-message-box``el-notification` 组件右上角关闭图标的样式,使其表现更鲜明 [具体代码修改记录](https://github.com/xiaoxian521/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1) - 全局覆盖 `element-plus``el-dialog``el-drawer``el-message-box``el-notification` 组件右上角关闭图标的样式,使其表现更鲜明 [具体代码修改记录](https://github.com/pure-admin/vue-pure-admin/commit/c80818d792276666aaea4b18413a0f08777f2ed1)
- 打包输出信息兼容不同打包输出路径 - 打包输出信息兼容不同打包输出路径
- 优化一些动画 - 优化一些动画
@ -121,7 +121,7 @@
### 🍏 Perf ### 🍏 Perf
- 大优化,移除 `@pureadmin/components` 并采用兼容写法,平台打包大小在未启用压缩前对比优化前减少 `0.4` MB , 首屏请求减少 `2.3` MB 的资源,这对于 [精简版](https://github.com/xiaoxian521/pure-admin-thin) 来说是非常大的优化,精简版已经同步代码 - 大优化,移除 `@pureadmin/components` 并采用兼容写法,平台打包大小在未启用压缩前对比优化前减少 `0.4` MB , 首屏请求减少 `2.3` MB 的资源,这对于 [精简版](https://github.com/pure-admin/pure-admin-thin) 来说是非常大的优化,精简版已经同步代码
# 3.8.0 (2022-11-26) # 3.8.0 (2022-11-26)
@ -159,7 +159,7 @@
### 🎫 Feat ### 🎫 Feat
- 添加前端单点登录,测试地址 https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin - 添加前端单点登录,测试地址 https://yiming_chang.gitee.io/vue-pure-admin/#/pure-table/index?username=sso&roles=admin&accessToken=eyJhbGciOiJIUzUxMiJ9.admin
- 为 [@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table) 添加更多的示例和 `element-plus` 的 [table](https://element-plus.org/zh-CN/component/table.html) 示例保持一致 - 为 [@pureadmin/table](https://github.com/pure-admin/pure-admin-table) 添加更多的示例和 `element-plus` 的 [table](https://element-plus.org/zh-CN/component/table.html) 示例保持一致
- 丰富水印功能页面(支持自定义各种颜色、阴影、文字、额外属性、设置不可删除水印以及给指定元素设置水印) - 丰富水印功能页面(支持自定义各种颜色、阴影、文字、额外属性、设置不可删除水印以及给指定元素设置水印)
- 优化菜单,添加 `MenuArrowIconNoTransition` 全局配置,在 `public/serverConfig.json` 中配置即可,对于出现左侧菜单模式,菜单展开卡顿的可设置 `MenuArrowIconNoTransition: true` 即可解决 - 优化菜单,添加 `MenuArrowIconNoTransition` 全局配置,在 `public/serverConfig.json` 中配置即可,对于出现左侧菜单模式,菜单展开卡顿的可设置 `MenuArrowIconNoTransition: true` 即可解决
- 更换表单设计器组件演示 - 更换表单设计器组件演示
@ -295,8 +295,8 @@
### 🎫 Feat ### 🎫 Feat
- 将 `element-plus``Table` 二次封装到[@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table),提供灵活的配置项并集成到平台里 - 将 `element-plus``Table` 二次封装到[@pureadmin/table](https://github.com/pure-admin/pure-admin-table),提供灵活的配置项并集成到平台里
- 将 `element-plus``Descriptions` 二次封装到[@pureadmin/descriptions](https://github.com/xiaoxian521/pure-admin-descriptions),提供灵活的配置项并集成到平台里 - 将 `element-plus``Descriptions` 二次封装到[@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions),提供灵活的配置项并集成到平台里
- 将平台的大部分工具以及 `hooks` 都集中到[@pureadmin/utils](https://pure-admin-utils.netlify.app),并删除集中到这个库里的代码,减少平台体积 - 将平台的大部分工具以及 `hooks` 都集中到[@pureadmin/utils](https://pure-admin-utils.netlify.app),并删除集中到这个库里的代码,减少平台体积
- 添加[unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options)插件,页面可直接写 `defineOptions({name: 自定义名称})` - 添加[unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options)插件,页面可直接写 `defineOptions({name: 自定义名称})`
- 添加项目文件、语言分析工具 [cloc](https://www.npmjs.com/package/cloc) - 添加项目文件、语言分析工具 [cloc](https://www.npmjs.com/package/cloc)
@ -341,7 +341,7 @@
- 集成`Swiper`插件 - 集成`Swiper`插件
- 路由支持传`component`,代表组件路径 - 路由支持传`component`,代表组件路径
- 添加预发布打包模式 - 添加预发布打包模式
- 添加关闭某个标签的[hooks](https://github.com/xiaoxian521/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523) - 添加关闭某个标签的[hooks](https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
### ✔️ refactor ### ✔️ refactor
@ -353,7 +353,7 @@
- 优化平台的`split-pane`组件样式 - 优化平台的`split-pane`组件样式
- 优化国际化,路由不再传`i18n`字段,平台自动读取根目录`locales`文件夹下文件进行国际化匹配 - 优化国际化,路由不再传`i18n`字段,平台自动读取根目录`locales`文件夹下文件进行国际化匹配
- 优化图标选择器 - 优化图标选择器
- 优化`layout`显示用户信息[commit](https://github.com/xiaoxian521/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa) - 优化`layout`显示用户信息[commit](https://github.com/pure-admin/vue-pure-admin/commit/56f9dc85e7fbe0637605c43577c794de9f8968aa)
### 🐞 Bug fixes ### 🐞 Bug fixes

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2022 啝裳 Copyright (c) 2023 啝裳
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,8 +1,8 @@
<h1>vue-pure-admin</h1> <h1>vue-pure-admin</h1>
![GitHub license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin?style=flat) ![GitHub license](https://img.shields.io/github/license/pure-admin/vue-pure-admin?style=flat)
![GitHub stars](https://img.shields.io/github/stars/xiaoxian521/vue-pure-admin?color=fa6470&style=flat) ![GitHub stars](https://img.shields.io/github/stars/pure-admin/vue-pure-admin?color=fa6470&style=flat)
![GitHub forks](https://img.shields.io/github/forks/xiaoxian521/vue-pure-admin?style=flat) ![GitHub forks](https://img.shields.io/github/forks/pure-admin/vue-pure-admin?style=flat)
**English** | [中文](./README.md) **English** | [中文](./README.md)
@ -12,10 +12,10 @@
## Thin version (offering non-internationalized and internationalized versions) ## Thin version (offering non-internationalized and internationalized versions)
The simplified version is based on the shelf extracted from [vue-pure-admin](https://github.com/xiaoxian521/vue-pure-admin), which contains main functions and is more suitable for actual project development. The packaged size is introduced globally [element-plus](https://element-plus.org) is still below `2.3MB`, and the full version of the code will be permanently synchronized. After enabling `brotli` compression and `cdn` to replace the local library mode, the package size is less than `350kb` The simplified version is based on the shelf extracted from [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin), which contains main functions and is more suitable for actual project development. The packaged size is introduced globally [element-plus](https://element-plus.org) is still below `2.3MB`, and the full version of the code will be permanently synchronized. After enabling `brotli` compression and `cdn` to replace the local library mode, the package size is less than `350kb`
- [Click me to view the non-internationalized version](https://github.com/xiaoxian521/pure-admin-thin) - [Click me to view the non-internationalized version](https://github.com/pure-admin/pure-admin-thin)
- [Click me to view Internationalization version](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n) - [Click me to view Internationalization version](https://github.com/pure-admin/pure-admin-thin/tree/i18n)
## Supporting Video ## Supporting Video
@ -25,20 +25,20 @@ The simplified version is based on the shelf extracted from [vue-pure-admin](htt
## Docs (support `PWA` fast, offline access) ## Docs (support `PWA` fast, offline access)
- [Click me to view the domestic documentation site](https://yiming_chang.gitee.io/pure-admin-doc) - [Click me to view the domestic documentation site](https://yiming_chang.gitee.io/pure-admin-doc)
- [Click me to view foreign document site](https://xiaoxian521.github.io/pure-admin-doc) - [Click me to view foreign document site](https://pure-admin.github.io/pure-admin-doc)
## Tauri ## Tauri
- [Click Watch Tauri](https://github.com/xiaoxian521/tauri-pure-admin) - [Click Watch Tauri](https://github.com/pure-admin/tauri-pure-admin)
## Electron ## Electron
- [Click Watch Electron](https://github.com/xiaoxian521/electron-pure-admin) - [Click Watch Electron](https://github.com/pure-admin/electron-pure-admin)
## Preview ## Preview
- [Click me to view the domestic preview station](https://yiming_chang.gitee.io/vue-pure-admin) - [Click me to view the domestic preview station](https://yiming_chang.gitee.io/vue-pure-admin)
- [Click me to view foreign preview site](https://xiaoxian521.github.io/vue-pure-admin) - [Click me to view foreign preview site](https://pure-admin.github.io/vue-pure-admin)
- PC - PC
<p align="center"> <p align="center">
@ -59,14 +59,14 @@ The simplified version is based on the shelf extracted from [vue-pure-admin](htt
Open the project in Gitpod (free online dev environment for GitHub) and start coding immediately. Open the project in Gitpod (free online dev environment for GitHub) and start coding immediately.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/xiaoxian521/vue-pure-admin) [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/pure-admin/vue-pure-admin)
## Install and use ## Install and use
- Get the project code - Get the project code
```bash ```bash
git clone https://github.com/xiaoxian521/vue-pure-admin.git git clone https://github.com/pure-admin/vue-pure-admin.git
or or
git clone https://gitee.com/yiming_chang/vue-pure-admin.git git clone https://gitee.com/yiming_chang/vue-pure-admin.git
``` ```
@ -98,7 +98,7 @@ pnpm build
## How to contribute ## How to contribute
You are very welcome to join[Raise an issue](https://github.com/xiaoxian521/vue-pure-admin/issues/new/choose) Or submit a Pull Request You are very welcome to join[Raise an issue](https://github.com/pure-admin/vue-pure-admin/issues/new/choose) Or submit a Pull Request
**Pull Request:** **Pull Request:**
@ -150,7 +150,7 @@ If you think this project is helpful to you, you can help the author buy a glass
In principle, no fees and copyrights are charged, and you can use it with confidence, but if you need secondary open source, please contact the author for permission! In principle, no fees and copyrights are charged, and you can use it with confidence, but if you need secondary open source, please contact the author for permission!
[MIT © xiaoxian521-2020](./LICENSE) [MIT © xiaoxian521-2023](./LICENSE)
## Backers ## Backers
@ -166,16 +166,16 @@ Thank you very much for your support, I believe the project will get better and
Thanks to all the people who contribute :heart: Thanks to all the people who contribute :heart:
<a href="https://github.com/xiaoxian521/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=xiaoxian521/vue-pure-admin" /></a> <a href="https://github.com/pure-admin/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=pure-admin/vue-pure-admin" /></a>
## `Star` ## `Star`
Many thanks to the kind individuals who leave a star. Your support is much appreciated :heart: Many thanks to the kind individuals who leave a star. Your support is much appreciated :heart:
[![Stargazers for vue-pure-admin](https://reporoster.com/stars/xiaoxian521/vue-pure-admin)](https://github.com/xiaoxian521/vue-pure-admin/stargazers) [![Stargazers for vue-pure-admin](https://reporoster.com/stars/pure-admin/vue-pure-admin)](https://github.com/pure-admin/vue-pure-admin/stargazers)
## `Fork` ## `Fork`
It's so cool that you study hard :heart: It's so cool that you study hard :heart:
[![Forkers repo roster for vue-pure-admin](https://reporoster.com/forks/xiaoxian521/vue-pure-admin)](https://github.com/xiaoxian521/vue-pure-admin/network/members) [![Forkers repo roster for vue-pure-admin](https://reporoster.com/forks/pure-admin/vue-pure-admin)](https://github.com/pure-admin/vue-pure-admin/network/members)

View File

@ -1,8 +1,8 @@
<h1>vue-pure-admin</h1> <h1>vue-pure-admin</h1>
![GitHub license](https://img.shields.io/github/license/xiaoxian521/vue-pure-admin?style=flat) ![GitHub license](https://img.shields.io/github/license/pure-admin/vue-pure-admin?style=flat)
![GitHub stars](https://img.shields.io/github/stars/xiaoxian521/vue-pure-admin?color=fa6470&style=flat) ![GitHub stars](https://img.shields.io/github/stars/pure-admin/vue-pure-admin?color=fa6470&style=flat)
![GitHub forks](https://img.shields.io/github/forks/xiaoxian521/vue-pure-admin?style=flat) ![GitHub forks](https://img.shields.io/github/forks/pure-admin/vue-pure-admin?style=flat)
**中文** | [English](./README.en-US.md) **中文** | [English](./README.en-US.md)
@ -12,10 +12,10 @@
## 精简版(实际项目开发请用精简版,提供 `非国际化``国际化` 两个版本选择) ## 精简版(实际项目开发请用精简版,提供 `非国际化``国际化` 两个版本选择)
精简版是基于 [vue-pure-admin](https://github.com/xiaoxian521/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小在全局引入 [element-plus](https://element-plus.org) 的情况下仍然低于 `2.3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `350kb` 精简版是基于 [vue-pure-admin](https://github.com/pure-admin/vue-pure-admin) 提炼出的架子,包含主体功能,更适合实际项目开发,打包后的大小在全局引入 [element-plus](https://element-plus.org) 的情况下仍然低于 `2.3MB`,并且会永久同步完整版的代码。开启 `brotli` 压缩和 `cdn` 替换本地库模式后,打包大小低于 `350kb`
- [点我查看非国际化精简版](https://github.com/xiaoxian521/pure-admin-thin) - [点我查看非国际化精简版](https://github.com/pure-admin/pure-admin-thin)
- [点我查看国际化精简版](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n) - [点我查看国际化精简版](https://github.com/pure-admin/pure-admin-thin/tree/i18n)
## 配套视频 ## 配套视频
@ -25,20 +25,20 @@
## 配套保姆级文档(支持 `PWA` 快速、离线访问) ## 配套保姆级文档(支持 `PWA` 快速、离线访问)
- [点我查看国内文档站](https://yiming_chang.gitee.io/pure-admin-doc) - [点我查看国内文档站](https://yiming_chang.gitee.io/pure-admin-doc)
- [点我查看国外文档站](https://xiaoxian521.github.io/pure-admin-doc) - [点我查看国外文档站](https://pure-admin.github.io/pure-admin-doc)
## `Tauri` ## `Tauri`
- [点我查看 Tauri 版](https://github.com/xiaoxian521/tauri-pure-admin) - [点我查看 Tauri 版](https://github.com/pure-admin/tauri-pure-admin)
## `Electron` ## `Electron`
- [点我查看 Electron 版](https://github.com/xiaoxian521/electron-pure-admin) - [点我查看 Electron 版](https://github.com/pure-admin/electron-pure-admin)
## 预览 ## 预览
- [点我查看国内预览站](https://yiming_chang.gitee.io/vue-pure-admin) - [点我查看国内预览站](https://yiming_chang.gitee.io/vue-pure-admin)
- [点我查看国外预览站](https://xiaoxian521.github.io/vue-pure-admin) - [点我查看国外预览站](https://pure-admin.github.io/vue-pure-admin)
- PC 端 - PC 端
<p align="center"> <p align="center">
@ -59,14 +59,14 @@
在 Gitpod适用于 GitHub 的免费在线开发环境)中打开项目,并立即开始编码. 在 Gitpod适用于 GitHub 的免费在线开发环境)中打开项目,并立即开始编码.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/xiaoxian521/vue-pure-admin) [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/pure-admin/vue-pure-admin)
## 安装使用 ## 安装使用
- 获取项目代码 - 获取项目代码
```bash ```bash
git clone https://github.com/xiaoxian521/vue-pure-admin.git git clone https://github.com/pure-admin/vue-pure-admin.git
or or
git clone https://gitee.com/yiming_chang/vue-pure-admin.git git clone https://gitee.com/yiming_chang/vue-pure-admin.git
``` ```
@ -98,7 +98,7 @@ pnpm build
## 如何贡献 ## 如何贡献
非常欢迎您的加入![提一个 Issue](https://github.com/xiaoxian521/vue-pure-admin/issues/new/choose) 或者提交一个 `Pull Request` 非常欢迎您的加入![提一个 Issue](https://github.com/pure-admin/vue-pure-admin/issues/new/choose) 或者提交一个 `Pull Request`
**Pull Request:** **Pull Request:**
@ -154,7 +154,7 @@ pnpm build
原则上不收取任何费用及版权,可以放心使用,不过如需二次开源(比如用此平台二次开发并开源)请联系作者获取许可! 原则上不收取任何费用及版权,可以放心使用,不过如需二次开源(比如用此平台二次开发并开源)请联系作者获取许可!
[MIT © xiaoxian521-2020](./LICENSE) [MIT © xiaoxian521-2023](./LICENSE)
## 支持者 ## 支持者
@ -170,16 +170,16 @@ pnpm build
感谢所有做出贡献的人 :heart: 感谢所有做出贡献的人 :heart:
<a href="https://github.com/xiaoxian521/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=xiaoxian521/vue-pure-admin" /></a> <a href="https://github.com/pure-admin/vue-pure-admin/graphs/contributors"><img src="https://contrib.rocks/image?repo=pure-admin/vue-pure-admin" /></a>
## `Star` ## `Star`
非常感谢留下星星的好心人,感谢您的支持 :heart: 非常感谢留下星星的好心人,感谢您的支持 :heart:
[![Stargazers for vue-pure-admin](https://reporoster.com/stars/xiaoxian521/vue-pure-admin)](https://github.com/xiaoxian521/vue-pure-admin/stargazers) [![Stargazers for vue-pure-admin](https://reporoster.com/stars/pure-admin/vue-pure-admin)](https://github.com/pure-admin/vue-pure-admin/stargazers)
## `Fork` ## `Fork`
瞧,那些 `小哥哥``小姐姐` 认真 `学习` 的样子真滴是 `哎呦不错哦` :heart: 瞧,那些 `小哥哥``小姐姐` 认真 `学习` 的样子真滴是 `哎呦不错哦` :heart:
[![Forkers repo roster for vue-pure-admin](https://reporoster.com/forks/xiaoxian521/vue-pure-admin)](https://github.com/xiaoxian521/vue-pure-admin/network/members) [![Forkers repo roster for vue-pure-admin](https://reporoster.com/forks/pure-admin/vue-pure-admin)](https://github.com/pure-admin/vue-pure-admin/network/members)

View File

@ -22,7 +22,7 @@ export function viteBuildInfo(): Plugin {
green( green(
`👏欢迎使用${blue( `👏欢迎使用${blue(
"[vue-pure-admin]" "[vue-pure-admin]"
)}star哦💖 https://github.com/xiaoxian521/vue-pure-admin` )}star哦💖 https://github.com/pure-admin/vue-pure-admin`
) )
) )
); );

View File

@ -159,7 +159,7 @@ const frameRouter = {
const tabsRouter = { const tabsRouter = {
path: "/tabs", path: "/tabs",
meta: { meta: {
icon: "IF-team-icontabs", icon: "IF-pure-iconfont-tabs",
title: "menus.hstabs", title: "menus.hstabs",
rank: tabs rank: tabs
}, },

View File

@ -33,9 +33,9 @@
"@logicflow/core": "^1.1.30", "@logicflow/core": "^1.1.30",
"@logicflow/extension": "^1.1.30", "@logicflow/extension": "^1.1.30",
"@pureadmin/descriptions": "^1.1.0", "@pureadmin/descriptions": "^1.1.0",
"@pureadmin/table": "^1.9.0", "@pureadmin/table": "^2.0.0",
"@pureadmin/utils": "^1.8.5", "@pureadmin/utils": "^1.8.5",
"@vueuse/core": "^9.10.0", "@vueuse/core": "^9.12.0",
"@vueuse/motion": "2.0.0-beta.12", "@vueuse/motion": "2.0.0-beta.12",
"@wangeditor/editor": "^5.1.21", "@wangeditor/editor": "^5.1.21",
"@wangeditor/editor-for-vue": "^5.1.12", "@wangeditor/editor-for-vue": "^5.1.12",
@ -46,7 +46,7 @@
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"echarts": "^5.4.1", "echarts": "^5.4.1",
"el-table-infinite-scroll": "^3.0.1", "el-table-infinite-scroll": "^3.0.1",
"element-plus": "^2.2.28", "element-plus": "2.2.28",
"element-resize-detector": "^1.2.4", "element-resize-detector": "^1.2.4",
"intro.js": "^6.0.0", "intro.js": "^6.0.0",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
@ -56,12 +56,12 @@
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"path": "^0.12.7", "path": "^0.12.7",
"pinia": "^2.0.28", "pinia": "^2.0.30",
"qrcode": "^1.5.1", "qrcode": "^1.5.1",
"qs": "^6.11.0", "qs": "^6.11.0",
"responsive-storage": "^2.1.0", "responsive-storage": "^2.1.0",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"swiper": "^8.4.5", "swiper": "^9.0.3",
"typeit": "^8.7.1", "typeit": "^8.7.1",
"v-contextmenu": "3.0.0", "v-contextmenu": "3.0.0",
"vue": "^3.2.45", "vue": "^3.2.45",
@ -129,7 +129,7 @@
"terser": "^5.16.1", "terser": "^5.16.1",
"typescript": "^4.9.4", "typescript": "^4.9.4",
"unplugin-vue-define-options": "^1.0.0", "unplugin-vue-define-options": "^1.0.0",
"vite": "^4.0.4", "vite": "^4.1.1",
"vite-plugin-cdn-import": "^0.3.5", "vite-plugin-cdn-import": "^0.3.5",
"vite-plugin-compression": "^0.5.1", "vite-plugin-compression": "^0.5.1",
"vite-plugin-mock": "^2.9.6", "vite-plugin-mock": "^2.9.6",
@ -146,7 +146,7 @@
] ]
} }
}, },
"repository": "git@github.com:xiaoxian521/vue-pure-admin.git", "repository": "git@github.com:pure-admin/vue-pure-admin.git",
"author": "xiaoxian521", "author": "xiaoxian521",
"license": "MIT" "license": "MIT"
} }

913
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 2208059 */ font-family: "iconfont"; /* Project id 2208059 */
src: url("iconfont.woff2?t=1638023560828") format("woff2"), src: url("iconfont.woff2?t=1671895108120") format("woff2"),
url("iconfont.woff?t=1638023560828") format("woff"), url("iconfont.woff?t=1671895108120") format("woff"),
url("iconfont.ttf?t=1638023560828") format("truetype"); url("iconfont.ttf?t=1671895108120") format("truetype");
} }
.iconfont { .iconfont {
@ -13,26 +13,14 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.team-icontabs::before { .pure-iconfont-tabs:before {
content: "\e63e"; content: "\e63e";
} }
.team-iconlogo::before { .pure-iconfont-logo:before {
content: "\e620"; content: "\e620";
} }
.team-iconxinpin::before { .pure-iconfont-new:before {
content: "\e614";
}
.team-iconxinpinrenqiwang::before {
content: "\e615"; content: "\e615";
} }
.team-iconexit-fullscreen::before {
content: "\e62a";
}
.team-iconfullscreen::before {
content: "\e62b";
}

File diff suppressed because one or more lines are too long

View File

@ -2,50 +2,29 @@
"id": "2208059", "id": "2208059",
"name": "pure-admin", "name": "pure-admin",
"font_family": "iconfont", "font_family": "iconfont",
"css_prefix_text": "team-icon", "css_prefix_text": "pure-iconfont-",
"description": "pure-admin", "description": "pure-admin-iconfont",
"glyphs": [ "glyphs": [
{ {
"icon_id": "20594647", "icon_id": "20594647",
"name": "标签页", "name": "Tabs",
"font_class": "tabs", "font_class": "tabs",
"unicode": "e63e", "unicode": "e63e",
"unicode_decimal": 58942 "unicode_decimal": 58942
}, },
{ {
"icon_id": "22129506", "icon_id": "22129506",
"name": "水能", "name": "PureLogo",
"font_class": "logo", "font_class": "logo",
"unicode": "e620", "unicode": "e620",
"unicode_decimal": 58912 "unicode_decimal": 58912
}, },
{
"icon_id": "7795613",
"name": "新品",
"font_class": "xinpin",
"unicode": "e614",
"unicode_decimal": 58900
},
{ {
"icon_id": "7795615", "icon_id": "7795615",
"name": "新品人气王", "name": "New",
"font_class": "xinpinrenqiwang", "font_class": "new",
"unicode": "e615", "unicode": "e615",
"unicode_decimal": 58901 "unicode_decimal": 58901
},
{
"icon_id": "5698509",
"name": "全屏缩小",
"font_class": "exit-fullscreen",
"unicode": "e62a",
"unicode_decimal": 58922
},
{
"icon_id": "5698510",
"name": "全屏显示",
"font_class": "fullscreen",
"unicode": "e62b",
"unicode_decimal": 58923
} }
] ]
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
import pureTableBar from "./src/bar"; import pureTableBar from "./src/bar";
import { withInstall } from "@pureadmin/utils"; import { withInstall } from "@pureadmin/utils";
/** 配合 `@pureadmin/table` 实现快速便捷的表格操作 https://github.com/xiaoxian521/pure-admin-table */ /** 配合 `@pureadmin/table` 实现快速便捷的表格操作 https://github.com/pure-admin/pure-admin-table */
export const PureTableBar = withInstall(pureTableBar); export const PureTableBar = withInstall(pureTableBar);

View File

@ -110,7 +110,9 @@ export default defineComponent({
<div class="flex justify-between w-full h-[60px] p-4"> <div class="flex justify-between w-full h-[60px] p-4">
<p class="font-bold truncate">{props.title}</p> <p class="font-bold truncate">{props.title}</p>
<div class="flex items-center justify-around"> <div class="flex items-center justify-around">
<div class="flex mr-4">{slots?.buttons()}</div> {slots?.buttons ? (
<div class="flex mr-4">{slots.buttons()}</div>
) : null}
{props.tableRef?.size ? ( {props.tableRef?.size ? (
<> <>
<el-tooltip <el-tooltip

View File

@ -1,21 +0,0 @@
<script setup lang="ts">
import { useI18n } from "vue-i18n";
import { useFullscreen } from "@vueuse/core";
const { t } = useI18n();
const { isFullscreen, toggle } = useFullscreen();
</script>
<template>
<div
class="screen-full w-[36px] h-[48px] flex-ac cursor-pointer navbar-bg-hover"
@click="toggle"
>
<FontIcon
:title="
isFullscreen ? t('buttons.hsexitfullscreen') : t('buttons.hsfullscreen')
"
:icon="isFullscreen ? 'team-iconexit-fullscreen' : 'team-iconfullscreen'"
/>
</div>
</template>

View File

@ -3,7 +3,6 @@ import { useRouter } from "vue-router";
import { cloneDeep } from "@pureadmin/utils"; import { cloneDeep } from "@pureadmin/utils";
import SearchResult from "./SearchResult.vue"; import SearchResult from "./SearchResult.vue";
import SearchFooter from "./SearchFooter.vue"; import SearchFooter from "./SearchFooter.vue";
import { deleteChildren } from "@/utils/tree";
import { useNav } from "@/layout/hooks/useNav"; import { useNav } from "@/layout/hooks/useNav";
import { transformI18n } from "@/plugins/i18n"; import { transformI18n } from "@/plugins/i18n";
import { useDebounceFn, onKeyStroke } from "@vueuse/core"; import { useDebounceFn, onKeyStroke } from "@vueuse/core";
@ -33,7 +32,7 @@ const handleSearch = useDebounceFn(search, 300);
/** 菜单树形结构 */ /** 菜单树形结构 */
const menusData = computed(() => { const menusData = computed(() => {
return deleteChildren(cloneDeep(usePermissionStoreHook().wholeMenus)); return cloneDeep(usePermissionStoreHook().wholeMenus);
}); });
const show = computed({ const show = computed({

View File

@ -46,7 +46,11 @@ watch(
class="horizontal-header" class="horizontal-header"
> >
<div class="horizontal-header-left" @click="backHome"> <div class="horizontal-header-left" @click="backHome">
<FontIcon icon="team-iconlogo" svg style="width: 35px; height: 35px" /> <FontIcon
icon="pure-iconfont-logo"
svg
style="width: 35px; height: 35px"
/>
<h4>{{ title }}</h4> <h4>{{ title }}</h4>
</div> </div>
<el-menu <el-menu

View File

@ -24,7 +24,7 @@ const iconClass = computed(() => {
"align-middle", "align-middle",
"text-primary", "text-primary",
"cursor-pointer", "cursor-pointer",
"duration-[360ms]", "duration-[100ms]",
"hover:text-primary", "hover:text-primary",
"dark:hover:!text-white" "dark:hover:!text-white"
]; ];

View File

@ -18,7 +18,11 @@ const { title } = useNav();
class="sidebar-logo-link" class="sidebar-logo-link"
to="/" to="/"
> >
<FontIcon icon="team-iconlogo" svg style="width: 35px; height: 35px" /> <FontIcon
icon="pure-iconfont-logo"
svg
style="width: 35px; height: 35px"
/>
<span class="sidebar-title">{{ title }}</span> <span class="sidebar-title">{{ title }}</span>
</router-link> </router-link>
<router-link <router-link
@ -28,7 +32,11 @@ const { title } = useNav();
class="sidebar-logo-link" class="sidebar-logo-link"
to="/" to="/"
> >
<FontIcon icon="team-iconlogo" svg style="width: 35px; height: 35px" /> <FontIcon
icon="pure-iconfont-logo"
svg
style="width: 35px; height: 35px"
/>
<span class="sidebar-title">{{ title }}</span> <span class="sidebar-title">{{ title }}</span>
</router-link> </router-link>
</transition> </transition>

View File

@ -28,17 +28,11 @@ const props = defineProps({
} }
}); });
const getExtraIconStyle = computed((): CSSProperties => { const getSpanStyle = computed((): CSSProperties => {
if (!isCollapse.value) {
return { return {
position: "absolute", width: "100%",
right: "10px" textAlign: "center"
}; };
} else {
return {
position: "static"
};
}
}); });
const getNoDropdownStyle = computed((): CSSProperties => { const getNoDropdownStyle = computed((): CSSProperties => {
@ -48,16 +42,6 @@ const getNoDropdownStyle = computed((): CSSProperties => {
}; };
}); });
const getDivStyle = computed((): CSSProperties => {
return {
width: !isCollapse.value ? "" : "100%",
display: "flex",
alignItems: "center",
justifyContent: "space-between",
overflow: "hidden"
};
});
const getMenuTextStyle = computed(() => { const getMenuTextStyle = computed(() => {
return { return {
overflow: "hidden", overflow: "hidden",
@ -66,20 +50,43 @@ const getMenuTextStyle = computed(() => {
}; };
}); });
const getSubTextStyle = computed((): CSSProperties => { const getDivStyle = computed((): CSSProperties => {
return { return {
width: !isCollapse.value ? "210px" : "", width: "100%",
display: "flex",
alignItems: "center",
justifyContent: "space-between",
overflow: "hidden"
};
});
const getsubMenuIconStyle = computed((): CSSProperties => {
return {
display: "flex",
justifyContent: "center",
alignItems: "center",
margin:
layout.value === "horizontal"
? "0 5px 0 0"
: isCollapse.value
? "0 auto"
: "0 5px 0 0"
};
});
const getSubTextStyle = computed((): CSSProperties => {
if (!isCollapse.value) {
return {
width: "210px",
display: "inline-block", display: "inline-block",
overflow: "hidden", overflow: "hidden",
textOverflow: "ellipsis" textOverflow: "ellipsis"
}; };
}); } else {
const getSpanStyle = computed(() => {
return { return {
overflow: "hidden", width: ""
textOverflow: "ellipsis"
}; };
}
}); });
const expandCloseIcon = computed(() => { const expandCloseIcon = computed(() => {
@ -115,6 +122,20 @@ function hoverMenu(key) {
}); });
} }
//
function overflowSlice(text, item?: any) {
const newText =
(text?.length > 1 ? text.toString().slice(0, 1) : text) + "...";
if (item && !(isCollapse.value && item?.parentId === null)) {
return layout.value === "mix" &&
item?.pathList?.length === 2 &&
isCollapse.value
? newText
: text;
}
return newText;
}
function hasOneShowingChild( function hasOneShowingChild(
children: childrenType[] = [], children: childrenType[] = [],
parent: childrenType parent: childrenType
@ -151,18 +172,20 @@ function resolvePath(routePath) {
</script> </script>
<template> <template>
<template <el-menu-item
v-if=" v-if="
hasOneShowingChild(props.item.children, props.item) && hasOneShowingChild(props.item.children, props.item) &&
(!onlyOneChild.children || onlyOneChild.noShowingChildren) (!onlyOneChild.children || onlyOneChild.noShowingChildren)
" "
>
<el-menu-item
:index="resolvePath(onlyOneChild.path)" :index="resolvePath(onlyOneChild.path)"
:class="{ 'submenu-title-noDropdown': !isNest }" :class="{ 'submenu-title-noDropdown': !isNest }"
:style="getNoDropdownStyle" :style="getNoDropdownStyle"
> >
<div class="sub-menu-icon" v-if="toRaw(props.item.meta.icon)"> <div
v-if="toRaw(props.item.meta.icon)"
class="sub-menu-icon"
:style="getsubMenuIconStyle"
>
<component <component
:is=" :is="
useRenderIcon( useRenderIcon(
@ -172,28 +195,28 @@ function resolvePath(routePath) {
" "
/> />
</div> </div>
<div <span
v-if=" v-if="
!props.item?.meta.icon &&
isCollapse && isCollapse &&
layout === 'vertical' && layout === 'vertical' &&
props.item?.pathList?.length === 1 props.item?.pathList?.length === 1
" "
:style="getDivStyle" :style="getSpanStyle"
> >
<span :style="getMenuTextStyle"> {{ overflowSlice(transformI18n(onlyOneChild.meta.title)) }}
{{ transformI18n(onlyOneChild.meta.title) }}
</span> </span>
</div> <span
<div
v-if=" v-if="
isCollapse && layout === 'mix' && props.item?.pathList?.length === 2 !onlyOneChild.meta.icon &&
isCollapse &&
layout === 'mix' &&
props.item?.pathList?.length === 2
" "
:style="getDivStyle" :style="getSpanStyle"
> >
<span :style="getMenuTextStyle"> {{ overflowSlice(transformI18n(onlyOneChild.meta.title)) }}
{{ transformI18n(onlyOneChild.meta.title) }}
</span> </span>
</div>
<template #title> <template #title>
<div :style="getDivStyle"> <div :style="getDivStyle">
<span v-if="layout === 'horizontal'"> <span v-if="layout === 'horizontal'">
@ -221,14 +244,12 @@ function resolvePath(routePath) {
v-if="onlyOneChild.meta.extraIcon" v-if="onlyOneChild.meta.extraIcon"
width="30px" width="30px"
height="30px" height="30px"
:style="getExtraIconStyle"
:icon="onlyOneChild.meta.extraIcon.name" :icon="onlyOneChild.meta.extraIcon.name"
:svg="onlyOneChild.meta.extraIcon.svg ? true : false" :svg="onlyOneChild.meta.extraIcon.svg ? true : false"
/> />
</div> </div>
</template> </template>
</el-menu-item> </el-menu-item>
</template>
<el-sub-menu <el-sub-menu
v-else v-else
@ -237,7 +258,11 @@ function resolvePath(routePath) {
:index="resolvePath(props.item.path)" :index="resolvePath(props.item.path)"
> >
<template #title> <template #title>
<div v-if="toRaw(props.item.meta.icon)" class="sub-menu-icon"> <div
v-if="toRaw(props.item.meta.icon)"
:style="getsubMenuIconStyle"
class="sub-menu-icon"
>
<component <component
:is="useRenderIcon(props.item.meta && toRaw(props.item.meta.icon))" :is="useRenderIcon(props.item.meta && toRaw(props.item.meta.icon))"
/> />
@ -255,21 +280,25 @@ function resolvePath(routePath) {
<template #content> <template #content>
{{ transformI18n(props.item.meta.title) }} {{ transformI18n(props.item.meta.title) }}
</template> </template>
<div <span
v-if="
!(
isCollapse &&
toRaw(props.item.meta.icon) &&
props.item.parentId === null
)
"
ref="menuTextRef" ref="menuTextRef"
:style="getSubTextStyle" :style="getSubTextStyle"
@mouseover="hoverMenu(props.item)" @mouseover="hoverMenu(props.item)"
> >
<span :style="getSpanStyle"> {{ overflowSlice(transformI18n(props.item.meta.title), props.item) }}
{{ transformI18n(props.item.meta.title) }}
</span> </span>
</div>
</el-tooltip> </el-tooltip>
<FontIcon <FontIcon
v-if="props.item.meta.extraIcon" v-if="props.item.meta.extraIcon"
width="30px" width="30px"
height="30px" height="30px"
style="position: absolute; right: 10px"
:icon="props.item.meta.extraIcon.name" :icon="props.item.meta.extraIcon.name"
:svg="props.item.meta.extraIcon.svg ? true : false" :svg="props.item.meta.extraIcon.svg ? true : false"
/> />

View File

@ -281,7 +281,7 @@
left: 0; left: 0;
bottom: 0; bottom: 0;
background: var(--el-color-primary); background: var(--el-color-primary);
animation: scheduleInWidth 400ms ease-in; animation: scheduleInWidth 200ms ease-in;
} }
/* 灵动模式下鼠标移出隐藏蓝色进度条 */ /* 灵动模式下鼠标移出隐藏蓝色进度条 */
@ -292,5 +292,5 @@
left: 0; left: 0;
bottom: 0; bottom: 0;
background: var(--el-color-primary); background: var(--el-color-primary);
animation: scheduleOutWidth 400ms ease-in; animation: scheduleOutWidth 200ms ease-in;
} }

View File

@ -38,7 +38,7 @@ export function useDataThemeChange() {
const body = document.documentElement as HTMLElement; const body = document.documentElement as HTMLElement;
/** 设置导航主题色 */ /** 设置导航主题色 */
function setLayoutThemeColor(theme = "default") { function setLayoutThemeColor(theme = getConfig().Theme ?? "default") {
layoutTheme.value.theme = theme; layoutTheme.value.theme = theme;
toggleTheme({ toggleTheme({
scopeName: `layout-theme-${theme}` scopeName: `layout-theme-${theme}`

View File

@ -13,13 +13,13 @@ const home = 0, // 平台规定只有 home 路由的 rank 才能为 0 ,所以
list = 10, list = 10,
permission = 11, permission = 11,
system = 12, system = 12,
menuoverflow = 13, tabs = 13,
tabs = 14, formdesign = 14,
formdesign = 15, flowchart = 15,
flowchart = 16, ppt = 16,
ppt = 17, editor = 17,
editor = 18, guide = 18,
guide = 19, menuoverflow = 19,
about = 20; about = 20;
export { export {
@ -36,12 +36,12 @@ export {
list, list,
permission, permission,
system, system,
menuoverflow,
tabs, tabs,
formdesign, formdesign,
flowchart, flowchart,
ppt, ppt,
editor, editor,
guide, guide,
menuoverflow,
about about
}; };

View File

@ -18,7 +18,7 @@ export default {
title: $t("menus.hsmessage"), title: $t("menus.hsmessage"),
extraIcon: { extraIcon: {
svg: true, svg: true,
name: "team-iconxinpinrenqiwang" name: "pure-iconfont-new"
}, },
transition: { transition: {
enterTransition: "animate__fadeInLeft", enterTransition: "animate__fadeInLeft",

View File

@ -55,7 +55,7 @@ export default {
keepAlive: true, keepAlive: true,
extraIcon: { extraIcon: {
svg: true, svg: true,
name: "team-iconxinpinrenqiwang" name: "pure-iconfont-new"
} }
} }
} }

View File

@ -241,7 +241,7 @@ function formatFlatteningRoutes(routesList: RouteRecordRaw[]) {
/** /**
* keep-alive * keep-alive
* https://github.com/xiaoxian521/vue-pure-admin/issues/67 * https://github.com/pure-admin/vue-pure-admin/issues/67
* @param routesList * @param routesList
* @returns * @returns
*/ */

View File

@ -6,7 +6,8 @@
/* 自定义全局 CssVar */ /* 自定义全局 CssVar */
:root { :root {
--pure-transition-duration: 0.016s; /* 左侧菜单展开、收起动画时长 */
--pure-transition-duration: 0.3s;
} }
/* 灰色模式 */ /* 灰色模式 */

View File

@ -14,12 +14,13 @@
} }
.sub-menu-icon { .sub-menu-icon {
vertical-align: middle;
font-size: 18px; font-size: 18px;
display: inline-flex;
justify-content: center;
align-items: center;
margin-right: 5px; margin-right: 5px;
svg {
width: 18px;
height: 18px;
}
} }
.set-icon { .set-icon {
@ -195,7 +196,7 @@
align-items: center; align-items: center;
padding-left: 10px; padding-left: 10px;
cursor: pointer; cursor: pointer;
transition: all 0.125s ease; transition: all var(--pure-transition-duration) ease;
i { i {
font-size: 30px; font-size: 30px;
@ -284,6 +285,7 @@
.el-menu-item, .el-menu-item,
.el-sub-menu__title { .el-sub-menu__title {
padding-right: var(--el-menu-base-level-padding);
color: $menuText; color: $menuText;
&:hover { &:hover {
@ -374,19 +376,13 @@
.el-menu-item, .el-menu-item,
.el-sub-menu { .el-sub-menu {
// i { .iconfont {
// width: 20px; font-size: 18px;
// text-align: center; }
// font-size: 16px;
// }
// i.fa {
// margin-right: 5px;
// font-size: 16px;
// }
.el-menu-tooltip__trigger { .el-menu-tooltip__trigger {
width: 54px; width: 54px;
padding: 18px !important; padding: 0;
} }
} }
} }
@ -471,13 +467,13 @@
.el-menu--collapse .is-active.submenu-title-noDropdown.outer-most::before { .el-menu--collapse .is-active.submenu-title-noDropdown.outer-most::before {
position: absolute; position: absolute;
top: 0; top: 0;
left: 2px; left: 0;
width: 2px; width: 2px;
height: 100%; height: 100%;
background-color: $menuActiveBefore; background-color: $menuActiveBefore;
content: ""; content: "";
clear: both; clear: both;
transition: all 0.125s ease-in-out; transition: all var(--pure-transition-duration) ease-in-out;
transform: translateY(0); transform: translateY(0);
} }
@ -537,7 +533,7 @@ body[layout="vertical"] {
} }
.sidebar-container { .sidebar-container {
transition: width 0.125s; transition: width var(--pure-transition-duration);
width: 54px !important; width: 54px !important;
.is-active.submenu-title-noDropdown.outer-most { .is-active.submenu-title-noDropdown.outer-most {
@ -554,11 +550,10 @@ body[layout="vertical"] {
.el-sub-menu { .el-sub-menu {
& > .el-sub-menu__title { & > .el-sub-menu__title {
& > span { & > span {
height: 0; height: 100%;
width: 0; width: 100%;
overflow: hidden; text-align: center;
visibility: hidden; visibility: visible;
display: inline-block;
} }
} }
} }
@ -568,7 +563,7 @@ body[layout="vertical"] {
} }
.el-sub-menu__title { .el-sub-menu__title {
padding: 0 18px !important; padding: 0;
} }
} }
@ -597,9 +592,13 @@ body[layout="horizontal"] {
$sideBarWidth: 0; $sideBarWidth: 0;
@include merge-style($sideBarWidth); @include merge-style($sideBarWidth);
.fixed-header,
.main-container {
transition: none !important;
}
.fixed-header { .fixed-header {
width: 100%; width: 100%;
transition: none !important;
} }
} }
@ -622,7 +621,7 @@ body[layout="mix"] {
} }
.sidebar-container { .sidebar-container {
transition: width 0.125s; transition: width var(--pure-transition-duration);
width: 54px !important; width: 54px !important;
.is-active.submenu-title-noDropdown.outer-most { .is-active.submenu-title-noDropdown.outer-most {
@ -638,12 +637,12 @@ body[layout="mix"] {
.el-menu--collapse { .el-menu--collapse {
.el-sub-menu { .el-sub-menu {
& > .el-sub-menu__title { & > .el-sub-menu__title {
padding: 0;
& > span { & > span {
height: 0; height: 100%;
width: 0; width: 100%;
overflow: hidden; text-align: center;
visibility: hidden; visibility: visible;
display: inline-block;
} }
} }
} }

View File

@ -2,4 +2,4 @@
- `vue-pure-admin``3.3.0` 版本之后(不包括 `3.3.0` 版本),大部分工具和 `hooks` 都集成到了 [@pureadmin/utils](https://pure-admin-utils.netlify.app/) - `vue-pure-admin``3.3.0` 版本之后(不包括 `3.3.0` 版本),大部分工具和 `hooks` 都集成到了 [@pureadmin/utils](https://pure-admin-utils.netlify.app/)
- [npm](https://www.npmjs.com/package/@pureadmin/utils) - [npm](https://www.npmjs.com/package/@pureadmin/utils)
- [文档代码地址](https://github.com/xiaoxian521/pure-admin-utils-docs) - [文档代码地址](https://github.com/pure-admin/pure-admin-utils-docs)

View File

@ -16,7 +16,7 @@ const base64 =
function down() { function down() {
axios axios
.get("https://xiaoxian521.github.io/pure-admin-doc/img/pure.png", { .get("https://pure-admin.github.io/pure-admin-doc/img/pure.png", {
responseType: "blob" responseType: "blob"
}) })
.then(({ data }) => { .then(({ data }) => {
@ -34,7 +34,7 @@ function down() {
<el-button <el-button
@click=" @click="
downloadByOnlineUrl( downloadByOnlineUrl(
'https://xiaoxian521.github.io/pure-admin-doc/img/pure.png', 'https://pure-admin.github.io/pure-admin-doc/img/pure.png',
'test-url.png' 'test-url.png'
) )
" "

View File

@ -17,7 +17,7 @@ const showAllPages = ref(false);
const rotations = [0, 90, 180, 270]; const rotations = [0, 90, 180, 270];
const source = const source =
"https://xiaoxian521.github.io/pure-admin-doc/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf"; "https://pure-admin.github.io/pure-admin-doc/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf";
const handleDocumentRender = () => { const handleDocumentRender = () => {
loading.value = false; loading.value = false;

View File

@ -45,7 +45,7 @@ export function useColumns() {
cellRenderer: () => { cellRenderer: () => {
return ( return (
<a <a
href="https://github.com/xiaoxian521/vue-pure-admin" href="https://github.com/pure-admin/vue-pure-admin"
target="_blank" target="_blank"
> >
<span style="color: var(--el-color-primary)">Github</span> <span style="color: var(--el-color-primary)">Github</span>

View File

@ -58,9 +58,7 @@ const tableDataMore = cloneData.map(item =>
const tableDataImage = cloneData.map((item, index) => const tableDataImage = cloneData.map((item, index) =>
Object.assign(item, { Object.assign(item, {
image: `https://xiaoxian521.github.io/pure-admin-table/imgs/${ image: `https://pure-admin.github.io/pure-admin-table/imgs/${index + 1}.jpg`
index + 1
}.jpg`
}) })
); );

View File

@ -19,7 +19,7 @@ const tableData = [
{ {
more: { more: {
content: content:
'<img width="100" height="100" src="https://xiaoxian521.github.io/pure-admin-table/imgs/11.jpg">' '<img width="100" height="100" src="https://pure-admin.github.io/pure-admin-table/imgs/11.jpg">'
} }
} }
], ],
@ -32,7 +32,7 @@ const tableData = [
{ {
more: { more: {
content: content:
'<img width="100" height="100" src="https://xiaoxian521.github.io/pure-admin-table/imgs/1.jpg">' '<img width="100" height="100" src="https://pure-admin.github.io/pure-admin-table/imgs/1.jpg">'
} }
} }
], ],

View File

@ -20,7 +20,7 @@ function tabClick({ index }) {
<span class="font-medium"> <span class="font-medium">
高级用法全部采用 tsx 语法充分发挥 高级用法全部采用 tsx 语法充分发挥
<el-link <el-link
href="https://github.com/xiaoxian521/pure-admin-table" href="https://github.com/pure-admin/pure-admin-table"
target="_blank" target="_blank"
style="font-size: 16px; margin: 0 4px 5px" style="font-size: 16px; margin: 0 4px 5px"
> >

View File

@ -56,9 +56,7 @@ const tableDataMore = clone(tableData, true).map(item =>
const tableDataImage = clone(tableData, true).map((item, index) => const tableDataImage = clone(tableData, true).map((item, index) =>
Object.assign(item, { Object.assign(item, {
image: `https://xiaoxian521.github.io/pure-admin-table/imgs/${ image: `https://pure-admin.github.io/pure-admin-table/imgs/${index + 1}.jpg`
index + 1
}.jpg`
}) })
); );

View File

@ -22,7 +22,7 @@ function tabClick({ index }) {
并提供灵活的配置项以及完善的类型提醒再也不用将代码都写在 template 并提供灵活的配置项以及完善的类型提醒再也不用将代码都写在 template
里了欢迎 Star 里了欢迎 Star
<el-link <el-link
href="https://github.com/xiaoxian521/pure-admin-table" href="https://github.com/pure-admin/pure-admin-table"
target="_blank" target="_blank"
style="font-size: 16px; margin: 0 4px 5px" style="font-size: 16px; margin: 0 4px 5px"
> >

View File

@ -64,7 +64,7 @@ function resizeHandler() {
} }
axios axios
.get("https://api.github.com/repos/xiaoxian521/vue-pure-admin/releases") .get("https://api.github.com/repos/pure-admin/vue-pure-admin/releases")
.then(res => { .then(res => {
list.value = res.data.map(v => { list.value = res.data.map(v => {
return { return {
@ -95,7 +95,7 @@ onUnmounted(() => {
<img <img
src="https://avatars.githubusercontent.com/u/44761321?v=4" src="https://avatars.githubusercontent.com/u/44761321?v=4"
title="直达仓库地址" title="直达仓库地址"
@click="openLink('https://github.com/xiaoxian521/vue-pure-admin')" @click="openLink('https://github.com/pure-admin/vue-pure-admin')"
/> />
<TypeIt <TypeIt
:className="'type-it0'" :className="'type-it0'"
@ -190,7 +190,7 @@ onUnmounted(() => {
<template #header> <template #header>
<a <a
:class="titleClass" :class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin/releases" href="https://github.com/pure-admin/vue-pure-admin/releases"
target="_black" target="_black"
> >
<TypeIt <TypeIt
@ -245,7 +245,7 @@ onUnmounted(() => {
<template #header> <template #header>
<a <a
:class="titleClass" :class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin" href="https://github.com/pure-admin/vue-pure-admin"
target="_black" target="_black"
> >
<TypeIt <TypeIt
@ -288,7 +288,7 @@ onUnmounted(() => {
<template #header> <template #header>
<a <a
:class="titleClass" :class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin" href="https://github.com/pure-admin/vue-pure-admin"
target="_black" target="_black"
> >
<TypeIt <TypeIt
@ -331,7 +331,7 @@ onUnmounted(() => {
<template #header> <template #header>
<a <a
:class="titleClass" :class="titleClass"
href="https://github.com/xiaoxian521/vue-pure-admin" href="https://github.com/pure-admin/vue-pure-admin"
target="_black" target="_black"
> >
<TypeIt <TypeIt