yanghao há 1 semana atrás
pai
commit
4639239476

BIN
src/assets/images/banner1_white.png


BIN
src/assets/images/banner2_white.png


+ 4 - 3
src/views/flow/oaDoneList.vue

@@ -452,7 +452,7 @@ onMounted(async () => {
 :deep(.el-table__body-wrapper .el-table__row .el-table__cell) {
   background: var(--bg-table) !important;
   color: var(--text-primary) !important;
-  border-bottom: 1px solid var(--text-tertiary);
+  border-bottom: 1px solid var(--border-color) !important;
 }
 
 :deep(.el-loading-mask) {
@@ -472,8 +472,9 @@ onMounted(async () => {
   color: var(--text-tertiary) !important;
 }
 
-:deep(.el-pagination .el-pager li.active) {
-  background: #2d8cf0 !important;
+:deep(.el-pagination .el-pager li.is-active) {
+  /* background: #2d8cf0 !important; */
+  color: var(--portal-accent) !important;
 }
 
 :deep(.el-select .el-select__wrapper) {

+ 124 - 41
src/views/flow/todoList.vue

@@ -3,10 +3,8 @@
     <Header />
 
     <div class="content-wrapper mt-15 max-w-[1200px] mx-auto">
-      <div
-        class="flex gap-5 items-center mb-4 bg-[#091126] py-2 pl-4 rounded-sm"
-      >
-        <p class="flex items-center text-white">
+      <div class="nav flex gap-5 items-center mb-4 py-2 pl-4 rounded-sm">
+        <p class="flex items-center text-var(--text-primary)">
           <Icon
             icon="mynaui:arrow-up-down"
             class="icon pr-1 h-8 w-8"
@@ -38,13 +36,10 @@
           element-loading-text="加载中..."
           :empty-text="loading ? '' : '暂无数据'"
           :header-cell-style="{
-            backgroundColor: '#091126',
-            color: '#b8bfd0',
+            backgroundColor: 'var(--bg-table)',
+            color: 'var(--text-primary)',
             fontWeight: '400',
           }"
-          :cell-style="{
-            color: 'black',
-          }"
         >
           <el-table-column
             type="index"
@@ -283,11 +278,98 @@ onMounted(async () => {
 </script>
 
 <style scoped>
+.todo-list {
+  --portal-text: #17345f;
+  --portal-text-muted: #5f6f83;
+  --portal-text-soft: #7f8fa6;
+  --portal-title: #163867;
+  --portal-subtitle: rgba(61, 92, 135, 0.86);
+  --portal-line: rgba(126, 156, 201, 0.24);
+  --portal-card: rgba(255, 255, 255, 0.82);
+  --portal-card-2: rgba(248, 251, 255, 0.94);
+  --portal-card-3: rgba(240, 246, 255, 0.88);
+  --portal-card-4: rgba(231, 239, 251, 0.92);
+  --portal-nav-bg: rgba(255, 255, 255, 0.72);
+  --portal-nav-hover: rgba(219, 232, 252, 0.8);
+  --portal-input-bg: rgba(255, 255, 255, 0.7);
+  --portal-input-hover: rgba(255, 255, 255, 0.92);
+  --portal-shadow: 0 18px 40px rgba(23, 52, 95, 0.12);
+  --portal-shadow-strong: 0 24px 60px rgba(23, 52, 95, 0.16);
+  --portal-accent: #245edb;
+  --portal-accent-2: #4e8cff;
+  --portal-accent-soft: rgba(36, 94, 219, 0.14);
+  --portal-todo-bg: rgba(242, 247, 255, 0.94);
+  --portal-todo-hover: rgba(228, 238, 252, 0.95);
+  --portal-number-todo: #e15a5a;
+  --portal-number-done: #2da04d;
+  color: var(--portal-text);
+  background:
+    radial-gradient(
+      circle at 18% 12%,
+      rgba(83, 126, 255, 0.14),
+      transparent 22%
+    ),
+    radial-gradient(
+      circle at 82% 20%,
+      rgba(71, 148, 255, 0.14),
+      transparent 20%
+    ),
+    radial-gradient(
+      circle at 50% 100%,
+      rgba(97, 142, 247, 0.12),
+      transparent 28%
+    ),
+    linear-gradient(180deg, #eef3f9 0%, #f7faff 46%, #eef3f9 100%);
+}
+
+:global([data-theme="dark"] .todo-list) {
+  --portal-text: #eaf1ff;
+  --portal-text-muted: rgba(234, 241, 255, 0.95);
+  --portal-text-soft: #8a9ab0;
+  --portal-title: #f4f7ff;
+  --portal-subtitle: rgba(188, 205, 255, 0.82);
+  --portal-line: rgba(97, 129, 206, 0.28);
+  --portal-card: rgba(10, 19, 43, 0.8);
+  --portal-card-2: rgba(12, 24, 52, 0.92);
+  --portal-card-3: rgba(17, 25, 48, 0.8);
+  --portal-card-4: rgba(15, 24, 45, 0.82);
+  --portal-nav-bg: rgba(10, 19, 43, 0.8);
+  --portal-nav-hover: rgba(28, 40, 72, 0.8);
+  --portal-input-bg: rgba(255, 255, 255, 0.08);
+  --portal-input-hover: rgba(255, 255, 255, 0.12);
+  --portal-shadow: 0 16px 34px rgba(0, 0, 0, 0.22);
+  --portal-shadow-strong: 0 24px 60px rgba(0, 0, 0, 0.38);
+  --portal-accent: #6e7dff;
+  --portal-accent-2: #8d4dff;
+  --portal-accent-soft: rgba(110, 125, 255, 0.16);
+  --portal-todo-bg: #070e20;
+  --portal-todo-hover: rgba(28, 40, 72, 0.8);
+  --portal-number-todo: #f56c6c;
+  --portal-number-done: #ffffff;
+  --bg-table: #091126;
+  color: var(--portal-text);
+  background:
+    radial-gradient(
+      circle at 18% 12%,
+      rgba(79, 82, 221, 0.34),
+      transparent 22%
+    ),
+    radial-gradient(circle at 82% 20%, rgba(28, 95, 255, 0.2), transparent 20%),
+    radial-gradient(
+      circle at 50% 100%,
+      rgba(103, 46, 255, 0.16),
+      transparent 28%
+    ),
+    linear-gradient(180deg, #040814 0%, #060d1d 46%, #040814 100%);
+}
+
+.nav {
+  background-color: var(--bg-table);
+}
 .todo-list {
   min-height: 100vh;
   display: flex;
   flex-direction: column;
-  /* background-color: #f5f7fa; */
 }
 
 .content {
@@ -349,44 +431,44 @@ onMounted(async () => {
 }
 
 :deep(.el-table) {
-  background-color: #091126 !important;
-  color: white !important;
+  background-color: var(--bg-table) !important;
+  color: var(--text-primary) !important;
 }
 
 :deep(.table-wrapper) {
-  background: #091126 !important;
+  background: var(--bg-table) !important;
 }
 
 :deep(.el-table__header-wrapper thead) {
-  background: #091126 !important;
-  color: white !important;
+  background: var(--bg-table) !important;
+  color: var(--text-primary) !important;
 }
 
 :deep(.el-table__header-wrapper .el-table__header) {
   border-bottom: none;
 }
 :deep(.el-table__inner-wrapper) {
-  background: #091126 !important;
-  color: white !important;
+  background: var(--bg-table) !important;
+  color: var(--text-primary) !important;
 }
 :deep(.el-table__body-wrapper .el-table__row) {
-  background: #091126;
-  color: white !important;
+  background: var(--bg-table);
+  color: var(--text-primary) !important;
 }
 
 :deep(.el-table__body-wrapper .el-table__row .hover-row) {
-  background: #091126 !important;
-  color: white !important;
+  background: var(--bg-table) !important;
+  color: var(--text-primary) !important;
 }
 
 :deep(.el-table__body-wrapper .el-table__row .el-table__cell) {
-  background: #091126 !important;
-  color: white !important;
-  border-bottom: 1px solid #313849;
+  background: var(--bg-table) !important;
+  color: var(--text-primary) !important;
+  border-bottom: 1px solid var(--border-color) !important;
 }
 
 :deep(.el-loading-mask) {
-  background-color: rgba(9, 17, 38, 0.8) !important; /* 半透明深色遮罩 */
+  background-color: var(--bg-table) !important; /* 半透明深色遮罩 */
 }
 
 :deep(.el-table__body-wrapper .el-table__row .el-table__cell) {
@@ -394,20 +476,21 @@ onMounted(async () => {
 }
 
 :deep(.el-pagination is-background) {
-  background: #091126 !important;
+  background: var(--bg-table) !important;
 }
 
 :deep(.el-pagination .el-pager li) {
-  background: #091126 !important;
-  color: white !important;
+  background: var(--bg-table) !important;
+  color: var(--text-tertiary) !important;
 }
 
-:deep(.el-pagination .el-pager li.active) {
-  background: #2d8cf0 !important;
+:deep(.el-pagination .el-pager li.is-active) {
+  /* background: #2d8cf0 !important; */
+  color: var(--portal-accent) !important;
 }
 
 :deep(.el-select .el-select__wrapper) {
-  background: #091126 !important;
+  background: var(--bg-table) !important;
   border: 1px solid #313849 !important;
   outline: none !important;
 }
@@ -418,34 +501,34 @@ onMounted(async () => {
 }
 
 :deep(.btn-next) {
-  background: #091126 !important;
-  color: white !important;
+  background: var(--bg-table) !important;
+  color: var(--text-tertiary) !important;
 }
 
 :deep(.btn-prev) {
-  background: #091126 !important;
-  color: white !important;
+  background: var(--bg-table) !important;
+  color: var(--text-tertiary) !important;
 }
 
 /* 下拉菜单弹出层的背景 */
 :deep(.el-select-dropdown) {
-  background-color: #091126 !important;
+  background-color: var(--bg-table) !important;
   border: 1px solid #313849 !important;
 }
 
 /* 下拉菜单项 */
 :deep(.el-select-dropdown__item) {
-  color: #fff !important;
+  color: var(--bg-table) !important;
 }
 
 :deep(.el-select-dropdown__item.hover),
 :deep(.el-select-dropdown__item:hover) {
-  background-color: #111a35 !important; /* 悬停深色背景 */
+  background-color: var(--bg-table) !important; /* 悬停深色背景 */
 }
 
 /* 关键:修复下拉选择框 (PageSize) 的白色边框/背景 */
 :deep(.el-pagination .el-select .el-select__wrapper) {
-  background-color: #091126 !important;
+  background-color: var(--bg-table) !important;
   box-shadow: none !important; /* 去掉可能的阴影 */
   border: 1px solid #313849 !important; /* 统一边框颜色 */
 }
@@ -459,12 +542,12 @@ onMounted(async () => {
 
 /* 通用输入框边框修复 (如果其他地方也有) */
 :deep(.el-input__wrapper) {
-  background-color: #091126 !important;
+  background-color: var(--bg-table) !important;
   box-shadow: none !important; /* 去掉默认的白色/灰色阴影边框 */
   border: 1px solid #313849 !important;
 }
 
 :deep(.el-input__inner) {
-  color: #fff !important;
+  color: var(--bg-primary) !important;
 }
 </style>

+ 49 - 5
src/views/index.vue

@@ -554,7 +554,7 @@
 </template>
 
 <script setup lang="ts">
-import { computed, onMounted, onUnmounted, reactive, ref } from "vue";
+import { computed, onMounted, onUnmounted, watch, ref } from "vue";
 import * as authUtil from "@/utils/auth";
 import * as dd from "dingtalk-jsapi";
 import Header from "@components/home/header.vue";
@@ -576,6 +576,7 @@ import {
   srmLogin,
 } from "@/api/user";
 import { useUserStore } from "@/stores/useUserStore";
+import { useThemeStore } from "@/stores/useThemeStore";
 import { getAccessToken } from "@/utils/auth";
 import { deleteUserCache } from "@hooks/useCache";
 import { manualLogoutKey, reloginCancelKey } from "@/config/axios/service";
@@ -612,6 +613,9 @@ import hongpan from "@/assets/images/pan.png"; // ai智能体
 import ask from "@/assets/images/ask.png";
 import degitial from "@/assets/images/degitial.png";
 
+import banner2_white from "@/assets/images/banner2_white.png";
+import banner1_white from "@/assets/images/banner1_white.png";
+
 type PortalApp = {
   label: string;
   icon?: string;
@@ -636,6 +640,7 @@ type NoticeItem = {
 
 const router = useRouter();
 const userStore = useUserStore();
+const themeStore = useThemeStore();
 
 const todoPanelTitle = "待办中心";
 const newsPanelTitle = "新闻中心";
@@ -775,19 +780,58 @@ const filteredSections = computed(() => {
     .filter((section) => section.apps && section.apps.length > 0); // 移除没有匹配应用的空板块
 });
 
+watch(
+  () => themeStore.theme,
+  () => {
+    if (themeStore.theme === "light") {
+      slides.value = [
+        {
+          image: banner2_white,
+          text: "数字化转型,驱动未来增长",
+        },
+        {
+          image: banner1_white,
+          text: "保持热爱,奔赴目标!",
+        },
+
+        {
+          image: banner1_white,
+          text: "智慧平台,赋能高效协同",
+        },
+      ];
+    } else {
+      slides.value = [
+        {
+          image: banner2,
+          text: "数字化转型,驱动未来增长",
+        },
+        {
+          image: banner1,
+          text: "保持热爱,奔赴目标!",
+        },
+
+        {
+          image: banner1,
+          text: "智慧平台,赋能高效协同",
+        },
+      ];
+    }
+  },
+);
+
 // 添加轮播数据
 const slides = ref([
   {
-    image: banner2,
+    image: themeStore.theme === "light" ? banner2_white : banner2,
     text: "数字化转型,驱动未来增长",
   },
   {
-    image: banner1,
+    image: themeStore.theme === "light" ? banner1_white : banner1,
     text: "保持热爱,奔赴目标!",
   },
 
   {
-    image: banner4,
+    image: themeStore.theme === "light" ? banner1_white : banner1,
     text: "智慧平台,赋能高效协同",
   },
 ]);
@@ -1446,7 +1490,7 @@ onUnmounted(() => {
 
 .hero-text {
   margin-top: 0;
-  color: var(--portal-text-muted);
+  color: var(--portal-text);
   font-size: 46px;
   font-weight: 800;
   line-height: 1.2;