zhb 1 месяц назад
Родитель
Сommit
ca5da66797

+ 18 - 16
components/cwg-custom-footer.vue

@@ -7,19 +7,20 @@
                 <view class="desc-text" v-t="'newSignin.item11'" />
                 <view class="desc-text">
                     <text v-t="'newSignin.item13'" />
-                    <cwg-link type="pdf" :title="'newSignin.item13_1'" :url="'pdf/Risk-Disclosures-and-Acknowledgements-2020-08.pdf'" target="_blank" class="desc-link" />
-                    <text class="desc-text" v-t="'newSignin.item13_2'" />
+                    <cwg-link type="pdf" :title="'newSignin.item13_1'"
+                        :url="'pdf/Risk-Disclosures-and-Acknowledgements-2020-08.pdf'" target="_blank"
+                        class="desc-link" />
+                    <text v-t="'newSignin.item13_2'" />
                 </view>
                 <!-- <text class="desc-text" v-t="'newSignin.item13_3'" />
                 <text class="desc-text" v-t="'newSignin.item13_4'" /> -->
             </view>
         </view>
-        <view class="footer-placeholder"></view>
+        <!-- <view class="footer-placeholder"></view>
         <view class="footer-links">
             <cwg-link type="pdf" :title="item.text" :url="item.url" target="_blank" v-for="(item, index) in linkList"
                 :key="index" class="link-item" />
-            <!-- <view class="copyright">© 2008 - 2026. Exness</view> -->
-        </view>
+        </view> -->
     </view>
 </template>
 
