mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	Merge branch 'main' into gitee
This commit is contained in:
		
						commit
						9ba545ae3b
					
				@ -18,7 +18,7 @@
 | 
			
		||||
### 🍏 Perf
 | 
			
		||||
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
# 3.9.5 (2022-12-13)
 | 
			
		||||
@ -46,7 +46,7 @@
 | 
			
		||||
### ✔️ 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 🐮
 | 
			
		||||
  [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
 | 
			
		||||
 | 
			
		||||
@ -73,7 +73,7 @@
 | 
			
		||||
 | 
			
		||||
### 🍏 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
 | 
			
		||||
- Optimize some animations
 | 
			
		||||
 | 
			
		||||
@ -121,7 +121,7 @@
 | 
			
		||||
 | 
			
		||||
### 🍏 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)
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,7 @@
 | 
			
		||||
### 🎫 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 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)
 | 
			
		||||
- 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
 | 
			
		||||
@ -259,7 +259,7 @@
 | 
			
		||||
 | 
			
		||||
### ✔️ 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
 | 
			
		||||
 | 
			
		||||
@ -295,8 +295,8 @@
 | 
			
		||||
 | 
			
		||||
### 🎫 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 `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 `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/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
 | 
			
		||||
- 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)
 | 
			
		||||
@ -341,7 +341,7 @@
 | 
			
		||||
- Integrate `Swiper` plugin
 | 
			
		||||
- Routing supports passing `component`, representing the component path
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
@ -353,7 +353,7 @@
 | 
			
		||||
- 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
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@ -18,7 +18,7 @@
 | 
			
		||||
### 🍏 Perf
 | 
			
		||||
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
# 3.9.5 (2022-12-13)
 | 
			
		||||
@ -46,7 +46,7 @@
 | 
			
		||||
### ✔️ 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 🐮
 | 
			
		||||
  [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
 | 
			
		||||
 | 
			
		||||
@ -73,7 +73,7 @@
 | 
			
		||||
 | 
			
		||||
### 🍏 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
 | 
			
		||||
- Optimize some animations
 | 
			
		||||
 | 
			
		||||
@ -121,7 +121,7 @@
 | 
			
		||||
 | 
			
		||||
### 🍏 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)
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,7 @@
 | 
			
		||||
### 🎫 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 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)
 | 
			
		||||
- 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
 | 
			
		||||
@ -259,7 +259,7 @@
 | 
			
		||||
 | 
			
		||||
### ✔️ 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
 | 
			
		||||
 | 
			
		||||
@ -295,8 +295,8 @@
 | 
			
		||||
 | 
			
		||||
### 🎫 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 `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 `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/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
 | 
			
		||||
- 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)
 | 
			
		||||
@ -341,7 +341,7 @@
 | 
			
		||||
- Integrate `Swiper` plugin
 | 
			
		||||
- Routing supports passing `component`, representing the component path
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
@ -353,7 +353,7 @@
 | 
			
		||||
- 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
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@
 | 
			
		||||
### 🍏 Perf
 | 
			
		||||
 | 
			
		||||
- 更新 [@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)
 | 
			
		||||
@ -73,7 +73,7 @@
 | 
			
		||||
 | 
			
		||||
### 🍏 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
 | 
			
		||||
 | 
			
		||||
- 大优化,移除 `@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)
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,7 @@
 | 
			
		||||
### 🎫 Feat
 | 
			
		||||
 | 
			
		||||
- 添加前端单点登录,测试地址 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` 即可解决
 | 
			
		||||
- 更换表单设计器组件演示
 | 
			
		||||
@ -295,8 +295,8 @@
 | 
			
		||||
 | 
			
		||||
### 🎫 Feat
 | 
			
		||||
 | 
			
		||||
