mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 18:49:06 +08:00 
			
		
		
		
	feat: 升级vue3
This commit is contained in:
		
							
								
								
									
										58
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								README.md
									
									
									
									
									
								
							| @ -169,29 +169,29 @@ ps:核心功能已经实现,正在对接微信小程序中... | ||||
|  | ||||
| ### 后端 | ||||
|  | ||||
| | 框架                                                                                         | 说明                   | 版本      | 学习指南                                                           | | ||||
| |---------------------------------------------------------------------------------------------|-----------------------|---------|----------------------------------------------------------------| | ||||
| | [Spring Boot](https://spring.io/projects/spring-boot)                                       | 应用开发框架             | 2.6.10  | [文档](https://github.com/YunaiV/SpringBoot-Labs)                | | ||||
| | [MySQL](https://www.mysql.com/cn/)                                                          | 数据库服务器             | 5.7     |                                                                | | ||||
| | [Druid](https://github.com/alibaba/druid)                                                   | JDBC 连接池、监控组件     | 1.2.11  | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||||
| | [MyBatis Plus](https://mp.baomidou.com/)                                                    | MyBatis 增强工具包       | 3.5.2   | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao)         | | ||||
| | [Dynamic Datasource](https://dynamic-datasource.com/)                                       | 动态数据源               | 3.5.0   | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||||
| | [Redis](https://redis.io/)                                                                  | key-value 数据库        | 5.0     |                                                                | | ||||
| | [Redisson](https://github.com/redisson/redisson)                                            | Redis 客户端            | 3.17.4  | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao)           | | ||||
| | [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架               | 5.3.20  | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao)               | | ||||
| | [Spring Security](https://github.com/spring-projects/spring-security)                       | Spring 安全框架         | 5.6.5   | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | | ||||
| | [Hibernate Validator](https://github.com/hibernate/hibernate-validator)                     | 参数校验组件             | 6.2.3   | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao)      | | ||||
| | [Flowable](https://github.com/flowable/flowable-engine)                                     | 工作流引擎               | 6.7.2   | [文档](https://doc.iocoder.cn/bpm/)                                                     | | ||||
| | [Quartz](https://github.com/quartz-scheduler)                                               | 任务调度组件             | 2.3.2   | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao)             | | ||||
| | [Knife4j](https://gitee.com/xiaoym/knife4j)                                                 | Swagger 增强 UI 实现    | 3.0.3   | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao)         | | ||||
| | [Resilience4j](https://github.com/resilience4j/resilience4j)                                | 服务保障组件             | 1.7.1   | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao)    | | ||||
| | [SkyWalking](https://skywalking.apache.org/)                                                | 分布式应用追踪系统        | 8.5.0   | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao)      | | ||||
| | [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin)                       | Spring Boot 监控平台    | 2.6.7   | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao)           | | ||||
| | [Jackson](https://github.com/FasterXML/jackson)                                             | JSON 工具库             | 2.13.3  |                                                                | | ||||
| | [MapStruct](https://mapstruct.org/)                                                         | Java Bean 转换         | 1.4.1   | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao)       | | ||||
| | [Lombok](https://projectlombok.org/)                                                        | 消除冗长的 Java 代码     | 1.16.14 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao)          | | ||||
| | [JUnit](https://junit.org/junit5/)                                                          | Java 单元测试框架        | 5.8.2   | -                                                              | | ||||
| | [Mockito](https://github.com/mockito/mockito)                                               | Java Mock 框架         | 4.0.0   | -                                                              | | ||||
| | 框架                                                                                         | 说明                   | 版本               | 学习指南                                                           | | ||||
| |---------------------------------------------------------------------------------------------|-----------------------|------------------|----------------------------------------------------------------| | ||||
| | [Spring Boot](https://spring.io/projects/spring-boot)                                       | 应用开发框架             | 2.6.11           | [文档](https://github.com/YunaiV/SpringBoot-Labs)                | | ||||
| | [MySQL](https://www.mysql.com/cn/)                                                          | 数据库服务器             | 5.7              |                                                                | | ||||
| | [Druid](https://github.com/alibaba/druid)                                                   | JDBC 连接池、监控组件     | 1.2.13-SNSAPSHOT | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||||
| | [MyBatis Plus](https://mp.baomidou.com/)                                                    | MyBatis 增强工具包       | 3.5.2            | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao)         | | ||||
| | [Dynamic Datasource](https://dynamic-datasource.com/)                                       | 动态数据源               | 3.5.2            | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | | ||||
| | [Redis](https://redis.io/)                                                                  | key-value 数据库        | 5.0              |                                                                | | ||||
| | [Redisson](https://github.com/redisson/redisson)                                            | Redis 客户端            | 3.17.7           | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao)           | | ||||
| | [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架               | 5.3.20           | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao)               | | ||||
| | [Spring Security](https://github.com/spring-projects/spring-security)                       | Spring 安全框架         | 5.6.5            | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) | | ||||
| | [Hibernate Validator](https://github.com/hibernate/hibernate-validator)                     | 参数校验组件             | 6.2.3            | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao)      | | ||||
| | [Flowable](https://github.com/flowable/flowable-engine)                                     | 工作流引擎               | 6.7.2            | [文档](https://doc.iocoder.cn/bpm/)                                                     | | ||||
| | [Quartz](https://github.com/quartz-scheduler)                                               | 任务调度组件             | 2.3.2            | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao)             | | ||||
| | [Knife4j](https://gitee.com/xiaoym/knife4j)                                                 | Swagger 增强 UI 实现    | 3.0.3            | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao)         | | ||||
| | [Resilience4j](https://github.com/resilience4j/resilience4j)                                | 服务保障组件             | 1.7.1            | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao)    | | ||||
| | [SkyWalking](https://skywalking.apache.org/)                                                | 分布式应用追踪系统        | 8.5.0            | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao)      | | ||||
| | [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin)                       | Spring Boot 监控平台    | 2.6.9            | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao)           | | ||||
| | [Jackson](https://github.com/FasterXML/jackson)                                             | JSON 工具库             | 2.13.3           |                                                                | | ||||
| | [MapStruct](https://mapstruct.org/)                                                         | Java Bean 转换         | 1.5.2.Final      | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao)       | | ||||
| | [Lombok](https://projectlombok.org/)                                                        | 消除冗长的 Java 代码     | 1.18.24          | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao)          | | ||||
| | [JUnit](https://junit.org/junit5/)                                                          | Java 单元测试框架        | 5.8.2            | -                                                              | | ||||
| | [Mockito](https://github.com/mockito/mockito)                                               | Java Mock 框架         | 4.8.0            | -                                                              | | ||||
|  | ||||
| ### [管理后台 Vue2 前端](./yudao-ui-admin) | ||||
|  | ||||
| @ -204,14 +204,14 @@ ps:核心功能已经实现,正在对接微信小程序中... | ||||
|  | ||||
| | 框架                                                                  | 说明              | 版本     | | ||||
| |----------------------------------------------------------------------|-----------------|--------| | ||||
| | [Vue](https://staging-cn.vuejs.org/)                                 | Vue 框架          | 3.2.37 | | ||||
| | [Vite](https://cn.vitejs.dev//)                                      | 开发与构建工具         | 3.0.4  | | ||||
| | [Element Plus](https://element-plus.org/zh-CN/)                      | Element Plus    | 2.2.12 | | ||||
| | [TypeScript](https://www.typescriptlang.org/docs/)                   | TypeScript      | 4.7.4  | | ||||
| | [pinia](https://pinia.vuejs.org/)                                    | vuex5           | 2.0.17 | | ||||
| | [Vue](https://staging-cn.vuejs.org/)                                 | Vue 框架          | 3.2.40 | | ||||
| | [Vite](https://cn.vitejs.dev//)                                      | 开发与构建工具         | 3.1.6  | | ||||
| | [Element Plus](https://element-plus.org/zh-CN/)                      | Element Plus    | 2.2.17 | | ||||
| | [TypeScript](https://www.typescriptlang.org/docs/)                   | TypeScript      | 4.8.4  | | ||||
| | [pinia](https://pinia.vuejs.org/)                                    | vuex5           | 2.0.22 | | ||||
| | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化             | 9.2.2  | | ||||
| | [windicss](https://cn.windicss.org/)                                 | 下一代工具优先的 CSS 框架 | 3.5.6  | | ||||
| | [iconify](https://icon-sets.iconify.design/)                         | 在线图标库           | 2.2.1  | | ||||
| | [iconify](https://icon-sets.iconify.design/)                         | 在线图标库           | 3.0.0  | | ||||
|  | ||||
| ### [管理后台 uni-app 跨端](./yudao-ui-admin-uniapp) | ||||
|  | ||||
|  | ||||
| @ -19,14 +19,14 @@ | ||||
|         <spring.boot.version>2.6.11</spring.boot.version> | ||||
|         <!-- Web 相关 --> | ||||
|         <knife4j.version>3.0.3</knife4j.version> | ||||
|         <swagger-annotations.version>1.6.6</swagger-annotations.version> | ||||
|         <swagger-annotations.version>1.6.7</swagger-annotations.version> | ||||
|         <servlet.versoin>2.5</servlet.versoin> | ||||
|         <!-- DB 相关 --> | ||||
|         <druid.version>1.2.13-SNSAPSHOT</druid.version> | ||||
|         <mybatis-plus.version>3.5.2</mybatis-plus.version> | ||||
|         <mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version> | ||||
|         <dynamic-datasource.version>3.5.2</dynamic-datasource.version> | ||||
|         <redisson.version>3.17.6</redisson.version> | ||||
|         <redisson.version>3.17.7</redisson.version> | ||||
|         <!-- Config 配置中心相关 --> | ||||
|         <apollo.version>1.9.2</apollo.version> | ||||
|         <!-- 服务保障相关 --> | ||||
| @ -34,11 +34,11 @@ | ||||
|         <resilience4j.version>1.7.1</resilience4j.version> | ||||
|         <!-- 监控相关 --> | ||||
|         <skywalking.version>8.12.0</skywalking.version> | ||||
|         <spring-boot-admin.version>2.6.7</spring-boot-admin.version> | ||||
|         <opentracing.version>0.31.0</opentracing.version> | ||||
|         <spring-boot-admin.version>2.6.9</spring-boot-admin.version> | ||||
|         <opentracing.version>0.33.0</opentracing.version> | ||||
|         <!-- Test 测试相关 --> | ||||
|         <podam.version>7.2.9.RELEASE</podam.version> | ||||
|         <jedis-mock.version>1.0.3</jedis-mock.version> | ||||
|         <jedis-mock.version>1.0.4</jedis-mock.version> | ||||
|         <mockito-inline.version>4.8.0</mockito-inline.version> | ||||
|         <!-- Bpm 工作流相关 --> | ||||
|         <flowable.version>6.7.2</flowable.version> | ||||
| @ -56,7 +56,7 @@ | ||||
|         <transmittable-thread-local.version>2.14.0</transmittable-thread-local.version> | ||||
|         <commons-net.version>3.8.0</commons-net.version> | ||||
|         <jsch.version>0.1.55</jsch.version> | ||||
|         <tika-core.version>2.4.1</tika-core.version> | ||||
|         <tika-core.version>2.5.0</tika-core.version> | ||||
|         <aj-captcha.version>1.3.0</aj-captcha.version> | ||||
|         <netty-all.version>4.1.82.Final</netty-all.version> | ||||
|         <!-- 三方云服务相关 --> | ||||
| @ -66,7 +66,7 @@ | ||||
|         <tencentcloud-sdk-java.version>3.1.561</tencentcloud-sdk-java.version> | ||||
|         <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version> | ||||
|         <justauth.version>1.4.0</justauth.version> | ||||
|         <jimureport.version>1.5.2</jimureport.version> | ||||
|         <jimureport.version>1.5.3</jimureport.version> | ||||
|         <xercesImpl.version>2.12.2</xercesImpl.version> | ||||
|     </properties> | ||||
|  | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "ruoyi-vue-pro-vue3", | ||||
|   "version": "1.6.4.1641", | ||||
|   "version": "1.6.4.1651", | ||||
|   "description": "基于vue3、element-plus、typesScript、vite3", | ||||
|   "author": "xingyu", | ||||
|   "private": false, | ||||
| @ -26,15 +26,15 @@ | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@iconify/iconify": "^3.0.0", | ||||
|     "@vueuse/core": "^9.2.0", | ||||
|     "@wangeditor/editor": "^5.1.18", | ||||
|     "@vueuse/core": "^9.3.0", | ||||
|     "@wangeditor/editor": "^5.1.21", | ||||
|     "@wangeditor/editor-for-vue": "^5.1.10", | ||||
|     "@zxcvbn-ts/core": "^2.0.5", | ||||
|     "animate.css": "^4.1.1", | ||||
|     "axios": "^0.27.2", | ||||
|     "crypto-js": "^4.1.1", | ||||
|     "dayjs": "^1.11.5", | ||||
|     "echarts": "^5.3.3", | ||||
|     "echarts": "^5.4.0", | ||||
|     "echarts-wordcloud": "^2.0.0", | ||||
|     "element-plus": "2.2.17", | ||||
|     "intro.js": "^6.0.0", | ||||
| @ -43,11 +43,10 @@ | ||||
|     "mitt": "^3.0.0", | ||||
|     "nprogress": "^0.2.0", | ||||
|     "pinia": "^2.0.22", | ||||
|     "pinia-plugin-persist": "^1.0.0", | ||||
|     "qrcode": "^1.5.1", | ||||
|     "qs": "^6.11.0", | ||||
|     "url": "^0.11.0", | ||||
|     "vue": "3.2.39", | ||||
|     "vue": "3.2.40", | ||||
|     "vue-cropper": "^1.0.3", | ||||
|     "vue-i18n": "9.2.2", | ||||
|     "vue-router": "^4.1.5", | ||||
| @ -57,52 +56,53 @@ | ||||
|   "devDependencies": { | ||||
|     "@commitlint/cli": "^17.1.2", | ||||
|     "@commitlint/config-conventional": "^17.1.0", | ||||
|     "@iconify/json": "^2.1.110", | ||||
|     "@intlify/vite-plugin-vue-i18n": "^6.0.1", | ||||
|     "@iconify/json": "^2.1.119", | ||||
|     "@intlify/vite-plugin-vue-i18n": "^6.0.3", | ||||
|     "@purge-icons/generated": "^0.9.0", | ||||
|     "@types/intro.js": "^5.1.0", | ||||
|     "@types/lodash-es": "^4.17.6", | ||||
|     "@types/node": "^18.7.18", | ||||
|     "@types/node": "^18.8.3", | ||||
|     "@types/nprogress": "^0.2.0", | ||||
|     "@types/qrcode": "^1.5.0", | ||||
|     "@types/qs": "^6.9.7", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.38.0", | ||||
|     "@typescript-eslint/parser": "^5.38.0", | ||||
|     "@vitejs/plugin-vue": "^3.1.0", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.39.0", | ||||
|     "@typescript-eslint/parser": "^5.39.0", | ||||
|     "@vitejs/plugin-vue": "^3.1.2", | ||||
|     "@vitejs/plugin-vue-jsx": "^2.0.1", | ||||
|     "autoprefixer": "^10.4.11", | ||||
|     "eslint": "^8.23.1", | ||||
|     "autoprefixer": "^10.4.12", | ||||
|     "eslint": "^8.25.0", | ||||
|     "eslint-config-prettier": "^8.5.0", | ||||
|     "eslint-define-config": "^1.7.0", | ||||
|     "eslint-plugin-prettier": "^4.2.1", | ||||
|     "eslint-plugin-vue": "^9.5.1", | ||||
|     "eslint-plugin-vue": "^9.6.0", | ||||
|     "less": "^4.1.3", | ||||
|     "lint-staged": "^13.0.3", | ||||
|     "plop": "^3.1.1", | ||||
|     "postcss": "^8.4.16", | ||||
|     "postcss": "^8.4.17", | ||||
|     "postcss-html": "^1.5.0", | ||||
|     "postcss-less": "^6.0.0", | ||||
|     "prettier": "^2.7.1", | ||||
|     "rimraf": "^3.0.2", | ||||
|     "rollup": "^2.79.0", | ||||
|     "stylelint": "^14.12.0", | ||||
|     "rollup": "^2.79.1", | ||||
|     "stylelint": "^14.13.0", | ||||
|     "stylelint-config-html": "^1.1.0", | ||||
|     "stylelint-config-prettier": "^9.0.3", | ||||
|     "stylelint-config-recommended": "^9.0.0", | ||||
|     "stylelint-config-standard": "^28.0.0", | ||||
|     "stylelint-order": "^5.0.0", | ||||
|     "typescript": "4.8.3", | ||||
|     "unplugin-vue-define-options": "^0.11.2", | ||||
|     "vite": "3.1.3", | ||||
|     "typescript": "4.8.4", | ||||
|     "unplugin-vue-macros": "^0.12.0", | ||||
|     "vite": "3.1.6", | ||||
|     "vite-plugin-compression": "^0.5.1", | ||||
|     "vite-plugin-eslint": "^1.8.1", | ||||
|     "vite-plugin-html": "^3.2.0", | ||||
|     "vite-plugin-purge-icons": "^0.9.1", | ||||
|     "vite-plugin-style-import": "^2.0.0", | ||||
|     "vite-plugin-style-import": "2.0.0", | ||||
|     "vite-plugin-svg-icons": "^2.0.1", | ||||
|     "vite-plugin-windicss": "^1.8.8", | ||||
|     "vue-tsc": "^0.40.13", | ||||
|     "windicss": "^3.5.6" | ||||
|     "windicss": "^3.5.6", | ||||
|     "windicss-analysis": "^0.3.5" | ||||
|   }, | ||||
|   "engines": { | ||||
|     "node": ">= 14.18.0" | ||||
|  | ||||
| @ -29,8 +29,15 @@ export const useRenderSelect = (slots: Slots) => { | ||||
|     // 如果有别名,就取别名 | ||||
|     const labelAlias = item?.componentProps?.optionsAlias?.labelField | ||||
|     const valueAlias = item?.componentProps?.optionsAlias?.valueField | ||||
|  | ||||
|     const { label, value, ...other } = option | ||||
|  | ||||
|     return ( | ||||
|       <ElOption label={option[labelAlias || 'label']} value={option[valueAlias || 'value']}> | ||||
|       <ElOption | ||||
|         label={labelAlias ? option[labelAlias] : label} | ||||
|         value={valueAlias ? option[valueAlias] : value} | ||||
|         {...other} | ||||
|       > | ||||
|         {{ | ||||
|           default: () => | ||||
|             // option 插槽名规则,{field}-option | ||||
|  | ||||
| @ -1,104 +0,0 @@ | ||||
| import { useCache } from '@/hooks/web/useCache' | ||||
|  | ||||
| const { wsCache } = useCache() | ||||
|  | ||||
| export type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' | ||||
|  | ||||
| export type ThemeTypes = { | ||||
|   elColorPrimary?: string | ||||
|   leftMenuBorderColor?: string | ||||
|   leftMenuBgColor?: string | ||||
|   leftMenuBgLightColor?: string | ||||
|   leftMenuBgActiveColor?: string | ||||
|   leftMenuCollapseBgActiveColor?: string | ||||
|   leftMenuTextColor?: string | ||||
|   leftMenuTextActiveColor?: string | ||||
|   logoTitleTextColor?: string | ||||
|   logoBorderColor?: string | ||||
|   topHeaderBgColor?: string | ||||
|   topHeaderTextColor?: string | ||||
|   topHeaderHoverColor?: string | ||||
|   topToolBorderColor?: string | ||||
| } | ||||
| export interface AppState { | ||||
|   breadcrumb: boolean | ||||
|   breadcrumbIcon: boolean | ||||
|   collapse: boolean | ||||
|   uniqueOpened: boolean | ||||
|   hamburger: boolean | ||||
|   screenfull: boolean | ||||
|   size: boolean | ||||
|   locale: boolean | ||||
|   tagsView: boolean | ||||
|   tagsViewIcon: boolean | ||||
|   logo: boolean | ||||
|   fixedHeader: boolean | ||||
|   greyMode: boolean | ||||
|   pageLoading: boolean | ||||
|   layout: LayoutType | ||||
|   title: string | ||||
|   userInfo: string | ||||
|   isDark: boolean | ||||
|   currentSize: ElememtPlusSize | ||||
|   sizeMap: ElememtPlusSize[] | ||||
|   mobile: boolean | ||||
|   footer: boolean | ||||
|   theme: ThemeTypes | ||||
| } | ||||
|  | ||||
| export const appModules: AppState = { | ||||
|   userInfo: 'userInfo', // 登录信息存储字段-建议每个项目换一个字段,避免与其他项目冲突 | ||||
|   sizeMap: ['default', 'large', 'small'], | ||||
|   mobile: false, // 是否是移动端 | ||||
|   title: import.meta.env.VITE_APP_TITLE, // 标题 | ||||
|   pageLoading: false, // 路由跳转loading | ||||
|  | ||||
|   breadcrumb: true, // 面包屑 | ||||
|   breadcrumbIcon: false, // 面包屑图标 | ||||
|   collapse: false, // 折叠菜单 | ||||
|   uniqueOpened: true, // 是否只保持一个子菜单的展开 | ||||
|   hamburger: true, // 折叠图标 | ||||
|   screenfull: true, // 全屏图标 | ||||
|   size: true, // 尺寸图标 | ||||
|   locale: true, // 多语言图标 | ||||
|   tagsView: true, // 标签页 | ||||
|   tagsViewIcon: false, // 是否显示标签图标 | ||||
|   logo: true, // logo | ||||
|   fixedHeader: true, // 固定toolheader | ||||
|   footer: true, // 显示页脚 | ||||
|   greyMode: false, // 是否开始灰色模式,用于特殊悼念日 | ||||
|  | ||||
|   layout: wsCache.get('layout') || 'topLeft', // layout布局 | ||||
|   isDark: wsCache.get('isDark') || false, // 是否是暗黑模式 | ||||
|   currentSize: wsCache.get('default') || 'default', // 组件尺寸 | ||||
|   theme: wsCache.get('theme') || { | ||||
|     // 主题色 | ||||
|     elColorPrimary: '#409eff', | ||||
|     // 左侧菜单边框颜色 | ||||
|     leftMenuBorderColor: 'inherit', | ||||
|     // 左侧菜单背景颜色 | ||||
|     leftMenuBgColor: '#001529', | ||||
|     // 左侧菜单浅色背景颜色 | ||||
|     leftMenuBgLightColor: '#0f2438', | ||||
|     // 左侧菜单选中背景颜色 | ||||
|     leftMenuBgActiveColor: 'var(--el-color-primary)', | ||||
|     // 左侧菜单收起选中背景颜色 | ||||
|     leftMenuCollapseBgActiveColor: 'var(--el-color-primary)', | ||||
|     // 左侧菜单字体颜色 | ||||
|     leftMenuTextColor: '#bfcbd9', | ||||
|     // 左侧菜单选中字体颜色 | ||||
|     leftMenuTextActiveColor: '#fff', | ||||
|     // logo字体颜色 | ||||
|     logoTitleTextColor: '#fff', | ||||
|     // logo边框颜色 | ||||
|     logoBorderColor: 'inherit', | ||||
|     // 头部背景颜色 | ||||
|     topHeaderBgColor: '#fff', | ||||
|     // 头部字体颜色 | ||||
|     topHeaderTextColor: 'inherit', | ||||
|     // 头部悬停颜色 | ||||
|     topHeaderHoverColor: '#f6f6f6', | ||||
|     // 头部边框颜色 | ||||
|     topToolBorderColor: '#eee' | ||||
|   } | ||||
| } | ||||
| @ -1,4 +1,10 @@ | ||||
| import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios' | ||||
| import axios, { | ||||
|   AxiosInstance, | ||||
|   AxiosRequestConfig, | ||||
|   AxiosRequestHeaders, | ||||
|   AxiosResponse, | ||||
|   AxiosError | ||||
| } from 'axios' | ||||
| import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' | ||||
| import qs from 'qs' | ||||
| import { config } from '@/config/axios/config' | ||||
| @ -48,7 +54,8 @@ service.interceptors.request.use( | ||||
|     const data = config.data || false | ||||
|     if ( | ||||
|       config.method?.toUpperCase() === 'POST' && | ||||
|       config!.headers!['Content-Type'] === 'application/x-www-form-urlencoded' | ||||
|       (config.headers as AxiosRequestHeaders)['Content-Type'] === | ||||
|         'application/x-www-form-urlencoded' | ||||
|     ) { | ||||
|       config.data = qs.stringify(data) | ||||
|     } | ||||
|  | ||||
| @ -1,32 +0,0 @@ | ||||
| import { useCache } from '@/hooks/web/useCache' | ||||
| import zhCn from 'element-plus/es/locale/lang/zh-cn' | ||||
| import en from 'element-plus/es/locale/lang/en' | ||||
|  | ||||
| const { wsCache } = useCache() | ||||
|  | ||||
| export const elLocaleMap = { | ||||
|   'zh-CN': zhCn, | ||||
|   en: en | ||||
| } | ||||
| export interface LocaleState { | ||||
|   currentLocale: LocaleDropdownType | ||||
|   localeMap: LocaleDropdownType[] | ||||
| } | ||||
|  | ||||
| export const localeModules: LocaleState = { | ||||
|   currentLocale: { | ||||
|     lang: wsCache.get('lang') || 'zh-CN', | ||||
|     elLocale: elLocaleMap[wsCache.get('lang') || 'zh-CN'] | ||||
|   }, | ||||
|   // 多语言 | ||||
|   localeMap: [ | ||||
|     { | ||||
|       lang: 'zh-CN', | ||||
|       name: '简体中文' | ||||
|     }, | ||||
|     { | ||||
|       lang: 'en', | ||||
|       name: 'English' | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @ -1,11 +1,8 @@ | ||||
| import type { App } from 'vue' | ||||
| import { createPinia } from 'pinia' | ||||
| import piniaPluginPersist from 'pinia-plugin-persist' | ||||
|  | ||||
| const store = createPinia() | ||||
|  | ||||
| store.use(piniaPluginPersist) | ||||
|  | ||||
| export const setupStore = (app: App<Element>) => { | ||||
|   app.use(store) | ||||
| } | ||||
|  | ||||
| @ -1,18 +1,113 @@ | ||||
| import { defineStore } from 'pinia' | ||||
| import { store } from '../index' | ||||
| import { useCache } from '@/hooks/web/useCache' | ||||
| import { appModules } from '@/config/app' | ||||
| import type { AppState, LayoutType, ThemeTypes } from '@/config/app' | ||||
| import { setCssVar, humpToUnderline } from '@/utils' | ||||
| import { ElMessage } from 'element-plus' | ||||
| import { useCache } from '@/hooks/web/useCache' | ||||
|  | ||||
| const { wsCache } = useCache() | ||||
|  | ||||
| export const useAppStore = defineStore({ | ||||
|   id: 'app', | ||||
|   state: (): AppState => appModules, | ||||
|   persist: { | ||||
|     enabled: true | ||||
| type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' | ||||
|  | ||||
| type ThemeTypes = { | ||||
|   elColorPrimary?: string | ||||
|   leftMenuBorderColor?: string | ||||
|   leftMenuBgColor?: string | ||||
|   leftMenuBgLightColor?: string | ||||
|   leftMenuBgActiveColor?: string | ||||
|   leftMenuCollapseBgActiveColor?: string | ||||
|   leftMenuTextColor?: string | ||||
|   leftMenuTextActiveColor?: string | ||||
|   logoTitleTextColor?: string | ||||
|   logoBorderColor?: string | ||||
|   topHeaderBgColor?: string | ||||
|   topHeaderTextColor?: string | ||||
|   topHeaderHoverColor?: string | ||||
|   topToolBorderColor?: string | ||||
| } | ||||
| interface AppState { | ||||
|   breadcrumb: boolean | ||||
|   breadcrumbIcon: boolean | ||||
|   collapse: boolean | ||||
|   uniqueOpened: boolean | ||||
|   hamburger: boolean | ||||
|   screenfull: boolean | ||||
|   size: boolean | ||||
|   locale: boolean | ||||
|   tagsView: boolean | ||||
|   tagsViewIcon: boolean | ||||
|   logo: boolean | ||||
|   fixedHeader: boolean | ||||
|   greyMode: boolean | ||||
|   pageLoading: boolean | ||||
|   layout: LayoutType | ||||
|   title: string | ||||
|   userInfo: string | ||||
|   isDark: boolean | ||||
|   currentSize: ElememtPlusSize | ||||
|   sizeMap: ElememtPlusSize[] | ||||
|   mobile: boolean | ||||
|   footer: boolean | ||||
|   theme: ThemeTypes | ||||
| } | ||||
|  | ||||
| export const useAppStore = defineStore('app', { | ||||
|   state: (): AppState => { | ||||
|     return { | ||||
|       userInfo: 'userInfo', // 登录信息存储字段-建议每个项目换一个字段,避免与其他项目冲突 | ||||
|       sizeMap: ['default', 'large', 'small'], | ||||
|       mobile: false, // 是否是移动端 | ||||
|       title: import.meta.env.VITE_APP_TITLE, // 标题 | ||||
|       pageLoading: false, // 路由跳转loading | ||||
|  | ||||
|       breadcrumb: true, // 面包屑 | ||||
|       breadcrumbIcon: true, // 面包屑图标 | ||||
|       collapse: false, // 折叠菜单 | ||||
|       uniqueOpened: true, // 是否只保持一个子菜单的展开 | ||||
|       hamburger: true, // 折叠图标 | ||||
|       screenfull: true, // 全屏图标 | ||||
|       size: true, // 尺寸图标 | ||||
|       locale: true, // 多语言图标 | ||||
|       tagsView: true, // 标签页 | ||||
|       tagsViewIcon: true, // 是否显示标签图标 | ||||
|       logo: true, // logo | ||||
|       fixedHeader: true, // 固定toolheader | ||||
|       footer: true, // 显示页脚 | ||||
|       greyMode: false, // 是否开始灰色模式,用于特殊悼念日 | ||||
|  | ||||
|       layout: wsCache.get('layout') || 'classic', // layout布局 | ||||
|       isDark: wsCache.get('isDark') || false, // 是否是暗黑模式 | ||||
|       currentSize: wsCache.get('default') || 'default', // 组件尺寸 | ||||
|       theme: wsCache.get('theme') || { | ||||
|         // 主题色 | ||||
|         elColorPrimary: '#409eff', | ||||
|         // 左侧菜单边框颜色 | ||||
|         leftMenuBorderColor: 'inherit', | ||||
|         // 左侧菜单背景颜色 | ||||
|         leftMenuBgColor: '#001529', | ||||
|         // 左侧菜单浅色背景颜色 | ||||
|         leftMenuBgLightColor: '#0f2438', | ||||
|         // 左侧菜单选中背景颜色 | ||||
|         leftMenuBgActiveColor: 'var(--el-color-primary)', | ||||
|         // 左侧菜单收起选中背景颜色 | ||||
|         leftMenuCollapseBgActiveColor: 'var(--el-color-primary)', | ||||
|         // 左侧菜单字体颜色 | ||||
|         leftMenuTextColor: '#bfcbd9', | ||||
|         // 左侧菜单选中字体颜色 | ||||
|         leftMenuTextActiveColor: '#fff', | ||||
|         // logo字体颜色 | ||||
|         logoTitleTextColor: '#fff', | ||||
|         // logo边框颜色 | ||||
|         logoBorderColor: 'inherit', | ||||
|         // 头部背景颜色 | ||||
|         topHeaderBgColor: '#fff', | ||||
|         // 头部字体颜色 | ||||
|         topHeaderTextColor: 'inherit', | ||||
|         // 头部悬停颜色 | ||||
|         topHeaderHoverColor: '#f6f6f6', | ||||
|         // 头部边框颜色 | ||||
|         topToolBorderColor: '#eee' | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   getters: { | ||||
|     getBreadcrumb(): boolean { | ||||
|  | ||||
| @ -16,14 +16,10 @@ export interface DictState { | ||||
|   dictMap: Recordable | ||||
| } | ||||
|  | ||||
| export const useDictStore = defineStore({ | ||||
|   id: 'dict', | ||||
| export const useDictStore = defineStore('dict', { | ||||
|   state: (): DictState => ({ | ||||
|     dictMap: {} | ||||
|   }), | ||||
|   persist: { | ||||
|     enabled: true | ||||
|   }, | ||||
|   getters: { | ||||
|     getDictMap(): Recordable { | ||||
|       return this.dictMap | ||||
|  | ||||
| @ -1,16 +1,39 @@ | ||||
| import { defineStore } from 'pinia' | ||||
| import { store } from '../index' | ||||
| import zhCn from 'element-plus/es/locale/lang/zh-cn' | ||||
| import en from 'element-plus/es/locale/lang/en' | ||||
| import { useCache } from '@/hooks/web/useCache' | ||||
| import { localeModules, elLocaleMap } from '@/config/locale' | ||||
| import type { LocaleState } from '@/config/locale' | ||||
|  | ||||
| const { wsCache } = useCache() | ||||
|  | ||||
| export const useLocaleStore = defineStore({ | ||||
|   id: 'locales', | ||||
|   state: (): LocaleState => localeModules, | ||||
|   persist: { | ||||
|     enabled: true | ||||
| const elLocaleMap = { | ||||
|   'zh-CN': zhCn, | ||||
|   en: en | ||||
| } | ||||
| interface LocaleState { | ||||
|   currentLocale: LocaleDropdownType | ||||
|   localeMap: LocaleDropdownType[] | ||||
| } | ||||
|  | ||||
| export const useLocaleStore = defineStore('locales', { | ||||
|   state: (): LocaleState => { | ||||
|     return { | ||||
|       currentLocale: { | ||||
|         lang: wsCache.get('lang') || 'zh-CN', | ||||
|         elLocale: elLocaleMap[wsCache.get('lang') || 'zh-CN'] | ||||
|       }, | ||||
|       // 多语言 | ||||
|       localeMap: [ | ||||
|         { | ||||
|           lang: 'zh-CN', | ||||
|           name: '简体中文' | ||||
|         }, | ||||
|         { | ||||
|           lang: 'en', | ||||
|           name: 'English' | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   getters: { | ||||
|     getCurrentLocale(): LocaleDropdownType { | ||||
|  | ||||
| @ -14,16 +14,12 @@ export interface PermissionState { | ||||
|   menuTabRouters: AppRouteRecordRaw[] | ||||
| } | ||||
|  | ||||
| export const usePermissionStore = defineStore({ | ||||
|   id: 'permission', | ||||
| export const usePermissionStore = defineStore('permission', { | ||||
|   state: (): PermissionState => ({ | ||||
|     routers: [], | ||||
|     addRouters: [], | ||||
|     menuTabRouters: [] | ||||
|   }), | ||||
|   persist: { | ||||
|     enabled: true | ||||
|   }, | ||||
|   getters: { | ||||
|     getRouters(): AppRouteRecordRaw[] { | ||||
|       return this.routers | ||||
|  | ||||
| @ -10,8 +10,7 @@ export interface TagsViewState { | ||||
|   cachedViews: Set<string> | ||||
| } | ||||
|  | ||||
| export const useTagsViewStore = defineStore({ | ||||
|   id: 'tagsView', | ||||
| export const useTagsViewStore = defineStore('tagsView', { | ||||
|   state: (): TagsViewState => ({ | ||||
|     visitedViews: [], | ||||
|     cachedViews: new Set() | ||||
|  | ||||
| @ -16,8 +16,7 @@ interface UserInfoVO { | ||||
|   user: UserVO | ||||
| } | ||||
|  | ||||
| export const useUserStore = defineStore({ | ||||
|   id: 'admin-user', | ||||
| export const useUserStore = defineStore('admin-user', { | ||||
|   state: (): UserInfoVO => ({ | ||||
|     permissions: [], | ||||
|     roles: [], | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 xingyu
					xingyu