diff --git a/README.md b/README.md index 7b2080bab..fb02346c3 100644 --- a/README.md +++ b/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) diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index d6872e2e6..bf446c21b 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -19,14 +19,14 @@ 2.6.11 3.0.3 - 1.6.6 + 1.6.7 2.5 1.2.13-SNSAPSHOT 3.5.2 3.5.2 3.5.2 - 3.17.6 + 3.17.7 1.9.2 @@ -34,11 +34,11 @@ 1.7.1 8.12.0 - 2.6.7 - 0.31.0 + 2.6.9 + 0.33.0 7.2.9.RELEASE - 1.0.3 + 1.0.4 4.8.0 6.7.2 @@ -56,7 +56,7 @@ 2.14.0 3.8.0 0.1.55 - 2.4.1 + 2.5.0 1.3.0 4.1.82.Final @@ -66,7 +66,7 @@ 3.1.561 1.2.7 1.4.0 - 1.5.2 + 1.5.3 2.12.2 diff --git a/yudao-ui-admin-vue3/package.json b/yudao-ui-admin-vue3/package.json index e35ea5779..1bd227f87 100644 --- a/yudao-ui-admin-vue3/package.json +++ b/yudao-ui-admin-vue3/package.json @@ -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" diff --git a/yudao-ui-admin-vue3/src/components/Form/src/components/useRenderSelect.tsx b/yudao-ui-admin-vue3/src/components/Form/src/components/useRenderSelect.tsx index 13793f59b..43943a4ea 100644 --- a/yudao-ui-admin-vue3/src/components/Form/src/components/useRenderSelect.tsx +++ b/yudao-ui-admin-vue3/src/components/Form/src/components/useRenderSelect.tsx @@ -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 ( - + {{ default: () => // option 插槽名规则,{field}-option diff --git a/yudao-ui-admin-vue3/src/config/app.ts b/yudao-ui-admin-vue3/src/config/app.ts deleted file mode 100644 index 1b6baf6c8..000000000 --- a/yudao-ui-admin-vue3/src/config/app.ts +++ /dev/null @@ -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' - } -} diff --git a/yudao-ui-admin-vue3/src/config/axios/index.ts b/yudao-ui-admin-vue3/src/config/axios/index.ts index 75d4139d1..1512be132 100644 --- a/yudao-ui-admin-vue3/src/config/axios/index.ts +++ b/yudao-ui-admin-vue3/src/config/axios/index.ts @@ -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) } diff --git a/yudao-ui-admin-vue3/src/config/locale.ts b/yudao-ui-admin-vue3/src/config/locale.ts deleted file mode 100644 index c20a3d917..000000000 --- a/yudao-ui-admin-vue3/src/config/locale.ts +++ /dev/null @@ -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' - } - ] -} diff --git a/yudao-ui-admin-vue3/src/store/index.ts b/yudao-ui-admin-vue3/src/store/index.ts index 4038068be..65964ea8f 100644 --- a/yudao-ui-admin-vue3/src/store/index.ts +++ b/yudao-ui-admin-vue3/src/store/index.ts @@ -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) => { app.use(store) } diff --git a/yudao-ui-admin-vue3/src/store/modules/app.ts b/yudao-ui-admin-vue3/src/store/modules/app.ts index 8f00ed189..e85805897 100644 --- a/yudao-ui-admin-vue3/src/store/modules/app.ts +++ b/yudao-ui-admin-vue3/src/store/modules/app.ts @@ -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 { diff --git a/yudao-ui-admin-vue3/src/store/modules/dict.ts b/yudao-ui-admin-vue3/src/store/modules/dict.ts index 7cd1d725b..56547ff55 100644 --- a/yudao-ui-admin-vue3/src/store/modules/dict.ts +++ b/yudao-ui-admin-vue3/src/store/modules/dict.ts @@ -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 diff --git a/yudao-ui-admin-vue3/src/store/modules/locale.ts b/yudao-ui-admin-vue3/src/store/modules/locale.ts index 4b7d0640c..90a0d557d 100644 --- a/yudao-ui-admin-vue3/src/store/modules/locale.ts +++ b/yudao-ui-admin-vue3/src/store/modules/locale.ts @@ -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 { diff --git a/yudao-ui-admin-vue3/src/store/modules/permission.ts b/yudao-ui-admin-vue3/src/store/modules/permission.ts index cb76ef6f5..fac022d21 100644 --- a/yudao-ui-admin-vue3/src/store/modules/permission.ts +++ b/yudao-ui-admin-vue3/src/store/modules/permission.ts @@ -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 diff --git a/yudao-ui-admin-vue3/src/store/modules/tagsView.ts b/yudao-ui-admin-vue3/src/store/modules/tagsView.ts index 33da805de..e9fbf3714 100644 --- a/yudao-ui-admin-vue3/src/store/modules/tagsView.ts +++ b/yudao-ui-admin-vue3/src/store/modules/tagsView.ts @@ -10,8 +10,7 @@ export interface TagsViewState { cachedViews: Set } -export const useTagsViewStore = defineStore({ - id: 'tagsView', +export const useTagsViewStore = defineStore('tagsView', { state: (): TagsViewState => ({ visitedViews: [], cachedViews: new Set() diff --git a/yudao-ui-admin-vue3/src/store/modules/user.ts b/yudao-ui-admin-vue3/src/store/modules/user.ts index a8aa17de8..9165ab785 100644 --- a/yudao-ui-admin-vue3/src/store/modules/user.ts +++ b/yudao-ui-admin-vue3/src/store/modules/user.ts @@ -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: [],