mirror of
				https://github.com/soybeanjs/soybean-admin.git
				synced 2025-10-31 22:03:41 +08:00 
			
		
		
		
	Compare commits
	
		
			22 Commits
		
	
	
		
			tauri-v1.1
			...
			tauri-v1.2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 3eaf6c43d7 | ||
|  | 79e85bc6b5 | ||
|  | bf7183747b | ||
|  | aabb2a49c4 | ||
|  | 7026126a57 | ||
|  | c212565248 | ||
|  | 813d8ce4c7 | ||
|  | 20a8127434 | ||
|  | ec8cadd183 | ||
|  | 4470cb4e8c | ||
|  | 8f9a70505c | ||
|  | 9094b21cbb | ||
|  | 6259287240 | ||
|  | 22004ff4dc | ||
|  | 08827a42a3 | ||
|  | 6a6eb9afd6 | ||
|  | ff51b72dac | ||
|  | fe06b8c499 | ||
|  | 4b63bbcf67 | ||
|  | 5531a68641 | ||
|  | 584cd54d6d | ||
|  | 2bec899031 | 
							
								
								
									
										81
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										81
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -1,6 +1,87 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## [v1.2.3](https://github.com/soybeanjs/soybean-admin/compare/v1.2.2...v1.2.3) (2024-06-13) | ||||||
|  |  | ||||||
|  | ###    🐞 Bug Fixes | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - fix mobile browser theme issue by adding color-scheme meta tag to index.html  -  by @KickCashew in https://github.com/soybeanjs/soybean-admin/issues/488 [<samp>(c2125)</samp>](https://github.com/soybeanjs/soybean-admin/commit/c212565) | ||||||
|  |   - Fix secondary directory components is empty  -  by @paynezhuang in https://github.com/soybeanjs/soybean-admin/issues/491 [<samp>(aabb2)</samp>](https://github.com/soybeanjs/soybean-admin/commit/aabb2a4) | ||||||
|  |  | ||||||
|  | ###    📖 Documentation | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - Fixed the hyperlink pointing error  -  by **Azir** [<samp>(20a81)</samp>](https://github.com/soybeanjs/soybean-admin/commit/20a8127) | ||||||
|  |   - update README  -  by @soybeanjs [<samp>(70261)</samp>](https://github.com/soybeanjs/soybean-admin/commit/7026126) | ||||||
|  |  | ||||||
|  | ###    🏡 Chore | ||||||
|  |  | ||||||
|  | - **deps**: | ||||||
|  |   - update deps  -  by @soybeanjs [<samp>(813d8)</samp>](https://github.com/soybeanjs/soybean-admin/commit/813d8ce) | ||||||
|  |   - update deps  -  by @soybeanjs [<samp>(bf718)</samp>](https://github.com/soybeanjs/soybean-admin/commit/bf71837) | ||||||
|  |  | ||||||
|  | ###    ❤️ Contributors | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)  [](https://github.com/paynezhuang)  [](https://github.com/KickCashew)   | ||||||
|  | [Azir](mailto:2075125282@qq.com) | ||||||
|  |  | ||||||
|  | ## [v1.2.2](https://github.com/honghuangdc/soybean-admin/compare/v1.2.1...v1.2.2) (2024-06-12) | ||||||
|  |  | ||||||
|  | ###    🚀 Features | ||||||
|  |  | ||||||
|  | - **projects**: reset scroll position when tab change  -  by @soybeanjs [<samp>(9094b)</samp>](https://github.com/honghuangdc/soybean-admin/commit/9094b21) | ||||||
|  |  | ||||||
|  | ###    🐞 Bug Fixes | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - hide AppVersionNotification in DEV mode  -  by @sigma-plus in https://github.com/honghuangdc/soybean-admin/issues/482 [<samp>(62592)</samp>](https://github.com/honghuangdc/soybean-admin/commit/6259287) | ||||||
|  |   - fix menu-toggler hidden in mobile layout. fixed #483  -  by @soybeanjs in https://github.com/honghuangdc/soybean-admin/issues/483 [<samp>(4470c)</samp>](https://github.com/honghuangdc/soybean-admin/commit/4470cb4) | ||||||
|  |  | ||||||
|  | ###    📖 Documentation | ||||||
|  |  | ||||||
|  | - **projects**: update README  -  by @soybeanjs [<samp>(8f9a7)</samp>](https://github.com/honghuangdc/soybean-admin/commit/8f9a705) | ||||||
|  |  | ||||||
|  | ###    ❤️ Contributors | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)  [](https://github.com/sigma-plus)   | ||||||
|  |  | ||||||
|  | ## [v1.2.1](https://github.com/honghuangdc/soybean-admin/compare/v1.2.0...v1.2.1) (2024-06-07) | ||||||
|  |  | ||||||
|  | ###    🐞 Bug Fixes | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - fix get user info when page reload  -  by @soybeanjs [<samp>(ff51b)</samp>](https://github.com/honghuangdc/soybean-admin/commit/ff51b72) | ||||||
|  |   - fix setupAppVersionNotification render  -  by @soybeanjs [<samp>(6a6eb)</samp>](https://github.com/honghuangdc/soybean-admin/commit/6a6eb9a) | ||||||
|  |  | ||||||
|  | ###    📖 Documentation | ||||||
|  |  | ||||||
|  | - **projects**: update CHANGELOG  -  by @soybeanjs [<samp>(fe06b)</samp>](https://github.com/honghuangdc/soybean-admin/commit/fe06b8c) | ||||||
|  |  | ||||||
|  | ###    🏡 Chore | ||||||
|  |  | ||||||
|  | - **deps**: update deps  -  by @soybeanjs [<samp>(08827)</samp>](https://github.com/honghuangdc/soybean-admin/commit/08827a4) | ||||||
|  |  | ||||||
|  | ###    ❤️ Contributors | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)   | ||||||
|  |  | ||||||
|  | ## [v1.2.0](https://github.com/soybeanjs/soybean-admin/compare/v1.1.5...v1.2.0) (2024-06-06) | ||||||
|  |  | ||||||
|  | ###    🚀 Features | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - support system new version update notification. close #420  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/420 [<samp>(584cd)</samp>](https://github.com/soybeanjs/soybean-admin/commit/584cd54) | ||||||
|  |   - get user info in router guard and remove in localStorage. close #459  -  by @soybeanjs in https://github.com/soybeanjs/soybean-admin/issues/459 [<samp>(5531a)</samp>](https://github.com/soybeanjs/soybean-admin/commit/5531a68) | ||||||
|  |  | ||||||
|  | ###    📖 Documentation | ||||||
|  |  | ||||||
|  | - **projects**: update CHANGELOG  -  by @soybeanjs [<samp>(2bec8)</samp>](https://github.com/soybeanjs/soybean-admin/commit/2bec899) | ||||||
|  |  | ||||||
|  | ###    ❤️ Contributors | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)   | ||||||
|  |  | ||||||
| ## [v1.1.5](https://github.com/soybeanjs/soybean-admin/compare/v1.1.4...v1.1.5) (2024-06-06) | ## [v1.1.5](https://github.com/soybeanjs/soybean-admin/compare/v1.1.4...v1.1.5) (2024-06-06) | ||||||
|  |  | ||||||
| ###    🐞 Bug Fixes | ###    🐞 Bug Fixes | ||||||
|   | |||||||
| @@ -1,5 +1,67 @@ | |||||||
| # 更新日志 | # 更新日志 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## [v1.2.0](https://github.com/soybeanjs/soybean-admin/compare/v1.1.5...v1.2.0) (2024-06-06) | ||||||
|  |  | ||||||
|  | ###    🚀 功能 | ||||||
|  |  | ||||||
|  | - **项目**: | ||||||
|  |   - 支持系统新版本更新通知。关闭 #420  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/420 [<samp>(584cd)</samp>](https://github.com/soybeanjs/soybean-admin/commit/584cd54) | ||||||
|  |   - 在路由守卫中获取用户信息并从localStorage中移除。关闭 #459  -  由 @soybeanjs 在 https://github.com/soybeanjs/soybean-admin/issues/459 [<samp>(5531a)</samp>](https://github.com/soybeanjs/soybean-admin/commit/5531a68) | ||||||
|  |  | ||||||
|  | ###    📖 文档 | ||||||
|  |  | ||||||
|  | - **项目**: 更新CHANGELOG  -  由 @soybeanjs [<samp>(2bec8)</samp>](https://github.com/soybeanjs/soybean-admin/commit/2bec899) | ||||||
|  |  | ||||||
|  | ###    ❤️ 贡献者 | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)   | ||||||
|  |  | ||||||
|  | ## [v1.1.5](https://github.com/soybeanjs/soybean-admin/compare/v1.1.4...v1.1.5) (2024-06-06) | ||||||
|  |  | ||||||
|  | ###    🐞 错误修复 | ||||||
|  |  | ||||||
|  | - **项目**: 修复注册组件名,CodeLogin => Register  -  由 @m-xlsea 在 https://github.com/soybeanjs/soybean-admin/issues/478 [<samp>(ddf38)</samp>](https://github.com/soybeanjs/soybean-admin/commit/ddf3823) | ||||||
|  |  | ||||||
|  | ###    🏡 杂务 | ||||||
|  |  | ||||||
|  | - **依赖**: 更新依赖  -  由 @soybeanjs [<samp>(060c0)</samp>](https://github.com/soybeanjs/soybean-admin/commit/060c0a9) | ||||||
|  | - **项目**: 更新 vscode 设置: vue 官方  -  由 @soybeanjs [<samp>(76649)</samp>](https://github.com/soybeanjs/soybean-admin/commit/76649e2) | ||||||
|  |  | ||||||
|  | ###    ❤️ 贡献者 | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)  [](https://github.com/m-xlsea)   | ||||||
|  |  | ||||||
|  | ## [v1.1.4](https://github.com/honghuangdc/soybean-admin/compare/v1.1.3...v1.1.4) (2024-06-06) | ||||||
|  |  | ||||||
|  | ###    🐞 错误修复 | ||||||
|  |  | ||||||
|  | - **utils**: 修复了按esc键时modalLogout的错误  -  由 @sigma-plus 在 https://github.com/honghuangdc/soybean-admin/issues/470 中提出 [<samp>(bd69c)</samp>](https://github.com/honghuangdc/soybean-admin/commit/bd69c00) | ||||||
|  |  | ||||||
|  | ###    🛠 优化 | ||||||
|  |  | ||||||
|  | - **projects**: 优化了RouteMeta的备注  -  由 @soybeanjs 提出 [<samp>(ffb48)</samp>](https://github.com/honghuangdc/soybean-admin/commit/ffb48b1) | ||||||
|  |  | ||||||
|  | ###    📖 文档 | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - 更新了CHANGELOG  -  由 @soybeanjs 提出 [<samp>(756f8)</samp>](https://github.com/honghuangdc/soybean-admin/commit/756f84a) | ||||||
|  |   - 更新了Node&pnpm版本  -  由 @Azir-11 在 https://github.com/honghuangdc/soybean-admin/issues/472 中提出 [<samp>(9b05d)</samp>](https://github.com/honghuangdc/soybean-admin/commit/9b05d73) | ||||||
|  |  | ||||||
|  | ###    🏡 杂项 | ||||||
|  |  | ||||||
|  | - **deps**: | ||||||
|  |   - 更新了依赖  -  由 @soybeanjs 提出 [<samp>(d0380)</samp>](https://github.com/honghuangdc/soybean-admin/commit/d0380ce) | ||||||
|  |   - 更新了依赖  -  由 @soybeanjs 提出 [<samp>(1f464)</samp>](https://github.com/honghuangdc/soybean-admin/commit/1f4647b) | ||||||
|  | - **projects**: | ||||||
|  |   - 关闭了http代理  -  由 @soybeanjs 提出 [<samp>(d08a3)</samp>](https://github.com/honghuangdc/soybean-admin/commit/d08a381) | ||||||
|  |   - 更新了mock url  -  由 @soybeanjs 提出 [<samp>(e6086)</samp>](https://github.com/honghuangdc/soybean-admin/commit/e6086f0) | ||||||
|  |   - 更新了vscode设置  -  由 @soybeanjs 提出 [<samp>(910df)</samp>](https://github.com/honghuangdc/soybean-admin/commit/910dfca) | ||||||
|  |  | ||||||
|  | ###    ❤️ 贡献者 | ||||||
|  |  | ||||||
|  | [](https://github.com/soybeanjs)  [](https://github.com/Azir-11)  [](https://github.com/sigma-plus)   | ||||||
|  |  | ||||||
| ## [v1.1.3](https://github.com/soybeanjs/soybean-admin/compare/v1.1.2...v1.1.3) (2024-06-02) | ## [v1.1.3](https://github.com/soybeanjs/soybean-admin/compare/v1.1.2...v1.1.3) (2024-06-02) | ||||||
|  |  | ||||||
| ###    🐞 错误修复 | ###    🐞 错误修复 | ||||||
|   | |||||||
| @@ -11,6 +11,9 @@ | |||||||
| [](https://github.com/soybeanjs/soybean-admin) | [](https://github.com/soybeanjs/soybean-admin) | ||||||
| [](https://gitee.com/honghuangdc/soybean-admin) | [](https://gitee.com/honghuangdc/soybean-admin) | ||||||
|  |  | ||||||
|  | <a href="https://hellogithub.com/repository/1298f27d5fe54959a16cf9686516ddb3" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=1298f27d5fe54959a16cf9686516ddb3&claim_uid=IiDXWmP4TEntjbV" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a> | ||||||
|  |  | ||||||
|  |  | ||||||
| > [!NOTE] | > [!NOTE] | ||||||
| > If you think `SoybeanAdmin` is helpful to you, or you like our project, please give us a ⭐️ on GitHub. Your support is the driving force for us to continue to improve and add new features! Thank you for your support! | > If you think `SoybeanAdmin` is helpful to you, or you like our project, please give us a ⭐️ on GitHub. Your support is the driving force for us to continue to improve and add new features! Thank you for your support! | ||||||
|  |  | ||||||
| @@ -154,10 +157,10 @@ Thanks the following people for their contributions. If you want to contribute t | |||||||
|   	<p>QQ Group</p> |   	<p>QQ Group</p> | ||||||
|     <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/qq-soybean-admin-2.jpg" style="width:200px" /> |     <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/qq-soybean-admin-2.jpg" style="width:200px" /> | ||||||
|   </div> |   </div> | ||||||
| 	<!-- <div> | 	<div> | ||||||
| 		<p>WeChat Group</p> | 		<p>WeChat Group</p> | ||||||
| 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-0402.jpg" style="width:200px" /> | 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/picgo/soybean-admin-wechat-0620.jpg" style="width:200px" /> | ||||||
| 	</div> --> | 	</div> | ||||||
| 	<div> | 	<div> | ||||||
| 		<p>Add the following WeChat to invite to the WeChat group</p> | 		<p>Add the following WeChat to invite to the WeChat group</p> | ||||||
| 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybeanjs.jpg" style="width:200px" /> | 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybeanjs.jpg" style="width:200px" /> | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| <div align="center"> | <div align="center"> | ||||||
| 	<img src="./public/favicon.svg" width="160" /> | 	<img src="./public/favicon.svg" width="160" /> | ||||||
| 	<h1>SoybeanAdmin</h1> | 	<h1>SoybeanAdmin</h1> | ||||||
|   <span><a href="./README.zh_CN.md">English</a> | 中文</span> |   <span><a href="./README.md">English</a> | 中文</span> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| --- | --- | ||||||
| @@ -11,6 +11,8 @@ | |||||||
| [](https://github.com/soybeanjs/soybean-admin) | [](https://github.com/soybeanjs/soybean-admin) | ||||||
| [](https://gitee.com/honghuangdc/soybean-admin) | [](https://gitee.com/honghuangdc/soybean-admin) | ||||||
|  |  | ||||||
|  | <a href="https://hellogithub.com/repository/1298f27d5fe54959a16cf9686516ddb3" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=1298f27d5fe54959a16cf9686516ddb3&claim_uid=IiDXWmP4TEntjbV" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a> | ||||||
|  |  | ||||||
| > [!NOTE] | > [!NOTE] | ||||||
| > 如果您觉得 `SoybeanAdmin`对您有所帮助,或者您喜欢我们的项目,请在 GitHub 上给我们一个 ⭐️。您的支持是我们持续改进和增加新功能的动力!感谢您的支持! | > 如果您觉得 `SoybeanAdmin`对您有所帮助,或者您喜欢我们的项目,请在 GitHub 上给我们一个 ⭐️。您的支持是我们持续改进和增加新功能的动力!感谢您的支持! | ||||||
|  |  | ||||||
| @@ -155,10 +157,10 @@ pnpm build | |||||||
|   	<p>QQ交流群</p> |   	<p>QQ交流群</p> | ||||||
|     <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/qq-soybean-admin-2.jpg" style="width:200px" /> |     <img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/qq-soybean-admin-2.jpg" style="width:200px" /> | ||||||
|   </div> |   </div> | ||||||
| 	<!-- <div> | 	<div> | ||||||
| 		<p>微信群</p> | 		<p>微信群</p> | ||||||
| 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-0402.jpg" style="width:200px" /> | 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/picgo/soybean-admin-wechat-0620.jpg" style="width:200px" /> | ||||||
| 	</div> --> | 	</div> | ||||||
| 	<div> | 	<div> | ||||||
| 		<p>添加下面微信邀请进微信群</p> | 		<p>添加下面微信邀请进微信群</p> | ||||||
| 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybeanjs.jpg" style="width:200px" /> | 		<img src="https://soybeanjs-1300612522.cos.ap-guangzhou.myqcloud.com/uPic/wechat-soybeanjs.jpg" style="width:200px" /> | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								build/plugins/html.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								build/plugins/html.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | import type { Plugin } from 'vite'; | ||||||
|  |  | ||||||
|  | export function setupHtmlPlugin(buildTime: string) { | ||||||
|  |   const plugin: Plugin = { | ||||||
|  |     name: 'html-plugin', | ||||||
|  |     apply: 'build', | ||||||
|  |     transformIndexHtml(html) { | ||||||
|  |       return html.replace('<head>', `<head>\n    <meta name="buildTime" content="${buildTime}">`); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   return plugin; | ||||||
|  | } | ||||||
| @@ -6,8 +6,9 @@ import progress from 'vite-plugin-progress'; | |||||||
| import { setupElegantRouter } from './router'; | import { setupElegantRouter } from './router'; | ||||||
| import { setupUnocss } from './unocss'; | import { setupUnocss } from './unocss'; | ||||||
| import { setupUnplugin } from './unplugin'; | import { setupUnplugin } from './unplugin'; | ||||||
|  | import { setupHtmlPlugin } from './html'; | ||||||
|  |  | ||||||
| export function setupVitePlugins(viteEnv: Env.ImportMeta) { | export function setupVitePlugins(viteEnv: Env.ImportMeta, buildTime: string) { | ||||||
|   const plugins: PluginOption = [ |   const plugins: PluginOption = [ | ||||||
|     vue({ |     vue({ | ||||||
|       script: { |       script: { | ||||||
| @@ -19,7 +20,8 @@ export function setupVitePlugins(viteEnv: Env.ImportMeta) { | |||||||
|     setupElegantRouter(), |     setupElegantRouter(), | ||||||
|     setupUnocss(viteEnv), |     setupUnocss(viteEnv), | ||||||
|     ...setupUnplugin(viteEnv), |     ...setupUnplugin(viteEnv), | ||||||
|     progress() |     progress(), | ||||||
|  |     setupHtmlPlugin(buildTime) | ||||||
|   ]; |   ]; | ||||||
|  |  | ||||||
|   return plugins; |   return plugins; | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
|     <meta charset="UTF-8" /> |     <meta charset="UTF-8" /> | ||||||
|     <link rel="icon" href="/favicon.svg" /> |     <link rel="icon" href="/favicon.svg" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|  |     <meta name="color-scheme" content="light dark" /> | ||||||
|     <title>%VITE_APP_TITLE%</title> |     <title>%VITE_APP_TITLE%</title> | ||||||
|   </head> |   </head> | ||||||
|   <body> |   <body> | ||||||
|   | |||||||
							
								
								
									
										34
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | |||||||
| { | { | ||||||
|   "name": "soybean-admin", |   "name": "soybean-admin", | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。", |   "description": "A fresh and elegant admin template, based on Vue3、Vite3、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite3、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。", | ||||||
|   "author": { |   "author": { | ||||||
|     "name": "Soybean", |     "name": "Soybean", | ||||||
| @@ -56,7 +56,7 @@ | |||||||
|     "@sa/hooks": "workspace:*", |     "@sa/hooks": "workspace:*", | ||||||
|     "@sa/materials": "workspace:*", |     "@sa/materials": "workspace:*", | ||||||
|     "@sa/utils": "workspace:*", |     "@sa/utils": "workspace:*", | ||||||
|     "@vueuse/core": "10.10.0", |     "@vueuse/core": "10.11.0", | ||||||
|     "clipboard": "2.0.11", |     "clipboard": "2.0.11", | ||||||
|     "dayjs": "1.11.11", |     "dayjs": "1.11.11", | ||||||
|     "echarts": "5.5.0", |     "echarts": "5.5.0", | ||||||
| @@ -64,45 +64,45 @@ | |||||||
|     "naive-ui": "2.38.2", |     "naive-ui": "2.38.2", | ||||||
|     "nprogress": "0.2.0", |     "nprogress": "0.2.0", | ||||||
|     "pinia": "2.1.7", |     "pinia": "2.1.7", | ||||||
|     "tailwind-merge": "^2.3.0", |     "tailwind-merge": "2.3.0", | ||||||
|     "vue": "3.4.27", |     "vue": "3.4.27", | ||||||
|     "vue-draggable-plus": "0.5.0", |     "vue-draggable-plus": "0.5.0", | ||||||
|     "vue-i18n": "9.13.1", |     "vue-i18n": "9.13.1", | ||||||
|     "vue-router": "4.3.2" |     "vue-router": "4.3.3" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@elegant-router/vue": "0.3.7", |     "@elegant-router/vue": "0.3.7", | ||||||
|     "@iconify/json": "2.2.216", |     "@iconify/json": "2.2.218", | ||||||
|     "@sa/scripts": "workspace:*", |     "@sa/scripts": "workspace:*", | ||||||
|     "@sa/uno-preset": "workspace:*", |     "@sa/uno-preset": "workspace:*", | ||||||
|     "@soybeanjs/eslint-config": "1.3.6", |     "@soybeanjs/eslint-config": "1.3.6", | ||||||
|     "@tauri-apps/cli": "1.5.11", |     "@tauri-apps/cli": "1.5.14", | ||||||
|     "@types/lodash-es": "4.17.12", |     "@types/lodash-es": "4.17.12", | ||||||
|     "@types/node": "20.14.2", |     "@types/node": "20.14.2", | ||||||
|     "@types/nprogress": "0.2.3", |     "@types/nprogress": "0.2.3", | ||||||
|     "@unocss/eslint-config": "0.60.4", |     "@unocss/eslint-config": "0.61.0", | ||||||
|     "@unocss/preset-icons": "0.60.4", |     "@unocss/preset-icons": "0.61.0", | ||||||
|     "@unocss/preset-uno": "0.60.4", |     "@unocss/preset-uno": "0.61.0", | ||||||
|     "@unocss/transformer-directives": "0.60.4", |     "@unocss/transformer-directives": "0.61.0", | ||||||
|     "@unocss/transformer-variant-group": "0.60.4", |     "@unocss/transformer-variant-group": "0.61.0", | ||||||
|     "@unocss/vite": "0.60.4", |     "@unocss/vite": "0.61.0", | ||||||
|     "@vitejs/plugin-vue": "5.0.5", |     "@vitejs/plugin-vue": "5.0.5", | ||||||
|     "@vitejs/plugin-vue-jsx": "4.0.0", |     "@vitejs/plugin-vue-jsx": "4.0.0", | ||||||
|     "eslint": "9.4.0", |     "eslint": "9.4.0", | ||||||
|     "eslint-plugin-vue": "9.26.0", |     "eslint-plugin-vue": "9.26.0", | ||||||
|     "lint-staged": "15.2.5", |     "lint-staged": "15.2.7", | ||||||
|     "sass": "1.77.4", |     "sass": "1.77.5", | ||||||
|     "simple-git-hooks": "2.11.1", |     "simple-git-hooks": "2.11.1", | ||||||
|     "tsx": "4.12.0", |     "tsx": "4.15.4", | ||||||
|     "typescript": "5.4.5", |     "typescript": "5.4.5", | ||||||
|     "unplugin-icons": "0.19.0", |     "unplugin-icons": "0.19.0", | ||||||
|     "unplugin-vue-components": "0.27.0", |     "unplugin-vue-components": "0.27.0", | ||||||
|     "vite": "5.2.12", |     "vite": "5.3.0", | ||||||
|     "vite-plugin-progress": "0.0.7", |     "vite-plugin-progress": "0.0.7", | ||||||
|     "vite-plugin-svg-icons": "2.0.1", |     "vite-plugin-svg-icons": "2.0.1", | ||||||
|     "vite-plugin-vue-devtools": "7.2.1", |     "vite-plugin-vue-devtools": "7.2.1", | ||||||
|     "vue-eslint-parser": "9.4.3", |     "vue-eslint-parser": "9.4.3", | ||||||
|     "vue-tsc": "2.0.19" |     "vue-tsc": "2.0.21" | ||||||
|   }, |   }, | ||||||
|   "simple-git-hooks": { |   "simple-git-hooks": { | ||||||
|     "commit-msg": "pnpm sa git-commit-verify", |     "commit-msg": "pnpm sa git-commit-verify", | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/axios", |   "name": "@sa/axios", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/color", |   "name": "@sa/color", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/hooks", |   "name": "@sa/hooks", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/materials", |   "name": "@sa/materials", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/fetch", |   "name": "@sa/fetch", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/scripts", |   "name": "@sa/scripts", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "bin": { |   "bin": { | ||||||
|     "sa": "./bin.ts" |     "sa": "./bin.ts" | ||||||
|   }, |   }, | ||||||
| @@ -19,7 +19,7 @@ | |||||||
|     "cac": "6.7.14", |     "cac": "6.7.14", | ||||||
|     "consola": "3.2.3", |     "consola": "3.2.3", | ||||||
|     "enquirer": "2.4.1", |     "enquirer": "2.4.1", | ||||||
|     "execa": "9.1.0", |     "execa": "9.2.0", | ||||||
|     "kolorist": "1.8.0", |     "kolorist": "1.8.0", | ||||||
|     "npm-check-updates": "16.14.20", |     "npm-check-updates": "16.14.20", | ||||||
|     "rimraf": "5.0.7" |     "rimraf": "5.0.7" | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/uno-preset", |   "name": "@sa/uno-preset", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/utils", |   "name": "@sa/utils", | ||||||
|   "version": "1.1.5", |   "version": "1.2.3", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
							
								
								
									
										852
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										852
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -41,6 +41,7 @@ const icon = computed(() => { | |||||||
|  |  | ||||||
| <template> | <template> | ||||||
|   <ButtonIcon |   <ButtonIcon | ||||||
|  |     :key="String(collapsed)" | ||||||
|     :tooltip-content="collapsed ? $t('icon.expand') : $t('icon.collapse')" |     :tooltip-content="collapsed ? $t('icon.expand') : $t('icon.collapse')" | ||||||
|     tooltip-placement="bottom-start" |     tooltip-placement="bottom-start" | ||||||
|     :z-index="zIndex" |     :z-index="zIndex" | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||||
| import { computed } from 'vue'; | import { computed } from 'vue'; | ||||||
|  | import { LAYOUT_SCROLL_EL_ID } from '@sa/materials'; | ||||||
| import { useAppStore } from '@/store/modules/app'; | import { useAppStore } from '@/store/modules/app'; | ||||||
| import { useThemeStore } from '@/store/modules/theme'; | import { useThemeStore } from '@/store/modules/theme'; | ||||||
| import { useRouteStore } from '@/store/modules/route'; | import { useRouteStore } from '@/store/modules/route'; | ||||||
| @@ -24,6 +25,12 @@ const routeStore = useRouteStore(); | |||||||
| const tabStore = useTabStore(); | const tabStore = useTabStore(); | ||||||
|  |  | ||||||
| const transitionName = computed(() => (themeStore.page.animate ? themeStore.page.animateMode : '')); | const transitionName = computed(() => (themeStore.page.animate ? themeStore.page.animateMode : '')); | ||||||
|  |  | ||||||
|  | function resetScroll() { | ||||||
|  |   const el = document.querySelector(`#${LAYOUT_SCROLL_EL_ID}`); | ||||||
|  |  | ||||||
|  |   el?.scrollTo({ left: 0, top: 0 }); | ||||||
|  | } | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <template> | <template> | ||||||
| @@ -32,6 +39,7 @@ const transitionName = computed(() => (themeStore.page.animate ? themeStore.page | |||||||
|       :name="transitionName" |       :name="transitionName" | ||||||
|       mode="out-in" |       mode="out-in" | ||||||
|       @before-leave="appStore.setContentXScrollable(true)" |       @before-leave="appStore.setContentXScrollable(true)" | ||||||
|  |       @after-leave="resetScroll" | ||||||
|       @after-enter="appStore.setContentXScrollable(false)" |       @after-enter="appStore.setContentXScrollable(false)" | ||||||
|     > |     > | ||||||
|       <KeepAlive :include="routeStore.cacheRoutes"> |       <KeepAlive :include="routeStore.cacheRoutes"> | ||||||
|   | |||||||
| @@ -1,6 +1,10 @@ | |||||||
| const local: App.I18n.Schema = { | const local: App.I18n.Schema = { | ||||||
|   system: { |   system: { | ||||||
|     title: 'SoybeanAdmin' |     title: 'SoybeanAdmin', | ||||||
|  |     updateTitle: 'System Version Update Notification', | ||||||
|  |     updateContent: 'A new version of the system has been detected. Do you want to refresh the page immediately?', | ||||||
|  |     updateConfirm: 'Refresh immediately', | ||||||
|  |     updateCancel: 'Later' | ||||||
|   }, |   }, | ||||||
|   common: { |   common: { | ||||||
|     action: 'Action', |     action: 'Action', | ||||||
|   | |||||||
| @@ -1,6 +1,10 @@ | |||||||
| const local: App.I18n.Schema = { | const local: App.I18n.Schema = { | ||||||
|   system: { |   system: { | ||||||
|     title: 'Soybean 管理系统' |     title: 'Soybean 管理系统', | ||||||
|  |     updateTitle: '系统版本更新通知', | ||||||
|  |     updateContent: '检测到系统有新版本发布,是否立即刷新页面?', | ||||||
|  |     updateConfirm: '立即刷新', | ||||||
|  |     updateCancel: '稍后再说' | ||||||
|   }, |   }, | ||||||
|   common: { |   common: { | ||||||
|     action: '操作', |     action: '操作', | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { createApp } from 'vue'; | import { createApp } from 'vue'; | ||||||
| import './plugins/assets'; | import './plugins/assets'; | ||||||
| import { setupDayjs, setupIconifyOffline, setupLoading, setupNProgress } from './plugins'; | import { setupAppVersionNotification, setupDayjs, setupIconifyOffline, setupLoading, setupNProgress } from './plugins'; | ||||||
| import { setupStore } from './store'; | import { setupStore } from './store'; | ||||||
| import { setupRouter } from './router'; | import { setupRouter } from './router'; | ||||||
| import { setupI18n } from './locales'; | import { setupI18n } from './locales'; | ||||||
| @@ -23,6 +23,8 @@ async function setupApp() { | |||||||
|  |  | ||||||
|   setupI18n(app); |   setupI18n(app); | ||||||
|  |  | ||||||
|  |   setupAppVersionNotification(); | ||||||
|  |  | ||||||
|   app.mount('#app'); |   app.mount('#app'); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								src/plugins/app.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/plugins/app.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | |||||||
|  | import { h } from 'vue'; | ||||||
|  | import { NButton } from 'naive-ui'; | ||||||
|  | import { $t } from '../locales'; | ||||||
|  |  | ||||||
|  | export function setupAppVersionNotification() { | ||||||
|  |   document.addEventListener('visibilitychange', async () => { | ||||||
|  |     const buildTime = await getHtmlBuildTime(); | ||||||
|  |  | ||||||
|  |     if (!import.meta.env.DEV && buildTime !== BUILD_TIME && document.visibilityState === 'visible') { | ||||||
|  |       const n = window.$notification?.create({ | ||||||
|  |         title: $t('system.updateTitle'), | ||||||
|  |         content: $t('system.updateContent'), | ||||||
|  |         action() { | ||||||
|  |           return h('div', { style: { display: 'flex', justifyContent: 'end', gap: '12px', width: '325px' } }, [ | ||||||
|  |             h( | ||||||
|  |               NButton, | ||||||
|  |               { | ||||||
|  |                 onClick() { | ||||||
|  |                   n?.destroy(); | ||||||
|  |                 } | ||||||
|  |               }, | ||||||
|  |               () => $t('system.updateCancel') | ||||||
|  |             ), | ||||||
|  |             h( | ||||||
|  |               NButton, | ||||||
|  |               { | ||||||
|  |                 type: 'primary', | ||||||
|  |                 onClick() { | ||||||
|  |                   location.reload(); | ||||||
|  |                 } | ||||||
|  |               }, | ||||||
|  |               () => $t('system.updateConfirm') | ||||||
|  |             ) | ||||||
|  |           ]); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | async function getHtmlBuildTime() { | ||||||
|  |   const baseURL = import.meta.env.VITE_BASE_URL; | ||||||
|  |  | ||||||
|  |   const res = await fetch(`${baseURL}index.html`); | ||||||
|  |  | ||||||
|  |   const html = await res.text(); | ||||||
|  |  | ||||||
|  |   const match = html.match(/<meta name="buildTime" content="(.*)">/); | ||||||
|  |  | ||||||
|  |   const buildTime = match?.[1] || ''; | ||||||
|  |  | ||||||
|  |   return buildTime; | ||||||
|  | } | ||||||
| @@ -2,3 +2,4 @@ export * from './loading'; | |||||||
| export * from './nprogress'; | export * from './nprogress'; | ||||||
| export * from './iconify'; | export * from './iconify'; | ||||||
| export * from './dayjs'; | export * from './dayjs'; | ||||||
|  | export * from './app'; | ||||||
|   | |||||||
| @@ -92,6 +92,7 @@ export function createRouteGuard(router: Router) { | |||||||
|  * @param to to route |  * @param to to route | ||||||
|  */ |  */ | ||||||
| async function initRoute(to: RouteLocationNormalized): Promise<RouteLocationRaw | null> { | async function initRoute(to: RouteLocationNormalized): Promise<RouteLocationRaw | null> { | ||||||
|  |   const authStore = useAuthStore(); | ||||||
|   const routeStore = useRouteStore(); |   const routeStore = useRouteStore(); | ||||||
|  |  | ||||||
|   const notFoundRoute: RouteKey = 'not-found'; |   const notFoundRoute: RouteKey = 'not-found'; | ||||||
| @@ -160,6 +161,8 @@ async function initRoute(to: RouteLocationNormalized): Promise<RouteLocationRaw | |||||||
|     return location; |     return location; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   await authStore.initUserInfo(); | ||||||
|  |  | ||||||
|   // initialize the auth route |   // initialize the auth route | ||||||
|   await routeStore.initAuthRoute(); |   await routeStore.initAuthRoute(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import { fetchGetUserInfo, fetchLogin } from '@/service/api'; | |||||||
| import { localStg } from '@/utils/storage'; | import { localStg } from '@/utils/storage'; | ||||||
| import { $t } from '@/locales'; | import { $t } from '@/locales'; | ||||||
| import { useRouteStore } from '../route'; | import { useRouteStore } from '../route'; | ||||||
| import { clearAuthStorage, getToken, getUserInfo } from './shared'; | import { clearAuthStorage, getToken } from './shared'; | ||||||
|  |  | ||||||
| export const useAuthStore = defineStore(SetupStoreId.Auth, () => { | export const useAuthStore = defineStore(SetupStoreId.Auth, () => { | ||||||
|   const route = useRoute(); |   const route = useRoute(); | ||||||
| @@ -18,7 +18,12 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => { | |||||||
|  |  | ||||||
|   const token = ref(getToken()); |   const token = ref(getToken()); | ||||||
|  |  | ||||||
|   const userInfo: Api.Auth.UserInfo = reactive(getUserInfo()); |   const userInfo: Api.Auth.UserInfo = reactive({ | ||||||
|  |     userId: '', | ||||||
|  |     userName: '', | ||||||
|  |     roles: [], | ||||||
|  |     buttons: [] | ||||||
|  |   }); | ||||||
|  |  | ||||||
|   /** is super role in static route */ |   /** is super role in static route */ | ||||||
|   const isStaticSuper = computed(() => { |   const isStaticSuper = computed(() => { | ||||||
| @@ -87,14 +92,23 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => { | |||||||
|     localStg.set('token', loginToken.token); |     localStg.set('token', loginToken.token); | ||||||
|     localStg.set('refreshToken', loginToken.refreshToken); |     localStg.set('refreshToken', loginToken.refreshToken); | ||||||
|  |  | ||||||
|  |     // 2. get user info | ||||||
|  |     const pass = await getUserInfo(); | ||||||
|  |  | ||||||
|  |     if (pass) { | ||||||
|  |       token.value = loginToken.token; | ||||||
|  |  | ||||||
|  |       return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   async function getUserInfo() { | ||||||
|     const { data: info, error } = await fetchGetUserInfo(); |     const { data: info, error } = await fetchGetUserInfo(); | ||||||
|  |  | ||||||
|     if (!error) { |     if (!error) { | ||||||
|       // 2. store user info |       // update store | ||||||
|       localStg.set('userInfo', info); |  | ||||||
|  |  | ||||||
|       // 3. update store |  | ||||||
|       token.value = loginToken.token; |  | ||||||
|       Object.assign(userInfo, info); |       Object.assign(userInfo, info); | ||||||
|  |  | ||||||
|       return true; |       return true; | ||||||
| @@ -103,6 +117,18 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => { | |||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   async function initUserInfo() { | ||||||
|  |     const hasToken = getToken(); | ||||||
|  |  | ||||||
|  |     if (hasToken) { | ||||||
|  |       const pass = await getUserInfo(); | ||||||
|  |  | ||||||
|  |       if (!pass) { | ||||||
|  |         resetStore(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|   return { |   return { | ||||||
|     token, |     token, | ||||||
|     userInfo, |     userInfo, | ||||||
| @@ -110,6 +136,7 @@ export const useAuthStore = defineStore(SetupStoreId.Auth, () => { | |||||||
|     isLogin, |     isLogin, | ||||||
|     loginLoading, |     loginLoading, | ||||||
|     resetStore, |     resetStore, | ||||||
|     login |     login, | ||||||
|  |     initUserInfo | ||||||
|   }; |   }; | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -5,27 +5,8 @@ export function getToken() { | |||||||
|   return localStg.get('token') || ''; |   return localStg.get('token') || ''; | ||||||
| } | } | ||||||
|  |  | ||||||
| /** Get user info */ |  | ||||||
| export function getUserInfo() { |  | ||||||
|   const emptyInfo: Api.Auth.UserInfo = { |  | ||||||
|     userId: '', |  | ||||||
|     userName: '', |  | ||||||
|     roles: [], |  | ||||||
|     buttons: [] |  | ||||||
|   }; |  | ||||||
|   const userInfo = localStg.get('userInfo') || emptyInfo; |  | ||||||
|  |  | ||||||
|   // fix new property: buttons, this will be removed in the next version `1.1.0` |  | ||||||
|   if (!userInfo.buttons) { |  | ||||||
|     userInfo.buttons = []; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   return userInfo; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /** Clear auth storage */ | /** Clear auth storage */ | ||||||
| export function clearAuthStorage() { | export function clearAuthStorage() { | ||||||
|   localStg.remove('token'); |   localStg.remove('token'); | ||||||
|   localStg.remove('refreshToken'); |   localStg.remove('refreshToken'); | ||||||
|   localStg.remove('userInfo'); |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								src/typings/app.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								src/typings/app.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -251,6 +251,10 @@ declare namespace App { | |||||||
|     type Schema = { |     type Schema = { | ||||||
|       system: { |       system: { | ||||||
|         title: string; |         title: string; | ||||||
|  |         updateTitle: string; | ||||||
|  |         updateContent: string; | ||||||
|  |         updateConfirm: string; | ||||||
|  |         updateCancel: string; | ||||||
|       }; |       }; | ||||||
|       common: { |       common: { | ||||||
|         action: string; |         action: string; | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								src/typings/storage.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/typings/storage.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -18,8 +18,6 @@ declare namespace StorageType { | |||||||
|     mixSiderFixed: CommonType.YesOrNo; |     mixSiderFixed: CommonType.YesOrNo; | ||||||
|     /** The refresh token */ |     /** The refresh token */ | ||||||
|     refreshToken: string; |     refreshToken: string; | ||||||
|     /** The user info */ |  | ||||||
|     userInfo: Api.Auth.UserInfo; |  | ||||||
|     /** The theme color */ |     /** The theme color */ | ||||||
|     themeColor: string; |     themeColor: string; | ||||||
|     /** The theme settings */ |     /** The theme settings */ | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ export function getLayoutAndPage(component?: string | null) { | |||||||
|   let layout = ''; |   let layout = ''; | ||||||
|   let page = ''; |   let page = ''; | ||||||
|  |  | ||||||
|   const [layoutOrPage, pageItem] = component?.split(FIRST_LEVEL_ROUTE_COMPONENT_SPLIT) || []; |   const [layoutOrPage = '', pageItem = ''] = component?.split(FIRST_LEVEL_ROUTE_COMPONENT_SPLIT) || []; | ||||||
|  |  | ||||||
|   layout = getLayout(layoutOrPage); |   layout = getLayout(layoutOrPage); | ||||||
|   page = getPage(pageItem || layoutOrPage); |   page = getPage(pageItem || layoutOrPage); | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ export default defineConfig(configEnv => { | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     plugins: setupVitePlugins(viteEnv), |     plugins: setupVitePlugins(viteEnv, buildTime), | ||||||
|     define: { |     define: { | ||||||
|       BUILD_TIME: JSON.stringify(buildTime) |       BUILD_TIME: JSON.stringify(buildTime) | ||||||
|     }, |     }, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user