From e34543465a4446e6db73f2513a3c15aadb28f990 Mon Sep 17 00:00:00 2001
From: lzq <357099073@qq.com>
Date: Wed, 4 Nov 2026 18:09:53 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96backend=E5=89=8D=E7=AB=AF?=
=?UTF-8?q?=E5=B8=83=E5=B1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
backend/components.d.ts | 2 +
backend/src/assets/less/style.less | 45 +-
backend/src/components/AsideMenuItem.vue | 41 +
backend/src/components/CommonAside.vue | 922 +++++----------
backend/src/components/CommonHeader.vue | 1007 ++++++++++++++---
backend/src/components/MenuIcon.vue | 37 +
backend/src/composables/useAdminNavigation.js | 318 ++++++
backend/src/stores/index.js | 78 +-
backend/src/utils/theme.js | 64 ++
backend/src/views/Main.vue | 171 ++-
backend/src/views/home/index.vue | 117 +-
11 files changed, 1899 insertions(+), 903 deletions(-)
create mode 100644 backend/src/components/AsideMenuItem.vue
create mode 100644 backend/src/components/MenuIcon.vue
create mode 100644 backend/src/composables/useAdminNavigation.js
create mode 100644 backend/src/utils/theme.js
diff --git a/backend/components.d.ts b/backend/components.d.ts
index ee53407..7bb0292 100644
--- a/backend/components.d.ts
+++ b/backend/components.d.ts
@@ -11,6 +11,7 @@ export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
+ AsideMenuItem: typeof import('./src/components/AsideMenuItem.vue')['default']
CommonAside: typeof import('./src/components/CommonAside.vue')['default']
CommonHeader: typeof import('./src/components/CommonHeader.vue')['default']
ElAlert: typeof import('element-plus/es')['ElAlert']
@@ -87,6 +88,7 @@ declare module 'vue' {
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload']
FlowCanvas: typeof import('./src/components/approval/FlowCanvas.vue')['default']
+ MenuIcon: typeof import('./src/components/MenuIcon.vue')['default']
MessageDetailDialog: typeof import('./src/components/MessageDetailDialog.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
diff --git a/backend/src/assets/less/style.less b/backend/src/assets/less/style.less
index 339e226..d31adaa 100644
--- a/backend/src/assets/less/style.less
+++ b/backend/src/assets/less/style.less
@@ -1,12 +1,51 @@
-// Element Plus Message z-index
+// 全局主题:浅蓝白后台框架
+// 自定义变量供顶栏 / 侧栏 / 内容区统一取色,Element Plus 主色同步收敛。
:root {
--el-message-z-index: 9999;
+
+ --el-color-primary: #2f6bff;
+ --el-color-primary-light-3: #6f97ff;
+ --el-color-primary-light-5: #97b5ff;
+ --el-color-primary-light-7: #c5d8ff;
+ --el-color-primary-light-8: #dce7ff;
+ --el-color-primary-light-9: #eef4ff;
+ --el-color-primary-dark-2: #2555cc;
+
+ --yz-primary: #2f6bff;
+ --yz-primary-soft: #eef4ff;
+ --yz-primary-softer: #f6f9ff;
+ --yz-header-bg: #ffffff;
+ --yz-aside-bg: #ffffff;
+ --yz-page-bg: #f4f7fd;
+ --yz-card-bg: #ffffff;
+ --yz-border: #e8edf7;
+ --yz-text: #24304a;
+ --yz-text-regular: #5b6785;
+ --yz-text-muted: #93a0b8;
+ --yz-shadow: 0 2px 12px rgba(31, 61, 130, 0.06);
+ --yz-header-height: 64px;
+}
+
+// 暗色模式:只覆盖框架自定义变量,Element Plus 变量交给官方 dark css-vars
+html.dark {
+ --yz-primary: #6f97ff;
+ --yz-primary-soft: rgba(64, 110, 220, 0.2);
+ --yz-primary-softer: rgba(64, 110, 220, 0.12);
+ --yz-header-bg: #1b1f2b;
+ --yz-aside-bg: #1b1f2b;
+ --yz-page-bg: #131720;
+ --yz-card-bg: #1f2431;
+ --yz-border: #2c3344;
+ --yz-text: #e8ecf6;
+ --yz-text-regular: #b9c2d6;
+ --yz-text-muted: #8692ac;
+ --yz-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}
// body 样式
body {
- // background-color: #f5f7fa;
- color: #303133;
+ color: var(--yz-text);
+ background-color: var(--yz-page-bg);
transition: background-color 0.3s ease, color 0.3s ease;
}
diff --git a/backend/src/components/AsideMenuItem.vue b/backend/src/components/AsideMenuItem.vue
new file mode 100644
index 0000000..983c821
--- /dev/null
+++ b/backend/src/components/AsideMenuItem.vue
@@ -0,0 +1,41 @@
+
+