Compare commits
	
		
			11 Commits
		
	
	
		
			tauri-v1.2
			...
			tauri-v.1.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 9d9592886b | ||
|  | c791adc6bc | ||
|  | 693f704690 | ||
|  | 49f60b2d50 | ||
|  | 425c69acc2 | ||
|  | f7de3fd0f1 | ||
|  | c7f6f2a537 | ||
|  | 531432d5ff | ||
|  | ff1d50461f | ||
|  | b5027c8f3e | ||
|  | 1e67ae8c49 | 
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug-report_cn.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,4 +1,4 @@ | |||||||
| name: Bug提交 | name: 🐞 Bug提交 | ||||||
| description: 在使用软件或功能的过程中遇到了错误 | description: 在使用软件或功能的过程中遇到了错误 | ||||||
| title: '[Bug]: ' | title: '[Bug]: ' | ||||||
| labels: [ "bug?" ] | labels: [ "bug?" ] | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug-report_en.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,4 +1,4 @@ | |||||||
| name: Bug Report | name: 🐞 Bug Report | ||||||
| description: Encountered an error while using the software or feature | description: Encountered an error while using the software or feature | ||||||
| title: '[Bug]: ' | title: '[Bug]: ' | ||||||
| labels: [ "bug?" ] | labels: [ "bug?" ] | ||||||
|   | |||||||
							
								
								
									
										48
									
								
								.github/ISSUE_TEMPLATE/feature_request_cn.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,48 @@ | |||||||
