zhb пре 2 месеци
родитељ
комит
2936a4c4e5

+ 14 - 4
components/cwg-submenu.vue

@@ -2,8 +2,9 @@
     <view class="cwg-submenu">
         <view class="submenu">
             <view class="cwg-submenu-item" :class="{ 'active': activePath === item.path }" v-for="item in submenuItems"
-                :key="item.path" @click="handleClick(item.path)">
+                :key="item.path" @click="handleClick(item)">
                 <text v-t="item.label"></text>
+                <cwg-icon v-if="item.isExternal" name="crm-fx" :size="20" color="#6c8595" />
             </view>
         </view>
     </view>
@@ -11,6 +12,7 @@
 
 <script lang="ts" setup>
 import { computed, watch, nextTick } from 'vue';
+import { openExternalUrl } from '@/utils/openExternalUrl'
 import useRouter from "@/hooks/useRouter";
 const router = useRouter();
 import useRoute from '@/hooks/useRoute'
@@ -29,9 +31,11 @@ const props = defineProps({
 })
 const activePath = computed(() => route.path + (route.query?.type ? `?type=${route.query.type}` : '') || '')
 const emit = defineEmits(['submenu-click']);
-function handleClick(path: string) {
-    if (route.path !== path) {
-        router.push(path);
+function handleClick(item) {
+    if (item.isExternal) {
+        openExternalUrl(item.path);
+    } else if (route.path !== item.path) {
+        router.push(item.path);
     }
 }
 </script>
@@ -58,11 +62,17 @@ function handleClick(path: string) {
         cursor: pointer;
         display: flex;
         align-items: center;
+        justify-content: space-between;
         gap: 12px;
         padding: px2rpx(10);
         box-sizing: border-box;
         font-size: 14px;
 
+        .tabler-icon-external-link {
+            width: px2rpx(20);
+            height: px2rpx(20);
+        }
+
         &:hover {
             background: rgba(108, 133, 149, 0.12) !important;
             border: 1px solid rgb(145, 163, 176) !important;

+ 21 - 80
pages/customer/components/AccountCard.vue

@@ -35,51 +35,32 @@
                 <!-- 交易 -->
                 <view class="circle-btn" @click="handleAction('trade')">
                     <view class="circle-icon">
-                        <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
-                            <path
-                                d="M4.66797 2.66602V4.66602M4.66797 8.66602V13.3327M11.3346 2.66602V4.66602M11.3346 11.3327V13.3327M2.66797 5.33268C2.66797 5.15587 2.73821 4.9863 2.86323 4.86128C2.98826 4.73625 3.15782 4.66602 3.33464 4.66602H6.0013C6.17811 4.66602 6.34768 4.73625 6.47271 4.86128C6.59773 4.9863 6.66797 5.15587 6.66797 5.33268V7.99935C6.66797 8.17616 6.59773 8.34573 6.47271 8.47075C6.34768 8.59578 6.17811 8.66602 6.0013 8.66602H3.33464C3.15782 8.66602 2.98826 8.59578 2.86323 8.47075C2.73821 8.34573 2.66797 8.17616 2.66797 7.99935V5.33268ZM9.33464 5.33268C9.33464 5.15587 9.40487 4.9863 9.5299 4.86128C9.65492 4.73625 9.82449 4.66602 10.0013 4.66602H12.668C12.8448 4.66602 13.0143 4.73625 13.1394 4.86128C13.2644 4.9863 13.3346 5.15587 13.3346 5.33268V10.666C13.3346 10.8428 13.2644 11.0124 13.1394 11.1374C13.0143 11.2624 12.8448 11.3327 12.668 11.3327H10.0013C9.82449 11.3327 9.65492 11.2624 9.5299 11.1374C9.40487 11.0124 9.33464 10.8428 9.33464 10.666V5.33268Z"
-                                stroke="currentColor" stroke-width="1.33" stroke-linecap="round"
-                                stroke-linejoin="round" />
-                        </svg>
+                        <cwg-icon name="crm-trade" :size="16" color="#2e3a47" />
                     </view>
-                    <text class="circle-label">交易</text>
+                    <text class="circle-label" v-t="'Shop.Index.Transaction'" />
                 </view>
                 <!-- 入金(带限制包装,此处简化) -->
                 <view class="circle-btn" @click="toDeposit" v-if="!isDemo">
                     <view class="circle-icon">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
-                            <path d="M8 12l4 4" />
-                            <path d="M12 8v8" />
-                            <path d="M16 12l-4 4" />
-                        </svg>
+                        <cwg-icon name="crm-deposit" :size="16" color="#2e3a47" />
                     </view>
-                    <text class="circle-label">入金</text>
+                    <text class="circle-label" v-t="'Home.page_customer.item2'" />
                 </view>
 
                 <!-- 出金 -->
                 <view class="circle-btn" @click="toWithdraw" v-if="!isDemo">
                     <view class="circle-icon">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
-                            <path d="M15 9l-6 6" />
-                            <path d="M15 15v-6h-6" />
-                        </svg>
+                        <cwg-icon name="crm-withdraw" :size="16" color="#2e3a47" />
                     </view>
-                    <text class="circle-label">出金</text>
+                    <text class="circle-label" v-t="'Home.page_customer.item3'" />
                 </view>
 
                 <!-- 转账 -->
                 <view class="circle-btn" @click="toTransfer" v-if="!isDemo">
                     <view class="circle-icon">
-                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
-                            <path d="M21 17H3M21 17L17.5 20.5M21 17L17.5 13.5M6.5 10.5L3 7M3 7L6.5 3.5M3 7H21"
-                                stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
-                        </svg>
+                        <cwg-icon name="crm-transfer" :size="16" color="#2e3a47" />
                     </view>
-                    <text class="circle-label">转账</text>
+                    <text class="circle-label" v-t="'Custom.Index.Transfer'" />
                 </view>
 
                 <!-- 更多(三点) -->
@@ -87,15 +68,9 @@
                     @menuClick="handleCustomClick">
                     <view class="circle-btn">
                         <view class="circle-icon">
-                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
-                                fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
-                                stroke-linejoin="round">
-                                <path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
-                                <path d="M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
-                                <path d="M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
-                            </svg>
+                            <cwg-icon name="crm-ellipsis-vertical" :size="16" color="#2e3a47" />
                         </view>
-                        <text class="circle-label">更多</text>
+                        <text class="circle-label" v-t="'Latest.More'" />
                     </view>
                 </cwg-dropdown>
 
@@ -105,56 +80,32 @@
             <view class="desktop-buttons">
                 <view class="action-btn primary" @click="handleAction('trade')">
                     <span class="btn-icon">
-                        <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
-                            <path
-                                d="M4.66797 2.66602V4.66602M4.66797 8.66602V13.3327M11.3346 2.66602V4.66602M11.3346 11.3327V13.3327M2.66797 5.33268C2.66797 5.15587 2.73821 4.9863 2.86323 4.86128C2.98826 4.73625 3.15782 4.66602 3.33464 4.66602H6.0013C6.17811 4.66602 6.34768 4.73625 6.47271 4.86128C6.59773 4.9863 6.66797 5.15587 6.66797 5.33268V7.99935C6.66797 8.17616 6.59773 8.34573 6.47271 8.47075C6.34768 8.59578 6.17811 8.66602 6.0013 8.66602H3.33464C3.15782 8.66602 2.98826 8.59578 2.86323 8.47075C2.73821 8.34573 2.66797 8.17616 2.66797 7.99935V5.33268ZM9.33464 5.33268C9.33464 5.15587 9.40487 4.9863 9.5299 4.86128C9.65492 4.73625 9.82449 4.66602 10.0013 4.66602H12.668C12.8448 4.66602 13.0143 4.73625 13.1394 4.86128C13.2644 4.9863 13.3346 5.15587 13.3346 5.33268V10.666C13.3346 10.8428 13.2644 11.0124 13.1394 11.1374C13.0143 11.2624 12.8448 11.3327 12.668 11.3327H10.0013C9.82449 11.3327 9.65492 11.2624 9.5299 11.1374C9.40487 11.0124 9.33464 10.8428 9.33464 10.666V5.33268Z"
-                                stroke="currentColor" stroke-width="1.33" stroke-linecap="round"
-                                stroke-linejoin="round" />
-                        </svg>
+                        <cwg-icon name="crm-trade" :size="16" color="#fff" />
                     </span>
-                    交易
+                    <text v-t="'Shop.Index.Transaction'" />
                 </view>
                 <view class="action-btn" @click="toDeposit" v-if="!isDemo">
                     <span class="btn-icon">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
-                            <path d="M8 12l4 4" />
-                            <path d="M12 8v8" />
-                            <path d="M16 12l-4 4" />
-                        </svg>
+                        <cwg-icon name="crm-deposit" :size="16" color="#2e3a47" />
                     </span>
-                    入金
+                    <text v-t="'Home.page_customer.item2'" />
                 </view>
                 <view class="action-btn" @click="toWithdraw" v-if="!isDemo">
                     <span class="btn-icon">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
-                            <path d="M15 9l-6 6" />
-                            <path d="M15 15v-6h-6" />
-                        </svg>
+                        <cwg-icon name="crm-withdraw" :size="16" color="#2e3a47" />
                     </span>
-                    出金
+                    <text v-t="'Home.page_customer.item3'" />
                 </view>
                 <view class="action-btn" @click="toTransfer" v-if="!isDemo">
                     <span class="btn-icon">
-                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none">
-                            <path d="M21 17H3M21 17L17.5 20.5M21 17L17.5 13.5M6.5 10.5L3 7M3 7L6.5 3.5M3 7H21"
-                                stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
-                        </svg>
+                        <cwg-icon name="crm-transfer" :size="16" color="#2e3a47" />
                     </span>
-                    转账
+                    <text v-t="'Custom.Index.Transfer'" />
                 </view>
                 <cwg-dropdown @open="onOpen" @close="onClose" :menu-list="customMenuList"
                     @menuClick="handleCustomClick">
                     <view class="action-btn icon-only">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
-                            <path d="M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
-                            <path d="M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
-                        </svg>
+                        <cwg-icon name="crm-ellipsis-vertical" :size="16" color="#2e3a47" />
                     </view>
                 </cwg-dropdown>
 
@@ -184,24 +135,14 @@
                     <span class="label">{{ account.platform }} 登陆</span>
                     <span class="value">{{ account.login }}</span>
                     <view class="copy-btn" @click="copy(account.login)">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path
-                                d="M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z" />
-                            <path
-                                d="M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1" />
-                        </svg>
+                        <cwg-icon name="copy" :size="16" color="#2e3a47" />
                     </view>
                 </view>
 
                 <!-- 更改交易密码按钮 -->
                 <view class="change-password-btn" @click="handleAction('changePassword1')" v-if="!isDemo">
                     <span class="btn-icon">
-                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"
-                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
-                            <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
-                            <path d="M13.5 6.5l4 4" />
-                        </svg>
+                        <cwg-icon name="crm-xg" :size="16" color="#2e3a47" />
                     </span>
                     更改交易密码
                 </view>

+ 7 - 0
static/icons/crm-deposit.svg

@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
+                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
+                            <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
+                            <path d="M8 12l4 4" />
+                            <path d="M12 8v8" />
+                            <path d="M16 12l-4 4" />
+                        </svg>

+ 1 - 0
static/icons/crm-ellipsis-vertical.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M320 208C289.1 208 264 182.9 264 152C264 121.1 289.1 96 320 96C350.9 96 376 121.1 376 152C376 182.9 350.9 208 320 208zM320 432C350.9 432 376 457.1 376 488C376 518.9 350.9 544 320 544C289.1 544 264 518.9 264 488C264 457.1 289.1 432 320 432zM376 320C376 350.9 350.9 376 320 376C289.1 376 264 350.9 264 320C264 289.1 289.1 264 320 264C350.9 264 376 289.1 376 320z"/></svg>

+ 7 - 0
static/icons/crm-fx.svg

@@ -0,0 +1,7 @@
+<svg v-if="item.isExternal" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
+                    viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
+                    stroke-linejoin="round" class="tabler-icon-external-link">
+                    <path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6"></path>
+                    <path d="M11 13l9 -9"></path>
+                    <path d="M15 4h5v5"></path>
+                </svg>

+ 3 - 0
static/icons/crm-transfer.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+  <path d="M21 17H3M21 17L17.5 20.5M21 17L17.5 13.5M6.5 10.5L3 7M3 7L6.5 3.5M3 7H21" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

+ 6 - 0
static/icons/crm-withdraw.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
+                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
+                            <path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" />
+                            <path d="M15 9l-6 6" />
+                            <path d="M15 15v-6h-6" />
+                        </svg>

+ 5 - 0
static/icons/crm-xg.svg

@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"
+                            stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
+                            <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
+                            <path d="M13.5 6.5l4 4" />
+                        </svg>

+ 24 - 0
static/svg-icons-lib.js

@@ -99,6 +99,10 @@ const collections = {
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M64 192v32h512v-32c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64m0 80v176c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V272zm64 152c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24h-48c-13.3 0-24-10.7-24-24m144 0c0-13.3 10.7-24 24-24h64c13.3 0 24 10.7 24 24s-10.7 24-24 24h-64c-13.3 0-24-10.7-24-24\"/></svg>",
         2
       ],
+      "crm-deposit": [
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"#22ac38\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M3 12a9 9 0 1 0 18 0 9 9 0 0 0-18 0m5 0 4 4m0-8v8m4-4-4 4\"/></svg>",
+        2
+      ],
       "crm-diagram": [
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M64 144c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v16h128v-16c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48h-96c-26.5 0-48-21.5-48-48v-16H256v16c0 7.3-1.7 14.3-4.6 20.5L320 352h80c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48h-96c-26.5 0-48-21.5-48-48v-96c0-7.3 1.7-14.3 4.6-20.5L192 288h-80c-26.5 0-48-21.5-48-48z\"/></svg>",
         2
@@ -111,10 +115,18 @@ const collections = {
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M352 96c0-17.7-14.3-32-32-32s-32 14.3-32 32v210.7l-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 306.7zM160 384c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64v-32c0-35.3-28.7-64-64-64h-46.9l-56.6 56.6c-31.2 31.2-81.9 31.2-113.1 0L206.9 384zm304 56c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24\"/></svg>",
         2
       ],
+      "crm-ellipsis-vertical": [
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M320 208c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56m0 224c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56m56-112c0 30.9-25.1 56-56 56s-56-25.1-56-56 25.1-56 56-56 56 25.1 56 56\"/></svg>",
+        2
+      ],
       "crm-file": [
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M192 64c-35.3 0-64 28.7-64 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V234.5c0-17-6.7-33.3-18.7-45.3L386.7 82.7c-12-12-28.2-18.7-45.2-18.7zm261.5 176H360c-13.3 0-24-10.7-24-24v-93.5z\"/></svg>",
         2
       ],
+      "crm-fx": [
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"#22ac38\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"tabler-icon-external-link\" viewBox=\"0 0 24 24\"><path d=\"M12 6H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6m-7 1 9-9m-5 0h5v5\"/></svg>",
+        2
+      ],
       "crm-gear": [
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M259.1 73.5c3-14.8 16.1-25.5 31.3-25.5h59.8c15.2 0 28.3 10.7 31.3 25.5l14.5 70c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L511 297.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9L541 481.9c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5h-59.8c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8l-68.1 22.5c-14.4 4.8-30.2-1.2-37.8-14.4l-29.9-51.8c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7l-53.4-47.5c-11.4-10.1-14-26.8-6.5-39.9l29.9-51.8c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8zM320.3 400c44.2-.2 79.9-36.1 79.7-80.3s-36.1-79.9-80.3-79.7-79.9 36.1-79.7 80.3 36.1 79.9 80.3 79.7\"/></svg>",
         2
@@ -180,6 +192,10 @@ const collections = {
         "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"none\" viewBox=\"0 0 20 20\"><path stroke=\"#6c8595\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.67\" d=\"M5.833 3.333v2.5m0 5v5.834m8.334-13.334v2.5m0 8.334v2.5m-10.834-10a.833.833 0 0 1 .834-.834H7.5a.833.833 0 0 1 .833.834V10a.833.833 0 0 1-.833.833H4.167A.833.833 0 0 1 3.333 10zm8.334 0a.833.833 0 0 1 .833-.834h3.333a.833.833 0 0 1 .834.834v6.666a.834.834 0 0 1-.834.834H12.5a.833.833 0 0 1-.833-.834z\"/></svg>",
         9
       ],
+      "crm-transfer": [
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"#22ac38\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 17H3m18 0-3.5 3.5M21 17l-3.5-3.5m-11-3L3 7m0 0 3.5-3.5M3 7h18\"/></svg>",
+        2
+      ],
       "crm-trash-can": [
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M232.7 69.9c4.4-13.1 16.6-21.9 30.4-21.9H377c13.8 0 26 8.8 30.4 21.9L416 96h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96zM128 208h384v304c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64zm88 64c-13.3 0-24 10.7-24 24v192c0 13.3 10.7 24 24 24s24-10.7 24-24V296c0-13.3-10.7-24-24-24m104 0c-13.3 0-24 10.7-24 24v192c0 13.3 10.7 24 24 24s24-10.7 24-24V296c0-13.3-10.7-24-24-24m104 0c-13.3 0-24 10.7-24 24v192c0 13.3 10.7 24 24 24s24-10.7 24-24V296c0-13.3-10.7-24-24-24\"/></svg>",
         2
@@ -200,6 +216,14 @@ const collections = {
         "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\"><!--!Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill=\"#22ac38\" d=\"M128 96c-35.3 0-64 28.7-64 64v288c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h384c13.3 0 24-10.7 24-24s-10.7-24-24-24zm352 224c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32\"/></svg>",
         2
       ],
+      "crm-withdraw": [
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"#22ac38\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M3 12a9 9 0 1 0 18 0 9 9 0 0 0-18 0m12-3-6 6\"/><path d=\"M15 15V9H9\"/></svg>",
+        2
+      ],
+      "crm-xg": [
+        "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"#22ac38\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M4 20h4L18.5 9.5a2.828 2.828 0 1 0-4-4L4 16zm9.5-13.5 4 4\"/></svg>",
+        2
+      ],
       "cwg-calendar": [
         "<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#22ac38\" d=\"M5 22q-.824 0-1.412-.587A1.93 1.93 0 0 1 3 20V6q0-.824.587-1.412A1.93 1.93 0 0 1 5 4h1V3q0-.424.287-.712A.97.97 0 0 1 7 2q.424 0 .713.288Q8 2.575 8 3v1h8V3q0-.424.288-.712A.97.97 0 0 1 17 2q.424 0 .712.288Q18 2.575 18 3v1h1q.824 0 1.413.588Q21 5.175 21 6v14q0 .824-.587 1.413A1.93 1.93 0 0 1 19 22zm0-2h14V10H5zM5 8h14V6H5zm7 6a.97.97 0 0 1-.713-.287A.97.97 0 0 1 11 13q0-.424.287-.713A.97.97 0 0 1 12 12q.424 0 .713.287.287.288.287.713 0 .424-.287.713A.97.97 0 0 1 12 14m-4 0a.97.97 0 0 1-.713-.287A.97.97 0 0 1 7 13q0-.424.287-.713A.97.97 0 0 1 8 12q.424 0 .713.287Q9 12.576 9 13t-.287.713A.97.97 0 0 1 8 14m8 0a.97.97 0 0 1-.713-.287A.97.97 0 0 1 15 13q0-.424.287-.713A.97.97 0 0 1 16 12q.424 0 .712.287.288.288.288.713 0 .424-.288.713A.97.97 0 0 1 16 14m-4 4a.97.97 0 0 1-.713-.288A.97.97 0 0 1 11 17q0-.424.287-.712A.97.97 0 0 1 12 16q.424 0 .713.288.287.287.287.712 0 .424-.287.712A.97.97 0 0 1 12 18m-4 0a.97.97 0 0 1-.713-.288A.97.97 0 0 1 7 17q0-.424.287-.712A.97.97 0 0 1 8 16q.424 0 .713.288Q9 16.575 9 17q0 .424-.287.712A.97.97 0 0 1 8 18m8 0a.97.97 0 0 1-.713-.288A.97.97 0 0 1 15 17q0-.424.287-.712A.97.97 0 0 1 16 16q.424 0 .712.288.288.287.288.712 0 .424-.288.712A.97.97 0 0 1 16 18\"/></svg>",
         2

+ 20 - 0
utils/openExternalUrl.js

@@ -0,0 +1,20 @@
+export function openExternalUrl(url) {
+    // #ifdef APP-PLUS
+    plus.runtime.openURL(url, (error) => {
+        if (error) {
+            uni.showToast({ title: '打开失败', icon: 'none' });
+        }
+    });
+    // #endif
+
+    // #ifdef H5
+    window.open(url, '_blank');
+    // #endif
+
+    // #ifdef MP-WEIXIN
+    // 小程序只能使用 web-view 组件,这里可以跳转到一个内嵌 web-view 的页面
+    uni.navigateTo({
+        url: `/pages/webview/webview?url=${encodeURIComponent(url)}`
+    });
+    // #endif
+}

+ 0 - 1
windows/crm-sz.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-settings"><path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z"></path><path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0"></path></svg>

+ 2 - 2
windows/left-window.vue

@@ -55,7 +55,7 @@ const menu = ref<MenuItem[]>(
                 { path: '/pages/customer/deposit', label: 'Home.page_customer.item2', icon: 'icon-deposit' },
                 { path: '/pages/customer/withdrawal', label: 'Home.page_customer.item3', icon: 'icon-withdrawal' },
                 { path: '/pages/customer/payment-history', label: 'Home.page_customer.item4', icon: 'icon-payment' },
-                { path: '/pages/customer/transfer', label: 'Home.page_customer.item5', icon: 'icon-transfer' }
+                { path: '/pages/customer/transfer', label: 'Custom.Index.Transfer', icon: 'icon-transfer' }
             ]
         },
         {
@@ -88,7 +88,7 @@ const menu = ref<MenuItem[]>(
             children: []
         },
         {
-            path: '/pages/customer/support', isOpenMenu: false, label: '设置', icon: 'crm-sz',
+            path: '/pages/customer/support', isOpenMenu: false, label: 'Custom.Index.Settings', icon: 'crm-sz',
             children: [
                 { path: '/pages/mine/info?type=1', isOpenMenu: false, label: 'PersonalManagement.Title.PersonalInformation', icon: 'crm-headset' },
                 { path: '/pages/mine/info?type=2', isOpenMenu: false, label: 'PersonalManagement.Title.BankInformation', icon: 'crm-headset' },