mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-26 09:11:52 +08:00
feat: 升级vue3
This commit is contained in:
parent
1f4e3d6bbe
commit
a98af3edbc
30
README.md
30
README.md
@ -170,14 +170,14 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
|||||||
### 后端
|
### 后端
|
||||||
|
|
||||||
| 框架 | 说明 | 版本 | 学习指南 |
|
| 框架 | 说明 | 版本 | 学习指南 |
|
||||||
|---------------------------------------------------------------------------------------------|-----------------------|---------|----------------------------------------------------------------|
|
|---------------------------------------------------------------------------------------------|-----------------------|------------------|----------------------------------------------------------------|
|
||||||
| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.6.10 | [文档](https://github.com/YunaiV/SpringBoot-Labs) |
|
| [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 | |
|
| [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) |
|
| [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) |
|
| [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) |
|
| [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 | |
|
| [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) |
|
| [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 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) |
|
| [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) |
|
| [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.2.3 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) |
|
||||||
@ -186,12 +186,12 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
|||||||
| [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 3.0.3 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?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) |
|
| [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) |
|
| [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) |
|
| [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 | |
|
| [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) |
|
| [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.5.2.Final | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) |
|
||||||
| [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.16.14 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?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 | - |
|
| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.8.2 | - |
|
||||||
| [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 4.0.0 | - |
|
| [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 4.8.0 | - |
|
||||||
|
|
||||||
### [管理后台 Vue2 前端](./yudao-ui-admin)
|
### [管理后台 Vue2 前端](./yudao-ui-admin)
|
||||||
|
|
||||||
@ -204,14 +204,14 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
|||||||
|
|
||||||
| 框架 | 说明 | 版本 |
|
| 框架 | 说明 | 版本 |
|
||||||
|----------------------------------------------------------------------|-----------------|--------|
|
|----------------------------------------------------------------------|-----------------|--------|
|
||||||
| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.37 |
|
| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.40 |
|
||||||
| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 3.0.4 |
|
| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 3.1.6 |
|
||||||
| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.12 |
|
| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.2.17 |
|
||||||
| [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.7.4 |
|
| [TypeScript](https://www.typescriptlang.org/docs/) | TypeScript | 4.8.4 |
|
||||||
| [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.17 |
|
| [pinia](https://pinia.vuejs.org/) | vuex5 | 2.0.22 |
|
||||||
| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 |
|
| [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 |
|
||||||
| [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 |
|
| [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)
|
### [管理后台 uni-app 跨端](./yudao-ui-admin-uniapp)
|
||||||
|
|
||||||
|
@ -19,14 +19,14 @@
|
|||||||
<spring.boot.version>2.6.11</spring.boot.version>
|
<spring.boot.version>2.6.11</spring.boot.version>
|
||||||
<!-- Web 相关 -->
|
<!-- Web 相关 -->
|
||||||
<knife4j.version>3.0.3</knife4j.version>
|
<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>
|
<servlet.versoin>2.5</servlet.versoin>
|
||||||
<!-- DB 相关 -->
|
<!-- DB 相关 -->
|
||||||
<druid.version>1.2.13-SNSAPSHOT</druid.version>
|
<druid.version>1.2.13-SNSAPSHOT</druid.version>
|
||||||
<mybatis-plus.version>3.5.2</mybatis-plus.version>
|
<mybatis-plus.version>3.5.2</mybatis-plus.version>
|
||||||
<mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version>
|
<mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version>
|
||||||
<dynamic-datasource.version>3.5.2</dynamic-datasource.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 配置中心相关 -->
|
<!-- Config 配置中心相关 -->
|
||||||
<apollo.version>1.9.2</apollo.version>
|
<apollo.version>1.9.2</apollo.version>
|
||||||
<!-- 服务保障相关 -->
|
<!-- 服务保障相关 -->
|
||||||
@ -34,11 +34,11 @@
|
|||||||
<resilience4j.version>1.7.1</resilience4j.version>
|
<resilience4j.version>1.7.1</resilience4j.version>
|
||||||
<!-- 监控相关 -->
|
<!-- 监控相关 -->
|
||||||
<skywalking.version>8.12.0</skywalking.version>
|
<skywalking.version>8.12.0</skywalking.version>
|
||||||
<spring-boot-admin.version>2.6.7</spring-boot-admin.version>
|
<spring-boot-admin.version>2.6.9</spring-boot-admin.version>
|
||||||
<opentracing.version>0.31.0</opentracing.version>
|
<opentracing.version>0.33.0</opentracing.version>
|
||||||
<!-- Test 测试相关 -->
|
<!-- Test 测试相关 -->
|
||||||
<podam.version>7.2.9.RELEASE</podam.version>
|
<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>
|
<mockito-inline.version>4.8.0</mockito-inline.version>
|
||||||
<!-- Bpm 工作流相关 -->
|
<!-- Bpm 工作流相关 -->
|
||||||
<flowable.version>6.7.2</flowable.version>
|
<flowable.version>6.7.2</flowable.version>
|
||||||
@ -56,7 +56,7 @@
|
|||||||
<transmittable-thread-local.version>2.14.0</transmittable-thread-local.version>
|
<transmittable-thread-local.version>2.14.0</transmittable-thread-local.version>
|
||||||
<commons-net.version>3.8.0</commons-net.version>
|
<commons-net.version>3.8.0</commons-net.version>
|
||||||
<jsch.version>0.1.55</jsch.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>
|
<aj-captcha.version>1.3.0</aj-captcha.version>
|
||||||
<netty-all.version>4.1.82.Final</netty-all.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>
|
<tencentcloud-sdk-java.version>3.1.561</tencentcloud-sdk-java.version>
|
||||||
<yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
|
<yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
|
||||||
<justauth.version>1.4.0</justauth.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>
|
<xercesImpl.version>2.12.2</xercesImpl.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ruoyi-vue-pro-vue3",
|
"name": "ruoyi-vue-pro-vue3",
|
||||||
"version": "1.6.4.1641",
|
"version": "1.6.4.1651",
|
||||||
"description": "基于vue3、element-plus、typesScript、vite3",
|
"description": "基于vue3、element-plus、typesScript、vite3",
|
||||||
"author": "xingyu",
|
"author": "xingyu",
|
||||||
"private": false,
|
"private": false,
|
||||||
@ -26,15 +26,15 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@iconify/iconify": "^3.0.0",
|
"@iconify/iconify": "^3.0.0",
|
||||||
"@vueuse/core": "^9.2.0",
|
"@vueuse/core": "^9.3.0",
|
||||||
"@wangeditor/editor": "^5.1.18",
|
"@wangeditor/editor": "^5.1.21",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.10",
|
"@wangeditor/editor-for-vue": "^5.1.10",
|
||||||
"@zxcvbn-ts/core": "^2.0.5",
|
"@zxcvbn-ts/core": "^2.0.5",
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
"crypto-js": "^4.1.1",
|
"crypto-js": "^4.1.1",
|
||||||
"dayjs": "^1.11.5",
|
"dayjs": "^1.11.5",
|
||||||
"echarts": "^5.3.3",
|
"echarts": "^5.4.0",
|
||||||
"echarts-wordcloud": "^2.0.0",
|
"echarts-wordcloud": "^2.0.0",
|
||||||
"element-plus": "2.2.17",
|
"element-plus": "2.2.17",
|
||||||
"intro.js": "^6.0.0",
|
"intro.js": "^6.0.0",
|
||||||
@ -43,11 +43,10 @@
|
|||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.0.22",
|
"pinia": "^2.0.22",
|
||||||
"pinia-plugin-persist": "^1.0.0",
|
|
||||||
"qrcode": "^1.5.1",
|
"qrcode": "^1.5.1",
|
||||||
"qs": "^6.11.0",
|
"qs": "^6.11.0",
|
||||||
"url": "^0.11.0",
|
"url": "^0.11.0",
|
||||||
"vue": "3.2.39",
|
"vue": "3.2.40",
|
||||||
"vue-cropper": "^1.0.3",
|
"vue-cropper": "^1.0.3",
|
||||||
"vue-i18n": "9.2.2",
|
"vue-i18n": "9.2.2",
|
||||||
"vue-router": "^4.1.5",
|
"vue-router": "^4.1.5",
|
||||||
@ -57,52 +56,53 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^17.1.2",
|
"@commitlint/cli": "^17.1.2",
|
||||||
"@commitlint/config-conventional": "^17.1.0",
|
"@commitlint/config-conventional": "^17.1.0",
|
||||||
"@iconify/json": "^2.1.110",
|
"@iconify/json": "^2.1.119",
|
||||||
"@intlify/vite-plugin-vue-i18n": "^6.0.1",
|
"@intlify/vite-plugin-vue-i18n": "^6.0.3",
|
||||||
"@purge-icons/generated": "^0.9.0",
|
"@purge-icons/generated": "^0.9.0",
|
||||||
"@types/intro.js": "^5.1.0",
|
"@types/intro.js": "^5.1.0",
|
||||||
"@types/lodash-es": "^4.17.6",
|
"@types/lodash-es": "^4.17.6",
|
||||||
"@types/node": "^18.7.18",
|
"@types/node": "^18.8.3",
|
||||||
"@types/nprogress": "^0.2.0",
|
"@types/nprogress": "^0.2.0",
|
||||||
"@types/qrcode": "^1.5.0",
|
"@types/qrcode": "^1.5.0",
|
||||||
"@types/qs": "^6.9.7",
|
"@types/qs": "^6.9.7",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.38.0",
|
"@typescript-eslint/eslint-plugin": "^5.39.0",
|
||||||
"@typescript-eslint/parser": "^5.38.0",
|
"@typescript-eslint/parser": "^5.39.0",
|
||||||
"@vitejs/plugin-vue": "^3.1.0",
|
"@vitejs/plugin-vue": "^3.1.2",
|
||||||
"@vitejs/plugin-vue-jsx": "^2.0.1",
|
"@vitejs/plugin-vue-jsx": "^2.0.1",
|
||||||
"autoprefixer": "^10.4.11",
|
"autoprefixer": "^10.4.12",
|
||||||
"eslint": "^8.23.1",
|
"eslint": "^8.25.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-define-config": "^1.7.0",
|
"eslint-define-config": "^1.7.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"eslint-plugin-vue": "^9.5.1",
|
"eslint-plugin-vue": "^9.6.0",
|
||||||
"less": "^4.1.3",
|
"less": "^4.1.3",
|
||||||
"lint-staged": "^13.0.3",
|
"lint-staged": "^13.0.3",
|
||||||
"plop": "^3.1.1",
|
"plop": "^3.1.1",
|
||||||
"postcss": "^8.4.16",
|
"postcss": "^8.4.17",
|
||||||
"postcss-html": "^1.5.0",
|
"postcss-html": "^1.5.0",
|
||||||
"postcss-less": "^6.0.0",
|
"postcss-less": "^6.0.0",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"rollup": "^2.79.0",
|
"rollup": "^2.79.1",
|
||||||
"stylelint": "^14.12.0",
|
"stylelint": "^14.13.0",
|
||||||
"stylelint-config-html": "^1.1.0",
|
"stylelint-config-html": "^1.1.0",
|
||||||
"stylelint-config-prettier": "^9.0.3",
|
"stylelint-config-prettier": "^9.0.3",
|
||||||
"stylelint-config-recommended": "^9.0.0",
|
"stylelint-config-recommended": "^9.0.0",
|
||||||
"stylelint-config-standard": "^28.0.0",
|
"stylelint-config-standard": "^28.0.0",
|
||||||
"stylelint-order": "^5.0.0",
|
"stylelint-order": "^5.0.0",
|
||||||
"typescript": "4.8.3",
|
"typescript": "4.8.4",
|
||||||
"unplugin-vue-define-options": "^0.11.2",
|
"unplugin-vue-macros": "^0.12.0",
|
||||||
"vite": "3.1.3",
|
"vite": "3.1.6",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-html": "^3.2.0",
|
"vite-plugin-html": "^3.2.0",
|
||||||
"vite-plugin-purge-icons": "^0.9.1",
|
"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-svg-icons": "^2.0.1",
|
||||||
"vite-plugin-windicss": "^1.8.8",
|
"vite-plugin-windicss": "^1.8.8",
|
||||||
"vue-tsc": "^0.40.13",
|
"vue-tsc": "^0.40.13",
|
||||||
"windicss": "^3.5.6"
|
"windicss": "^3.5.6",
|
||||||
|
"windicss-analysis": "^0.3.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14.18.0"
|
"node": ">= 14.18.0"
|
||||||
|
@ -29,8 +29,15 @@ export const useRenderSelect = (slots: Slots) => {
|
|||||||
// 如果有别名,就取别名
|
// 如果有别名,就取别名
|
||||||
const labelAlias = item?.componentProps?.optionsAlias?.labelField
|
const labelAlias = item?.componentProps?.optionsAlias?.labelField
|
||||||
const valueAlias = item?.componentProps?.optionsAlias?.valueField
|
const valueAlias = item?.componentProps?.optionsAlias?.valueField
|
||||||
|
|
||||||
|
const { label, value, ...other } = option
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ElOption label={option[labelAlias || 'label']} value={option[valueAlias || 'value']}>
|
<ElOption
|
||||||
|
label={labelAlias ? option[labelAlias] : label}
|
||||||
|
value={valueAlias ? option[valueAlias] : value}
|
||||||
|
{...other}
|
||||||
|
>
|
||||||
{{
|
{{
|
||||||
default: () =>
|
default: () =>
|
||||||
// option 插槽名规则,{field}-option
|
// 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 { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
|
||||||
import qs from 'qs'
|
import qs from 'qs'
|
||||||
import { config } from '@/config/axios/config'
|
import { config } from '@/config/axios/config'
|
||||||
@ -48,7 +54,8 @@ service.interceptors.request.use(
|
|||||||
const data = config.data || false
|
const data = config.data || false
|
||||||
if (
|
if (
|
||||||
config.method?.toUpperCase() === 'POST' &&
|
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)
|
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 type { App } from 'vue'
|
||||||
import { createPinia } from 'pinia'
|
import { createPinia } from 'pinia'
|
||||||
import piniaPluginPersist from 'pinia-plugin-persist'
|
|
||||||
|
|
||||||
const store = createPinia()
|
const store = createPinia()
|
||||||
|
|
||||||
store.use(piniaPluginPersist)
|
|
||||||
|
|
||||||
export const setupStore = (app: App<Element>) => {
|
export const setupStore = (app: App<Element>) => {
|
||||||
app.use(store)
|
app.use(store)
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,113 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import { store } from '../index'
|
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 { setCssVar, humpToUnderline } from '@/utils'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
|
import { useCache } from '@/hooks/web/useCache'
|
||||||
|
|
||||||
const { wsCache } = useCache()
|
const { wsCache } = useCache()
|
||||||
|
|
||||||
export const useAppStore = defineStore({
|
type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu'
|
||||||
id: 'app',
|
|
||||||
state: (): AppState => appModules,
|
type ThemeTypes = {
|
||||||
persist: {
|
elColorPrimary?: string
|
||||||
enabled: true
|
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: {
|
getters: {
|
||||||
getBreadcrumb(): boolean {
|
getBreadcrumb(): boolean {
|
||||||
|
@ -16,14 +16,10 @@ export interface DictState {
|
|||||||
dictMap: Recordable
|
dictMap: Recordable
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useDictStore = defineStore({
|
export const useDictStore = defineStore('dict', {
|
||||||
id: 'dict',
|
|
||||||
state: (): DictState => ({
|
state: (): DictState => ({
|
||||||
dictMap: {}
|
dictMap: {}
|
||||||
}),
|
}),
|
||||||
persist: {
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
getters: {
|
getters: {
|
||||||
getDictMap(): Recordable {
|
getDictMap(): Recordable {
|
||||||
return this.dictMap
|
return this.dictMap
|
||||||
|
@ -1,16 +1,39 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import { store } from '../index'
|
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 { useCache } from '@/hooks/web/useCache'
|
||||||
import { localeModules, elLocaleMap } from '@/config/locale'
|
|
||||||
import type { LocaleState } from '@/config/locale'
|
|
||||||
|
|
||||||
const { wsCache } = useCache()
|
const { wsCache } = useCache()
|
||||||
|
|
||||||
export const useLocaleStore = defineStore({
|
const elLocaleMap = {
|
||||||
id: 'locales',
|
'zh-CN': zhCn,
|
||||||
state: (): LocaleState => localeModules,
|
en: en
|
||||||
persist: {
|
}
|
||||||
enabled: true
|
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: {
|
getters: {
|
||||||
getCurrentLocale(): LocaleDropdownType {
|
getCurrentLocale(): LocaleDropdownType {
|
||||||
|
@ -14,16 +14,12 @@ export interface PermissionState {
|
|||||||
menuTabRouters: AppRouteRecordRaw[]
|
menuTabRouters: AppRouteRecordRaw[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const usePermissionStore = defineStore({
|
export const usePermissionStore = defineStore('permission', {
|
||||||
id: 'permission',
|
|
||||||
state: (): PermissionState => ({
|
state: (): PermissionState => ({
|
||||||
routers: [],
|
routers: [],
|
||||||
addRouters: [],
|
addRouters: [],
|
||||||
menuTabRouters: []
|
menuTabRouters: []
|
||||||
}),
|
}),
|
||||||
persist: {
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
getters: {
|
getters: {
|
||||||
getRouters(): AppRouteRecordRaw[] {
|
getRouters(): AppRouteRecordRaw[] {
|
||||||
return this.routers
|
return this.routers
|
||||||
|
@ -10,8 +10,7 @@ export interface TagsViewState {
|
|||||||
cachedViews: Set<string>
|
cachedViews: Set<string>
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useTagsViewStore = defineStore({
|
export const useTagsViewStore = defineStore('tagsView', {
|
||||||
id: 'tagsView',
|
|
||||||
state: (): TagsViewState => ({
|
state: (): TagsViewState => ({
|
||||||
visitedViews: [],
|
visitedViews: [],
|
||||||
cachedViews: new Set()
|
cachedViews: new Set()
|
||||||
|
@ -16,8 +16,7 @@ interface UserInfoVO {
|
|||||||
user: UserVO
|
user: UserVO
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useUserStore = defineStore({
|
export const useUserStore = defineStore('admin-user', {
|
||||||
id: 'admin-user',
|
|
||||||
state: (): UserInfoVO => ({
|
state: (): UserInfoVO => ({
|
||||||
permissions: [],
|
permissions: [],
|
||||||
roles: [],
|
roles: [],
|
||||||
|
Loading…
Reference in New Issue
Block a user