diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 8fc97863ce84dc537b4edcd5b7d48e9b62c89146..d9799257a47f942971cd97eb392aa3ec9a56b12d 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -17,6 +17,7 @@ "MaybeRefOrGetter": true, "PropType": true, "Ref": true, + "ShallowRef": true, "Slot": true, "Slots": true, "VNode": true, @@ -54,6 +55,7 @@ "getActivePinia": true, "getCurrentInstance": true, "getCurrentScope": true, + "getCurrentWatcher": true, "h": true, "ignorableWatch": true, "inject": true, @@ -63,6 +65,7 @@ "isReactive": true, "isReadonly": true, "isRef": true, + "isShallow": true, "makeDestructurable": true, "mapActions": true, "mapGetters": true, @@ -106,11 +109,11 @@ "refAutoReset": true, "refDebounced": true, "refDefault": true, + "refManualReset": true, "refThrottled": true, "refWithControl": true, "resolveComponent": true, "resolveRef": true, - "resolveUnref": true, "setActivePinia": true, "setMapStoreSuffix": true, "shallowReactive": true, @@ -168,6 +171,7 @@ "useCountdown": true, "useCounter": true, "useCssModule": true, + "useCssSupports": true, "useCssVar": true, "useCssVars": true, "useCurrentElement": true, diff --git a/README.md b/README.md index 1c89bf95f18852950fbb7e0e24b39f1e6cf87ca9..b0152d13de76a533feaa6e33d7216a0988937f67 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## 平台简介 - 本仓库为前端技术栈 [Vue3](https://v3.cn.vuejs.org) + [TS](https://www.typescriptlang.org/) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 版本。 -- 成员项目: 基于 vben5(ant-design-vue) 的前端项目 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5) +- 成员项目: 基于 vben5(ant-design-vue) 的前端项目 [ruoyi-plus-vben5](https://github.com/imdap/ruoyi-plus-vben5) - 成员项目: 基于soybean 的前端项目 [ruoyi-plus-soybean](https://gitee.com/xlsea/ruoyi-plus-soybean) ## 配套后端代码仓库地址 diff --git a/package.json b/package.json index 478c18ba82ef5924a797314ca57ed60694f39c95..cf44b03036a8b08c484017b380e1852a2be4e163 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "ruoyi-vue-plus", - "version": "5.5.3-2.5.3", + "version": "5.6.0-2.6.0", "description": "RuoYi-Vue-Plus多租户管理系统", "author": "LionLi", "license": "MIT", @@ -23,68 +23,67 @@ "@element-plus/icons-vue": "2.3.2", "@highlightjs/vue-plugin": "2.1.2", "@vueup/vue-quill": "1.2.0", - "@vueuse/core": "13.9.0", + "@vueuse/core": "14.2.1", "animate.css": "4.1.1", "await-to-js": "3.0.0", - "axios": "1.13.1", + "axios": "1.13.6", "crypto-js": "4.2.0", - "echarts": "5.6.0", - "element-plus": "2.11.7", + "echarts": "6.0.0", + "element-plus": "2.13.5", "file-saver": "2.0.5", "highlight.js": "11.11.1", "image-conversion": "2.1.1", "js-cookie": "3.0.5", "jsencrypt": "3.5.4", "nprogress": "0.2.0", - "pinia": "3.0.3", + "pinia": "3.0.4", "screenfull": "6.0.2", - "vue": "3.5.22", + "vue": "3.5.30", "vue-cropper": "1.1.4", - "vue-i18n": "11.1.12", + "vue-i18n": "11.3.0", "vue-json-pretty": "2.6.0", - "vue-router": "4.6.3", + "vue-router": "5.0.3", "vue-types": "6.0.0", - "vxe-table": "4.17.7" + "vxe-table": "4.18.1" }, "devDependencies": { - "@iconify/json": "^2.2.403", + "@iconify/json": "^2.2.448", "@types/crypto-js": "4.2.2", "@types/file-saver": "2.0.7", "@types/js-cookie": "3.0.6", - "@types/node": "^22.19.0", + "@types/node": "^25.4.0", "@types/nprogress": "0.2.3", - "@unocss/preset-attributify": "66.5.4", - "@unocss/preset-icons": "66.5.4", - "@unocss/preset-uno": "66.5.4", - "@vitejs/plugin-vue": "5.2.4", - "@vue/compiler-sfc": "3.5.22", + "@unocss/preset-attributify": "66.6.6", + "@unocss/preset-icons": "66.6.6", + "@unocss/preset-uno": "66.6.6", + "@vitejs/plugin-vue": "6.0.4", + "@vue/compiler-sfc": "3.5.30", "@vue/eslint-config-prettier": "10.2.0", "@vue/eslint-config-typescript": "14.6.0", - "autoprefixer": "10.4.21", + "autoprefixer": "10.4.27", "eslint": "9.39.1", - "eslint-plugin-prettier": "5.5.4", + "eslint-plugin-prettier": "5.5.5", "eslint-plugin-vue": "9.33.0", - "globals": "16.5.0", - "prettier": "3.6.2", - "sass": "1.93.3", + "globals": "17.4.0", + "prettier": "3.8.1", + "sass": "1.98.0", "typescript": "~5.9.3", - "unocss": "66.5.4", - "unplugin-auto-import": "19.3.0", - "unplugin-icons": "22.5.0", - "unplugin-vue-components": "28.8.0", + "unocss": "66.6.6", + "unplugin-auto-import": "21.0.0", + "unplugin-icons": "23.0.1", + "unplugin-vue-components": "31.0.0", "unplugin-vue-setup-extend-plus": "1.0.1", - "vite": "6.4.1", - "vite-plugin-compression": "0.5.1", + "vite": "7.3.1", "vite-plugin-svg-icons-ng": "^1.5.2", - "vite-plugin-vue-devtools": "8.0.3", - "vitest": "3.2.4", - "vue-tsc": "^2.2.12" + "vite-plugin-vue-devtools": "8.0.7", + "vitest": "4.0.18", + "vue-tsc": "^3.2.5" }, "overrides": { - "quill": "2.0.2" + "quill": "1.3.7" }, "engines": { - "node": ">=20.15.0", + "node": ">=20.19.0", "npm": ">=8.19.0" }, "browserslist": [ diff --git a/src/api/workflow/task/types.ts b/src/api/workflow/task/types.ts index e3c9abfc1535cf4ce88ff7ced060353d2215506a..482bd33830c6bf08404d23f8e73ffc1e7d6dcb54 100644 --- a/src/api/workflow/task/types.ts +++ b/src/api/workflow/task/types.ts @@ -43,7 +43,7 @@ export interface ButtonList { } export interface FlowCopyVo { userId: string | number; - userName: string; + nickName: string; } export interface TaskOperationBo { @@ -53,6 +53,8 @@ export interface TaskOperationBo { userIds?: string[]; //任务ID(必填) taskId: string | number; + //消息类型 + messageType?: string[]; //意见或备注信息(可选) message?: string; } diff --git a/src/assets/styles/btn.scss b/src/assets/styles/btn.scss index d614f2fd2cbe02cc2e6c0439564bad2116ef9955..13a464a46d9f4e61aa3c0be858fc723e82ce3c72 100644 --- a/src/assets/styles/btn.scss +++ b/src/assets/styles/btn.scss @@ -45,7 +45,7 @@ font-size: 14px; color: #fff; padding: 14px 36px; - border-radius: 8px; + border-radius: var(--app-radius-md); border: none; outline: none; transition: 600ms ease all; @@ -95,5 +95,5 @@ margin: 0; padding: 10px 15px; font-size: 14px; - border-radius: 4px; + border-radius: var(--app-radius-sm); } diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss index e38c7035b6b559947050a02422140bcd4578a19d..106a64710047333d8d96d106e311b326efdf7b1e 100644 --- a/src/assets/styles/element-ui.scss +++ b/src/assets/styles/element-ui.scss @@ -74,6 +74,9 @@ .el-dialog { margin: 0 auto !important; + border-radius: var(--app-radius-lg); + box-shadow: var(--app-shadow-md); + overflow: hidden; .el-dialog__body { padding: 15px !important; @@ -108,6 +111,8 @@ // dropdown .el-dropdown-menu { + border-radius: var(--app-radius-md); + box-shadow: var(--app-shadow-sm); a { display: block; } @@ -151,3 +156,122 @@ .el-message-box .el-message-box__message { word-break: break-word; } + +.el-message-box { + border-radius: var(--app-radius-lg); + box-shadow: var(--app-shadow-md); +} + +.el-message, +.el-notification, +.el-alert { + border-radius: var(--app-radius-md); + box-shadow: var(--app-shadow-sm); +} + +// Modern rounded inputs +.el-input__wrapper, +.el-textarea__inner, +.el-select__wrapper, +.el-date-editor, +.el-range-editor, +.el-input-number, +.el-input-number__decrease, +.el-input-number__increase { + border-radius: var(--app-radius-md); + transition: box-shadow 0.2s ease, border-color 0.2s ease, background-color 0.2s ease; +} + +.el-input__wrapper.is-focus, +.el-textarea__inner:focus, +.el-select__wrapper.is-focus, +.el-date-editor.is-focus, +.el-range-editor.is-focus { + box-shadow: 0 0 0 2px var(--el-color-primary-light-8); +} + +// Buttons +.el-button { + border-radius: var(--app-radius-md); + transition: transform 0.15s ease, box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease; +} + +.el-button:not(.is-text):not(.is-link):hover { + transform: translateY(-1px); + box-shadow: var(--app-shadow-sm); +} + +// Tags and badges +.el-tag { + border-radius: var(--app-radius-md); +} + +// Cards, popovers, drawers +.el-popover, +.el-tooltip__popper, +.el-popper { + border-radius: var(--app-radius-md); + box-shadow: var(--app-shadow-sm); +} + +.el-drawer { + border-radius: var(--app-radius-lg); + box-shadow: var(--app-shadow-md); +} + +.el-drawer__header { + margin-bottom: 0; + padding: 16px 20px; + border-bottom: 1px solid var(--el-border-color-light); +} + +// Table polish +.el-table { + border-radius: var(--app-radius-lg); + overflow: hidden; + box-shadow: var(--app-shadow-sm); + border: 1px solid var(--el-border-color-lighter); +} + +.el-table__header-wrapper, +.el-table__body-wrapper { + background: var(--el-bg-color); +} + +.el-table__row:hover td.el-table__cell { + background-color: var(--el-fill-color-light) !important; +} + +// Tabs +.el-tabs__header { + margin: 0 0 12px 0; +} + +.el-tabs__item { + border-radius: var(--app-radius-md); + margin: 0 2px; +} + +.el-tabs__nav-wrap::after { + background-color: var(--el-border-color-lighter); +} + +// Pagination +.el-pagination .btn-prev, +.el-pagination .btn-next, +.el-pagination .el-pager li { + border-radius: var(--app-radius-sm); + transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease; +} + +.el-pagination .el-pager li.is-active { + box-shadow: var(--app-shadow-sm); +} + +// Breadcrumb +.el-breadcrumb { + padding: 0; + background: transparent; + border: none; + border-radius: 0; +} diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index 7228c52fedfd0e62d0f954ef3a2de903be573db1..bd853d4e253d490f5eb5728d31cebcb50894d8b3 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -14,18 +14,20 @@ body { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; + background: var(--el-bg-color-page); font-family: - Helvetica Neue, - Helvetica, - PingFang SC, - Hiragino Sans GB, - Microsoft YaHei, - Arial, + 'MiSans', + 'HarmonyOS Sans SC', + 'PingFang SC', + 'Source Han Sans SC', + 'Noto Sans SC', + 'Hiragino Sans GB', + 'Microsoft YaHei', sans-serif; } label { - font-weight: 700; + font-weight: 600; } html { @@ -116,11 +118,18 @@ aside { background: #eef1f6; padding: 8px 24px; margin-bottom: 20px; - border-radius: 2px; + border-radius: var(--app-radius-md); display: block; line-height: 32px; font-size: 16px; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: + 'MiSans', + 'HarmonyOS Sans SC', + 'PingFang SC', + 'Source Han Sans SC', + 'Noto Sans SC', + 'Hiragino Sans GB', + 'Microsoft YaHei', sans-serif; color: #2c3e50; -webkit-font-smoothing: antialiased; @@ -139,21 +148,27 @@ aside { //main-container全局样式 .app-container { padding: 20px; + background: var(--app-surface-bg); + border: 1px solid var(--app-surface-border); + border-radius: var(--app-radius-lg); + box-shadow: var(--app-shadow-sm); } // search面板样式 .panel, .search { margin-bottom: 0.75rem; - border-radius: 0.25rem; + border-radius: var(--app-radius-lg); border: 1px solid var(--el-border-color-light); background-color: var(--el-bg-color-overlay); padding: 0.75rem; - transition: all ease 0.3s; + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease; &:hover { - box-shadow: 0 2px 12px #0000001a; - transition: all ease 0.3s; + box-shadow: var(--app-shadow-sm); + border-color: var(--el-border-color); + transform: translateY(-1px); } } diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss index 952601784349d31b6b52f3006caf6a97974cdace..d50f46f8d9adcf61915b0c7d0385c73ba410e39e 100644 --- a/src/assets/styles/ruoyi.scss +++ b/src/assets/styles/ruoyi.scss @@ -74,7 +74,7 @@ h6 { } .el-form .el-form-item__label { - font-weight: 700; + font-weight: 600; } .el-dialog:not(.is-fullscreen) { margin-top: 6vh !important; @@ -127,7 +127,7 @@ h6 { margin-top: 5px; border: 1px solid #e5e6e7; background: #ffffff none; - border-radius: 4px; + border-radius: var(--app-radius-md); width: 100%; } @@ -190,12 +190,27 @@ h6 { .el-card__header { padding: 14px 15px 7px !important; min-height: 40px; + background: var(--el-fill-color-blank); + border-bottom: 1px solid var(--el-border-color-light); } .el-card__body { padding: 15px 20px 20px 20px !important; } +.el-card { + border-radius: var(--app-radius-lg); + box-shadow: var(--app-shadow-sm); + border-color: var(--el-border-color-lighter); + overflow: hidden; + transition: box-shadow 0.2s ease, transform 0.2s ease; +} + +.el-card:hover { + box-shadow: var(--app-shadow-md); + transform: translateY(-1px); +} + .card-box { margin-bottom: 10px; } @@ -282,3 +297,9 @@ h6 { .top-right-btn { margin-left: auto; } + +/* horizontal el menu */ +.el-menu--horizontal .el-menu-item .svg-icon + span, +.el-menu--horizontal .el-sub-menu__title .svg-icon + span { + margin-left: 3px; +} diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss index 6ffcd336581f14dbb06726f921f351cc13b20e38..534582eee50fb97dd23c32b746fded26ee0fbcac 100644 --- a/src/assets/styles/sidebar.scss +++ b/src/assets/styles/sidebar.scss @@ -6,6 +6,7 @@ transition: margin-left 0.28s; margin-left: $base-sidebar-width; position: relative; + background: var(--el-bg-color-page); } .sidebarHide { @@ -88,7 +89,7 @@ // menu hover .theme-dark .sub-menu-title-noDropdown, .theme-dark .el-sub-menu__title { - border-radius: 8px; + border-radius: var(--app-radius-md); margin: 1px 5px 1px 5px; &:hover { background-color: $base-sub-menu-title-hover !important; @@ -96,7 +97,7 @@ } .sub-menu-title-noDropdown, .el-sub-menu__title { - border-radius: 8px; + border-radius: var(--app-radius-md); margin: 1px 5px 1px 5px; &:hover { background-color: rgba(0, 0, 0, 0.05) !important; @@ -110,7 +111,7 @@ & .nest-menu .el-sub-menu> .el-sub-menu__title, & .el-sub-menu .el-menu-item { min-width: calc($base-sidebar-width - 20px) !important; - border-radius: 8px; + border-radius: var(--app-radius-md); height: 45px; margin: 1px 5px 1px 5px; &:not(.is-active):hover { @@ -121,7 +122,7 @@ & .theme-dark .nest-menu .el-sub-menu> .el-sub-menu__title, & .theme-dark .el-sub-menu .el-menu-item { background-color: $base-sub-menu-background !important; - border-radius: 8px; + border-radius: var(--app-radius-md); height: 45px; margin: 1px 5px 1px 5px; @@ -137,7 +138,7 @@ & .theme-dark .nest-menu .el-sub-menu> .el-sub-menu__title, & .theme-dark .el-menu-item { - border-radius: 8px; + border-radius: var(--app-radius-md); height: 45px; margin: 1px 5px 1px 5px; @@ -153,7 +154,7 @@ & .nest-menu .el-sub-menu> .el-sub-menu__title, & .el-menu-item { - border-radius: 8px; + border-radius: var(--app-radius-md); height: 45px; margin: 1px 5px 1px 5px; @@ -196,9 +197,9 @@ & .el-sub-menu { overflow: hidden; - border-radius: 8px; + border-radius: var(--app-radius-md); .el-sub-menu__title.el-tooltip__trigger { - border-radius: 8px; + border-radius: var(--app-radius-md); height: 45px; } @@ -286,11 +287,11 @@ } // 收起菜单后悬浮的菜单样式 .el-popper.is-pure{ - border-radius: 8px; + border-radius: var(--app-radius-md); .el-menu--popup{ - border-radius: 8px; + border-radius: var(--app-radius-md); } .el-menu-item{ - border-radius: 4px; + border-radius: var(--app-radius-sm); } } diff --git a/src/assets/styles/variables.module.scss b/src/assets/styles/variables.module.scss index 8f9c4bd9cc34de7bf82fff4c5eddca2c0159eb75..1c9db81b2bb16c536150253fd855e882a0d9a98d 100644 --- a/src/assets/styles/variables.module.scss +++ b/src/assets/styles/variables.module.scss @@ -25,6 +25,24 @@ // 添加 tag 相关变量 --tags-view-active-bg: var(--el-color-primary); --tags-view-active-border-color: var(--el-color-primary); + + // Modern rounded style + soft shadows + --app-radius-sm: 6px; + --app-radius-md: 10px; + --app-radius-lg: 14px; + --app-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.08), 0 6px 16px rgba(15, 23, 42, 0.08); + --app-shadow-md: 0 8px 24px rgba(15, 23, 42, 0.12); + --app-shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.16); + --app-surface-bg: #ffffff; + --app-surface-border: var(--el-border-color-lighter); + + // Element Plus tokens + --el-border-radius-base: var(--app-radius-md); + --el-border-radius-small: var(--app-radius-sm); + --el-border-radius-round: 999px; + --el-box-shadow-light: var(--app-shadow-sm); + --el-box-shadow: var(--app-shadow-md); + --el-bg-color-page: #f5f7fb; } html.dark { @@ -48,8 +66,103 @@ html.dark { } .el-button--primary { - --el-button-bg-color: var(--el-color-primary-dark-6); - --el-button-border-color: var(--el-color-primary-light-2); + --el-button-bg-color: #2b6bd3; + --el-button-border-color: #3a7be8; + --el-button-text-color: #eef4ff; + --el-button-hover-bg-color: #3a7be8; + --el-button-hover-border-color: #3a7be8; + --el-button-active-bg-color: #255fb8; + --el-button-active-border-color: #255fb8; + } + + .el-button--primary.is-plain { + --el-button-bg-color: rgba(43, 107, 211, 0.12); + --el-button-border-color: rgba(58, 123, 232, 0.5); + --el-button-text-color: #dbe8ff; + --el-button-hover-bg-color: rgba(58, 123, 232, 0.2); + --el-button-hover-border-color: rgba(58, 123, 232, 0.7); + --el-button-active-bg-color: rgba(43, 107, 211, 0.28); + --el-button-active-border-color: rgba(43, 107, 211, 0.8); + } + + .el-button--success { + --el-button-bg-color: #1f8a5a; + --el-button-border-color: #29a46d; + --el-button-text-color: #eefaf4; + --el-button-hover-bg-color: #29a46d; + --el-button-hover-border-color: #29a46d; + --el-button-active-bg-color: #1b784f; + --el-button-active-border-color: #1b784f; + } + + .el-button--success.is-plain { + --el-button-bg-color: rgba(31, 138, 90, 0.12); + --el-button-border-color: rgba(41, 164, 109, 0.5); + --el-button-text-color: #dbf6e8; + --el-button-hover-bg-color: rgba(41, 164, 109, 0.2); + --el-button-hover-border-color: rgba(41, 164, 109, 0.7); + --el-button-active-bg-color: rgba(31, 138, 90, 0.28); + --el-button-active-border-color: rgba(31, 138, 90, 0.8); + } + + .el-button--warning { + --el-button-bg-color: #b87922; + --el-button-border-color: #d6953b; + --el-button-text-color: #fff7e6; + --el-button-hover-bg-color: #d6953b; + --el-button-hover-border-color: #d6953b; + --el-button-active-bg-color: #a56c1d; + --el-button-active-border-color: #a56c1d; + } + + .el-button--warning.is-plain { + --el-button-bg-color: rgba(184, 121, 34, 0.12); + --el-button-border-color: rgba(214, 149, 59, 0.5); + --el-button-text-color: #ffecc8; + --el-button-hover-bg-color: rgba(214, 149, 59, 0.2); + --el-button-hover-border-color: rgba(214, 149, 59, 0.7); + --el-button-active-bg-color: rgba(184, 121, 34, 0.28); + --el-button-active-border-color: rgba(184, 121, 34, 0.8); + } + + .el-button--danger { + --el-button-bg-color: #b24a4a; + --el-button-border-color: #d16060; + --el-button-text-color: #ffecec; + --el-button-hover-bg-color: #d16060; + --el-button-hover-border-color: #d16060; + --el-button-active-bg-color: #9c3f3f; + --el-button-active-border-color: #9c3f3f; + } + + .el-button--danger.is-plain { + --el-button-bg-color: rgba(178, 74, 74, 0.12); + --el-button-border-color: rgba(209, 96, 96, 0.5); + --el-button-text-color: #ffd6d6; + --el-button-hover-bg-color: rgba(209, 96, 96, 0.2); + --el-button-hover-border-color: rgba(209, 96, 96, 0.7); + --el-button-active-bg-color: rgba(178, 74, 74, 0.28); + --el-button-active-border-color: rgba(178, 74, 74, 0.8); + } + + .el-button--info { + --el-button-bg-color: #4b5563; + --el-button-border-color: #667085; + --el-button-text-color: #f3f4f6; + --el-button-hover-bg-color: #667085; + --el-button-hover-border-color: #667085; + --el-button-active-bg-color: #3f4753; + --el-button-active-border-color: #3f4753; + } + + .el-button--info.is-plain { + --el-button-bg-color: rgba(75, 85, 99, 0.16); + --el-button-border-color: rgba(102, 112, 133, 0.55); + --el-button-text-color: #e5e7eb; + --el-button-hover-bg-color: rgba(102, 112, 133, 0.22); + --el-button-hover-border-color: rgba(102, 112, 133, 0.75); + --el-button-active-bg-color: rgba(75, 85, 99, 0.3); + --el-button-active-border-color: rgba(75, 85, 99, 0.85); } .el-switch { @@ -62,9 +175,41 @@ html.dark { --el-tag-border-color: var(--el-color-primary-light-2); } + .el-tag--success { + --el-tag-bg-color: rgba(31, 138, 90, 0.18); + --el-tag-border-color: rgba(41, 164, 109, 0.6); + --el-tag-text-color: #c7f2df; + } + + .el-tag--warning { + --el-tag-bg-color: rgba(184, 121, 34, 0.18); + --el-tag-border-color: rgba(214, 149, 59, 0.6); + --el-tag-text-color: #ffe6bb; + } + + .el-tag--danger { + --el-tag-bg-color: rgba(178, 74, 74, 0.18); + --el-tag-border-color: rgba(209, 96, 96, 0.6); + --el-tag-text-color: #ffd0d0; + } + + .el-tag--info { + --el-tag-bg-color: rgba(75, 85, 99, 0.18); + --el-tag-border-color: rgba(102, 112, 133, 0.6); + --el-tag-text-color: #e5e7eb; + } + // 在深色模式下使用更深的颜色 --tags-view-active-bg: var(--el-color-primary-dark-6); --tags-view-active-border-color: var(--el-color-primary-light-2); + + // Modern rounded style + soft shadows (dark) + --app-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.28), 0 8px 18px rgba(0, 0, 0, 0.25); + --app-shadow-md: 0 10px 26px rgba(0, 0, 0, 0.35); + --app-shadow-lg: 0 14px 34px rgba(0, 0, 0, 0.4); + --app-surface-bg: #151922; + --app-surface-border: var(--el-border-color); + --el-bg-color-page: #0f1115; // vxe-table 主题 --vxe-font-color: #98989e; --vxe-primary-color: #2c7ecf; @@ -137,4 +282,4 @@ $base-sidebar-width: 200px; dangerColor: $--color-danger; infoColor: $--color-info; warningColor: $--color-warning; -} \ No newline at end of file +} diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue index 67394aae49b2d75ef72867fd689c23d6191c543c..f21ef2e236150a4b8a955398459b2a914b4193d3 100644 --- a/src/components/Editor/index.vue +++ b/src/components/Editor/index.vue @@ -1,15 +1,13 @@