zhb vor 10 Stunden
Ursprung
Commit
4a60c16724
75 geänderte Dateien mit 3523 neuen und 3407 gelöschten Zeilen
  1. 2 2
      components/cwg-account-limit-popup.vue
  2. 60 53
      components/cwg-complex-search.vue
  3. 4 3
      components/cwg-confirm-popup.vue
  4. 14 14
      components/cwg-detail-popup.vue
  5. 2 2
      components/cwg-dont-active-popup.vue
  6. 5 5
      components/cwg-email-code-popup.vue
  7. 2 2
      components/cwg-error-popup.vue
  8. 1 1
      components/cwg-function-disabled-popup.vue
  9. 43 40
      components/cwg-global-popup.vue
  10. 3 3
      components/cwg-improve-popup.vue
  11. 29 14
      components/cwg-payment.vue
  12. 7 5
      components/cwg-popup.vue
  13. 12 12
      components/cwg-sidebar.vue
  14. 2 2
      components/cwg-success-popup.vue
  15. 2 2
      components/cwg-tips-popup.vue
  16. 69 40
      pages/activities/components/ActivityDialogs.vue
  17. 2 1
      pages/activities/components/DrawLotteryRaffle.vue
  18. 7 4
      pages/activities/components/GiftApplicationPopup.vue
  19. 14 13
      pages/activities/content.vue
  20. 12 12
      pages/activities/detail.vue
  21. 6 4
      pages/activities/dollar-list.vue
  22. 43 37
      pages/activities/index.vue
  23. 2 2
      pages/activities/monthly-list.vue
  24. 4 2
      pages/activities/surplus-list.vue
  25. 5 4
      pages/customer/account-select.vue
  26. 13 12
      pages/customer/components/AccountCard.vue
  27. 1 1
      pages/customer/components/AccountCardDesktop.vue
  28. 5 4
      pages/customer/components/CheckPopup.vue
  29. 2 2
      pages/customer/components/ChinaUnionPayPopup.vue
  30. 2 2
      pages/customer/components/Clause20Popup.vue
  31. 2 4
      pages/customer/components/ClauseNZPopup.vue
  32. 2 2
      pages/customer/components/ClauseNZTwoPopup.vue
  33. 2 2
      pages/customer/components/ClauseNewListPopup.vue
  34. 2 2
      pages/customer/components/ClausePopup.vue
  35. 2 2
      pages/customer/components/DealResultPopup.vue
  36. 4 4
      pages/customer/components/DepositCheckConfirmPopup.vue
  37. 1 1
      pages/customer/components/KycPopup.vue
  38. 1 1
      pages/customer/components/NewYear24Popup.vue
  39. 218 215
      pages/customer/components/PaymentMethodsList.vue
  40. 1 1
      pages/customer/components/VietnamNoticePopup.vue
  41. 2 2
      pages/customer/components/WithdrawCheckConfirmPopup.vue
  42. 13 11
      pages/customer/components/digitalPayConfirmPopup.vue
  43. 5 4
      pages/customer/create-account.vue
  44. 888 897
      pages/customer/dashboard.vue
  45. 26 24
      pages/customer/deposit-select.vue
  46. 15 14
      pages/customer/deposit.vue
  47. 14 14
      pages/customer/transfer.vue
  48. 4 3
      pages/customer/wallet-transfer.vue
  49. 17 12
      pages/customer/withdrawal-select.vue
  50. 11 9
      pages/customer/withdrawal.vue
  51. 44 40
      pages/follow/account-management.vue
  52. 2 2
      pages/follow/components/applySignalDialog.vue
  53. 46 42
      pages/follow/index.vue
  54. 40 35
      pages/follow/subscribe-list.vue
  55. 25 19
      pages/follow/trading-center.vue
  56. 10 8
      pages/follow/trading-management.vue
  57. 3 2
      pages/follow/transfer.vue
  58. 9 7
      pages/ib/agent-transfer.vue
  59. 2 2
      pages/ib/components/BonusAgreementPopup.vue
  60. 129 119
      pages/ib/index.vue
  61. 17 10
      pages/ib/linkList.vue
  62. 3 2
      pages/ib/openAccount.vue
  63. 2 1
      pages/ib/openPammManager.vue
  64. 5 5
      pages/ib/promotion.vue
  65. 6 4
      pages/ib/settingPammManager.vue
  66. 241 255
      pages/ib/subsList.vue
  67. 13 10
      pages/ib/withdraw-select.vue
  68. 23 19
      pages/ib/withdraw.vue
  69. 2 2
      pages/login/index.vue
  70. 10 10
      pages/login/reset.vue
  71. 695 722
      pages/mine/components/BankInfoTab.vue
  72. 17 13
      pages/mine/components/CardAuthDialog.vue
  73. 193 187
      pages/mine/components/FileManagementTab.vue
  74. 315 309
      pages/mine/components/SecurityCenterTab.vue
  75. 66 58
      pages/mine/improveImmediately.vue

+ 2 - 2
components/cwg-account-limit-popup.vue

@@ -16,8 +16,8 @@
             </view>
         </view>
         <template #footer>
-            <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="closeDia">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 60 - 53
components/cwg-complex-search.vue

@@ -13,25 +13,31 @@
                             </template>
                             <template v-else-if="field.type === 'select'">
                                 <cwg-combox v-model:value="formData[field.key]" :options="field.options"
-                                    :placeholder="field.placeholder || t('.placeholder.choose')" :clearable="field.clearable || false"
+                                    :placeholder="field.placeholder || t('.placeholder.choose')"
+                                    :clearable="field.clearable || false"
                                     @change="(e) => field.onChange?.(e) || handleSearch()" />
                             </template>
                             <template v-else-if="field.type === 'date'">
                                 <uni-datetime-picker :start="dateLimit.start" :end="dateLimit.end"
                                     v-model="formData[field.key]" type="date"
-                                    :placeholder="field.placeholder || t('.placeholder.chooseDate')" @change="handleDateChange" />
+                                    :placeholder="field.placeholder || t('.placeholder.chooseDate')"
+                                    @change="handleDateChange" />
                             </template>
                             <template v-else-if="field.type === 'daterange'">
-                                <uni-datetime-picker class="cursor-pointer" :start="dateLimit.start" :end="dateLimit.end"
-                                    v-model="formData[field.key]" type="daterange"
-                                    :placeholder="field.placeholder || '请选择日期范围'" :startPlaceholder="t('placeholder.Start')" :endPlaceholder="t('placeholder.End')" @change="handleDateChange" :data-tooltip="field.placeholder" data-placement="top"/>
+                                <uni-datetime-picker class="cursor-pointer" :start="dateLimit.start"
+                                    :end="dateLimit.end" v-model="formData[field.key]" type="daterange"
+                                    :placeholder="field.placeholder || '请选择日期范围'"
+                                    :startPlaceholder="t('placeholder.Start')" :endPlaceholder="t('placeholder.End')"
+                                    @change="handleDateChange" :data-tooltip="field.placeholder" data-placement="top" />
                             </template>
                             <template v-else-if="field.type === 'picker'">
-                                <uni-data-picker class="cursor-pointer" style="min-width: 100px" v-model="formData[field.key]"
-                                    :localdata="field.options" :popup-title="field.popupTitle || t('State.All')"
+                                <uni-data-picker class="cursor-pointer" style="min-width: 100px"
+                                    v-model="formData[field.key]" :localdata="field.options"
+                                    :popup-title="field.popupTitle || t('State.All')"
                                     :map="field.map || { value: 'value', text: 'label' }"
                                     @change="(e) => field.onChange?.(e)"
-                                    @nodeclick="(node) => field.onNodeClick?.(node)" :data-tooltip="field.placeholder" data-placement="top"/>
+                                    @nodeclick="(node) => field.onNodeClick?.(node)" :data-tooltip="field.placeholder"
+                                    data-placement="top" />
                             </template>
                             <template v-else-if="field.type === 'number'">
                                 <uni-easyinput v-model="formData[field.key]" type="number"
@@ -41,10 +47,10 @@
                     </view>
                 </view>
                 <view class="form-actions">
-                    <button v-if="hasMoreFields" class="search-btn" @click="toggleShowAll">
+                    <button hover-class="" v-if="hasMoreFields" class="search-btn" @click="toggleShowAll">
                         <text>{{ showAllFields ? t('vu.Btn.Hide') : t('vu.Btn.More') }}</text>
                     </button>
-                    <button class="search-btn" @click="handleSearch" v-t="'Btn.Search'" />
+                    <button hover-class="" class="search-btn" @click="handleSearch" v-t="'Btn.Search'" />
                 </view>
             </view>
         </cwg-match-media>
@@ -52,14 +58,14 @@
             <!-- 移动端:只显示筛选按钮,点击弹出底部抽屉 -->
             <view class="mobile-filter">
                 <view v-if="dateField" class="mobile-date-wrapper">
-                    <uni-datetime-picker class="cursor-pointer" :start="dateLimit.start" :end="dateLimit.end" v-model="formData[dateField.key]"
-                        :type="dateField.type === 'daterange' ? 'daterange' : 'date'"
+                    <uni-datetime-picker class="cursor-pointer" :start="dateLimit.start" :end="dateLimit.end"
+                        v-model="formData[dateField.key]" :type="dateField.type === 'daterange' ? 'daterange' : 'date'"
                         :placeholder="dateField.placeholder || (dateField.type === 'daterange' ? '选择日期范围' : '选择日期')"
-                                         :startPlaceholder="t('placeholder.Start')" :endPlaceholder="t('placeholder.End')"
+                        :startPlaceholder="t('placeholder.Start')" :endPlaceholder="t('placeholder.End')"
                         @change="handleDateChange" />
                 </view>
                 <view v-else class="mobile-date-wrapper"></view>
-                <button v-if="nonDateField?.length" class="filter-chip" @click="openFilterPopup">
+                <button hover-class="" v-if="nonDateField?.length" class="filter-chip" @click="openFilterPopup">
                     <cwg-icon name="cwg-filter" :size="14" color="#141d22" />
                     <text class="filter-label" v-t="'Documentary.tradingCenter.item3'" />
                 </button>
@@ -96,8 +102,8 @@
                                 :placeholder="field.placeholder || '请输入数字'" clearable />
                         </template>
                         <template v-else-if="field.type === 'picker'">
-                            <uni-data-picker class="cursor-pointer" v-model="tempFormData[field.key]" :localdata="field.options"
-                                :popup-title="field.popupTitle || t('State.All')"
+                            <uni-data-picker class="cursor-pointer" v-model="tempFormData[field.key]"
+                                :localdata="field.options" :popup-title="field.popupTitle || t('State.All')"
                                 :map="field.map || { value: 'value', text: 'label' }"
                                 @change="(e) => field.onChange?.(e)" @nodeclick="(node) => field.onNodeClick?.(node)" />
                         </template>
@@ -107,8 +113,8 @@
                 </view>
             </scroll-view>
             <template #footer>
-                <!-- <button class="reset-btn" @click="resetTempForm" v-t="'Documentary.tradingCenter.item4'" /> -->
-                <button class="search-btn" @click="applyFilter" v-t="'Btn.Search'" />
+                <!-- <button hover-class="" class="reset-btn" @click="resetTempForm" v-t="'Documentary.tradingCenter.item4'" /> -->
+                <button hover-class="" class="search-btn" @click="applyFilter" v-t="'Btn.Search'" />
             </template>
         </cwg-popup>
 
@@ -134,7 +140,7 @@ const props = defineProps({
         default: 1
     },
     // 不设置默认数据
-  noData: {
+    noData: {
         type: Boolean,
         default: false
     },
@@ -210,8 +216,8 @@ const formRows = computed(() => {
     return rows
 })
 const winWidth = computed(() => {
-  console.log(window.innerWidth)
-  return window.innerWidth
+    console.log(window.innerWidth)
+    return window.innerWidth
 })
 
 // 显示的行(根据 showAllFields 决定)
@@ -220,7 +226,7 @@ const displayRows = computed(() => {
         return formRows.value
     }
     // 默认只显示第一行
-   return  winWidth.value>1500 ?formRows.value.slice(0,4):formRows.value.slice(0,3)
+    return winWidth.value > 1500 ? formRows.value.slice(0, 4) : formRows.value.slice(0, 3)
 })
 
 // 是否有更多字段可以展开
@@ -241,31 +247,31 @@ const selectChip = (key, value) => {
 // 初始化表单数据
 const initFormData = () => {
     const initial = {}
-  if (!props.noData) {
-    props.fields.forEach(field => {
-      // 1. 优先使用外部传入的 modelValue(如果值不为 null 或 undefined)
-      if (props.modelValue && props.modelValue[field.key] != null) {
-        initial[field.key] = props.modelValue[field.key]
-      }
-      // 2. 其次使用字段配置的 defaultValue
-      else if (field.defaultValue !== undefined) {
-        initial[field.key] = field.defaultValue
-        return
-      }
-      // 3. 日期字段特殊处理:默认当前月(即使 modelValue 中存在但为 null/undefined)
-      else if (field.type === 'date' || field.type === 'daterange') {
-        initial[field.key] = getDefaultDateValue(field)
-      }
-      // 4. select 类型字段如果没有默认值,默认置空,不强制选第一个
-      else if (field.type === 'select') {
-        initial[field.key] = null
-      }
-      // 5. 其他字段默认为空字符串
-      else {
-        initial[field.key] = ''
-      }
-    })
-  }
+    if (!props.noData) {
+        props.fields.forEach(field => {
+            // 1. 优先使用外部传入的 modelValue(如果值不为 null 或 undefined)
+            if (props.modelValue && props.modelValue[field.key] != null) {
+                initial[field.key] = props.modelValue[field.key]
+            }
+            // 2. 其次使用字段配置的 defaultValue
+            else if (field.defaultValue !== undefined) {
+                initial[field.key] = field.defaultValue
+                return
+            }
+            // 3. 日期字段特殊处理:默认当前月(即使 modelValue 中存在但为 null/undefined)
+            else if (field.type === 'date' || field.type === 'daterange') {
+                initial[field.key] = getDefaultDateValue(field)
+            }
+            // 4. select 类型字段如果没有默认值,默认置空,不强制选第一个
+            else if (field.type === 'select') {
+                initial[field.key] = null
+            }
+            // 5. 其他字段默认为空字符串
+            else {
+                initial[field.key] = ''
+            }
+        })
+    }
     formData.value = initial
     tempFormData.value = JSON.parse(JSON.stringify(initial))
     handleSearch()
@@ -320,7 +326,7 @@ const ownerPageRoute = ref('')
 
 /** 仅字段结构变化时重新初始化(语言切换改 label 不触发) */
 const getFieldsSignature = (fields) => {
-  console.log(fields)
+    console.log(fields)
     if (!fields?.length) return ''
     return JSON.stringify(
         fields.filter(Boolean).map((field) => ({
@@ -486,7 +492,7 @@ onMounted(() => {
 .search-bar {
 
     .cwg-combox,
-    .uni-easyinput{
+    .uni-easyinput {
         width: px2rpx(240) !important;
         flex: none;
     }
@@ -669,9 +675,10 @@ onMounted(() => {
 
 
 }
-.search-dialog{
-  .search-btn{
-    color: var(--btn-color);
-  }
+
+.search-dialog {
+    .search-btn {
+        color: var(--btn-color);
+    }
 }
 </style>

+ 4 - 3
components/cwg-confirm-popup.vue

@@ -5,14 +5,15 @@
       <view class="confirm-content">{{ content }}</view>
     </view>
     <template #footer>
-      <button @click="handleCancel">{{ cancelText }}</button>
-      <button class="btn btn-secondary btn-shadow waves-effect" @click="handleConfirm">{{ confirmText }}</button>
+      <button hover-class="" @click="handleCancel">{{ cancelText }}</button>
+      <button hover-class="" class="btn btn-secondary btn-shadow waves-effect" @click="handleConfirm">{{ confirmText
+        }}</button>
     </template>
   </cwg-popup>
 </template>
 
 <script setup>
-import { ref, onMounted, onUnmounted,watch } from 'vue'
+import { ref, onMounted, onUnmounted, watch } from 'vue'
 import { useI18n } from 'vue-i18n'
 const { t } = useI18n()
 

+ 14 - 14
components/cwg-detail-popup.vue

@@ -12,8 +12,7 @@
                         <template #operation1>
                             <slot :name="`cell-${item.prop}`" :row="row" :column="item" :index="index">
                                 <view v-if="item.type === 'action'" class="action-list">
-                                    <view v-for="(actionItem, idx) in getVisibleActions(item.menuList, row)"
-                                        :key="idx">
+                                    <view v-for="(actionItem, idx) in getVisibleActions(item.menuList, row)" :key="idx">
                                         <view class="action-btn"
                                             @click.stop="actionItem.btnClick && actionItem.btnClick(row)">
                                             {{ actionItem.label || actionItem.text || actionItem.name }}
@@ -30,7 +29,7 @@
             </view>
         </view>
         <template #footer>
-            <button class="single-btn default" @click="visible = false" v-t="'Btn.Close'" />
+            <button hover-class="" class="single-btn default" @click="visible = false" v-t="'Btn.Close'" />
         </template>
     </cwg-popup>
 </template>
@@ -132,11 +131,11 @@ const formatDate = (date, format) => {
     //text-decoration: underline;
     cursor: pointer;
     font-size: 14px;
-  max-width: px2rpx(120);
-  word-wrap:break-word;
-text-align: right;
-  word-break:normal;
-  //white-space: nowrap;
+    max-width: px2rpx(120);
+    word-wrap: break-word;
+    text-align: right;
+    word-break: normal;
+    //white-space: nowrap;
 }
 
 :deep(.uni-popup) {
@@ -287,11 +286,12 @@ text-align: right;
         }
     }
 }
-.value-text{
-  width: 100%;
-  white-space: wrap;
-  word-wrap:break-word;
-  word-break:break-all;
-  text-align: right;
+
+.value-text {
+    width: 100%;
+    white-space: wrap;
+    word-wrap: break-word;
+    word-break: break-all;
+    text-align: right;
 }
 </style>

+ 2 - 2
components/cwg-dont-active-popup.vue

@@ -5,8 +5,8 @@
                 t('Custom.Withdraw.item9') }}</view>
         </view>
         <template #footer>
-            <button @click="visible = false">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="visible = false">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 5 - 5
components/cwg-email-code-popup.vue

@@ -13,9 +13,9 @@
             </view>
             <view class="get-code-btn">
               <view class="cwg-button ok-button">
-                <button type="primary" block :disabled="!canSend || isLoading" @click="handleGetCode">{{
+                <button hover-class="" type="primary" block :disabled="!canSend || isLoading" @click="handleGetCode">{{
                   getCodeString
-                }}</button>
+                  }}</button>
               </view>
             </view>
           </view>
@@ -24,8 +24,8 @@
     </view>
 
     <template #footer>
-      <button @click="visible = false">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="visible = false">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>
@@ -105,7 +105,7 @@ const rules = computed(() => ({
   },
 }))
 watch(locale, () => {
-    formRef1.value?.clearValidate()
+  formRef1.value?.clearValidate()
 })
 
 // 发送邮箱验证码

+ 2 - 2
components/cwg-error-popup.vue

@@ -5,8 +5,8 @@
             <view class="des1">{{ responseMessage }}</view>
         </view>
         <template #footer>
-            <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="closeDia">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 1 - 1
components/cwg-function-disabled-popup.vue

@@ -7,7 +7,7 @@
             <view class="des1">{{ t('news_add_field.Des.item1') }}</view>
         </view>
         <template #footer>
-            <button type="primary" @click="toHome">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" type="primary" @click="toHome">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 43 - 40
components/cwg-global-popup.vue

@@ -1,12 +1,15 @@
 <template>
-  <cwg-popup v-model:visible="popupState.visible" type="center" :mask-click="false" :show-footers="showFooters" width="400px">
+  <cwg-popup v-model:visible="popupState.visible" type="center" :mask-click="false" :show-footers="showFooters"
+    width="400px">
     <view class="popup-content">
       <view class="confirm-title">{{ popupState.title }}</view>
       <view class="confirm-content">{{ popupState.content }}</view>
     </view>
     <template #footer>
-      <button v-if="popupState.showCancel && !popupState.autoClose" @click="close">{{ popupState.cancelText }}</button>
-      <button v-if="!popupState.autoClose" class="btn btn-secondary btn-shadow waves-effect" @click="handleConfirm">{{ popupState.confirmText }}</button>
+      <button hover-class="" v-if="popupState.showCancel && !popupState.autoClose" @click="close">{{
+        popupState.cancelText }}</button>
+      <button hover-class="" v-if="!popupState.autoClose" class="btn btn-secondary btn-shadow waves-effect"
+        @click="handleConfirm">{{ popupState.confirmText }}</button>
     </template>
   </cwg-popup>
 </template>
@@ -23,52 +26,52 @@ let autoCloseTimer = null
 const showFooters = computed(() => !popupState.value.autoClose)
 
 watch(() => popupState.value.visible, (val) => {
-    if (val) {
-        popupRef.value?.open()
-        if (popupState.value.autoClose) {
-            autoCloseTimer = setTimeout(() => {
-                close()
-            }, popupState.value.autoCloseDelay)
-        }
-    } else {
-        popupRef.value?.close()
-        if (autoCloseTimer) {
-            clearTimeout(autoCloseTimer)
-            autoCloseTimer = null
-        }
+  if (val) {
+    popupRef.value?.open()
+    if (popupState.value.autoClose) {
+      autoCloseTimer = setTimeout(() => {
+        close()
+      }, popupState.value.autoCloseDelay)
     }
+  } else {
+    popupRef.value?.close()
+    if (autoCloseTimer) {
+      clearTimeout(autoCloseTimer)
+      autoCloseTimer = null
+    }
+  }
 }, { immediate: true })
 
 onUnmounted(() => {
-    if (autoCloseTimer) {
-        clearTimeout(autoCloseTimer)
-    }
+  if (autoCloseTimer) {
+    clearTimeout(autoCloseTimer)
+  }
 })
 </script>
 
 <style scoped lang="scss">
-  @import "@/uni.scss";
+@import "@/uni.scss";
 
-  :deep(.cwg-dialog) {
-    width: px2rpx(500);
-    background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
-    border-radius: px2rpx(16);
-    text-align: center;
-    box-shadow: 0 px2rpx(10) px2rpx(20) rgba(0, 0, 0, 0.1);
-  }
+:deep(.cwg-dialog) {
+  width: px2rpx(500);
+  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+  border-radius: px2rpx(16);
+  text-align: center;
+  box-shadow: 0 px2rpx(10) px2rpx(20) rgba(0, 0, 0, 0.1);
+}
 
-  .confirm-title {
-    font-size: px2rpx(24);
-    font-weight: 600;
-    color: var(--bs-heading-color);
-    margin-bottom: px2rpx(30);
-  }
+.confirm-title {
+  font-size: px2rpx(24);
+  font-weight: 600;
+  color: var(--bs-heading-color);
+  margin-bottom: px2rpx(30);
+}
 
-  .confirm-content {
-    font-size: px2rpx(20);
-    color: var(--bs-heading-color);
-    margin-bottom: px2rpx(30);
-    line-height: 1.5;
-    word-break: break-word;
-  }
+.confirm-content {
+  font-size: px2rpx(20);
+  color: var(--bs-heading-color);
+  margin-bottom: px2rpx(30);
+  line-height: 1.5;
+  word-break: break-word;
+}
 </style>

+ 3 - 3
components/cwg-improve-popup.vue

@@ -9,8 +9,8 @@
             <view class="des2" v-t="'Home.msg.content3'"></view>
         </view>
         <template #footer>
-            <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="confirm">{{ t('Home.msg.btnImmediately') }}</button>
+            <button hover-class="" @click="closeDia">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="confirm">{{ t('Home.msg.btnImmediately') }}</button>
         </template>
     </cwg-popup>
 </template>
@@ -45,7 +45,7 @@ const confirm = () => {
 </script>
 
 <style lang="scss" scoped>
-.des1{
+.des1 {
     font-size: px2rpx(16);
     line-height: 1.6;
     margin: px2rpx(30) 0 px2rpx(50);

+ 29 - 14
components/cwg-payment.vue

@@ -16,26 +16,33 @@
       <template #btn>
         <view class="right-drawer custom-payment-drawer" v-if="mode === 'customer'">
           <view class="drawer-header">
-            <text class="drawer-title">{{t('vu.item21')}}</text>
-            <switch class="cursor-pointer" :data-tooltip="!isShow?t('vu.tooltip.t12'):t('vu.tooltip.t11')" :checked="!isShow" @change="toggleShow" color="#6c8595" style="transform:scale(0.7)" />
+            <text class="drawer-title">{{ t('vu.item21') }}</text>
+            <switch class="cursor-pointer" :data-tooltip="!isShow ? t('vu.tooltip.t12') : t('vu.tooltip.t11')"
+              :checked="!isShow" @change="toggleShow" color="#6c8595" style="transform:scale(0.7)" />
           </view>
           <view class="drawer-content">
             <view class="balance-amount">{{ formattedBalance }} USD</view>
-            <view class="cursor-pointer cursor-pointer1" @click="toPaymentHistory" :data-tooltip="t('wallet.pendingWithdraw1')" data-placement="top">
+            <view class="cursor-pointer cursor-pointer1" @click="toPaymentHistory"
+              :data-tooltip="t('wallet.pendingWithdraw1')" data-placement="top">
               <view class="account-number">${{ formattedPendingWithdrawAmount }}</view>
               <view class="account-type" v-t="'wallet.pendingWithdraw1'"></view>
             </view>
 
           </view>
           <view class="drawer-actions">
-            <button class="action-btn btn btn-outline-danger waves-effect waves-light " :data-tooltip="t('wallet.item6')" data-placement="top" @click.stop="goPages(1)" v-t="'wallet.item6'"></button>
-            <button class="action-btn btn btn-outline-danger waves-effect waves-light " :data-tooltip="t('wallet.item7')" data-placement="top" @click.stop="goPages(2)" v-t="'wallet.item7'"></button>
+            <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light "
+              :data-tooltip="t('wallet.item6')" data-placement="top" @click.stop="goPages(1)"
+              v-t="'wallet.item6'"></button>
+            <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light "
+              :data-tooltip="t('wallet.item7')" data-placement="top" @click.stop="goPages(2)"
+              v-t="'wallet.item7'"></button>
           </view>
         </view>
         <view class="right-drawer custom-payment-drawer" v-if="mode === 'ib'">
           <view class="drawer-header">
-            <text class="drawer-title">{{t('vu.item21')}}</text>
-            <switch class="cursor-pointer" :data-tooltip="!isShow?t('vu.tooltip.t12'):t('vu.tooltip.t11')" :checked="!isShow" @change="toggleShow" color="#6c8595" style="transform:scale(0.7)" />
+            <text class="drawer-title">{{ t('vu.item21') }}</text>
+            <switch class="cursor-pointer" :data-tooltip="!isShow ? t('vu.tooltip.t12') : t('vu.tooltip.t11')"
+              :checked="!isShow" @change="toggleShow" color="#6c8595" style="transform:scale(0.7)" />
           </view>
           <view class="drawer-content">
             <view class="balance-amount">{{ ibBalance }} USD</view>
@@ -46,22 +53,30 @@
 
           </view>
           <view class="drawer-actions">
-            <button class="action-btn btn btn-outline-danger waves-effect waves-light "  @click.stop="goIbPages(1)" v-t="'Custom.Index.Withdrawals'"></button>
-            <button class="action-btn btn btn-outline-danger waves-effect waves-light" :data-tooltip="t('Home.page_ib.item4')" data-placement="top" @click.stop="goIbPages(2)" v-t="'Home.page_ib.item4'"></button>
-            <button class="action-btn btn btn-outline-danger waves-effect waves-light " data-placement="top" :data-tooltip="t('Ib.Transfer.CommissionIssue')" @click.stop="goIbPages(3)" v-t="'Ib.Transfer.CommissionIssue'"></button>
+            <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light "
+              @click.stop="goIbPages(1)" v-t="'Custom.Index.Withdrawals'"></button>
+            <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light"
+              :data-tooltip="t('Home.page_ib.item4')" data-placement="top" @click.stop="goIbPages(2)"
+              v-t="'Home.page_ib.item4'"></button>
+            <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light "
+              data-placement="top" :data-tooltip="t('Ib.Transfer.CommissionIssue')" @click.stop="goIbPages(3)"
+              v-t="'Ib.Transfer.CommissionIssue'"></button>
           </view>
         </view>
         <view class="right-drawer custom-payment-drawer" v-if="mode === 'follow'">
           <view class="drawer-header">
-            <text class="drawer-title">{{t('vu.item21')}}</text>
-            <switch class="cursor-pointer" :data-tooltip="!isShow?t('vu.tooltip.t12'):t('vu.tooltip.t11')" :checked="!isShow" @change="toggleShow" color="#6c8595" style="transform:scale(0.7)" />
+            <text class="drawer-title">{{ t('vu.item21') }}</text>
+            <switch class="cursor-pointer" :data-tooltip="!isShow ? t('vu.tooltip.t12') : t('vu.tooltip.t11')"
+              :checked="!isShow" @change="toggleShow" color="#6c8595" style="transform:scale(0.7)" />
           </view>
           <view class="drawer-content">
             <view class="balance-amount">{{ t('Documentary.console.item15') }}{{ followBalance }} USD</view>
 
           </view>
           <view class="drawer-actions">
-            <button class="action-btn btn btn-outline-danger waves-effect waves-light " :data-tooltip="t('Documentary.console.item17')" @click.stop="goFollowPages(1)" v-t="'Documentary.console.item17'"></button>
+            <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light "
+              :data-tooltip="t('Documentary.console.item17')" @click.stop="goFollowPages(1)"
+              v-t="'Documentary.console.item17'"></button>
           </view>
         </view>
       </template>
@@ -80,7 +95,7 @@ import { userToken } from '@/composables/config'
 import { ibApi } from '@/service/ib'
 import { documentaryApi } from '@/service/documentary'
 import { useFilters } from '@/composables/useFilters'
-const {  numberDecimal } = useFilters()
+const { numberDecimal } = useFilters()
 const { mode } = useMenuSplit()
 
 const { t, locale } = useI18n()

+ 7 - 5
components/cwg-popup.vue

@@ -1,11 +1,13 @@
 <template>
-    <uni-popup ref="popupRef" type="center" @change="handlePopupChange" class="crm-popup" @maskClick="closeDialog" :isMaskClick="maskClick">
+    <uni-popup ref="popupRef" type="center" @change="handlePopupChange" class="crm-popup" @maskClick="closeDialog"
+        :isMaskClick="maskClick">
         <view class="cwg-dialog" :style="{ width: width }">
             <!-- 弹窗头部 -->
             <view class="dialog-header" v-if="title">
                 <text class="dialog-title">{{ title || t('Tips.DeleteAccount') }}</text>
 
-                <uni-icons class="dialog-close1 cursor-pointer" :data-tooltip="t('Btn.Close')" type="closeempty" size="20" color="#999" @click="closeDialog" />
+                <uni-icons class="dialog-close1 cursor-pointer" :data-tooltip="t('Btn.Close')" type="closeempty"
+                    size="20" color="#999" @click="closeDialog" />
             </view>
 
             <!-- 弹窗内容 -->
@@ -34,7 +36,7 @@
                 <!-- 单按钮模式 -->
                 <template v-else-if="footerType === 'single'">
                     <view class="btn-content">
-                        <button class="single-btn" :class="singleBtnType" @click="handleSingleBtnClick">
+                        <button hover-class="" class="single-btn" :class="singleBtnType" @click="handleSingleBtnClick">
                             {{ singleBtnText || t('common.confirm') }}
                         </button>
                     </view>
@@ -43,10 +45,10 @@
                 <!-- 双按钮模式(默认) -->
                 <template v-else>
                     <view class="btn-content">
-                        <button class="cancel-btn" @click="closeDialog">
+                        <button hover-class="" class="cancel-btn" @click="closeDialog">
                             {{ cancelText || t('common.cancel') }}
                         </button>
-                        <button class="confirm-btn" :class="confirmBtnType" @click="handleConfirm">
+                        <button hover-class="" class="confirm-btn" :class="confirmBtnType" @click="handleConfirm">
                             {{ confirmText || t('common.confirm') }}
                         </button>
                     </view>

+ 12 - 12
components/cwg-sidebar.vue

@@ -19,7 +19,7 @@
 
       <view class="wallet-body" v-if="isWalletOpen">
         <view class="wallet-body-header">
-          <text class="drawer-title">{{t('vu.item21')}}</text>
+          <text class="drawer-title">{{ t('vu.item21') }}</text>
           <switch :checked="!isShow" @change="toggleShow" color="#97A1C0"
             style="transform:scale(0.7); margin-right: -10px;" />
         </view>
@@ -41,21 +41,21 @@
         </view>
 
         <view class="wallet-actions" v-if="mode === 'customer'">
-          <button class="action-btn btn btn-outline-danger waves-effect waves-light" @click.stop="goPages(1)"
-            v-t="'wallet.item6'"></button>
-          <button class="action-btn btn btn-outline-danger waves-effect waves-light" @click.stop="goPages(2)"
-            v-t="'wallet.item7'"></button>
+          <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light"
+            @click.stop="goPages(1)" v-t="'wallet.item6'"></button>
+          <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light"
+            @click.stop="goPages(2)" v-t="'wallet.item7'"></button>
         </view>
         <view class="wallet-actions" v-if="mode === 'ib'">
-          <button class="action-btn btn btn-outline-danger waves-effect waves-light" @click.stop="goIbPages(1)"
-            v-t="'Custom.Index.Withdrawals'"></button>
-          <button class="action-btn btn btn-outline-danger waves-effect waves-light" @click.stop="goIbPages(2)"
-            v-t="'Home.page_ib.item4'"></button>
-          <!--                  <button class="action-btn" @click.stop="goIbPages(3)" v-t="'Ib.Transfer.CommissionIssue'"></button>-->
+          <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light"
+            @click.stop="goIbPages(1)" v-t="'Custom.Index.Withdrawals'"></button>
+          <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light"
+            @click.stop="goIbPages(2)" v-t="'Home.page_ib.item4'"></button>
+          <!--                  <button hover-class="" class="action-btn" @click.stop="goIbPages(3)" v-t="'Ib.Transfer.CommissionIssue'"></button>-->
         </view>
         <view class="wallet-actions" v-if="mode === 'follow'">
-          <button class="action-btn btn btn-outline-danger waves-effect waves-light" @click.stop="goFollow()"
-            v-t="'Documentary.console.item17'"></button>
+          <button hover-class="" class="action-btn btn btn-outline-danger waves-effect waves-light"
+            @click.stop="goFollow()" v-t="'Documentary.console.item17'"></button>
         </view>
       </view>
     </view>

+ 2 - 2
components/cwg-success-popup.vue

@@ -8,8 +8,8 @@
             <view class="des2" v-if="type === 'create'">{{ t('ApplicationDialog.Des12') }}</view>
         </view>
         <template #footer>
-            <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="closeDia">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="closeDia">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 2 - 2
components/cwg-tips-popup.vue

@@ -10,8 +10,8 @@
             <cwg-rich-text class="popup-text" :nodes="introduce" />
         </view>
         <template #footer>
-            <button @click="visible = false">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="visible = false">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="tosubmitConfirm">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 69 - 40
pages/activities/components/ActivityDialogs.vue

@@ -12,10 +12,12 @@
                     <text class="message-text">{{ t('news_add_field1.activities.item11') }}</text>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogChinaUnionPay')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogChinaUnionPay')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toTransformActive')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('toTransformActive')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -32,10 +34,12 @@
                     <text class="message-text">{{ t('news_add_field1.activities.item12') }}</text>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogChinaUnionPay1')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogChinaUnionPay1')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toRealizationActive')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('toRealizationActive')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -52,10 +56,12 @@
                     <text class="message-text">{{ t('news_add_field1.activitiesJX.item24') }}</text>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogChinaUnionPayJX')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogChinaUnionPayJX')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="closeDialog('dialogChinaUnionPayJX')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="closeDialog('dialogChinaUnionPayJX')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -78,8 +84,10 @@
                     </view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogDealResult')">{{ t('Btn.Cancel') }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toApply23')">{{ t('Btn.Confirm')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogDealResult')">{{
+                        t('Btn.Cancel') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary" @click="handleConfirm('toApply23')">{{
+                        t('Btn.Confirm')
                         }}</button>
                 </view>
             </view>
@@ -103,8 +111,10 @@
                     </view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogDealResultJx')">{{ t('Btn.Cancel') }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toApply23Jx')">{{ t('Btn.Confirm')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogDealResultJx')">{{
+                        t('Btn.Cancel') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary" @click="handleConfirm('toApply23Jx')">{{
+                        t('Btn.Confirm')
                         }}</button>
                 </view>
             </view>
@@ -128,10 +138,12 @@
                     </view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogDealResultJxVip')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogDealResultJxVip')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toApply23JxVip')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('toApply23JxVip')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -175,9 +187,11 @@
                     <view class="form-tip">{{ t('news_add_field1.activitiesJYDS.item4_4') }}</view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogDealResultCpt')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogDealResultCpt')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toApplyCpt')">{{ t('Btn.Confirm')
+                    <button hover-class="" class="btn-confirm" type="primary" @click="handleConfirm('toApplyCpt')">{{
+                        t('Btn.Confirm')
                         }}</button>
                 </view>
             </view>
@@ -201,10 +215,12 @@
                     </view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogDealResultJxJYB')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogDealResultJxJYB')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toApply24JYBVip')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('toApply24JYBVip')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -228,10 +244,12 @@
                     </view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogDealResultNoWorries')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogDealResultNoWorries')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('toApplyNoWorries')">{{
-                        t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('toApplyNoWorries')">{{
+                            t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -248,9 +266,11 @@
                     <text class="message-text">{{ t('news_add_field1.activitiesNoWorries.item7') }}</text>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogNoWorries')">{{ t('Btn.Cancel') }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('realizationNoWorries')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogNoWorries')">{{ t('Btn.Cancel')
+                        }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('realizationNoWorries')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -267,8 +287,9 @@
                     <text class="message-text">{{ t('news_add_field1.activitiesNoWorries.item6') }}</text>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-confirm" type="primary" @click="closeDialog('dialogNoWorriesApply')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="closeDialog('dialogNoWorriesApply')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -290,8 +311,10 @@
                     </view>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogNewTask')">{{ t('Home.msg.item3') }}</button>
-                    <button class="btn-confirm" type="primary" @click="closeDialog('dialogNewTask')">{{ t('Btn.Confirm')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogNewTask')">{{
+                        t('Home.msg.item3') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary" @click="closeDialog('dialogNewTask')">{{
+                        t('Btn.Confirm')
                         }}</button>
                 </view>
             </view>
@@ -309,7 +332,8 @@
                     <DrawLotteryRaffle :curLuckyDrawTimesF="luckyDrawsNumber" @draw-complete="handleDrawComplete" />
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogNewTaskDraw')">{{ t('Home.msg.item3')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogNewTaskDraw')">{{
+                        t('Home.msg.item3')
                         }}</button>
                 </view>
             </view>
@@ -339,9 +363,11 @@
                     </view>
                 </scroll-view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogSurplusActivity')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogSurplusActivity')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('confirmSurplusActivity')"
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('confirmSurplusActivity')"
                         :disabled="!selectedAccount || !selectedSurplusValue">{{ t('Btn.Confirm') }}</button>
                 </view>
             </view>
@@ -360,10 +386,12 @@
                         t('MonthlyActivities.item8') }}</text>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('dialogSurplusActivity1')">{{ t('Btn.Cancel')
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('dialogSurplusActivity1')">{{
+                        t('Btn.Cancel')
                         }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('confirmSurplusActivity1')">{{
-                        t('Btn.Confirm') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('confirmSurplusActivity1')">{{
+                            t('Btn.Confirm') }}</button>
                 </view>
             </view>
         </uni-popup>
@@ -391,10 +419,11 @@
                     </view>
                 </view>
                 <view class="popup-footer">
-                    <button class="btn-cancel" @click="closeDialog('openCalculatorFlag')">{{
+                    <button hover-class="" class="btn-cancel" @click="closeDialog('openCalculatorFlag')">{{
                         t('news_add_field1.NewYear24.item8_2') }}</button>
-                    <button class="btn-confirm" type="primary" @click="handleConfirm('calculateIncome')">{{
-                        t('news_add_field1.NewYear24.item8_1') }}</button>
+                    <button hover-class="" class="btn-confirm" type="primary"
+                        @click="handleConfirm('calculateIncome')">{{
+                            t('news_add_field1.NewYear24.item8_1') }}</button>
                 </view>
             </view>
         </uni-popup>

+ 2 - 1
pages/activities/components/DrawLotteryRaffle.vue

@@ -11,7 +11,8 @@
             </view>
         </view>
 
-        <button class="draw-btn" type="primary" :disabled="curLuckyDrawTimesF <= 0 || drawing" @click="startDraw">
+        <button hover-class="" class="draw-btn" type="primary" :disabled="curLuckyDrawTimesF <= 0 || drawing"
+            @click="startDraw">
             {{ drawing ? t('common.drawing') : t('wallet.item66') }}
         </button>
 

+ 7 - 4
pages/activities/components/GiftApplicationPopup.vue

@@ -2,7 +2,8 @@
   <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false"
     :title="title">
     <view class="popup-content">
-      <uni-forms ref="formRef" :model="giftForm" :rules="rules" label-position="top" validate-trigger="submit" :labelWidth="200">
+      <uni-forms ref="formRef" :model="giftForm" :rules="rules" label-position="top" validate-trigger="submit"
+        :labelWidth="200">
         <view class="form-row">
           <view class="form-col-full">
             <uni-forms-item :label="t('UtaskList.item18')" name="giveCode">
@@ -35,8 +36,10 @@
       </uni-forms>
     </view>
     <template #footer>
-      <button class="btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1" @click="cancel">{{ t('Btn.Cancel') }}</button>
-      <button class="btn btn-danger btn-sm waves-effect waves-light" @click="submit" :loading="submitting">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" class="btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1" @click="cancel">{{
+        t('Btn.Cancel') }}</button>
+      <button hover-class="" class="btn btn-danger btn-sm waves-effect waves-light" @click="submit"
+        :loading="submitting">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>
@@ -116,7 +119,7 @@ const rules = computed(() => ({
   }
 }));
 watch(locale, () => {
-    formRef.value?.clearValidate()
+  formRef.value?.clearValidate()
 })
 
 

+ 14 - 13
pages/activities/content.vue

@@ -20,7 +20,7 @@
                     !ActivitySingleNewYear24">
                     <view class="img">
                         <cwg-image :lazy="false"
-                            :src="imgUrl + (singleData.activityImage ? singleData.activityImage : singleData.coverImage)" >
+                            :src="imgUrl + (singleData.activityImage ? singleData.activityImage : singleData.coverImage)">
                         </cwg-image>
                     </view>
                     <cwg-html :richHtml="singleData.content" />
@@ -313,11 +313,11 @@
                                 <view class="lis" style="margin-left: 15px;margin-top: 20px;">
                                     <h4><span v-t="'news_add_field1.activitiesJX.item8'" />{{
                                         timeJx.applicationStartTime
-                                        }}
+                                    }}
                                         - {{ timeJx.applicationEndTime }}</h4>
                                     <h4><span v-t="'news_add_field1.activitiesJX.item9'" />{{
                                         timeJx.activityStartTime
-                                        }} -
+                                    }} -
                                         {{ timeJx.activityEndTime }}</h4>
                                 </view>
                             </view>
@@ -450,7 +450,7 @@
                                 <view class="lis" style="margin-left: 15px;margin-top: 20px;">
                                     <h4><span v-t="'news_add_field1.activitiesNZ.item8'" />{{
                                         timeJx.applicationStartTime
-                                        }}
+                                    }}
                                         - {{ timeJx.applicationEndTime }}</h4>
                                 </view>
                             </view>
@@ -984,13 +984,13 @@
                                                 <view>
                                                     <span v-t="'news_add_field1.NewYear24.item10BG9'" v-if="!isZh" />
                                                     <span v-if="item.interestRateExtraDay == 1">{{ isCountDown1
-                                                        }}</span>
+                                                    }}</span>
                                                     <span v-if="item.interestRateExtraDay == 3">{{ isCountDown3
-                                                        }}</span>
+                                                    }}</span>
                                                     <span v-if="item.interestRateExtraDay == 5">{{ isCountDown5
-                                                        }}</span>
+                                                    }}</span>
                                                     <span v-if="item.interestRateExtraDay == 7">{{ isCountDown7
-                                                        }}</span>
+                                                    }}</span>
                                                     <span v-t="'news_add_field1.NewYear24.item10BG9'" v-if="!isZh" />
                                                 </view>
                                                 <view v-t="'news_add_field1.NewYear24.item10BG10'" />
@@ -1004,13 +1004,13 @@
                                             </view>
                                         </view>
                                         <view class="btns" v-if="quanStatus(item) == 1">
-                                            <button v-t="'news_add_field1.NewYear24.item13'" />
+                                            <button hover-class="" v-t="'news_add_field1.NewYear24.item13'" />
                                         </view>
                                         <view class="btns" v-if="quanStatus(item) == 2">
-                                            <button v-t="'news_add_field1.NewYear24.item13'" v-if="item.use == 0"
-                                                @click="ActivityNewYear24Receive(item.id)" />
-                                            <button v-t="'news_add_field1.NewYear24.item14'" v-if="item.use == 1"
-                                                class="use" />
+                                            <button hover-class="" v-t="'news_add_field1.NewYear24.item13'"
+                                                v-if="item.use == 0" @click="ActivityNewYear24Receive(item.id)" />
+                                            <button hover-class="" v-t="'news_add_field1.NewYear24.item14'"
+                                                v-if="item.use == 1" class="use" />
                                         </view>
                                         <view class="quan_guoqi" v-if="item.use == 0">
                                             <span v-if="!isZh">2025-4-1
@@ -1487,6 +1487,7 @@ onUnmounted(() => {
     .dollar-detail-body {
         word-break: break-word;
         font-size: 14px;
+
         :deep(p) {
             margin: 0 0 6px;
         }

+ 12 - 12
pages/activities/detail.vue

@@ -301,11 +301,11 @@
                                 <view class="lis" style="margin-left: 15px;margin-top: 20px;">
                                     <h4><span v-t="'news_add_field1.activitiesJX.item8'" />{{
                                         timeJx.applicationStartTime
-                                    }}
+                                        }}
                                         - {{ timeJx.applicationEndTime }}</h4>
                                     <h4><span v-t="'news_add_field1.activitiesJX.item9'" />{{
                                         timeJx.activityStartTime
-                                    }} -
+                                        }} -
                                         {{ timeJx.activityEndTime }}</h4>
                                 </view>
                             </view>
@@ -438,7 +438,7 @@
                                 <view class="lis" style="margin-left: 15px;margin-top: 20px;">
                                     <h4><span v-t="'news_add_field1.activitiesNZ.item8'" />{{
                                         timeJx.applicationStartTime
-                                    }}
+                                        }}
                                         - {{ timeJx.applicationEndTime }}</h4>
                                 </view>
                             </view>
@@ -972,13 +972,13 @@
                                                 <view>
                                                     <span v-t="'news_add_field1.NewYear24.item10BG9'" v-if="!isZh" />
                                                     <span v-if="item.interestRateExtraDay == 1">{{ isCountDown1
-                                                    }}</span>
+                                                        }}</span>
                                                     <span v-if="item.interestRateExtraDay == 3">{{ isCountDown3
-                                                    }}</span>
+                                                        }}</span>
                                                     <span v-if="item.interestRateExtraDay == 5">{{ isCountDown5
-                                                    }}</span>
+                                                        }}</span>
                                                     <span v-if="item.interestRateExtraDay == 7">{{ isCountDown7
-                                                    }}</span>
+                                                        }}</span>
                                                     <span v-t="'news_add_field1.NewYear24.item10BG9'" v-if="!isZh" />
                                                 </view>
                                                 <view v-t="'news_add_field1.NewYear24.item10BG10'" />
@@ -992,13 +992,13 @@
                                             </view>
                                         </view>
                                         <view class="btns" v-if="quanStatus(item) == 1">
-                                            <button v-t="'news_add_field1.NewYear24.item13'" />
+                                            <button hover-class="" v-t="'news_add_field1.NewYear24.item13'" />
                                         </view>
                                         <view class="btns" v-if="quanStatus(item) == 2">
-                                            <button v-t="'news_add_field1.NewYear24.item13'" v-if="item.use == 0"
-                                                @click="ActivityNewYear24Receive(item.id)" />
-                                            <button v-t="'news_add_field1.NewYear24.item14'" v-if="item.use == 1"
-                                                class="use" />
+                                            <button hover-class="" v-t="'news_add_field1.NewYear24.item13'"
+                                                v-if="item.use == 0" @click="ActivityNewYear24Receive(item.id)" />
+                                            <button hover-class="" v-t="'news_add_field1.NewYear24.item14'"
+                                                v-if="item.use == 1" class="use" />
                                         </view>
                                         <view class="quan_guoqi" v-if="item.use == 0">
                                             <span v-if="!isZh">2025-4-1

+ 6 - 4
pages/activities/dollar-list.vue

@@ -76,10 +76,12 @@
                     :placeholder="t('UtaskList.item19')" @change="handleGiftChange" />
             </view>
             <template #footer>
-                <button class="btn btn-outline-secondary" @click="closeClaimDialog">{{ t("Btn.Cancel") }}</button>
+                <button hover-class="" class="btn btn-outline-secondary" @click="closeClaimDialog">{{ t("Btn.Cancel")
+                    }}</button>
 
-                <button class="btn btn-dark waves-effect waves-light btn-primary" :loading="applySubmitting"
-                    :disabled="selectedRuleId === null || selectedRuleId === ''" @click="confirmClaimReward">{{
+                <button hover-class="" class="btn btn-dark waves-effect waves-light btn-primary"
+                    :loading="applySubmitting" :disabled="selectedRuleId === null || selectedRuleId === ''"
+                    @click="confirmClaimReward">{{
                         t("Btn.Confirm") }}</button>
             </template>
         </cwg-popup>
@@ -118,7 +120,7 @@
                 </view>
             </view>
             <template #footer>
-                <button class="btn btn-dark waves-effect waves-light" @click="closeApplyRecordDialog">{{
+                <button hover-class="" class="btn btn-dark waves-effect waves-light" @click="closeApplyRecordDialog">{{
                     t('Btn.Confirm') }}</button>
             </template>
         </cwg-popup>

+ 43 - 37
pages/activities/index.vue

@@ -336,8 +336,8 @@
                     v-html="t('news_add_field1.activities.item11')"></view>
             </view>
             <template #footer>
-                <button type="primary" @click="toTransformActive">{{ t('Btn.Confirm') }}</button>
-                <button @click="dialogChinaUnionPay = false">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toTransformActive">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="dialogChinaUnionPay = false">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
         <!-- 23匠鑫活动过期弹出框 -->
@@ -347,8 +347,9 @@
                     v-html="t('news_add_field1.activitiesJX.item24')"></view>
             </view>
             <template #footer>
-                <button type="primary" @click="dialogChinaUnionPayJX = false">{{ t('Btn.Confirm') }}</button>
-                <button @click="dialogChinaUnionPayJX = false">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="dialogChinaUnionPayJX = false">{{ t('Btn.Confirm')
+                    }}</button>
+                <button hover-class="" @click="dialogChinaUnionPayJX = false">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -359,8 +360,8 @@
                     v-html="t('news_add_field1.activities.item12')"></view>
             </view>
             <template #footer>
-                <button type="primary" @click="toRealizationActive">{{ t('Btn.Confirm') }}</button>
-                <button @click="dialogChinaUnionPay1 = false">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toRealizationActive">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="dialogChinaUnionPay1 = false">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -383,8 +384,8 @@
                 </view>
             </view>
             <template #footer>
-                <button type="primary" @click="toApply23">{{ t('Btn.Confirm') }}</button>
-                <button @click="toApply23Cancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toApply23">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="toApply23Cancel">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -407,8 +408,8 @@
                 </view>
             </view>
             <template #footer>
-                <button type="primary" @click="toApply23Jx">{{ t('Btn.Confirm') }}</button>
-                <button @click="toApply23JxCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toApply23Jx">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="toApply23JxCancel">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -431,8 +432,8 @@
                 </view>
             </view>
             <template #footer>
-                <button type="primary" @click="toApply23JxVip">{{ t('Btn.Confirm') }}</button>
-                <button @click="toApply23JxCancelVip">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toApply23JxVip">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="toApply23JxCancelVip">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -472,8 +473,8 @@
                 </view>
             </view>
             <template #footer>
-                <button type="primary" @click="toApplyCpt">{{ t('Btn.Confirm') }}</button>
-                <button @click="toApplyCptCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toApplyCpt">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="toApplyCptCancel">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -490,8 +491,8 @@
 
             </view>
             <template #footer>
-                <button type="primary" @click="dialogNewTask = false">{{ t('Btn.Confirm') }}</button>
-                <button @click="dialogNewTask = false">{{ t('Home.msg.item3') }}</button>
+                <button hover-class="" type="primary" @click="dialogNewTask = false">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="dialogNewTask = false">{{ t('Home.msg.item3') }}</button>
             </template>
         </cwg-popup>
 
@@ -503,7 +504,7 @@
 
             </view>
             <template #footer>
-                <button @click="closedialogNewTaskDraw">{{ t('Home.msg.item3') }}</button>
+                <button hover-class="" @click="closedialogNewTaskDraw">{{ t('Home.msg.item3') }}</button>
             </template>
         </cwg-popup>
 
@@ -526,8 +527,8 @@
                 </view>
             </view>
             <template #footer>
-                <button type="primary" @click="toApply24JYBVip">{{ t('Btn.Confirm') }}</button>
-                <button @click="toApply24JYBCancelVip">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="toApply24JYBVip">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="toApply24JYBCancelVip">{{ t('Btn.Cancel') }}</button>
             </template>
         </cwg-popup>
 
@@ -550,10 +551,11 @@
                 </view>
             </view>
             <template #footer>
-                <button type="primary" @click="toApplyNoWorries">{{
+                <button hover-class="" type="primary" @click="toApplyNoWorries">{{
                     t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
-                <button @click="toApplyNoWorriesCancel">{{ t('news_add_field1.activitiesNoWorries.item6_2')
-                }}</button>
+                <button hover-class="" @click="toApplyNoWorriesCancel">{{
+                    t('news_add_field1.activitiesNoWorries.item6_2')
+                    }}</button>
             </template>
         </cwg-popup>
 
@@ -565,9 +567,10 @@
 
             </view>
             <template #footer>
-                <button type="primary" @click="realizationNoWorries">{{
+                <button hover-class="" type="primary" @click="realizationNoWorries">{{
                     t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
-                <button @click="dialogNoWorries = false">{{ t('news_add_field1.activitiesNoWorries.item6_2')
+                <button hover-class="" @click="dialogNoWorries = false">{{
+                    t('news_add_field1.activitiesNoWorries.item6_2')
                     }}</button>
             </template>
         </cwg-popup>
@@ -580,10 +583,11 @@
 
             </view>
             <template #footer>
-                <button type="primary" @click="dialogNoWorriesApply = false">{{
+                <button hover-class="" type="primary" @click="dialogNoWorriesApply = false">{{
                     t('news_add_field1.activitiesNoWorries.item6_1') }}</button>
-                <button @click="dialogNoWorriesApply = false">{{ t('news_add_field1.activitiesNoWorries.item6_2')
-                }}</button>
+                <button hover-class="" @click="dialogNoWorriesApply = false">{{
+                    t('news_add_field1.activitiesNoWorries.item6_2')
+                    }}</button>
             </template>
         </cwg-popup>
 
@@ -607,9 +611,10 @@
 
             </view>
             <template #footer>
-                <button type="primary" @click="calculateIncome">{{ t('news_add_field1.NewYear24.item8_1')
+                <button hover-class="" type="primary" @click="calculateIncome">{{ t('news_add_field1.NewYear24.item8_1')
+                }}</button>
+                <button hover-class="" @click="openCalculatorFlag = false">{{ t('news_add_field1.NewYear24.item8_2')
                     }}</button>
-                <button @click="openCalculatorFlag = false">{{ t('news_add_field1.NewYear24.item8_2') }}</button>
             </template>
         </cwg-popup>
 
@@ -658,8 +663,9 @@
                 </view>
             </view>
             <template #footer>
-                <button @click="closeAdd">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="activityApply" :disabled="!information.login || !information.agree">
+                <button hover-class="" @click="closeAdd">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="activityApply"
+                    :disabled="!information.login || !information.agree">
                     {{ t('Btn.Confirm') }}
                 </button>
             </template>
@@ -706,8 +712,8 @@
                 </view>
             </view>
             <template #footer>
-                <button @click="closeAdd">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="activityApply" :disabled="!information.login">
+                <button hover-class="" @click="closeAdd">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="activityApply" :disabled="!information.login">
                     {{ t('Btn.Confirm') }}
                 </button>
             </template>
@@ -734,8 +740,8 @@
                 </view>
             </view>
             <template #footer>
-                <button @click="closeSurplusActivityDialog">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="confirmSurplusActivity"
+                <button hover-class="" @click="closeSurplusActivityDialog">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="confirmSurplusActivity"
                     :disabled="!selectedSurplusActivity || !valueInfo">
                     {{ t('Btn.Confirm') }}
                 </button>
@@ -750,8 +756,8 @@
                 </view>
             </view>
             <template #footer>
-                <button @click="closeSurplusActivityDialog1">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="confirmSurplusActivity1">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="closeSurplusActivityDialog1">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="confirmSurplusActivity1">{{ t('Btn.Confirm') }}</button>
             </template>
         </cwg-popup>
         <cwg-confirm-popup v-if="showPage" />

+ 2 - 2
pages/activities/monthly-list.vue

@@ -79,13 +79,13 @@
                             </view>
                             <view class="data-card btn-card" v-show="shouldShowCard(item, item)">
                                 <!-- 取消按钮 - status为1时显示 -->
-                                <button v-if="item.status === 1"
+                                <button hover-class="" v-if="item.status === 1"
                                     class="btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1"
                                     @click="cancelTask(item.id)" :loading="loadingStates[item.id] === 'cancel'">
                                     {{ t("Btn.Cancel") }}
                                 </button>
                                 <!-- 礼物申请按钮 - status为2且giveStatus为1时显示 -->
-                                <button class="btn btn-danger btn-sm waves-effect waves-light"
+                                <button hover-class="" class="btn btn-danger btn-sm waves-effect waves-light"
                                     v-if="item.status === 2 && item.giveStatus === 1 && lang1 && !isGiftApplyPastDeadline(item)"
                                     @click="applyGift(item.id)" :loading="loadingStates[item.id] === 'applyGift'">
                                     {{ t("Btn.Application") }}

+ 4 - 2
pages/activities/surplus-list.vue

@@ -83,11 +83,13 @@
                                 </view>
                             </view>
                             <view class="data-card" v-show="shouldShowCard(item, item)">
-                                <button class="btn btn-primary waves-effect waves-light"  v-if="item.status === 1 && item.revokeCredit === 2" type="primary" size="small"
+                                <button hover-class="" class="btn btn-primary waves-effect waves-light"
+                                    v-if="item.status === 1 && item.revokeCredit === 2" type="primary" size="small"
                                     @click="completeTask(item.id)" :loading="loadingStates[item.id] === 'complete'">
                                     {{ t("surplusList.item7") }}
                                 </button>
-                                <button class="btn btn-dark waves-effect waves-light btn-outline-dark1"  v-if="item.status === 1" @click="cancelTask(item.id)"
+                                <button hover-class="" class="btn btn-dark waves-effect waves-light btn-outline-dark1"
+                                    v-if="item.status === 1" @click="cancelTask(item.id)"
                                     :loading="loadingStates[item.id] === 'cancel'">
                                     {{ t("Btn.Cancel") }}
                                 </button>

+ 5 - 4
pages/customer/account-select.vue

@@ -33,16 +33,16 @@
                             <view class="fs-5 list-inline text-dark">
                                 <view class="d-flex gap-2 align-items-center py-1"> <i
                                         class="fa-regular fa-circle-check text-success"></i> {{ t('vu.item10') }}: {{
-                                    account.minSpread }}
+                                            account.minSpread }}
                                 </view>
                                 <view class="d-flex gap-2 align-items-center py-1"> <i
                                         class="fa-regular fa-circle-check text-success"></i> {{ t('vu.item11') }}: {{
-                                    account.maxLeverage }}
+                                            account.maxLeverage }}
                                 </view>
                             </view>
                         </view>
                         <view class="card-footer p-4 pt-0 border-0">
-                            <button @click="handleContinue(account.id)"
+                            <button hover-class="" @click="handleContinue(account.id)"
                                 class="btn btn-danger waves-effect waves-light w-100"><i class="fi fi-rs-check"></i>
                                 {{ t('Btn.item13') }}</button>
                         </view>
@@ -148,7 +148,8 @@ onMounted(() => {
     background-size: cover;
     background-position: center bottom;
 }
-.tips{
+
+.tips {
     line-height: px2rpx(24);
 }
 </style>

+ 13 - 12
pages/customer/components/AccountCard.vue

@@ -8,7 +8,7 @@
                     </view>
                     <template #content>
                         <text>{{ t("Tips.item1")
-                            }}<text style="color: red">{{ account.markDelTime }}</text>{{ t("Tips.item2") }}</text>
+                        }}<text style="color: red">{{ account.markDelTime }}</text>{{ t("Tips.item2") }}</text>
                     </template>
                 </uni-tooltip>
                 <template v-if="account.del != 1">
@@ -38,16 +38,17 @@
             </view>
             <view class="card-body p-3 pt-0">
                 <view class="text-left mb-3">
-                    <h5 class="fw-bold mb-3  cursor-pointer" :data-tooltip="`${t('vu.tooltip.t2')}-${account.accountNumber}`" data-placement="top"
+                    <h5 class="fw-bold mb-3  cursor-pointer"
+                        :data-tooltip="`${t('vu.tooltip.t2')}-${account.accountNumber}`" data-placement="top"
                         @click="copy(account.accountNumber)"># {{
                             account.accountNumber }}</h5>
-                    <h4 class="mb-2 cursor-pointer" :data-tooltip="`${t('vu.tooltip.t2')}-${account.fwq}`" :data-placement="top"
-                        @click="copy(account.fwq)">{{ account.fwq }}</h4>
+                    <h4 class="mb-2 cursor-pointer" :data-tooltip="`${t('vu.tooltip.t2')}-${account.fwq}`"
+                        :data-placement="top" @click="copy(account.fwq)">{{ account.fwq }}</h4>
                     <template v-for="(label, index) in account.labels" :key="index">
                         <text v-if="label" class="badge text-danger1 bg-danger-subtle mx-1 mb-1">{{ label }}</text>
                     </template>
                     <h1 class="mt-2">{{ account.balanceWithSymbol || '0.00' }}</h1>
-                    <!-- <button type="submit" value="Submit" class="btn btn-secondary btn-sm w-75 waves-effect waves-light"
+                    <!-- <button hover-class="" type="submit" value="Submit" class="btn btn-secondary btn-sm w-75 waves-effect waves-light"
                         @click="handleAction('trade')">
                         <view class="d-flex align-items-center justify-content-center gap-1"><cwg-icon name="crm-trade"
                                 :size="16" color="#fff" />
@@ -90,8 +91,8 @@
                         </view>
                         <template v-if="!noCtrl">
                             <view class="d-flex flex-wrap gap-2" v-if="isReal">
-                                <button v-for="btn in actionButtons" :key="btn.key" type="submit" value="Submit"
-                                    class="btn btn-dark btn-sm waves-effect waves-light"
+                                <button hover-class="" v-for="btn in actionButtons" :key="btn.key" type="submit"
+                                    value="Submit" class="btn btn-dark btn-sm waves-effect waves-light"
                                     :class="{ 'disabled': btn.disabled, 'btn-outline-dark1': btn.key !== 'deposit' }"
                                     @click="handleAction(btn.action)">
                                     <view class="d-flex align-items-center justify-content-center gap-1">
@@ -339,12 +340,12 @@ onBeforeUnmount(() => {
 <style scoped lang="scss">
 @import '@/uni.scss';
 
-.btn-group{
-  @media screen and (max-width: 991px) {
-    :deep(.cwg-dropdown-menu-container) {
-      right: px2rpx(0) !important;
+.btn-group {
+    @media screen and (max-width: 991px) {
+        :deep(.cwg-dropdown-menu-container) {
+            right: px2rpx(0) !important;
+        }
     }
-  }
 }
 
 .cwg-close {

+ 1 - 1
pages/customer/components/AccountCardDesktop.vue

@@ -1,7 +1,7 @@
 <template>
     <view class="account-card">
         <!-- 折叠/展开按钮 -->
-        <button class="collapse-btn" @click="toggleExpand">
+        <button hover-class="" class="collapse-btn" @click="toggleExpand">
             <cwg-icon name="chevron-right" :size="20" color="#6c8595"
                 :class="['chevron-icon', { expanded: isExpanded }]" />
         </button>

+ 5 - 4
pages/customer/components/CheckPopup.vue

@@ -1,5 +1,6 @@
 <template>
-  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false" @close="close">
+  <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false"
+    @close="close">
     <view class="popup-content">
       <view class="icon">
         <cwg-icon name="loading" :size="64" color="#1e2a3a" />
@@ -13,7 +14,7 @@
       </view>
       <view class="GoPay" v-if="goPayLink">
         <view class="GoPay-btn">
-          <button type="primary" @click="GoPayBtn">{{ t('Label.item3') }}</button>
+          <button hover-class="" type="primary" @click="GoPayBtn">{{ t('Label.item3') }}</button>
         </view>
         <view class="GoPay-con">{{ t('Label.item4') }}</view>
         <view class="GoPay-copy">
@@ -25,8 +26,8 @@
       </view>
     </view>
     <template #footer>
-      <button @click="close">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 2 - 2
pages/customer/components/ChinaUnionPayPopup.vue

@@ -4,8 +4,8 @@
       <view class="des1">{{ t('news_add_field1.deposit.item64') }}</view>
     </view>
     <template #footer>
-      <button @click="close">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 2 - 2
pages/customer/components/Clause20Popup.vue

@@ -109,8 +109,8 @@
             </scroll-view>
         </view>
         <template #footer>
-            <button @click="close">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 2 - 4
pages/customer/components/ClauseNZPopup.vue

@@ -30,8 +30,8 @@
       </scroll-view>
     </view>
     <template #footer>
-      <button @click="close">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>
@@ -62,6 +62,4 @@ const close = () => {
 
 <style lang="scss" scoped>
 @import "@/uni.scss";
-
-
 </style>

+ 2 - 2
pages/customer/components/ClauseNZTwoPopup.vue

@@ -29,8 +29,8 @@
       </scroll-view>
     </view>
     <template #footer>
-      <button @click="close">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 2 - 2
pages/customer/components/ClauseNewListPopup.vue

@@ -7,8 +7,8 @@
       </scroll-view>
     </view>
     <template #footer>
-      <button @click="close">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 2 - 2
pages/customer/components/ClausePopup.vue

@@ -90,8 +90,8 @@
             </scroll-view>
         </view>
         <template #footer>
-            <button @click="close">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 2 - 2
pages/customer/components/DealResultPopup.vue

@@ -32,8 +32,8 @@
       </uni-forms>
     </view>
     <template #footer>
-      <button @click="cancel">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="cancel">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 4 - 4
pages/customer/components/DepositCheckConfirmPopup.vue

@@ -1,6 +1,6 @@
 <template>
   <cwg-popup v-model:visible="visible" type="center" :mask-click="false" :showFooters="true" :showClose="false"
-    :title="t('Home.page_customer.item2')" @close="cancel" >
+    :title="t('Home.page_customer.item2')" @close="cancel">
     <view class="popup-content">
       <view class="info-section">
         <cwg-label-line-value :label="t('Custom.Deposit.Title1')" :value="loginDoc" v-if="loginDoc" />
@@ -155,8 +155,8 @@
       </view>
     </view>
     <template #footer>
-      <button @click="cancel">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="cancel">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>
@@ -213,7 +213,7 @@ const rules = computed(() => ({
 
 const formRef = ref(null);
 watch(locale, () => {
-    formRef.value?.clearValidate()
+  formRef.value?.clearValidate()
 })
 
 const cancel = () => {

+ 1 - 1
pages/customer/components/KycPopup.vue

@@ -8,7 +8,7 @@
             <QrCode :text="qrText" />
         </view>
         <template #footer>
-            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 1 - 1
pages/customer/components/NewYear24Popup.vue

@@ -9,7 +9,7 @@
             </view>
         </view>
         <template #footer>
-            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 218 - 215
pages/customer/components/PaymentMethodsList.vue

@@ -1,6 +1,7 @@
 <template>
   <view class="row">
-    <view class="col-lg-3 col-sm-12 cursor-pointer mb-2 " :data-tooltip="props.title" v-for="item in list" :key="item.id" :class="{ disabled: item.disabled }" @click="handleClick(item)">
+    <view class="col-lg-3 col-sm-12 cursor-pointer mb-2 " :data-tooltip="props.title" v-for="item in list"
+      :key="item.id" :class="{ disabled: item.disabled }" @click="handleClick(item)">
       <view class="card hover">
         <view class="card-header d-flex justify-content-between align-items-center">
           <h4 class="card-title mb-0">{{ item.name }}</h4>
@@ -35,14 +36,14 @@
             <p class="text-dark fw-semibold mt-1 mb-0">
               <text v-if="item.feeType == 1">{{ item.free != null ? item.free + '%' : '-' }}</text>
               <text v-else-if="item.feeType == 2">${{ item.feeAmount != null ? item.feeAmount : '0'
-                }}</text>
+              }}</text>
               <text v-else>{{ item.free != null ? item.free + '%' : '-' }}</text>
             </p>
           </view>
           <view class="mb-3"> <span class="mb-1" v-t="'vu.item8'" />
             <p class="text-dark fw-semibold mt-1 mb-0">{{ item.minAmount }}-{{ item.maxAmount }} {{ item.currency }}</p>
           </view>
-<!--          <button @click="handleClick(item)" class="btn btn-dark w-100 waves-effect waves-light"><i class="fi fi-rs-check"></i> <text v-t="'Btn.item13'" /></button>-->
+          <!--          <button hover-class="" @click="handleClick(item)" class="btn btn-dark w-100 waves-effect waves-light"><i class="fi fi-rs-check"></i> <text v-t="'Btn.item13'" /></button>-->
         </view>
       </view>
     </view>
@@ -100,269 +101,271 @@
 </template>
 
 <script setup>
-  import { defineProps, defineEmits } from 'vue'
-  import Config from '@/config/index'
-  const { Code, Host05, Host80 } = Config
-  const imgUrl = Host05
-  // 定义 props,接收支付方式列表
-  const props = defineProps({
-    list: {
-      type: Array,
-      default: () => []
-    },
-    title: {
-      type: String,
-      default: ''
-    }
-  })
+import { defineProps, defineEmits } from 'vue'
+import Config from '@/config/index'
+const { Code, Host05, Host80 } = Config
+const imgUrl = Host05
+// 定义 props,接收支付方式列表
+const props = defineProps({
+  list: {
+    type: Array,
+    default: () => []
+  },
+  title: {
+    type: String,
+    default: ''
+  }
+})
 
-  // 定义事件,点击卡片时触发
-  const emit = defineEmits(['select'])
+// 定义事件,点击卡片时触发
+const emit = defineEmits(['select'])
 
-  const handleClick = (item) => {
-    if (!item.disabled) {
-      emit('select', item)
-    }
+const handleClick = (item) => {
+  if (!item.disabled) {
+    emit('select', item)
   }
+}
 </script>
 
 <style lang="scss" scoped>
-  @import "@/uni.scss";
-
-  .hover:hover{
-    border-color: var(--bs-secondary);
-  }
-  .img-bg{
-    padding: 0 px2rpx(10);
-    border-radius: px2rpx(10);
-    box-sizing: border-box;
-    background-color: rgba(243, 244, 246, 0.6);
-  }
-  .row {
-    display: flex;
-    flex-wrap: wrap;
-    align-items: stretch;
-  }
-
-  .card {
-    height: 100%;
-    display: flex;
-    flex-direction: column;
-  }
-
-  .card-body {
-    flex: 1;
-    display: flex;
-    flex-direction: column;
-  }
-
-  .square-box {
-    height: px2rpx(64) !important;
-  }
-
-  .square-img {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
+@import "@/uni.scss";
+
+.hover:hover {
+  border-color: var(--bs-secondary);
+}
+
+.img-bg {
+  padding: 0 px2rpx(10);
+  border-radius: px2rpx(10);
+  box-sizing: border-box;
+  background-color: rgba(243, 244, 246, 0.6);
+}
+
+.row {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: stretch;
+}
+
+.card {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+}
+
+.card-body {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+}
+
+.square-box {
+  height: px2rpx(64) !important;
+}
+
+.square-img {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+/* 确保按钮始终在底部 */
+.card-body .btn {
+  margin-top: auto;
+}
+
+/* 可选:让卡片内的所有内容区域高度一致 */
+.card-body>*:not(.btn) {
+  flex-shrink: 0;
+}
+
+.payment-list {
+  display: grid;
+  grid-row-gap: px2rpx(16);
+  grid-column-gap: px2rpx(24);
+  grid-template-columns: repeat(auto-fill, minmax(px2rpx(480), 1fr));
+}
+
+.payment-card {
+  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+  border-radius: px2rpx(12);
+  padding: px2rpx(16);
+  display: flex;
+  align-items: flex-start;
+  border: 1px solid rgba(14, 15, 12, 0.08);
+  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
+  cursor: pointer;
+  box-sizing: border-box;
+  gap: px2rpx(16);
+
+  &:hover {
+    transform: translateY(px2rpx(-2));
+    background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+    box-shadow: 0 px2rpx(8) px2rpx(20) rgba(0, 0, 0, 0.06);
+    border-color: var(--color-primary, #007aff);
   }
 
-  /* 确保按钮始终在底部 */
-  .card-body .btn {
-    margin-top: auto;
+  &.disabled {
+    opacity: 0.5;
+    cursor: not-allowed;
+    filter: grayscale(100%);
   }
 
-  /* 可选:让卡片内的所有内容区域高度一致 */
-  .card-body>*:not(.btn) {
+  .icon-wrapper {
+    width: px2rpx(120);
+    height: px2rpx(120);
     flex-shrink: 0;
-  }
-
-  .payment-list {
-    display: grid;
-    grid-row-gap: px2rpx(16);
-    grid-column-gap: px2rpx(24);
-    grid-template-columns: repeat(auto-fill, minmax(px2rpx(480), 1fr));
-  }
-
-  .payment-card {
-    background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
-    border-radius: px2rpx(12);
-    padding: px2rpx(16);
+    border-radius: px2rpx(8);
+    background-color: var(--color-zinc-50, #f9f9f9);
     display: flex;
-    align-items: flex-start;
-    border: 1px solid rgba(14, 15, 12, 0.08);
-    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
-    cursor: pointer;
-    box-sizing: border-box;
-    gap: px2rpx(16);
-
-    &:hover {
-      transform: translateY(px2rpx(-2));
-      background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
-      box-shadow: 0 px2rpx(8) px2rpx(20) rgba(0, 0, 0, 0.06);
-      border-color: var(--color-primary, #007aff);
-    }
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
 
-    &.disabled {
-      opacity: 0.5;
-      cursor: not-allowed;
-      filter: grayscale(100%);
+    .icon {
+      width: 80%;
     }
+  }
 
-    .icon-wrapper {
-      width: px2rpx(120);
-      height: px2rpx(120);
-      flex-shrink: 0;
-      border-radius: px2rpx(8);
-      background-color: var(--color-zinc-50, #f9f9f9);
+  .content {
+    flex: 1;
+    min-width: 0; // 防止文本溢出
+
+    .header {
+      margin-bottom: px2rpx(12);
       display: flex;
       align-items: center;
-      justify-content: center;
-      overflow: hidden;
-
-      .icon {
-        width: 80%;
+      justify-content: space-between;
+
+      .title {
+        font-size: px2rpx(16);
+        font-weight: 700;
+        color: var(--color-navy-900, #1e2a3a);
+        word-break: break-all;
+        flex: 1;
+        margin-right: px2rpx(12);
       }
-    }
 
-    .content {
-      flex: 1;
-      min-width: 0; // 防止文本溢出
 
-      .header {
-        margin-bottom: px2rpx(12);
+
+    }
+
+    .info-list {
+      .info-item {
         display: flex;
-        align-items: center;
         justify-content: space-between;
+        align-items: center;
+        margin-bottom: px2rpx(8);
+        font-size: px2rpx(13);
+        line-height: 1.4;
+
+        .info-label {
+          color: var(--color-zinc-500, #7f8c8d);
+          margin-right: px2rpx(8);
+          white-space: nowrap;
+        }
 
-        .title {
-          font-size: px2rpx(16);
-          font-weight: 700;
+        .info-value {
           color: var(--color-navy-900, #1e2a3a);
+          font-weight: 600;
+          text-align: right;
           word-break: break-all;
-          flex: 1;
-          margin-right: px2rpx(12);
         }
 
-
-
-      }
-
-      .info-list {
-        .info-item {
-          display: flex;
-          justify-content: space-between;
-          align-items: center;
-          margin-bottom: px2rpx(8);
-          font-size: px2rpx(13);
-          line-height: 1.4;
-
-          .info-label {
-            color: var(--color-zinc-500, #7f8c8d);
-            margin-right: px2rpx(8);
-            white-space: nowrap;
-          }
-
-          .info-value {
-            color: var(--color-navy-900, #1e2a3a);
-            font-weight: 600;
-            text-align: right;
-            word-break: break-all;
-          }
-
-          &:last-child {
-            margin-bottom: 0;
-          }
+        &:last-child {
+          margin-bottom: 0;
         }
       }
     }
   }
+}
 
-  .pay-box {
-    width: px2rpx(60 * 3 + 8 * 2);
-    flex-shrink: 0;
+.pay-box {
+  width: px2rpx(60 * 3 + 8 * 2);
+  flex-shrink: 0;
+  overflow: hidden;
+  margin: px2rpx(12) 0;
+
+  .carousel-box {
+    width: 100%;
     overflow: hidden;
-    margin: px2rpx(12) 0;
+  }
 
-    .carousel-box {
-      width: 100%;
-      overflow: hidden;
-    }
+  .carousel-track {
+    display: flex;
+    gap: px2rpx(8);
+    width: max-content;
+  }
 
-    .carousel-track {
-      display: flex;
-      gap: px2rpx(8);
-      width: max-content;
-    }
+  // 只有超过3个才加动画
+  .carousel-animate {
+    animation: carousel 8s linear infinite;
+  }
 
-    // 只有超过3个才加动画
-    .carousel-animate {
-      animation: carousel 8s linear infinite;
+  @keyframes carousel {
+    0% {
+      transform: translateX(0);
     }
 
-    @keyframes carousel {
-      0% {
-        transform: translateX(0);
-      }
-
-      100% {
-        transform: translateX(-50%);
-      }
+    100% {
+      transform: translateX(-50%);
     }
+  }
 
-    .pay-icon-container {
-      width: px2rpx(60);
-      height: px2rpx(60);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      // background-color: var(--color-zinc-50, #f9f9f9);
-      // border-radius: px2rpx(6);
-      // border: 1px solid var(--color-zinc-100, #f3f4f6);
-      flex-shrink: 0;
-      overflow: hidden;
-    }
+  .pay-icon-container {
+    width: px2rpx(60);
+    height: px2rpx(60);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    // background-color: var(--color-zinc-50, #f9f9f9);
+    // border-radius: px2rpx(6);
+    // border: 1px solid var(--color-zinc-100, #f3f4f6);
+    flex-shrink: 0;
+    overflow: hidden;
+  }
 
-    .pay-icon {
-      width: px2rpx(60);
-      height: px2rpx(60);
-      object-fit: contain;
-    }
+  .pay-icon {
+    width: px2rpx(60);
+    height: px2rpx(60);
+    object-fit: contain;
   }
+}
 
-  /* 移动端适配 */
-  @media screen and (max-width: 768px) {
-    .payment-list {
-      grid-template-columns: 1fr;
-      grid-row-gap: px2rpx(12);
-    }
+/* 移动端适配 */
+@media screen and (max-width: 768px) {
+  .payment-list {
+    grid-template-columns: 1fr;
+    grid-row-gap: px2rpx(12);
+  }
 
-    .payment-card {
-      padding: px2rpx(12);
-      gap: px2rpx(12);
+  .payment-card {
+    padding: px2rpx(12);
+    gap: px2rpx(12);
 
-      .icon-wrapper {
-        width: px2rpx(90);
-        height: px2rpx(90);
-      }
+    .icon-wrapper {
+      width: px2rpx(90);
+      height: px2rpx(90);
+    }
 
-      .content {
-        .header {
-          margin-bottom: px2rpx(8);
+    .content {
+      .header {
+        margin-bottom: px2rpx(8);
 
-          .title {
-            font-size: px2rpx(15);
-          }
+        .title {
+          font-size: px2rpx(15);
         }
+      }
 
-        .info-list {
-          .info-item {
-            margin-bottom: px2rpx(4);
-            font-size: px2rpx(12);
-          }
+      .info-list {
+        .info-item {
+          margin-bottom: px2rpx(4);
+          font-size: px2rpx(12);
         }
       }
     }
   }
+}
 </style>

+ 1 - 1
pages/customer/components/VietnamNoticePopup.vue

@@ -20,7 +20,7 @@
             </view>
         </view>
         <template #footer>
-            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 2 - 2
pages/customer/components/WithdrawCheckConfirmPopup.vue

@@ -28,8 +28,8 @@
       </view>
     </view>
     <template #footer>
-      <button @click="cancel">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="cancel">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="submit">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 13 - 11
pages/customer/components/digitalPayConfirmPopup.vue

@@ -30,19 +30,20 @@
                 <view class="digital-pay-upload-wrap">
                     <view class="digital-pay-upload__label" v-t="'Custom.Deposit.UploadRemittanceVoucher'">
                     </view>
-                    <cwg-file-picker-wrapper v-model="imageUrl" :limit="1" :fileMediatype="'all'"
-                        :imageWidth="142" :imageHeight="142" uploadUrl="/common/upload" />
+                    <cwg-file-picker-wrapper v-model="imageUrl" :limit="1" :fileMediatype="'all'" :imageWidth="142"
+                        :imageHeight="142" uploadUrl="/common/upload" />
                 </view>
                 <view class="digital-pay-upload-wrap mt-3">
                     <view class="digital-pay-upload__label" v-t="'Custom.Deposit.HashCode'">
                     </view>
-                    <uni-easyinput :placeholder="t('Custom.Deposit.HashCodePlaceholder')" v-model.trim="hashCode"></uni-easyinput>
+                    <uni-easyinput :placeholder="t('Custom.Deposit.HashCodePlaceholder')"
+                        v-model.trim="hashCode"></uni-easyinput>
                 </view>
             </view>
         </view>
         <template #footer>
-            <button @click="close">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="handleConfirm">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="handleConfirm">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>
@@ -85,9 +86,9 @@ const handleConfirm = () => {
     close()
 }
 const close = () => {
-  imageUrl.value = '';
-  hashCode.value = ''
-  visible.value = false;
+    imageUrl.value = '';
+    hashCode.value = ''
+    visible.value = false;
 };
 </script>
 
@@ -200,9 +201,10 @@ const close = () => {
 
     .digital-pay-upload-wrap {
         margin-top: 0;
-      :deep(.uni-easyinput__content){
-        height: px2rpx(43);
-      }
+
+        :deep(.uni-easyinput__content) {
+            height: px2rpx(43);
+        }
     }
 
     .digital-pay-upload__label {

+ 5 - 4
pages/customer/create-account.vue

@@ -42,7 +42,8 @@
                                         <h5 class="mb-3" v-t="'Custom.NewAccount.Lever'"></h5>
                                         <uni-forms-item name="leverage">
                                             <cwg-combox :clearable="false" v-model:value="formData.leverage"
-                                                :options="leverageColumns" :placeholder="t('placeholder.choose')" :disabled="formData.platform == 'MT4'"/>
+                                                :options="leverageColumns" :placeholder="t('placeholder.choose')"
+                                                :disabled="formData.platform == 'MT4'" />
                                         </uni-forms-item>
                                     </view>
                                     <view class="col-lg-6">
@@ -76,8 +77,8 @@
                                                 Account</label>
                                         </view>
                                     </view> -->
-                                    <button @click="newAccount" class="btn btn-danger waves-effect waves-light"><i
-                                            class="fi fi-rs-check"></i>
+                                    <button hover-class="" @click="newAccount"
+                                        class="btn btn-danger waves-effect waves-light"><i class="fi fi-rs-check"></i>
                                         {{ t('Btn.Application') }}</button>
                                 </view>
                             </uni-forms>
@@ -760,7 +761,7 @@ onMounted(() => {
 .notice-list {
     // margin: px2rpx(10) 0;
     padding: 0 px2rpx(12) px2rpx(12) 0;
-  color: var(--bs-emphasis-color);
+    color: var(--bs-emphasis-color);
 
     .notice-item {
         font-size: px2rpx(14);

+ 888 - 897
pages/customer/dashboard.vue

@@ -6,8 +6,7 @@
         <view class="">{{ dateWeek }}</view>
       </view>
 
-      <button type="button" class="btn btn-danger btn-shadow waves-effect"
-              @click="createAccount">
+      <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect" @click="createAccount">
         <view class="d-flex align-items-center">
           <cwg-icon name="crm-plus" :size="14" color="#fff" />
           <text v-t="'Custom.Index.AddAccount'" />
@@ -26,9 +25,9 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">{{t('vu.custom.t1')}}</text>
+                    <text class="text-muted text-sm">{{ t('vu.custom.t1') }}</text>
                     <text
-                      :class="['growth-rate', compareData.totalBalanceGrowthRate||0 >= 0 ? 'rate-up' : 'rate-down']">
+                      :class="['growth-rate', compareData.totalBalanceGrowthRate || 0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalBalanceGrowthRate || 0 >= 0 ? '+' : ''
                       }}{{ compareData.totalBalanceGrowthRate || 0 }}%
                     </text>
@@ -46,8 +45,8 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">{{t('vu.custom.t2')}}</text>
-                    <text :class="['growth-rate', compareData.totalEquityGrowthRate ||0>= 0 ? 'rate-up' : 'rate-down']">
+                    <text class="text-muted text-sm">{{ t('vu.custom.t2') }}</text>
+                    <text :class="['growth-rate', compareData.totalEquityGrowthRate || 0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalEquityGrowthRate || 0 >= 0 ? '+' : ''
                       }}{{ compareData.totalEquityGrowthRate || 0 }}%
                     </text>
@@ -65,9 +64,9 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">{{t('vu.custom.t3')}}</text>
+                    <text class="text-muted text-sm">{{ t('vu.custom.t3') }}</text>
                     <text
-                      :class="['growth-rate', compareData.totalDepositAmountGrowthRate ||0 >= 0 ? 'rate-up' : 'rate-down']">
+                      :class="['growth-rate', compareData.totalDepositAmountGrowthRate || 0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalDepositAmountGrowthRate || 0 >= 0 ? '+' : ''
                       }}{{ compareData.totalDepositAmountGrowthRate || 0 }}%
                     </text>
@@ -85,9 +84,9 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">{{t('vu.custom.t4')}}</text>
+                    <text class="text-muted text-sm">{{ t('vu.custom.t4') }}</text>
                     <text
-                      :class="['growth-rate', compareData.totalWithdrawalAmountGrowthRate||0 >= 0 ? 'rate-up' : 'rate-down']">
+                      :class="['growth-rate', compareData.totalWithdrawalAmountGrowthRate || 0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalWithdrawalAmountGrowthRate || 0 >= 0 ? '+' : ''
                       }}{{ compareData.totalWithdrawalAmountGrowthRate || 0 }}%
                     </text>
@@ -112,7 +111,8 @@
                       <text v-if="chartForm.chartType == 3">{{ t('Custom.Index.WithdrawalsStatistical') }}</text>
                       <text v-if="chartForm.chartType == 6">{{ t('Custom.Index.ProfitLoss') }}</text>
                     </view>
-                    <view class="time cursor-pointer" @click="toReload" :data-tooltip="t('vu.tooltip.t7')" data-placement="top">
+                    <view class="time cursor-pointer" @click="toReload" :data-tooltip="t('vu.tooltip.t7')"
+                      data-placement="top">
                       <cwg-icon name="crm-refresh" :size="16" color="#666" />
                       <text class="crm-cursor"> GMT+3 {{ time }}</text>
                     </view>
@@ -130,16 +130,13 @@
                         <text>{{ chartForm.login }}</text>
                       </view>
                       <view class="date">
-                        <uni-datetime-picker
-                          v-model="isDate"
-                          type="daterange"
+                        <uni-datetime-picker v-model="isDate" type="daterange"
                           :placeholder="t('placeholder.Start') + ' - ' + t('placeholder.End')"
-                          @change="getSearchDate"
-                        />
+                          @change="getSearchDate" />
                       </view>
                     </view>
 
-                    <button class="operation" @click="isChart = true">
+                    <button hover-class="" class="operation" @click="isChart = true">
                       <text style="font-size: 14px">{{ t('Custom.Index.Parameter') }}</text>
                     </button>
                   </view>
@@ -148,10 +145,11 @@
             </view>
             <view class="chart-container">
               <cwg-match-media :max-width="991">
-              <cwg-charts type="line" :chartData="chartData" :opts="chartOpts" tooltipFormat="tooltipCustom" ontouch />
+                <cwg-charts type="line" :chartData="chartData" :opts="chartOpts" tooltipFormat="tooltipCustom"
+                  ontouch />
               </cwg-match-media>
               <cwg-match-media :min-width="991">
-              <cwg-charts type="line" :chartData="chartData" :opts="chartOpts" tooltipFormat="tooltipCustom"  />
+                <cwg-charts type="line" :chartData="chartData" :opts="chartOpts" tooltipFormat="tooltipCustom" />
               </cwg-match-media>
             </view>
           </view>
@@ -159,15 +157,14 @@
         <uni-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" class="mobilH">
           <view class="chart-box mh crm-border-radius">
             <view class="bigtitle mb-3">
-              {{t('Custom.Index.MyAccount')}}
+              {{ t('Custom.Index.MyAccount') }}
             </view>
             <view class="mb-2">
-              <cwg-combox :clearable="false" v-model:value="loginValue"
-                          :options="loginComboxOptions" :placeholder="t('placeholder.choose')" @change="setCurData"/>
+              <cwg-combox :clearable="false" v-model:value="loginValue" :options="loginComboxOptions"
+                :placeholder="t('placeholder.choose')" @change="setCurData" />
             </view>
             <view v-if="curData">
-              <AccountCard :key="curData?.accountNumber"
-                           :account="curData" noCtrl  />
+              <AccountCard :key="curData?.accountNumber" :account="curData" noCtrl />
             </view>
           </view>
         </uni-col>
@@ -176,952 +173,946 @@
     <cwg-improve-popup v-model:visible="dialogCheck" @confirm="confirm" />
 
     <cwg-popup v-model:visible="isChart" type="center" :mask-click="false" :show-footers="true"
-               :title="t('Custom.Index.ChartSet')">
+      :title="t('Custom.Index.ChartSet')">
       <view class="dia-content">
         <uni-forms ref="chartFormRef" labelWidth="160">
           <uni-forms-item :label="t('Label.ChartType') + ':'" prop="chartType">
-            <cwg-combox
-              v-model:value="chartForm.chartType"
-              :options="chartTypeOptions"
-              :placeholder="t('placeholder.choose')"
-            />
+            <cwg-combox v-model:value="chartForm.chartType" :options="chartTypeOptions"
+              :placeholder="t('placeholder.choose')" />
           </uni-forms-item>
           <uni-forms-item :label="t('Label.PlatformType') + ':'" prop="platform">
-            <cwg-combox
-              v-model:value="chartForm.platform"
-              :options="platformOptions"
-              :placeholder="t('placeholder.choose')"
-              @change="onPlatformChange"
-            />
+            <cwg-combox v-model:value="chartForm.platform" :options="platformOptions"
+              :placeholder="t('placeholder.choose')" @change="onPlatformChange" />
           </uni-forms-item>
           <uni-forms-item :label="t('Label.TradingAccount') + ':'" prop="login">
-            <cwg-combox
-              v-model:value="chartForm.login"
-              :options="loginOptions"
-              :placeholder="t('placeholder.choose')"
-            />
+            <cwg-combox v-model:value="chartForm.login" :options="loginOptions"
+              :placeholder="t('placeholder.choose')" />
           </uni-forms-item>
         </uni-forms>
       </view>
       <template #footer>
-        <button @click="isChart = false">{{ t('Btn.Cancel') }}</button>
-        <button type="primary" @click="handleChartConfirm">{{ t('Btn.Confirm') }}</button>
+        <button hover-class="" @click="isChart = false">{{ t('Btn.Cancel') }}</button>
+        <button hover-class="" type="primary" @click="handleChartConfirm">{{ t('Btn.Confirm') }}</button>
       </template>
     </cwg-popup>
   </cwg-page-wrapper>
 </template>
 
 <script setup>
-  import { ref, computed, watch, onMounted, nextTick,onUnmounted } from 'vue'
-  import { useI18n } from 'vue-i18n'
-  import dayjs from 'dayjs'
-  import useRouter from '@/hooks/useRouter'
-  import config from '@/config/index'
-  import useUserStore from '@/stores/use-user-store'
-  import { useFilters } from '@/composables/useFilters'
-  import { documentaryApi } from '@/service/documentary'
-  import { customApi } from '@/service/custom'
-  import { userApi } from '@/api/user'
-  import AccountCard from '@/pages/customer/components/AccountCard.vue'
-  import { useWindowWidth } from '@/composables/useWindowWidth'
-  const windowWidth = useWindowWidth(300)
-  const { t, locale } = useI18n()
-  const loading = ref(false)
-  const router = useRouter()
-  const { Code } = config
-  const userStore = useUserStore()
-  const { numberFormat ,numberDecimal} = useFilters()
-
-
-  const loginOptions = ref([])
-  const ChartSetDate = ref({})
-  const isDealLogin = ref(false)
-  const dealDate = ref({})
-  const SubscribeProfitDate = ref([])
-  const compareData = ref({})
-  const loginValue = ref('')
-
-  const isChart = ref(false)
-  const isDate = ref(['', ''])
-  const time = ref('')
-  const chartData = ref({ categories: [], series: [] })
-  const chartOpts = computed(() => ({
-    color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],
-    padding: [15, 10, 0, 15],
-    enableScroll: true,
-    legend: {
-      show: false,
+import { ref, computed, watch, onMounted, nextTick, onUnmounted } from 'vue'
+import { useI18n } from 'vue-i18n'
+import dayjs from 'dayjs'
+import useRouter from '@/hooks/useRouter'
+import config from '@/config/index'
+import useUserStore from '@/stores/use-user-store'
+import { useFilters } from '@/composables/useFilters'
+import { documentaryApi } from '@/service/documentary'
+import { customApi } from '@/service/custom'
+import { userApi } from '@/api/user'
+import AccountCard from '@/pages/customer/components/AccountCard.vue'
+import { useWindowWidth } from '@/composables/useWindowWidth'
+const windowWidth = useWindowWidth(300)
+const { t, locale } = useI18n()
+const loading = ref(false)
+const router = useRouter()
+const { Code } = config
+const userStore = useUserStore()
+const { numberFormat, numberDecimal } = useFilters()
+
+
+const loginOptions = ref([])
+const ChartSetDate = ref({})
+const isDealLogin = ref(false)
+const dealDate = ref({})
+const SubscribeProfitDate = ref([])
+const compareData = ref({})
+const loginValue = ref('')
+
+const isChart = ref(false)
+const isDate = ref(['', ''])
+const time = ref('')
+const chartData = ref({ categories: [], series: [] })
+const chartOpts = computed(() => ({
+  color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],
+  padding: [15, 10, 0, 15],
+  enableScroll: true,
+  legend: {
+    show: false,
+  },
+  xAxis: {
+    // disableGrid: true,
+    scrollShow: true,
+    itemCount: isMobile.value ? 3 : 4,
+  },
+  tooltipFormat: 'tooltipCustom',
+  extra: {
+    line: {
+      type: 'straight',
+      width: 2,
+      activeType: 'hollow',
     },
-    xAxis: {
-      // disableGrid: true,
-      scrollShow: true,
-      itemCount: isMobile.value?3:4,
-    },
-    tooltipFormat: 'tooltipCustom',
-    extra: {
-      line: {
-        type: 'straight',
-        width: 2,
-        activeType: 'hollow',
-      },
-      tooltip: {
-        legendShow: false,
-        // showCategory: true,
-        formatter: 'tooltipCustom',
-      },
+    tooltip: {
+      legendShow: false,
+      // showCategory: true,
+      formatter: 'tooltipCustom',
     },
+  },
+}))
+
+const dropDown = ref([])
+const chartFormRef = ref(null)
+
+const chartForm = ref({
+  chartType: 4,
+  platform: '',
+  login: '',
+})
+
+const chartTypeOptions = computed(() => [
+  { text: t('Custom.Index.TradingVolumeStatistics'), value: 4 },
+  { text: t('Custom.Index.DepositStatistical'), value: 2 },
+  { text: t('Custom.Index.WithdrawalsStatistical'), value: 3 },
+  { text: t('Custom.Index.ProfitLoss'), value: 6 },
+])
+
+const platformOptions = [
+  { text: 'MT4', value: 'MT4' },
+  { text: 'MT5', value: 'MT5' },
+]
+
+const loginDataOptions = ref([])
+const loginComboxOptions = computed(() => {
+  return loginDataOptions.value.map((item) => ({
+    text: item.label,
+    value: item.login
   }))
-
-  const dropDown = ref([])
-  const chartFormRef = ref(null)
-
-  const chartForm = ref({
-    chartType: 4,
-    platform: '',
-    login: '',
-  })
-
-  const chartTypeOptions = computed(() => [
-    { text: t('Custom.Index.TradingVolumeStatistics'), value: 4 },
-    { text: t('Custom.Index.DepositStatistical'), value: 2 },
-    { text: t('Custom.Index.WithdrawalsStatistical'), value: 3 },
-    { text: t('Custom.Index.ProfitLoss'), value: 6 },
-  ])
-
-  const platformOptions = [
-    { text: 'MT4', value: 'MT4' },
-    { text: 'MT5', value: 'MT5' },
-  ]
-
-  const loginDataOptions = ref([])
-  const loginComboxOptions = computed(() => {
-    return loginDataOptions.value.map((item) => ({
-      text: item.label,
-      value: item.login
+})
+
+const chartLoading = ref(false)
+
+const isAfterJuly28 = () => {
+  const now = new Date();
+  const july28 = new Date(2025, 6, 28, 0, 0, 0); // 月份从0开始,所以7月是6
+  return now >= july28;
+}
+const getLocalTime = () => {
+  let timezone = 2 //目标时区时间,东2区   东时区正数 西市区负数
+  let offset_GMT = new Date().getTimezoneOffset() // 本地时间和格林威治的时间差,单位为分钟
+  let nowDate = new Date().getTime() // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
+  let now = new Date(
+    nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000,
+  )
+
+  //当前时间
+  let month = now.getMonth() + 1 //月
+  let day = now.getDate() //日
+  let hh = now.getHours() //时
+  let mm = now.getMinutes() //分
+  let clock
+  if (month < 10) {
+    month = '0' + month
+  }
+  if (day < 10) {
+    day = '0' + day
+  }
+  if (hh < 10) {
+    hh = '0' + hh
+  }
+  if (mm < 10) {
+    mm = '0' + mm
+  }
+  clock = '  ' + hh + ':' + mm + '  ' + month + '/' + day
+  time.value = clock
+}
+
+const toReload = () => {
+  uni.showLoading({ title: t('common.loading') })
+  goTime()
+}
+// 获取账户信息
+const getDateList = async () => {
+  let res = await customApi.CustomDropdown({ platform: "" })
+  if (res.code == Code.StatusOK) {
+    dropDown.value = res.data || []
+    loginOptions.value = (res.data || []).map(item => ({
+      text: item.login,
+      value: item.login,
     }))
-  })
-
-  const chartLoading = ref(false)
-
-  const isAfterJuly28 = () => {
-    const now = new Date();
-    const july28 = new Date(2025, 6, 28, 0, 0, 0); // 月份从0开始,所以7月是6
-    return now >= july28;
-  }
-  const getLocalTime = () => {
-    let timezone = 2 //目标时区时间,东2区   东时区正数 西市区负数
-    let offset_GMT = new Date().getTimezoneOffset() // 本地时间和格林威治的时间差,单位为分钟
-    let nowDate = new Date().getTime() // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
-    let now = new Date(
-      nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000,
-    )
-
-    //当前时间
-    let month = now.getMonth() + 1 //月
-    let day = now.getDate() //日
-    let hh = now.getHours() //时
-    let mm = now.getMinutes() //分
-    let clock
-    if (month < 10) {
-      month = '0' + month
+    loginDataOptions.value = res.data.map(item => ({
+      ...item,
+      label: `${item.login}`,
+      disable: item.closeFunctions.includes('1')
+    }))
+    const found = loginDataOptions.value?.[0]
+    loginValue.value = found?.login || null
+  } else {
+    uni.showToast({ title: res.msg, icon: 'none' })
+  }
+}
+
+const getSearchDate = (val) => {
+  if (Array.isArray(val)) {
+    isDate.value = val
+  }
+  fetchChartData()
+}
+
+const onPlatformChange = (val) => {
+  console.log('Platform changed:', val)
+}
+
+const handleChartConfirm = async () => {
+  try {
+    const params = {
+      type: chartForm.value.chartType || 4,
+      platform: chartForm.value.platform,
+      login: chartForm.value.login,
+      startDate: isDate.value[0],
+      endDate: isDate.value[1],
     }
-    if (day < 10) {
-      day = '0' + day
+    const res = await customApi.getChartInfo(params)
+    if (res.code === Code.StatusOK) {
+      if (res.data) {
+        let categories = []
+        let seriesData = []
+        res.data.forEach((item) => {
+          categories.push(item.date.split(' ')[0])
+          seriesData.push(item.amount)
+        })
+        chartData.value = { categories, series: [{ name: '', data: seriesData }] }
+      } else {
+        chartData.value = { categories: [], series: [] }
+      }
     }
-    if (hh < 10) {
-      hh = '0' + hh
+    isChart.value = false
+  } catch (error) {
+    console.error('获取图表数据失败', error)
+    isChart.value = false
+  }
+}
+
+const fetchChartData = async () => {
+  try {
+    const params = {
+      type: chartForm.value.chartType || 4,
+      platform: chartForm.value.platform,
+      login: chartForm.value.login,
+      startDate: isDate.value[0],
+      endDate: isDate.value[1],
     }
-    if (mm < 10) {
-      mm = '0' + mm
+    const res = await customApi.getChartInfo(params)
+    if (res.code === Code.StatusOK) {
+      if (res.data) {
+        let categories = []
+        let seriesData = []
+        res.data.forEach((item) => {
+          categories.push(item.date.split(' ')[0])
+          seriesData.push(item.amount)
+        })
+        chartData.value = { categories, series: [{ name: '', data: seriesData }] }
+      } else {
+        chartData.value = { categories: [], series: [] }
+      }
     }
-    clock = '  ' + hh + ':' + mm + '  ' + month + '/' + day
-    time.value = clock
+  } catch (error) {
+    console.error('获取图表数据失败', error)
+  } finally {
+    uni.hideLoading()
   }
+}
 
-  const toReload = () => {
-    uni.showLoading({ title: t('common.loading') })
-    goTime()
-  }
-  // 获取账户信息
-  const getDateList = async () => {
-    let res = await customApi.CustomDropdown({ platform: "" })
-    if (res.code == Code.StatusOK) {
+const getDropDown = async () => {
+  try {
+    const res = await customApi.CustomDropdown()
+    if (res.code === Code.StatusOK) {
       dropDown.value = res.data || []
       loginOptions.value = (res.data || []).map(item => ({
         text: item.login,
         value: item.login,
       }))
-      loginDataOptions.value = res.data.map(item => ({
-        ...item,
-        label: `${item.login}`,
-        disable: item.closeFunctions.includes('1')
-      }))
-      const found = loginDataOptions.value?.[0]
-      loginValue.value = found?.login||null
-    } else {
-      uni.showToast({ title: res.msg, icon: 'none' })
     }
+  } catch (error) {
+    console.error('获取账户列表失败', error)
   }
+}
 
-  const getSearchDate = (val) => {
-    if (Array.isArray(val)) {
-      isDate.value = val
-    }
-    fetchChartData()
-  }
-
-  const onPlatformChange = (val) => {
-    console.log('Platform changed:', val)
-  }
-
-  const handleChartConfirm = async () => {
-    try {
-      const params = {
-        type: chartForm.value.chartType || 4,
-        platform: chartForm.value.platform,
-        login: chartForm.value.login,
-        startDate: isDate.value[0],
-        endDate: isDate.value[1],
-      }
-      const res = await customApi.getChartInfo(params)
-      if (res.code === Code.StatusOK) {
-        if (res.data) {
-          let categories = []
-          let seriesData = []
-          res.data.forEach((item) => {
-            categories.push(item.date.split(' ')[0])
-            seriesData.push(item.amount)
-          })
-          chartData.value = { categories, series: [{ name: '', data: seriesData }] }
-        } else {
-          chartData.value = { categories: [], series: [] }
-        }
-      }
-      isChart.value = false
-    } catch (error) {
-      console.error('获取图表数据失败', error)
-      isChart.value = false
-    }
-  }
 
-  const fetchChartData = async () => {
-    try {
-      const params = {
-        type: chartForm.value.chartType || 4,
-        platform: chartForm.value.platform,
-        login: chartForm.value.login,
-        startDate: isDate.value[0],
-        endDate: isDate.value[1],
-      }
-      const res = await customApi.getChartInfo(params)
-      if (res.code === Code.StatusOK) {
-        if (res.data) {
-          let categories = []
-          let seriesData = []
-          res.data.forEach((item) => {
-            categories.push(item.date.split(' ')[0])
-            seriesData.push(item.amount)
-          })
-          chartData.value = { categories, series: [{ name: '', data: seriesData }] }
-        } else {
-          chartData.value = { categories: [], series: [] }
-        }
-      }
-    } catch (error) {
-      console.error('获取图表数据失败', error)
-    }finally {
-      uni.hideLoading()
-    }
-  }
+// 今日时间
+const dateWeek = computed(() => {
+  const now = dayjs()
+  const isChinese = locale.value === 'cn' || locale.value === 'zhHant'
 
-  const getDropDown = async () => {
-    try {
-      const res = await customApi.CustomDropdown()
-      if (res.code === Code.StatusOK) {
-        dropDown.value = res.data || []
-        loginOptions.value = (res.data || []).map(item => ({
-          text: item.login,
-          value: item.login,
-        }))
-      }
-    } catch (error) {
-      console.error('获取账户列表失败', error)
-    }
+  if (isChinese) {
+    const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
+    const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
+    return `${weekDays[now.day()]}, ${months[now.month()]}${now.date()}日, ${now.year()}`
+  } else {
+    return now.format('ddd, MMMD, YYYY')
   }
+})
 
 
-  // 今日时间
-  const dateWeek = computed(() => {
-    const now = dayjs()
-    const isChinese = locale.value === 'cn' || locale.value === 'zhHant'
-
-    if (isChinese) {
-      const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
-      const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
-      return `${weekDays[now.day()]}, ${months[now.month()]}${now.date()}日, ${now.year()}`
-    } else {
-      return now.format('ddd, MMMD, YYYY')
-    }
-  })
+const createAccount = () => {
+  getCustomLoginInfo()
+}
+// 获取客户登录信息
+const dialogCheck = ref(false)
 
-
-  const createAccount = () => {
-    getCustomLoginInfo()
-  }
-  // 获取客户登录信息
-  const dialogCheck = ref(false)
-
-  async function getCustomLoginInfo() {
-    try {
-      const res = await userApi.getUserInfo()
-      userStore.saveUserInfo(res.data)
-      if (res.code === 200) {
-        if (
-          res.data.customInfo.status == 2 &&
-          res.data.customInfo.applyRealStatus == 2
-        ) {
-          router.push(`/pages/customer/account-select?server=${'real'}`)
-        } else {
-          dialogCheck.value = true
-        }
+async function getCustomLoginInfo() {
+  try {
+    const res = await userApi.getUserInfo()
+    userStore.saveUserInfo(res.data)
+    if (res.code === 200) {
+      if (
+        res.data.customInfo.status == 2 &&
+        res.data.customInfo.applyRealStatus == 2
+      ) {
+        router.push(`/pages/customer/account-select?server=${'real'}`)
+      } else {
+        dialogCheck.value = true
       }
-    } catch (error) {
-      //  console.log(error, 111);
-    }
-  }
-
-  const confirm = () => {
-    dialogCheck.value = false
-    router.push(`/pages/mine/improveImmediately`)
-  }
-
-  const getDailyCompare = async (login) => {
-    const res = await documentaryApi.followDailyCompare({ login })
-    if (res.code === Code.StatusOK) {
-      ChartSetDate.value = res.data ?? {}
-    } else {
-      uni.showToast({ title: res.msg, icon: 'none' })
-    }
-  }
-
-  const getDailyDeal = async (login) => {
-    const res = await documentaryApi.followDailyDeal({ login })
-    if (res.code === Code.StatusOK) {
-      dealDate.value = res.data ?? {}
-    } else {
-      uni.showToast({ title: res.msg, icon: 'none' })
     }
-  }
-
-  const getDailySubscribeProfit = async (login) => {
-    const res = await documentaryApi.followDailySubscribeProfit({ login })
+  } catch (error) {
+    //  console.log(error, 111);
+  }
+}
+
+const confirm = () => {
+  dialogCheck.value = false
+  router.push(`/pages/mine/improveImmediately`)
+}
+
+const getDailyCompare = async (login) => {
+  const res = await documentaryApi.followDailyCompare({ login })
+  if (res.code === Code.StatusOK) {
+    ChartSetDate.value = res.data ?? {}
+  } else {
+    uni.showToast({ title: res.msg, icon: 'none' })
+  }
+}
+
+const getDailyDeal = async (login) => {
+  const res = await documentaryApi.followDailyDeal({ login })
+  if (res.code === Code.StatusOK) {
+    dealDate.value = res.data ?? {}
+  } else {
+    uni.showToast({ title: res.msg, icon: 'none' })
+  }
+}
+
+const getDailySubscribeProfit = async (login) => {
+  const res = await documentaryApi.followDailySubscribeProfit({ login })
+  if (res.code === Code.StatusOK) {
+    SubscribeProfitDate.value = res.data?.data ?? []
+  } else {
+    uni.showToast({ title: res.msg, icon: 'none' })
+  }
+}
+watch(() => chartForm.value.login, async (login) => {
+  await getDailyCompare(login)
+  if (isDealLogin.value) {
+    await getDailyDeal(login)
+  } else {
+    await getDailySubscribeProfit(login)
+  }
+})
+
+const getData = async () => {
+  try {
+    const res = await customApi.customDailyCompare()
     if (res.code === Code.StatusOK) {
-      SubscribeProfitDate.value = res.data?.data ?? []
-    } else {
-      uni.showToast({ title: res.msg, icon: 'none' })
-    }
-  }
-  watch(() => chartForm.value.login, async (login) => {
-    await getDailyCompare(login)
-    if (isDealLogin.value) {
-      await getDailyDeal(login)
-    } else {
-      await getDailySubscribeProfit(login)
-    }
-  })
-
-  const getData = async () => {
-    try {
-      const res = await customApi.customDailyCompare()
-      if (res.code === Code.StatusOK) {
-        compareData.value = res.data
-      }
-    } catch (e) {
-      console.log(e)
+      compareData.value = res.data
     }
-  }
-  const goTime = () => {
-    getLocalTime()
-    let timezone = 2 //目标时区时间,东2区   东时区正数 西市区负数
-    let offset_GMT = new Date().getTimezoneOffset() // 本地时间和格林威治的时间差,单位为分钟
-    let nowDate = new Date().getTime() // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
-    let data = new Date(
-      nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000,
-    )
-    //当月第一天和最后一天
-    let mon1 = data.setDate(1) //当月第一天
-    let mon2 = data.setMonth(data.getMonth() + 1) //下月
-    let y1 = new Date(mon1).getFullYear()
-    let m1 = new Date(mon1).getMonth() + 1
-    let d1 = new Date(mon1).getDate()
-    let y2 = new Date(mon2).getFullYear()
-    let m2 = new Date(mon2).getMonth() + 1
-    let d2 = 1
-
-    isDate.value = [
-      y1 + '-' + (m1 < 10 ? '0' + m1 : m1) + '-' + (d1 < 10 ? '0' + d1 : d1),
-      y2 + '-' + (m2 < 10 ? '0' + m2 : m2) + '-' + (d2 < 10 ? '0' + d2 : d2),
-    ]
-    fetchChartData()
-  }
-  const isMobile = ref(false)
-  onUnmounted(() => {
-    // #ifdef H5
-    window.removeEventListener('resize', handleResize)
-    // #endif
-  })
-  const chartShow = ref(true)
-  // 监听窗口大小变化(仅 H5)
+  } catch (e) {
+    console.log(e)
+  }
+}
+const goTime = () => {
+  getLocalTime()
+  let timezone = 2 //目标时区时间,东2区   东时区正数 西市区负数
+  let offset_GMT = new Date().getTimezoneOffset() // 本地时间和格林威治的时间差,单位为分钟
+  let nowDate = new Date().getTime() // 本地时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数
+  let data = new Date(
+    nowDate + offset_GMT * 60 * 1000 + timezone * 60 * 60 * 1000,
+  )
+  //当月第一天和最后一天
+  let mon1 = data.setDate(1) //当月第一天
+  let mon2 = data.setMonth(data.getMonth() + 1) //下月
+  let y1 = new Date(mon1).getFullYear()
+  let m1 = new Date(mon1).getMonth() + 1
+  let d1 = new Date(mon1).getDate()
+  let y2 = new Date(mon2).getFullYear()
+  let m2 = new Date(mon2).getMonth() + 1
+  let d2 = 1
+
+  isDate.value = [
+    y1 + '-' + (m1 < 10 ? '0' + m1 : m1) + '-' + (d1 < 10 ? '0' + d1 : d1),
+    y2 + '-' + (m2 < 10 ? '0' + m2 : m2) + '-' + (d2 < 10 ? '0' + d2 : d2),
+  ]
+  fetchChartData()
+}
+const isMobile = ref(false)
+onUnmounted(() => {
   // #ifdef H5
-  const handleResize = () => {
-    checkIsMobile()
-  }
+  window.removeEventListener('resize', handleResize)
   // #endif
-  const checkIsMobile = () => {
-    chartShow.value = false
-    isMobile.value = windowWidth.value < 991
-    chartShow.value = true
-  }
-
-  const AccountList = ref([])
-  const getAccountList = async () => {
-    AccountList.value = []
-
-    const res = await customApi.AccountAllList({
-      page: {
-        current: 1,
-        size: 100
-      }
-    })
-    if (res.code === 200) {
-      AccountList.value = res.data
-
-    }
-  }
-  const typeMap = computed(() => ({
-    1: t('AccountType.ClassicAccount'),
-    2: t('AccountType.SeniorAccount'),
-    3: !isAfterJuly28() ? t('AccountType.AgencyAccount') : '',
-    5: t('AccountType.SpeedAccount'),
-    6: t('AccountType.SpeedAccount'),
-    7: t('AccountType.StandardAccount'),
-    8: t('AccountType.CentAccount')
-  }));
-  // 格式化数值函数
-  function formatMoney(value) {
-    if (value === null || value === undefined) value = 0;
-    const sign = value >= 0 ? '' : '-';
-    const absoluteValue = Math.abs(value);
-    return '$' + sign + numberDecimal(absoluteValue);
-  }
-  // 转换数组
-  const accounts = computed(() => {
-    if (!AccountList.value || AccountList.value.length == 0) return []
-    let filteredAccounts = AccountList.value
-    return filteredAccounts.map((acc, index) => {
-      const currency = acc.currency || 'USD';
-      const floating = acc.floating ?? 0;
-      let labels = [t('vu.item1'), 'MT4', 'Standard'];
-      labels[0] = t('vu.item1');
-      labels[1] = acc.platform || 'MT4';
-      labels[2] = typeMap.value[acc.type];
-      let nickname = typeMap.value[acc.type];
-      let fwq
-
-        fwq = acc.platform == 'MT4' ? 'CWGMarketsLtd-Live' : 'CWGMarketsSVG-Live';
-
-      const balance = acc.balance
-      return {
-        ...acc,
-        labels,
-        isExpanded: index == 0,
-        balance,
-        accountNumber: acc.login.toString(),
-        nickname,
-        fwq,
-        balanceWithSymbol: acc.balanceWithSymbol ?? '$0.00',
-        creditWithSymbol: acc.creditWithSymbol ?? '$0.00',
-        equityWithSymbol: acc.equityWithSymbol ?? '$0.00',
-        currency,
-        actualLeverage: '1:' + (acc.leverage ?? 0),
-        floatingPL: acc.floatingWithSymbol ?? '$0.00',
-        platform: acc.platform || 'MT4',
-        server: acc.groupCode || '',
-        login: acc.login.toString(),
-        listType: 'real'
-      };
-    })
-  })
-  const curData = ref()
-  const setCurData = (val)=>{
-    console.log(accounts.value, val)
-    curData.value = accounts.value.find(item=>item.login == val)
-  }
-  watch(() => accounts.value, (val)=>{
-    if (val.length){
-      curData.value = accounts.value.find(item=>item.login == loginValue.value)
+})
+const chartShow = ref(true)
+// 监听窗口大小变化(仅 H5)
+// #ifdef H5
+const handleResize = () => {
+  checkIsMobile()
+}
+// #endif
+const checkIsMobile = () => {
+  chartShow.value = false
+  isMobile.value = windowWidth.value < 991
+  chartShow.value = true
+}
+
+const AccountList = ref([])
+const getAccountList = async () => {
+  AccountList.value = []
+
+  const res = await customApi.AccountAllList({
+    page: {
+      current: 1,
+      size: 100
     }
   })
-  onMounted(async () => {
-    loading.value = true
-    goTime()
-    await getData()
-    // await getDropDown()
-    await getDateList()
-    await getAccountList()
-    // #ifdef H5
-    window.addEventListener('resize', handleResize)
-    // #endif
-    checkIsMobile()
-    // await fetchChartData()
-    loading.value = false
+  if (res.code === 200) {
+    AccountList.value = res.data
+
+  }
+}
+const typeMap = computed(() => ({
+  1: t('AccountType.ClassicAccount'),
+  2: t('AccountType.SeniorAccount'),
+  3: !isAfterJuly28() ? t('AccountType.AgencyAccount') : '',
+  5: t('AccountType.SpeedAccount'),
+  6: t('AccountType.SpeedAccount'),
+  7: t('AccountType.StandardAccount'),
+  8: t('AccountType.CentAccount')
+}));
+// 格式化数值函数
+function formatMoney(value) {
+  if (value === null || value === undefined) value = 0;
+  const sign = value >= 0 ? '' : '-';
+  const absoluteValue = Math.abs(value);
+  return '$' + sign + numberDecimal(absoluteValue);
+}
+// 转换数组
+const accounts = computed(() => {
+  if (!AccountList.value || AccountList.value.length == 0) return []
+  let filteredAccounts = AccountList.value
+  return filteredAccounts.map((acc, index) => {
+    const currency = acc.currency || 'USD';
+    const floating = acc.floating ?? 0;
+    let labels = [t('vu.item1'), 'MT4', 'Standard'];
+    labels[0] = t('vu.item1');
+    labels[1] = acc.platform || 'MT4';
+    labels[2] = typeMap.value[acc.type];
+    let nickname = typeMap.value[acc.type];
+    let fwq
+
+    fwq = acc.platform == 'MT4' ? 'CWGMarketsLtd-Live' : 'CWGMarketsSVG-Live';
+
+    const balance = acc.balance
+    return {
+      ...acc,
+      labels,
+      isExpanded: index == 0,
+      balance,
+      accountNumber: acc.login.toString(),
+      nickname,
+      fwq,
+      balanceWithSymbol: acc.balanceWithSymbol ?? '$0.00',
+      creditWithSymbol: acc.creditWithSymbol ?? '$0.00',
+      equityWithSymbol: acc.equityWithSymbol ?? '$0.00',
+      currency,
+      actualLeverage: '1:' + (acc.leverage ?? 0),
+      floatingPL: acc.floatingWithSymbol ?? '$0.00',
+      platform: acc.platform || 'MT4',
+      server: acc.groupCode || '',
+      login: acc.login.toString(),
+      listType: 'real'
+    };
   })
+})
+const curData = ref()
+const setCurData = (val) => {
+  console.log(accounts.value, val)
+  curData.value = accounts.value.find(item => item.login == val)
+}
+watch(() => accounts.value, (val) => {
+  if (val.length) {
+    curData.value = accounts.value.find(item => item.login == loginValue.value)
+  }
+})
+onMounted(async () => {
+  loading.value = true
+  goTime()
+  await getData()
+  // await getDropDown()
+  await getDateList()
+  await getAccountList()
+  // #ifdef H5
+  window.addEventListener('resize', handleResize)
+  // #endif
+  checkIsMobile()
+  // await fetchChartData()
+  loading.value = false
+})
 
 </script>
 
 <style lang="scss" scoped>
-  @import "@/uni.scss";
-
-  .mobilH{
-    height: 100%;
-  }
-  @media screen and (max-width: 1200px){
-    .mobilH{
-      height: auto;
-    }
-  }
-
-  .header {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin-bottom: px2rpx(20);
-
-    .title {
-      font-size: px2rpx(24);
-      font-weight: bold;
-    }
-  }
-
-  .demo-uni-row {
-    display: flex;
-    flex-wrap: wrap;
-    align-items: stretch;
-    margin: 0 auto !important;
-  }
+@import "@/uni.scss";
 
-  .uni-col-left {
-    //display: flex;
-    //flex-direction: column;
-  }
+.mobilH {
+  height: 100%;
+}
 
-  .uni-col-right {
-    display: flex;
+@media screen and (max-width: 1200px) {
+  .mobilH {
+    height: auto;
   }
+}
 
-  .dashboard-container {
-    min-height: 10vh;
-    box-sizing: border-box;
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-  }
+.header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: px2rpx(20);
 
-  /* 卡片通用样式 */
-  .card {
-    background: var(--color-white);
-    color: var(--bs-heading-color);
-    border-radius: 4px;
-    margin-bottom: px2rpx(20);
-    box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.2);
-  }
-
-  .card-body {
-    padding: px2rpx(16);
-  }
-
-  .icon-placeholder {
-    width: px2rpx(48);
-    height: px2rpx(48);
-    border-radius: px2rpx(24);
-    background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%);
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex-shrink: 0;
-  }
-
-  .icon-text {
-    font-size: px2rpx(20);
-    font-weight: bold;
-    color: #6c757d;
-  }
-
-  .growth-rate {
-    font-size: px2rpx(12);
-    font-weight: 500;
-    padding: px2rpx(2) px2rpx(8);
-    border-radius: px2rpx(2);
-  }
-
-  .growth-rate.rate-up {
-    color: #10b981;
-    background: rgba(16, 185, 129, 0.1);
-  }
-
-  .growth-rate.rate-down {
-    color: #ef4444;
-    background: rgba(239, 68, 68, 0.1);
-  }
-
-  .custom-number,
-  .custom-money {
-    background: var(--bs-body-bg);
-    border: 1px solid var(--bs-border-color);
-    padding: 15px;
-
-    border-radius: 4px;
-    margin-bottom: 20px;
-    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
-    min-height: px2rpx(125);
-  }
-
-  .custom-number .title,
-  .custom-money .left .tit,
-  .custom-money .right .tit {
-    font-size: 14px;
-    color: var(--bs-heading-color);
-    margin-bottom: 10px;
-  }
-
-  .custom-number .title {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-  }
-
-  .custom-money {
-    display: flex;
-    flex-direction: column;
-  }
-
-  .custom-money .left,
-  .custom-money .right {
-    flex: 1;
-  }
-
-  .custom-money .num {
-    font-size: 20px;
+  .title {
+    font-size: px2rpx(24);
     font-weight: bold;
-    color: var(--bs-heading-color);
-  }
-
-  .custom-money .num.red {
-    color: #eb3f57;
-  }
-
-  .el-dropdown-link {
-    display: flex;
-    align-items: center;
-    gap: 4px;
-    color: #6c8595;
-    font-size: 12px;
-  }
-
-  .account-info1 {
-    margin-bottom: 20px;
-  }
-
-  .custom-money-left .header,
-  .custom-money-right .header {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin-bottom: px2rpx(15);
-  }
-
-  .custom-money-left .tab,
-  .custom-money-right .tab {
-    font-size: px2rpx(16);
-    font-weight: 600;
-    color: var(--bs-heading-color);
   }
-
-  .bottomCol {
+}
+
+.demo-uni-row {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: stretch;
+  margin: 0 auto !important;
+}
+
+.uni-col-left {
+  //display: flex;
+  //flex-direction: column;
+}
+
+.uni-col-right {
+  display: flex;
+}
+
+.dashboard-container {
+  min-height: 10vh;
+  box-sizing: border-box;
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+}
+
+/* 卡片通用样式 */
+.card {
+  background: var(--color-white);
+  color: var(--bs-heading-color);
+  border-radius: 4px;
+  margin-bottom: px2rpx(20);
+  box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.2);
+}
+
+.card-body {
+  padding: px2rpx(16);
+}
+
+.icon-placeholder {
+  width: px2rpx(48);
+  height: px2rpx(48);
+  border-radius: px2rpx(24);
+  background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-shrink: 0;
+}
+
+.icon-text {
+  font-size: px2rpx(20);
+  font-weight: bold;
+  color: #6c757d;
+}
+
+.growth-rate {
+  font-size: px2rpx(12);
+  font-weight: 500;
+  padding: px2rpx(2) px2rpx(8);
+  border-radius: px2rpx(2);
+}
+
+.growth-rate.rate-up {
+  color: #10b981;
+  background: rgba(16, 185, 129, 0.1);
+}
+
+.growth-rate.rate-down {
+  color: #ef4444;
+  background: rgba(239, 68, 68, 0.1);
+}
+
+.custom-number,
+.custom-money {
+  background: var(--bs-body-bg);
+  border: 1px solid var(--bs-border-color);
+  padding: 15px;
+
+  border-radius: 4px;
+  margin-bottom: 20px;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+  min-height: px2rpx(125);
+}
+
+.custom-number .title,
+.custom-money .left .tit,
+.custom-money .right .tit {
+  font-size: 14px;
+  color: var(--bs-heading-color);
+  margin-bottom: 10px;
+}
+
+.custom-number .title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.custom-money {
+  display: flex;
+  flex-direction: column;
+}
+
+.custom-money .left,
+.custom-money .right {
+  flex: 1;
+}
+
+.custom-money .num {
+  font-size: 20px;
+  font-weight: bold;
+  color: var(--bs-heading-color);
+}
+
+.custom-money .num.red {
+  color: #eb3f57;
+}
+
+.el-dropdown-link {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+  color: #6c8595;
+  font-size: 12px;
+}
+
+.account-info1 {
+  margin-bottom: 20px;
+}
+
+.custom-money-left .header,
+.custom-money-right .header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: px2rpx(15);
+}
+
+.custom-money-left .tab,
+.custom-money-right .tab {
+  font-size: px2rpx(16);
+  font-weight: 600;
+  color: var(--bs-heading-color);
+}
+
+.bottomCol {
+  font-size: 16px;
+  color: #868686;
+
+  .bo-left1 {
+    margin: 20px 0;
+    padding: 20px 0;
+    border-right: 1px dashed #989898;
+    text-align: center;
     font-size: 16px;
-    color: #868686;
-
-    .bo-left1 {
-      margin: 20px 0;
-      padding: 20px 0;
-      border-right: 1px dashed #989898;
-      text-align: center;
-      font-size: 16px;
-    }
-
-
-    .bo-right1 {
-      margin: 20px 0px;
-      padding: 20px 0;
-      text-align: center;
-      font-size: 16px;
-
-    }
-  }
-
-  .blue-font {
-    margin-top: px2rpx(15);
-    color: #007aff;
-    font-weight: 600;
-    font-size: px2rpx(24);
   }
 
-  .subscribe-table {
-    width: 100%;
-    border: 1px solid #ebeef5;
-    border-radius: 6px;
-    overflow: hidden;
-  }
-
-  .subscribe-row {
-    display: grid;
-    grid-template-columns: 1fr 1fr 1fr 1fr;
-    border-top: 1px solid #ebeef5;
-  }
 
-  .subscribe-head {
-    background: #f5f7fa;
-    border-top: none;
-  }
-
-  .subscribe-cell {
-    padding: 10px 8px;
-    font-size: 12px;
-    color: var(--bs-heading-color);
+  .bo-right1 {
+    margin: 20px 0px;
+    padding: 20px 0;
     text-align: center;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-
-  .custom-dialog-content {
-    padding: px2rpx(20);
-
-    .info-text {
-      color: var(--bs-heading-color);
-      font-size: px2rpx(14);
-      line-height: px2rpx(36);
-    }
-  }
-
-  .card-header {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-bottom: px2rpx(12);
-  }
+    font-size: 16px;
 
-  .header-left {
-    display: flex;
-    align-items: center;
-    gap: 12rpx;
   }
-
-  .header-title {
+}
+
+.blue-font {
+  margin-top: px2rpx(15);
+  color: #007aff;
+  font-weight: 600;
+  font-size: px2rpx(24);
+}
+
+.subscribe-table {
+  width: 100%;
+  border: 1px solid #ebeef5;
+  border-radius: 6px;
+  overflow: hidden;
+}
+
+.subscribe-row {
+  display: grid;
+  grid-template-columns: 1fr 1fr 1fr 1fr;
+  border-top: 1px solid #ebeef5;
+}
+
+.subscribe-head {
+  background: #f5f7fa;
+  border-top: none;
+}
+
+.subscribe-cell {
+  padding: 10px 8px;
+  font-size: 12px;
+  color: var(--bs-heading-color);
+  text-align: center;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.custom-dialog-content {
+  padding: px2rpx(20);
+
+  .info-text {
+    color: var(--bs-heading-color);
     font-size: px2rpx(14);
-    font-weight: 600;
-  }
-
-  .header-right {
-    display: flex;
-    align-items: center;
-  }
-
-  .action-btn {
-    background: #ffde02;
+    line-height: px2rpx(36);
+  }
+}
+
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: px2rpx(12);
+}
+
+.header-left {
+  display: flex;
+  align-items: center;
+  gap: 12rpx;
+}
+
+.header-title {
+  font-size: px2rpx(14);
+  font-weight: 600;
+}
+
+.header-right {
+  display: flex;
+  align-items: center;
+}
+
+.action-btn {
+  background: #ffde02;
+  border: none;
+  border-radius: 50%;
+  width: px2rpx(32);
+  height: px2rpx(32);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 0;
+  margin: 0;
+
+  &:after {
     border: none;
-    border-radius: 50%;
-    width: px2rpx(32);
-    height: px2rpx(32);
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    padding: 0;
-    margin: 0;
-
-    &:after {
-      border: none;
-    }
-  }
-
-  .dia-content {
-    padding: 20rpx;
-  }
-
-  .content {
-    display: flex;
-    flex-direction: column;
-    gap: 20rpx;
-  }
-
-  .label {
-    font-weight: 500;
-    margin-bottom: 8rpx;
   }
+}
+
+.dia-content {
+  padding: 20rpx;
+}
+
+.content {
+  display: flex;
+  flex-direction: column;
+  gap: 20rpx;
+}
+
+.label {
+  font-weight: 500;
+  margin-bottom: 8rpx;
+}
+
+.btn {
+  text-align: center;
+  //background-color: rgb(var(--bs-danger-rgb));
+  //font-size: px2rpx(16);
+  color: #fff;
+  //padding: px2rpx(10) px2rpx(20);
+  border-radius: px2rpx(8) !important;
+  margin: 0;
+}
+
+.crm-cursor {
+  cursor: pointer;
+}
+
+.link {
+  display: flex;
+  margin-top: 20rpx;
 
   .btn {
-    text-align: center;
-    //background-color: rgb(var(--bs-danger-rgb));
-    //font-size: px2rpx(16);
-    color: #fff;
-    //padding: px2rpx(10) px2rpx(20);
-    border-radius: px2rpx(8)!important;
-    margin: 0;
-  }
-
-  .crm-cursor {
-    cursor: pointer;
-  }
-
-  .link {
-    display: flex;
-    margin-top: 20rpx;
-
-    .btn {
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      height: px2rpx(35);
-      margin: 0 px2rpx(10);
-    }
-  }
-
-  .chart-box {
-    background: var(--color-white);
-    border-radius: 8px;
-    padding: px2rpx(16);
-    height: 100%;
-    box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.2);
-  }
-  .mh{
-    height: 100%;
-  }
-
-  .chart-title {
-    width: 100%;
-    //display: flex;
-    //justify-content: space-between;
-    //align-items: flex-start;
-    //margin-bottom: px2rpx(16);
-    //padding-bottom: px2rpx(16);
-    border-bottom: 1px solid #f0f0f0;
-  }
-
-  .bigtitle{
-    font-size: px2rpx(18);
-  }
-  .opt-title{
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-
-  }
-  .btn-opt{
-    display: flex;
-    height: 100%;
-    align-items: flex-end;
-    justify-content: flex-end;
-  }
-
-  .chart-title .time {
     display: flex;
     align-items: center;
-    gap: px2rpx(8);
-    font-size: px2rpx(14);
-    margin-bottom: px2rpx(10);
-    color: #999;
-  }
-
-  .chart-title .title {
-    flex: 1;
-    margin: 0;
-    margin-bottom: px2rpx(10);
-  }
-
-  .chart-title .title .name {
-    font-size: px2rpx(18);
-    font-weight: 600;
-    color: var(--bs-heading-color);
-    text-align: center;
-    margin-bottom: px2rpx(8);
-  }
-
-  .chart-title .title .account {
-    font-size: px2rpx(14);
-    color: #999;
-    text-align: center;
-    margin-bottom: px2rpx(8);
-  }
-
-  .chart-title .title .date {
-    display: flex;
-  }
-
-  .chart-title .date-picker {
-    font-size: px2rpx(12);
-    color: #666;
-    padding: px2rpx(6) px2rpx(12);
-    background: #f5f5f5;
-    border-radius: 4px;
-  }
-
-  .chart-title .operation {
-    //gap: px2rpx(4);
-    margin-left: px2rpx(10);
-    color: #666;
-    margin-bottom: px2rpx(10);
-    height: px2rpx(48);
-    width: px2rpx(100);
-    font-size: px2rpx(16);
-    line-height: px2rpx(48)!important;
-  }
-
-  .chart-container {
-    margin-top: px2rpx(20);
-    height: px2rpx(350);
-  }
-
-  .popup-content .form {
-    padding: px2rpx(16);
-  }
-
-  .popup-content .form-item {
-    margin-bottom: px2rpx(20);
-  }
-
-  .popup-content .form-label {
-    display: block;
-    font-size: px2rpx(14);
-    color: #666;
-    margin-bottom: px2rpx(8);
-  }
-
-  .popup-content .picker-value {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: px2rpx(12);
-    background: #f5f5f5;
-    border-radius: 4px;
-    font-size: px2rpx(14);
-    color: #333;
-  }
-
-  .crm-cursor {
-    cursor: pointer;
-  }
-
-  .crm-border-radius {
-    border-radius: 8px;
-  }
+    justify-content: center;
+    height: px2rpx(35);
+    margin: 0 px2rpx(10);
+  }
+}
+
+.chart-box {
+  background: var(--color-white);
+  border-radius: 8px;
+  padding: px2rpx(16);
+  height: 100%;
+  box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.2);
+}
+
+.mh {
+  height: 100%;
+}
+
+.chart-title {
+  width: 100%;
+  //display: flex;
+  //justify-content: space-between;
+  //align-items: flex-start;
+  //margin-bottom: px2rpx(16);
+  //padding-bottom: px2rpx(16);
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.bigtitle {
+  font-size: px2rpx(18);
+}
+
+.opt-title {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+
+}
+
+.btn-opt {
+  display: flex;
+  height: 100%;
+  align-items: flex-end;
+  justify-content: flex-end;
+}
+
+.chart-title .time {
+  display: flex;
+  align-items: center;
+  gap: px2rpx(8);
+  font-size: px2rpx(14);
+  margin-bottom: px2rpx(10);
+  color: #999;
+}
+
+.chart-title .title {
+  flex: 1;
+  margin: 0;
+  margin-bottom: px2rpx(10);
+}
+
+.chart-title .title .name {
+  font-size: px2rpx(18);
+  font-weight: 600;
+  color: var(--bs-heading-color);
+  text-align: center;
+  margin-bottom: px2rpx(8);
+}
+
+.chart-title .title .account {
+  font-size: px2rpx(14);
+  color: #999;
+  text-align: center;
+  margin-bottom: px2rpx(8);
+}
+
+.chart-title .title .date {
+  display: flex;
+}
+
+.chart-title .date-picker {
+  font-size: px2rpx(12);
+  color: #666;
+  padding: px2rpx(6) px2rpx(12);
+  background: #f5f5f5;
+  border-radius: 4px;
+}
+
+.chart-title .operation {
+  //gap: px2rpx(4);
+  margin-left: px2rpx(10);
+  color: #666;
+  margin-bottom: px2rpx(10);
+  height: px2rpx(48);
+  width: px2rpx(100);
+  font-size: px2rpx(16);
+  line-height: px2rpx(48) !important;
+}
+
+.chart-container {
+  margin-top: px2rpx(20);
+  height: px2rpx(350);
+}
+
+.popup-content .form {
+  padding: px2rpx(16);
+}
+
+.popup-content .form-item {
+  margin-bottom: px2rpx(20);
+}
+
+.popup-content .form-label {
+  display: block;
+  font-size: px2rpx(14);
+  color: #666;
+  margin-bottom: px2rpx(8);
+}
+
+.popup-content .picker-value {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: px2rpx(12);
+  background: #f5f5f5;
+  border-radius: 4px;
+  font-size: px2rpx(14);
+  color: #333;
+}
+
+.crm-cursor {
+  cursor: pointer;
+}
+
+.crm-border-radius {
+  border-radius: 8px;
+}
 </style>

+ 26 - 24
pages/customer/deposit-select.vue

@@ -36,7 +36,8 @@
                             <view class="card-body pt-0" v-if="step2 && currentTableData.length > 0">
                                 <view class="tab-content">
                                     <view>
-                                        <PaymentMethodsList :title="t('Custom.Deposit.Title2')" :list="currentTableData" @select="isShowStep3" />
+                                        <PaymentMethodsList :title="t('Custom.Deposit.Title2')" :list="currentTableData"
+                                            @select="isShowStep3" />
                                     </view>
                                 </view>
                             </view>
@@ -54,7 +55,7 @@
                         <view class="card-top">
                             <text class="tit"><text class="iconfont icon-caret-right"></text>{{
                                 t('Custom.Deposit.Title1')
-                                }}</text>
+                            }}</text>
                             <cwg-combox :clearable="false" v-model:value="loginValue" :options="loginComboxOptions"
                                 :placeholder="t('placeholder.choose')" />
                         </view>
@@ -66,7 +67,7 @@
                         <view class="card-top">
                             <text class="tit"><text class="iconfont icon-caret-right"></text>{{
                                 t('Custom.Deposit.Title2')
-                                }}</text>
+                            }}</text>
                             <uni-loading v-if="currentTableData.length == 0" />
                             <template v-if="currentTableData.length">
                                 <cwg-asset-tabs v-if="tabsConfig.length > 0" v-model="activeTab" :tabs="tabsConfig" />
@@ -76,7 +77,7 @@
                             </template>
 
                             <!-- <view v-if="step3" class="reselect-btn">
-                            <button class="s-btn reselect" type="primary" @click="showTable">{{
+                            <button hover-class="" class="s-btn reselect" type="primary" @click="showTable">{{
                                 t('Custom.Deposit.Reselect') }}</button>
                         </view> -->
                         </view>
@@ -98,7 +99,7 @@
                                 </view>
                                 <view class="btn-bottom">
                                     <text class="btn crm-cursor" @click="isStep3Open()">{{ t('Btn.Confirm')
-                                        }}</text>
+                                    }}</text>
                                 </view>
 
                             </view>
@@ -136,7 +137,7 @@
                                         <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
                                             <text class="tit"><text class="iconfont icon-caret-right"></text>{{
                                                 t('news_add_field.Label.Title4')
-                                                }}</text>
+                                            }}</text>
                                         </uni-col>
                                         <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
                                             <uni-forms-item>
@@ -170,7 +171,7 @@
                                                             WireTransferAccount.bankUname || '--'
                                                         }}</text></view>
                                                 <view class="row"><text class="label">{{ t('Custom.Deposit.bankName')
-                                                        }}</text><text class="content">{{ WireTransferAccount.bankName
+                                                }}</text><text class="content">{{ WireTransferAccount.bankName
                                                             ||
                                                             '--'
                                                         }}</text></view>
@@ -180,7 +181,7 @@
                                                             WireTransferAccount.bankCardNum || '--'
                                                         }}</text></view>
                                                 <view class="row"><text class="label">{{ t('Custom.Deposit.bankAddr')
-                                                        }}</text><text class="content">{{ WireTransferAccount.bankAddr
+                                                }}</text><text class="content">{{ WireTransferAccount.bankAddr
                                                             ||
                                                             '--'
                                                         }}</text></view>
@@ -190,7 +191,7 @@
                                                             WireTransferAccount.swiftCode || '--'
                                                         }}</text></view>
                                                 <view class="row"><text class="label">{{ t('Custom.Deposit.bankCode')
-                                                        }}</text><text class="content">{{ WireTransferAccount.bankCode
+                                                }}</text><text class="content">{{ WireTransferAccount.bankCode
                                                             ||
                                                             '--'
                                                         }}</text></view>
@@ -218,7 +219,7 @@
                                                             + '-' +
                                                             WireTransferAccount.type }}</text></view>
                                                 <view class="row"><text class="label">{{ t('Custom.Withdraw.Title6')
-                                                        }}</text><text class="content">{{ WireTransferAccount.address ||
+                                                }}</text><text class="content">{{ WireTransferAccount.address ||
                                                             '--'
                                                         }}</text></view>
                                                 <view class="row"><text class="label">QR Code</text>
@@ -316,17 +317,17 @@
                                                         <checkbox :checked="params.agree4"
                                                             @click="params.agree4 = !params.agree4" />
                                                         <text>{{ t('news_add_field1.activitiesNZ.itemDeposit1')
-                                                            }}</text>
+                                                        }}</text>
                                                     </label>
                                                     <view style="line-height: 1.5; font-size: 14px">
                                                         <text>{{ t('news_add_field1.activitiesNZ.itemDeposit2')
-                                                            }}</text>
+                                                        }}</text>
                                                         <text class="clause crm-cursor"
                                                             @click="dialogClauseNZ = true">{{
                                                                 t('news_add_field1.activitiesNZ.itemDeposit3')
                                                             }}</text>
                                                         <text>{{ t('news_add_field1.activitiesNZ.itemDeposit4')
-                                                            }}</text>
+                                                        }}</text>
                                                     </view>
                                                 </uni-forms-item>
 
@@ -340,16 +341,16 @@
                                                         <checkbox :checked="params.agree5"
                                                             @click="params.agree5 = !params.agree5" />
                                                         <text>{{ t('news_add_field1.activitiesNZTwo.itemDeposit1')
-                                                            }}</text>
+                                                        }}</text>
                                                     </label>
                                                     <view style="line-height: 1.5; font-size: 14px">
                                                         <text>{{ t('news_add_field1.activitiesNZTwo.itemDeposit2')
-                                                            }}</text>
+                                                        }}</text>
                                                         <text class="clause crm-cursor"
                                                             @click="dialogClauseNZTwo = true">{{
                                                                 t('news_add_field1.activitiesNZTwo.itemDeposit3') }}</text>
                                                         <text>{{ t('news_add_field1.activitiesNZTwo.itemDeposit4')
-                                                            }}</text>
+                                                        }}</text>
                                                     </view>
                                                 </uni-forms-item>
 
@@ -436,7 +437,8 @@
                                     </template>
 
                                 </uni-row>
-                                <button class="s-btn" type="primary" @click="submitConfirm">{{ t('Btn.Submit')
+                                <button hover-class="" class="s-btn" type="primary" @click="submitConfirm">{{
+                                    t('Btn.Submit')
                                     }}</button>
                             </uni-forms>
                         </view>
@@ -1700,7 +1702,7 @@ const loginComboxOptions = computed(() => {
     return loginOptions.value.map((item) => ({
         text: `${item.login} - ${groupTypeName(item.type)} - ${t('Custom.Deposit.AvailableBalance')}${groupCurrency(item.currency)}${numberDecimal(item.balance)}`,
         value: item.login,
-      disable: item.disable,
+        disable: item.disable,
     }))
 })
 const creditCardOptions = computed(() => {
@@ -1725,11 +1727,11 @@ const getDateList = async () => {
     if (res.code == Code.StatusOK) {
         loginOptions.value = res.data.map(item => ({
             ...item,
-          disable: item.closeFunctions.includes('1')
+            disable: item.closeFunctions.includes('1')
         }))
-      // 默认选中第一个
-        nextTick(()=>{
-          loginValue.value = loginOptions.value?.[0].login
+        // 默认选中第一个
+        nextTick(() => {
+            loginValue.value = loginOptions.value?.[0].login
         })
         const pages = getCurrentPages()
         const route = pages[pages.length - 1].$page?.options || {}
@@ -2079,8 +2081,8 @@ watch(() => params.agree6, (newVal) => {
     }
 }
 
-.card-header{
-  border: none;
+.card-header {
+    border: none;
 }
 
 .custom-deposit {

+ 15 - 14
pages/customer/deposit.vue

@@ -71,7 +71,7 @@
                                                         WireTransferAccount.bankUname || '--'
                                                     }}</text></view>
                                             <view class="row"><text class="label">{{ t('Custom.Deposit.bankName')
-                                            }}</text><text class="content">{{ WireTransferAccount.bankName
+                                                    }}</text><text class="content">{{ WireTransferAccount.bankName
                                                         ||
                                                         '--'
                                                     }}</text></view>
@@ -81,7 +81,7 @@
                                                         WireTransferAccount.bankCardNum || '--'
                                                     }}</text></view>
                                             <view class="row"><text class="label">{{ t('Custom.Deposit.bankAddr')
-                                            }}</text><text class="content">{{ WireTransferAccount.bankAddr
+                                                    }}</text><text class="content">{{ WireTransferAccount.bankAddr
                                                         ||
                                                         '--'
                                                     }}</text></view>
@@ -91,7 +91,7 @@
                                                         WireTransferAccount.swiftCode || '--'
                                                     }}</text></view>
                                             <view class="row"><text class="label">{{ t('Custom.Deposit.bankCode')
-                                            }}</text><text class="content">{{ WireTransferAccount.bankCode
+                                                    }}</text><text class="content">{{ WireTransferAccount.bankCode
                                                         ||
                                                         '--'
                                                     }}</text></view>
@@ -144,7 +144,7 @@
                                             <view class="label-with-icon">
                                                 <text>{{ t('Custom.Deposit.EstimatedAmount') + '(' +
                                                     `${channelData.transformCurrency || channelData.currency}` + ')'
-                                                }}</text>
+                                                    }}</text>
                                                 <uni-tooltip placement="top">
                                                     <!-- <view class="help-icon">ⓘ</view> -->
                                                     <cwg-icon name="icon_about us" :size="16" />
@@ -203,16 +203,16 @@
                                                 <label>
                                                     <checkbox value="1" :checked="params.agree4" />
                                                     <text>{{ t('news_add_field1.activitiesNZ.itemDeposit1')
-                                                    }}</text>
+                                                        }}</text>
                                                     <view style="line-height: 1.5; font-size: 14px">
                                                         <text>{{ t('news_add_field1.activitiesNZ.itemDeposit2')
-                                                        }}</text>
+                                                            }}</text>
                                                         <text class="clause crm-cursor"
                                                             @click.stop="dialogClauseNZ = true">{{
                                                                 t('news_add_field1.activitiesNZ.itemDeposit3')
                                                             }}</text>
                                                         <text>{{ t('news_add_field1.activitiesNZ.itemDeposit4')
-                                                        }}</text>
+                                                            }}</text>
                                                     </view>
                                                 </label>
                                             </checkbox-group>
@@ -229,14 +229,14 @@
                                                     <checkbox value="1" :checked="params.agree5" />
                                                     <text>{{
                                                         t('news_add_field1.activitiesNZTwo.itemDeposit1')
-                                                    }}</text>
+                                                        }}</text>
 
                                                     <p style="margin-top: 10px;line-height: 1.5; font-size: 14px">
                                                         <text class="crm-cursor" @click.stop="dialogCheckTip = true">{{
                                                             t('Custom.Withdraw.Des') }}</text>
                                                         <text>{{
                                                             t('news_add_field1.activitiesNZTwo.itemDeposit2')
-                                                        }}</text>
+                                                            }}</text>
                                                         <text class="clause crm-cursor"
                                                             style="text-decoration: underline;"
                                                             @click.stop="dialogClauseNZTwo = true">{{
@@ -244,7 +244,7 @@
                                                             }}</text>
                                                         <text>{{
                                                             t('news_add_field1.activitiesNZTwo.itemDeposit4')
-                                                        }}</text>
+                                                            }}</text>
                                                     </p>
 
                                                 </label>
@@ -266,7 +266,7 @@
                                                     <view style="margin-top: 10px; line-height: 1.5; font-size: 14px">
                                                         <text> {{
                                                             t('news_add_field1.activitiesNewList.item1')
-                                                        }}{{
+                                                            }}{{
                                                                 t('news_add_field1.activitiesNewList.item2')
                                                             }}</text>
                                                     </view>
@@ -340,9 +340,10 @@
                                         </template>
                                     </view>
 
-                                    <button class="btn btn-dark waves-effect waves-light" @click="submitConfirm">{{
-                                        t('Btn.Submit')
-                                    }}</button>
+                                    <button hover-class="" class="btn btn-dark waves-effect waves-light"
+                                        @click="submitConfirm">{{
+                                            t('Btn.Submit')
+                                        }}</button>
 
                                 </view>
 

+ 14 - 14
pages/customer/transfer.vue

@@ -14,8 +14,7 @@
                                         <h5 class="mb-3" v-t="'Custom.Transfer.Title1'"></h5>
                                         <uni-forms-item>
                                             <cwg-combox v-model:value="loginValue" :clearable="false"
-                                                :options="withdrawDisplayList"
-                                                :placeholder="t('placeholder.choose')" />
+                                                :options="withdrawDisplayList" :placeholder="t('placeholder.choose')" />
                                         </uni-forms-item>
                                     </view>
                                     <view class="col-lg-6">
@@ -45,8 +44,9 @@
                                         </view>
                                     </view>
 
-                                    <button @click="toTransfer" class="btn btn-dark waves-effect waves-light"><i
-                                            class="fi fi-rs-check"></i> <text v-t="'Btn.Submit'"></text></button>
+                                    <button hover-class="" @click="toTransfer"
+                                        class="btn btn-dark waves-effect waves-light"><i class="fi fi-rs-check"></i>
+                                        <text v-t="'Btn.Submit'"></text></button>
                                 </view>
                             </uni-forms>
                         </view>
@@ -379,10 +379,10 @@ const getDateList = async () => {
     let res = await customApi.CustomDropdown({ platform: '' })
     if (res.code == Code.StatusOK) {
         loginOptions.value = res.data
-      // 默认选中第一个
-      nextTick(()=>{
-        loginValue.value = loginOptions.value?.[0].login
-      })
+        // 默认选中第一个
+        nextTick(() => {
+            loginValue.value = loginOptions.value?.[0].login
+        })
         nextTick(() => {
             handleRouteParams()
         })
@@ -444,12 +444,12 @@ function updateToOptions() {
 // 处理路由参数
 function handleRouteParams() {
     nextTick(() => {
-      if (pageQuery.value.login){
-        const loginNum = pageQuery.value.login ? Number(pageQuery.value.login) : null
-        form.withdrawLogin = loginNum
-        step2.value = loginNum ? true : false
-        loginValue.value = loginNum
-      }
+        if (pageQuery.value.login) {
+            const loginNum = pageQuery.value.login ? Number(pageQuery.value.login) : null
+            form.withdrawLogin = loginNum
+            step2.value = loginNum ? true : false
+            loginValue.value = loginNum
+        }
     })
 
     updateToOptions()

+ 4 - 3
pages/customer/wallet-transfer.vue

@@ -38,8 +38,9 @@
                                     </view>
 
 
-                                    <button @click="toTransfer" class="btn btn-dark waves-effect waves-light"><i
-                                            class="fi fi-rs-check"></i> <text v-t="'Btn.Submit'"></text></button>
+                                    <button hover-class="" @click="toTransfer"
+                                        class="btn btn-dark waves-effect waves-light"><i class="fi fi-rs-check"></i>
+                                        <text v-t="'Btn.Submit'"></text></button>
                                 </view>
                             </uni-forms>
                         </view>
@@ -225,7 +226,7 @@ const getWalletList = async () => {
     try {
         let res = await drawApi.walletbalance({})
         if (res.code == Code.StatusOK) {
-            walletbalance.value = res.data != null ? res.data  : '0'
+            walletbalance.value = res.data != null ? res.data : '0'
         } else {
             uni.showToast({ title: res.msg, icon: 'none' })
         }

+ 17 - 12
pages/customer/withdrawal-select.vue

@@ -33,7 +33,8 @@
               <view class="card-body pt-0" v-if="step2 && currentTableData.length > 0">
                 <view class="tab-content">
                   <view>
-                    <PaymentMethodsList :title="t('Custom.Deposit.Title22')" :list="currentTableData" @select="isShowStep3" />
+                    <PaymentMethodsList :title="t('Custom.Deposit.Title22')" :list="currentTableData"
+                      @select="isShowStep3" />
                   </view>
                 </view>
               </view>
@@ -71,7 +72,8 @@
                 <PaymentMethodsList :list="currentTableData" @select="isShowStep3" />
               </view>
               <view v-if="step3" class="reselect-btn">
-                <button class="s-btn reselect" type="primary" @click="showTable">{{ t('Custom.Deposit.Reselect')
+                <button hover-class="" class="s-btn reselect" type="primary" @click="showTable">{{
+                  t('Custom.Deposit.Reselect')
                   }}</button>
               </view>
             </view>
@@ -194,7 +196,7 @@
                         </text>
                         <text v-if="channelData.type == 'BANK'">{{
                           t('Custom.Withdraw.addBank')
-                          }}</text>
+                        }}</text>
                         <text v-if="channelData.type == 'BANK'" class="add-btn crm-cursor"
                           @click="openAddBankCard('add_bankCard')">
                           {{ t('Custom.Withdraw.addBank1') }}
@@ -319,7 +321,7 @@
                   <uni-col :span="24" v-if="channelData.type != 'BANK_TELEGRAPHIC' && isStep3">
                     <view class="tit">
                       <text>{{ t('Custom.Withdraw.Title3') + '(' + channelData.currency + ')'
-                        }}</text>
+                      }}</text>
                     </view>
                   </uni-col>
                   <uni-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" v-if="channelData.type !== 'BANK_TELEGRAPHIC'">
@@ -366,7 +368,7 @@
                     </checkbox-group>
                   </uni-forms-item>
                 </view>
-                <button class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit') }}</button>
+                <button hover-class="" class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit') }}</button>
               </uni-forms>
             </view>
           </view>
@@ -1594,7 +1596,7 @@ async function getDateList() {
       disable: item.closeFunctions.includes('2')
     }))
     // 默认选中第一个
-    nextTick(()=>{
+    nextTick(() => {
       loginValue.value = loginOptions.value?.[0].login
     })
     const route = getCurrentPages().pop().$page.options
@@ -1768,8 +1770,8 @@ function getFirstDayOfNextMonth() {
 }
 const first = ref('')
 const showCentAccountTransferTip = (login) => {
-  console.log(login,'login1');
-  console.log(first.value,'login2')
+  console.log(login, 'login1');
+  console.log(first.value, 'login2')
   if (first.value != login) {
     const selectedAccount = loginOptions.value.find(
       (item) => item.login == login,
@@ -1796,7 +1798,7 @@ const showCentAccountTransferTip = (login) => {
 watch(loginValue, (newVal) => {
   if (newVal) {
     step2.value = true;
-    console.log(newVal,'login4');
+    console.log(newVal, 'login4');
     const found = loginOptions.value.find(opt => opt.login === Number(newVal))
     loginValueDoc.value = found.label
     showCentAccountTransferTip(newVal)
@@ -1869,14 +1871,17 @@ onMounted(() => {
 
 <style lang="scss" scoped>
 @import "@/uni.scss";
-.card{
-  .card-header{
+
+.card {
+  .card-header {
     padding-bottom: 0;
   }
 }
-.card-header{
+
+.card-header {
   border: none;
 }
+
 .custom-withdraw {
 
   .box {

+ 11 - 9
pages/customer/withdrawal.vue

@@ -298,7 +298,8 @@
                       </uni-forms-item>
                     </view>
                   </view>
-                  <button class="btn btn-dark waves-effect waves-light" @click="openTips"><i class="fi fi-rs-check">
+                  <button hover-class="" class="btn btn-dark waves-effect waves-light" @click="openTips"><i
+                      class="fi fi-rs-check">
                     </i><text v-t="'Btn.Submit'"></text></button>
                 </view>
               </uni-forms>
@@ -322,7 +323,7 @@
             <view class="b-card">
               <view class="card-top">
                 <text class="tit"><text class="iconfont icon-caret-right"></text>{{ t('Custom.Deposit.Title11')
-                }}</text>
+                  }}</text>
                 <view class="base-info-form">
                   <view class="uni-row2">
                     <cwg-combox :clearable="false" v-model:value="loginValue" :options="loginComboxOptions"
@@ -338,7 +339,7 @@
             <view class="b-card">
               <view class="card-top">
                 <text class="tit"><text class="iconfont icon-caret-right"></text>{{ t('Custom.Deposit.Title22')
-                }}</text>
+                  }}</text>
                 <cwg-combox :clearable="false" v-model:value="channelId" :options="channelListOptions"
                   :placeholder="t('placeholder.choose')" needSpace>
                 </cwg-combox>
@@ -449,7 +450,7 @@
                           </text>
                           <text v-if="channelData.type == 'BANK'">{{
                             t('Custom.Withdraw.addBank')
-                          }}</text>
+                            }}</text>
                           <text v-if="channelData.type == 'BANK'" class="add-btn crm-cursor"
                             @click="openAddBankCard('add_bankCard')">
                             {{ t('Custom.Withdraw.addBank1') }}
@@ -572,7 +573,7 @@
                     <view v-if="channelData.type != 'BANK_TELEGRAPHIC' && isStep3">
                       <view class="tit">
                         <text>{{ t('Custom.Withdraw.Title3') + '(' + channelData.currency + ')'
-                        }}</text>
+                          }}</text>
                       </view>
                     </view>
                     <view v-if="channelData.type !== 'BANK_TELEGRAPHIC'" class="amount-box amount-box1">
@@ -624,7 +625,7 @@
                       </checkbox-group>
                     </uni-forms-item>
                   </view>
-                  <button class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit') }}</button>
+                  <button hover-class="" class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit') }}</button>
                 </uni-forms>
               </view>
             </view>
@@ -1011,8 +1012,8 @@ const rules = computed(() => ({
   },
 }));
 watch(locale, () => {
-    formRef.value?.clearValidate()
-    validateAmount()
+  formRef.value?.clearValidate()
+  validateAmount()
 })
 // 验证金额
 const amountErrorMessage = ref('')
@@ -2186,7 +2187,8 @@ watch(() => form.amount, (newVal) => {
 
 <style lang="scss" scoped>
 @import "@/uni.scss";
-.card{
+
+.card {
   color: var(--bs-emphasis-color);
 }
 

+ 44 - 40
pages/follow/account-management.vue

@@ -5,8 +5,10 @@
                 <view class="col-12">
                     <view class="border-0 card-header">
                         <view class="d-flex flex-wrap gap-3 align-items-center justify-content-between mb-3">
-                            <h3 class="mb-0" style="align-self: flex-start" v-t="'Documentary.TundManagement.item9'"></h3>
-                            <button class="btn btn-secondary btn-shadow waves-effect" @click="toSubscribeList">
+                            <h3 class="mb-0" style="align-self: flex-start" v-t="'Documentary.TundManagement.item9'">
+                            </h3>
+                            <button hover-class="" class="btn btn-secondary btn-shadow waves-effect"
+                                @click="toSubscribeList">
                                 <view class="d-flex align-items-center">
                                     <cwg-icon icon="crm-plus" :size="16" color="#fff" />
                                     <text v-t="'Documentary.TundManagement.item44'" />
@@ -20,48 +22,48 @@
         <view class="content-container list-content-empty" v-if="accountDataLoading || accountData.length > 0">
             <uni-loading v-if="accountDataLoading" />
             <view class="field-container" v-else>
-                    <view class="account-l-con" v-for="(item, index) in accountData" :key="index">
-                        <view class="tit">
-                            <view>
-                                <i class="el-icon-success green-icon"></i><text class="tit-tit"
-                                    v-t="'Documentary.TundManagement.item13'"></text>
-                                - {{ item.followLogin || "--" }}
-                            </view>
+                <view class="account-l-con" v-for="(item, index) in accountData" :key="index">
+                    <view class="tit">
+                        <view>
+                            <i class="el-icon-success green-icon"></i><text class="tit-tit"
+                                v-t="'Documentary.TundManagement.item13'"></text>
+                            - {{ item.followLogin || "--" }}
                         </view>
-                        <view class="account-grid">
-                            <view class="account-grid-item">
-                                <view class="sub" v-t="'Label.TradingAccount'"></view>
-                                <view class="num">{{ item.followLogin || "--" }}</view>
-                            </view>
-                            <view class="account-grid-item">
-                                <view class="sub" v-t="'Label.PlatformType'"></view>
-                                <view class="num">{{ item.followPlatform || "--" }}</view>
-                            </view>
-                            <view class="account-grid-item">
-                                <view class="sub" v-t="'Label.AccountType'"></view>
-                                <view class="num">
-                                    <text>{{ groupTypeName(item.followLoginType) }}</text>
-                                </view>
-                            </view>
-                            <view class="account-grid-item">
-                                <view class="sub" v-t="'Label.Leverage'"></view>
-                                <view class="num">
-                                    <text v-if="item.followLeverage">1:{{ item.followLeverage }}</text>
-                                    <text v-else>{{ "--" }}</text>
-                                </view>
+                    </view>
+                    <view class="account-grid">
+                        <view class="account-grid-item">
+                            <view class="sub" v-t="'Label.TradingAccount'"></view>
+                            <view class="num">{{ item.followLogin || "--" }}</view>
+                        </view>
+                        <view class="account-grid-item">
+                            <view class="sub" v-t="'Label.PlatformType'"></view>
+                            <view class="num">{{ item.followPlatform || "--" }}</view>
+                        </view>
+                        <view class="account-grid-item">
+                            <view class="sub" v-t="'Label.AccountType'"></view>
+                            <view class="num">
+                                <text>{{ groupTypeName(item.followLoginType) }}</text>
                             </view>
-                            <view class="account-grid-item">
-                                <view class="sub" v-t="'Label.Balance'"></view>
-                                <view class="num">
-                                    {{ numberFormat(item.followBalance) }}
-                                </view>
+                        </view>
+                        <view class="account-grid-item">
+                            <view class="sub" v-t="'Label.Leverage'"></view>
+                            <view class="num">
+                                <text v-if="item.followLeverage">1:{{ item.followLeverage }}</text>
+                                <text v-else>{{ "--" }}</text>
                             </view>
-                            <view class="account-grid-item">
-                                <view class="sub" v-t="'Label.Equity'"></view>
-                                <view class="num">{{ numberFormat(item.followEquity) }}</view>
+                        </view>
+                        <view class="account-grid-item">
+                            <view class="sub" v-t="'Label.Balance'"></view>
+                            <view class="num">
+                                {{ numberFormat(item.followBalance) }}
                             </view>
                         </view>
+                        <view class="account-grid-item">
+                            <view class="sub" v-t="'Label.Equity'"></view>
+                            <view class="num">{{ numberFormat(item.followEquity) }}</view>
+                        </view>
                     </view>
+                </view>
             </view>
         </view>
         <view v-else class="content-container list-content-empty">
@@ -140,9 +142,11 @@ onMounted(() => {
 
 <style scoped lang="scss">
 @import "@/uni.scss";
-.btn{
-  margin: 0;
+
+.btn {
+    margin: 0;
 }
+
 .content-container {
     .field-container {
         display: grid;

+ 2 - 2
pages/follow/components/applySignalDialog.vue

@@ -169,8 +169,8 @@
     </uni-forms>
 
     <template #footer>
-      <button @click="closeDia">{{ t('Btn.Cancel') }}</button>
-      <button type="primary" @click="confirmDia">{{ t('Btn.Confirm') }}</button>
+      <button hover-class="" @click="closeDia">{{ t('Btn.Cancel') }}</button>
+      <button hover-class="" type="primary" @click="confirmDia">{{ t('Btn.Confirm') }}</button>
     </template>
   </cwg-popup>
 </template>

+ 46 - 42
pages/follow/index.vue

@@ -4,11 +4,10 @@
     <uni-loading v-if="loading" />
     <uni-row v-else class="demo-uni-row uni-row1" :gutter="20">
       <uni-col :xs="24" :sm="12" :md="24" :lg="24" :xl="24" class="mb-3">
-        <cwg-combox :clearable="false" v-model:value="login"
-                    :options="loginOptions.map(item => ({
-                    text: item.platform + ' - ' + item.login + ' - ' + groupTypeName(item.type) + ' - ' + t('Custom.Deposit.AvailableBalance') + groupCurrency(item.currency) + item.balance,
-                    value: item
-                  }))" :placeholder="locale === 'es'?'Selecciona':t('placeholder.choose')" @change="handleCommand"/>
+        <cwg-combox :clearable="false" v-model:value="login" :options="loginOptions.map(item => ({
+          text: item.platform + ' - ' + item.login + ' - ' + groupTypeName(item.type) + ' - ' + t('Custom.Deposit.AvailableBalance') + groupCurrency(item.currency) + item.balance,
+          value: item
+        }))" :placeholder="locale === 'es' ? 'Selecciona' : t('placeholder.choose')" @change="handleCommand" />
 
       </uni-col>
       <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="uni-col-left">
@@ -16,7 +15,7 @@
           <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" style="height: 100%">
             <view class="card tab-card shadow-none">
               <view>
-                <image class="icon-img" src="/static/images/dollar.png" alt="dollar"/>
+                <image class="icon-img" src="/static/images/dollar.png" alt="dollar" />
               </view>
               <view class="table-tit">
                 <view class="tit mb-1">
@@ -28,11 +27,11 @@
               </view>
             </view>
           </uni-col>
-<!--          <uni-col :xs="24" :sm="12" :md="isDealLogin ? 8 : 12" :lg="isDealLogin ? 4 : 6" :xl="isDealLogin ? 4 : 6">-->
+          <!--          <uni-col :xs="24" :sm="12" :md="isDealLogin ? 8 : 12" :lg="isDealLogin ? 4 : 6" :xl="isDealLogin ? 4 : 6">-->
           <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" style="height: 100%">
             <view class="card tab-card shadow-none bg-danger bg-opacity-10">
               <view>
-                <image class="icon-img" src="/static/images/money.png" alt="money"/>
+                <image class="icon-img" src="/static/images/money.png" alt="money" />
               </view>
               <view class="table-tit">
                 <view class="tit mb-1 text-danger">
@@ -50,11 +49,11 @@
               </view>
             </view>
           </uni-col>
-<!--          <uni-col :xs="24" :sm="12" :md="isDealLogin ? 8 : 12" :lg="isDealLogin ? 4 : 6" :xl="isDealLogin ? 4 : 6">-->
+          <!--          <uni-col :xs="24" :sm="12" :md="isDealLogin ? 8 : 12" :lg="isDealLogin ? 4 : 6" :xl="isDealLogin ? 4 : 6">-->
           <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" style="height: 100%">
             <view class="card tab-card shadow-none bg-success bg-opacity-10">
               <view>
-                <image class="icon-img" src="/static/images/wallet.png" alt="wallet"/>
+                <image class="icon-img" src="/static/images/wallet.png" alt="wallet" />
               </view>
               <view class="table-tit">
                 <view class="tit mb-1 text-success">
@@ -66,32 +65,32 @@
                 <view class=" ">
                   <view class="tit-1 text-success">
                     <text class="yest">{{ t('Documentary.console.item9') }}</text>
-                    <text >${{ numberFormat(ChartSetDate.balanceIncrement || '0.00') }}</text>
+                    <text>${{ numberFormat(ChartSetDate.balanceIncrement || '0.00') }}</text>
                   </view>
                 </view>
               </view>
             </view>
           </uni-col>
-<!--          <uni-col :xs="24" :sm="12" :md="8" :lg="4" :xl="4" v-if="isDealLogin">-->
-<!--            <view class="custom-money">-->
-<!--              <view class="left">-->
-<!--                <view class="tit">-->
-<!--                  <text>{{ t('Documentary.console.item8') }}</text>-->
-<!--                </view>-->
-<!--                <view class="num">-->
-<!--                  <text>{{ numberFormat(ChartSetDate.profit || '0.00') }}</text>-->
-<!--                </view>-->
-<!--              </view>-->
-<!--              <view class="right">-->
-<!--                <view class="tit">-->
-<!--                  <text>{{ t('Documentary.console.item9') }}</text>-->
-<!--                </view>-->
-<!--                <view class="num">-->
-<!--                  <text>{{ numberFormat(ChartSetDate.profitIncrement || '0.00') }}</text>-->
-<!--                </view>-->
-<!--              </view>-->
-<!--            </view>-->
-<!--          </uni-col>-->
+          <!--          <uni-col :xs="24" :sm="12" :md="8" :lg="4" :xl="4" v-if="isDealLogin">-->
+          <!--            <view class="custom-money">-->
+          <!--              <view class="left">-->
+          <!--                <view class="tit">-->
+          <!--                  <text>{{ t('Documentary.console.item8') }}</text>-->
+          <!--                </view>-->
+          <!--                <view class="num">-->
+          <!--                  <text>{{ numberFormat(ChartSetDate.profit || '0.00') }}</text>-->
+          <!--                </view>-->
+          <!--              </view>-->
+          <!--              <view class="right">-->
+          <!--                <view class="tit">-->
+          <!--                  <text>{{ t('Documentary.console.item9') }}</text>-->
+          <!--                </view>-->
+          <!--                <view class="num">-->
+          <!--                  <text>{{ numberFormat(ChartSetDate.profitIncrement || '0.00') }}</text>-->
+          <!--                </view>-->
+          <!--              </view>-->
+          <!--            </view>-->
+          <!--          </uni-col>-->
         </uni-row>
       </uni-col>
       <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="uni-col-right">
@@ -104,7 +103,8 @@
                     <view class="tit">
                       <text class="tab h3">{{ t('Documentary.console.item23') }}</text>
                     </view>
-                    <view class="num cursor-pointer" @click="toDocumentary1" :data-tooltip="t('Documentary.TundManagement.item11')" data-placement="top">
+                    <view class="num cursor-pointer" @click="toDocumentary1"
+                      :data-tooltip="t('Documentary.TundManagement.item11')" data-placement="top">
                       <cwg-icon name="crm-sz" :size="18" color="#6c8595" />
                     </view>
                   </view>
@@ -165,12 +165,12 @@
                     <view class="tit">
                       <view class="tab h3">{{ t('Documentary.console.item27') }}</view>
                     </view>
-                      <button class="btn btn-danger btn-shadow waves-effect" @click="dialogFllowApplyOpen">
-                        <view class="d-flex align-items-center">
+                    <button hover-class="" class="btn btn-danger btn-shadow waves-effect" @click="dialogFllowApplyOpen">
+                      <view class="d-flex align-items-center">
                         <cwg-icon name="crm-plus" :size="14" color="#fff" />
                         <text>{{ t('Documentary.TundManagement.item12') }}</text>
-                        </view>
-                      </button>
+                      </view>
+                    </button>
                   </view>
                   <view class="bottom">
                     <view class="tab">
@@ -784,7 +784,8 @@ onMounted(async () => {
   font-size: px2rpx(12);
   line-height: 1.4;
 }
-.tab-card{
+
+.tab-card {
   display: flex;
   flex-direction: row;
   align-items: center;
@@ -794,20 +795,23 @@ onMounted(async () => {
   height: 100%;
   min-height: px2rpx(115);
 
-  .icon-img{
+  .icon-img {
     width: px2rpx(50);
     height: px2rpx(50);
   }
-  .table-tit{
-    .tit{
+
+  .table-tit {
+    .tit {
       color: var(--bs-body-color);
       gap: px2rpx(15);
     }
-    .tit-1{
+
+    .tit-1 {
       font-size: px2rpx(12);
       font-weight: 500;
     }
-    .yest{
+
+    .yest {
       margin-right: px2rpx(10);
     }
   }

+ 40 - 35
pages/follow/subscribe-list.vue

@@ -42,8 +42,9 @@
                 </view>
             </view>
             <template #footer>
-                <button @click="ToUnSubscribeCancelTip">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="ToUnSubscribe">{{ t('Documentary.TundManagement.item47') }}</button>
+                <button hover-class="" @click="ToUnSubscribeCancelTip">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="ToUnSubscribe">{{ t('Documentary.TundManagement.item47')
+                    }}</button>
             </template>
         </cwg-popup>
         <!-- 取消订阅设置 -->
@@ -60,7 +61,7 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item29') }}</text>
                                 <text class="delete-value">{{ numberDesensitization(dialogSubscribeDataCancel.dealLogin)
-                                    }}</text>
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item3') }}</text>
@@ -70,7 +71,9 @@
                         <view class="delete-row">
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item7') }}</text>
-                                <text class="delete-value">{{ numberFormat(dialogSubscribeDataCancel.dealBalance || '0')||'--' }}</text>
+                                <text class="delete-value">{{ numberFormat(dialogSubscribeDataCancel.dealBalance ||
+                                    '0')||'--'
+                                    }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.AccountType') }}</text>
@@ -82,7 +85,7 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item6') }}</text>
                                 <text class="delete-value">{{ numberFormat(dialogSubscribeDataCancel.dealEquity || 0)
-                                    }}</text>
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item30') }}</text>
@@ -97,12 +100,12 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.Credit') }}</text>
                                 <text class="delete-value">{{ numberFormat(dialogSubscribeDataCancel.dealCredit || 0)
-                                    }}</text>
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item31') }}</text>
                                 <text class="delete-value">{{ dialogSubscribeDataCancel.distributionRatio || '0'
-                                    }}%</text>
+                                }}%</text>
                             </view>
                         </view>
                         <view class="delete-row">
@@ -113,7 +116,7 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item32') }}</text>
                                 <text class="delete-value">{{ dialogSubscribeDataCancel.settlementCycle || '--'
-                                    }}</text>
+                                }}</text>
                             </view>
                         </view>
                     </view>
@@ -131,7 +134,7 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.Leverage') }}</text>
                                 <text class="delete-value">1:{{ dialogSubscribeDataCancel.followLeverage || '--'
-                                    }}</text>
+                                }}</text>
                             </view>
                         </view>
                         <view class="delete-row">
@@ -170,12 +173,12 @@
                             <view class="delete-item" v-if="dialogSubscribeDataCancel.protectType == 1">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item39') }}</text>
                                 <text class="delete-value">{{ dialogSubscribeDataCancel.protectAmount || '--'
-                                    }}($)</text>
+                                }}($)</text>
                             </view>
                             <view class="delete-item" v-if="dialogSubscribeDataCancel.protectType == 2">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item122') }}</text>
                                 <text class="delete-value">{{ dialogSubscribeDataCancel.protectRatio || '--'
-                                    }}(%)</text>
+                                }}(%)</text>
                             </view>
                         </view>
                     </view>
@@ -204,8 +207,9 @@
             </view>
 
             <template #footer>
-                <button @click="ToUnSubscribeCancel">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="dialogSubscribeCancelTipOpen" :disabled="flag">{{ t('Btn.Confirm')
+                <button hover-class="" @click="ToUnSubscribeCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="dialogSubscribeCancelTipOpen" :disabled="flag">{{
+                    t('Btn.Confirm')
                     }}</button>
             </template>
         </cwg-popup>
@@ -225,7 +229,7 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item29') }}</text>
                                 <text class="delete-value">{{ numberDesensitization(dialogSubscribeFllowData.dealLogin)
-                                    }}</text>
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item3') }}</text>
@@ -235,20 +239,20 @@
                         <view class="delete-row">
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item7') }}</text>
-                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealBalance||0)
-                                    }}</text>
+                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealBalance || 0)
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.AccountType') }}</text>
                                 <text class="delete-value">{{ accountTypeName[dialogSubscribeFllowData.dealLoginType]
-                                    }}</text>
+                                }}</text>
                             </view>
                         </view>
                         <view class="delete-row">
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item6') }}</text>
-                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealEquity||0)
-                                    }}</text>
+                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealEquity || 0)
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item30') }}</text>
@@ -262,13 +266,13 @@
                         <view class="delete-row">
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.Credit') }}</text>
-                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealCredit||0)
-                                    }}</text>
+                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealCredit || 0)
+                                }}</text>
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item31') }}</text>
                                 <text class="delete-value">{{ dialogSubscribeFllowData.distributionRatio || '0'
-                                    }}%</text>
+                                }}%</text>
                             </view>
                         </view>
                         <view class="delete-row">
@@ -278,7 +282,8 @@
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item32') }}</text>
-                                <text class="delete-value">{{ optObj[dialogSubscribeFllowData.settlementCycle] || '--' }}</text>
+                                <text class="delete-value">{{ optObj[dialogSubscribeFllowData.settlementCycle] || '--'
+                                    }}</text>
                             </view>
                         </view>
                     </view>
@@ -296,7 +301,7 @@
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.Leverage') }}</text>
                                 <text class="delete-value">1:{{ dialogSubscribeFllowData.followLeverage || '--'
-                                    }}</text>
+                                }}</text>
                             </view>
                         </view>
                     </view>
@@ -389,8 +394,8 @@
             </view>
 
             <template #footer>
-                <button @click="FllowSettingCancel">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="FllowSetting">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="FllowSettingCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="FllowSetting">{{ t('Btn.Confirm') }}</button>
             </template>
         </cwg-popup>
     </cwg-page-wrapper>
@@ -402,8 +407,8 @@ import { useI18n } from 'vue-i18n';
 const { t, locale } = useI18n();
 import { documentaryApi } from '@/service/documentary';
 import { useFilters } from '@/composables/useFilters'
-import {useFollowEnum} from '@/pages/follow/const/enum'
-const {optObj} =useFollowEnum()
+import { useFollowEnum } from '@/pages/follow/const/enum'
+const { optObj } = useFollowEnum()
 
 const { numberFormat, numberDesensitization, numberDecimal } = useFilters()
 const search = ref({
@@ -684,13 +689,13 @@ const handleSearch = (params) => {
     })
 }
 
-const accountTypeName = computed(()=>{
-  return {
-    1:t('AccountType.ClassicAccount'),
-    2:t('AccountType.SeniorAccount'),
-    7:t('AccountType.StandardAccount'),
-    8:t('AccountType.CentAccount'),
-  }
+const accountTypeName = computed(() => {
+    return {
+        1: t('AccountType.ClassicAccount'),
+        2: t('AccountType.SeniorAccount'),
+        7: t('AccountType.StandardAccount'),
+        8: t('AccountType.CentAccount'),
+    }
 })
 
 const handleReset = (params) => {

+ 25 - 19
pages/follow/trading-center.vue

@@ -81,7 +81,7 @@
           <view class="fllow-content">
             <text class="tit">{{ t('Documentary.tradingCenter.item30') }}</text>
             <text class="con">{{ dialogFllowData1.distributionType == 1 ? t('Documentary.TundManagement.item59') : '--'
-              }}
+            }}
             </text>
           </view>
           <view class="fllow-content">
@@ -110,7 +110,8 @@
           <view class="form-grid">
             <uni-forms-item :label="t('Documentary.console.item4')" name="followLogin">
               <uni-data-select v-model="dialogFllowData.followLogin" :localdata="followLoginOptions"
-                @change="selectLogin" :placeholder="t('common.choose')" :emptyTips="t('common.noMore')"></uni-data-select>
+                @change="selectLogin" :placeholder="t('common.choose')"
+                :emptyTips="t('common.noMore')"></uni-data-select>
             </uni-forms-item>
             <uni-forms-item :label="t('Documentary.tradingCenter.item34')" name="leverage">
               <uni-easyinput v-model="dialogFllowData.leverage" disabled />
@@ -164,8 +165,9 @@
               <checkbox :checked="dialogFllowData.agree" @click="dialogFllowData.agree = !dialogFllowData.agree"
                 style="transform:scale(0.7)" />
               <text>{{ t('Documentary.tradingCenter.item40') }} -</text>
-              <cwg-link type="pdf" title="Documentary.tradingCenter.item41" v-if="['cn', 'zhHant'].indexOf(locale) != -1"
-                style="color: #4497ff" url="pdf/CopyTradeUserAgreementcn.pdf" target="_blank" />
+              <cwg-link type="pdf" title="Documentary.tradingCenter.item41"
+                v-if="['cn', 'zhHant'].indexOf(locale) != -1" style="color: #4497ff"
+                url="pdf/CopyTradeUserAgreementcn.pdf" target="_blank" />
               <cwg-link type="pdf" style="color: #4497ff" title="Documentary.tradingCenter.item41"
                 url="pdf/CopyTradeUserAgreement.pdf" target="_blank" v-else />
             </label>
@@ -173,8 +175,8 @@
         </uni-forms>
       </scroll-view>
       <template #footer>
-        <button class="cancel-btn" @click="applyFllowCancel">{{ t('Btn.Cancel') }}</button>
-        <button class="confirm-btn" type="primary" @click="applyFllow">{{ t('Btn.Confirm') }}</button>
+        <button hover-class="" class="cancel-btn" @click="applyFllowCancel">{{ t('Btn.Cancel') }}</button>
+        <button hover-class="" class="confirm-btn" type="primary" @click="applyFllow">{{ t('Btn.Confirm') }}</button>
       </template>
     </cwg-popup>
   </cwg-page-wrapper>
@@ -185,13 +187,13 @@ import { computed, ref, nextTick, onMounted, onUnmounted, watch } from 'vue'
 import { useI18n } from 'vue-i18n'
 import { documentaryApi } from '@/service/documentary'
 import useUserStore from '@/stores/use-user-store'
-import {useFollowEnum} from '@/pages/follow/const/enum'
+import { useFollowEnum } from '@/pages/follow/const/enum'
 import { useFilters } from '@/composables/useFilters'
 const { numberDecimal } = useFilters()
 const { t, locale } = useI18n()
 const userStore = useUserStore()
 const userInfo = computed(() => userStore.userInfo)
-const {optObj} = useFollowEnum()
+const { optObj } = useFollowEnum()
 
 // --- Time fetching ---
 const time = ref('')
@@ -456,18 +458,20 @@ const formRef = ref<any>(null)
 const rules = computed(() => ({
   protectAmount: { rules: [{ required: true, errorMessage: t('vaildate.input.empty') }] },
   protectRatio: { rules: [{ required: true, errorMessage: t('vaildate.input.empty') }] },
-  volume: { rules: [{ required: true, errorMessage: t('vaildate.input.empty') },{
-      validateFunction: (rule, value,data, callback) => {
-      if (value) {
-        const num = Number(value)
-        if (isNaN(num) || num <= 0) {
-          callback(t('vu.follow.v1'))
-        }else {
-          callback()
+  volume: {
+    rules: [{ required: true, errorMessage: t('vaildate.input.empty') }, {
+      validateFunction: (rule, value, data, callback) => {
+        if (value) {
+          const num = Number(value)
+          if (isNaN(num) || num <= 0) {
+            callback(t('vu.follow.v1'))
+          } else {
+            callback()
+          }
         }
       }
-    }
-    }] },
+    }]
+  },
   ratio: { rules: [{ required: true, errorMessage: t('vaildate.input.empty') }] },
   followLogin: { rules: [{ required: true, errorMessage: t('vaildate.select.empty') }] },
   followType: { rules: [{ required: true, errorMessage: t('vaildate.select.empty') }] },
@@ -475,7 +479,7 @@ const rules = computed(() => ({
 }));
 
 watch(locale, () => {
-    formRef.value?.clearValidate()
+  formRef.value?.clearValidate()
 })
 
 const followLoginOptions = computed(() => {
@@ -664,6 +668,7 @@ const applyFllowCancel = () => {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: 10px 20px;
+
     @media screen and (max-width: 750px) {
       grid-template-columns: none;
     }
@@ -691,6 +696,7 @@ const applyFllowCancel = () => {
     grid-template-columns: 1fr 1fr;
     gap: 10px 20px;
     margin-top: 10px;
+
     @media screen and (max-width: 750px) {
       grid-template-columns: none;
     }

+ 10 - 8
pages/follow/trading-management.vue

@@ -7,7 +7,8 @@
                         <view class="d-flex flex-wrap gap-3 align-items-center justify-content-between mb-3">
                             <h3 class="mb-0" style="align-self: flex-start" v-t="'Documentary.TundManagement.item11'">
                             </h3>
-                            <button class="btn btn-secondary btn-shadow waves-effect" @click="getCustomLoginDownLogin">
+                            <button hover-class="" class="btn btn-secondary btn-shadow waves-effect"
+                                @click="getCustomLoginDownLogin">
                                 <view class="d-flex align-items-center">
                                     <cwg-icon icon="crm-plus" :size="16" color="#fff" />
                                     <text v-t="'Documentary.TundManagement.item12'" />
@@ -155,7 +156,7 @@
                         <view class="delete-item">
                             <text class="delete-label">{{ t('Documentary.tradingCenter.item32') }}</text>
                             <text class="delete-value">{{ optObj[dialogFllowDataDelete.settlementCycle] || '--'
-                            }}</text>
+                                }}</text>
                         </view>
                     </view>
                 </view>
@@ -166,8 +167,8 @@
             </view>
 
             <template #footer>
-                <button @click="FllowDeleCancel">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="FllowDele">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="FllowDeleCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="FllowDele">{{ t('Btn.Confirm') }}</button>
             </template>
         </cwg-popup>
         <!-- 信号源设置 -->
@@ -339,8 +340,8 @@
 
             <template #footer>
 
-                <button @click="FllowUpdateCancel">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="FllowUpdate">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="FllowUpdateCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="FllowUpdate">{{ t('Btn.Confirm') }}</button>
             </template>
         </cwg-popup>
 
@@ -522,8 +523,8 @@
             </uni-forms>
 
             <template #footer>
-                <button @click="ApplyFllowCancel">{{ t('Btn.Cancel') }}</button>
-                <button type="primary" @click="ApplyFllow">{{ t('Btn.Confirm') }}</button>
+                <button hover-class="" @click="ApplyFllowCancel">{{ t('Btn.Cancel') }}</button>
+                <button hover-class="" type="primary" @click="ApplyFllow">{{ t('Btn.Confirm') }}</button>
             </template>
         </cwg-popup>
 
@@ -1365,6 +1366,7 @@ onMounted(() => {
             &:first-child {
                 padding-right: px2rpx(0);
             }
+
             &:last-child {
                 padding-left: px2rpx(0);
             }

+ 3 - 2
pages/follow/transfer.vue

@@ -38,8 +38,9 @@
                                     </view>
 
 
-                                    <button @click="toTransfer" class="btn btn-dark waves-effect waves-light"><i
-                                            class="fi fi-rs-check"></i> <text v-t="'Btn.Submit'"></text></button>
+                                    <button hover-class="" @click="toTransfer"
+                                        class="btn btn-dark waves-effect waves-light"><i class="fi fi-rs-check"></i>
+                                        <text v-t="'Btn.Submit'"></text></button>
                                 </view>
                             </uni-forms>
                         </view>

+ 9 - 7
pages/ib/agent-transfer.vue

@@ -21,7 +21,8 @@
                                         <h5 class="mb-3" v-t="'Custom.Transfer.IntoAccount'"></h5>
                                         <uni-forms-item name="depositLogin">
                                             <cwg-combox v-model:value="form.depositLogin" :clearable="false"
-                                                :options="depositDisplayList" :placeholder="t('placeholder.choose')" @change="showCentAccountTransferTip1"/>
+                                                :options="depositDisplayList" :placeholder="t('placeholder.choose')"
+                                                @change="showCentAccountTransferTip1" />
                                         </uni-forms-item>
                                     </view>
                                     <view class="col-lg-6">
@@ -51,14 +52,14 @@
                                                     <checkbox value="1" :checked="form.agree5" />
                                                     <text>{{
                                                         t('news_add_field1.activitiesNZTwo.itemDeposit1')
-                                                        }}</text>
+                                                    }}</text>
 
                                                     <p style="margin-top: 10px;line-height: 1.5; font-size: 14px">
                                                         <text class="crm-cursor" @click.stop="dialogCheckTip = true">{{
                                                             t('Custom.Withdraw.Des') }}</text>
                                                         <text>{{
                                                             t('news_add_field1.activitiesNZTwo.itemDeposit2')
-                                                            }}</text>
+                                                        }}</text>
                                                         <text class="clause crm-cursor"
                                                             style="text-decoration: underline;"
                                                             @click.stop="dialogClauseNZTwo = true">{{
@@ -66,7 +67,7 @@
                                                             }}</text>
                                                         <text>{{
                                                             t('news_add_field1.activitiesNZTwo.itemDeposit4')
-                                                            }}</text>
+                                                        }}</text>
                                                     </p>
 
                                                 </label>
@@ -89,7 +90,7 @@
                                                             style="margin-top: 10px; line-height: 1.5; font-size: 14px">
                                                             <text> {{
                                                                 t('news_add_field1.activitiesNewList.item1')
-                                                                }}{{
+                                                            }}{{
                                                                     t('news_add_field1.activitiesNewList.item2')
                                                                 }}</text>
                                                         </view>
@@ -100,8 +101,9 @@
                                         </view>
                                     </view>
 
-                                    <button @click="toTransfer" class="btn btn-dark waves-effect waves-light"><i
-                                            class="fi fi-rs-check"></i> <text v-t="'Btn.Submit'"></text></button>
+                                    <button hover-class="" @click="toTransfer"
+                                        class="btn btn-dark waves-effect waves-light"><i class="fi fi-rs-check"></i>
+                                        <text v-t="'Btn.Submit'"></text></button>
                                 </view>
                             </uni-forms>
                         </view>

+ 2 - 2
pages/ib/components/BonusAgreementPopup.vue

@@ -34,8 +34,8 @@
             </scroll-view>
         </view>
         <template #footer>
-            <button @click="close">{{ t('Btn.Cancel') }}</button>
-            <button type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
+            <button hover-class="" @click="close">{{ t('Btn.Cancel') }}</button>
+            <button hover-class="" type="primary" @click="close">{{ t('Btn.Confirm') }}</button>
         </template>
     </cwg-popup>
 </template>

+ 129 - 119
pages/ib/index.vue

@@ -1,15 +1,16 @@
 <template>
-  <cwg-page-wrapper class="create-page" :isHeaderFixed="true" >
-<!--    <cwg-header :title="t('Home.page_ib.item1')" :showBack="false" />-->
+  <cwg-page-wrapper class="create-page" :isHeaderFixed="true">
+    <!--    <cwg-header :title="t('Home.page_ib.item1')" :showBack="false" />-->
     <uni-loading v-if="loading" />
     <uni-row v-else class="demo-uni-row uni-row1" :gutter="20">
 
       <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
         <view class="border-0 card-header ">
           <view class="d-flex flex-wrap gap-3 align-items-center justify-content-between mb-3" style="width: 100%;">
-            <view class="mb-0 h3" style="align-self: flex-start">{{t('Home.msg.Ib')}}</view>
-            <button type="button" class="btn  btn-secondary  btn-shadow waves-effect" @click="LinkActivity1">
-              <cwg-icon name="crm-share-nodes" :size="16" color="#fff" />{{t('Ib.Index.CreateLink')}}</button>
+            <view class="mb-0 h3" style="align-self: flex-start">{{ t('Home.msg.Ib') }}</view>
+            <button hover-class="" type="button" class="btn  btn-secondary  btn-shadow waves-effect"
+              @click="LinkActivity1">
+              <cwg-icon name="crm-share-nodes" :size="16" color="#fff" />{{ t('Ib.Index.CreateLink') }}</button>
           </view>
         </view>
       </uni-col>
@@ -22,91 +23,97 @@
           <!--                  </view>-->
           <!--                </cwg-dropdown>-->
           <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-          <view class="card position-relative">
-            <view class="card-body d-flex gap-3 align-items-center">
-              <view class="clearfix pe-2 text-warning"> <image src="/static/images/dollar.png" alt="dollar" mode="aspectFill" class="img-fluid"/> </view>
-              <view class="clearfix">
-                <view class="mb-2">{{ t('news_add_field.Label.Balance') }}</view>
-                <view class="mb-0 fw-bold ">${{ numberFormat(ibData.balance) }}<text class="badge bg-danger-subtle text-danger">{{ t('Ib.Index.TotalRevenue') }}: ${{numberFormat(ibData.all)}}</text></view>
+            <view class="card position-relative">
+              <view class="card-body d-flex gap-3 align-items-center">
+                <view class="clearfix pe-2 text-warning">
+                  <image src="/static/images/dollar.png" alt="dollar" mode="aspectFill" class="img-fluid" />
+                </view>
+                <view class="clearfix">
+                  <view class="mb-2">{{ t('news_add_field.Label.Balance') }}</view>
+                  <view class="mb-0 fw-bold ">${{ numberFormat(ibData.balance) }}<text
+                      class="badge bg-danger-subtle text-danger">{{ t('Ib.Index.TotalRevenue') }}:
+                      ${{ numberFormat(ibData.all) }}</text></view>
+                </view>
               </view>
             </view>
-          </view>
           </uni-col>
-          
+
 
           <!-- 开户链接 -->
-<!--          <view class="card partner-card">-->
-<!--            <view class="card-header">-->
-<!--              <view class="header-left">-->
-<!--                <cwg-icon name="crm-share-nodes" :size="24" color="#000" />-->
-<!--                <text class="header-title">{{ t('Ib.Index.Link') }}</text>-->
-<!--              </view>-->
-<!--            </view>-->
-<!--            <view class="partner-content">-->
-<!--              <view class="link-area">-->
-<!--                <button class="link-btn" @click="LinkActivity1">-->
-<!--                  {{ t('Ib.Index.CreateLink') }}-->
-<!--                </button>-->
-<!--                &lt;!&ndash;                <button class="link-btn" @click="LinkActivity">&ndash;&gt;-->
-<!--                &lt;!&ndash;                  {{ t('Ib.Index.CreateLinkActivity') }}&ndash;&gt;-->
-<!--                &lt;!&ndash;                </button>&ndash;&gt;-->
-<!--              </view>-->
-<!--            </view>-->
-<!--          </view>-->
+          <!--          <view class="card partner-card">-->
+          <!--            <view class="card-header">-->
+          <!--              <view class="header-left">-->
+          <!--                <cwg-icon name="crm-share-nodes" :size="24" color="#000" />-->
+          <!--                <text class="header-title">{{ t('Ib.Index.Link') }}</text>-->
+          <!--              </view>-->
+          <!--            </view>-->
+          <!--            <view class="partner-content">-->
+          <!--              <view class="link-area">-->
+          <!--                <button hover-class="" class="link-btn" @click="LinkActivity1">-->
+          <!--                  {{ t('Ib.Index.CreateLink') }}-->
+          <!--                </button>-->
+          <!--                &lt;!&ndash;                <button hover-class="" class="link-btn" @click="LinkActivity">&ndash;&gt;-->
+          <!--                &lt;!&ndash;                  {{ t('Ib.Index.CreateLinkActivity') }}&ndash;&gt;-->
+          <!--                &lt;!&ndash;                </button>&ndash;&gt;-->
+          <!--              </view>-->
+          <!--            </view>-->
+          <!--          </view>-->
           <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-          <view class="card position-relative stat-card-clickable cursor-pointer" @click="toCustomManagement" :data-tooltip="t('vu.tooltip.t4',{pageName:t('Home.page_ib.item2')})" data-placement="top">
-            <view class="card-body d-flex gap-3 align-items-center">
-              <view class="clearfix pe-2 text-warning">
-                <cwg-icon name="crm-user" :size="50" color="#FDBB1F" />
-              </view>
-              <view class="clearfix">
-                <view class="mb-2">{{ t('Ib.Index.NameCustom') }}-{{ t('Ib.Index.Custom') }}</view>
-                <view class="mb-0 fw-bold">{{ ibData.customAmount || '0' }}</view>
+            <view class="card position-relative stat-card-clickable cursor-pointer" @click="toCustomManagement"
+              :data-tooltip="t('vu.tooltip.t4', { pageName: t('Home.page_ib.item2') })" data-placement="top">
+              <view class="card-body d-flex gap-3 align-items-center">
+                <view class="clearfix pe-2 text-warning">
+                  <cwg-icon name="crm-user" :size="50" color="#FDBB1F" />
+                </view>
+                <view class="clearfix">
+                  <view class="mb-2">{{ t('Ib.Index.NameCustom') }}-{{ t('Ib.Index.Custom') }}</view>
+                  <view class="mb-0 fw-bold">{{ ibData.customAmount || '0' }}</view>
+                </view>
               </view>
             </view>
-          </view>
           </uni-col>
           <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-          <view class="card position-relative stat-card-clickable cursor-pointer" @click="toIbManagement" :data-tooltip="t('vu.tooltip.t4',{pageName:t('Ib.Custom.Manage2')})" data-placement="top">
-            <view class="card-body d-flex gap-3 align-items-center">
-              <view class="clearfix pe-2 text-warning">
-                <cwg-icon name="crm-ib" :size="50" color="#FDBB1F" />
-              </view>
-              <view class="clearfix">
-                <view class="mb-2">{{ t('Ib.Index.NameCustom') }}-{{ t('Ib.Index.Agent') }}</view>
-                <view class="mb-0 fw-bold">{{ ibData.ibAmount || '0' }}</view>
+            <view class="card position-relative stat-card-clickable cursor-pointer" @click="toIbManagement"
+              :data-tooltip="t('vu.tooltip.t4', { pageName: t('Ib.Custom.Manage2') })" data-placement="top">
+              <view class="card-body d-flex gap-3 align-items-center">
+                <view class="clearfix pe-2 text-warning">
+                  <cwg-icon name="crm-ib" :size="50" color="#FDBB1F" />
+                </view>
+                <view class="clearfix">
+                  <view class="mb-2">{{ t('Ib.Index.NameCustom') }}-{{ t('Ib.Index.Agent') }}</view>
+                  <view class="mb-0 fw-bold">{{ ibData.ibAmount || '0' }}</view>
+                </view>
               </view>
             </view>
-          </view>
           </uni-col>
 
           <!-- 名下客户 -->
-<!--          <view class="card custom-card">-->
-<!--            <view class="card-header">-->
-<!--              <view class="header-left">-->
-<!--                <cwg-icon name="crm-custom" :size="24" color="#333" />-->
-<!--                <text class="header-title">{{ t('Ib.Index.NameCustom') }}</text>-->
-<!--              </view>-->
-<!--            </view>-->
-<!--            <view class="custom-content">-->
-<!--              <view class="con" @click="toCustomManagement">-->
-<!--                <view class="num">-->
-<!--                  {{ ibData.customAmount || '0' }}-->
-<!--                </view>-->
-<!--                <view class="des">-->
-<!--                  {{ t('Ib.Index.Custom') }}-->
-<!--                </view>-->
-<!--              </view>-->
-<!--              <view class="con" @click="toIbManagement">-->
-<!--                <view class="num">-->
-<!--                  {{ ibData.ibAmount || '0' }}-->
-<!--                </view>-->
-<!--                <view class="des">-->
-<!--                  {{ t('Ib.Index.Agent') }}-->
-<!--                </view>-->
-<!--              </view>-->
-<!--            </view>-->
-<!--          </view>-->
+          <!--          <view class="card custom-card">-->
+          <!--            <view class="card-header">-->
+          <!--              <view class="header-left">-->
+          <!--                <cwg-icon name="crm-custom" :size="24" color="#333" />-->
+          <!--                <text class="header-title">{{ t('Ib.Index.NameCustom') }}</text>-->
+          <!--              </view>-->
+          <!--            </view>-->
+          <!--            <view class="custom-content">-->
+          <!--              <view class="con" @click="toCustomManagement">-->
+          <!--                <view class="num">-->
+          <!--                  {{ ibData.customAmount || '0' }}-->
+          <!--                </view>-->
+          <!--                <view class="des">-->
+          <!--                  {{ t('Ib.Index.Custom') }}-->
+          <!--                </view>-->
+          <!--              </view>-->
+          <!--              <view class="con" @click="toIbManagement">-->
+          <!--                <view class="num">-->
+          <!--                  {{ ibData.ibAmount || '0' }}-->
+          <!--                </view>-->
+          <!--                <view class="des">-->
+          <!--                  {{ t('Ib.Index.Agent') }}-->
+          <!--                </view>-->
+          <!--              </view>-->
+          <!--            </view>-->
+          <!--          </view>-->
           <!-- 归属推荐码 -->
           <!--          <view class="card code-card">
                       <view class="card-header">
@@ -124,7 +131,7 @@
 </view>
 <view class="code-content">
   <uni-easyinput class="code-input" :disabled="true" v-model="getInfoId" :clearable="false"></uni-easyinput>
-  <button class="link-btn">{{ t('Ib.Index.Copy') }}</button>
+  <button hover-class="" class="link-btn">{{ t('Ib.Index.Copy') }}</button>
 </view>
 </view>-->
         </uni-row>
@@ -137,8 +144,8 @@
                 <text class="header-title">{{ t('Ib.Index.MAMList') }}</text>
               </view>
               <view class="header-right" v-if="showAddMamAccount">
-                <cwg-droplist :menu-list="addMamAccountMenus" @menuClick="handleAddMamAccountMenuClick" >
-                  <button type="button" class="btn btn-danger btn-shadow waves-effect add-mam-btn">
+                <cwg-droplist :menu-list="addMamAccountMenus" @menuClick="handleAddMamAccountMenuClick">
+                  <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect add-mam-btn">
                     <cwg-icon name="icon_add" :size="16" color="#fff" />{{ t('Custom.Index.AddAccount') }}</button>
                 </cwg-droplist>
               </view>
@@ -636,7 +643,7 @@ const mamColumns = computed(() => [
 ])
 
 const mamMobilePrimaryFields = computed(() => [
-  { prop: 'mamAccount', width:120, label: t('Ib.Index.MAMAccount'), align: 'center', slot: 'mamAccount' },
+  { prop: 'mamAccount', width: 120, label: t('Ib.Index.MAMAccount'), align: 'center', slot: 'mamAccount' },
   { prop: 'type', label: t('Label.Type'), align: 'center', slot: 'mamType' },
   { prop: 'platform', label: t('Ib.Index.Platform'), align: 'center' },
   { prop: 'more', type: 'more', width: 20, align: 'right' },
@@ -731,7 +738,7 @@ const toDialogSubs = async (row) => {
 }
 
 onMounted(async () => {
-  let a= numberFormat(80.7)
+  let a = numberFormat(80.7)
   console.log(a)
   loading.value = true
   // 初始化数据
@@ -745,8 +752,8 @@ onMounted(async () => {
 <style lang="scss" scoped>
 @import "@/uni.scss";
 
-.clearfix{
-  .fw-bold{
+.clearfix {
+  .fw-bold {
     color: var(--bs-emphasis-color);
   }
 }
@@ -768,11 +775,11 @@ onMounted(async () => {
   flex-direction: column;
 }
 
-  .dashboard-container {
-    min-height: 10vh;
-    box-sizing: border-box;
-    height: 100%;
-  }
+.dashboard-container {
+  min-height: 10vh;
+  box-sizing: border-box;
+  height: 100%;
+}
 
 .mam-card {
   flex: 1;
@@ -780,36 +787,36 @@ onMounted(async () => {
   flex-direction: column;
 }
 
-  /* 卡片通用样式 */
-  .card {
-    border-radius: px2rpx(8);
-    box-shadow: 0 px2rpx(2) px2rpx(8) rgba(0, 0, 0, 0.06);
-    //background: var(--bs-body-bg);
-    //color: var(--bs-emphasis-color);
-    //padding: px2rpx(12) px2rpx(16);
-    //border-radius: 4rpx;
-    flex: 1;
-    margin: 0 px2rpx(5) px2rpx(10);
-    //box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.2);
-    display: flex;
-    flex-direction: column;
-    min-height: px2rpx(110);
-  }
+/* 卡片通用样式 */
+.card {
+  border-radius: px2rpx(8);
+  box-shadow: 0 px2rpx(2) px2rpx(8) rgba(0, 0, 0, 0.06);
+  //background: var(--bs-body-bg);
+  //color: var(--bs-emphasis-color);
+  //padding: px2rpx(12) px2rpx(16);
+  //border-radius: 4rpx;
+  flex: 1;
+  margin: 0 px2rpx(5) px2rpx(10);
+  //box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.2);
+  display: flex;
+  flex-direction: column;
+  min-height: px2rpx(110);
+}
 
-  .stat-card-clickable {
-    cursor: pointer;
+.stat-card-clickable {
+  cursor: pointer;
 
-    &:hover {
-      box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.1);
-    }
-  }
-  
-  .dashboard-container .card-body {
-    flex: 1;
-    display: flex;
-    align-items: center;
-    padding: px2rpx(16);
+  &:hover {
+    box-shadow: 0 px2rpx(4) px2rpx(12) rgba(0, 0, 0, 0.1);
   }
+}
+
+.dashboard-container .card-body {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  padding: px2rpx(16);
+}
 
 .custom-dialog-content {
   padding: px2rpx(20);
@@ -826,7 +833,8 @@ onMounted(async () => {
   justify-content: space-between;
   align-items: center;
   margin-bottom: px2rpx(12);
-  .btn{
+
+  .btn {
     margin: 0;
     display: flex;
     align-items: center;
@@ -848,6 +856,7 @@ onMounted(async () => {
 .header-right {
   display: flex;
   align-items: center;
+
   @media screen and (max-width: 991px) {
     :deep(.cwg-dropdown-menu-container) {
       right: px2rpx(-20) !important;
@@ -1018,10 +1027,10 @@ onMounted(async () => {
   gap: 16rpx;
 }
 
-  .add-mam-btn {
-    display: flex;
-    justify-content: center;
-  }
+.add-mam-btn {
+  display: flex;
+  justify-content: center;
+}
 
 .mam-line {
   display: flex;
@@ -1044,6 +1053,7 @@ onMounted(async () => {
   font-size: px2rpx(12);
   line-height: 1.4;
 }
+
 .img-fluid {
   width: px2rpx(50);
   height: px2rpx(50);

+ 17 - 10
pages/ib/linkList.vue

@@ -13,7 +13,8 @@
         <template #link="{ row }">
           <view class="link-cell">
             <uni-easyinput class="read-input" disabled v-model.trim="row.link"></uni-easyinput>
-            <view class="qr-code-icon cursor-pointer" @click.stop="showQrCodeDialog(row.link)" :data-tooltip="t('vu.tooltip.t19')">
+            <view class="qr-code-icon cursor-pointer" @click.stop="showQrCodeDialog(row.link)"
+              :data-tooltip="t('vu.tooltip.t19')">
               <svg style="width: 18px; height: 18px; fill: #409eff; vertical-align: middle;" viewBox="0 0 24 24"
                 xmlns="http://www.w3.org/2000/svg">
                 <path
@@ -60,19 +61,22 @@
               @change="(val) => handleAccountTypeChange('cent', '8', val)" :placeholder="t('placeholder.choose')" />
 
             <view class="btn-top">
-              <button style="width: 150px" class="crm-cursor btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1" @click="CreateLink">{{ t('Ib.Index.CreateLink') }}
+              <button hover-class="" style="width: 150px"
+                class="crm-cursor btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1" @click="CreateLink">{{
+                  t('Ib.Index.CreateLink') }}
               </button>
             </view>
             <view class="link qrCode" v-if="link">
               <QrCode ref="qrCode" :text="link" :width="200" :height="200" />
               <view class="btn-top">
-                <button class="crm-cursor btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1" @click="downloadQrCode()">{{ t('Btn.item9') }}
+                <button hover-class="" class="crm-cursor btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1"
+                  @click="downloadQrCode()">{{ t('Btn.item9') }}
                 </button>
               </view>
             </view>
             <view class="link" v-if="link">
               <uni-easyinput disabled v-model="link" />
-              <button class="btn-copy" @click="CopyLink(link)">
+              <button hover-class="" class="btn-copy" @click="CopyLink(link)">
                 {{ t('Ib.Index.Copy') }}
               </button>
             </view>
@@ -81,7 +85,8 @@
               <view class="account-adjust-notes-section">
                 <view class="account-adjust-notes-title">
                   <cwg-icon name="icon_about us" color="#333" :size="18" class="account-adjust-notes-title-icon" />
-                  <text class="account-adjust-notes-title-text">{{ t('Ib.Custom.AccountAdjustNotesSection1Title') }}</text>
+                  <text class="account-adjust-notes-title-text">{{ t('Ib.Custom.AccountAdjustNotesSection1Title')
+                    }}</text>
                 </view>
                 <view class="account-adjust-notes-list">
                   <view class="account-adjust-notes-item">{{ t('Ib.Custom.AccountAdjustNotesSection1Item1') }}</view>
@@ -89,7 +94,7 @@
                 </view>
               </view>
             </view>
-            
+
           </view>
         </view>
       </cwg-popup>
@@ -100,7 +105,8 @@
           <QrCode ref="dialogQrCode" v-if="currentQrCodeLink" :text="currentQrCodeLink" :width="300" :height="300">
           </QrCode>
           <view v-if="currentQrCodeLink" class="qr-code-btn">
-            <button class="crm-cursor btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1" @click="downloadDialogQrCode">
+            <button hover-class="" class="crm-cursor btn btn-dark btn-sm waves-effect waves-light btn-outline-dark1"
+              @click="downloadDialogQrCode">
               {{ t('Btn.item9') }}
             </button>
           </view>
@@ -182,7 +188,7 @@ const getInfoId = computed(() => {
 
 listApi.value = ibApi.customLinkSearchList
 
-const columns = computed(()=>([
+const columns = computed(() => ([
   {
     prop: 'name',
     label: t('Ib.Custom.NameLabel'),
@@ -649,7 +655,7 @@ const closeDetail = () => {
   display: flex;
   margin-top: px2rpx(20);
 
-  .btn-copy{
+  .btn-copy {
     display: flex;
     align-items: center;
     justify-content: center;
@@ -676,6 +682,7 @@ const closeDetail = () => {
     margin-top: px2rpx(16);
   }
 }
+
 .account-adjust-notes-panel {
   margin-bottom: 18px;
   padding: 14px 16px;
@@ -687,7 +694,7 @@ const closeDetail = () => {
 }
 
 .account-adjust-notes-section {
-  & + .account-adjust-notes-section {
+  &+.account-adjust-notes-section {
     margin-top: 14px;
     padding-top: 14px;
     border-top: 1px dashed #dcdfe6;

+ 3 - 2
pages/ib/openAccount.vue

@@ -56,7 +56,8 @@
                 </uni-forms-item>
               </uni-col>
               <uni-col :span="24">
-                <button class="s-btn" type="primary" @click="newAccount">{{ t('Ib.NewAccount.Btn') }}</button>
+                <button hover-class="" class="s-btn" type="primary" @click="newAccount">{{ t('Ib.NewAccount.Btn')
+                  }}</button>
               </uni-col>
             </uni-row>
           </uni-forms>
@@ -81,7 +82,7 @@
           <view>
             <text>{{ t('Ib.NewAccount.Dec5') }}</text>
             <text class="crm-cursor" style="color: #368FEC;" @click="openLeverageMargin">{{ t('Ib.NewAccount.Dec6')
-              }}</text>
+            }}</text>
             <text>{{ t('Ib.NewAccount.Dec7') }}</text>
           </view>
         </view>

+ 2 - 1
pages/ib/openPammManager.vue

@@ -35,7 +35,8 @@
                 </uni-forms-item>
               </uni-col>
               <uni-col :span="24">
-                <button class="s-btn" type="primary" @click="newAccount">{{ t('Ib.PammManager.btn') }}</button>
+                <button hover-class="" class="s-btn" type="primary" @click="newAccount">{{ t('Ib.PammManager.btn')
+                  }}</button>
               </uni-col>
             </uni-row>
           </uni-forms>

+ 5 - 5
pages/ib/promotion.vue

@@ -36,8 +36,8 @@
           </view>
           <view class="media-actions">
             <checkbox class="action-checkbox" style="transform:scale(0.8)" />
-            <button class="action-btn main-btn">选择视频</button>
-            <button class="action-btn icon-btn">
+            <button hover-class="" class="action-btn main-btn">选择视频</button>
+            <button hover-class="" class="action-btn icon-btn">
               <cwg-icon name="crm-download" :size="18" color="#333" />
             </button>
           </view>
@@ -69,8 +69,8 @@
           </view>
           <view class="media-actions">
             <checkbox class="action-checkbox" style="transform:scale(0.8)" />
-            <button class="action-btn main-btn">选择GIF</button>
-            <button class="action-btn icon-btn">
+            <button hover-class="" class="action-btn main-btn">选择GIF</button>
+            <button hover-class="" class="action-btn icon-btn">
               <cwg-icon name="crm-download" :size="18" color="#333" />
             </button>
           </view>
@@ -84,7 +84,7 @@
             <image class="logo-img" :src="item.cover" mode="aspectFit"></image>
           </view>
           <view class="media-actions logo-actions">
-            <button class="action-btn main-btn">下载</button>
+            <button hover-class="" class="action-btn main-btn">下载</button>
           </view>
         </view>
       </view>

+ 6 - 4
pages/ib/settingPammManager.vue

@@ -47,11 +47,12 @@
 
         <!-- 中间操作按钮 -->
         <view class="transfer-actions">
-          <button class="action-btn right" :disabled="leftChecked.length === 0" @click="moveToRight">
+          <button hover-class="" class="action-btn right" :disabled="leftChecked.length === 0" @click="moveToRight">
             <text>></text>
           </button>
-          <button class="action-btn left" :disabled="rightChecked.length === 0" @click="moveToLeft">
-            <text><</text>
+          <button hover-class="" class="action-btn left" :disabled="rightChecked.length === 0" @click="moveToLeft">
+            <text>
+              << /text>
           </button>
         </view>
 
@@ -79,7 +80,8 @@
       </view>
 
       <view class="submit-bar">
-        <button type="primary" class="submit-btn btn btn-dark waves-effect waves-light" @click="applySubmit">{{ t('Btn.Confirm') }}</button>
+        <button hover-class="" type="primary" class="submit-btn btn btn-dark waves-effect waves-light"
+          @click="applySubmit">{{ t('Btn.Confirm') }}</button>
       </view>
     </view>
 

+ 241 - 255
pages/ib/subsList.vue

@@ -7,13 +7,14 @@
       <cwg-match-media :max-width="991">
         <view class="search-content mobile-search-content">
           <view class="search-bar mobile-add-btn-wrap">
-            <button type="primary" class="search-button" @click="addSub">
+            <button hover-class="" type="primary" class="search-button" @click="addSub">
               <cwg-icon name="icon_add" :size="18" color="#fff"></cwg-icon>
               {{ t('Ib.Report.Title5') }}
             </button>
           </view>
           <view class="search-bar">
-            <cwg-complex-search :fields="filterFields" v-model="searchParams" @search="handleSearch" @reset="handleReset" />
+            <cwg-complex-search :fields="filterFields" v-model="searchParams" @search="handleSearch"
+              @reset="handleReset" />
           </view>
         </view>
       </cwg-match-media>
@@ -23,10 +24,10 @@
         <view class="search-content pc-search-content">
           <view class="search-bar">
             <cwg-complex-search :fields="filterFields" v-model="searchParams" @search="handleSearch"
-                                @reset="handleReset" noData/>
+              @reset="handleReset" noData />
           </view>
           <view class="search-bar">
-            <button type="primary" class="search-button" @click="addSub">
+            <button hover-class="" type="primary" class="search-button" @click="addSub">
               <cwg-icon name="icon_add" :size="18" color="#fff"></cwg-icon>
               {{ t('Ib.Report.Title5') }}
             </button>
@@ -34,36 +35,20 @@
         </view>
       </cwg-match-media>
 
-      <cwg-tabel
-        ref="tableRef"
-        :columns="columns"
-        :mobilePrimaryFields="mobilePrimaryFields"
-        :queryParams="search"
-        :api="listApi"
-        :show-operation="true"
-        :showPagination="true"
-      >
+      <cwg-tabel ref="tableRef" :columns="columns" :mobilePrimaryFields="mobilePrimaryFields" :queryParams="search"
+        :api="listApi" :show-operation="true" :showPagination="true">
       </cwg-tabel>
     </view>
     <ApplyIbDialog ref="applyIbDialogRef" :visible="applyVisible" @close="closeApplyIb" @confirm="confirmApply"
-                   :title="formDia?'Ib.Report.Title5':'Ib.Custom.Commit3'" :isFormApplyIb="formDia"
-                   :paramsType="applyType" :detail="applyDetail" />
-    <cwg-popup
-      :visible="exclusiveVisible"
-      :title="t('Ib.Custom.Commit5')"
-      :cancelText="t('Btn.Cancel')"
-      :confirmText="t('Btn.Confirm')"
-      @close="cancelExclusiveCommission"
-      @confirm="confirmExclusiveCommission"
-    >
+      :title="formDia ? 'Ib.Report.Title5' : 'Ib.Custom.Commit3'" :isFormApplyIb="formDia" :paramsType="applyType"
+      :detail="applyDetail" />
+    <cwg-popup :visible="exclusiveVisible" :title="t('Ib.Custom.Commit5')" :cancelText="t('Btn.Cancel')"
+      :confirmText="t('Btn.Confirm')" @close="cancelExclusiveCommission" @confirm="confirmExclusiveCommission">
       <view class="dia-content">
         <uni-forms ref="exclusiveCommissionFormRef" labelWidth="240">
           <uni-forms-item :label="t('Ib.Custom.Commit5')" prop="selectedPoint">
-            <cwg-combox
-              v-model:value="exclusiveCommissionForm.selectedPoint"
-              :options="exclusiveCommissionForm.pointOptions"
-              :placeholder="t('placeholder.choose')"
-            />
+            <cwg-combox v-model:value="exclusiveCommissionForm.selectedPoint"
+              :options="exclusiveCommissionForm.pointOptions" :placeholder="t('placeholder.choose')" />
           </uni-forms-item>
         </uni-forms>
       </view>
@@ -72,259 +57,260 @@
 </template>
 
 <script setup lang="ts">
-  // 代理管理
-  import { ref, reactive, computed, onMounted, onUnmounted } from 'vue'
-  import { onLoad } from '@dcloudio/uni-app'
-  import { useI18n } from 'vue-i18n' // uni-app 中已集成,但需配置
-  import { customApi } from '@/service/custom'
-  import { financialApi } from '@/service/financial'
-  import Config from '@/config/index'
-  import { ibApi } from '@/service/ib'
-  import { useFilters } from '@/composables/useFilters'
-  import ApplyIbDialog from '@/pages/ib/components/applyIbDialog.vue'
-  import { nextTick } from 'vue'
-
-  const { numberFormat, numberDecimal } = useFilters()
-  const { t, locale } = useI18n()
-  const { Code } = Config
-  const searchParams = ref({})
-  const search = reactive({
-    ibNo: '',
-    name: '',
-    cId: '',
-  })
+// 代理管理
+import { ref, reactive, computed, onMounted, onUnmounted } from 'vue'
+import { onLoad } from '@dcloudio/uni-app'
+import { useI18n } from 'vue-i18n' // uni-app 中已集成,但需配置
+import { customApi } from '@/service/custom'
+import { financialApi } from '@/service/financial'
+import Config from '@/config/index'
+import { ibApi } from '@/service/ib'
+import { useFilters } from '@/composables/useFilters'
+import ApplyIbDialog from '@/pages/ib/components/applyIbDialog.vue'
+import { nextTick } from 'vue'
 
-  const filterFields = computed(()=>[
-    { key: 'ibNo', type: 'input', label: t('Label.IbAccount'), placeholder: t('Label.IbAccount'), defaultValue: '' },
-    {
-      key: 'name',
-      type: 'input',
-      label: t('Ib.Custom.NameLabel'),
-      placeholder: t('Ib.Custom.NameLabel'),
-      defaultValue: '',
-    },
-    { key: 'cId', type: 'input', label: 'CID', placeholder: 'CID', defaultValue: '' },
-    { key: 'date', label: t('placeholder.Start') + ' - ' + t('placeholder.End'), type: 'daterange',defaultValue: ['',''] },
-  ])
-  const tableRef = ref(null)
-  const applyIbDialogRef = ref(null)
-  const applyVisible = ref(false)
-  const applyType = ref('')
-  const applyDetail = ref()
-  const formDia = ref(false)
-  const exclusiveVisible = ref(false)
-  const exclusiveCommissionFormRef = ref(null)
-  const exclusiveCommissionForm = ref({
-    agentId: '',
-    selectedPoint: '',
-    pointOptions: [],
-  })
-  const exclusiveRow = ref<any>(null)
-  // 表格列配置
-  const columns = computed(() => [
-    {
-      prop: 'cId',
-      label: t('Label.CidAccount'),
-      align: 'center',
-    },
-    {
-      prop: 'ibNo',
-      label: t('Label.IbAccount'),
-      align: 'center',
-    },
-    {
-      prop: 'name',
-      label: t('Ib.Custom.NameLabel'),
-      align: 'center',
-    },
-    {
-      prop: 'agentNum',
-      label: t('Ib.Custom.AgentNum'),
-      align: 'center',
-    },
-    {
-      prop: 'customNum',
-      label: t('Ib.Custom.CustomerNum'),
-      align: 'center',
-    },
-    {
-      prop: 'addTime',
-      label: t('Label.ApplyTime'),
-      align: 'center',
-    },
-    {
-      prop: 'lastTime',
-      label: t('Ib.Custom.LastActiveTime'),
-      align: 'center',
-    },
-    {
-      prop: 'action',
-      label: t('Label.Action'),
-      type: 'action',
-      align: 'center',
-      menuList: [
-        {
-          label: t('Ib.Custom.Commit3'),
-          type: 'vietnamDistribution',
-          btnClick: (row) => handleMenuClick({ type: 'vietnamDistribution', row }),
-          show: true,
-        },
-        {
-          label: t('Ib.Custom.Commit5'),
-          type: 'exclusiveCommission',
-          btnClick: (row) => handleMenuClick({ type: 'exclusiveCommission', row }),
-          show: (row) => row.exclusiveCommissionOptions?.length > 0,
-        },
-      ],
-    },
-  ])
+const { numberFormat, numberDecimal } = useFilters()
+const { t, locale } = useI18n()
+const { Code } = Config
+const searchParams = ref({})
+const search = reactive({
+  ibNo: '',
+  name: '',
+  cId: '',
+})
 
-  const mobilePrimaryFields = computed(() => [
-    {
-      prop: 'cId',
-      label: t('Label.CidAccount'),
-      align: 'center',
-    },
-    {
-      prop: 'ibNo',
-      label: t('Label.IbAccount'),
-      align: 'center',
-    },
-    {
-      prop: 'name',
-      label: t('Ib.Custom.NameLabel'),
-      align: 'center',
-    },
-    {
-      prop: 'more',
-      type: 'more',
-      width: 20,
-      align: 'right',
-    },
-  ])
+const filterFields = computed(() => [
+  { key: 'ibNo', type: 'input', label: t('Label.IbAccount'), placeholder: t('Label.IbAccount'), defaultValue: '' },
+  {
+    key: 'name',
+    type: 'input',
+    label: t('Ib.Custom.NameLabel'),
+    placeholder: t('Ib.Custom.NameLabel'),
+    defaultValue: '',
+  },
+  { key: 'cId', type: 'input', label: 'CID', placeholder: 'CID', defaultValue: '' },
+  { key: 'date', label: t('placeholder.Start') + ' - ' + t('placeholder.End'), type: 'daterange', defaultValue: ['', ''] },
+])
+const tableRef = ref(null)
+const applyIbDialogRef = ref(null)
+const applyVisible = ref(false)
+const applyType = ref('')
+const applyDetail = ref()
+const formDia = ref(false)
+const exclusiveVisible = ref(false)
+const exclusiveCommissionFormRef = ref(null)
+const exclusiveCommissionForm = ref({
+  agentId: '',
+  selectedPoint: '',
+  pointOptions: [],
+})
+const exclusiveRow = ref<any>(null)
+// 表格列配置
+const columns = computed(() => [
+  {
+    prop: 'cId',
+    label: t('Label.CidAccount'),
+    align: 'center',
+  },
+  {
+    prop: 'ibNo',
+    label: t('Label.IbAccount'),
+    align: 'center',
+  },
+  {
+    prop: 'name',
+    label: t('Ib.Custom.NameLabel'),
+    align: 'center',
+  },
+  {
+    prop: 'agentNum',
+    label: t('Ib.Custom.AgentNum'),
+    align: 'center',
+  },
+  {
+    prop: 'customNum',
+    label: t('Ib.Custom.CustomerNum'),
+    align: 'center',
+  },
+  {
+    prop: 'addTime',
+    label: t('Label.ApplyTime'),
+    align: 'center',
+  },
+  {
+    prop: 'lastTime',
+    label: t('Ib.Custom.LastActiveTime'),
+    align: 'center',
+  },
+  {
+    prop: 'action',
+    label: t('Label.Action'),
+    type: 'action',
+    align: 'center',
+    menuList: [
+      {
+        label: t('Ib.Custom.Commit3'),
+        type: 'vietnamDistribution',
+        btnClick: (row) => handleMenuClick({ type: 'vietnamDistribution', row }),
+        show: true,
+      },
+      {
+        label: t('Ib.Custom.Commit5'),
+        type: 'exclusiveCommission',
+        btnClick: (row) => handleMenuClick({ type: 'exclusiveCommission', row }),
+        show: (row) => row.exclusiveCommissionOptions?.length > 0,
+      },
+    ],
+  },
+])
 
+const mobilePrimaryFields = computed(() => [
+  {
+    prop: 'cId',
+    label: t('Label.CidAccount'),
+    align: 'center',
+  },
+  {
+    prop: 'ibNo',
+    label: t('Label.IbAccount'),
+    align: 'center',
+  },
+  {
+    prop: 'name',
+    label: t('Ib.Custom.NameLabel'),
+    align: 'center',
+  },
+  {
+    prop: 'more',
+    type: 'more',
+    width: 20,
+    align: 'right',
+  },
+])
 
-  const listApi = ref(ibApi.IbSubs)
 
-  const handleSearch = (params: any) => {
-    // 拦截处理 daterange,将 date 拆分为 startDate 和 endDate
-    console.log(params)
-    const payload = { ...params }
-    Object.assign(search, payload)
+const listApi = ref(ibApi.IbSubs)
 
-    nextTick(() => {
-      tableRef.value.refreshTable()
-    })
-  }
+const handleSearch = (params: any) => {
+  // 拦截处理 daterange,将 date 拆分为 startDate 和 endDate
+  console.log(params)
+  const payload = { ...params }
+  Object.assign(search, payload)
 
-  const handleReset = (params: any) => {
-    Object.assign(search, params)
-    nextTick(() => {
-      tableRef.value.refreshTable()
-    })
-  }
+  nextTick(() => {
+    tableRef.value.refreshTable()
+  })
+}
 
-  onMounted(() => {
-    // applyVisible.value = true
+const handleReset = (params: any) => {
+  Object.assign(search, params)
+  nextTick(() => {
+    tableRef.value.refreshTable()
   })
-  const handleMenuClick = (item) => {
-    if (item.type == 'vietnamDistribution') {
-      const { agentId, id } = item.row
-      applyDetail.value = {
-        id: id || agentId,
-      }
-      formDia.value = false
-      applyType.value = 'vietnam'
-      applyVisible.value = true
-    } else if (item.type == 'exclusiveCommission') {
-      openExclusiveCommission(item.row)
+}
+
+onMounted(() => {
+  // applyVisible.value = true
+})
+const handleMenuClick = (item) => {
+  if (item.type == 'vietnamDistribution') {
+    const { agentId, id } = item.row
+    applyDetail.value = {
+      id: id || agentId,
     }
-  }
-  const addSub = () => {
-    formDia.value = true
+    formDia.value = false
+    applyType.value = 'vietnam'
     applyVisible.value = true
+  } else if (item.type == 'exclusiveCommission') {
+    openExclusiveCommission(item.row)
   }
-  const closeApplyIb = () => {
-    applyDetail.value = {}
-    applyVisible.value = false
-  }
-  const confirmApply = (data) => {
-    tableRef.value.refreshTable()
-  }
+}
+const addSub = () => {
+  formDia.value = true
+  applyVisible.value = true
+}
+const closeApplyIb = () => {
+  applyDetail.value = {}
+  applyVisible.value = false
+}
+const confirmApply = (data) => {
+  tableRef.value.refreshTable()
+}
 
-  const normalizePointOptions = (options: any[]) => {
-    if (!Array.isArray(options)) return []
-    return options.map((o: any) => ({
-      text: o.label ?? o.text ?? o.name ?? String(o.value ?? ''),
-      value: o.value,
-    }))
-  }
+const normalizePointOptions = (options: any[]) => {
+  if (!Array.isArray(options)) return []
+  return options.map((o: any) => ({
+    text: o.label ?? o.text ?? o.name ?? String(o.value ?? ''),
+    value: o.value,
+  }))
+}
 
-  const openExclusiveCommission = async (row: any) => {
-    exclusiveCommissionForm.value.agentId = row.id
-    exclusiveCommissionForm.value.selectedPoint = ''
-    exclusiveCommissionForm.value.pointOptions = normalizePointOptions(row?.exclusiveCommissionOptions || [])
-    exclusiveVisible.value = true
-  }
+const openExclusiveCommission = async (row: any) => {
+  exclusiveCommissionForm.value.agentId = row.id
+  exclusiveCommissionForm.value.selectedPoint = ''
+  exclusiveCommissionForm.value.pointOptions = normalizePointOptions(row?.exclusiveCommissionOptions || [])
+  exclusiveVisible.value = true
+}
 
-  const cancelExclusiveCommission = () => {
-    exclusiveVisible.value = false
-    exclusiveCommissionForm.value.selectedPoint = ''
-    exclusiveCommissionForm.value.pointOptions = []
-  }
+const cancelExclusiveCommission = () => {
+  exclusiveVisible.value = false
+  exclusiveCommissionForm.value.selectedPoint = ''
+  exclusiveCommissionForm.value.pointOptions = []
+}
 
-  const confirmExclusiveCommission = async () => {
-    try {
-      const res = await ibApi.agentHiddenPointAdd({
-        agentId: exclusiveCommissionForm.value.agentId,
-        point: [{ value: exclusiveCommissionForm.value.selectedPoint }],
-      })
-      if (res.code == Code.StatusOK) {
-        cancelExclusiveCommission()
-        tableRef.value?.refreshTable?.()
-      }
-    } catch (e) {
+const confirmExclusiveCommission = async () => {
+  try {
+    const res = await ibApi.agentHiddenPointAdd({
+      agentId: exclusiveCommissionForm.value.agentId,
+      point: [{ value: exclusiveCommissionForm.value.selectedPoint }],
+    })
+    if (res.code == Code.StatusOK) {
+      cancelExclusiveCommission()
+      tableRef.value?.refreshTable?.()
     }
+  } catch (e) {
   }
+}
 </script>
 <style lang="scss" scoped>
-  @import "@/uni.scss";
+@import "@/uni.scss";
 
-  .search-content {
-    display: flex;
-  }
+.search-content {
+  display: flex;
+}
 
-  /* PC 端对齐方式 */
-  .pc-search-content {
-    justify-content: space-between;
-    align-items: flex-start;
-    margin-bottom: px2rpx(10);
-  }
+/* PC 端对齐方式 */
+.pc-search-content {
+  justify-content: space-between;
+  align-items: flex-start;
+  margin-bottom: px2rpx(10);
+}
 
-  /* 移动端排版方式 */
-  .mobile-search-content {
-    flex-direction: column;
-    margin-bottom: px2rpx(10);
+/* 移动端排版方式 */
+.mobile-search-content {
+  flex-direction: column;
+  margin-bottom: px2rpx(10);
 
-    .mobile-add-btn-wrap {
-      display: flex;
-      justify-content: flex-end;
-      width: 100%;
-      margin-bottom: px2rpx(10);
+  .mobile-add-btn-wrap {
+    display: flex;
+    justify-content: flex-end;
+    width: 100%;
+    margin-bottom: px2rpx(10);
 
-      .search-button {
-        background-color: var(--bs-secondary);
-        margin: 0 0 0 auto; /* 强制按钮靠右且消除其它 margin */
-      }
+    .search-button {
+      background-color: var(--bs-secondary);
+      margin: 0 0 0 auto;
+      /* 强制按钮靠右且消除其它 margin */
     }
   }
+}
 
-  .search-button {
-    display: flex;
-    align-items: center;
-    background-color: var(--bs-secondary);
-    line-height: px2rpx(36);
-    min-width: px2rpx(120);
-    border-radius: px2rpx(8);
-  }
+.search-button {
+  display: flex;
+  align-items: center;
+  background-color: var(--bs-secondary);
+  line-height: px2rpx(36);
+  min-width: px2rpx(120);
+  border-radius: px2rpx(8);
+}
 </style>

+ 13 - 10
pages/ib/withdraw-select.vue

@@ -29,7 +29,8 @@
                             <view class="card-body pt-0" v-if="currentTableData.length > 0">
                                 <view class="tab-content">
                                     <view>
-                                        <PaymentMethodsList :title="t('Custom.Deposit.Title22')" :list="currentTableData" @select="isShowStep3" />
+                                        <PaymentMethodsList :title="t('Custom.Deposit.Title22')"
+                                            :list="currentTableData" @select="isShowStep3" />
                                     </view>
                                 </view>
                             </view>
@@ -46,16 +47,16 @@
                     <view class="b-card">
                         <view class="card-top">
                             <text class="tit">{{ t('Custom.Deposit.Title22')
-                            }}</text>
+                                }}</text>
                             <cwg-asset-tabs v-if="tabsConfig.length > 0" v-model="activeTab" :tabs="tabsConfig" />
                             <uni-loading v-if="currentTableData.length == 0" />
                             <view v-if="currentTableData.length">
                                 <PaymentMethodsList :list="currentTableData" @select="isShowStep3" />
                             </view>
                             <view v-if="step3" class="reselect-btn">
-                                <button class="s-btn reselect" type="primary" @click="showTable">{{
+                                <button hover-class="" class="s-btn reselect" type="primary" @click="showTable">{{
                                     t('Custom.Deposit.Reselect')
-                                }}</button>
+                                    }}</button>
                             </view>
                         </view>
                     </view>
@@ -192,7 +193,7 @@
                                                 </text>
                                                 <text v-if="channelData.type == 'BANK'">{{
                                                     t('Custom.Withdraw.addBank')
-                                                }}</text>
+                                                    }}</text>
                                                 <text v-if="channelData.type == 'BANK'" class="add-btn crm-cursor"
                                                     @click="openAddBankCard('add_bankCard')">
                                                     {{ t('Custom.Withdraw.addBank1') }}
@@ -355,7 +356,7 @@
                                     <uni-col :span="24" v-if="channelData.type != 'BANK_TELEGRAPHIC' && isStep3">
                                         <view class="tit">
                                             <text>{{ t('Custom.Withdraw.Title3') + '(' + channelData.currency + ')'
-                                            }}</text>
+                                                }}</text>
                                         </view>
                                     </uni-col>
                                     <uni-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"
@@ -395,7 +396,8 @@
                                         </checkbox-group>
                                     </uni-forms-item>
                                 </view>
-                                <button class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit') }}</button>
+                                <button hover-class="" class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit')
+                                    }}</button>
 
                             </uni-forms>
                         </view>
@@ -1525,9 +1527,10 @@ watch(() => form.amount, (newVal) => {
 
 <style lang="scss" scoped>
 @import "@/uni.scss";
-.card-header{
-  border: none;
-  padding-bottom: px2rpx(0);
+
+.card-header {
+    border: none;
+    padding-bottom: px2rpx(0);
 }
 
 .custom-withdraw {

+ 23 - 19
pages/ib/withdraw.vue

@@ -99,7 +99,7 @@
                                             <h6 class="mb-3">
                                                 <text>{{
                                                     t('Custom.Withdraw.addBank')
-                                                    }}</text>
+                                                }}</text>
                                                 <text class="add-btn crm-cursor"
                                                     @click="openAddBankCard('add_bankCard')">
                                                     {{ t('Custom.Withdraw.addBank1') }}
@@ -302,7 +302,8 @@
                                             <checkbox-group :value="form.agree2 ? ['1'] : []" @change="onAgree2Change">
                                                 <label class="checkbox">
                                                     <checkbox value="1" :checked="form.agree2" />
-                                                    <view class="crm-cursor check-text cursor-pointer" :data-tooltip="t('vu.tooltip.t13')"
+                                                    <view class="crm-cursor check-text cursor-pointer"
+                                                        :data-tooltip="t('vu.tooltip.t13')"
                                                         style="text-decoration: underline; display: inline-block; margin-left: 10px;color: #333;"
                                                         @click.stop="dialogCheckTip = true">
                                                         {{ t('Custom.Withdraw.Des') }}
@@ -325,8 +326,8 @@
                                             </checkbox-group>
                                         </uni-forms-item>
                                     </view>
-                                    <button class="btn btn-dark waves-effect waves-light" @click="openTips"
-                                        v-t="'Btn.Submit'"></button>
+                                    <button hover-class="" class="btn btn-dark waves-effect waves-light"
+                                        @click="openTips" v-t="'Btn.Submit'"></button>
                                 </view>
 
 
@@ -352,9 +353,9 @@
                         <view class="b-card">
                             <view class="card-top">
                                 <text class="tit">{{ t('Custom.Deposit.Title22')
-                                }}</text>
-                                <cwg-combox needSpace :clearable="false" v-model:value="channelId" :options="channelListOptions"
-                                    :placeholder="t('placeholder.choose')">
+                                    }}</text>
+                                <cwg-combox needSpace :clearable="false" v-model:value="channelId"
+                                    :options="channelListOptions" :placeholder="t('placeholder.choose')">
                                 </cwg-combox>
                             </view>
                         </view>
@@ -476,7 +477,7 @@
                                                     </text>
                                                     <text v-if="channelData.type == 'BANK'">{{
                                                         t('Custom.Withdraw.addBank')
-                                                    }}</text>
+                                                        }}</text>
                                                     <text v-if="channelData.type == 'BANK'" class="add-btn crm-cursor"
                                                         @click="openAddBankCard('add_bankCard')">
                                                         {{ t('Custom.Withdraw.addBank1') }}
@@ -624,7 +625,7 @@
                                         <view v-if="channelData.type != 'BANK_TELEGRAPHIC'">
                                             <view class="tit">
                                                 <text>{{ t('Custom.Withdraw.Title3') + '(' + channelData.currency + ')'
-                                                }}</text>
+                                                    }}</text>
                                             </view>
                                         </view>
                                         <view v-if="channelData.type != 'BANK_TELEGRAPHIC'"
@@ -665,8 +666,9 @@
                                             </checkbox-group>
                                         </uni-forms-item>
                                     </view>
-                                    <button class="s-btn" type="primary" @click="openTips">{{ t('Btn.Submit')
-                                    }}</button>
+                                    <button hover-class="" class="s-btn" type="primary" @click="openTips">{{
+                                        t('Btn.Submit')
+                                        }}</button>
 
                                 </uni-forms>
                             </view>
@@ -1905,8 +1907,9 @@ watch(() => form.amount, (newVal) => {
 
 <style lang="scss" scoped>
 @import "@/uni.scss";
-.tips{
-  color: var(--bs-emphasis-color);
+
+.tips {
+    color: var(--bs-emphasis-color);
 }
 
 .custom-withdraw {
@@ -2206,11 +2209,12 @@ watch(() => form.amount, (newVal) => {
         flex-wrap: wrap;
     }
 }
-.check-text{
-  display: inline-block;
-  margin-left: 10px;
-  color: #333;
-  line-height: 2;
-  font-size: px2rpx(13);
+
+.check-text {
+    display: inline-block;
+    margin-left: 10px;
+    color: #333;
+    line-height: 2;
+    font-size: px2rpx(13);
 }
 </style>

+ 2 - 2
pages/login/index.vue

@@ -104,7 +104,7 @@
                 </navigator>
               </view>
               <view class="cwg-button ">
-                <button type="primary" class="" @click="submit">
+                <button hover-class="" type="primary" class="" @click="submit">
                   {{ t('signin.login') }}
                 </button>
               </view>
@@ -238,7 +238,7 @@
                 </uni-forms>
               </view>
               <view>
-                <button class="regiset-btn" @click="register">
+                <button hover-class="" class="regiset-btn" @click="register">
                   {{ t('signup.button') }}
                 </button>
               </view>

+ 10 - 10
pages/login/reset.vue

@@ -1,12 +1,12 @@
 <template>
-  <cwg-page-wrapper :isLoginPage="true" >
+  <cwg-page-wrapper :isLoginPage="true">
     <view class="main-content">
 
       <view class="global-header-bar pc-header">
         <view class="header-inner">
           <view class="logo-placeholder"></view> <!-- 左侧可预留放logo或留空 -->
           <!-- 这里由于没有深色背景,传递深色文字颜色 -->
-          <LoginHeaderGroup text-color="#fff" :icon-color="isDark ? '#fff' : '#97A1C0' " />
+          <LoginHeaderGroup text-color="#fff" :icon-color="isDark ? '#fff' : '#97A1C0'" />
         </view>
       </view>
 
@@ -24,20 +24,20 @@
               <uni-easyinput v-model="email" :placeholder="t('newSignup.item7')" class="custom-input">
               </uni-easyinput>
 
-              <view class="reset-button" >
-                <button class="btn btn-danger" @click="handleReset">{{ t('forget.forget') }}</button>
+              <view class="reset-button">
+                <button hover-class="" class="btn btn-danger" @click="handleReset">{{ t('forget.forget') }}</button>
               </view>
-              <view class="login-link" >
-                <button @click="handleLogin" class="link-text">{{ t('forget.cancel') }}</button>
+              <view class="login-link">
+                <button hover-class="" @click="handleLogin" class="link-text">{{ t('forget.cancel') }}</button>
               </view>
             </view>
           </uni-col>
         </uni-row>
       </view>
-<!--      <view class="chat-icon" :class="{ 'chat-icon-expanded': isChatIconExpanded, 'chat-icon-hidden': type == 'chat' }"-->
-<!--        @click="handleChatIconClick">-->
-<!--        <cwg-icon name="chat" color="#fff" />-->
-<!--      </view>-->
+      <!--      <view class="chat-icon" :class="{ 'chat-icon-expanded': isChatIconExpanded, 'chat-icon-hidden': type == 'chat' }"-->
+      <!--        @click="handleChatIconClick">-->
+      <!--        <cwg-icon name="chat" color="#fff" />-->
+      <!--      </view>-->
     </view>
   </cwg-page-wrapper>
 </template>

+ 695 - 722
pages/mine/components/BankInfoTab.vue

@@ -5,7 +5,7 @@
         <view class="card">
           <view class="bank-menu card-header">
             <view v-for="item in bankTypes" :key="item.key" class="bank-menu-item"
-                  :class="{ active: selectedBankType === item.key }" @click="selectedBankType = item.key">
+              :class="{ active: selectedBankType === item.key }" @click="selectedBankType = item.key">
               <!--                        <image class="bank-icon" :src="item.icon" mode="widthFix" />-->
               <text>{{ item.label }}</text>
             </view>
@@ -16,10 +16,11 @@
                 <view class="h4">
                   {{ t('blockchain.item2') }}
                 </view>
-                <button type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()" v-if="cryptoWallets.length < 2">
+                <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()"
+                  v-if="cryptoWallets.length < 2">
                   <view class="d-flex align-items-center">
-                  <cwg-icon name="crm-plus" :size="14" color="#fff" />
-                  <text>{{ `${t('Btn.New')}${t('blockchain.item2')}` }}</text>
+                    <cwg-icon name="crm-plus" :size="14" color="#fff" />
+                    <text>{{ `${t('Btn.New')}${t('blockchain.item2')}` }}</text>
                   </view>
                 </button>
               </view>
@@ -35,23 +36,17 @@
                     <uni-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
                       <view class="actions">
                         <view class="bank-actions">
-                          <view class="action-btn bg-secondary btn-dark" v-if="item.authStatus == 0"
-                                type="primary" v-t="'State.ToCertified'"
-                                @click="doReady(item.id, item)" />
-                          <view class="action-btn bg-secondary btn-dark" v-if="item.authStatus == 0"
-                                type="primary" @click="openCardDialog(item.id, item)"
-                                v-t="'PersonalManagement.CardVerify.Title'" />
-                          <view class="action-btn btn-gray"
-                                v-if="!editingId && item.authStatus !== 1" @tap="startEdit(item)"
-                                v-t="'Btn.Editor'" />
+                          <view class="action-btn bg-secondary btn-dark" v-if="item.authStatus == 0" type="primary"
+                            v-t="'State.ToCertified'" @click="doReady(item.id, item)" />
+                          <view class="action-btn bg-secondary btn-dark" v-if="item.authStatus == 0" type="primary"
+                            @click="openCardDialog(item.id, item)" v-t="'PersonalManagement.CardVerify.Title'" />
+                          <view class="action-btn btn-gray" v-if="!editingId && item.authStatus !== 1"
+                            @tap="startEdit(item)" v-t="'Btn.Editor'" />
                           <template v-if="editingId === item.id">
-                            <view class="action-btn  btn-gray" @tap="saveBank(item)"
-                                  v-t="'Btn.Save'" />
-                            <view class="action-btn  btn-gray" @tap="cancelEdit()"
-                                  v-t="'Btn.Cancel'" />
+                            <view class="action-btn  btn-gray" @tap="saveBank(item)" v-t="'Btn.Save'" />
+                            <view class="action-btn  btn-gray" @tap="cancelEdit()" v-t="'Btn.Cancel'" />
                           </template>
-                          <view class="action-btn  btn-gray" @tap="confirmDelete(item)"
-                                v-t="'Btn.Delete'" />
+                          <view class="action-btn  btn-gray" @tap="confirmDelete(item)" v-t="'Btn.Delete'" />
                         </view>
                       </view>
 
@@ -62,25 +57,22 @@
                   <uni-row class="card-body custom-row" :gutter="20">
                     <uni-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
                       <uni-forms-item :label="t('blockchain.item3')">
-                        <uni-easyinput :clearable="false" v-model="item.addressName"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.addressName" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
                       <uni-forms-item :label="t('blockchain.item4')">
-                        <uni-easyinput :clearable="false" v-model="item.address"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.address" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24"
-                             v-if="item.cardFiles && item.cardFiles.length">
+                      v-if="item.cardFiles && item.cardFiles.length">
                       <uni-forms-item :label="t('PersonalManagement.Label.CertificationPhoto')">
                         <view class="photo-upload">
                           <view v-for="(file, idx) in item.cardFiles" :key="idx" class="photo-item">
-                            <image class="photo-preview" :src="updateUrl + file.path"
-                                   mode="aspectFill" />
+                            <image class="photo-preview" :src="updateUrl + file.path" mode="aspectFill" />
                           </view>
                         </view>
                       </uni-forms-item>
@@ -88,7 +80,7 @@
                     <uni-col :xs="24" class="mt-3">
                       <uni-forms-item class="checkbox-item">
                         <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1" multiple
-                                           :localdata="hobbys" />
+                          :localdata="hobbys" />
                       </uni-forms-item>
                     </uni-col>
                   </uni-row>
@@ -101,7 +93,8 @@
                 <view class="h4">
                   {{ t('PersonalManagement.Title.ChinaUnionPayCard') }}
                 </view>
-                <button type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()" v-if="unionpayCards.length < 2">
+                <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()"
+                  v-if="unionpayCards.length < 2">
                   <view class="d-flex align-items-center">
                     <cwg-icon name="crm-plus" :size="14" color="#fff" />
                     <text>{{ `${t('Btn.New')}${t('PersonalManagement.Title.ChinaUnionPayCard')}` }}</text>
@@ -118,17 +111,13 @@
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
                       <view class="bank-actions">
-                        <view class="action-btn  btn-gray"
-                              v-if="!editingId && item.authStatus !== 1" @tap="startEdit(item)"
-                              v-t="'Btn.Editor'" />
+                        <view class="action-btn  btn-gray" v-if="!editingId && item.authStatus !== 1"
+                          @tap="startEdit(item)" v-t="'Btn.Editor'" />
                         <template v-if="editingId === item.id">
-                          <view class="action-btn  btn-gray" @tap="saveBank(item)"
-                                v-t="'Btn.Save'" />
-                          <view class="action-btn  btn-gray" @tap="cancelEdit()"
-                                v-t="'Btn.Cancel'" />
+                          <view class="action-btn  btn-gray" @tap="saveBank(item)" v-t="'Btn.Save'" />
+                          <view class="action-btn  btn-gray" @tap="cancelEdit()" v-t="'Btn.Cancel'" />
                         </template>
-                        <view class="action-btn btn-gray" @tap="confirmDelete(item)"
-                              v-t="'Btn.Delete'" />
+                        <view class="action-btn btn-gray" @tap="confirmDelete(item)" v-t="'Btn.Delete'" />
                       </view>
                     </uni-col>
                   </uni-row>
@@ -138,51 +127,42 @@
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankAccountName')">
                         <uni-easyinput :clearable="false" v-model="item.bankUname" :disabled="true"
-                                       :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
+                          :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankName')">
                         <cwg-combox :clearable="false" :filterable="true" v-model:value="item.bankName"
-                                    :options="bankOptions" :placeholder="t('placeholder.choose')"
-                                    :disabled="editingId !== item.id" @change="onStateChange" />
+                          :options="bankOptions" :placeholder="t('placeholder.choose')"
+                          :disabled="editingId !== item.id" @change="onStateChange" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankAccount')">
-                        <uni-easyinput :clearable="false" v-model="item.bankCardNum"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.bankCardNum" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.AccountOpeningBranch')">
                         <uni-easyinput :clearable="false" v-model="item.bankBranchName"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
+                          :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
                       <uni-forms-item :label="t('PersonalManagement.Label.CertificationPhoto')">
-                        <cwg-file-picker-wrapper
-                          v-model="item.bankFront"
-                          :disabled="editingId !== item.id"
-                          :delIcon="editingId === item.id"
-                          :limit="1"
-                          uploadUrl="/custom/bank/upload"
-                          :baseUrl="updateUrl"
-                          :imageWidth="120"
-                          :imageHeight="120"
-                          uploadText="点击上传"
-                          replaceText="点击替换" noImageText="暂无图片"
-                          :showPreviewDelete="editingId === item.id"
+                        <cwg-file-picker-wrapper v-model="item.bankFront" :disabled="editingId !== item.id"
+                          :delIcon="editingId === item.id" :limit="1" uploadUrl="/custom/bank/upload"
+                          :baseUrl="updateUrl" :imageWidth="120" :imageHeight="120" uploadText="点击上传" replaceText="点击替换"
+                          noImageText="暂无图片" :showPreviewDelete="editingId === item.id"
                           @update:modelValue="(val) => handleFileUpdate(val, item, 'bankFront')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" class="mt-3">
                       <uni-forms-item class="checkbox-item">
-                        <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1"
-                                           multiple :localdata="hobbys" />
+                        <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1" multiple
+                          :localdata="hobbys" />
                       </uni-forms-item>
                     </uni-col>
 
@@ -196,7 +176,8 @@
                 <view class="h4">
                   {{ t('PersonalManagement.Title.BankWireTransfer') }}
                 </view>
-                <button type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()" v-if="wireTransfers.length < 2">
+                <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()"
+                  v-if="wireTransfers.length < 2">
                   <view class="d-flex align-items-center">
                     <cwg-icon name="crm-plus" :size="14" color="#fff" />
                     <text>{{ `${t('Btn.New')}${t('PersonalManagement.Title.BankWireTransfer')}` }}</text>
@@ -213,76 +194,69 @@
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
                       <view class="bank-actions">
-                        <view class="action-btn  btn-gray"
-                              v-if="!editingId && item.authStatus !== 1" @tap="startEdit(item)"
-                              v-t="'Btn.Editor'" />
+                        <view class="action-btn  btn-gray" v-if="!editingId && item.authStatus !== 1"
+                          @tap="startEdit(item)" v-t="'Btn.Editor'" />
                         <template v-if="editingId === item.id">
-                          <view class="action-btn  btn-gray" @tap="saveBank(item)"
-                                v-t="'Btn.Save'" />
-                          <view class="action-btn  btn-gray" @tap="cancelEdit()"
-                                v-t="'Btn.Cancel'" />
+                          <view class="action-btn  btn-gray" @tap="saveBank(item)" v-t="'Btn.Save'" />
+                          <view class="action-btn  btn-gray" @tap="cancelEdit()" v-t="'Btn.Cancel'" />
                         </template>
-                        <view class="action-btn  btn-gray" @tap="confirmDelete(item)"
-                              v-t="'Btn.Delete'" />
+                        <view class="action-btn  btn-gray" @tap="confirmDelete(item)" v-t="'Btn.Delete'" />
                       </view>
                     </uni-col>
                   </uni-row>
                 </view>
                 <uni-forms :model="item" labelWidth="200" label-position="top">
                   <uni-row class="card-body custom-row" :gutter="20">
-                    <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8" >
+                    <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankAccountName')">
                         <uni-easyinput :clearable="false" v-model="item.bankUname" :disabled="true"
-                                       :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
+                          :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankAccount')">
-                        <uni-easyinput :clearable="false" v-model="item.bankCardNum"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.bankCardNum" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca la dirección de la billetera' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankName')">
-                        <uni-easyinput :clearable="false" v-model="item.bankName"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca el nombre del banco' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.bankName" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca el nombre del banco' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankAddress')">
                         <uni-easyinput :clearable="false" v-model="item.bankAddr"
-                                       :placeholder="locale == 'es' ? 'Introduzca la dirección del banco' : t('placeholder.input')"
-                                       :disabled="editingId !== item.id" />
+                          :placeholder="locale == 'es' ? 'Introduzca la dirección del banco' : t('placeholder.input')"
+                          :disabled="editingId !== item.id" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.SwiftBIC')">
                         <uni-easyinput :clearable="false" v-model="item.swiftCode"
-                                       :placeholder="locale == 'es' ? 'Introduzca el SWIFT/BIC' : t('placeholder.input')"
-                                       :disabled="editingId !== item.id" />
+                          :placeholder="locale == 'es' ? 'Introduzca el SWIFT/BIC' : t('placeholder.input')"
+                          :disabled="editingId !== item.id" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.BankCode')">
                         <uni-easyinput :clearable="false" v-model="item.bankCode"
-                                       :placeholder="locale == 'es' ? 'Introduzca el código del banco' : t('placeholder.input')"
-                                       :disabled="editingId !== item.id" />
+                          :placeholder="locale == 'es' ? 'Introduzca el código del banco' : t('placeholder.input')"
+                          :disabled="editingId !== item.id" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-                      <uni-forms-item
-                        :label="locale == 'es' ? 'Número de sucursal (opcional)' : 'Account Agency NO'">
+                      <uni-forms-item :label="locale == 'es' ? 'Número de sucursal (opcional)' : 'Account Agency NO'">
                         <uni-easyinput :clearable="false" v-model="item.agencyNo"
-                                       :placeholder="locale == 'es' ? 'Introduzca el número de sucursal' : t('placeholder.input')"
-                                       :disabled="editingId !== item.id" />
+                          :placeholder="locale == 'es' ? 'Introduzca el número de sucursal' : t('placeholder.input')"
+                          :disabled="editingId !== item.id" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" class="mt-3">
                       <uni-forms-item class="checkbox-item">
-                        <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1"
-                                           multiple :localdata="hobbys" />
+                        <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1" multiple
+                          :localdata="hobbys" />
                       </uni-forms-item>
                     </uni-col>
                   </uni-row>
@@ -295,7 +269,8 @@
                 <view class="h4">
                   {{ t('PersonalManagement.Label.CreditCard') }}
                 </view>
-                <button type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()" v-if="creditCards.length < 2">
+                <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect" @click="addBank()"
+                  v-if="creditCards.length < 2">
                   <view class="d-flex align-items-center">
                     <cwg-icon name="crm-plus" :size="14" color="#fff" />
                     <text>{{ `${t('Btn.New')}${t('PersonalManagement.Label.CreditCard')}` }}</text>
@@ -304,62 +279,56 @@
               </view>
               <view class="bank-info bg-gray bg-opacity-05 card" v-for="(item, index) in creditCards" :key="item.id">
                 <view class="bank-header card-header">
-                    <uni-row style="width: 100%;">
-                      <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-                        <view class="bank-title">
-                          <text>{{ currentBankType?.label }} {{ index + 1 }}</text>
-                        </view>
-                      </uni-col>
-                      <uni-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
-                        <view class="bank-actions">
-                          <view class="action-btn  btn-gray"
-                                v-if="!editingId && item.authStatus !== 1" @tap="startEdit(item)"
-                                v-t="'Btn.Editor'" />
-                          <template v-if="editingId === item.id">
-                            <view class="action-btn  btn-gray" @tap="saveBank(item)"
-                                  v-t="'Btn.Save'" />
-                            <view class="action-btn  btn-gray" @tap="cancelEdit()"
-                                  v-t="'Btn.Cancel'" />
-                          </template>
-                          <view class="action-btn  btn-gray" @tap="confirmDelete(item)"
-                                v-t="'Btn.Delete'" />
-                        </view>
-                      </uni-col>
-                    </uni-row>
-                  </view>
+                  <uni-row style="width: 100%;">
+                    <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
+                      <view class="bank-title">
+                        <text>{{ currentBankType?.label }} {{ index + 1 }}</text>
+                      </view>
+                    </uni-col>
+                    <uni-col :xs="24" :sm="24" :md="16" :lg="16" :xl="16">
+                      <view class="bank-actions">
+                        <view class="action-btn  btn-gray" v-if="!editingId && item.authStatus !== 1"
+                          @tap="startEdit(item)" v-t="'Btn.Editor'" />
+                        <template v-if="editingId === item.id">
+                          <view class="action-btn  btn-gray" @tap="saveBank(item)" v-t="'Btn.Save'" />
+                          <view class="action-btn  btn-gray" @tap="cancelEdit()" v-t="'Btn.Cancel'" />
+                        </template>
+                        <view class="action-btn  btn-gray" @tap="confirmDelete(item)" v-t="'Btn.Delete'" />
+                      </view>
+                    </uni-col>
+                  </uni-row>
+                </view>
                 <uni-forms :model="item" labelWidth="200" label-position="top">
                   <uni-row class="card-body custom-row" :gutter="20">
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.CreditCardAccountName')">
                         <uni-easyinput :clearable="false" v-model="item.bankUname" :disabled="true"
-                                       :placeholder="t('placeholder.input')" />
+                          :placeholder="t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.CreditCardAccount')">
-                        <uni-easyinput :clearable="false" v-model="item.bankCardNum"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca el número de tarjeta' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.bankCardNum" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca el número de tarjeta' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('PersonalManagement.Label.ExpirationYear')">
                         <uni-easyinput :clearable="false" v-model="item.expiryYearMonth"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca MM/AA' : t('placeholder.input')" />
+                          :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca MM/AA' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
                       <uni-forms-item :label="t('CVV')">
-                        <uni-easyinput :clearable="false" v-model="item.cvv"
-                                       :disabled="editingId !== item.id"
-                                       :placeholder="locale == 'es' ? 'Introduzca el CVV' : t('placeholder.input')" />
+                        <uni-easyinput :clearable="false" v-model="item.cvv" :disabled="editingId !== item.id"
+                          :placeholder="locale == 'es' ? 'Introduzca el CVV' : t('placeholder.input')" />
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" class="mt-3">
                       <uni-forms-item class="checkbox-item">
-                        <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1"
-                                           multiple :localdata="hobbys" />
+                        <uni-data-checkbox :disabled="editingId !== item.id" v-model="item.defaultBank1" multiple
+                          :localdata="hobbys" />
                       </uni-forms-item>
                     </uni-col>
 
@@ -377,7 +346,7 @@
   <!-- 删除确认弹窗 -->
   <uni-popup ref="deletePopup" type="dialog">
     <uni-popup-dialog :title="t('Msg.SystemPrompt')" :content="t('Msg.Delete')" @confirm="deleteBank"
-                      @close="closeDeletePopup" :cancelText="t('Btn.Cancel')" :confirmText="t('Btn.Confirm')" />
+      @close="closeDeletePopup" :cancelText="t('Btn.Cancel')" :confirmText="t('Btn.Confirm')" />
   </uni-popup>
   <!-- 新增银行弹窗 -->
   <add-bank-dialog ref="addBankDialogRef" @success="addSuccess" />
@@ -385,727 +354,731 @@
   <kyc-auth-dialog ref="kycDialogRef" />
   <!-- 证件认证弹窗 -->
   <card-auth-dialog ref="cardDialogRef" />
-  <cwg-global-popup/>
+  <cwg-global-popup />
 </template>
 
 <script setup lang="ts">
-  import { computed, ref, onMounted } from 'vue'
-  import { useI18n } from 'vue-i18n'
-  import { personalApi } from '@/service/personal'
-  import KycAuthDialog from './KycAuthDialog.vue'
-  import CardAuthDialog from './CardAuthDialog.vue'
-  import AddBankDialog from '@/components/AddBankDialog.vue'
-  import config from '@/config'
-  import { BankType } from './bank'
-  import {usePopup} from '@/hooks/usePopup'
-
-  const { t, locale } = useI18n()
-
-  const {toast} = usePopup()
-
-  interface BankListType {
-    key: string;
-    label: string;
-    icon: string;
-  }
-
-  interface BankInfo {
-    id?: string;
-    type: number;
-    defaultBank: boolean;
-    approveStatus?: number;
-    authStatus?: number;
-    blockchainName: string;
-    walletAddress: string;
-    photos?: string[];
-    expiryYearMonth?: string;
-    expiryYear?: string;
-    expiryMonth?: string;
-
-    [key: string]: any;
-  }
-
-  const selectedBankType = ref<string>('crypto')
-  const bankTypes = computed<BankListType[]>(() => [
-    { key: 'crypto', label: t('blockchain.item2'), icon: '/static/images/info/bank-info_1.png' },
-    {
-      key: 'unionpay',
-      label: t('PersonalManagement.Title.ChinaUnionPayCard'),
-      icon: '/static/images/info/bank-info_2.png',
-    },
-    { key: 'bank', label: t('PersonalManagement.Title.BankWireTransfer'), icon: '/static/images/info/bank-info_3.png' },
-    { key: 'credit', label: t('PersonalManagement.Label.CreditCard'), icon: '/static/images/info/bank-info_4.png' },
-  ])
-  const currentBankType = computed(() => bankTypes.value.find((item: BankListType) => item.key === selectedBankType.value))
-  const hobbys = computed(() => {
-    switch (selectedBankType.value) {
-      case 'crypto':
-        return [{ value: 1, text: t('blockchain.item8') }]
-      case 'unionpay':
-        return [{ value: 1, text: t('PersonalManagement.Title.DefaultBank') }]
-      case 'bank':
-        return [{ value: 1, text: t('PersonalManagement.Title.DefaultWire') }]
-      case 'credit':
-        return [{ value: 1, text: t('PersonalManagement.Title.DefaultCredit') }]
-    }
-  })
-  // 状态
-  const updateUrl = config.Host05
-  const editingId = ref(null)
-  const bankList = ref([])
-  const isZh = computed(() => ['cn', 'zh', 'zhHant'].includes(locale.value))
-
-  const getLangName = (item: any) => (isZh.value ? item.name : item.enName)
-  const createOptions = (list: any[], valueKey = 'code') => {
-    return list.map((item) => ({
-      text: getLangName(item),
-      value: getLangName(item),
-    }))
-  }
-
-  const bankOptions = computed(() => createOptions(bankList.value, 'name'))
-  // 银行数据
-  const bankData = ref({
-    [BankType.CRYPTO]: [],
-    [BankType.UNIONPAY]: [],
-    [BankType.WIRE_TRANSFER]: [],
-    [BankType.CREDIT_CARD]: [],
-  })
-
-  // 计算属性 - 各类型银行列表
-  const cryptoWallets = computed(() => bankData.value[BankType.CRYPTO] || [])
-  const unionpayCards = computed(() => bankData.value[BankType.UNIONPAY] || [])
-  const wireTransfers = computed(() => bankData.value[BankType.WIRE_TRANSFER] || [])
-  const creditCards = computed(() => bankData.value[BankType.CREDIT_CARD] || [])
-
-
-  // 弹出层ref
-  const deletePopup = ref(null)
-  const deleteTarget = ref(null)
-
-
-  // 开始编辑
-  const startEdit = (item) => {
-    editingId.value = item.id
+import { computed, ref, onMounted } from 'vue'
+import { useI18n } from 'vue-i18n'
+import { personalApi } from '@/service/personal'
+import KycAuthDialog from './KycAuthDialog.vue'
+import CardAuthDialog from './CardAuthDialog.vue'
+import AddBankDialog from '@/components/AddBankDialog.vue'
+import config from '@/config'
+import { BankType } from './bank'
+import { usePopup } from '@/hooks/usePopup'
+
+const { t, locale } = useI18n()
+
+const { toast } = usePopup()
+
+interface BankListType {
+  key: string;
+  label: string;
+  icon: string;
+}
+
+interface BankInfo {
+  id?: string;
+  type: number;
+  defaultBank: boolean;
+  approveStatus?: number;
+  authStatus?: number;
+  blockchainName: string;
+  walletAddress: string;
+  photos?: string[];
+  expiryYearMonth?: string;
+  expiryYear?: string;
+  expiryMonth?: string;
+
+  [key: string]: any;
+}
+
+const selectedBankType = ref<string>('crypto')
+const bankTypes = computed<BankListType[]>(() => [
+  { key: 'crypto', label: t('blockchain.item2'), icon: '/static/images/info/bank-info_1.png' },
+  {
+    key: 'unionpay',
+    label: t('PersonalManagement.Title.ChinaUnionPayCard'),
+    icon: '/static/images/info/bank-info_2.png',
+  },
+  { key: 'bank', label: t('PersonalManagement.Title.BankWireTransfer'), icon: '/static/images/info/bank-info_3.png' },
+  { key: 'credit', label: t('PersonalManagement.Label.CreditCard'), icon: '/static/images/info/bank-info_4.png' },
+])
+const currentBankType = computed(() => bankTypes.value.find((item: BankListType) => item.key === selectedBankType.value))
+const hobbys = computed(() => {
+  switch (selectedBankType.value) {
+    case 'crypto':
+      return [{ value: 1, text: t('blockchain.item8') }]
+    case 'unionpay':
+      return [{ value: 1, text: t('PersonalManagement.Title.DefaultBank') }]
+    case 'bank':
+      return [{ value: 1, text: t('PersonalManagement.Title.DefaultWire') }]
+    case 'credit':
+      return [{ value: 1, text: t('PersonalManagement.Title.DefaultCredit') }]
   }
-
-  // 取消编辑
-  const cancelEdit = () => {
-    editingId.value = null
-    getBankInfo() // 重新加载数据
+})
+// 状态
+const updateUrl = config.Host05
+const editingId = ref(null)
+const bankList = ref([])
+const isZh = computed(() => ['cn', 'zh', 'zhHant'].includes(locale.value))
+
+const getLangName = (item: any) => (isZh.value ? item.name : item.enName)
+const createOptions = (list: any[], valueKey = 'code') => {
+  return list.map((item) => ({
+    text: getLangName(item),
+    value: getLangName(item),
+  }))
+}
+
+const bankOptions = computed(() => createOptions(bankList.value, 'name'))
+// 银行数据
+const bankData = ref({
+  [BankType.CRYPTO]: [],
+  [BankType.UNIONPAY]: [],
+  [BankType.WIRE_TRANSFER]: [],
+  [BankType.CREDIT_CARD]: [],
+})
+
+// 计算属性 - 各类型银行列表
+const cryptoWallets = computed(() => bankData.value[BankType.CRYPTO] || [])
+const unionpayCards = computed(() => bankData.value[BankType.UNIONPAY] || [])
+const wireTransfers = computed(() => bankData.value[BankType.WIRE_TRANSFER] || [])
+const creditCards = computed(() => bankData.value[BankType.CREDIT_CARD] || [])
+
+
+// 弹出层ref
+const deletePopup = ref(null)
+const deleteTarget = ref(null)
+
+
+// 开始编辑
+const startEdit = (item) => {
+  editingId.value = item.id
+}
+
+// 取消编辑
+const cancelEdit = () => {
+  editingId.value = null
+  getBankInfo() // 重新加载数据
+}
+
+// 保存银行信息
+const saveBank = async (item) => {
+
+  if (selectedBankType.value === 'crypto' && item.approveStatus == 1) {
+    toast(t('PersonalManagement.BlockchainWalletReviewing'))
+    return
   }
-
-  // 保存银行信息
-  const saveBank = async (item) => {
-
-    if (selectedBankType.value === 'crypto' && item.approveStatus == 1) {
-      toast(t('PersonalManagement.BlockchainWalletReviewing'))
-      return
+  try {
+    const params = { ...item }
+    params.defaultBank = params.defaultBank1[0] ? 1 : 0
+
+    if (params.type === BankType.CREDIT_CARD && params.expiryYearMonth) {
+      const [year, month] = params.expiryYearMonth.split('/')
+      params.expiryYear = year
+      params.expiryMonth = month
     }
-    try {
-      const params = { ...item }
-      params.defaultBank = params.defaultBank1[0] ? 1 : 0
-
-      if (params.type === BankType.CREDIT_CARD && params.expiryYearMonth) {
-        const [year, month] = params.expiryYearMonth.split('/')
-        params.expiryYear = year
-        params.expiryMonth = month
-      }
-      const res = await personalApi.customBankUpdate(params)
-      if (res.code === 200) {
-        uni.hideLoading()
-        uni.showToast({
-          title: t('Msg.Success'),
-          icon: 'success',
-        })
-        editingId.value = null
-        getBankInfo()
-      } else {
-        throw new Error(res.msg)
-      }
-    } catch (error) {
+    const res = await personalApi.customBankUpdate(params)
+    if (res.code === 200) {
       uni.hideLoading()
       uni.showToast({
-        title: error.msg || t('Msg.Fail'),
-        icon: 'none',
+        title: t('Msg.Success'),
+        icon: 'success',
       })
+      editingId.value = null
+      getBankInfo()
+    } else {
+      throw new Error(res.msg)
     }
+  } catch (error) {
+    uni.hideLoading()
+    uni.showToast({
+      title: error.msg || t('Msg.Fail'),
+      icon: 'none',
+    })
   }
-  // 删除
-  const confirmDelete = (item) => {
-    if (selectedBankType.value === 'crypto' && item.approveStatus == 1) {
-      toast(t('PersonalManagement.BlockchainWalletReviewing'))
-      return
-    }
-    deleteTarget.value = item
-    deletePopup.value.open()
-  }
-
-  // 关闭删除弹窗
-  const closeDeletePopup = () => {
-    deletePopup.value.close()
-    deleteTarget.value = null
+}
+// 删除
+const confirmDelete = (item) => {
+  if (selectedBankType.value === 'crypto' && item.approveStatus == 1) {
+    toast(t('PersonalManagement.BlockchainWalletReviewing'))
+    return
   }
-
-  // 执行删除
-  const deleteBank = async () => {
-    if (!deleteTarget.value) return
-    try {
-      const res = await personalApi.customBankDelete({
-        ids: [deleteTarget.value.id],
-      })
-      if (res.code === 200) {
-        uni.hideLoading()
-        uni.showToast({
-          title: t('Msg.DeleteSuccess'),
-          icon: 'success',
-        })
-        deletePopup.value.close()
-        deleteTarget.value = null
-        getBankInfo()
-      } else {
-        uni.showToast({
-          title: res.msg,
-          icon: 'none',
-        })
-      }
-    } catch (error) {
+  deleteTarget.value = item
+  deletePopup.value.open()
+}
+
+// 关闭删除弹窗
+const closeDeletePopup = () => {
+  deletePopup.value.close()
+  deleteTarget.value = null
+}
+
+// 执行删除
+const deleteBank = async () => {
+  if (!deleteTarget.value) return
+  try {
+    const res = await personalApi.customBankDelete({
+      ids: [deleteTarget.value.id],
+    })
+    if (res.code === 200) {
       uni.hideLoading()
       uni.showToast({
-        title: error.msg,
-        icon: 'none',
+        title: t('Msg.DeleteSuccess'),
+        icon: 'success',
       })
       deletePopup.value.close()
+      deleteTarget.value = null
+      getBankInfo()
+    } else {
+      uni.showToast({
+        title: res.msg,
+        icon: 'none',
+      })
     }
+  } catch (error) {
+    uni.hideLoading()
+    uni.showToast({
+      title: error.msg,
+      icon: 'none',
+    })
+    deletePopup.value.close()
   }
-  // 新增银行信息
-  const addBankDialogRef = ref(null)
-
-  function addBank() {
-    switch (selectedBankType.value) {
-      case 'crypto':
-        openAddCrypto()
-        break
-      case 'unionpay':
-        openAddUnionpay()
-        break
-      case 'bank':
-        openAddBank()
-        break
-      case 'credit':
-        openAddCredit()
-        break
-    }
+}
+// 新增银行信息
+const addBankDialogRef = ref(null)
+
+function addBank() {
+  switch (selectedBankType.value) {
+    case 'crypto':
+      openAddCrypto()
+      break
+    case 'unionpay':
+      openAddUnionpay()
+      break
+    case 'bank':
+      openAddBank()
+      break
+    case 'credit':
+      openAddCredit()
+      break
   }
+}
 
-  function openAddCrypto() {
-    const wallets = cryptoWallets.value || []
-    // 1️⃣ 没有钱包
-    if (wallets.length === 0) {
-      addBankDialogRef.value?.open(4)
-      return
-    }
-    // 2️⃣ 是否存在未认证钱包
-    const hasUnAuth = wallets.some(
-      item => item.authStatus === 0 || item.approveStatus === 1,
-    )
-    if (hasUnAuth) {
-      toast(t('PersonalManagement.BlockchainWalletNotCertified'))
-      return
-    }
-    // 3️⃣ 是否达到上限
-    if (wallets.length >= 2) {
-      toast(t('blockchain.item9'))
-      return
-    }
-    // 4️⃣ 正常打开
+function openAddCrypto() {
+  const wallets = cryptoWallets.value || []
+  // 1️⃣ 没有钱包
+  if (wallets.length === 0) {
     addBankDialogRef.value?.open(4)
+    return
   }
+  // 2️⃣ 是否存在未认证钱包
+  const hasUnAuth = wallets.some(
+    item => item.authStatus === 0 || item.approveStatus === 1,
+  )
+  if (hasUnAuth) {
+    toast(t('PersonalManagement.BlockchainWalletNotCertified'))
+    return
+  }
+  // 3️⃣ 是否达到上限
+  if (wallets.length >= 2) {
+    toast(t('blockchain.item9'))
+    return
+  }
+  // 4️⃣ 正常打开
+  addBankDialogRef.value?.open(4)
+}
 
-  function openAddUnionpay() {
-    const wallets = unionpayCards.value || []
-    if (wallets.length === 0) {
-      addBankDialogRef.value?.open(1)
-      return
-    }
-    if (wallets.length >= 2) {
-      toast(t('Msg.UnionPayCARDS'))
-      return
-    }
+function openAddUnionpay() {
+  const wallets = unionpayCards.value || []
+  if (wallets.length === 0) {
     addBankDialogRef.value?.open(1)
+    return
+  }
+  if (wallets.length >= 2) {
+    toast(t('Msg.UnionPayCARDS'))
+    return
   }
+  addBankDialogRef.value?.open(1)
+}
 
-  function openAddBank() {
-    const wallets = wireTransfers.value || []
-    if (wallets.length === 0) {
-      addBankDialogRef.value?.open(2)
-      return
-    }
-    if (wallets.length >= 2) {
-      toast(t('Msg.WireTransfers'))
-      return
-    }
+function openAddBank() {
+  const wallets = wireTransfers.value || []
+  if (wallets.length === 0) {
     addBankDialogRef.value?.open(2)
+    return
   }
+  if (wallets.length >= 2) {
+    toast(t('Msg.WireTransfers'))
+    return
+  }
+  addBankDialogRef.value?.open(2)
+}
 
-  function openAddCredit() {
-    const wallets = creditCards.value || []
-    if (wallets.length === 0) {
-      addBankDialogRef.value?.open(3)
-      return
-    }
+function openAddCredit() {
+  const wallets = creditCards.value || []
+  if (wallets.length === 0) {
     addBankDialogRef.value?.open(3)
+    return
   }
+  addBankDialogRef.value?.open(3)
+}
 
-  // 新增银行信息成功回调
-  const addSuccess = (e) => {
-    if (selectedBankType.value === 'crypto') {
-      openKycDialog(e)
-    }
-    getBankInfo()
+// 新增银行信息成功回调
+const addSuccess = (e) => {
+  if (selectedBankType.value === 'crypto') {
+    openKycDialog(e)
   }
-
-  // kyc认证和证件认证
-  const kycDialogRef = ref(null)
-  const cardDialogRef = ref(null)
-  // kyc认证
-  const doReady = (bankId, item) => {
-    if (item.approveStatus == 1) {
-      toast(t('PersonalManagement.BlockchainWalletReviewing'))
-      return
-    }
-    if (item.authStatus == 1) {
-      toast(t('PersonalManagement.BlockchainWalletNotCertified'))
-      return
-    }
-    openKycDialog(bankId)
+  getBankInfo()
+}
+
+// kyc认证和证件认证
+const kycDialogRef = ref(null)
+const cardDialogRef = ref(null)
+// kyc认证
+const doReady = (bankId, item) => {
+  if (item.approveStatus == 1) {
+    toast(t('PersonalManagement.BlockchainWalletReviewing'))
+    return
   }
-
-  // 打开kyc认证弹窗
-  function openKycDialog(e) {
-    kycDialogRef.value?.open(e)
+  if (item.authStatus == 1) {
+    toast(t('PersonalManagement.BlockchainWalletNotCertified'))
+    return
   }
-
-  // 打开证件认证弹窗
-  function openCardDialog(e, item) {
-    if (item.approveStatus == 1) {
-      toast(t('PersonalManagement.BlockchainWalletReviewing'))
-      return
-    }
-    if (item.authStatus == 1) {
-      toast(t('PersonalManagement.BlockchainWalletNotCertified'))
-      return
-    }
-    cardDialogRef.value?.open(e, item)
+  openKycDialog(bankId)
+}
+
+// 打开kyc认证弹窗
+function openKycDialog(e) {
+  kycDialogRef.value?.open(e)
+}
+
+// 打开证件认证弹窗
+function openCardDialog(e, item) {
+  if (item.approveStatus == 1) {
+    toast(t('PersonalManagement.BlockchainWalletReviewing'))
+    return
   }
-
-
-  // 掩码卡号
-  const maskCardNumber = (num) => {
-    if (!num) return '--'
-    if (num.length <= 4) return num
-    return '**** **** **** ' + num.slice(-4)
+  if (item.authStatus == 1) {
+    toast(t('PersonalManagement.BlockchainWalletNotCertified'))
+    return
   }
-
-  // 获取银行列表
-  const getBankList = async () => {
-    const res = await personalApi.BankList({})
-    if (res.code === 200) {
-      bankList.value = res.data
-    }
+  cardDialogRef.value?.open(e, item)
+}
+
+
+// 掩码卡号
+const maskCardNumber = (num) => {
+  if (!num) return '--'
+  if (num.length <= 4) return num
+  return '**** **** **** ' + num.slice(-4)
+}
+
+// 获取银行列表
+const getBankList = async () => {
+  const res = await personalApi.BankList({})
+  if (res.code === 200) {
+    bankList.value = res.data
   }
-  // 文件更新处理
-  const handleFileUpdate = (newValue, item, field) => {
-    item[field] = newValue
+}
+// 文件更新处理
+const handleFileUpdate = (newValue, item, field) => {
+  item[field] = newValue
+}
+
+// 或者如果你需要在上传成功后做其他操作
+const handleUploadComplete = (result, item, field) => {
+  if (result.success) {
+    console.log('上传完成:', result.paths)
+    // 可以在这里做其他操作,比如保存到服务器
   }
-
-  // 或者如果你需要在上传成功后做其他操作
-  const handleUploadComplete = (result, item, field) => {
-    if (result.success) {
-      console.log('上传完成:', result.paths)
-      // 可以在这里做其他操作,比如保存到服务器
-    }
-  }
-  // 获取银行信息
-  const getBankInfo = async () => {
-    try {
-      const res = await personalApi.customBankList({})
-      if (res.code === 200) {
-        // 清空数据
-        bankData.value = {
-          [BankType.CRYPTO]: [],
-          [BankType.UNIONPAY]: [],
-          [BankType.WIRE_TRANSFER]: [],
-          [BankType.CREDIT_CARD]: [],
-        }
-        // 分类数据
-        res.data.forEach(item => {
-          item.defaultBank1 = item.defaultBank == 1 ? [1] : []
-          if (item.type === BankType.UNIONPAY) {
-            bankData.value[BankType.UNIONPAY].push(item)
-          } else if (item.type === BankType.WIRE_TRANSFER) {
-            bankData.value[BankType.WIRE_TRANSFER].push(item)
-          } else if (item.type === BankType.CREDIT_CARD) {
-            item.expiryYearMonth = item.expiryYear && item.expiryMonth
-              ? `${item.expiryYear}/${item.expiryMonth}`
-              : ''
-            bankData.value[BankType.CREDIT_CARD].push(item)
-          } else if (item.type === BankType.CRYPTO) {
-            bankData.value[BankType.CRYPTO].push(item)
-          }
-        })
+}
+// 获取银行信息
+const getBankInfo = async () => {
+  try {
+    const res = await personalApi.customBankList({})
+    if (res.code === 200) {
+      // 清空数据
+      bankData.value = {
+        [BankType.CRYPTO]: [],
+        [BankType.UNIONPAY]: [],
+        [BankType.WIRE_TRANSFER]: [],
+        [BankType.CREDIT_CARD]: [],
       }
-    } catch (error) {
-      uni.showToast({
-        title: error.msg || t('Msg.Fail'),
-        icon: 'none',
+      // 分类数据
+      res.data.forEach(item => {
+        item.defaultBank1 = item.defaultBank == 1 ? [1] : []
+        if (item.type === BankType.UNIONPAY) {
+          bankData.value[BankType.UNIONPAY].push(item)
+        } else if (item.type === BankType.WIRE_TRANSFER) {
+          bankData.value[BankType.WIRE_TRANSFER].push(item)
+        } else if (item.type === BankType.CREDIT_CARD) {
+          item.expiryYearMonth = item.expiryYear && item.expiryMonth
+            ? `${item.expiryYear}/${item.expiryMonth}`
+            : ''
+          bankData.value[BankType.CREDIT_CARD].push(item)
+        } else if (item.type === BankType.CRYPTO) {
+          bankData.value[BankType.CRYPTO].push(item)
+        }
       })
     }
+  } catch (error) {
+    uni.showToast({
+      title: error.msg || t('Msg.Fail'),
+      icon: 'none',
+    })
   }
-  // 获取银行信息
-  onMounted(() => {
-    getBankList()
-    getBankInfo()
-  })
+}
+// 获取银行信息
+onMounted(() => {
+  getBankList()
+  getBankInfo()
+})
 </script>
 
 
 <style scoped lang="scss">
-  @import "@/uni.scss";
-  .btn {
-    margin: 0;
-  }
-  .user-form {
-    margin-top: px2rpx(30);
+@import "@/uni.scss";
+
+.btn {
+  margin: 0;
+}
+
+.user-form {
+  margin-top: px2rpx(30);
+}
+
+:deep(.uni-row1) {
+  .uni-col {}
+
+  .uni-forms-item {
+    min-height: px2rpx(79);
+    margin-bottom: px2rpx(10);
   }
 
-  :deep(.uni-row1) {
-    .uni-col {
-    }
+  .uni-easyinput__content {
+    //background-color: var(--bs-secondary-bg) !important;
+  }
+}
 
-    .uni-forms-item {
-      min-height: px2rpx(79);
-      margin-bottom: px2rpx(10);
-    }
+.bank-menu {
+  // background: #fff;
+  display: flex;
+  flex-wrap: wrap;
+  overflow: hidden;
 
-    .uni-easyinput__content {
-      //background-color: var(--bs-secondary-bg) !important;
-    }
+  &.card-header {
+    padding: px2rpx(10) px2rpx(20);
   }
 
-  .bank-menu {
-    // background: #fff;
+  .bank-menu-item {
+    flex: 1;
+    min-width: px2rpx(260);
     display: flex;
-    flex-wrap: wrap;
-    overflow: hidden;
-
-    &.card-header {
-      padding: px2rpx(10) px2rpx(20);
+    align-items: center;
+    justify-content: center;
+    //gap: px2rpx(12);
+    padding: 0 px2rpx(16);
+    cursor: pointer;
+    font-size: px2rpx(16);
+    font-weight: bold;
+    color: var(--bs-emphasis-color);
+    transition: all 0.3s;
+    height: px2rpx(36);
+    border-radius: px2rpx(8);
+
+    .bank-icon {
+      width: px2rpx(50);
     }
 
-    .bank-menu-item {
-      flex: 1;
-      min-width: px2rpx(260);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      //gap: px2rpx(12);
-      padding: 0 px2rpx(16);
-      cursor: pointer;
-      font-size: px2rpx(16);
-      font-weight: bold;
-      color: var(--bs-emphasis-color);
-      transition: all 0.3s;
-      height: px2rpx(36);
+    &.active {
+      background: #f5f5f5;
+      color: #000;
       border-radius: px2rpx(8);
 
-      .bank-icon {
-        width: px2rpx(50);
-      }
-
-      &.active {
-        background: #f5f5f5;
-        color: #000;
-        border-radius: px2rpx(8);
-
-        &:hover {
-          background: var(--bs-link-hover-color-rgb);
-          color: #333;
-        }
-      }
-
       &:hover {
-        background: #f5f5f5;
+        background: var(--bs-link-hover-color-rgb);
         color: #333;
       }
+    }
 
-      &.active:hover {
-        background: #f5f5f5;
-      }
+    &:hover {
+      background: #f5f5f5;
+      color: #333;
+    }
+
+    &.active:hover {
+      background: #f5f5f5;
     }
   }
+}
+
+.bank-content {
+  //border-radius: px2rpx(8);
+
+  .bank-info {
+    margin-bottom: px2rpx(20);
 
-  .bank-content {
-    //border-radius: px2rpx(8);
+    .bank-header {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      //border-bottom: 1px solid #f3f4f6;
 
-    .bank-info {
-      margin-bottom: px2rpx(20);
-      .bank-header {
+      .bank-title {
         display: flex;
-        justify-content: space-between;
         align-items: center;
-        //border-bottom: 1px solid #f3f4f6;
+        font-size: px2rpx(20);
+        font-weight: 600;
+        line-height: px2rpx(32);
+        color: #1f2937;
+        //margin-bottom: px2rpx(20);
+      }
 
-        .bank-title {
-          display: flex;
-          align-items: center;
-          font-size: px2rpx(20);
-          font-weight: 600;
-          line-height: px2rpx(32);
-          color: #1f2937;
-          //margin-bottom: px2rpx(20);
-        }
+      .actions {
+        display: flex;
+        flex-direction: column;
+      }
 
-        .actions {
-          display: flex;
-          flex-direction: column;
+      @media screen and (max-width: 992px) {
+        .bank-actions {
+          justify-content: flex-start !important;
         }
+      }
 
-        @media screen and (max-width: 992px) {
-          .bank-actions {
-            justify-content: flex-start !important;
+      .bank-actions {
+        display: flex;
+        gap: px2rpx(20);
+        align-items: center;
+        flex-wrap: wrap;
+        //margin-bottom: px2rpx(10);
+        justify-content: flex-end;
+
+        .action-btn {
+          padding: px2rpx(8) px2rpx(16);
+          border: 1px solid #d1d5db;
+          border-radius: px2rpx(4);
+          font-size: px2rpx(14);
+          cursor: pointer;
+          background: #fff;
+          transition: all 0.3s;
+
+          &:hover {
+            background: #f3f4f6;
           }
-        }
 
-        .bank-actions {
-          display: flex;
-          gap: px2rpx(20);
-          align-items: center;
-          flex-wrap: wrap;
-          //margin-bottom: px2rpx(10);
-          justify-content: flex-end;
-
-          .action-btn {
-            padding: px2rpx(8) px2rpx(16);
-            border: 1px solid #d1d5db;
-            border-radius: px2rpx(4);
-            font-size: px2rpx(14);
-            cursor: pointer;
-            background: #fff;
-            transition: all 0.3s;
+          &.delete {
+            background: var(--bs-btn-bg);
+            color: #fff;
+            border-color: var(--bs-btn-bg);
 
             &:hover {
-              background: #f3f4f6;
-            }
-
-            &.delete {
-              background: var(--bs-btn-bg);
-              color: #fff;
-              border-color: var(--bs-btn-bg);
-
-              &:hover {
-                background: var(--bs-btn-hover-bg);
-              }
+              background: var(--bs-btn-hover-bg);
             }
           }
         }
       }
     }
+  }
 
-    .photo-upload {
-      display: flex;
-      flex-wrap: wrap;
+  .photo-upload {
+    display: flex;
+    flex-wrap: wrap;
 
-      gap: px2rpx(16);
+    gap: px2rpx(16);
 
-      .photo-item {
-        width: px2rpx(120);
-        height: px2rpx(120);
-        border-radius: px2rpx(8);
-        overflow: hidden;
-        background: #f3f4f6;
+    .photo-item {
+      width: px2rpx(120);
+      height: px2rpx(120);
+      border-radius: px2rpx(8);
+      overflow: hidden;
+      background: #f3f4f6;
 
-        .photo-preview {
-          width: 100%;
-          height: 100%;
-        }
+      .photo-preview {
+        width: 100%;
+        height: 100%;
       }
     }
+  }
 
-    .header-title {
-      justify-content: space-between;
-      padding: 0 0 px2rpx(20) 0;
-    }
-
-    .add-wallet-btn {
-      height: px2rpx(40);
-      background: var(--bs-secondary);
-      color: #fff;
-      border-radius: px2rpx(8);
-      padding: 0 px2rpx(20);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      gap: px2rpx(8);
-      font-size: px2rpx(16);
-      font-weight: 600;
-      cursor: pointer;
-      transition: all 0.3s;
+  .header-title {
+    justify-content: space-between;
+    padding: 0 0 px2rpx(20) 0;
+  }
 
-      &:hover {
-        background: #d11920;
-      }
+  .add-wallet-btn {
+    height: px2rpx(40);
+    background: var(--bs-secondary);
+    color: #fff;
+    border-radius: px2rpx(8);
+    padding: 0 px2rpx(20);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    gap: px2rpx(8);
+    font-size: px2rpx(16);
+    font-weight: 600;
+    cursor: pointer;
+    transition: all 0.3s;
+
+    &:hover {
+      background: #d11920;
     }
+  }
 
-    .bankFront {
-      width: 100%;
-
-      // 上传包装器
-      .upload-wrapper {
-        :deep(.uni-file-picker) {
-          .file-picker__box {
-            border: none;
-            background: transparent;
-          }
+  .bankFront {
+    width: 100%;
 
-          // 文件列表容器
-          .file-picker__box-list {
-            display: flex;
-            gap: px2rpx(16);
-            flex-wrap: wrap;
-
-            // 已上传的文件项
-            .file-picker__box-item {
-              width: px2rpx(300) !important;
-              height: px2rpx(300) !important;
-              margin: 0;
-              border: 1px solid #e5e7eb;
-              border-radius: px2rpx(8);
-              overflow: hidden;
-              position: relative;
-
-              // 图片预览
-              .file-picker__box-item-image {
-                width: 100%;
-                height: 100%;
-                object-fit: cover;
-              }
+    // 上传包装器
+    .upload-wrapper {
+      :deep(.uni-file-picker) {
+        .file-picker__box {
+          border: none;
+          background: transparent;
+        }
 
-              // 删除按钮
-              .file-picker__box-item-close {
-                position: absolute;
-                top: px2rpx(4);
-                right: px2rpx(4);
-                width: px2rpx(24);
-                height: px2rpx(24);
-                background: rgba(0, 0, 0, 0.5);
-                border-radius: 50%;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-
-                &::before {
-                  content: '×';
-                  color: var(--bs-emphasis-color);
-                  font-size: px2rpx(28);
-                  line-height: 1;
-                }
-
-                .close-icon {
-                  display: none;
-                }
-              }
-            }
-          }
+        // 文件列表容器
+        .file-picker__box-list {
+          display: flex;
+          gap: px2rpx(16);
+          flex-wrap: wrap;
 
-          // 上传按钮
-          .file-picker__box-add {
+          // 已上传的文件项
+          .file-picker__box-item {
             width: px2rpx(300) !important;
             height: px2rpx(300) !important;
             margin: 0;
-            border: 2rpx dashed #d1d5db;
+            border: 1px solid #e5e7eb;
             border-radius: px2rpx(8);
-            background: #f9fafb;
-            transition: all 0.3s;
-
-            &:hover {
-              border-color: #ea2027;
-              background: #fef2f2;
-            }
+            overflow: hidden;
+            position: relative;
 
-            // 自定义上传按钮内容
-            .custom-upload-btn {
+            // 图片预览
+            .file-picker__box-item-image {
               width: 100%;
               height: 100%;
+              object-fit: cover;
+            }
+
+            // 删除按钮
+            .file-picker__box-item-close {
+              position: absolute;
+              top: px2rpx(4);
+              right: px2rpx(4);
+              width: px2rpx(24);
+              height: px2rpx(24);
+              background: rgba(0, 0, 0, 0.5);
+              border-radius: 50%;
               display: flex;
-              flex-direction: column;
               align-items: center;
               justify-content: center;
 
-              .plus {
-                font-size: px2rpx(48);
-                color: #9ca3af;
+              &::before {
+                content: '×';
+                color: var(--bs-emphasis-color);
+                font-size: px2rpx(28);
                 line-height: 1;
-                margin-bottom: px2rpx(8);
               }
 
-              .tip {
-                font-size: px2rpx(24);
-                color: #6b7280;
+              .close-icon {
+                display: none;
               }
             }
+          }
+        }
+
+        // 上传按钮
+        .file-picker__box-add {
+          width: px2rpx(300) !important;
+          height: px2rpx(300) !important;
+          margin: 0;
+          border: 2rpx dashed #d1d5db;
+          border-radius: px2rpx(8);
+          background: #f9fafb;
+          transition: all 0.3s;
 
-            // 隐藏默认的加号
-            .add-icon {
-              display: none;
+          &:hover {
+            border-color: #ea2027;
+            background: #fef2f2;
+          }
+
+          // 自定义上传按钮内容
+          .custom-upload-btn {
+            width: 100%;
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: center;
+
+            .plus {
+              font-size: px2rpx(48);
+              color: #9ca3af;
+              line-height: 1;
+              margin-bottom: px2rpx(8);
+            }
+
+            .tip {
+              font-size: px2rpx(24);
+              color: #6b7280;
             }
           }
 
-          // 上传进度
-          .file-picker__box-progress {
-            width: px2rpx(300);
-            height: px2rpx(300);
-            border-radius: px2rpx(8);
-            background: rgba(0, 0, 0, 0.5);
-            color: var(--bs-emphasis-color);
+          // 隐藏默认的加号
+          .add-icon {
+            display: none;
           }
         }
-      }
 
-      // 图片预览
-      .image-preview {
-        .preview-image {
+        // 上传进度
+        .file-picker__box-progress {
           width: px2rpx(300);
           height: px2rpx(300);
           border-radius: px2rpx(8);
-          object-fit: cover;
-          cursor: pointer;
-          border: 1px solid #e5e7eb;
+          background: rgba(0, 0, 0, 0.5);
+          color: var(--bs-emphasis-color);
         }
+      }
+    }
 
-        .no-image {
-          width: px2rpx(300);
-          height: px2rpx(300);
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          background: #f5f5f5;
-          border-radius: px2rpx(8);
-          color: var(--bs-heading-color);
-          font-size: px2rpx(24);
-          border: 1px solid #e5e7eb;
-        }
+    // 图片预览
+    .image-preview {
+      .preview-image {
+        width: px2rpx(300);
+        height: px2rpx(300);
+        border-radius: px2rpx(8);
+        object-fit: cover;
+        cursor: pointer;
+        border: 1px solid #e5e7eb;
+      }
+
+      .no-image {
+        width: px2rpx(300);
+        height: px2rpx(300);
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        background: #f5f5f5;
+        border-radius: px2rpx(8);
+        color: var(--bs-heading-color);
+        font-size: px2rpx(24);
+        border: 1px solid #e5e7eb;
       }
     }
   }
+}
 
-  .custom-row {
-    gap: px2rpx(20); // 使用 gap 替代 gutter
-    :deep(.cwg-combox) {
-      .disabled-text{
-        height: 100%;
-      }
-      height: 3rem;
+.custom-row {
+  gap: px2rpx(20); // 使用 gap 替代 gutter
+
+  :deep(.cwg-combox) {
+    .disabled-text {
+      height: 100%;
     }
+
+    height: 3rem;
   }
+}
 </style>

+ 17 - 13
pages/mine/components/CardAuthDialog.vue

@@ -31,7 +31,8 @@
                             </view>
                             <view class="get-code-btn">
                                 <view class="cwg-button">
-                                    <button class="btn-gray" block @click="handleGetCode">{{ getCodeString }}</button>
+                                    <button hover-class="" class="btn-gray" block @click="handleGetCode">{{
+                                        getCodeString }}</button>
                                 </view>
                             </view>
                         </view>
@@ -237,7 +238,8 @@ defineExpose({
 </script>
 
 <style lang="scss" scoped>
-  @import "@/uni.scss";
+@import "@/uni.scss";
+
 .dialog-container {
     width: 90vw;
     max-width: px2rpx(800);
@@ -520,13 +522,14 @@ defineExpose({
         border-radius: px2rpx(8);
         height: px2rpx(46) !important;
     }
-  .btn-gray{
-    height: px2rpx(46);
-    line-height: px2rpx(46);
-    border-radius: px2rpx(8);
-    background-color: #102047;
-    color: #fff;
-  }
+
+    .btn-gray {
+        height: px2rpx(46);
+        line-height: px2rpx(46);
+        border-radius: px2rpx(8);
+        background-color: #102047;
+        color: #fff;
+    }
 }
 
 /* 移动端优化 */
@@ -534,10 +537,11 @@ defineExpose({
     .dialog-container {
         width: 95vw;
         max-height: 90vh;
-      .dialog-footer {
-        gap: px2rpx(20);
-        justify-content: space-around;
-      }
+
+        .dialog-footer {
+            gap: px2rpx(20);
+            justify-content: space-around;
+        }
     }
 
 

+ 193 - 187
pages/mine/components/FileManagementTab.vue

@@ -1,54 +1,57 @@
 <template>
-    <view>
-<!--        <view class="content-title" v-t="'PersonalManagement.Title.FileManagement'"></view>-->
-        <view v-show="!loading" class="content-title">
-          <view/>
-          <view v-if="isShowBtn" class="content-title-btns">
+  <view>
+    <!--        <view class="content-title" v-t="'PersonalManagement.Title.FileManagement'"></view>-->
+    <view v-show="!loading" class="content-title">
+      <view />
+      <view v-if="isShowBtn" class="content-title-btns">
 
 
-            <button v-if="!isShowBtn.isSHowIdentity" type="button" class="btn btn-danger btn-shadow waves-effect" @click="openAddFileDialog(1)" >
-              <view class="d-flex align-items-center">
-                <cwg-icon name="crm-plus" :size="14" color="#fff" />
-                <text v-t="'PersonalManagement.Title.ProofOfIdentity'" />
-              </view>
-            </button>
-            <button v-if="!isShowBtn.isSHowAddress" type="button" class="btn btn-danger btn-shadow waves-effect" @click="openAddFileDialog(2)" >
-              <view class="d-flex align-items-center">
-                <cwg-icon name="crm-plus" :size="14" color="#fff" />
-                <text v-t="'PersonalManagement.Title.ProofOfAddress'" />
-              </view>
-            </button>
-            <button  type="button" class="btn btn-danger btn-shadow waves-effect" @click="openAddFileDialog(3)" >
-              <view class="d-flex align-items-center">
-                <cwg-icon name="crm-plus" :size="14" color="#fff" />
-                <text v-t="'PersonalManagement.Title.AttachedFile'" />
-              </view>
-            </button>
-
+        <button hover-class="" v-if="!isShowBtn.isSHowIdentity" type="button"
+          class="btn btn-danger btn-shadow waves-effect" @click="openAddFileDialog(1)">
+          <view class="d-flex align-items-center">
+            <cwg-icon name="crm-plus" :size="14" color="#fff" />
+            <text v-t="'PersonalManagement.Title.ProofOfIdentity'" />
           </view>
-        </view>
-        <cwg-tabel ref="tableRef" :columns="columns" :api="customFileApi" :show-operation="false"
-                   :showPagination="false">
-          <template #type="{ row }">
-            <view :class="['status-badge', row.status]">{{ typeMap[row.type] }}</view>
-          </template>
-          <template #status="{ row }">
-            <view class="table-cell-center">
-              <view :class="['status-badge', row.status]">{{ stateMap[row.status] }}</view>
-            </view>
-          </template>
-          <template #btn="{ row }">
-            <view class="table-cell-center">
-              <button class="btn-submit" :class="['operation-btn', row.status !== 4 ? 'disabled' : '']" :disabled="row.status !== 4" @click.stop="openAddFile(row)">
-                <cwg-icon name="crm-image" :size="16" color="#1d293d" />
-                <text v-t="'State.Again'" />
-              </button>
-            </view>
-          </template>
-        </cwg-tabel>
+        </button>
+        <button hover-class="" v-if="!isShowBtn.isSHowAddress" type="button"
+          class="btn btn-danger btn-shadow waves-effect" @click="openAddFileDialog(2)">
+          <view class="d-flex align-items-center">
+            <cwg-icon name="crm-plus" :size="14" color="#fff" />
+            <text v-t="'PersonalManagement.Title.ProofOfAddress'" />
+          </view>
+        </button>
+        <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect"
+          @click="openAddFileDialog(3)">
+          <view class="d-flex align-items-center">
+            <cwg-icon name="crm-plus" :size="14" color="#fff" />
+            <text v-t="'PersonalManagement.Title.AttachedFile'" />
+          </view>
+        </button>
 
-        <add-file-dialog ref="addFileDialog" @file-added="customFileList" @success="addSuccess" />
+      </view>
     </view>
+    <cwg-tabel ref="tableRef" :columns="columns" :api="customFileApi" :show-operation="false" :showPagination="false">
+      <template #type="{ row }">
+        <view :class="['status-badge', row.status]">{{ typeMap[row.type] }}</view>
+      </template>
+      <template #status="{ row }">
+        <view class="table-cell-center">
+          <view :class="['status-badge', row.status]">{{ stateMap[row.status] }}</view>
+        </view>
+      </template>
+      <template #btn="{ row }">
+        <view class="table-cell-center">
+          <button hover-class="" class="btn-submit" :class="['operation-btn', row.status !== 4 ? 'disabled' : '']"
+            :disabled="row.status !== 4" @click.stop="openAddFile(row)">
+            <cwg-icon name="crm-image" :size="16" color="#1d293d" />
+            <text v-t="'State.Again'" />
+          </button>
+        </view>
+      </template>
+    </cwg-tabel>
+
+    <add-file-dialog ref="addFileDialog" @file-added="customFileList" @success="addSuccess" />
+  </view>
 </template>
 
 <script setup lang="ts">
@@ -58,132 +61,132 @@ import AddFileDialog from './AddFileDialog.vue';
 const { t } = useI18n();
 import { personalApi } from '@/service/personal';
 const stateMap = computed(() => ({
-    1: t('State.ToBeProcessed'),
-    2: t('State.Completed'),
-    3: t('State.Refused'),
-    4: t('State.Again')
+  1: t('State.ToBeProcessed'),
+  2: t('State.Completed'),
+  3: t('State.Refused'),
+  4: t('State.Again')
 }));
 const typeMap = computed(() => ({
-    1: t('PersonalManagement.Title.ProofOfIdentity'),
-    2: t('PersonalManagement.Title.ProofOfIdentity'),
-    3: t('PersonalManagement.Title.ProofOfAddress'),
-    4: t('PersonalManagement.Title.ProofOfAddress'),
-    10: t('PersonalManagement.Title.AttachedFile')
+  1: t('PersonalManagement.Title.ProofOfIdentity'),
+  2: t('PersonalManagement.Title.ProofOfIdentity'),
+  3: t('PersonalManagement.Title.ProofOfAddress'),
+  4: t('PersonalManagement.Title.ProofOfAddress'),
+  10: t('PersonalManagement.Title.AttachedFile')
 }));
 const btnMap = computed(() => ({
-    1: t('PersonalManagement.Title.ProofOfIdentity'),
-    2: t('PersonalManagement.Title.ProofOfAddress'),
-    3: t('PersonalManagement.Title.AttachedFile')
+  1: t('PersonalManagement.Title.ProofOfIdentity'),
+  2: t('PersonalManagement.Title.ProofOfAddress'),
+  3: t('PersonalManagement.Title.AttachedFile')
 }));
 interface Props {
-    icon: string;
-    label: string;
-    value: string;
-    isLast?: boolean;
+  icon: string;
+  label: string;
+  value: string;
+  isLast?: boolean;
 }
 const tableRef = ref<any>(null);
 const tableData = computed(() => {
-    return tableRef.value ? tableRef.value.tableData : [];
+  return tableRef.value ? tableRef.value.tableData : [];
 });
 const loading = ref(false)
 const isShowBtn = ref()
 const setShowBtn = () => {
-    const a = tableData.value
-    let tableIdentity = [];
-    const tableAddress = [];
-    const tableAdditional = [];
-    a.forEach((item) => {
-        if (item.type == 1 || item.type == 2) {
-            tableIdentity.push(item);
-        } else if (item.type == 3) {
-            tableAddress.push(item);
-        } else {
-            tableAdditional.push(item);
-        }
-    });
-    const isSHowIdentity = tableIdentity.length > 1;
-    const isSHowAddress = tableAddress.length > 0;
+  const a = tableData.value
+  let tableIdentity = [];
+  const tableAddress = [];
+  const tableAdditional = [];
+  a.forEach((item) => {
+    if (item.type == 1 || item.type == 2) {
+      tableIdentity.push(item);
+    } else if (item.type == 3) {
+      tableAddress.push(item);
+    } else {
+      tableAdditional.push(item);
+    }
+  });
+  const isSHowIdentity = tableIdentity.length > 1;
+  const isSHowAddress = tableAddress.length > 0;
   isShowBtn.value = { isSHowIdentity, isSHowAddress };
 }
 
 // 表格列配置
 const columns = computed(() => [
-    {
-        prop: 'path',
-        label: t('vu.item20'),
-        type: 'file',
-        align: 'center'
-    },
-    {
-        prop: 'type',
-        label: t('PersonalManagement.Label.FileName'),
-        align: 'left',
-        slot: 'type'
-    },
-    {
-        prop: 'uploadTime',
-        label: t('PersonalManagement.Label.UploadDate'),
-        type: 'date',
-        dateFormat: 'YYYY-MM-DD HH:mm',
-        align: 'left'
-    },
-    {
-        prop: 'status',
-        label: t('PersonalManagement.Label.State'),
-        type: 'tag',
-        tagMap: { 1: '启用', 10: '禁用' },
-        tagTypeMap: { 1: 'success', 0: 'danger' },
-        slot: 'status',
-        align: 'center'
-    },
-    {
-        prop: 'btn',
-        label: t('Label.Action'),
-        slot: 'btn',
-        align: 'center'
-    }
+  {
+    prop: 'path',
+    label: t('vu.item20'),
+    type: 'file',
+    align: 'center'
+  },
+  {
+    prop: 'type',
+    label: t('PersonalManagement.Label.FileName'),
+    align: 'left',
+    slot: 'type'
+  },
+  {
+    prop: 'uploadTime',
+    label: t('PersonalManagement.Label.UploadDate'),
+    type: 'date',
+    dateFormat: 'YYYY-MM-DD HH:mm',
+    align: 'left'
+  },
+  {
+    prop: 'status',
+    label: t('PersonalManagement.Label.State'),
+    type: 'tag',
+    tagMap: { 1: '启用', 10: '禁用' },
+    tagTypeMap: { 1: 'success', 0: 'danger' },
+    slot: 'status',
+    align: 'center'
+  },
+  {
+    prop: 'btn',
+    label: t('Label.Action'),
+    slot: 'btn',
+    align: 'center'
+  }
 ])
 
 const addFileDialog = ref(null);
 const customFileApi = ref(null)
 customFileApi.value = personalApi.customFileList
 const openAddFileDialog = (type) => {
-    addFileDialog.value.open({ type, title: btnMap.value[type], tableData: tableData.value });
+  addFileDialog.value.open({ type, title: btnMap.value[type], tableData: tableData.value });
 }
 const openAddFile = (row) => {
-    if (row.status != 4) {
-        return
-    }
-    let type
-    switch (row.type) {
-        case 1:
-            type = 1
-            break;
-        case 2:
-            type = 1
-            break;
-        case 3:
-            type = 2
-            break;
-        case 10:
-            type = 3
-            break;
-    }
-    addFileDialog.value.open({ type, title: btnMap.value[type], tableData: tableData.value, currentFile: row });
+  if (row.status != 4) {
+    return
+  }
+  let type
+  switch (row.type) {
+    case 1:
+      type = 1
+      break;
+    case 2:
+      type = 1
+      break;
+    case 3:
+      type = 2
+      break;
+    case 10:
+      type = 3
+      break;
+  }
+  addFileDialog.value.open({ type, title: btnMap.value[type], tableData: tableData.value, currentFile: row });
 }
 const addSuccess = () => {
-    tableRef.value.refreshTable()
+  tableRef.value.refreshTable()
 }
 
 watch(tableData, (newVal) => {
-    if (newVal && newVal.length > 0) {
-      loading.value = true
-      setShowBtn()
-      setTimeout(()=>{
-        loading.value = false
+  if (newVal && newVal.length > 0) {
+    loading.value = true
+    setShowBtn()
+    setTimeout(() => {
+      loading.value = false
 
-      },300)
-    }
+    }, 300)
+  }
 }, { immediate: true })
 
 defineProps<Props>();
@@ -191,54 +194,55 @@ defineProps<Props>();
 
 <style scoped lang="scss">
 @import "@/uni.scss";
-.btn{
+
+.btn {
   margin: 0;
 }
 
 .avatar {
-    width: px2rpx(60);
-    height: px2rpx(60);
-    border-radius: 4px;
+  width: px2rpx(60);
+  height: px2rpx(60);
+  border-radius: 4px;
 }
 
 .content-title {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    font-size: px2rpx(20);
-    font-weight: 500;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: px2rpx(20);
+  font-weight: 500;
 
-    .content-title-btns {
-        margin: px2rpx(8) 0;
+  .content-title-btns {
+    margin: px2rpx(8) 0;
 
-        display: flex;
-        align-items: center;
-        justify-content: flex-end;
-        //flex-wrap: wrap;
-        gap: px2rpx(5);
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+    //flex-wrap: wrap;
+    gap: px2rpx(5);
 
-        .btn-primary {
-            min-width: px2rpx(80);
-            background-color: var(--color-error);
-            color: white;
-            padding: 0 px2rpx(10);
-            border: none;
-          border-radius: px2rpx(8);
-            font-size: px2rpx(16);
-            text-align: center;
-            cursor: pointer;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-          box-sizing: border-box;
-            //gap: px2rpx(5);
-        }
+    .btn-primary {
+      min-width: px2rpx(80);
+      background-color: var(--color-error);
+      color: white;
+      padding: 0 px2rpx(10);
+      border: none;
+      border-radius: px2rpx(8);
+      font-size: px2rpx(16);
+      text-align: center;
+      cursor: pointer;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      box-sizing: border-box;
+      //gap: px2rpx(5);
+    }
 
-        .btn-primary:active {
-            background-color: #cf1322;
-            ;
-        }
+    .btn-primary:active {
+      background-color: #cf1322;
+      ;
     }
+  }
 }
 
 .operation-btn {
@@ -250,16 +254,17 @@ defineProps<Props>();
   box-sizing: border-box;
   height: px2rpx(36);
   line-height: px2rpx(36);
-    :deep(span) {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        gap: px2rpx(4);
-        cursor: pointer;
-        background-color: var(--btn-color);
-        color: #000;
-        padding: px2rpx(8) 0;
-    }
+
+  :deep(span) {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    gap: px2rpx(4);
+    cursor: pointer;
+    background-color: var(--btn-color);
+    color: #000;
+    padding: px2rpx(8) 0;
+  }
 }
 
 .table-cell-center {
@@ -270,8 +275,9 @@ defineProps<Props>();
 }
 
 .operation-btn.disabled {
-    cursor: not-allowed;
-    opacity: 0.5;
+  cursor: not-allowed;
+  opacity: 0.5;
+
   :deep(span) {
     cursor: not-allowed;
   }

+ 315 - 309
pages/mine/components/SecurityCenterTab.vue

@@ -1,103 +1,106 @@
 <template>
-    <view class="user-form crm-form">
-      <view class="card">
-        <view class="bank-menu card-header">
-          <view v-for="item in types" :key="item.key" class="bank-menu-item"
-                :class="{ active: selectedType === item.key }" @click="selectedType = item.key">
-            <!--                        <image class="bank-icon" :src="item.icon" mode="widthFix" />-->
-            <text>{{ item.label }}</text>
-          </view>
+  <view class="user-form crm-form">
+    <view class="card">
+      <view class="bank-menu card-header">
+        <view v-for="item in types" :key="item.key" class="bank-menu-item"
+          :class="{ active: selectedType === item.key }" @click="selectedType = item.key">
+          <!--                        <image class="bank-icon" :src="item.icon" mode="widthFix" />-->
+          <text>{{ item.label }}</text>
         </view>
-        <uni-row class="demo-uni-row uni-row1" :gutter="20">
-          <uni-col v-show="selectedType == 1" :xs="{span:24,offset:0}" :sm="{span:24,offset:0}" :md="{span:24,offset:0}" :lg="{span:12,offset:6}" :xl="{span:12,offset:6}" >
-            <view class=" p-3">
-              <view class="content-title">
-                <view v-t="'PersonalManagement.Title.CustomerZonePasswordChange'"></view>
-              </view>
-              <hr>
-              <uni-forms :model="passwordInfo" labelWidth="200" label-position="top">
-                <uni-row class="demo-uni-row">
-                  <uni-col :xs="24">
-                    <uni-forms-item :label="t('PersonalManagement.Label.OldPassword')">
-                      <uni-easyinput :clearable="false" v-model="passwordInfo.oldPassword"
-                                     :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
-                    </uni-forms-item>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <uni-forms-item :label="t('PersonalManagement.Label.NewPassword')">
-                      <uni-easyinput :clearable="false" v-model="passwordInfo.newPassword"
-                                     :placeholder="locale == 'es' ? 'Introduzca nueva contraseña' : t('placeholder.input')" />
-                    </uni-forms-item>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <uni-forms-item :label="t('PersonalManagement.Label.NewPasswordConfirmation')">
-                      <uni-easyinput :clearable="false" v-model="passwordInfo.checkPass"
-                                     :placeholder="locale == 'es' ? 'Introduzca nueva contraseña' : t('placeholder.input')" />
-                    </uni-forms-item>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <view class="notice-list">
-                      <view v-for="(item, index) in noticeItems" :key="index"
-                            :class="['notice-item', item.valid ? 'isOK' : '']">
-                        {{ item.label }}
-                      </view>
+      </view>
+      <uni-row class="demo-uni-row uni-row1" :gutter="20">
+        <uni-col v-show="selectedType == 1" :xs="{ span: 24, offset: 0 }" :sm="{ span: 24, offset: 0 }" :md="{ span: 24, offset: 0 }"
+          :lg="{ span: 12, offset: 6 }" :xl="{ span: 12, offset: 6 }">
+          <view class=" p-3">
+            <view class="content-title">
+              <view v-t="'PersonalManagement.Title.CustomerZonePasswordChange'"></view>
+            </view>
+            <hr>
+            <uni-forms :model="passwordInfo" labelWidth="200" label-position="top">
+              <uni-row class="demo-uni-row">
+                <uni-col :xs="24">
+                  <uni-forms-item :label="t('PersonalManagement.Label.OldPassword')">
+                    <uni-easyinput :clearable="false" v-model="passwordInfo.oldPassword"
+                      :placeholder="locale == 'es' ? 'Introduzca el nombre de la red' : t('placeholder.input')" />
+                  </uni-forms-item>
+                </uni-col>
+                <uni-col :xs="24">
+                  <uni-forms-item :label="t('PersonalManagement.Label.NewPassword')">
+                    <uni-easyinput :clearable="false" v-model="passwordInfo.newPassword"
+                      :placeholder="locale == 'es' ? 'Introduzca nueva contraseña' : t('placeholder.input')" />
+                  </uni-forms-item>
+                </uni-col>
+                <uni-col :xs="24">
+                  <uni-forms-item :label="t('PersonalManagement.Label.NewPasswordConfirmation')">
+                    <uni-easyinput :clearable="false" v-model="passwordInfo.checkPass"
+                      :placeholder="locale == 'es' ? 'Introduzca nueva contraseña' : t('placeholder.input')" />
+                  </uni-forms-item>
+                </uni-col>
+                <uni-col :xs="24">
+                  <view class="notice-list">
+                    <view v-for="(item, index) in noticeItems" :key="index"
+                      :class="['notice-item', item.valid ? 'isOK' : '']">
+                      {{ item.label }}
                     </view>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <button  type="button" class="btn btn-danger btn-shadow waves-effect mt-4" @click="passwordUpdate">
+                  </view>
+                </uni-col>
+                <uni-col :xs="24">
+                  <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect mt-4"
+                    @click="passwordUpdate">
                     {{ locale == 'es' ?
                       'Actualizarcontraseña' : t('Btn.Application') }}
-                    </button>
-                  </uni-col>
-                </uni-row>
-              </uni-forms>
+                  </button>
+                </uni-col>
+              </uni-row>
+            </uni-forms>
+          </view>
+        </uni-col>
+        <uni-col v-show="selectedType == 2" :xs="{ span: 24, offset: 0 }" :sm="{ span: { span: 24, offset: 0 }, offset: 0 }"
+          :md="{ span: 24, offset: 0 }" :lg="{ span: 12, offset: 6 }" :xl="{ span: 12, offset: 6 }">
+          <view class=" p-3">
+            <view class="content-title">
+              <view v-t="'PersonalManagement.Title.EmailChange'"></view>
             </view>
-          </uni-col>
-          <uni-col v-show="selectedType == 2" :xs="{span:24,offset:0}" :sm="{span:{span:24,offset:0},offset:0}" :md="{span:24,offset:0}" :lg="{span:12,offset:6}" :xl="{span:12,offset:6}" >
-            <view class=" p-3">
-              <view class="content-title">
-                <view v-t="'PersonalManagement.Title.EmailChange'"></view>
-              </view>
-              <hr>
-              <uni-forms :model="emailInfo" labelWidth="200" label-position="top">
-                <uni-row class="demo-uni-row">
-                  <uni-col :xs="24">
-                    <uni-forms-item :label="t('PersonalManagement.Label.OldEmail')">
-                      <uni-easyinput :clearable="false" v-model="emailInfo.oldEmail"
-                                     :placeholder="t('placeholder.input')" />
-                    </uni-forms-item>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <uni-forms-item :label="t('PersonalManagement.Label.NewEmail')">
-                      <uni-easyinput :clearable="false" v-model="emailInfo.email"
-                                     :placeholder="t('placeholder.input')" />
+            <hr>
+            <uni-forms :model="emailInfo" labelWidth="200" label-position="top">
+              <uni-row class="demo-uni-row">
+                <uni-col :xs="24">
+                  <uni-forms-item :label="t('PersonalManagement.Label.OldEmail')">
+                    <uni-easyinput :clearable="false" v-model="emailInfo.oldEmail"
+                      :placeholder="t('placeholder.input')" />
+                  </uni-forms-item>
+                </uni-col>
+                <uni-col :xs="24">
+                  <uni-forms-item :label="t('PersonalManagement.Label.NewEmail')">
+                    <uni-easyinput :clearable="false" v-model="emailInfo.email" :placeholder="t('placeholder.input')" />
+                  </uni-forms-item>
+                </uni-col>
+                <uni-col :xs="24">
+                  <view class="email-code">
+                    <uni-forms-item :label="t('PersonalManagement.Label.MailboxVerificationCode')"
+                      class="email-code-item">
+                      <uni-easyinput :clearable="false" v-model="emailInfo.emailCode"
+                        :placeholder="locale == 'es' ? 'Código de 6 dígitos' : t('placeholder.input')" />
                     </uni-forms-item>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <view class="email-code">
-                      <uni-forms-item :label="t('PersonalManagement.Label.MailboxVerificationCode')"
-                                      class="email-code-item">
-                        <uni-easyinput :clearable="false" v-model="emailInfo.emailCode"
-                                       :placeholder="locale == 'es' ? 'Código de 6 dígitos' : t('placeholder.input')" />
-                      </uni-forms-item>
-                      <view class="btn btn-code" @click="handleGetCode">{{ getCodeString }}</view>
-                    </view>
-                  </uni-col>
-                  <uni-col :xs="24">
-                    <button  type="button" class="btn btn-danger btn-shadow waves-effect mt-4" @click="emailUpdate">
-                      {{ locale == 'es' ?
+                    <view class="btn btn-code" @click="handleGetCode">{{ getCodeString }}</view>
+                  </view>
+                </uni-col>
+                <uni-col :xs="24">
+                  <button hover-class="" type="button" class="btn btn-danger btn-shadow waves-effect mt-4"
+                    @click="emailUpdate">
+                    {{ locale == 'es' ?
                       'Actualizarcontraseña' : t('Btn.Application') }}
-                    </button>
-                  </uni-col>
-                </uni-row>
-              </uni-forms>
-            </view>
-          </uni-col>
-        </uni-row>
-      </view>
+                  </button>
+                </uni-col>
+              </uni-row>
+            </uni-forms>
+          </view>
+        </uni-col>
+      </uni-row>
+    </view>
 
 
-    </view>
+  </view>
 </template>
 
 <script setup lang="ts">
@@ -108,147 +111,147 @@ import { personalApi } from '@/service/personal';
 import { useEmailCountdown } from '@/hooks/useEmailCountdown';
 import config from '@/config';
 const {
-    time,
-    text: getCodeString,
-    canSend,
-    start,
-    restore,
-    clear,
+  time,
+  text: getCodeString,
+  canSend,
+  start,
+  restore,
+  clear,
 } = useEmailCountdown()
 const { t, locale } = useI18n();
 interface BankListType {
-    key: string;
-    label: string;
-    icon: string;
+  key: string;
+  label: string;
+  icon: string;
 }
 const passwordInfo = ref({
-    oldPassword: '',
-    newPassword: '',
-    checkPass: ''
+  oldPassword: '',
+  newPassword: '',
+  checkPass: ''
 });
 const emailInfo = ref({
-    email: '',
+  email: '',
 });
 const selectedType = ref('1')
 const types = computed(() => {
   return [
-      { key: '1', label: t('PersonalManagement.Title.CustomerZonePasswordChange') },
-      {
-        key: '2',
-        label: t('PersonalManagement.Title.EmailChange'),
-      },
+    { key: '1', label: t('PersonalManagement.Title.CustomerZonePasswordChange') },
+    {
+      key: '2',
+      label: t('PersonalManagement.Title.EmailChange'),
+    },
   ]
 })
 const rule1 = computed(() => {
-    if (!passwordInfo.value.newPassword) {
-        return false;
-    }
-    return /^.{8,16}$/.test(passwordInfo.value.newPassword);
+  if (!passwordInfo.value.newPassword) {
+    return false;
+  }
+  return /^.{8,16}$/.test(passwordInfo.value.newPassword);
 });
 const rule2 = computed(() => {
-    return /^(?=.*?[a-z])(?=.*?[A-Z]).*$/.test(passwordInfo.value.newPassword);
+  return /^(?=.*?[a-z])(?=.*?[A-Z]).*$/.test(passwordInfo.value.newPassword);
 });
 const rule3 = computed(() => {
-    return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\\(\\)#_]).*\\1.*\\1)[A-Za-z0-9~!@&%$^\\(\\)#_]{8,16}$/.test(
-        passwordInfo.value.newPassword
-    );
+  return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\\(\\)#_]).*\\1.*\\1)[A-Za-z0-9~!@&%$^\\(\\)#_]{8,16}$/.test(
+    passwordInfo.value.newPassword
+  );
 });
 const rule4 = computed(() => {
-    console.log(/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@&%$^*./\\(\\)\\+\\=#_-])[A-Za-z0-9~!@&%$^*./\\(\\)\\+\\=#_-]{8,16}$/.test(passwordInfo.value.newPassword))
-    return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@&%$^*./\\(\\)\\+\\=#_-])[A-Za-z0-9~!@&%$^*./\\(\\)\\+\\=#_-]{8,16}$/.test(
-        passwordInfo.value.newPassword
-    );
+  console.log(/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@&%$^*./\\(\\)\\+\\=#_-])[A-Za-z0-9~!@&%$^*./\\(\\)\\+\\=#_-]{8,16}$/.test(passwordInfo.value.newPassword))
+  return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@&%$^*./\\(\\)\\+\\=#_-])[A-Za-z0-9~!@&%$^*./\\(\\)\\+\\=#_-]{8,16}$/.test(
+    passwordInfo.value.newPassword
+  );
 });
 const noticeItems = computed(() => [
-    { label: t('signup.form.rules.1st'), valid: rule1.value },
-    { label: t('signup.form.rules.2nd'), valid: rule2.value },
-    { label: t('signup.form.rules.4rd'), valid: rule4.value }
+  { label: t('signup.form.rules.1st'), valid: rule1.value },
+  { label: t('signup.form.rules.2nd'), valid: rule2.value },
+  { label: t('signup.form.rules.4rd'), valid: rule4.value }
 ])
 // 发送邮箱验证码
 async function sendEmailCode() {
-    try {
-        const res = await personalApi.customUpdateEmailCode({
-            email: emailInfo.value.email,
-            oldEmail: emailInfo.value.oldEmail,
-        });
-        if (res.code === 200) {
-            start()
-            return true;
-        } else {
-            showToast(t("Msg.CodeFail"));
-            return false;
-        }
-    } catch (error: any) {
-        console.log(error, 12);
-
-        showToast(t("Msg.CodeFail"));
-        return false;
+  try {
+    const res = await personalApi.customUpdateEmailCode({
+      email: emailInfo.value.email,
+      oldEmail: emailInfo.value.oldEmail,
+    });
+    if (res.code === 200) {
+      start()
+      return true;
+    } else {
+      showToast(t("Msg.CodeFail"));
+      return false;
     }
+  } catch (error: any) {
+    console.log(error, 12);
+
+    showToast(t("Msg.CodeFail"));
+    return false;
+  }
 }
 async function handleGetCode() {
-    if (!emailInfo.value.email) {
-        showToast(t("vaildate.email.empty"));
-        return;
-    }
-    if (!config.Pattern.Email.test(emailInfo.value.email)) {
-        showToast(t("vaildate.email.format"));
-        return;
-    }
+  if (!emailInfo.value.email) {
+    showToast(t("vaildate.email.empty"));
+    return;
+  }
+  if (!config.Pattern.Email.test(emailInfo.value.email)) {
+    showToast(t("vaildate.email.format"));
+    return;
+  }
 
-    if (!canSend.value) return
-    await sendEmailCode();
+  if (!canSend.value) return
+  await sendEmailCode();
 }
 // 提交修改邮箱
 async function emailUpdate() {
-    try {
-        const res = await personalApi.customUpdateEmail({
-            ...emailInfo.value
-        });
-        if (res.code === 200) {
-            clear()
-            emailInfo.value = {}
-            showToast(t("Msg.Success"));
-        } else {
-            showToast(res.msg);
-        }
-    } catch (error: any) {
-        showToast(error.msg);
+  try {
+    const res = await personalApi.customUpdateEmail({
+      ...emailInfo.value
+    });
+    if (res.code === 200) {
+      clear()
+      emailInfo.value = {}
+      showToast(t("Msg.Success"));
+    } else {
+      showToast(res.msg);
     }
+  } catch (error: any) {
+    showToast(error.msg);
+  }
 }
 // 提交修改密码
 async function passwordUpdate() {
-    try {
-        if (!rule1.value) {
-            showToast(t("signup.form.rules.1st"));
-            return;
-        }
-        if (!rule2.value) {
-            showToast(t("signup.form.rules.2nd"));
-            return;
-        }
-        if (!rule4.value) {
-            showToast(t("signup.form.rules.4rd"));
-            return;
-        }
-        if (passwordInfo.value.newPassword !== passwordInfo.value.checkPass) {
-            showToast(t("vaildate.password.same"));
-            return;
-        }
-        const res = await personalApi.customUpdatePassword({
-            ...passwordInfo.value
-        });
-        if (res.code === 200) {
-            // start()
-            showToast(t("Msg.Success"));
-        } else {
-            showToast(res.msg);
-        }
-    } catch (error: any) {
-        showToast(error.msg);
+  try {
+    if (!rule1.value) {
+      showToast(t("signup.form.rules.1st"));
+      return;
+    }
+    if (!rule2.value) {
+      showToast(t("signup.form.rules.2nd"));
+      return;
+    }
+    if (!rule4.value) {
+      showToast(t("signup.form.rules.4rd"));
+      return;
+    }
+    if (passwordInfo.value.newPassword !== passwordInfo.value.checkPass) {
+      showToast(t("vaildate.password.same"));
+      return;
+    }
+    const res = await personalApi.customUpdatePassword({
+      ...passwordInfo.value
+    });
+    if (res.code === 200) {
+      // start()
+      showToast(t("Msg.Success"));
+    } else {
+      showToast(res.msg);
     }
+  } catch (error: any) {
+    showToast(error.msg);
+  }
 }
 onMounted(() => {
-    restore()
+  restore()
 })
 
 
@@ -257,158 +260,161 @@ onMounted(() => {
 
 
 <style scoped lang="scss">
-  @import "@/uni.scss";
+@import "@/uni.scss";
+
 :deep(.uni-row1) {
-    .uni-col {
-    }
+  .uni-col {}
 
-    .uni-forms-item {
-        min-height: px2rpx(79);
-        margin-bottom: px2rpx(10);
-    }
+  .uni-forms-item {
+    min-height: px2rpx(79);
+    margin-bottom: px2rpx(10);
+  }
 
-    .uni-easyinput__content {
-        //border: none !important;
-        background-color: transparent;
-        //background-color: var(--color-zinc-100) !important;
-    }
+  .uni-easyinput__content {
+    //border: none !important;
+    background-color: transparent;
+    //background-color: var(--color-zinc-100) !important;
+  }
 }
 
 .btn {
-    width: 100%;
+  width: 100%;
 }
 
 .notice-list {
-    margin: 0;
-    padding: 0 px2rpx(12) px2rpx(12) 0;
+  margin: 0;
+  padding: 0 px2rpx(12) px2rpx(12) 0;
 
-    .notice-item {
-        font-size: px2rpx(14);
-        color: var(--bs-emphasis-color);
-        line-height: px2rpx(24);
-    }
+  .notice-item {
+    font-size: px2rpx(14);
+    color: var(--bs-emphasis-color);
+    line-height: px2rpx(24);
+  }
 
-    .isOK {
-        color: var(--bs-success);
-    }
+  .isOK {
+    color: var(--bs-success);
+  }
 }
 
 .email-code {
-    display: flex;
-    align-items: flex-end;
+  display: flex;
+  align-items: flex-end;
 
-    :deep(.email-code-item) {
-        flex: 1;
-      .uni-easyinput__content{
-        border-radius: px2rpx(6) 0 0 px2rpx(6);
-      }
-    }
+  :deep(.email-code-item) {
+    flex: 1;
 
-    .btn-code {
-      width: 30%;
-        margin-bottom: px2rpx(10);
-        //padding: px2rpx(10) px2rpx(16);
-      padding: 0;
-        background-color: #102047;
-        color: #fff;
-      height: 3rem;
-      box-sizing: border-box;
-      line-height: 3rem;
-      text-align: center;
-      border-radius: 0 px2rpx(6) px2rpx(6) 0;
-      cursor: pointer;
-      font-size: px2rpx(16);
-      flex-shrink: 0;
+    .uni-easyinput__content {
+      border-radius: px2rpx(6) 0 0 px2rpx(6);
     }
+  }
+
+  .btn-code {
+    width: 30%;
+    margin-bottom: px2rpx(10);
+    //padding: px2rpx(10) px2rpx(16);
+    padding: 0;
+    background-color: #102047;
+    color: #fff;
+    height: 3rem;
+    box-sizing: border-box;
+    line-height: 3rem;
+    text-align: center;
+    border-radius: 0 px2rpx(6) px2rpx(6) 0;
+    cursor: pointer;
+    font-size: px2rpx(16);
+    flex-shrink: 0;
+  }
 
 }
-  .bank-menu {
-    background: #fff;
-    overflow: hidden;
-
-    .bank-menu-item {
-      display: flex;
-      align-items: center;
-      gap: px2rpx(12);
-      padding: px2rpx(10) px2rpx(16);
-      cursor: pointer;
-      border: 1px solid #f3f4f6;
-      font-size: px2rpx(16);
-      font-weight: 500;
-      color: #1f2937;
-      transition: all 0.3s;
-      height: px2rpx(50);
-      border-radius: px2rpx(8);
-      margin-bottom: px2rpx(8);
 
-      .bank-icon {
-        width: px2rpx(50);
-      }
+.bank-menu {
+  background: #fff;
+  overflow: hidden;
 
-      &.active {
-        background: #ea2027;
-        color: var(--bs-emphasis-color);
-        border-radius: px2rpx(0);
-      }
+  .bank-menu-item {
+    display: flex;
+    align-items: center;
+    gap: px2rpx(12);
+    padding: px2rpx(10) px2rpx(16);
+    cursor: pointer;
+    border: 1px solid #f3f4f6;
+    font-size: px2rpx(16);
+    font-weight: 500;
+    color: #1f2937;
+    transition: all 0.3s;
+    height: px2rpx(50);
+    border-radius: px2rpx(8);
+    margin-bottom: px2rpx(8);
+
+    .bank-icon {
+      width: px2rpx(50);
+    }
 
-      &:hover {
-        background: #f9fafb;
-      }
+    &.active {
+      background: #ea2027;
+      color: var(--bs-emphasis-color);
+      border-radius: px2rpx(0);
+    }
 
-      &.active:hover {
-        background: #d11920;
-      }
+    &:hover {
+      background: #f9fafb;
     }
-  }
-  .bank-menu {
-    // background: #fff;
-    display: flex;
-    flex-wrap: wrap;
-    overflow: hidden;
 
-    &.card-header {
-      padding: px2rpx(10) px2rpx(20);
+    &.active:hover {
+      background: #d11920;
     }
+  }
+}
 
-    .bank-menu-item {
-      flex: 1;
-      min-width: px2rpx(260);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      //gap: px2rpx(12);
-      padding: 0 px2rpx(16);
-      cursor: pointer;
-      font-size: px2rpx(16);
-      font-weight: bold;
-      color: var(--bs-emphasis-color);
-      transition: all 0.3s;
-      height: px2rpx(36);
-      border-radius: px2rpx(8);
+.bank-menu {
+  // background: #fff;
+  display: flex;
+  flex-wrap: wrap;
+  overflow: hidden;
 
-      .bank-icon {
-        width: px2rpx(50);
-      }
+  &.card-header {
+    padding: px2rpx(10) px2rpx(20);
+  }
 
-      &.active {
-        background: #f5f5f5;
-        color: #000;
-        border-radius: px2rpx(8);
+  .bank-menu-item {
+    flex: 1;
+    min-width: px2rpx(260);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    //gap: px2rpx(12);
+    padding: 0 px2rpx(16);
+    cursor: pointer;
+    font-size: px2rpx(16);
+    font-weight: bold;
+    color: var(--bs-emphasis-color);
+    transition: all 0.3s;
+    height: px2rpx(36);
+    border-radius: px2rpx(8);
+
+    .bank-icon {
+      width: px2rpx(50);
+    }
 
-        &:hover {
-          background: var(--bs-link-hover-color-rgb);
-          color: #333;
-        }
-      }
+    &.active {
+      background: #f5f5f5;
+      color: #000;
+      border-radius: px2rpx(8);
 
       &:hover {
-        background: #f5f5f5;
+        background: var(--bs-link-hover-color-rgb);
         color: #333;
       }
+    }
 
-      &.active:hover {
-        background: #f5f5f5;
-      }
+    &:hover {
+      background: #f5f5f5;
+      color: #333;
+    }
+
+    &.active:hover {
+      background: #f5f5f5;
     }
   }
+}
 </style>

+ 66 - 58
pages/mine/improveImmediately.vue

@@ -86,7 +86,7 @@
             <uni-col :span="24">
               <view class="crm-title-box">
                 <text class="tit">{{ t('ImproveImmediately.Title.AddressInformation') }}</text>
-                <uni-tooltip :placement="isMobile?'left':'top'">
+                <uni-tooltip :placement="isMobile ? 'left' : 'top'">
                   <text class="icon-tip">ⓘ</text>
                   <template v-slot:content>
                     <view class="address-tip">
@@ -227,7 +227,7 @@
             <uni-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
               <view class="crm-title-box">
                 <text class="tit">{{ t('ImproveImmediately.Title.ProofIdentityUpdate') }}</text>
-                <uni-tooltip :placement="isMobile?'left':'bottom'">
+                <uni-tooltip :placement="isMobile ? 'left' : 'bottom'">
                   <text class="icon-tip">ⓘ</text>
                   <template v-slot:content>
                     <view class="address-tip">
@@ -243,10 +243,10 @@
               </uni-forms-item>
               <uni-row class="demo-uni-row uni-row1" :gutter="20">
                 <uni-col :xs="24" :sm="24" :md="10" :lg="10" :xl="10" class="mb-3">
-                  <cwg-file-picker-wrapper v-model="fileListID1.path" :disabled="fileListID1.status == 2" :limit="1" :delIcon="fileListID1.status != 2"
-                    :fileMediatype="'all'" uploadUrl="/custom/file/upload/1" :baseUrl="updateUrl" :imageWidth="150"
-                    :imageHeight="150" :showPreviewDelete="false" :canDelete="false" :uploadError="false"
-                    :showProgress="false" :showError="false"
+                  <cwg-file-picker-wrapper v-model="fileListID1.path" :disabled="fileListID1.status == 2" :limit="1"
+                    :delIcon="fileListID1.status != 2" :fileMediatype="'all'" uploadUrl="/custom/file/upload/1"
+                    :baseUrl="updateUrl" :imageWidth="150" :imageHeight="150" :showPreviewDelete="false"
+                    :canDelete="false" :uploadError="false" :showProgress="false" :showError="false"
                     :image-styles="imageStyle" @update:modelValue="(val) => handleFileUpdate(val, '1')"
                     customClass="avatar-uploader">
                   </cwg-file-picker-wrapper>
@@ -265,10 +265,10 @@
                   <!--                  </view>-->
                 </uni-col>
                 <uni-col :xs="24" :sm="24" :md="10" :lg="10" :xl="10">
-                  <cwg-file-picker-wrapper v-model="fileListID2.path" :disabled="fileListID2.status == 2" :limit="1" :delIcon="fileListID2.status != 2"
-                    :fileMediatype="'all'" uploadUrl="/custom/file/upload/2" :baseUrl="updateUrl" :imageWidth="150"
-                    :imageHeight="150" :showPreviewDelete="false" :canDelete="false" :uploadError="false"
-                    :showProgress="false" :canChoose="true" :showError="false"
+                  <cwg-file-picker-wrapper v-model="fileListID2.path" :disabled="fileListID2.status == 2" :limit="1"
+                    :delIcon="fileListID2.status != 2" :fileMediatype="'all'" uploadUrl="/custom/file/upload/2"
+                    :baseUrl="updateUrl" :imageWidth="150" :imageHeight="150" :showPreviewDelete="false"
+                    :canDelete="false" :uploadError="false" :showProgress="false" :canChoose="true" :showError="false"
                     :image-styles="imageStyle" @update:modelValue="(val) => handleFileUpdate(val, '2')"
                     customClass="avatar-uploader">
                   </cwg-file-picker-wrapper>
@@ -284,7 +284,7 @@
               <uni-col v-if="isPC" :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
                 <view class="crm-title-box">
                   <text class="tit">{{ t('ImproveImmediately.Title.MobileDeviceUpload') }}</text>
-                  <uni-tooltip :placement="isMobile?'left':'bottom'">
+                  <uni-tooltip :placement="isMobile ? 'left' : 'bottom'">
                     <text class="icon-tip">ⓘ</text>
                     <template v-slot:content>
                       <view class="address-tip">
@@ -457,12 +457,13 @@
               <uni-row class="demo-uni-row uni-row1" :gutter="20">
                 <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
                   <cwg-file-picker-wrapper :limit="9" :multiple="true" :fileMediatype="'all'"
-                    uploadUrl="/custom/file/upload/10" :baseUrl="updateUrl" :imageWidth="100" :imageHeight="60" noFileList
-                    :showPreviewDelete="false" :canDelete="false" :uploadError="false" :showProgress="false"
+                    uploadUrl="/custom/file/upload/10" :baseUrl="updateUrl" :imageWidth="100" :imageHeight="60"
+                    noFileList :showPreviewDelete="false" :canDelete="false" :uploadError="false" :showProgress="false"
                     :image-styles="imageStyle" @update:modelValue="(val) => handleFileUpdate(val, '10')"
                     custom-class="fileOther" :showError="false">
                     <template #add-button="{ handleChoose }">
-                      <button type="primary" class="btn btn-danger waves-effect waves-light btn-upload" @click="handleChoose">{{ t('Btn.Upload') }}</button>
+                      <button hover-class="" type="primary" class="btn btn-danger waves-effect waves-light btn-upload"
+                        @click="handleChoose">{{ t('Btn.Upload') }}</button>
                     </template>
 
                   </cwg-file-picker-wrapper>
@@ -516,13 +517,14 @@
           <template v-if="currentStep === 4">
             <view class="btns">
               <view class="cwg-button two-btn">
-                <button class="btn btn-danger" type="primary" block @click="cancle">
+                <button hover-class="" class="btn btn-danger" type="primary" block @click="cancle">
                   {{ t('Btn.Cancel') }}
                 </button>
-                <button  block class="btn btn-danger" type="primary" @click="goStep(3)">
+                <button hover-class="" block class="btn btn-danger" type="primary" @click="goStep(3)">
                   {{ t('Btn.Last') }}
                 </button>
-                <button type="primary" class="btn btn-danger" block :loading="loadingStates.submit" @click="Submit">
+                <button hover-class="" type="primary" class="btn btn-danger" block :loading="loadingStates.submit"
+                  @click="Submit">
                   {{ t('Btn.Submit') }}
                 </button>
               </view>
@@ -531,13 +533,14 @@
           <template v-else-if="currentStep === 3">
             <view class="btns">
               <view class="cwg-button two-btn">
-                <button class="btn btn-danger" type="primary" block @click="cancle">
+                <button hover-class="" class="btn btn-danger" type="primary" block @click="cancle">
                   {{ t('Btn.Cancel') }}
                 </button>
-                <button  block class="btn prev-btn btn-danger" type="primary" @click="goStep(2)">
+                <button hover-class="" block class="btn prev-btn btn-danger" type="primary" @click="goStep(2)">
                   {{ t('Btn.Last') }}
                 </button>
-                <button class="btn btn-danger" type="primary" block :loading="loadingStates.next" @click="goStep(4)">
+                <button hover-class="" class="btn btn-danger" type="primary" block :loading="loadingStates.next"
+                  @click="goStep(4)">
                   {{ t('Btn.Next') }}
                 </button>
               </view>
@@ -546,13 +549,14 @@
           <template v-else-if="currentStep === 2">
             <view class="btns">
               <view class="cwg-button two-btn">
-                <button class="btn btn-danger" type="primary" block @click="cancle">
+                <button hover-class="" class="btn btn-danger" type="primary" block @click="cancle">
                   {{ t('Btn.Cancel') }}
                 </button>
-                <button  block class="btn prev-btn btn-danger" type="primary" @click="goStep(1)">
+                <button hover-class="" block class="btn prev-btn btn-danger" type="primary" @click="goStep(1)">
                   {{ t('Btn.Last') }}
                 </button>
-                <button class="btn btn-danger" type="primary" block :loading="loadingStates.next" @click="goStep(3)">
+                <button hover-class="" class="btn btn-danger" type="primary" block :loading="loadingStates.next"
+                  @click="goStep(3)">
                   {{ t('Btn.Next') }}
                 </button>
               </view>
@@ -561,10 +565,11 @@
           <template v-else-if="currentStep === 1">
             <view class="btns">
               <view class="cwg-button two-btn">
-                <button class="btn btn-danger" type="primary" block @click="cancle">
+                <button hover-class="" class="btn btn-danger" type="primary" block @click="cancle">
                   {{ t('Btn.Cancel') }}
                 </button>
-                <button class="btn btn-danger" type="primary" block :loading="loadingStates.next" @click="goStep(2)">
+                <button hover-class="" class="btn btn-danger" type="primary" block :loading="loadingStates.next"
+                  @click="goStep(2)">
                   {{ t('Btn.Next') }}
                 </button>
               </view>
@@ -585,10 +590,10 @@
       <view class="des2">{{ t('ImproveImmediately.Content.Leave2') }}</view>
       <view class="dialog-footer">
         <view class="btn-content">
-          <button class="cancel-btn" @click="closeDia">
+          <button hover-class="" class="cancel-btn" @click="closeDia">
             {{ t('Btn.TemporarilyNot') }}
           </button>
-          <button class="confirm-btn primary"  @click="save">
+          <button hover-class="" class="confirm-btn primary" @click="save">
             {{ t('Btn.Save') }}
           </button>
         </view>
@@ -602,17 +607,17 @@
       <QrCode v-if="text1" :text="text1"></QrCode>
       <view class="dialog-footer">
         <view class="btn-content">
-          <button class="cancel-btn" @click="closeDia">
+          <button hover-class="" class="cancel-btn" @click="closeDia">
             {{ t('Btn.Cancel') }}
           </button>
-          <button class="confirm-btn primary"  @click="toHome">
+          <button hover-class="" class="confirm-btn primary" @click="toHome">
             {{ t('Btn.Home') }}
           </button>
         </view>
       </view>
     </view>
   </uni-popup>
-  <cwg-global-popup/>
+  <cwg-global-popup />
 </template>
 
 <script setup lang="ts">
@@ -634,7 +639,7 @@ import icon_arrowR from '@/static/icons/icon_arrowR.svg'
 import { useWindowWidth } from '@/composables/useWindowWidth'
 import { usePopup } from '@/hooks/usePopup'
 import useUserStore from '@/stores/use-user-store'
-const { confirm , toast } = usePopup()
+const { confirm, toast } = usePopup()
 const router = useRouter()
 const { t, locale } = useI18n()
 const currentStep = ref<number>(3)
@@ -787,7 +792,7 @@ function validateAddress(a: any, b?: any, c?: any) {
   return Patterns.address.test(val) ? true : t('card.New.n1')
 }
 
-const rules = computed(()=>({
+const rules = computed(() => ({
   customType: [Validators.required(t('card.vaildate.v1'))],
   firstName: [Validators.required(t('card.vaildate.v3')), Validators.custom(validateName)],
   lastName: [Validators.required(t('card.vaildate.v4')), Validators.custom(validateName)],
@@ -825,8 +830,8 @@ onLoad((options) => {
 
 function goStep(step: number) {
   console.log(step, 'step')
-  if (step == 2){
-    if (!formData.value?.identity){
+  if (step == 2) {
+    if (!formData.value?.identity) {
       toast(t('vaildate.IDCard.empty'))
       return
     }
@@ -834,11 +839,11 @@ function goStep(step: number) {
   if (step == 4) {
     if (currentUploadCard.value == 1) {
       if (!formData.value.cardType) {
-        toast( t('vaildate.CardType.empty'))
+        toast(t('vaildate.CardType.empty'))
         return
       }
       if (!fileListID1.value.path || !fileListID2.value.path) {
-        toast( t('vaildate.IDPhoto.empty'))
+        toast(t('vaildate.IDPhoto.empty'))
         return
       }
     }
@@ -847,26 +852,26 @@ function goStep(step: number) {
 }
 
 // 选项数据
-const customerTypeOptions = computed(()=>[
+const customerTypeOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.CustomerType1') },
   { value: 2, text: t('ImproveImmediately.Label.CustomerType2') },
 ])
 
-const identityTypes = computed(()=>[
+const identityTypes = computed(() => [
   { text: t('ImproveImmediately.Label.IDCard'), value: 2 },
   { text: t('ImproveImmediately.Label.Passport'), value: 3 },
 ])
 
-const genderOptions = computed(()=>[
+const genderOptions = computed(() => [
   { value: 1, text: t('PersonalManagement.Label.Men') },
   { value: 2, text: t('PersonalManagement.Label.Women') },
 ])
-const radioList = computed(()=>[
+const radioList = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.Yes') },
   { value: 0, text: t('ImproveImmediately.Label.No') },
 ])
 
-const educationOptions = computed(()=>[
+const educationOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.Education1') },
   { value: 2, text: t('ImproveImmediately.Label.Education2') },
   { value: 3, text: t('ImproveImmediately.Label.Education3') },
@@ -874,7 +879,7 @@ const educationOptions = computed(()=>[
   { value: 5, text: t('ImproveImmediately.Label.Education5') },
 ])
 
-const employmentOptions =computed(()=> [
+const employmentOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.OnJob1') },
   { value: 2, text: t('ImproveImmediately.Label.OnJob2') },
   { value: 3, text: t('ImproveImmediately.Label.OnJob3') },
@@ -882,14 +887,14 @@ const employmentOptions =computed(()=> [
   { value: 5, text: t('ImproveImmediately.Label.OnJob5') },
 ])
 
-const transactionPurposeOptions =computed(()=> [
+const transactionPurposeOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.purposeTransaction1') },
   { value: 2, text: t('ImproveImmediately.Label.purposeTransaction2') },
   { value: 3, text: t('ImproveImmediately.Label.purposeTransaction3') },
   { value: 4, text: t('ImproveImmediately.Label.purposeTransaction4') },
 ])
 
-const fundSourceOptions = computed(()=>[
+const fundSourceOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.SourceFunds1') },
   { value: 2, text: t('ImproveImmediately.Label.SourceFunds2') },
   { value: 3, text: t('ImproveImmediately.Label.SourceFunds3') },
@@ -898,7 +903,7 @@ const fundSourceOptions = computed(()=>[
   { value: 6, text: t('ImproveImmediately.Label.SourceFunds6') },
 ])
 
-const annualIncomeOptions = computed(()=>[
+const annualIncomeOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.TotalAnnualRevenue1') },
   { value: 2, text: t('ImproveImmediately.Label.TotalAnnualRevenue2') },
   { value: 3, text: t('ImproveImmediately.Label.TotalAnnualRevenue3') },
@@ -906,7 +911,7 @@ const annualIncomeOptions = computed(()=>[
   { value: 5, text: t('ImproveImmediately.Label.TotalAnnualRevenue5') },
 ])
 
-const netWorthOptions = computed(()=>[
+const netWorthOptions = computed(() => [
   { value: 1, text: t('ImproveImmediately.Label.TotalNetAssets1') },
   { value: 2, text: t('ImproveImmediately.Label.TotalNetAssets2') },
   { value: 3, text: t('ImproveImmediately.Label.TotalNetAssets3') },
@@ -1038,7 +1043,7 @@ async function fileOtherDelete(id) {
     confirmText: t('Btn.Confirm'),
     cancelText: t('Btn.Cancel'),
   })
-  if (result){
+  if (result) {
     try {
       // 确认删除
       let data = await personalApi.customFileDelete({ ids: [id] })
@@ -1046,7 +1051,7 @@ async function fileOtherDelete(id) {
         uni.showToast(t('Msg.DeleteSuccess'))
         getCustomFileList()
       }
-    }catch (e) {
+    } catch (e) {
       uni.showToast(e.msg)
     }
   }
@@ -1265,7 +1270,7 @@ async function getCityList(pid: string) {
   }
 }
 
-async function getLoginInfo(type=false) {
+async function getLoginInfo(type = false) {
   try {
     let res = await personalApi.CustomLoginInfo()
     if (res.code == Config.Code.StatusOK) {
@@ -1399,7 +1404,7 @@ watch(
   () => formData.value.firstName,
   () => {
     if (localStorage.getItem('lang') == 'cn' && formData.value.firstName && formData.value.lastName) {
-      formData.value.nameEn = pinyin(`${formData.value.firstName} ${formData.value.lastName}`,{ toneType: 'none' })
+      formData.value.nameEn = pinyin(`${formData.value.firstName} ${formData.value.lastName}`, { toneType: 'none' })
     }
   },
 )
@@ -1408,12 +1413,12 @@ watch(
   () => formData.value.lastName,
   () => {
     if (localStorage.getItem('lang') == 'cn' && formData.value.firstName && formData.value.lastName) {
-      formData.value.nameEn = pinyin(`${formData.value.firstName} ${formData.value.lastName}`,{ toneType: 'none' })
+      formData.value.nameEn = pinyin(`${formData.value.firstName} ${formData.value.lastName}`, { toneType: 'none' })
     }
   },
 )
 
-watch(locale,()=>{
+watch(locale, () => {
   formRef.value?.clearValidate()
 })
 
@@ -1437,7 +1442,8 @@ onUnmounted(() => {
 
 <style scoped lang="scss">
 @import "@/uni.scss";
-.btn{
+
+.btn {
   margin: 0;
   width: 100%;
 }
@@ -1587,6 +1593,7 @@ onUnmounted(() => {
     justify-content: center;
     align-content: center;
     align-items: center;
+
     @media screen and (max-width: 990px) {
       flex-direction: column;
       align-items: flex-start;
@@ -1736,16 +1743,16 @@ onUnmounted(() => {
   width: px2rpx(140);
   //height: px2rpx(60);
   font-size: px2rpx(14);
-  word-break:break-all;
-  white-space:wrap;
-  word-wrap:break-word;
+  word-break: break-all;
+  white-space: wrap;
+  word-wrap: break-word;
 }
 
 .crm-title-box {
   display: flex;
   align-items: center;
   margin: px2rpx(20) 0;
-  background-color: var(--table-th-color) ;
+  background-color: var(--table-th-color);
   color: #333;
 
   .tit {
@@ -1838,7 +1845,8 @@ onUnmounted(() => {
     color: var(--bs-heading-color);
   }
 }
-.btn-upload{
+
+.btn-upload {
   width: px2rpx(120);
 }
 </style>