ljc 3 týždňov pred
rodič
commit
55b162d5a4

+ 1 - 1
components/cwg-complex-search.vue

@@ -223,7 +223,7 @@ const displayRows = computed(() => {
 
 // 是否有更多字段可以展开
 const hasMoreFields = computed(() => {
-    return formRows.value.length > 3
+    return formRows.value.length > winWidth.value>1500?4:3
 })
 
 // 切换显示/隐藏状态

+ 1 - 1
components/cwg-confirm-popup.vue

@@ -12,7 +12,7 @@
 </template>
 
 <script setup>
-import { ref, onMounted, onUnmounted } from 'vue'
+import { ref, onMounted, onUnmounted,watch } from 'vue'
 import { useI18n } from 'vue-i18n'
 const { t } = useI18n()
 

+ 10 - 10
composables/useMenuSplit.ts

@@ -54,8 +54,8 @@ export function useMenuSplit(handleClick1: (item: MenuItem) => void) {
                 router.reLaunch('/pages/ib/index')
                 break
             case 'customer':
-                // router.reLaunch('/pages/customer/dashboard')
-                router.reLaunch('/pages/customer/index')
+                router.reLaunch('/pages/customer/dashboard')
+                // router.reLaunch('/pages/customer/index')
                 break
             default:
                 break
@@ -136,13 +136,13 @@ export function useMenuSplit(handleClick1: (item: MenuItem) => void) {
     }))
 
     const customerBaseMenus = computed<MenuItem[]>(() => [
-      // {
-      //   isOpenMenu: false,
-      //   path: '/pages/customer/dashboard',
-      //   label: 'Documentary.console.item1',
-      //   icon: 'crm-mb',
-      //   submenuHeight: 0,
-      // },
+      {
+        isOpenMenu: false,
+        path: '/pages/customer/dashboard',
+        label: 'Documentary.console.item1',
+        icon: 'crm-mb',
+        submenuHeight: 0,
+      },
         {
             isOpenMenu: false,
             submenuHeight: 4 * ((40 + 8)) + 8,
@@ -239,7 +239,7 @@ export function useMenuSplit(handleClick1: (item: MenuItem) => void) {
             children: [
                 { path: '/pages/ib/customer', label: 'Ib.Custom.Manage3', icon: 'icon-deposit' },
                 { path: '/pages/ib/subsList', label: 'Ib.Custom.Manage2', icon: 'icon-deposit' },
-                { path: '/pages/ib/agentList', label: 'Documentary.console.item23', icon: 'icon-deposit' },
+                // { path: '/pages/ib/agentList', label: 'Documentary.console.item23', icon: 'icon-deposit' },
                 { path: '/pages/ib/accountList', label: 'Ib.Custom.Manage1', icon: 'icon-deposit' }
             ],
         },

+ 15 - 2
locale/cn.json

@@ -21,6 +21,12 @@
       "enum2": "每两周",
       "enum3": "每月",
       "v1": "请输入大于0的数字"
+    },
+    "custom": {
+      "t1": "总余额",
+      "t2": "净值",
+      "t3": "总存款",
+      "t4": "总取款"
     }
 
   },
@@ -619,6 +625,9 @@
     "depositCurrency": {
       "empty": "请选择货币类型"
     },
+    "depositHashCode": {
+      "empty": "请输入哈希值"
+    },
     "depositVoucher": {
       "empty": "请上传汇款凭证"
     },
@@ -1517,7 +1526,9 @@
       "Parameter": "参数设置",
       "Actives12": "限时活动",
       "ActivesContent12": "限时活动的条款解释",
-      "Upload12": "凭证上传"
+      "Upload12": "凭证上传",
+      "TradingAccount": "Trading Account",
+      "MyAccount": "我的交易账户"
     },
     "Deposit": {
       "Title": "在线存款",
@@ -1564,7 +1575,9 @@
       "Channel2": "中国网银支付",
       "Channel3": "数字货币",
       "Channel4": "电子钱包",
-      "Tips": "提示:不接受非本人账户电汇存款"
+      "Tips": "提示:不接受非本人账户电汇存款",
+      "HashCode": "哈希值",
+      "HashCodePlaceholder": "请输入交易哈希值"
     },
     "Withdraw": {
       "Title": "提款申请",

+ 16 - 2
locale/en.json

@@ -21,6 +21,13 @@
       "enum2": "Every two weeks",
       "enum3": "Monthly",
       "v1": "Please enter a number greater than 0."
+    },
+    "custom": {
+      "t1": "Total Balance",
+      "t2": "Equity",
+      "t3": "Total Deposit",
+      "t4": "Total Withdrawal",
+      "t5": ""
     }
   },
   "common": {
@@ -606,6 +613,9 @@
     "depositCurrency": {
       "empty": "Please select currencies"
     },
+    "depositHashCode": {
+      "empty": "Please enter the transaction hash"
+    },
     "depositVoucher": {
       "empty": "Please upload remittance receipt"
     },
@@ -1483,7 +1493,8 @@
       "Parameter": "Parameter Setting",
       "Actives12": "Limited-time event",
       "ActivesContent12": "Terms and conditions of the limited-time event",
-      "Upload12": "Upload voucher"
+      "Upload12": "Upload voucher",
+      "MyAccount": "My Trading Account"
     },
     "Deposit": {
       "Title": "Online Deposit",
@@ -1530,7 +1541,10 @@
       "Channel2": "China UnionPay",
       "Channel3": "Cryptocurrency Wallet",
       "Channel4": "Electronic Wallet",
-      "Tips": "Tips:Not accept deposits by wire transfer from accounts other than your own"
+      "Tips": "Tips:Not accept deposits by wire transfer from accounts other than your own",
+      "HashCode": "Hash Value",
+      "HashCodePlaceholder": "Please enter the transaction hash",
+
     },
     "Withdraw": {
       "Title": "Withdrawal Application",

+ 26 - 15
pages/customer/components/AccountCard.vue

@@ -1,5 +1,5 @@
 <template>
-    <view class="col-lg-4 col-md-6">
+    <view class="col-lg-4 col-md-6" :class="noCtrl?'w100':''">
         <view class="card">
             <view class="card-header d-flex align-items-center justify-content-between border-0 pb-2 p-3">
                 <uni-tooltip v-if="account.del == 1" placement="right">
@@ -22,7 +22,7 @@
 
 
 
-                <view class="clearfix">
+                <view class="clearfix" v-if="!noCtrl">
                     <view class="btn-group">
                         <cwg-dropdown ref="dropdownRef" @open="onOpen" @close="onClose" :menu-list="customMenuList"
                             @menuClick="handleCustomClick">
@@ -85,18 +85,20 @@
                                 </view>
                             </view>
                         </view>
-                        <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"
-                                :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">
-                                    <cwg-icon :name="btn.icon" :size="14"
+                      <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"
+                                  :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">
+                              <cwg-icon :name="btn.icon" :size="14"
                                         :color="btn.key === 'deposit' ? '#fff' : ''" />
-                                    {{ t(btn.label) }}
-                                </view>
-                            </button>
+                              {{ t(btn.label) }}
+                            </view>
+                          </button>
                         </view>
+                      </template>
                     </view>
                 </view>
             </view>
@@ -123,9 +125,15 @@ import TerminalInfoDialog from './TerminalInfoDialog.vue'
 import useGlobalStore from '@/stores/use-global-store'
 const globalStore = useGlobalStore()
 const isDark = computed(() => globalStore.theme === 'dark')
-const props = defineProps<{
-    account: Account;
-}>();
+const props = defineProps({
+    account: {
+      type: Object,
+    },
+  noCtrl: {
+      type: Boolean,
+    default: false,
+  }
+});
 const accountInfo = ref(props.account)
 export interface Account {
     labels: string[];          // 标签数组,如 ['真实', 'MT4', 'Standard']
@@ -337,4 +345,7 @@ onBeforeUnmount(() => {
     color: var(--bs-emphasis-color) !important;
     border-color: var(--btn-color) !important;
 }
+.w100{
+  width: 100% !important;
+}
 </style>

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

@@ -135,7 +135,7 @@ const CopyShareLink = (link) => {
       button {
         width: 100%;
         height: 44px;
-        line-height: 1;
+        line-height: 44px;
         border-radius: 6px;
         font-size: 16px;
       }

+ 15 - 2
pages/customer/components/digitalPayConfirmPopup.vue

@@ -33,6 +33,11 @@
                     <cwg-file-picker-wrapper v-model="imageUrl" :limit="1" :editable="true" :fileMediatype="'all'"
                         :imageWidth="142" :imageHeight="142" uploadUrl="/common/upload" :baseUrl="Host80" />
                 </view>
+                <view class="digital-pay-upload-wrap">
+                    <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>
+                </view>
             </view>
         </view>
         <template #footer>
@@ -53,6 +58,7 @@ const props = defineProps({
     WireTransferAccount: { type: Object, default: () => ({ name: '', type: '', address: '', url: '' }) },
 });
 const emit = defineEmits(['update:visible']);
+const hashCode = ref('')
 
 const { t } = useI18n();
 const visible = computed({
@@ -68,10 +74,17 @@ const handleConfirm = () => {
         })
         return
     }
-    emit('confirm', imageUrl.value)
+    if (!hashCode.value) {
+        uni.showToast({
+            title: t("vaildate.depositHashCode.empty"),
+            icon: 'error'
+        })
+        return
+    }
+    emit('confirm', { iamge:imageUrl.value,hashCode:hashCode.value, })
     close()
 }
-const close = () => { visible.value = false; imageUrl.value = ""; };
+const close = () => { visible.value = false; imageUrl.value = "";hashCode.value = '' };
 </script>
 
 <style lang="scss" scoped>

+ 202 - 93
pages/customer/dashboard.vue

@@ -26,7 +26,7 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">Total Balance</text>
+                    <text class="text-muted text-sm">{{t('vu.custom.t1')}}</text>
                     <text
                       :class="['growth-rate', compareData.totalBalanceGrowthRate||0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalBalanceGrowthRate || 0 >= 0 ? '+' : ''
@@ -46,7 +46,7 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">Equity</text>
+                    <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 }}%
@@ -65,7 +65,7 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">Total deposit</text>
+                    <text class="text-muted text-sm">{{t('vu.custom.t3')}}</text>
                     <text
                       :class="['growth-rate', compareData.totalDepositAmountGrowthRate ||0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalDepositAmountGrowthRate || 0 >= 0 ? '+' : ''
@@ -85,7 +85,7 @@
                 </view>
                 <view class="flex-1">
                   <view class="d-flex justify-between items-start mb-1">
-                    <text class="text-muted text-sm">Total withdrawal</text>
+                    <text class="text-muted text-sm">{{t('vu.custom.t4')}}</text>
                     <text
                       :class="['growth-rate', compareData.totalWithdrawalAmountGrowthRate||0 >= 0 ? 'rate-up' : 'rate-down']">
                       {{ compareData.totalWithdrawalAmountGrowthRate || 0 >= 0 ? '+' : ''
@@ -104,44 +104,48 @@
           <view class="chart-box crm-border-radius">
             <view class="chart-title">
               <uni-row>
-                <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-                  <view class="time" @click="toReload">
-                    <cwg-icon name="crm-refresh" :size="16" color="#666" />
-                    <text class="crm-cursor"> GMT+3 {{ time }}</text>
-                  </view>
-                </uni-col>
-                <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-                  <view class="title">
-                    <view class="name">
+                <uni-row>
+                  <view class="opt-title mb-2">
+                    <view class="bigtitle">
                       <text v-if="chartForm.chartType == 4">{{ t('Custom.Index.TradingVolumeStatistics') }}</text>
                       <text v-if="chartForm.chartType == 2">{{ t('Custom.Index.DepositStatistical') }}</text>
                       <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="account" v-if="chartForm.login">
-                      <text>{{ t('Custom.Index.TradingAccount') }}</text>
-                      <text> —</text>
-                      <text>{{ chartForm.login }}</text>
-                    </view>
-                    <view class="date">
-                      <uni-datetime-picker
-                        v-model="isDate"
-                        type="daterange"
-                        :placeholder="t('placeholder.Start') + ' - ' + t('placeholder.End')"
-                        @change="getSearchDate"
-                      />
+                    <view class="time" @click="toReload">
+                      <cwg-icon name="crm-refresh" :size="16" color="#666" />
+                      <text class="crm-cursor"> GMT+3 {{ time }}</text>
                     </view>
                   </view>
-                </uni-col>
-                <uni-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
-                  <view class="operation" @click="isChart = true">
-                    <text style="font-size: 14px">{{ t('Custom.Index.Parameter') }}</text>
-                    <cwg-icon name="iconcanshu" :size="16" color="#666" />
+
+                </uni-row>
+
+                <uni-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+                  <view class="btn-opt">
+                    <view class="title">
+
+                      <view class="account" v-if="chartForm.login">
+                        <text>{{ t('Custom.Index.TradingAccount') }}</text>
+                        <text> —</text>
+                        <text>{{ chartForm.login }}</text>
+                      </view>
+                      <view class="date">
+                        <uni-datetime-picker
+                          v-model="isDate"
+                          type="daterange"
+                          :placeholder="t('placeholder.Start') + ' - ' + t('placeholder.End')"
+                          @change="getSearchDate"
+                        />
+                      </view>
+                    </view>
+
+                    <button class="operation" @click="isChart = true">
+                      <text style="font-size: 14px">{{ t('Custom.Index.Parameter') }}</text>
+                    </button>
                   </view>
                 </uni-col>
               </uni-row>
             </view>
-            {{isMobile}}
             <view class="chart-container">
               <cwg-match-media :max-width="991">
               <cwg-charts type="line" :chartData="chartData" :opts="chartOpts" tooltipFormat="tooltipCustom" ontouch />
@@ -152,6 +156,21 @@
             </view>
           </view>
         </uni-col>
+        <uni-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="height: 100%">
+          <view class="chart-box mh crm-border-radius">
+            <view class="bigtitle mb-3">
+              {{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"/>
+            </view>
+            <view>
+              <AccountCard :key="curData?.accountNumber"
+                           :account="curData" noCtrl  />
+            </view>
+          </view>
+        </uni-col>
       </uni-col>
     </uni-row>
     <cwg-improve-popup v-model:visible="dialogCheck" @confirm="confirm" />
@@ -165,7 +184,6 @@
               v-model:value="chartForm.chartType"
               :options="chartTypeOptions"
               :placeholder="t('placeholder.choose')"
-              filterable
             />
           </uni-forms-item>
           <uni-forms-item :label="t('Label.PlatformType') + ':'" prop="platform">
@@ -181,7 +199,6 @@
               v-model:value="chartForm.login"
               :options="loginOptions"
               :placeholder="t('placeholder.choose')"
-              filterable
             />
           </uni-forms-item>
         </uni-forms>
@@ -201,19 +218,17 @@
   import useRouter from '@/hooks/useRouter'
   import config from '@/config/index'
   import useUserStore from '@/stores/use-user-store'
-  import { useStorage } from '@/hooks/useStorage'
   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'
   const { t, locale } = useI18n()
   const loading = ref(false)
   const router = useRouter()
   const { Code } = config
   const userStore = useUserStore()
   const { numberFormat } = useFilters()
-  const listApi = ref(documentaryApi.followDailySubscribeProfit)
 
 
   const loginOptions = ref([])
@@ -222,6 +237,7 @@
   const dealDate = ref({})
   const SubscribeProfitDate = ref([])
   const compareData = ref({})
+  const loginValue = ref('')
 
   const isChart = ref(false)
   const isDate = ref(['', ''])
@@ -262,11 +278,11 @@
     login: '',
   })
 
-  const chartTypeOptions = ref([
-    { text: 'Trading Volume Statistics', value: 4 },
-    { text: 'Deposit Statistical', value: 2 },
-    { text: 'Withdrawals Statistical', value: 3 },
-    { text: 'Profit Loss', value: 6 },
+  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 = [
@@ -274,6 +290,19 @@
     { text: 'MT5', value: 'MT5' },
   ]
 
+  const loginDataOptions = ref([])
+  const loginComboxOptions = computed(() => {
+    return loginDataOptions.value.map((item) => ({
+      text: item.label,
+      value: item.login
+    }))
+  })
+
+  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() // 本地时间和格林威治的时间差,单位为分钟
@@ -307,6 +336,21 @@
   const toReload = () => {
     goTime()
   }
+  // 获取账户信息
+  const getDateList = async () => {
+    loading.value = true
+    let res = await customApi.CustomDropdown({ platform: "" })
+    if (res.code == Code.StatusOK) {
+      loginDataOptions.value = res.data.map(item => ({
+        ...item,
+        label: `${item.login}`
+      }))
+      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)) {
@@ -393,46 +437,6 @@
   }
 
 
-  const groupTypeName = (type) => {
-    if (!type) return '--'
-    if (type == 1) return t('AccountType.ClassicAccount')
-    if (type == 2) return t('AccountType.SeniorAccount')
-    if (type == 5) return t('AccountType.SpeedAccount')
-    if (type == 6) return t('AccountType.SpeedAccount')
-    if (type == 7) return t('AccountType.StandardAccount')
-    if (type == 8) return t('AccountType.CentAccount')
-    return type
-  }
-
-  const groupCurrency = (type) => {
-    console.log(type, 'usd')
-    if (type == 'GBP') {
-      return ': £'
-    } else if (type == 'USD') {
-      return ': $'
-    } else if (type == 'EUR') {
-      return ': €'
-    } else if (type == 'USC') {
-      return ': ¢'
-    } else {
-      return ': $'
-    }
-  }
-
-  const groupCurrency1 = (type) => {
-    if (type == 'GBP') {
-      return '£'
-    } else if (type == 'USD') {
-      return '$'
-    } else if (type == 'EUR') {
-      return '€'
-    } else if (type == 'USC') {
-      return '¢'
-    } else {
-      return '$'
-    }
-  }
-
   // 今日时间
   const dateWeek = computed(() => {
     const now = dayjs()
@@ -463,7 +467,7 @@
           res.data.customInfo.status == 2 &&
           res.data.customInfo.applyRealStatus == 2
         ) {
-          router.push(`/pages/customer/account-select?server=${cativeIndex.value}`)
+          router.push(`/pages/customer/account-select?server=${'real'}`)
         } else {
           dialogCheck.value = true
         }
@@ -574,11 +578,93 @@
     chartShow.value = true
     // #endif
   }
+
+  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 + absoluteValue.toFixed(2);
+  }
+  // 转换数组
+  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',
+        creditWithSymbol: acc.creditWithSymbol ?? '$0',
+        equityWithSymbol: acc.equityWithSymbol ?? '$0',
+        currency,
+        actualLeverage: '1:' + (acc.leverage ?? 0),
+        floatingPL: formatMoney(floating),
+        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()
     // await fetchChartData()
     loading.value = false
   })
@@ -899,21 +985,41 @@
     padding: px2rpx(16);
     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;
-    align-items: flex-start;
-    margin-bottom: px2rpx(16);
-    padding-bottom: px2rpx(16);
-    border-bottom: 1px solid #f0f0f0;
+
+  }
+  .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(20);
+    font-size: px2rpx(16);
     margin-bottom: px2rpx(10);
     color: #999;
   }