@@ -45,25 +46,26 @@ const linkList = [
     line-height: px2rpx(16);
     font-size: px2rpx(12);
     letter-spacing: px2rpx(0.5);
-    display: grid;
-    grid-template-columns: 1fr;
-    margin: px2rpx(16) px2rpx(24);
-    margin: px2rpx(64) 0px;
+    // display: grid;
+    // grid-template-columns: 1fr;
+    padding: px2rpx(40) 0 px2rpx(24) 0;
+
+    border-top: 1px solid #e5e5e5;
 
     .footer-description {
         .desc-block {
-            margin-bottom: px2rpx(32);
-
             .desc-text {
-                display: inline-block;
                 margin-bottom: px2rpx(8);
             }
 
             .desc-link {
-                display: inline-block;
-                color: #0066cc;
-                text-decoration: underline;
-                margin-top: px2rpx(4);
+                display: inline !important;
+                color: #0066cc !important;
+                text-decoration: underline !important;
+
+                :deep(uni-view) {
+                    display: inline !important;
+                }
             }
         }
     }

+ 88 - 0
components/cwg-footer-link.vue

@@ -0,0 +1,88 @@
+<template>
+    <view class="custom-footer">
+
+        <view class="container">
+            <view>
+                © 2026 CWG Markets
+            </view>
+            <view class="footer-links">
+                <cwg-link type="pdf" :title="item.text" :url="item.url" target="_blank"
+                    v-for="(item, index) in linkList" :key="index" class="link-item" />
+            </view>
+        </view>
+    </view>
+</template>
+
+<script setup>
+import { openLocalPdf } from '@/utils/pdf.js'
+const linkList = [
+    { text: 'signup.agreemnet2', url: 'pdf/Client_Agreement.pdf' },
+    { text: 'signup.agreemnet4', url: 'pdf/Terms&Conditions.pdf' },
+    { text: 'signup.agreemnet6', url: 'pdf/Privacy_Policy.pdf' },
+    { text: 'news_add_field.OpenAccount.Des2', url: 'pdf/PrivacyPolicy2019_01.pdf' }
+]
+// const openLink = ({ url, text }) => {
+//     openLocalPdf(url, text)
+// }
+</script>
+
+<style lang="scss" scoped>
+@import "@/uni.scss";
+
+.custom-footer {
+    font-family: var(--f-country-simple-family);
+    font-weight: 400;
+    line-height: px2rpx(16);
+    font-size: px2rpx(12);
+    letter-spacing: px2rpx(0.5);
+
+    padding: px2rpx(16) 0;
+    border-top: 1px solid #e5e5e5;
+
+    .container {
+        max-width: px2rpx(1320);
+        width: 100%;
+        margin: 0 auto;
+        display: flex;
+        justify-content: space-between;
+        box-sizing: border-box;
+
+        @media screen and (max-width: 1504px) {
+            padding: 0 px2rpx(16);
+        }
+    }
+
+    .footer-links {
+        display: flex;
+        gap: px2rpx(12);
+
+        .link-item {
+            line-height: px2rpx(20);
+            font-size: px2rpx(12);
+            letter-spacing: px2rpx(0.5);
+            color: #8c96a9;
+            // text-decoration: underline;
+            cursor: pointer;
+
+            &:active {
+                opacity: 0.7;
+            }
+        }
+
+        .copyright {
+            width: 100%;
+            color: #999;
+            margin-top: px2rpx(12);
+        }
+    }
+}
+
+@media screen and (max-width: 768px) {
+    .container {
+        padding: px2rpx(16) px2rpx(24);
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+    }
+}
+</style>

+ 1 - 1
components/cwg-language.vue

@@ -18,7 +18,7 @@ import { lang } from '@/composables/config'
 const props = defineProps({
   iconColor: {
     type: String,
-    default: '#141d22'
+    default: '#97A1C0'
   },
 })
 

+ 1 - 1
components/cwg-notice-drawer.vue

@@ -15,7 +15,7 @@
             <cwg-empty-state v-else />
             <view class="logout-wrap">
                 <view class="logout-btn" @click="goMore">
-                    <cwg-icon name="logout" :size="16" color="#ff9800" />
+                    <cwg-icon name="logout" :size="16" color="#97A1C0" />
                     <text v-t="'News.More'" />
                 </view>
             </view>

+ 1 - 1
components/cwg-notice.vue

@@ -2,7 +2,7 @@
     <view class="notice-container">
         <cwg-dropdown ref="dropdownRef" :menu-list="[]">
             <view class="pc-header-btn" :class="{ 'has-dot': isRed }">
-                <cwg-icon name="xxtz" color="#141d22" @click="openNotice" />
+                <cwg-icon name="xxtz" color="#97A1C0" :size="20" @click="openNotice" />
             </view>
             <template #btn>
                 <view class="right-drawer">

+ 22 - 7
components/cwg-page-wrapper.vue

@@ -1,5 +1,5 @@
 <template>
-  <view :class="['page-wrapper', { dark: isDark }]">
+  <view :class="['page-wrapper bg-body', { dark: isDark }]">
     <cwg-match-media :max-width="991" v-if="!isLoginPage">
       <cwg-pc-header @open-right-drawer="openRightDrawer" @open-left-drawer="openLeftDrawer"
         :sidebarVisible="sidebarVisible" v-if="type != 'webview'" />
@@ -47,6 +47,7 @@
       </cwg-match-media>
       <view :style="{ height: isTabBarPage ? '60px' : '0px' }" />
     </view>
+    <cwg-footer-link />
   </view>
 </template>
 
@@ -376,16 +377,24 @@ onShow(() => {
 
 .page-content {
   width: 100%;
-  height: calc(100vh - (56px + var(--status-bar-height)));
+  height: calc(100vh - (110px + var(--status-bar-height)));
   overflow: hidden;
   display: flex;
   flex-direction: column;
   position: relative;
   box-sizing: border-box;
 
+  @media screen and (max-width: 768px) {
+    height: calc(100vh - (126px + var(--status-bar-height)));
+  }
+
   .content-info {
-    height: calc(100vh - (56px + var(--status-bar-height)));
+    height: calc(100vh - (110px + var(--status-bar-height)));
     overflow: auto;
+
+    @media screen and (max-width: 768px) {
+      height: calc(100vh - (126px + var(--status-bar-height)));
+    }
   }
 
 }
@@ -423,7 +432,7 @@ onShow(() => {
 }
 
 .content-wrapper {
-  max-width: px2rpx(1224);
+  max-width: px2rpx(1320);
   width: 100%;
   margin: 0 auto;
   padding-top: px2rpx(20);
@@ -431,7 +440,11 @@ onShow(() => {
   display: flex;
   flex-direction: column;
   justify-content: space-between;
-  min-height: calc(100vh - (56px + var(--status-bar-height)));
+  min-height: calc(100vh - (110px + var(--status-bar-height)));
+
+  @media screen and (max-width: 768px) {
+    min-height: calc(100vh - (126px + var(--status-bar-height)));
+  }
 }
 
 .chat-icon {
@@ -473,12 +486,14 @@ onShow(() => {
   // left: 0;
   width: 100%;
   height: calc(56px + var(--status-bar-height));
-  background-color: var(--color-white);
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
   z-index: 9;
 }
 
 .custom-header {
-  background-color: var(--color-white);
+  --bs-bg-opacity: 1;
+  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
   padding: 0 px2rpx(15);
   position: fixed;
   top: calc(var(--status-bar-height));

+ 5 - 5
components/cwg-payment.vue

@@ -2,15 +2,15 @@
   <view class="notice-container">
     <cwg-dropdown ref="dropdownRef" :menu-list="[]" @menuClick="handleMenuClick">
       <view class="pc-header-btn pc-payment-btn" v-if="mode === 'customer'">
-        <cwg-icon name="crm-payment" color="#141d22" />
+        <cwg-icon name="crm-payment" color="#97A1C0" />
         <text class="balance-text">{{ formattedBalance }} USD</text>
       </view>
       <view class="pc-header-btn pc-payment-btn" v-if="mode === 'ib'">
-        <cwg-icon name="crm-payment" color="#141d22" />
+        <cwg-icon name="crm-payment" color="#97A1C0" />
         <text class="balance-text">{{ ibBalance }} USD</text>
       </view>
       <view class="pc-header-btn pc-payment-btn" v-if="mode === 'follow'">
-        <cwg-icon name="crm-payment" color="#141d22" />
+        <cwg-icon name="crm-payment" color="#97A1C0" />
         <text class="balance-text">{{ followBalance }} USD</text>
       </view>
       <template #btn>
@@ -314,7 +314,7 @@
         margin-left: px2rpx(6);
         font-size: px2rpx(14);
         font-weight: 500;
-        color: #141d22;
+        color: #97A1C0;
       }
     }
 
@@ -344,7 +344,7 @@
         .balance-amount {
           font-size: px2rpx(18);
           font-weight: bold;
-          color: #141d22;
+          color: #97A1C0;
           margin-bottom: px2rpx(8);
         }
 

+ 1 - 1
components/cwg-right-drawer.vue

@@ -2,7 +2,7 @@
     <view class="notice-container">
         <cwg-dropdown ref="dropdownRef" :menu-list="[]">
             <view class="pc-header-btn">
-                <cwg-icon name="icon_my" color="#141d22" @click="openNotice" />
+                <cwg-icon name="icon_my" color="#97A1C0" @click="openNotice" />
             </view>
             <template #btn>
                 <view class="right-drawer">

+ 2 - 2
components/cwg-system.vue

@@ -18,11 +18,11 @@ import { customApi } from '@/service/custom'
 const props = defineProps({
   iconColor: {
     type: String,
-    default: '#141d22'
+    default: '#97A1C0'
   },
   textColor: {
     type: String,
-    default: '#141d22'
+    default: '#97A1C0'
   }
 })
 

+ 5 - 3
pages/analytics/detail.vue

@@ -39,7 +39,7 @@
             <view class="content crm-border-radius" v-if="type === 7">
                 <text class="con-title">{{ info.subject }}</text>
                 <view class="rich-text-wrapper">
-                    <cwg-rich-text :nodes="info.content" />
+                    <cwg-rich-text :nodes="info.content1" />
                 </view>
             </view>
 
@@ -85,7 +85,7 @@ import { onLoad } from '@dcloudio/uni-app'
 import { useI18n } from 'vue-i18n'
 import { newsApi } from '@/service/news'
 import Config from '@/config/index'
-
+import { adaptCWGEmailForUniApp } from '@/utils/emailAdapter.js';
 const { t } = useI18n()
 const { Code, Host80, Host05 } = Config
 
@@ -154,7 +154,9 @@ const getNewsSingle = async () => {
         case 7: // 通知
             const noticeRes = await newsApi.newsNoticeSingle({ id: id.value })
             if (noticeRes.code === Code.StatusOK && noticeRes.data) {
-                info.value = noticeRes.data
+                info.value = { ...noticeRes.data, content1: adaptCWGEmailForUniApp(noticeRes.data.content) }
+                console.log(info.value);
+
                 uni.$emit('open-notice')
             } else {
                 uni.showToast({ title: noticeRes.msg, icon: 'none' })

BIN
static/images/login-bg.gif


+ 255 - 5
static/scss/global/global.scss

@@ -139,7 +139,64 @@
     --status-danger-border: var(--color-pink-300);
     --status-expired-border: var(--color-slate-400);
     --status-cancelled-border: var(--color-slate-300);
-  --bs-secondary:#ef4223;
+    --bs-secondary: #ef4223;
+
+
+    // 新的
+    color-scheme: dark;
+    --bs-body-color: #8c96a9;
+    --bs-body-color-rgb: 140, 150, 169;
+    --bs-body-bg: #282b44;
+    --bs-body: #282b44;
+    --bs-body-bg-rgb: 40, 43, 68;
+    --bs-emphasis-color: #ffffff;
+    --bs-emphasis-color-rgb: 255, 255, 255;
+    --bs-secondary-color: rgba(140, 150, 169, 0.75);
+    --bs-secondary-color-rgb: 140, 150, 169;
+    --bs-secondary-bg: #26283e;
+    --bs-secondary-bg-rgb: 38, 40, 62;
+    --bs-tertiary-color: rgba(140, 150, 169, 0.5);
+    --bs-tertiary-color-rgb: 140, 150, 169;
+    --bs-tertiary-bg: #26283e;
+    --bs-tertiary-bg-rgb: 38, 40, 62;
+    --bs-secondary-text-emphasis: #83a6ff;
+    --bs-secondary-text-emphasis: #ffb370;
+    --bs-success-text-emphasis: #7ad0b2;
+    --bs-info-text-emphasis: #67d2fc;
+    --bs-warning-text-emphasis: #fed679;
+    --bs-danger-text-emphasis: #ff8c77;
+    --bs-light-text-emphasis: #888bb2;
+    --bs-dark-text-emphasis: #999999;
+    --bs-secondary-bg-subtle: #0a1533;
+    --bs-secondary-bg-subtle: #331a03;
+    --bs-success-bg-subtle: #072319;
+    --bs-info-bg-subtle: #002432;
+    --bs-warning-bg-subtle: #332506;
+    --bs-danger-bg-subtle: #330d06;
+    --bs-light-bg-subtle: #1a1c31;
+    --bs-dark-bg-subtle: #10101d;
+    --bs-secondary-border-subtle: #1d4099;
+    --bs-secondary-border-subtle: #994d0a;
+    --bs-success-border-subtle: #146a4c;
+    --bs-info-border-subtle: #016c96;
+    --bs-warning-border-subtle: #987013;
+    --bs-danger-border-subtle: #992611;
+    --bs-light-border-subtle: #484c83;
+    --bs-dark-border-subtle: #494949;
+    --bs-heading-color: #fff;
+    --bs-link-color: #83a6ff;
+    --bs-link-hover-color: #9cb8ff;
+    --bs-link-color-rgb: 131, 166, 255;
+    --bs-link-hover-color-rgb: 156, 184, 255;
+    --bs-code-color: #e685b5;
+    --bs-highlight-color: #8c96a9;
+    --bs-highlight-bg: #664d03;
+    --bs-border-color: #3a3b4d;
+    --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
+    --bs-form-valid-color: #75b798;
+    --bs-form-valid-border-color: #75b798;
+    --bs-form-invalid-color: #ea868f;
+    --bs-form-invalid-border-color: #ea868f;
 }
 
 .dark {
@@ -255,12 +312,195 @@
     --text-sm-plus: .9375rem;
     --text-sm-plus--line-height: 1.375rem;
     --animate-shimmer: shimmer 2s linear infinite;
-  --bs-secondary:#ef4223;
+    --bs-secondary: #ef4223;
+}
+
+
+.light {
+    --bs-blue: #0d6efd;
+    --bs-indigo: #6610f2;
+    --bs-purple: #6f42c1;
+    --bs-pink: #d63384;
+    --bs-red: #dc3545;
+    --bs-orange: #fd7e14;
+    --bs-yellow: #ffc107;
+    --bs-green: #198754;
+    --bs-teal: #20c997;
+    --bs-cyan: #0dcaf0;
+    --bs-black: #000;
+    --bs-white: #ffffff;
+    --bs-gray: #6c757d;
+    --bs-gray-dark: #343a40;
+    --bs-gray-100: #f8f9fa;
+    --bs-gray-200: #e9ecef;
+    --bs-gray-300: #dee2e6;
+    --bs-gray-400: #ced4da;
+    --bs-gray-500: #adb5bd;
+    --bs-gray-600: #6c757d;
+    --bs-gray-700: #495057;
+    --bs-gray-800: #343a40;
+    --bs-gray-900: #212529;
+    --bs-secondary: #ef4223;
+
+    --bs-success: #22B07E;
+    --bs-info: #02B4FA;
+    --bs-warning: #FDBB1F;
+    --bs-danger: #FF401C;
+    --bs-light: #ECF2FD;
+    --bs-dark: #0C243C;
+    --bs-white: #ffffff;
+    --bs-gray: #97A1C0;
+    --bs-secondary-rgb: 49, 106, 255;
+    --bs-secondary-rgb: 255, 129, 16;
+    --bs-success-rgb: 34, 176, 126;
+    --bs-info-rgb: 2, 180, 250;
+    --bs-warning-rgb: 253, 187, 31;
+    --bs-danger-rgb: 255, 64, 28;
+    --bs-light-rgb: 236, 242, 253;
+    --bs-dark-rgb: 12, 36, 60;
+    --bs-white-rgb: 255, 255, 255;
+    --bs-gray-rgb: 151, 161, 192;
+    --bs-secondary-text-emphasis: #142a66;
+    --bs-secondary-text-emphasis: #663406;
+    --bs-success-text-emphasis: #0e4632;
+    --bs-info-text-emphasis: #014864;
+    --bs-warning-text-emphasis: #654b0c;
+    --bs-danger-text-emphasis: #661a0b;
+    --bs-light-text-emphasis: #495057;
+    --bs-dark-text-emphasis: #495057;
+    --bs-secondary-bg-subtle: #eaf0ff;
+    --bs-secondary-bg-subtle: #fff2e7;
+    --bs-success-bg-subtle: #e9f7f2;
+    --bs-info-bg-subtle: #e6f8ff;
+    --bs-warning-bg-subtle: #fff8e9;
+    --bs-danger-bg-subtle: #ffece8;
+    --bs-light-bg-subtle: #fcfcfd;
+    --bs-dark-bg-subtle: #ced4da;
+    --bs-secondary-border-subtle: #ccdaff;
+    --bs-secondary-border-subtle: #ffe0c3;
+    --bs-success-border-subtle: #c8ebdf;
+    --bs-info-border-subtle: #c0ecfe;
+    --bs-warning-border-subtle: #ffeec7;
+    --bs-danger-border-subtle: #ffcfc6;
+    --bs-light-border-subtle: #e9ecef;
+    --bs-dark-border-subtle: #adb5bd;
+    --bs-white-rgb: 255, 255, 255;
+    --bs-black-rgb: 0, 0, 0;
+    --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+    --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+    --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
+    --bs-body-font-size: 0.875rem;
+    --bs-body-font-weight: 500;
+    --bs-body-line-height: 1.6;
+    --bs-body-color: #858585;
+    --bs-body-color-rgb: 151, 161, 192;
+    --bs-body-bg: #fff;
+    --bs-body: #fdfdfd;
+    --bs-body-bg-rgb: 255, 255, 255;
+    --bs-emphasis-color: #000;
+    --bs-emphasis-color-rgb: 0, 0, 0;
+    --bs-secondary-color: rgba(151, 161, 192, 0.75);
+    --bs-secondary-color-rgb: 151, 161, 192;
+    --bs-secondary-bg: #f9f9f9;
+    --bs-secondary-bg-rgb: 249, 249, 249;
+    --bs-tertiary-color: rgba(151, 161, 192, 0.5);
+    --bs-tertiary-color-rgb: 151, 161, 192;
+    --bs-tertiary-bg: #f8f9fa;
+    --bs-tertiary-bg-rgb: 248, 249, 250;
+    --bs-heading-color: #0C243C;
+    --bs-link-color: #316AFF;
+    --bs-link-color-rgb: 49, 106, 255;
+    --bs-link-decoration: none;
+    --bs-link-hover-color: #2755cc;
+    --bs-link-hover-color-rgb: 39, 85, 204;
+    --bs-code-color: #d63384;
+    --bs-highlight-color: #97A1C0;
+    --bs-highlight-bg: #fff3cd;
+    --bs-border-width: 1px;
+    --bs-border-style: solid;
+    --bs-border-color: #e4e4e4;
+    --bs-border-color-translucent: rgba(0, 0, 0, 0.1);
+    --bs-border-radius: 0.375rem;
+    --bs-border-radius-sm: 0.25rem;
+    --bs-border-radius-lg: 0.625rem;
+    --bs-border-radius-xl: 1rem;
+    --bs-border-radius-xxl: 2rem;
+    --bs-border-radius-2xl: var(--bs-border-radius-xxl);
+    --bs-border-radius-pill: 50rem;
+    --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+    --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+    --bs-box-shadow-lg: 0 0.26rem 1.126rem 0 rgba(45, 42, 60, 0.15);
+    --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
+    --bs-focus-ring-width: 0.1rem;
+    --bs-focus-ring-opacity: 0.25;
+    --bs-focus-ring-color: rgba(49, 106, 255, 0.25);
+    --bs-form-valid-color: #22B07E;
+    --bs-form-valid-border-color: #22B07E;
+    --bs-form-invalid-color: #FF401C;
+    --bs-form-invalid-border-color: #FF401C;
+}
+
+.dark {
+    color-scheme: dark;
+    --bs-body-color: #8c96a9;
+    --bs-body-color-rgb: 140, 150, 169;
+    --bs-body-bg: #282b44;
+    --bs-body: #282b44;
+    --bs-body-bg-rgb: 40, 43, 68;
+    --bs-emphasis-color: #ffffff;
+    --bs-emphasis-color-rgb: 255, 255, 255;
+    --bs-secondary-color: rgba(140, 150, 169, 0.75);
+    --bs-secondary-color-rgb: 140, 150, 169;
+    --bs-secondary-bg: #26283e;
+    --bs-secondary-bg-rgb: 38, 40, 62;
+    --bs-tertiary-color: rgba(140, 150, 169, 0.5);
+    --bs-tertiary-color-rgb: 140, 150, 169;
+    --bs-tertiary-bg: #26283e;
+    --bs-tertiary-bg-rgb: 38, 40, 62;
+    --bs-secondary-text-emphasis: #83a6ff;
+    --bs-secondary-text-emphasis: #ffb370;
+    --bs-success-text-emphasis: #7ad0b2;
+    --bs-info-text-emphasis: #67d2fc;
+    --bs-warning-text-emphasis: #fed679;
+    --bs-danger-text-emphasis: #ff8c77;
+    --bs-light-text-emphasis: #888bb2;
+    --bs-dark-text-emphasis: #999999;
+    --bs-secondary-bg-subtle: #0a1533;
+    --bs-secondary-bg-subtle: #331a03;
+    --bs-success-bg-subtle: #072319;
+    --bs-info-bg-subtle: #002432;
+    --bs-warning-bg-subtle: #332506;
+    --bs-danger-bg-subtle: #330d06;
+    --bs-light-bg-subtle: #1a1c31;
+    --bs-dark-bg-subtle: #10101d;
+    --bs-secondary-border-subtle: #1d4099;
+    --bs-secondary-border-subtle: #994d0a;
+    --bs-success-border-subtle: #146a4c;
+    --bs-info-border-subtle: #016c96;
+    --bs-warning-border-subtle: #987013;
+    --bs-danger-border-subtle: #992611;
+    --bs-light-border-subtle: #484c83;
+    --bs-dark-border-subtle: #494949;
+    --bs-heading-color: #fff;
+    --bs-link-color: #83a6ff;
+    --bs-link-hover-color: #9cb8ff;
+    --bs-link-color-rgb: 131, 166, 255;
+    --bs-link-hover-color-rgb: 156, 184, 255;
+    --bs-code-color: #e685b5;
+    --bs-highlight-color: #8c96a9;
+    --bs-highlight-bg: #664d03;
+    --bs-border-color: #3a3b4d;
+    --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
+    --bs-form-valid-color: #75b798;
+    --bs-form-valid-border-color: #75b798;
+    --bs-form-invalid-color: #ea868f;
+    --bs-form-invalid-border-color: #ea868f;
 }
 
 .uni-select__input-box {
     height: px2rpx(35);
 }
+
 .cwg-cursor {
     cursor: pointer;
 }
@@ -273,15 +513,25 @@ body {
     color: #000;
 }
 
+.bg-body {
+    --bs-bg-opacity: 1;
+    background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
 .uni-top-window {
     overflow: visible;
 }
 
+uni-left-window,
+uni-top-window {
+    --bs-bg-opacity: 1;
+    background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
 uni-left-window {
     position: fixed;
     top: px2rpx(56);
     left: 0;
-    background-color: #fff;
     z-index: 101;
 
     transition: width 281ms cubic-bezier(0.4, 0, 0.2, 1);
@@ -1554,6 +1804,6 @@ uni-content.collapsed {
 }
 
 ::selection {
-  background-color: var(--bs-secondary);
-  color: #fff;
+    background-color: var(--bs-secondary);
+    color: #fff;
 }

+ 1 - 1
static/svg-icons-lib.js

@@ -653,7 +653,7 @@ const collections = {
         30
       ],
       "xxtz": [
-        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><g stroke=\"#1a1a1a\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" clip-path=\"url(#a)\"><path d=\"M3 19V9a7 7 0 1 1 14 0v10M0 19h20m-10 3a2.5 2.5 0 0 0 2.5-2.5V19h-5v.5A2.5 2.5 0 0 0 10 22\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h24v24H0z\"/></clipPath></defs></svg>",
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><g stroke=\"#97A1C0\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" clip-path=\"url(#a)\"><path d=\"M3 19V9a7 7 0 1 1 14 0v10M0 19h20m-10 3a2.5 2.5 0 0 0 2.5-2.5V19h-5v.5A2.5 2.5 0 0 0 10 22\"/></g><defs><clipPath id=\"a\"><path fill=\"#97A1C0\" d=\"M0 0h24v24H0z\"/></clipPath></defs></svg>",
         7,
         1
       ],

+ 1 - 1
windows/left-window.vue

@@ -1,5 +1,5 @@
 <template>
-  <view class="cwg-sidebar" :class="{ 'sidebar-collapsed': isCollapsed }">
+  <view class="cwg-sidebar bg-body" :class="{ 'sidebar-collapsed': isCollapsed }">
     <view class="menu-list">
       <view class="menu" v-for="(item, index) in menus" :key="item.path + index">
         <view class="menu-item" @click="handleClick(index)">

+ 0 - 1
windows/top-window.vue

@@ -41,7 +41,6 @@
     align-items: center;
     justify-content: space-between;
     height: px2rpx(55);
-    background-color: rgba(255, 255, 255, 0.9);
     border-bottom: 1px solid #f0f0f0;
     padding: 0 px2rpx(16);
     position: relative;