- 将 `element-plus` 的 `Table` 二次封装到[@pureadmin/table](https://github.com/xiaoxian521/pure-admin-table),提供灵活的配置项并集成到平台里
 | 
			
		||||
- 将 `element-plus` 的 `Descriptions` 二次封装到[@pureadmin/descriptions](https://github.com/xiaoxian521/pure-admin-descriptions),提供灵活的配置项并集成到平台里
 | 
			
		||||
- 将 `element-plus` 的 `Table` 二次封装到[@pureadmin/table](https://github.com/pure-admin/pure-admin-table),提供灵活的配置项并集成到平台里
 | 
			
		||||
- 将 `element-plus` 的 `Descriptions` 二次封装到[@pureadmin/descriptions](https://github.com/pure-admin/pure-admin-descriptions),提供灵活的配置项并集成到平台里
 | 
			
		||||
- 将平台的大部分工具以及 `hooks` 都集中到[@pureadmin/utils](https://pure-admin-utils.netlify.app),并删除集中到这个库里的代码,减少平台体积
 | 
			
		||||
- 添加[unplugin-vue-define-options](https://www.npmjs.com/package/unplugin-vue-define-options)插件,页面可直接写 `defineOptions({name: 自定义名称})`
 | 
			
		||||
- 添加项目文件、语言分析工具 [cloc](https://www.npmjs.com/package/cloc)
 | 
			
		||||
@ -341,7 +341,7 @@
 | 
			
		||||
- 集成`Swiper`插件
 | 
			
		||||
- 路由支持传`component`,代表组件路径
 | 
			
		||||
- 添加预发布打包模式
 | 
			
		||||
- 添加关闭某个标签的[hooks](https://github.com/xiaoxian521/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
 | 
			
		||||
- 添加关闭某个标签的[hooks](https://github.com/pure-admin/vue-pure-admin/commit/5e8723a031923e79f507e5a17151d3bd88a51523)
 | 
			
		||||
 | 
			
		||||
### ✔️ refactor
 | 
			
		||||
 | 
			
		||||
@ -353,7 +353,7 @@
 | 
			
		||||
- 优化平台的`split-pane`组件样式
 | 
			
		||||
- 优化国际化,路由不再传`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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
MIT License
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2022 啝裳
 | 
			
		||||
Copyright (c) 2023 啝裳
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,8 @@
 | 
			
		||||
<h1>vue-pure-admin</h1>
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
**English** | [中文](./README.md)
 | 
			
		||||
 | 
			
		||||
@ -12,10 +12,10 @@
 | 
			
		||||
 | 
			
		||||
## 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 Internationalization version](https://github.com/xiaoxian521/pure-admin-thin/tree/i18n)
 | 
			
		||||
- [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/pure-admin/pure-admin-thin/tree/i18n)
 | 
			
		||||
 | 
			
		||||
## 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)
 | 
			
		||||
 | 
			
		||||
- [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
 | 
			
		||||
 | 
			
		||||
- [Click Watch Tauri](https://github.com/xiaoxian521/tauri-pure-admin)
 | 
			
		||||
- [Click Watch Tauri](https://github.com/pure-admin/tauri-pure-admin)
 | 
			
		||||
 | 
			
		||||
## Electron
 | 
			
		||||
 | 
			
		||||
- [Click Watch Electron](https://github.com/xiaoxian521/electron-pure-admin)
 | 
			
		||||
- [Click Watch Electron](https://github.com/pure-admin/electron-pure-admin)
 | 
			
		||||
 | 
			
		||||
## Preview
 | 
			
		||||
 | 
			
		||||
- [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
 | 
			
		||||
<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.
 | 
			
		||||
 | 
			
		||||
[](https://gitpod.io/#https://github.com/xiaoxian521/vue-pure-admin)
 | 
			
		||||
[](https://gitpod.io/#https://github.com/pure-admin/vue-pure-admin)
 | 
			
		||||
 | 
			
		||||
## Install and use
 | 
			
		||||
 | 
			
		||||
- Get the project code
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
git clone https://github.com/xiaoxian521/vue-pure-admin.git
 | 
			
		||||
git clone https://github.com/pure-admin/vue-pure-admin.git
 | 
			
		||||
or
 | 
			
		||||
git clone https://gitee.com/yiming_chang/vue-pure-admin.git
 | 
			
		||||
```
 | 
			
		||||
@ -98,7 +98,7 @@ pnpm build
 | 
			
		||||
 | 
			
		||||
## How to contribute
 | 
			
		||||
 | 
			
		||||
You are very welcome to join Or submit a Pull Request
 | 
			
		||||
You are very welcome to join Or submit a 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!
 | 
			
		||||
 | 
			
		||||
[MIT © xiaoxian521-2020](./LICENSE)
 | 
			
		||||
[MIT © xiaoxian521-2023](./LICENSE)
 | 
			
		||||
 | 
			
		||||
## 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:
 | 
			
		||||
 | 
			
		||||
<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`
 | 
			
		||||
 | 
			
		||||
Many thanks to the kind individuals who leave a star. Your support is much appreciated :heart:
 | 
			
		||||
 | 
			
		||||
[](https://github.com/xiaoxian521/vue-pure-admin/stargazers)
 | 
			
		||||
[](https://github.com/pure-admin/vue-pure-admin/stargazers)
 | 
			
		||||
 | 
			
		||||
## `Fork`
 | 
			
		||||
 | 
			
		||||
It's so cool that you study hard :heart:
 | 
			
		||||
 | 
			
		||||
[](https://github.com/xiaoxian521/vue-pure-admin/network/members)
 | 
			
		||||
[](https://github.com/pure-admin/vue-pure-admin/network/members)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								README.md
									
									
									
									
									
								
							@ -1,8 +1,8 @@
 | 
			
		||||
<h1>vue-pure-admin</h1>
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
**中文** | [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/xiaoxian521/pure-admin-thin/tree/i18n)
 | 
			
		||||
- [点我查看非国际化精简版](https://github.com/pure-admin/pure-admin-thin)
 | 
			
		||||
- [点我查看国际化精简版](https://github.com/pure-admin/pure-admin-thin/tree/i18n)
 | 
			
		||||
 | 
			
		||||
## 配套视频
 | 
			
		||||
 | 
			
		||||
@ -25,20 +25,20 @@
 | 
			
		||||
## 配套保姆级文档(支持 `PWA` 快速、离线访问)
 | 
			
		||||
 | 
			
		||||
- [点我查看国内文档站](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 版](https://github.com/xiaoxian521/tauri-pure-admin)
 | 
			
		||||
- [点我查看 Tauri 版](https://github.com/pure-admin/tauri-pure-admin)
 | 
			
		||||
 | 
			
		||||
## `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://xiaoxian521.github.io/vue-pure-admin)
 | 
			
		||||
- [点我查看国外预览站](https://pure-admin.github.io/vue-pure-admin)
 | 
			
		||||
 | 
			
		||||
- PC 端
 | 
			
		||||
<p align="center">
 | 
			
		||||
@ -59,14 +59,14 @@
 | 
			
		||||
 | 
			
		||||
在 Gitpod(适用于 GitHub 的免费在线开发环境)中打开项目,并立即开始编码.
 | 
			
		||||
 | 
			
		||||
[](https://gitpod.io/#https://github.com/xiaoxian521/vue-pure-admin)
 | 
			
		||||
[](https://gitpod.io/#https://github.com/pure-admin/vue-pure-admin)
 | 
			
		||||
 | 
			
		||||
## 安装使用
 | 
			
		||||
 | 
			
		||||
- 获取项目代码
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
git clone https://github.com/xiaoxian521/vue-pure-admin.git
 | 
			
		||||
git clone https://github.com/pure-admin/vue-pure-admin.git
 | 
			
		||||
or
 | 
			
		||||
git clone https://gitee.com/yiming_chang/vue-pure-admin.git
 | 
			
		||||
```
 | 
			
		||||
@ -98,7 +98,7 @@ pnpm build
 | 
			
		||||
 | 
			
		||||
## 如何贡献
 | 
			
		||||
 | 
			
		||||
非常欢迎您的加入 或者提交一个 `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:
 | 
			
		||||
 | 
			
		||||
<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`
 | 
			
		||||
 | 
			
		||||
非常感谢留下星星的好心人,感谢您的支持 :heart:
 | 
			
		||||
 | 
			
		||||
[](https://github.com/xiaoxian521/vue-pure-admin/stargazers)
 | 
			
		||||
[](https://github.com/pure-admin/vue-pure-admin/stargazers)
 | 
			
		||||
 | 
			
		||||
## `Fork`
 | 
			
		||||
 | 
			
		||||
瞧,那些 `小哥哥` 、`小姐姐` 认真 `学习` 的样子真滴是 `哎呦不错哦` :heart:
 | 
			
		||||
 | 
			
		||||
[](https://github.com/xiaoxian521/vue-pure-admin/network/members)
 | 
			
		||||
[](https://github.com/pure-admin/vue-pure-admin/network/members)
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ export function viteBuildInfo(): Plugin {
 | 
			
		||||
          green(
 | 
			
		||||
            `👏欢迎使用${blue(
 | 
			
		||||
              "[vue-pure-admin]"
 | 
			
		||||
            )},如果您感觉不错,记得点击后面链接给个star哦💖 https://github.com/xiaoxian521/vue-pure-admin`
 | 
			
		||||
            )},如果您感觉不错,记得点击后面链接给个star哦💖 https://github.com/pure-admin/vue-pure-admin`
 | 
			
		||||
          )
 | 
			
		||||
        )
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,7 @@ const frameRouter = {
 | 
			
		||||
const tabsRouter = {
 | 
			
		||||
  path: "/tabs",
 | 
			
		||||
  meta: {
 | 
			
		||||
    icon: "IF-team-icontabs",
 | 
			
		||||
    icon: "IF-pure-iconfont-tabs",
 | 
			
		||||
    title: "menus.hstabs",
 | 
			
		||||
    rank: tabs
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
								
							@ -33,9 +33,9 @@
 | 
			
		||||
    "@logicflow/core": "^1.1.30",
 | 
			
		||||
    "@logicflow/extension": "^1.1.30",
 | 
			
		||||
    "@pureadmin/descriptions": "^1.1.0",
 | 
			
		||||
    "@pureadmin/table": "^1.9.0",
 | 
			
		||||
    "@pureadmin/table": "^2.0.0",
 | 
			
		||||
    "@pureadmin/utils": "^1.8.5",
 | 
			
		||||
    "@vueuse/core": "^9.10.0",
 | 
			
		||||
    "@vueuse/core": "^9.12.0",
 | 
			
		||||
    "@vueuse/motion": "2.0.0-beta.12",
 | 
			
		||||
    "@wangeditor/editor": "^5.1.21",
 | 
			
		||||
    "@wangeditor/editor-for-vue": "^5.1.12",
 | 
			
		||||
@ -46,7 +46,7 @@
 | 
			
		||||
    "dayjs": "^1.11.7",
 | 
			
		||||
    "echarts": "^5.4.1",
 | 
			
		||||
    "el-table-infinite-scroll": "^3.0.1",
 | 
			
		||||
    "element-plus": "^2.2.28",
 | 
			
		||||
    "element-plus": "2.2.28",
 | 
			
		||||
    "element-resize-detector": "^1.2.4",
 | 
			
		||||
    "intro.js": "^6.0.0",
 | 
			
		||||
    "js-cookie": "^3.0.1",
 | 
			
		||||
@ -56,12 +56,12 @@
 | 
			
		||||
    "mockjs": "^1.1.0",
 | 
			
		||||
    "nprogress": "^0.2.0",
 | 
			
		||||
    "path": "^0.12.7",
 | 
			
		||||
    "pinia": "^2.0.28",
 | 
			
		||||
    "pinia": "^2.0.30",
 | 
			
		||||
    "qrcode": "^1.5.1",
 | 
			
		||||
    "qs": "^6.11.0",
 | 
			
		||||
    "responsive-storage": "^2.1.0",
 | 
			
		||||
    "sortablejs": "^1.15.0",
 | 
			
		||||
    "swiper": "^8.4.5",
 | 
			
		||||
    "swiper": "^9.0.3",
 | 
			
		||||
    "typeit": "^8.7.1",
 | 
			
		||||
    "v-contextmenu": "3.0.0",
 | 
			
		||||
    "vue": "^3.2.45",
 | 
			
		||||
@ -129,7 +129,7 @@
 | 
			
		||||
    "terser": "^5.16.1",
 | 
			
		||||
    "typescript": "^4.9.4",
 | 
			
		||||
    "unplugin-vue-define-options": "^1.0.0",
 | 
			
		||||
    "vite": "^4.0.4",
 | 
			
		||||
    "vite": "^4.1.1",
 | 
			
		||||
    "vite-plugin-cdn-import": "^0.3.5",
 | 
			
		||||
    "vite-plugin-compression": "^0.5.1",
 | 
			
		||||
    "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",
 | 
			
		||||
  "license": "MIT"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										913
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										913
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,8 +1,8 @@
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: "iconfont"; /* Project id 2208059 */
 | 
			
		||||
  src: url("iconfont.woff2?t=1638023560828") format("woff2"),
 | 
			
		||||
    url("iconfont.woff?t=1638023560828") format("woff"),
 | 
			
		||||
    url("iconfont.ttf?t=1638023560828") format("truetype");
 | 
			
		||||
  src: url("iconfont.woff2?t=1671895108120") format("woff2"),
 | 
			
		||||
    url("iconfont.woff?t=1671895108120") format("woff"),
 | 
			
		||||
    url("iconfont.ttf?t=1671895108120") format("truetype");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.iconfont {
 | 
			
		||||
@ -13,26 +13,14 @@
 | 
			
		||||
  -moz-osx-font-smoothing: grayscale;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.team-icontabs::before {
 | 
			
		||||
.pure-iconfont-tabs:before {
 | 
			
		||||
  content: "\e63e";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.team-iconlogo::before {
 | 
			
		||||
.pure-iconfont-logo:before {
 | 
			
		||||
  content: "\e620";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.team-iconxinpin::before {
 | 
			
		||||
  content: "\e614";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.team-iconxinpinrenqiwang::before {
 | 
			
		||||
.pure-iconfont-new:before {
 | 
			
		||||
  content: "\e615";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.team-iconexit-fullscreen::before {
 | 
			
		||||
  content: "\e62a";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.team-iconfullscreen::before {
 | 
			
		||||
  content: "\e62b";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -2,50 +2,29 @@
 | 
			
		||||
  "id": "2208059",
 | 
			
		||||
  "name": "pure-admin",
 | 
			
		||||
  "font_family": "iconfont",
 | 
			
		||||
  "css_prefix_text": "team-icon",
 | 
			
		||||
  "description": "pure-admin",
 | 
			
		||||
  "css_prefix_text": "pure-iconfont-",
 | 
			
		||||
  "description": "pure-admin-iconfont",
 | 
			
		||||
  "glyphs": [
 | 
			
		||||
    {
 | 
			
		||||
      "icon_id": "20594647",
 | 
			
		||||
      "name": "标签页",
 | 
			
		||||
      "name": "Tabs",
 | 
			
		||||
      "font_class": "tabs",
 | 
			
		||||
      "unicode": "e63e",
 | 
			
		||||
      "unicode_decimal": 58942
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "icon_id": "22129506",
 | 
			
		||||
      "name": "水能",
 | 
			
		||||
      "name": "PureLogo",
 | 
			
		||||
      "font_class": "logo",
 | 
			
		||||
      "unicode": "e620",
 | 
			
		||||
      "unicode_decimal": 58912
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "icon_id": "7795613",
 | 
			
		||||
      "name": "新品",
 | 
			
		||||
      "font_class": "xinpin",
 | 
			
		||||
      "unicode": "e614",
 | 
			
		||||
      "unicode_decimal": 58900
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "icon_id": "7795615",
 | 
			
		||||
      "name": "新品人气王",
 | 
			
		||||
      "font_class": "xinpinrenqiwang",
 | 
			
		||||
      "name": "New",
 | 
			
		||||
      "font_class": "new",
 | 
			
		||||
      "unicode": "e615",
 | 
			
		||||
      "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.
										
									
								
							@ -1,5 +1,5 @@
 | 
			
		||||
import pureTableBar from "./src/bar";
 | 
			
		||||
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);
 | 
			
		||||
 | 
			
		||||
@ -110,7 +110,9 @@ export default defineComponent({
 | 
			
		||||
          <div class="flex justify-between w-full h-[60px] p-4">
 | 
			
		||||
            <p class="font-bold truncate">{props.title}</p>
 | 
			
		||||
            <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 ? (
 | 
			
		||||
                <>
 | 
			
		||||
                  <el-tooltip
 | 
			
		||||
 | 
			
		||||
@ -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>
 | 
			
		||||
@ -3,7 +3,6 @@ import { useRouter } from "vue-router";
 | 
			
		||||
import { cloneDeep } from "@pureadmin/utils";
 | 
			
		||||
import SearchResult from "./SearchResult.vue";
 | 
			
		||||
import SearchFooter from "./SearchFooter.vue";
 | 
			
		||||
import { deleteChildren } from "@/utils/tree";
 | 
			
		||||
import { useNav } from "@/layout/hooks/useNav";
 | 
			
		||||
import { transformI18n } from "@/plugins/i18n";
 | 
			
		||||
import { useDebounceFn, onKeyStroke } from "@vueuse/core";
 | 
			
		||||
@ -33,7 +32,7 @@ const handleSearch = useDebounceFn(search, 300);
 | 
			
		||||
 | 
			
		||||
/** 菜单树形结构 */
 | 
			
		||||
const menusData = computed(() => {
 | 
			
		||||
  return deleteChildren(cloneDeep(usePermissionStoreHook().wholeMenus));
 | 
			
		||||
  return cloneDeep(usePermissionStoreHook().wholeMenus);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const show = computed({
 | 
			
		||||
 | 
			
		||||
@ -46,7 +46,11 @@ watch(
 | 
			
		||||
    class="horizontal-header"
 | 
			
		||||
  >
 | 
			
		||||
    <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>
 | 
			
		||||
    </div>
 | 
			
		||||
    <el-menu
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ const iconClass = computed(() => {
 | 
			
		||||
    "align-middle",
 | 
			
		||||
    "text-primary",
 | 
			
		||||
    "cursor-pointer",
 | 
			
		||||
    "duration-[360ms]",
 | 
			
		||||
    "duration-[100ms]",
 | 
			
		||||
    "hover:text-primary",
 | 
			
		||||
    "dark:hover:!text-white"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,11 @@ const { title } = useNav();
 | 
			
		||||
        class="sidebar-logo-link"
 | 
			
		||||
        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>
 | 
			
		||||
      </router-link>
 | 
			
		||||
      <router-link
 | 
			
		||||
@ -28,7 +32,11 @@ const { title } = useNav();
 | 
			
		||||
        class="sidebar-logo-link"
 | 
			
		||||
        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>
 | 
			
		||||
      </router-link>
 | 
			
		||||
    </transition>
 | 
			
		||||
 | 
			
		||||
@ -28,17 +28,11 @@ const props = defineProps({
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const getExtraIconStyle = computed((): CSSProperties => {
 | 
			
		||||
  if (!isCollapse.value) {
 | 
			
		||||
    return {
 | 
			
		||||
      position: "absolute",
 | 
			
		||||
      right: "10px"
 | 
			
		||||
    };
 | 
			
		||||
  } else {
 | 
			
		||||
    return {
 | 
			
		||||
      position: "static"
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
const getSpanStyle = computed((): CSSProperties => {
 | 
			
		||||
  return {
 | 
			
		||||
    width: "100%",
 | 
			
		||||
    textAlign: "center"
 | 
			
		||||
  };
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
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(() => {
 | 
			
		||||
  return {
 | 
			
		||||
    overflow: "hidden",
 | 
			
		||||
@ -66,22 +50,45 @@ const getMenuTextStyle = computed(() => {
 | 
			
		||||
  };
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const getSubTextStyle = computed((): CSSProperties => {
 | 
			
		||||
const getDivStyle = computed((): CSSProperties => {
 | 
			
		||||
  return {
 | 
			
		||||
    width: !isCollapse.value ? "210px" : "",
 | 
			
		||||
    display: "inline-block",
 | 
			
		||||
    overflow: "hidden",
 | 
			
		||||
    textOverflow: "ellipsis"
 | 
			
		||||
    width: "100%",
 | 
			
		||||
    display: "flex",
 | 
			
		||||
    alignItems: "center",
 | 
			
		||||
    justifyContent: "space-between",
 | 
			
		||||
    overflow: "hidden"
 | 
			
		||||
  };
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const getSpanStyle = computed(() => {
 | 
			
		||||
const getsubMenuIconStyle = computed((): CSSProperties => {
 | 
			
		||||
  return {
 | 
			
		||||
    overflow: "hidden",
 | 
			
		||||
    textOverflow: "ellipsis"
 | 
			
		||||
    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",
 | 
			
		||||
      overflow: "hidden",
 | 
			
		||||
      textOverflow: "ellipsis"
 | 
			
		||||
    };
 | 
			
		||||
  } else {
 | 
			
		||||
    return {
 | 
			
		||||
      width: ""
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const expandCloseIcon = computed(() => {
 | 
			
		||||
  if (!getConfig()?.MenuArrowIconNoTransition) return "";
 | 
			
		||||
  return {
 | 
			
		||||
@ -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(
 | 
			
		||||
  children: childrenType[] = [],
 | 
			
		||||
  parent: childrenType
 | 
			
		||||
@ -151,84 +172,84 @@ function resolvePath(routePath) {
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
  <template
 | 
			
		||||
  <el-menu-item
 | 
			
		||||
    v-if="
 | 
			
		||||
      hasOneShowingChild(props.item.children, props.item) &&
 | 
			
		||||
      (!onlyOneChild.children || onlyOneChild.noShowingChildren)
 | 
			
		||||
    "
 | 
			
		||||
    :index="resolvePath(onlyOneChild.path)"
 | 
			
		||||
    :class="{ 'submenu-title-noDropdown': !isNest }"
 | 
			
		||||
    :style="getNoDropdownStyle"
 | 
			
		||||
  >
 | 
			
		||||
    <el-menu-item
 | 
			
		||||
      :index="resolvePath(onlyOneChild.path)"
 | 
			
		||||
      :class="{ 'submenu-title-noDropdown': !isNest }"
 | 
			
		||||
      :style="getNoDropdownStyle"
 | 
			
		||||
    <div
 | 
			
		||||
      v-if="toRaw(props.item.meta.icon)"
 | 
			
		||||
      class="sub-menu-icon"
 | 
			
		||||
      :style="getsubMenuIconStyle"
 | 
			
		||||
    >
 | 
			
		||||
      <div class="sub-menu-icon" v-if="toRaw(props.item.meta.icon)">
 | 
			
		||||
        <component
 | 
			
		||||
          :is="
 | 
			
		||||
            useRenderIcon(
 | 
			
		||||
              toRaw(onlyOneChild.meta.icon) ||
 | 
			
		||||
                (props.item.meta && toRaw(props.item.meta.icon))
 | 
			
		||||
            )
 | 
			
		||||
          "
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
      <div
 | 
			
		||||
        v-if="
 | 
			
		||||
          isCollapse &&
 | 
			
		||||
          layout === 'vertical' &&
 | 
			
		||||
          props.item?.pathList?.length === 1
 | 
			
		||||
      <component
 | 
			
		||||
        :is="
 | 
			
		||||
          useRenderIcon(
 | 
			
		||||
            toRaw(onlyOneChild.meta.icon) ||
 | 
			
		||||
              (props.item.meta && toRaw(props.item.meta.icon))
 | 
			
		||||
          )
 | 
			
		||||
        "
 | 
			
		||||
        :style="getDivStyle"
 | 
			
		||||
      >
 | 
			
		||||
        <span :style="getMenuTextStyle">
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
    <span
 | 
			
		||||
      v-if="
 | 
			
		||||
        !props.item?.meta.icon &&
 | 
			
		||||
        isCollapse &&
 | 
			
		||||
        layout === 'vertical' &&
 | 
			
		||||
        props.item?.pathList?.length === 1
 | 
			
		||||
      "
 | 
			
		||||
      :style="getSpanStyle"
 | 
			
		||||
    >
 | 
			
		||||
      {{ overflowSlice(transformI18n(onlyOneChild.meta.title)) }}
 | 
			
		||||
    </span>
 | 
			
		||||
    <span
 | 
			
		||||
      v-if="
 | 
			
		||||
        !onlyOneChild.meta.icon &&
 | 
			
		||||
        isCollapse &&
 | 
			
		||||
        layout === 'mix' &&
 | 
			
		||||
        props.item?.pathList?.length === 2
 | 
			
		||||
      "
 | 
			
		||||
      :style="getSpanStyle"
 | 
			
		||||
    >
 | 
			
		||||
      {{ overflowSlice(transformI18n(onlyOneChild.meta.title)) }}
 | 
			
		||||
    </span>
 | 
			
		||||
    <template #title>
 | 
			
		||||
      <div :style="getDivStyle">
 | 
			
		||||
        <span v-if="layout === 'horizontal'">
 | 
			
		||||
          {{ transformI18n(onlyOneChild.meta.title) }}
 | 
			
		||||
        </span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div
 | 
			
		||||
        v-if="
 | 
			
		||||
          isCollapse && layout === 'mix' && props.item?.pathList?.length === 2
 | 
			
		||||
        "
 | 
			
		||||
        :style="getDivStyle"
 | 
			
		||||
      >
 | 
			
		||||
        <span :style="getMenuTextStyle">
 | 
			
		||||
          {{ transformI18n(onlyOneChild.meta.title) }}
 | 
			
		||||
        </span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <template #title>
 | 
			
		||||
        <div :style="getDivStyle">
 | 
			
		||||
          <span v-if="layout === 'horizontal'">
 | 
			
		||||
        <el-tooltip
 | 
			
		||||
          v-else
 | 
			
		||||
          placement="top"
 | 
			
		||||
          :effect="tooltipEffect"
 | 
			
		||||
          :offset="-10"
 | 
			
		||||
          :disabled="!onlyOneChild.showTooltip"
 | 
			
		||||
        >
 | 
			
		||||
          <template #content>
 | 
			
		||||
            {{ transformI18n(onlyOneChild.meta.title) }}
 | 
			
		||||
          </template>
 | 
			
		||||
          <span
 | 
			
		||||
            ref="menuTextRef"
 | 
			
		||||
            :style="getMenuTextStyle"
 | 
			
		||||
            @mouseover="hoverMenu(onlyOneChild)"
 | 
			
		||||
          >
 | 
			
		||||
            {{ transformI18n(onlyOneChild.meta.title) }}
 | 
			
		||||
          </span>
 | 
			
		||||
          <el-tooltip
 | 
			
		||||
            v-else
 | 
			
		||||
            placement="top"
 | 
			
		||||
            :effect="tooltipEffect"
 | 
			
		||||
            :offset="-10"
 | 
			
		||||
            :disabled="!onlyOneChild.showTooltip"
 | 
			
		||||
          >
 | 
			
		||||
            <template #content>
 | 
			
		||||
              {{ transformI18n(onlyOneChild.meta.title) }}
 | 
			
		||||
            </template>
 | 
			
		||||
            <span
 | 
			
		||||
              ref="menuTextRef"
 | 
			
		||||
              :style="getMenuTextStyle"
 | 
			
		||||
              @mouseover="hoverMenu(onlyOneChild)"
 | 
			
		||||
            >
 | 
			
		||||
              {{ transformI18n(onlyOneChild.meta.title) }}
 | 
			
		||||
            </span>
 | 
			
		||||
          </el-tooltip>
 | 
			
		||||
          <FontIcon
 | 
			
		||||
            v-if="onlyOneChild.meta.extraIcon"
 | 
			
		||||
            width="30px"
 | 
			
		||||
            height="30px"
 | 
			
		||||
            :style="getExtraIconStyle"
 | 
			
		||||
            :icon="onlyOneChild.meta.extraIcon.name"
 | 
			
		||||
            :svg="onlyOneChild.meta.extraIcon.svg ? true : false"
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
      </template>
 | 
			
		||||
    </el-menu-item>
 | 
			
		||||
  </template>
 | 
			
		||||
        </el-tooltip>
 | 
			
		||||
        <FontIcon
 | 
			
		||||
          v-if="onlyOneChild.meta.extraIcon"
 | 
			
		||||
          width="30px"
 | 
			
		||||
          height="30px"
 | 
			
		||||
          :icon="onlyOneChild.meta.extraIcon.name"
 | 
			
		||||
          :svg="onlyOneChild.meta.extraIcon.svg ? true : false"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
    </template>
 | 
			
		||||
  </el-menu-item>
 | 
			
		||||
 | 
			
		||||
  <el-sub-menu
 | 
			
		||||
    v-else
 | 
			
		||||
@ -237,7 +258,11 @@ function resolvePath(routePath) {
 | 
			
		||||
    :index="resolvePath(props.item.path)"
 | 
			
		||||
  >
 | 
			
		||||
    <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
 | 
			
		||||
          :is="useRenderIcon(props.item.meta && toRaw(props.item.meta.icon))"
 | 
			
		||||
        />
 | 
			
		||||
@ -255,21 +280,25 @@ function resolvePath(routePath) {
 | 
			
		||||
        <template #content>
 | 
			
		||||
          {{ transformI18n(props.item.meta.title) }}
 | 
			
		||||
        </template>
 | 
			
		||||
        <div
 | 
			
		||||
        <span
 | 
			
		||||
          v-if="
 | 
			
		||||
            !(
 | 
			
		||||
              isCollapse &&
 | 
			
		||||
              toRaw(props.item.meta.icon) &&
 | 
			
		||||
              props.item.parentId === null
 | 
			
		||||
            )
 | 
			
		||||
          "
 | 
			
		||||
          ref="menuTextRef"
 | 
			
		||||
          :style="getSubTextStyle"
 | 
			
		||||
          @mouseover="hoverMenu(props.item)"
 | 
			
		||||
        >
 | 
			
		||||
          <span :style="getSpanStyle">
 | 
			
		||||
            {{ transformI18n(props.item.meta.title) }}
 | 
			
		||||
          </span>
 | 
			
		||||
        </div>
 | 
			
		||||
          {{ overflowSlice(transformI18n(props.item.meta.title), props.item) }}
 | 
			
		||||
        </span>
 | 
			
		||||
      </el-tooltip>
 | 
			
		||||
      <FontIcon
 | 
			
		||||
        v-if="props.item.meta.extraIcon"
 | 
			
		||||
        width="30px"
 | 
			
		||||
        height="30px"
 | 
			
		||||
        style="position: absolute; right: 10px"
 | 
			
		||||
        :icon="props.item.meta.extraIcon.name"
 | 
			
		||||
        :svg="props.item.meta.extraIcon.svg ? true : false"
 | 
			
		||||
      />
 | 
			
		||||
 | 
			
		||||
@ -281,7 +281,7 @@
 | 
			
		||||
  left: 0;
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  background: var(--el-color-primary);
 | 
			
		||||
  animation: scheduleInWidth 400ms ease-in;
 | 
			
		||||
  animation: scheduleInWidth 200ms ease-in;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 灵动模式下鼠标移出隐藏蓝色进度条 */
 | 
			
		||||
@ -292,5 +292,5 @@
 | 
			
		||||
  left: 0;
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  background: var(--el-color-primary);
 | 
			
		||||
  animation: scheduleOutWidth 400ms ease-in;
 | 
			
		||||
  animation: scheduleOutWidth 200ms ease-in;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ export function useDataThemeChange() {
 | 
			
		||||
  const body = document.documentElement as HTMLElement;
 | 
			
		||||
 | 
			
		||||
  /** 设置导航主题色 */
 | 
			
		||||
  function setLayoutThemeColor(theme = "default") {
 | 
			
		||||
  function setLayoutThemeColor(theme = getConfig().Theme ?? "default") {
 | 
			
		||||
    layoutTheme.value.theme = theme;
 | 
			
		||||
    toggleTheme({
 | 
			
		||||
      scopeName: `layout-theme-${theme}`
 | 
			
		||||
 | 
			
		||||
@ -13,13 +13,13 @@ const home = 0, // 平台规定只有 home 路由的 rank 才能为 0 ,所以
 | 
			
		||||
  list = 10,
 | 
			
		||||
  permission = 11,
 | 
			
		||||
  system = 12,
 | 
			
		||||
  menuoverflow = 13,
 | 
			
		||||
  tabs = 14,
 | 
			
		||||
  formdesign = 15,
 | 
			
		||||
  flowchart = 16,
 | 
			
		||||
  ppt = 17,
 | 
			
		||||
  editor = 18,
 | 
			
		||||
  guide = 19,
 | 
			
		||||
  tabs = 13,
 | 
			
		||||
  formdesign = 14,
 | 
			
		||||
  flowchart = 15,
 | 
			
		||||
  ppt = 16,
 | 
			
		||||
  editor = 17,
 | 
			
		||||
  guide = 18,
 | 
			
		||||
  menuoverflow = 19,
 | 
			
		||||
  about = 20;
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
@ -36,12 +36,12 @@ export {
 | 
			
		||||
  list,
 | 
			
		||||
  permission,
 | 
			
		||||
  system,
 | 
			
		||||
  menuoverflow,
 | 
			
		||||
  tabs,
 | 
			
		||||
  formdesign,
 | 
			
		||||
  flowchart,
 | 
			
		||||
  ppt,
 | 
			
		||||
  editor,
 | 
			
		||||
  guide,
 | 
			
		||||
  menuoverflow,
 | 
			
		||||
  about
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ export default {
 | 
			
		||||
        title: $t("menus.hsmessage"),
 | 
			
		||||
        extraIcon: {
 | 
			
		||||
          svg: true,
 | 
			
		||||
          name: "team-iconxinpinrenqiwang"
 | 
			
		||||
          name: "pure-iconfont-new"
 | 
			
		||||
        },
 | 
			
		||||
        transition: {
 | 
			
		||||
          enterTransition: "animate__fadeInLeft",
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,7 @@ export default {
 | 
			
		||||
                keepAlive: true,
 | 
			
		||||
                extraIcon: {
 | 
			
		||||
                  svg: true,
 | 
			
		||||
                  name: "team-iconxinpinrenqiwang"
 | 
			
		||||
                  name: "pure-iconfont-new"
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -241,7 +241,7 @@ function formatFlatteningRoutes(routesList: RouteRecordRaw[]) {
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 一维数组处理成多级嵌套数组(三级及以上的路由全部拍成二级,keep-alive 只支持到二级缓存)
 | 
			
		||||
 * https://github.com/xiaoxian521/vue-pure-admin/issues/67
 | 
			
		||||
 * https://github.com/pure-admin/vue-pure-admin/issues/67
 | 
			
		||||
 * @param routesList 处理后的一维路由菜单数组
 | 
			
		||||
 * @returns 返回将一维数组重新处理成规定路由的格式
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,8 @@
 | 
			
		||||
 | 
			
		||||
/* 自定义全局 CssVar */
 | 
			
		||||
:root {
 | 
			
		||||
  --pure-transition-duration: 0.016s;
 | 
			
		||||
  /* 左侧菜单展开、收起动画时长 */
 | 
			
		||||
  --pure-transition-duration: 0.3s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 灰色模式 */
 | 
			
		||||
 | 
			
		||||
@ -14,12 +14,13 @@
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .sub-menu-icon {
 | 
			
		||||
    vertical-align: middle;
 | 
			
		||||
    font-size: 18px;
 | 
			
		||||
    display: inline-flex;
 | 
			
		||||
    justify-content: center;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    margin-right: 5px;
 | 
			
		||||
 | 
			
		||||
    svg {
 | 
			
		||||
      width: 18px;
 | 
			
		||||
      height: 18px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .set-icon {
 | 
			
		||||
@ -195,7 +196,7 @@
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      padding-left: 10px;
 | 
			
		||||
      cursor: pointer;
 | 
			
		||||
      transition: all 0.125s ease;
 | 
			
		||||
      transition: all var(--pure-transition-duration) ease;
 | 
			
		||||
 | 
			
		||||
      i {
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
@ -284,6 +285,7 @@
 | 
			
		||||
 | 
			
		||||
    .el-menu-item,
 | 
			
		||||
    .el-sub-menu__title {
 | 
			
		||||
      padding-right: var(--el-menu-base-level-padding);
 | 
			
		||||
      color: $menuText;
 | 
			
		||||
 | 
			
		||||
      &:hover {
 | 
			
		||||
@ -374,19 +376,13 @@
 | 
			
		||||
 | 
			
		||||
    .el-menu-item,
 | 
			
		||||
    .el-sub-menu {
 | 
			
		||||
      // i {
 | 
			
		||||
      //   width: 20px;
 | 
			
		||||
      //   text-align: center;
 | 
			
		||||
      //   font-size: 16px;
 | 
			
		||||
      // }
 | 
			
		||||
      .iconfont {
 | 
			
		||||
        font-size: 18px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // i.fa {
 | 
			
		||||
      //   margin-right: 5px;
 | 
			
		||||
      //   font-size: 16px;
 | 
			
		||||
      // }
 | 
			
		||||
      .el-menu-tooltip__trigger {
 | 
			
		||||
        width: 54px;
 | 
			
		||||
        padding: 18px !important;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -471,13 +467,13 @@
 | 
			
		||||
  .el-menu--collapse .is-active.submenu-title-noDropdown.outer-most::before {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    top: 0;
 | 
			
		||||
    left: 2px;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    width: 2px;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    background-color: $menuActiveBefore;
 | 
			
		||||
    content: "";
 | 
			
		||||
    clear: both;
 | 
			
		||||
    transition: all 0.125s ease-in-out;
 | 
			
		||||
    transition: all var(--pure-transition-duration) ease-in-out;
 | 
			
		||||
    transform: translateY(0);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -537,7 +533,7 @@ body[layout="vertical"] {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sidebar-container {
 | 
			
		||||
      transition: width 0.125s;
 | 
			
		||||
      transition: width var(--pure-transition-duration);
 | 
			
		||||
      width: 54px !important;
 | 
			
		||||
 | 
			
		||||
      .is-active.submenu-title-noDropdown.outer-most {
 | 
			
		||||
@ -554,11 +550,10 @@ body[layout="vertical"] {
 | 
			
		||||
      .el-sub-menu {
 | 
			
		||||
        & > .el-sub-menu__title {
 | 
			
		||||
          & > span {
 | 
			
		||||
            height: 0;
 | 
			
		||||
            width: 0;
 | 
			
		||||
            overflow: hidden;
 | 
			
		||||
            visibility: hidden;
 | 
			
		||||
            display: inline-block;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            text-align: center;
 | 
			
		||||
            visibility: visible;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
@ -568,7 +563,7 @@ body[layout="vertical"] {
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .el-sub-menu__title {
 | 
			
		||||
        padding: 0 18px !important;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -597,9 +592,13 @@ body[layout="horizontal"] {
 | 
			
		||||
  $sideBarWidth: 0;
 | 
			
		||||
  @include merge-style($sideBarWidth);
 | 
			
		||||
 | 
			
		||||
  .fixed-header,
 | 
			
		||||
  .main-container {
 | 
			
		||||
    transition: none !important;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .fixed-header {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    transition: none !important;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -622,7 +621,7 @@ body[layout="mix"] {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .sidebar-container {
 | 
			
		||||
      transition: width 0.125s;
 | 
			
		||||
      transition: width var(--pure-transition-duration);
 | 
			
		||||
      width: 54px !important;
 | 
			
		||||
 | 
			
		||||
      .is-active.submenu-title-noDropdown.outer-most {
 | 
			
		||||
@ -638,12 +637,12 @@ body[layout="mix"] {
 | 
			
		||||
    .el-menu--collapse {
 | 
			
		||||
      .el-sub-menu {
 | 
			
		||||
        & > .el-sub-menu__title {
 | 
			
		||||
          padding: 0;
 | 
			
		||||
          & > span {
 | 
			
		||||
            height: 0;
 | 
			
		||||
            width: 0;
 | 
			
		||||
            overflow: hidden;
 | 
			
		||||
            visibility: hidden;
 | 
			
		||||
            display: inline-block;
 | 
			
		||||
            height: 100%;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
            text-align: center;
 | 
			
		||||
            visibility: visible;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
@ -2,4 +2,4 @@
 | 
			
		||||
 | 
			
		||||
- `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)
 | 
			
		||||
- [文档代码地址](https://github.com/xiaoxian521/pure-admin-utils-docs)
 | 
			
		||||
- [文档代码地址](https://github.com/pure-admin/pure-admin-utils-docs)
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ const base64 =
 | 
			
		||||
 | 
			
		||||
function down() {
 | 
			
		||||
  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"
 | 
			
		||||
    })
 | 
			
		||||
    .then(({ data }) => {
 | 
			
		||||
@ -34,7 +34,7 @@ function down() {
 | 
			
		||||
      <el-button
 | 
			
		||||
        @click="
 | 
			
		||||
          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'
 | 
			
		||||
          )
 | 
			
		||||
        "
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ const showAllPages = ref(false);
 | 
			
		||||
const rotations = [0, 90, 180, 270];
 | 
			
		||||
 | 
			
		||||
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 = () => {
 | 
			
		||||
  loading.value = false;
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,7 @@ export function useColumns() {
 | 
			
		||||
      cellRenderer: () => {
 | 
			
		||||
        return (
 | 
			
		||||
          <a
 | 
			
		||||
            href="https://github.com/xiaoxian521/vue-pure-admin"
 | 
			
		||||
            href="https://github.com/pure-admin/vue-pure-admin"
 | 
			
		||||
            target="_blank"
 | 
			
		||||
          >
 | 
			
		||||
            <span style="color: var(--el-color-primary)">Github</span>
 | 
			
		||||
 | 
			
		||||
@ -58,9 +58,7 @@ const tableDataMore = cloneData.map(item =>
 | 
			
		||||
 | 
			
		||||
const tableDataImage = cloneData.map((item, index) =>
 | 
			
		||||
  Object.assign(item, {
 | 
			
		||||
    image: `https://xiaoxian521.github.io/pure-admin-table/imgs/${
 | 
			
		||||
      index + 1
 | 
			
		||||
    }.jpg`
 | 
			
		||||
    image: `https://pure-admin.github.io/pure-admin-table/imgs/${index + 1}.jpg`
 | 
			
		||||
  })
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ const tableData = [
 | 
			
		||||
      {
 | 
			
		||||
        more: {
 | 
			
		||||
          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: {
 | 
			
		||||
          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">'
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ function tabClick({ index }) {
 | 
			
		||||
        <span class="font-medium">
 | 
			
		||||
          高级用法全部采用 tsx 语法,充分发挥
 | 
			
		||||
          <el-link
 | 
			
		||||
            href="https://github.com/xiaoxian521/pure-admin-table"
 | 
			
		||||
            href="https://github.com/pure-admin/pure-admin-table"
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            style="font-size: 16px; margin: 0 4px 5px"
 | 
			
		||||
          >
 | 
			
		||||
 | 
			
		||||
@ -56,9 +56,7 @@ const tableDataMore = clone(tableData, true).map(item =>
 | 
			
		||||
 | 
			
		||||
const tableDataImage = clone(tableData, true).map((item, index) =>
 | 
			
		||||
  Object.assign(item, {
 | 
			
		||||
    image: `https://xiaoxian521.github.io/pure-admin-table/imgs/${
 | 
			
		||||
      index + 1
 | 
			
		||||
    }.jpg`
 | 
			
		||||
    image: `https://pure-admin.github.io/pure-admin-table/imgs/${index + 1}.jpg`
 | 
			
		||||
  })
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ function tabClick({ index }) {
 | 
			
		||||
          并提供灵活的配置项以及完善的类型提醒,再也不用将代码都写在 template
 | 
			
		||||
          里了,欢迎 Star
 | 
			
		||||
          <el-link
 | 
			
		||||
            href="https://github.com/xiaoxian521/pure-admin-table"
 | 
			
		||||
            href="https://github.com/pure-admin/pure-admin-table"
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            style="font-size: 16px; margin: 0 4px 5px"
 | 
			
		||||
          >
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,7 @@ function resizeHandler() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 => {
 | 
			
		||||
    list.value = res.data.map(v => {
 | 
			
		||||
      return {
 | 
			
		||||
@ -95,7 +95,7 @@ onUnmounted(() => {
 | 
			
		||||
        <img
 | 
			
		||||
          src="https://avatars.githubusercontent.com/u/44761321?v=4"
 | 
			
		||||
          title="直达仓库地址"
 | 
			
		||||
          @click="openLink('https://github.com/xiaoxian521/vue-pure-admin')"
 | 
			
		||||
          @click="openLink('https://github.com/pure-admin/vue-pure-admin')"
 | 
			
		||||
        />
 | 
			
		||||
        <TypeIt
 | 
			
		||||
          :className="'type-it0'"
 | 
			
		||||
@ -190,7 +190,7 @@ onUnmounted(() => {
 | 
			
		||||
          <template #header>
 | 
			
		||||
            <a
 | 
			
		||||
              :class="titleClass"
 | 
			
		||||
              href="https://github.com/xiaoxian521/vue-pure-admin/releases"
 | 
			
		||||
              href="https://github.com/pure-admin/vue-pure-admin/releases"
 | 
			
		||||
              target="_black"
 | 
			
		||||
            >
 | 
			
		||||
              <TypeIt
 | 
			
		||||
@ -245,7 +245,7 @@ onUnmounted(() => {
 | 
			
		||||
          <template #header>
 | 
			
		||||
            <a
 | 
			
		||||
              :class="titleClass"
 | 
			
		||||
              href="https://github.com/xiaoxian521/vue-pure-admin"
 | 
			
		||||
              href="https://github.com/pure-admin/vue-pure-admin"
 | 
			
		||||
              target="_black"
 | 
			
		||||
            >
 | 
			
		||||
              <TypeIt
 | 
			
		||||
@ -288,7 +288,7 @@ onUnmounted(() => {
 | 
			
		||||
          <template #header>
 | 
			
		||||
            <a
 | 
			
		||||
              :class="titleClass"
 | 
			
		||||
              href="https://github.com/xiaoxian521/vue-pure-admin"
 | 
			
		||||
              href="https://github.com/pure-admin/vue-pure-admin"
 | 
			
		||||
              target="_black"
 | 
			
		||||
            >
 | 
			
		||||
              <TypeIt
 | 
			
		||||
@ -331,7 +331,7 @@ onUnmounted(() => {
 | 
			
		||||
          <template #header>
 | 
			
		||||
            <a
 | 
			
		||||
              :class="titleClass"
 | 
			
		||||
              href="https://github.com/xiaoxian521/vue-pure-admin"
 | 
			
		||||
              href="https://github.com/pure-admin/vue-pure-admin"
 | 
			
		||||
              target="_black"
 | 
			
		||||
            >
 | 
			
		||||
              <TypeIt
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user