@@ -925,15 +1031,17 @@
   }
 
   .chart-title .title .name {
-    font-size: px2rpx(20);
+    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(20);
+    font-size: px2rpx(14);
     color: #999;
+    text-align: center;
     margin-bottom: px2rpx(8);
   }
 
@@ -950,12 +1058,13 @@
   }
 
   .chart-title .operation {
-    display: flex;
-    align-items: center;
-    gap: px2rpx(4);
+    //gap: px2rpx(4);
+    margin-left: px2rpx(10);
     color: #666;
     margin-bottom: px2rpx(10);
-    cursor: pointer;
+    height: px2rpx(35);
+    width: px2rpx(110);
+    line-height: px2rpx(35)!important;
   }
 
   .chart-container {

+ 0 - 22
pages/customer/deposit-select.vue

@@ -486,7 +486,6 @@
             @confirm="submitDealResult" />
         <!-- KYC成功弹窗 -->
         <cwg-kyc-popup v-model:visible="dialogKyc" :qrText="text1" />
-      <cwg-confirm-popup />
     </cwg-page-wrapper>
 </template>
 
@@ -517,8 +516,6 @@ import VietnamNoticePopup from './components/VietnamNoticePopup.vue'
 import NewYear24Popup from './components/NewYear24Popup.vue'
 import useRouter from '@/hooks/useRouter'
 const router = useRouter()
-import { useConfirm } from '@/hooks/useConfirm'
-const confirm = useConfirm()
 // 假设原有导入路径保持不变
 import tool from "@/global/tool"
 import { object } from 'uview-plus/libs/function/test'
@@ -1933,30 +1930,11 @@ watch(isStep3, async (newVal) => {
         formRef.value?.clearValidate();   // 再次清除可能因数据重置产生的新错误
     }
 });
