Commit a98af3edbcfb29bc58a49d9325f92cd9430d7ef1

Authored by xingyu
1 parent 1f4e3d6b

feat: 升级vue3

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