|  | --- | ||||||
|  | name: 🚀 功能请求 | ||||||
|  | description: 提出一个想法以帮助我们改进W&B | ||||||
|  | title: "[功能]: " | ||||||
|  | labels: | ||||||
|  |   - "功能请求" | ||||||
|  |  | ||||||
|  | body: | ||||||
|  |   - type: markdown | ||||||
|  |     attributes: | ||||||
|  |       value: | | ||||||
|  |         **感谢 :heart: 您花时间填写此功能请求报告!** | ||||||
|  |         我们恳请您搜索看看您的功能是否[已经存在](https://github.com/soybeanjs/soybean-admin/issues?q=is%3Aissue+sort%3Acreated-desc+)。 | ||||||
|  |  | ||||||
|  |         我们也很乐意接受用户的贡献。有关更多详细信息,请参阅[此处](https://github.com/soybeanjs/soybean-admin/blob/main/README.zh_CN.md#%E5%A6%82%E4%BD%95%E8%B4%A1%E7%8C%AE)。 | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: 描述 | ||||||
|  |       description: | | ||||||
|  |         对您感兴趣的功能的清晰简洁的描述。 | ||||||
|  |     validations: | ||||||
|  |       required: true | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: 建议的解决方案 | ||||||
|  |       description: | | ||||||
|  |         描述您想要的解决方案。对您希望发生的事情的清晰简洁的描述。 | ||||||
|  |     validations: | ||||||
|  |       required: true | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: 替代方案 | ||||||
|  |       description: | | ||||||
|  |         描述您考虑过的替代方案。 | ||||||
|  |         对您考虑过的任何替代解决方案或功能的清晰简洁的描述。 | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: 额外的上下文 | ||||||
|  |       description: | | ||||||
|  |         在此处添加有关问题的其他上下文。 | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
							
								
								
									
										48
									
								
								.github/ISSUE_TEMPLATE/feature_request_en.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,48 @@ | |||||||
|  | --- | ||||||
|  | name: 🚀 Feature Request | ||||||
|  | description: Suggest an idea to help us improve W&B | ||||||
|  | title: "[Feature]: " | ||||||
|  | labels: | ||||||
|  |   - "feature_request" | ||||||
|  |  | ||||||
|  | body: | ||||||
|  |   - type: markdown | ||||||
|  |     attributes: | ||||||
|  |       value: | | ||||||
|  |         **Thanks :heart: for taking the time to fill out this feature request report!** | ||||||
|  |         We kindly ask that you search to see if an issue [already exists](https://github.com/soybeanjs/soybean-admin/issues?q=is%3Aissue+sort%3Acreated-desc+) for your feature. | ||||||
|  |  | ||||||
|  |         We are also happy to accept contributions from our users. For more details see [here](https://github.com/soybeanjs/soybean-admin/blob/main/README.md#how-to-contribute). | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Description | ||||||
|  |       description: | | ||||||
|  |         A clear and concise description of the feature you're interested in. | ||||||
|  |     validations: | ||||||
|  |       required: true | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Suggested Solution | ||||||
|  |       description: | | ||||||
|  |         Describe the solution you'd like. A clear and concise description of what you want to happen. | ||||||
|  |     validations: | ||||||
|  |       required: true | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Alternatives | ||||||
|  |       description: | | ||||||
|  |         Describe alternatives you've considered. | ||||||
|  |         A clear and concise description of any alternative solutions or features you've considered. | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Additional Context | ||||||
|  |       description: | | ||||||
|  |         Add any other context about the problem here. | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
							
								
								
									
										35
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						| @@ -1,6 +1,41 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## [v1.2.6](https://github.com/honghuangdc/soybean-admin/compare/v1.2.5...v1.2.6) (2024-06-21) | ||||||
|  |  | ||||||
|  | ###    🐞 Bug Fixes | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - request modal title use i18n. fixed #507  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/507 [<samp>(f7de3)</samp>](https://github.com/honghuangdc/soybean-admin/commit/f7de3fd) | ||||||
|  |   - add `getDataByPage` for `useTable`. fixed #499  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/499 [<samp>(425c6)</samp>](https://github.com/honghuangdc/soybean-admin/commit/425c69a) | ||||||
|  |   - fix login redirect to routeHome when routeHome of dynamic route is not same as static route. fixed #511  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/511 [<samp>(49f60)</samp>](https://github.com/honghuangdc/soybean-admin/commit/49f60b2) | ||||||
|  |  | ||||||
|  | ###    🛠 Optimizations | ||||||
|  |  | ||||||
|  | - **projects**: optimize `getRouteQueryOfLoginRoute`  -  by @honghuangdc [<samp>(693f7)</samp>](https://github.com/honghuangdc/soybean-admin/commit/693f704) | ||||||
|  |  | ||||||
|  | ###    📖 Documentation | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - update CHANGELOG  -  by @honghuangdc [<samp>(5c67d)</samp>](https://github.com/honghuangdc/soybean-admin/commit/5c67d06) | ||||||
|  |   - update README  -  by @honghuangdc [<samp>(1e67a)</samp>](https://github.com/honghuangdc/soybean-admin/commit/1e67ae8) | ||||||
|  |  | ||||||
|  | ###    🏡 Chore | ||||||
|  |  | ||||||
|  | - **deps**: | ||||||
|  |   - update deps. close #510  -  by @honghuangdc in https://github.com/honghuangdc/soybean-admin/issues/510 [<samp>(53143)</samp>](https://github.com/honghuangdc/soybean-admin/commit/531432d) | ||||||
|  |   - update deps  -  by @honghuangdc [<samp>(c7f6f)</samp>](https://github.com/honghuangdc/soybean-admin/commit/c7f6f2a) | ||||||
|  |  | ||||||
|  | ###    🤖 CI | ||||||
|  |  | ||||||
|  | - **projects**: | ||||||
|  |   - add github issues template  -  by @honghuangdc [<samp>(b5027)</samp>](https://github.com/honghuangdc/soybean-admin/commit/b5027c8) | ||||||
|  |   - update github issues template  -  by @honghuangdc [<samp>(ff1d5)</samp>](https://github.com/honghuangdc/soybean-admin/commit/ff1d504) | ||||||
|  |  | ||||||
|  | ###    ❤️ Contributors | ||||||
|  |  | ||||||
|  | [](https://github.com/honghuangdc)   | ||||||
|  |  | ||||||
| ## [v1.2.5](https://github.com/soybeanjs/soybean-admin/compare/v1.2.4...v1.2.5) (2024-06-15) | ## [v1.2.5](https://github.com/soybeanjs/soybean-admin/compare/v1.2.4...v1.2.5) (2024-06-15) | ||||||
|  |  | ||||||
| ###    🐞 Bug Fixes | ###    🐞 Bug Fixes | ||||||
|   | |||||||
| @@ -157,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/picgo/soybean-admin-wechat-0620.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" /> | ||||||
|   | |||||||
| @@ -157,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/picgo/soybean-admin-wechat-0620.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" /> | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import { defineConfig } from '@soybeanjs/eslint-config'; | import { defineConfig } from '@soybeanjs/eslint-config'; | ||||||
|  |  | ||||||
| export default defineConfig( | export default defineConfig( | ||||||
|   { vue: true, unocss: true }, |   { vue: true, unocss: true, ignores: ['src-tauri/target'] }, | ||||||
|   { |   { | ||||||
|     rules: { |     rules: { | ||||||
|       'vue/multi-word-component-names': [ |       'vue/multi-word-component-names': [ | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						| @@ -1,7 +1,7 @@ | |||||||
| { | { | ||||||
|   "name": "soybean-admin", |   "name": "soybean-admin", | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "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", | ||||||
| @@ -32,16 +32,19 @@ | |||||||
|   }, |   }, | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "build": "vite build --mode prod", |     "build": "vite build --mode prod", | ||||||
|  |     "build:tauri": "pnpm tauri build", | ||||||
|     "build:test": "vite build --mode test", |     "build:test": "vite build --mode test", | ||||||
|     "cleanup": "sa cleanup", |     "cleanup": "sa cleanup", | ||||||
|     "commit": "sa git-commit", |     "commit": "sa git-commit", | ||||||
|     "dev": "vite --mode test", |     "dev": "vite --mode test", | ||||||
|     "dev:prod": "vite --mode prod", |     "dev:prod": "vite --mode prod", | ||||||
|  |     "dev:tauri": "pnpm tauri dev", | ||||||
|     "gen-route": "sa gen-route", |     "gen-route": "sa gen-route", | ||||||
|     "lint": "eslint . --fix", |     "lint": "eslint . --fix", | ||||||
|     "prepare": "simple-git-hooks", |     "prepare": "simple-git-hooks", | ||||||
|     "preview": "vite preview", |     "preview": "vite preview", | ||||||
|     "release": "sa release", |     "release": "sa release", | ||||||
|  |     "tauri-icon": "pnpm tauri icon ./public/logo.png", | ||||||
|     "typecheck": "vue-tsc --noEmit --skipLibCheck", |     "typecheck": "vue-tsc --noEmit --skipLibCheck", | ||||||
|     "update-pkg": "sa update-pkg" |     "update-pkg": "sa update-pkg" | ||||||
|   }, |   }, | ||||||
| @@ -69,12 +72,13 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@elegant-router/vue": "0.3.7", |     "@elegant-router/vue": "0.3.7", | ||||||
|     "@iconify/json": "2.2.219", |     "@iconify/json": "2.2.220", | ||||||
|     "@sa/scripts": "workspace:*", |     "@sa/scripts": "workspace:*", | ||||||
|     "@sa/uno-preset": "workspace:*", |     "@sa/uno-preset": "workspace:*", | ||||||
|     "@soybeanjs/eslint-config": "1.3.7", |     "@soybeanjs/eslint-config": "1.3.7", | ||||||
|  |     "@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.6", | ||||||
|     "@types/nprogress": "0.2.3", |     "@types/nprogress": "0.2.3", | ||||||
|     "@unocss/eslint-config": "0.61.0", |     "@unocss/eslint-config": "0.61.0", | ||||||
|     "@unocss/preset-icons": "0.61.0", |     "@unocss/preset-icons": "0.61.0", | ||||||
| @@ -84,19 +88,19 @@ | |||||||
|     "@unocss/vite": "0.61.0", |     "@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.5.0", | ||||||
|     "eslint-plugin-vue": "9.26.0", |     "eslint-plugin-vue": "9.26.0", | ||||||
|     "lint-staged": "15.2.7", |     "lint-staged": "15.2.7", | ||||||
|     "sass": "1.77.5", |     "sass": "1.77.6", | ||||||
|     "simple-git-hooks": "2.11.1", |     "simple-git-hooks": "2.11.1", | ||||||
|     "tsx": "4.15.4", |     "tsx": "4.15.6", | ||||||
|     "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.3.1", |     "vite": "5.3.1", | ||||||
|     "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.3.2", | ||||||
|     "vue-eslint-parser": "9.4.3", |     "vue-eslint-parser": "9.4.3", | ||||||
|     "vue-tsc": "2.0.21" |     "vue-tsc": "2.0.21" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/axios", |   "name": "@sa/axios", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/color", |   "name": "@sa/color", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/hooks", |   "name": "@sa/hooks", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/materials", |   "name": "@sa/materials", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/fetch", |   "name": "@sa/fetch", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/scripts", |   "name": "@sa/scripts", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "bin": { |   "bin": { | ||||||
|     "sa": "./bin.ts" |     "sa": "./bin.ts" | ||||||
|   }, |   }, | ||||||
| @@ -15,7 +15,7 @@ | |||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@soybeanjs/changelog": "0.3.24", |     "@soybeanjs/changelog": "0.3.24", | ||||||
|     "bumpp": "9.4.1", |     "bumpp": "9.4.1", | ||||||
|     "c12": "1.10.0", |     "c12": "1.11.1", | ||||||
|     "cac": "6.7.14", |     "cac": "6.7.14", | ||||||
|     "consola": "3.2.3", |     "consola": "3.2.3", | ||||||
|     "enquirer": "2.4.1", |     "enquirer": "2.4.1", | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/uno-preset", |   "name": "@sa/uno-preset", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sa/utils", |   "name": "@sa/utils", | ||||||
|   "version": "1.2.5", |   "version": "1.2.6", | ||||||
|   "exports": { |   "exports": { | ||||||
|     ".": "./src/index.ts" |     ".": "./src/index.ts" | ||||||
|   }, |   }, | ||||||
|   | |||||||
							
								
								
									
										609
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								public/logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 20 KiB | 
							
								
								
									
										3
									
								
								src-tauri/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | # Generated by Cargo | ||||||
|  | # will have compiled files and executables | ||||||
|  | /target/ | ||||||
							
								
								
									
										3664
									
								
								src-tauri/Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										26
									
								
								src-tauri/Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | |||||||
|  | [package] | ||||||
|  | name = "app" | ||||||
|  | version = "0.1.0" | ||||||
|  | description = "A Tauri App" | ||||||
|  | authors = ["you"] | ||||||
|  | license = "" | ||||||
|  | repository = "" | ||||||
|  | default-run = "app" | ||||||
|  | edition = "2021" | ||||||
|  | rust-version = "1.60" | ||||||
|  |  | ||||||
|  | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||||||
|  |  | ||||||
|  | [build-dependencies] | ||||||
|  | tauri-build = { version = "1.5.1", features = [] } | ||||||
|  |  | ||||||
|  | [dependencies] | ||||||
|  | serde_json = "1.0" | ||||||
|  | serde = { version = "1.0", features = ["derive"] } | ||||||
|  | tauri = { version = "1.6.1", features = [] } | ||||||
|  |  | ||||||
|  | [features] | ||||||
|  | # this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. | ||||||
|  | # If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes. | ||||||
|  | # DO NOT REMOVE!! | ||||||
|  | custom-protocol = [ "tauri/custom-protocol" ] | ||||||
							
								
								
									
										3
									
								
								src-tauri/build.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | fn main() { | ||||||
|  |   tauri_build::build() | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/128x128.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 8.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/128x128@2x.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 19 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/32x32.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square107x107Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 7.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square142x142Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 9.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square150x150Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 10 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square284x284Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 21 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square30x30Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square310x310Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 23 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square44x44Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square71x71Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/Square89x89Logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/StoreLogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/icon.icns
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/icon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 31 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src-tauri/icons/icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 39 KiB | 
							
								
								
									
										8
									
								
								src-tauri/src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | // Prevents additional console window on Windows in release, DO NOT REMOVE!! | ||||||
|  | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] | ||||||
|  |  | ||||||
|  | fn main() { | ||||||
|  |   tauri::Builder::default() | ||||||
|  |     .run(tauri::generate_context!()) | ||||||
|  |     .expect("error while running tauri application"); | ||||||
|  | } | ||||||
							
								
								
									
										60
									
								
								src-tauri/tauri.conf.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,60 @@ | |||||||
|  | { | ||||||
|  |   "$schema": "../node_modules/@tauri-apps/cli/schema.json", | ||||||
|  |   "build": { | ||||||
|  |     "beforeBuildCommand": "npm run build", | ||||||
|  |     "beforeDevCommand": "npm run dev", | ||||||
|  |     "devPath": "http://localhost:9527", | ||||||
|  |     "distDir": "../dist" | ||||||
|  |   }, | ||||||
|  |   "package": { | ||||||
|  |     "productName": "soybean-admin", | ||||||
|  |     "version": "1.0.0" | ||||||
|  |   }, | ||||||
|  |   "tauri": { | ||||||
|  |     "allowlist": { | ||||||
|  |       "all": false | ||||||
|  |     }, | ||||||
|  |     "bundle": { | ||||||
|  |       "active": true, | ||||||
|  |       "category": "DeveloperTool", | ||||||
|  |       "copyright": "", | ||||||
|  |       "deb": { | ||||||
|  |         "depends": [] | ||||||
|  |       }, | ||||||
|  |       "externalBin": [], | ||||||
|  |       "icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico"], | ||||||
|  |       "identifier": "cn.soybeanjs.admin", | ||||||
|  |       "longDescription": "", | ||||||
|  |       "macOS": { | ||||||
|  |         "entitlements": null, | ||||||
|  |         "exceptionDomain": "", | ||||||
|  |         "frameworks": [], | ||||||
|  |         "providerShortName": null, | ||||||
|  |         "signingIdentity": null | ||||||
|  |       }, | ||||||
|  |       "resources": [], | ||||||
|  |       "shortDescription": "", | ||||||
|  |       "targets": "all", | ||||||
|  |       "windows": { | ||||||
|  |         "certificateThumbprint": null, | ||||||
|  |         "digestAlgorithm": "sha256", | ||||||
|  |         "timestampUrl": "" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "security": { | ||||||
|  |       "csp": null | ||||||
|  |     }, | ||||||
|  |     "updater": { | ||||||
|  |       "active": false | ||||||
|  |     }, | ||||||
|  |     "windows": [ | ||||||
|  |       { | ||||||
|  |         "fullscreen": false, | ||||||
|  |         "height": 768, | ||||||
|  |         "resizable": true, | ||||||
|  |         "title": "SoybeanAdmin", | ||||||
|  |         "width": 1366 | ||||||
|  |       } | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -160,6 +160,24 @@ export function useTable<A extends NaiveUI.TableApiFn>(config: NaiveUI.NaiveTabl | |||||||
|     Object.assign(pagination, update); |     Object.assign(pagination, update); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * get data by page number | ||||||
|  |    * | ||||||
|  |    * @param pageNum the page number. default is 1 | ||||||
|  |    */ | ||||||
|  |   async function getDataByPage(pageNum: number = 1) { | ||||||
|  |     updatePagination({ | ||||||
|  |       page: pageNum | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     updateSearchParams({ | ||||||
|  |       current: pageNum, | ||||||
|  |       size: pagination.pageSize! | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     await getData(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   scope.run(() => { |   scope.run(() => { | ||||||
|     watch( |     watch( | ||||||
|       () => appStore.locale, |       () => appStore.locale, | ||||||
| @@ -184,6 +202,7 @@ export function useTable<A extends NaiveUI.TableApiFn>(config: NaiveUI.NaiveTabl | |||||||
|     mobilePagination, |     mobilePagination, | ||||||
|     updatePagination, |     updatePagination, | ||||||
|     getData, |     getData, | ||||||
|  |     getDataByPage, | ||||||
|     searchParams, |     searchParams, | ||||||
|     updateSearchParams, |     updateSearchParams, | ||||||
|     resetSearchParams |     resetSearchParams | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ const local: App.I18n.Schema = { | |||||||
|     deleteSuccess: 'Delete Success', |     deleteSuccess: 'Delete Success', | ||||||
|     confirmDelete: 'Are you sure you want to delete?', |     confirmDelete: 'Are you sure you want to delete?', | ||||||
|     edit: 'Edit', |     edit: 'Edit', | ||||||
|  |     error: 'Error', | ||||||
|     index: 'Index', |     index: 'Index', | ||||||
|     keywordSearch: 'Please enter keyword', |     keywordSearch: 'Please enter keyword', | ||||||
|     logout: 'Logout', |     logout: 'Logout', | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ const local: App.I18n.Schema = { | |||||||
|     deleteSuccess: '删除成功', |     deleteSuccess: '删除成功', | ||||||
|     confirmDelete: '确认删除吗?', |     confirmDelete: '确认删除吗?', | ||||||
|     edit: '编辑', |     edit: '编辑', | ||||||
|  |     error: '错误', | ||||||
|     index: '序号', |     index: '序号', | ||||||
|     keywordSearch: '请输入关键词搜索', |     keywordSearch: '请输入关键词搜索', | ||||||
|     logout: '退出登录', |     logout: '退出登录', | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ import type { | |||||||
|   Router |   Router | ||||||
| } from 'vue-router'; | } from 'vue-router'; | ||||||
| import type { RouteKey, RoutePath } from '@elegant-router/types'; | import type { RouteKey, RoutePath } from '@elegant-router/types'; | ||||||
|  | import { getRouteName } from '@/router/elegant/transform'; | ||||||
| import { useAuthStore } from '@/store/modules/auth'; | import { useAuthStore } from '@/store/modules/auth'; | ||||||
| import { useRouteStore } from '@/store/modules/route'; | import { useRouteStore } from '@/store/modules/route'; | ||||||
| import { localStg } from '@/utils/storage'; | import { localStg } from '@/utils/storage'; | ||||||
| @@ -149,9 +150,7 @@ async function initRoute(to: RouteLocationNormalized): Promise<RouteLocationRaw | |||||||
|   // initialize the auth route requires the user to be logged in, if not, redirect to the login page |   // initialize the auth route requires the user to be logged in, if not, redirect to the login page | ||||||
|   if (!isLogin) { |   if (!isLogin) { | ||||||
|     const loginRoute: RouteKey = 'login'; |     const loginRoute: RouteKey = 'login'; | ||||||
|     const redirect = to.fullPath; |     const query = getRouteQueryOfLoginRoute(to, routeStore.routeHome); | ||||||
|  |  | ||||||
|     const query: LocationQueryRaw = to.name !== loginRoute ? { redirect } : {}; |  | ||||||
|  |  | ||||||
|     const location: RouteLocationRaw = { |     const location: RouteLocationRaw = { | ||||||
|       name: loginRoute, |       name: loginRoute, | ||||||
| @@ -197,3 +196,20 @@ function handleRouteSwitch(to: RouteLocationNormalized, from: RouteLocationNorma | |||||||
|  |  | ||||||
|   next(); |   next(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | function getRouteQueryOfLoginRoute(to: RouteLocationNormalized, routeHome: RouteKey) { | ||||||
|  |   const loginRoute: RouteKey = 'login'; | ||||||
|  |   const redirect = to.fullPath; | ||||||
|  |   const [redirectPath, redirectQuery] = redirect.split('?'); | ||||||
|  |   const redirectName = getRouteName(redirectPath as RoutePath); | ||||||
|  |  | ||||||
|  |   const isRedirectHome = routeHome === redirectName; | ||||||
|  |  | ||||||
|  |   const query: LocationQueryRaw = to.name !== loginRoute && !isRedirectHome ? { redirect } : {}; | ||||||
|  |  | ||||||
|  |   if (isRedirectHome && redirectQuery) { | ||||||
|  |     query.redirect = `/?${redirectQuery}`; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return query; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -63,7 +63,7 @@ export const request = createFlatRequest<App.Service.Response, RequestInstanceSt | |||||||
|         window.addEventListener('beforeunload', handleLogout); |         window.addEventListener('beforeunload', handleLogout); | ||||||
|  |  | ||||||
|         window.$dialog?.error({ |         window.$dialog?.error({ | ||||||
|           title: 'Error', |           title: $t('common.error'), | ||||||
|           content: response.data.msg, |           content: response.data.msg, | ||||||
|           positiveText: $t('common.confirm'), |           positiveText: $t('common.confirm'), | ||||||
|           maskClosable: false, |           maskClosable: false, | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								src/typings/app.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -273,6 +273,7 @@ declare namespace App { | |||||||
|         deleteSuccess: string; |         deleteSuccess: string; | ||||||
|         confirmDelete: string; |         confirmDelete: string; | ||||||
|         edit: string; |         edit: string; | ||||||
|  |         error: string; | ||||||
|         index: string; |         index: string; | ||||||
|         keywordSearch: string; |         keywordSearch: string; | ||||||
|         logout: string; |         logout: string; | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ const { bool: visible, setTrue: openModal } = useBoolean(); | |||||||
|  |  | ||||||
| const wrapperRef = ref<HTMLElement | null>(null); | const wrapperRef = ref<HTMLElement | null>(null); | ||||||
|  |  | ||||||
| const { columns, columnChecks, data, loading, pagination, getData } = useTable({ | const { columns, columnChecks, data, loading, pagination, getData, getDataByPage } = useTable({ | ||||||
|   apiFn: fetchGetMenuList, |   apiFn: fetchGetMenuList, | ||||||
|   columns: () => [ |   columns: () => [ | ||||||
|     { |     { | ||||||
| @@ -257,7 +257,7 @@ init(); | |||||||
|         :operate-type="operateType" |         :operate-type="operateType" | ||||||
|         :row-data="editingData" |         :row-data="editingData" | ||||||
|         :all-pages="allPages" |         :all-pages="allPages" | ||||||
|         @submitted="getData" |         @submitted="getDataByPage" | ||||||
|       /> |       /> | ||||||
|     </NCard> |     </NCard> | ||||||
|   </div> |   </div> | ||||||
|   | |||||||
| @@ -10,7 +10,17 @@ import RoleSearch from './modules/role-search.vue'; | |||||||
|  |  | ||||||
| const appStore = useAppStore(); | const appStore = useAppStore(); | ||||||
|  |  | ||||||
| const { columns, columnChecks, data, loading, getData, mobilePagination, searchParams, resetSearchParams } = useTable({ | const { | ||||||
|  |   columns, | ||||||
|  |   columnChecks, | ||||||
|  |   data, | ||||||
|  |   loading, | ||||||
|  |   getData, | ||||||
|  |   getDataByPage, | ||||||
|  |   mobilePagination, | ||||||
|  |   searchParams, | ||||||
|  |   resetSearchParams | ||||||
|  | } = useTable({ | ||||||
|   apiFn: fetchGetRoleList, |   apiFn: fetchGetRoleList, | ||||||
|   apiParams: { |   apiParams: { | ||||||
|     current: 1, |     current: 1, | ||||||
| @@ -129,7 +139,7 @@ function edit(id: number) { | |||||||
|  |  | ||||||
| <template> | <template> | ||||||
|   <div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto"> |   <div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto"> | ||||||
|     <RoleSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getData" /> |     <RoleSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getDataByPage" /> | ||||||
|     <NCard :title="$t('page.manage.role.title')" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper"> |     <NCard :title="$t('page.manage.role.title')" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper"> | ||||||
|       <template #header-extra> |       <template #header-extra> | ||||||
|         <TableHeaderOperation |         <TableHeaderOperation | ||||||
| @@ -158,7 +168,7 @@ function edit(id: number) { | |||||||
|         v-model:visible="drawerVisible" |         v-model:visible="drawerVisible" | ||||||
|         :operate-type="operateType" |         :operate-type="operateType" | ||||||
|         :row-data="editingData" |         :row-data="editingData" | ||||||
|         @submitted="getData" |         @submitted="getDataByPage" | ||||||
|       /> |       /> | ||||||
|     </NCard> |     </NCard> | ||||||
|   </div> |   </div> | ||||||
|   | |||||||
| @@ -10,7 +10,17 @@ import UserSearch from './modules/user-search.vue'; | |||||||
|  |  | ||||||
| const appStore = useAppStore(); | const appStore = useAppStore(); | ||||||
|  |  | ||||||
| const { columns, columnChecks, data, getData, loading, mobilePagination, searchParams, resetSearchParams } = useTable({ | const { | ||||||
|  |   columns, | ||||||
|  |   columnChecks, | ||||||
|  |   data, | ||||||
|  |   getData, | ||||||
|  |   getDataByPage, | ||||||
|  |   loading, | ||||||
|  |   mobilePagination, | ||||||
|  |   searchParams, | ||||||
|  |   resetSearchParams | ||||||
|  | } = useTable({ | ||||||
|   apiFn: fetchGetUserList, |   apiFn: fetchGetUserList, | ||||||
|   showTotal: true, |   showTotal: true, | ||||||
|   apiParams: { |   apiParams: { | ||||||
| @@ -160,7 +170,7 @@ function edit(id: number) { | |||||||
|  |  | ||||||
| <template> | <template> | ||||||
|   <div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto"> |   <div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto"> | ||||||
|     <UserSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getData" /> |     <UserSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getDataByPage" /> | ||||||
|     <NCard :title="$t('page.manage.user.title')" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper"> |     <NCard :title="$t('page.manage.user.title')" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper"> | ||||||
|       <template #header-extra> |       <template #header-extra> | ||||||
|         <TableHeaderOperation |         <TableHeaderOperation | ||||||
| @@ -189,7 +199,7 @@ function edit(id: number) { | |||||||
|         v-model:visible="drawerVisible" |         v-model:visible="drawerVisible" | ||||||
|         :operate-type="operateType" |         :operate-type="operateType" | ||||||
|         :row-data="editingData" |         :row-data="editingData" | ||||||
|         @submitted="getData" |         @submitted="getDataByPage" | ||||||
|       /> |       /> | ||||||
|     </NCard> |     </NCard> | ||||||
|   </div> |   </div> | ||||||
|   | |||||||