-const showCentAccountTransferTip = (login) => {
-  const selectedAccount = loginOptions.value.find(
-    (item) => item.login == login,
-  );
-  if (!selectedAccount) {
-    return;
-  }
-  const isCentAccount =
-    selectedAccount.type == "8" || selectedAccount.currency === "USC";
-  if (isCentAccount) {
-    confirm({
-      title: t("Msg.SystemPrompt"),
-      content: t("vu.item14") + t("vu.item15") + t("vu.item16"),
-      confirmText: t("Btn.Confirm"),
-      cancelText: t("Btn.Cancel"),
-    })
-  }
-}
 // Watch
 watch(loginValue, (login) => {
     if (login) {
         step2.value = true
         getDepositList()
-        showCentAccountTransferTip(login)
         loginOptions.value.forEach(item => {
             if (item.login == login) ACCType.value = item.type
         })

+ 5 - 23
pages/customer/deposit.vue

@@ -379,7 +379,6 @@
         <!-- 数字支付确认弹窗 -->
         <DigitalPayConfirmPopup v-model:visible="dialogDigitalPayConfirm" :WireTransferAccount="WireTransferAccount"
             @close="closeDigitalPayConfirm" @confirm="confirmDigitalPayModal" />
-      <cwg-confirm-popup />
     </cwg-page-wrapper>
 </template>
 
@@ -412,8 +411,6 @@ import DigitalPayConfirmPopup from './components/digitalPayConfirmPopup.vue'
 // 假设原有导入路径保持不变
 import tool from "@/global/tool"
 import { userToken } from '@/composables/config'
-import { useConfirm } from '@/hooks/useConfirm'
-const confirm = useConfirm()
 // import { createUploadRequest } from "@/lib/upload"
 // 常量
 const countries = [
@@ -570,6 +567,7 @@ const WireTransferAccount = reactive({})
 const actionAdd1 = ref("")
 const actionAdd2 = ref(Host04 + "/activity/requite/voucher/upload")
 const imageUrl = ref("")
+const hashCode = ref("")
 const imageUrl1 = ref("")
 const introduce = reactive({
     introduce: "",
@@ -1171,7 +1169,8 @@ const submitConfirm = async () => {
 }
 const confirmDigitalPayModal = (e) => {
     dialogDigitalPayConfirm.value = false;
-    imageUrl.value = e;
+    imageUrl.value = e.image;
+  hashCode.value = e.hashCode;
     openDontActive();
 }
 // 关闭数字支付确认弹窗
@@ -1267,6 +1266,7 @@ const submit = async () => {
                 amount: params.amount,
                 login: $route.query.login,
                 voucherUrl: imageUrl.value,
+                hashCode:hashCode.value,
                 activityDeposit: params.agree2 ? 1 : 0,
                 activityPercentageGive: params.agree3 ? 1 : 0,
                 activityMidyearTenPercentGive: params.agree4 ? 1 : 0,
@@ -1916,24 +1916,6 @@ watch(isStep3, async (newVal) => {
         formRef.value?.clearValidate();
     }
 });
-const showCentAccountTransferTip = (login) => {
-  const selectedAccount = loginOptions.value.find(
-    (item) => item.login == login,
-  );
-  if (!selectedAccount) {
-    return;
-  }
-  const isCentAccount =
-    selectedAccount.type == "8" || selectedAccount.currency === "USC";
-  if (isCentAccount) {
-    confirm({
-      title: t("Msg.SystemPrompt"),
-      content: t("vu.item14") + t("vu.item15") + t("vu.item16"),
-      confirmText: t("Btn.Confirm"),
-      cancelText: t("Btn.Cancel"),
-    })
-  }
-}
 // Watch
 watch(loginValue, (login) => {
     if (login) {
@@ -1941,7 +1923,7 @@ watch(loginValue, (login) => {
         get23nianzhongTwoLogin(login);
         getActivityExtensionGiveLogin(login);
         getActivityExtensionGiveLoginJoin(login);
-      showCentAccountTransferTip(login);
+      // showCentAccountTransferTip(login);
         setTipsAmount()
     }
 })

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

@@ -21,7 +21,7 @@
                                         <h5 class="mb-3" v-t="'Custom.Transfer.IntoAccount'"></h5>
                                         <uni-forms-item name="login">
                                             <cwg-combox v-model:value="form.login" :clearable="false"
-                                                :options="toOptionsDisplay" :placeholder="t('placeholder.choose')" @change="showCentAccountTransferTip"/>
+                                                :options="toOptionsDisplay" :placeholder="t('placeholder.choose')" />
                                         </uni-forms-item>
                                     </view>
                                     <view class="col-lg-6 mb-3">
@@ -54,18 +54,15 @@
         <cwg-success-popup v-model:visible="dialogSuccess" @confirm="closeDia" />
         <!-- 等待弹窗 -->
         <cwg-wait-popup v-model:visible="dialogCheckWait" type="center" :mask-click="false" :showFooters="false" />
-      <cwg-confirm-popup />
     </cwg-page-wrapper>
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, computed, onMounted,watch } from 'vue'
+import { ref, reactive, computed, onMounted } from 'vue'
 import { useI18n } from 'vue-i18n'
 import { customApi } from '@/service/custom'
 import { drawApi } from '@/service/draw'
 import Config from '@/config/index'
-import { useConfirm } from '@/hooks/useConfirm'
-const confirm = useConfirm()
 const { Code } = Config
 const { t } = useI18n()
 
@@ -230,24 +227,7 @@ const getWalletList = async () => {
         console.log(e)
     }
 }
-const showCentAccountTransferTip = (login) => {
-  const selectedAccount = toOptions.value.find(
-    (item) => item.login == login,
-  );
-  if (!selectedAccount) {
-    return;
-  }
-  const isCentAccount =
-    selectedAccount.type == "8" || selectedAccount.currency === "USC";
-  if (isCentAccount) {
-    confirm({
-      title: t("Msg.SystemPrompt"),
-      content: t("vu.item14") + t("vu.item15") + t("vu.item16"),
-      confirmText: t("Btn.Confirm"),
-      cancelText: t("Btn.Cancel"),
-    })
-  }
-}
+
 
 onMounted(() => {
     getToDateList()

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

@@ -53,7 +53,7 @@
               <view class="base-info-form">
                 <view class="uni-row2">
                   <cwg-combox :clearable="false" v-model:value="loginValue" :options="loginComboxOptions"
-                    :placeholder="t('placeholder.choose')" @change="onAccountChange" />
+                    :placeholder="t('placeholder.choose')" />
                 </view>
               </view>
             </view>
@@ -1759,31 +1759,40 @@ function getFirstDayOfNextMonth() {
   //   return new Date(nextYear, nextMonth, 1); // 下个月的1日
   // }
 }
+const first = ref('')
 const showCentAccountTransferTip = (login) => {
-  const selectedAccount = loginOptions.value.find(
-    (item) => item.login == login,
-  );
-  if (!selectedAccount) {
-    return;
-  }
-  const isCentAccount =
-    selectedAccount.type == "8" || selectedAccount.currency === "USC";
-  if (isCentAccount) {
-    confirm({
-      title: t("Msg.SystemPrompt"),
-      content: t("vu.item14") + t("vu.item15") + t("vu.item16"),
-      confirmText: t("Btn.Confirm"),
-      cancelText: t("Btn.Cancel"),
-    })
+  console.log(login,'login1');
+  console.log(first.value,'login2')
+  if (first.value != login) {
+    const selectedAccount = loginOptions.value.find(
+      (item) => item.login == login,
+    );
+    if (!selectedAccount) {
+      return;
+    }
+    const isCentAccount =
+      selectedAccount.type == "8" || selectedAccount.currency === "USC";
+    if (isCentAccount) {
+      confirm({
+        title: t("Msg.SystemPrompt"),
+        content: t("vu.item14") + t("vu.item15") + t("vu.item16"),
+        confirmText: t("Btn.Confirm"),
+        cancelText: t("Btn.Cancel"),
+      })
+      first.value = login
+    }
+
   }
+
 }
 // -------------------- watch --------------------
 watch(loginValue, (newVal) => {
   if (newVal) {
     step2.value = true;
-    showCentAccountTransferTip(newVal)
+    console.log(newVal,'login4');
     const found = loginOptions.value.find(opt => opt.login === Number(newVal))
     loginValueDoc.value = found.label
+    showCentAccountTransferTip(newVal)
     showTable();
   }
 });

+ 2 - 2
pages/customer/withdrawal.vue

@@ -23,7 +23,7 @@
                     <h5 class="mb-3" v-t="'Custom.Deposit.Title11'"></h5>
                     <uni-forms-item>
                       <cwg-combox :clearable="false" v-model:value="loginValue" :options="loginComboxOptions"
-                        :placeholder="t('placeholder.choose')" @change="onAccountChange" />
+                        :placeholder="t('placeholder.choose')" @change="showCentAccountTransferTip" />
                     </uni-forms-item>
                   </view>
                   <!-- 步骤2:支付通道列表 -->
@@ -2116,7 +2116,7 @@ watch(loginValue, (newVal) => {
     // loginValueDoc.value = found.label
     const found = loginOptions.value.find(opt => opt.login === Number(loginValue.value))
     loginAmount.value = found.balance ? Number(found.balance) : 0
-    showCentAccountTransferTip(Number(newVal))
+    // showCentAccountTransferTip(Number(newVal))
     showTable();
     validateAmount()
   }

+ 18 - 7
pages/follow/subscribe-list.vue

@@ -70,8 +70,7 @@
                         <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>
@@ -236,19 +235,19 @@
                         <view class="delete-row">
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.console.item7') }}</text>
-                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealBalance)
+                                <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 class="delete-value">{{ accountTypeName[dialogSubscribeFllowData.dealLoginType]
                                     }}</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)
+                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealEquity||0)
                                     }}</text>
                             </view>
                             <view class="delete-item">
@@ -263,7 +262,7 @@
                         <view class="delete-row">
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Label.Credit') }}</text>
-                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealCredit)
+                                <text class="delete-value">{{ numberFormat(dialogSubscribeFllowData.dealCredit||0)
                                     }}</text>
                             </view>
                             <view class="delete-item">
@@ -279,7 +278,7 @@
                             </view>
                             <view class="delete-item">
                                 <text class="delete-label">{{ t('Documentary.tradingCenter.item32') }}</text>
-                                <text class="delete-value">{{ dialogSubscribeFllowData.settlementCycle || '--' }}</text>
+                                <text class="delete-value">{{ optObj[dialogSubscribeFllowData.settlementCycle] || '--' }}</text>
                             </view>
                         </view>
                     </view>
@@ -403,6 +402,9 @@ 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()
+
 const { numberFormat, numberDesensitization, numberDecimal } = useFilters()
 const search = ref({
     status: 1,
@@ -679,6 +681,15 @@ const handleSearch = (params) => {
     })
 }
 
+const accountTypeName = computed(()=>{
+  return {
+    1:t('AccountType.ClassicAccount'),
+    2:t('AccountType.SeniorAccount'),
+    7:t('AccountType.StandardAccount'),
+    8:t('AccountType.CentAccount'),
+  }
+})
+
 const handleReset = (params) => {
     search.value = { ...search.value, ...params }
     nextTick(() => {

+ 3 - 3
pages/follow/trading-management.vue

@@ -321,7 +321,7 @@
                             <view class="form-item">
                                 <uni-forms-item name="settlementCycle" :label="t('Documentary.tradingCenter.item32')">
                                     <cwg-combox v-model:value="dialogFllowData.settlementCycle" :clearable="false"
-                                        :options="[{ text: 7, value: 7 }, { text: 15, value: 15 }, { text: 30, value: 30 }]"
+                                        :options="optList1"
                                         :placeholder="t('placeholder.choose')" />
                                 </uni-forms-item>
                             </view>
@@ -490,7 +490,7 @@
                             <view class="form-item">
                                 <uni-forms-item name="settlementCycle" :label="t('Documentary.tradingCenter.item32')">
                                     <cwg-combox v-model:value="dialogFllowDataApply.settlementCycle" :clearable="false"
-                                        :options="[{ text: 7, value: 7 }, { text: 15, value: 15 }, { text: 30, value: 30 }]"
+                                        :options="optList1"
                                         :placeholder="t('placeholder.choose')" />
                                 </uni-forms-item>
                             </view>
@@ -537,7 +537,7 @@ const userInfo = computed(() => userStore.userInfo);
 import { useFilters } from '@/composables/useFilters'
 const { numberFormat, numberDecimal } = useFilters()
 import {useFollowEnum} from '@/pages/follow/const/enum'
-const {optObj} = useFollowEnum()
+const {optObj,optList1} = useFollowEnum()
 
 const isZh = computed(() => ['cn', 'zh', 'zhHant'].includes(locale.value));
 

+ 2 - 22
pages/follow/transfer.vue

@@ -21,7 +21,7 @@
                                         <h5 class="mb-3" v-t="'Custom.Transfer.IntoAccount'"></h5>
                                         <uni-forms-item name="login">
                                             <cwg-combox v-model:value="form.login" :clearable="false"
-                                                :options="toOptionsDisplay" :placeholder="t('placeholder.choose')" @change="showCentAccountTransferTip"/>
+                                                :options="toOptionsDisplay" :placeholder="t('placeholder.choose')" />
                                         </uni-forms-item>
                                     </view>
                                     <view class="col-lg-6 mb-3">
@@ -48,7 +48,6 @@
 
             </view>
         </view>
-      <cwg-confirm-popup />
     </cwg-page-wrapper>
 </template>
 
@@ -58,8 +57,6 @@ import { useI18n } from 'vue-i18n'
 import { customApi } from '@/service/custom'
 import { documentaryApi } from '@/service/documentary'
 import Config from '@/config/index'
-import { useConfirm } from '@/hooks/useConfirm'
-const confirm = useConfirm()
 
 const { Code } = Config
 const { t } = useI18n()
@@ -149,24 +146,7 @@ function validateAmount() {
     return true
 }
 const formRef = ref(null)
-const showCentAccountTransferTip = (login) => {
-  const selectedAccount = toOptions.value.find(
-    (item) => item.login == login,
-  );
-  if (!selectedAccount) {
-    return;
-  }
-  const isCentAccount =
-    selectedAccount.type == "8" || selectedAccount.currency === "USC";
-  if (isCentAccount) {
-    confirm({
-      title: t("Msg.SystemPrompt"),
-      content: t("vu.item14") + t("vu.item15") + t("vu.item16"),
-      confirmText: t("Btn.Confirm"),
-      cancelText: t("Btn.Cancel"),
-    })
-  }
-}
+
 const closeDia = () => {
     if (formRef.value) {
         form.amount = ''

+ 21 - 18
pages/ib/recording.vue

@@ -27,24 +27,27 @@
           </text>
         </template>
         <template #status="{row}">
-          <text v-if="row.status == 1">
-            {{ t('State.ToBeProcessed') }}
-          </text>
-          <text v-if="row.status == 2&&row.submitStatus == 2">
-            {{ t('State.Completed') }}
-          </text>
-          <text v-if="row.status == 2&&row.submitStatus != 2">
-            {{ t('State.InTheProcessing') }}
-          </text>
-          <text v-if="row.status == 3 || row.callbackStatus == 2">
-            {{ t('State.Refused') }}
-          </text>
-          <text v-if="row.status == 5">
-            {{ t('State.Cancelled') }}
-          </text>
-          <button class="cancel-btn" v-if="row.status == 1" @click.stop="cancel(row.id)">
-            {{ t('Btn.Cancel') }}
-          </button>
+          <view style="display: flex;flex-direction: column;align-items: center">
+            <text v-if="row.status == 1">
+              {{ t('State.ToBeProcessed') }}
+            </text>
+            <text v-if="row.status == 2&&row.submitStatus == 2">
+              {{ t('State.Completed') }}
+            </text>
+            <text v-if="row.status == 2&&row.submitStatus != 2">
+              {{ t('State.InTheProcessing') }}
+            </text>
+            <text v-if="row.status == 3 || row.callbackStatus == 2">
+              {{ t('State.Refused') }}
+            </text>
+            <text v-if="row.status == 5">
+              {{ t('State.Cancelled') }}
+            </text>
+            <button class="cancel-btn" v-if="row.status == 1" @click.stop="cancel(row.id)">
+              {{ t('Btn.Cancel') }}
+            </button>
+          </view>
+
         </template>
       </cwg-tabel>
     </view>

+ 35 - 28
pages/login/index.vue

@@ -122,13 +122,13 @@
                   <uni-row :gutter="20" class="formContent">
                     <uni-col :xs="24" :md="12">
                       <uni-forms-item name="country" :label="t('newSignup.item3')">
-                        <cwg-combox v-model:value="formData.country" :options="countryOptions" filterable>
+                        <cwg-combox v-model:value="formData.country" :options="countryOptions" border="none" filterable>
                         </cwg-combox>
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :md="12">
                       <uni-forms-item name="phone" :label="t('newSignup.item5')">
-                        <uni-easyinput v-model="formData.phone"></uni-easyinput>
+                        <up-input :customStyle="customStyle" v-model="formData.phone" border="none" :placeholder="t('newSignup.item5')"></up-input>
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :md="12">
@@ -139,17 +139,17 @@
                     </uni-col>
                     <uni-col :xs="24" :md="12">
                       <uni-forms-item name="email" :label="t('newSignup.item7')">
-                        <uni-easyinput v-model="formData.email" :placeholder="t('newSignup.item8')"
-                          :disabled="!isAgeValid || !formData.birthDate"></uni-easyinput>
+                        <up-input :customStyle="customStyle" v-model="formData.email" :placeholder="t('newSignup.item8')" border="none"
+                          :disabled="!isAgeValid || !formData.birthDate"></up-input>
                       </uni-forms-item>
                     </uni-col>
                     <uni-col :xs="24" :md="24">
                       <uni-forms-item name="emailCode" :label="t('newSignup.item9')">
                         <view style="display: flex;">
                           <view style="flex: 1;">
-                            <uni-easyinput class="code" :disabled="!isAgeValid || !formData.birthDate" v-model="formData.emailCode"
+                            <up-input :customStyle="customStyle" class="code" border="none" :disabled="!isAgeValid || !formData.birthDate" v-model="formData.emailCode"
                               :placeholder="t('newSignup.item10')">
-                            </uni-easyinput>
+                            </up-input>
                           </view>
                           <view class="btn-code" @click="(!isAgeValid || !formData.birthDate) ? '' : handleGetCode()">
                             {{ getCodeString }}
@@ -162,8 +162,8 @@
                     </uni-col>
                     <uni-col :xs="24" :md="12">
                       <uni-forms-item name="password" :label="t('newSignup.item12')">
-                        <uni-easyinput v-model.trim="formData.password" :disabled="!isAgeValid || !formData.birthDate"
-                          :placeholder="t('newSignup.item13')" type="password"></uni-easyinput>
+                        <up-input border="none" :customStyle="customStyle" v-model.trim="formData.password" :disabled="!isAgeValid || !formData.birthDate"
+                          :placeholder="t('newSignup.item13')" type="password"></up-input>
                       </uni-forms-item>
                       <uni-col :xs="24" :md="24">
                         <uni-forms-item>
@@ -177,8 +177,8 @@
                     </uni-col>
                     <uni-col :xs="24" :md="12">
                       <uni-forms-item v-if="!isRouteHasId" name="linkValue" :label="t('newSignup.item14')">
-                        <uni-easyinput v-model.trim="formData.linkValue" :disabled="!isAgeValid || !formData.birthDate"
-                          :placeholder="t('newSignup.item15')" @input="limitAgentIdLength"></uni-easyinput>
+                        <up-input border="none" :customStyle="customStyle" v-model.trim="formData.linkValue" :disabled="!isAgeValid || !formData.birthDate"
+                          :placeholder="t('newSignup.item15')" @input="limitAgentIdLength"></up-input>
                       </uni-forms-item>
                     </uni-col>
                   </uni-row>
@@ -203,9 +203,9 @@
                 </uni-forms>
               </view>
               <view>
-                <u-button class="regiset-btn" @click="register">
+                <button class="regiset-btn" @click="register">
                   {{ t('signup.button') }}
-                </u-button>
+                </button>
               </view>
               <view class="login-link">
                 <text>{{ t('newSignup.item16') }}</text>
@@ -518,18 +518,22 @@ async function handleGetCode() {
 }
 
 async function sendEmailCode() {
-  const res = await loginApi.Code({
-    ...formData.value,
-  })
-
-  if (res.code === 200) {
-    showToast(t('Msg.CodeSuccess'))
-    start()
-    return true
-  } else {
-    showToast(t('Msg.CodeFail'))
-    return false
+  try {
+    const res = await loginApi.Code({
+      ...formData.value,
+    })
+    if (res.code === 200) {
+      showToast(res.msg, 'success')
+      start()
+      return true
+    } else {
+      showToast(res.msg,'error')
+      return false
+    }
+  }catch (e) {
+    showToast(e.msg,'error')
   }
+
 }
 
 const register = async () => {
@@ -620,9 +624,9 @@ function submit() {
 }
 
 const customStyle = {
-  height: '51px',
+  height: '48px',
   'border-radius': '8px',
-  // background: '#f7f8fa',
+  background: 'transparent',
   padding: '0 20px !important',
   position: 'relative',
 }
@@ -644,7 +648,7 @@ async function handleLogin() {
     })
     if (res.code === 200) {
       userToken.value = res.data
-      uni.$u.toast(t('login.msg0_1'))
+      uni.showToast({ title:t('login.msg0_1'), icon:'success' })
       getCustomLoginInfo()
       // getCardUserInfo();
       reasonsRefusalList()
@@ -668,7 +672,7 @@ async function handleLogin() {
     }
   } catch (error) {
     // console.log(error)
-    uni.showToast({ title: error.msg, icon: 'none' })
+    uni.showToast({ title: error.msg, icon: 'error' })
     //  console.log(error, 19089);
   }
 }
@@ -684,7 +688,8 @@ async function getCustomLoginInfo() {
     if (res.code === 200) {
       switch (modeStore.value) {
         case 'customer':
-          router.reLaunch('/pages/customer/index')
+          router.reLaunch('/pages/customer/dashboard')
+          // router.reLaunch('/pages/customer/index')
           break
         case 'ib':
           router.reLaunch('/pages/ib/index')
@@ -700,6 +705,7 @@ async function getCustomLoginInfo() {
       uni.$u.toast(res.msg || t('login.msg0'))
     }
   } catch (error) {
+    uni.$u.toast(error.msg || t('login.msg0'),'error')
     //  console.log(error, 111);
   }
 }
@@ -1368,6 +1374,7 @@ button {
 .regiset-btn {
   width: 100%;
   height: px2rpx(40);
+  line-height: px2rpx(40);
   border-radius: px2rpx(20);
   background-color: var(--color-error);
   color: #fff;

+ 5 - 1
uni.scss

@@ -80,4 +80,8 @@ $uni-font-size-title: 20px;
 $uni-color-subtitle: #555555; // 二级标题颜色
 $uni-font-size-subtitle: 26px;
 $uni-color-paragraph: #3F536E; // 文章段落颜色
-$uni-font-size-paragraph: 15px;
+$uni-font-size-paragraph: 15px;
+
+.uni-picker-container{
+  z-index: 9999;
+}

+ 4 - 0
uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue

@@ -81,6 +81,10 @@ $uni-primary: #007aff !default;
 	color: darken($color: $uni-primary, $amount: 40%);
 }
 
+:deep(.uni-picker-container){
+  z-index: 9999!important;
+}
+
 .uni-calendar-item__weeks-box-item {
 	position: relative;
 	/* #ifndef APP-NVUE */

+ 7 - 0
uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue

@@ -703,6 +703,13 @@ $uni-primary: #007aff !default;
 	justify-content: center;
 	align-items: center;
 	height: 50px;
+  picker{
+    z-index: 1000;
+  }
+}
+
+:deep(.uni-picker-container){
+  z-index: 9999!important;
 }
 
 .uni-calendar__header-mobile {

+ 5 - 1
uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue

@@ -857,7 +857,7 @@ $uni-primary: #007aff !default;
 	left: 50%;
 	transform: translate(-50%, -50%);
 	transition-duration: 0.3s;
-	z-index: 999;
+	z-index: 9999;
 }
 
 .fix-nvue-height {
@@ -904,6 +904,10 @@ $uni-primary: #007aff !default;
 	line-height: 50px
 }
 
+:deep(.uni-picker-container){
+  z-index: 9999!important;
+}
+
 .uni-datetime-picker-sign {
 	position: absolute;
 	top: 53px;

+ 3 - 0
uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue

@@ -864,6 +864,9 @@ $uni-primary: #007aff !default;
 	width: 100%;
 	flex: 1;
 }
+:deep(.uni-picker-container){
+  z-index: 9999!important;
+}
 
 .uni-date-x {
 	display: flex;