zhb 4 kuukautta sitten
vanhempi
commit
fd48133a6b

+ 4 - 4
pages/apply-record/list.vue

@@ -11,7 +11,7 @@
                     <view class="label a1 ellipsis">{{ item.cardName }}</view>
                     <view class="status" :class="statusClass1(item.status)">{{
                       status[item.status]
-                    }}</view>
+                      }}</view>
                   </view>
                   <view class="g-item">
                     <view class="label a2">{{
@@ -29,7 +29,7 @@
                     <view class="label a3">{{ t("cards.p12") }}</view>
                     <view class="status-views" @click="handleApply(item)">{{
                       t("cards.p11")
-                    }}</view>
+                      }}</view>
                   </view>
                 </view>
               </view>
@@ -83,11 +83,11 @@ async function getCardList() {
     });
     if (res.code == 200) {
       const a = res.data.map((i) => {
-        if (i.cardNo) {
+        if (i.cardNumber) {
           i.isOk = true;
         } else {
           i.isOk = false;
-          i.cardNo = "**** **** **** ****";
+          i.cardNumber = "**** **** **** ****";
         }
         return i;
       });

+ 4 - 5
pages/card/components/CardHandle.vue

@@ -13,7 +13,7 @@
             <view class="cwg-button ok-button">
               <u-button type="primary" block @click="handleGetCode">{{
                 getCodeString
-              }}</u-button>
+                }}</u-button>
             </view>
           </view>
         </view>
@@ -25,17 +25,17 @@
         <view v-if="!cvv" class="cwg-button ok-button">
           <u-button type="primary" block @click="handleConfirm">{{
             t("card.vaildate.v42")
-          }}</u-button>
+            }}</u-button>
         </view>
         <view v-else class="cwg-button ok-button">
           <u-button type="primary" block @click="cardCopy">{{
             t("card.vaildate.v43")
-          }}</u-button>
+            }}</u-button>
         </view>
         <view class="cwg-button no-button">
           <u-button type="default" block @click="handleClose">{{
             t("card.Btn.Cancel")
-          }}</u-button>
+            }}</u-button>
         </view>
       </view>
     </view>
@@ -69,7 +69,6 @@ const showDialog = ref(false);
 const formRef = ref();
 const form = ref<{
   emailCode: string;
-  cardNo?: string;
   password?: string;
   country?: string;
   email?: string;

+ 16 - 91
pages/card/components/VirtualCard.vue

@@ -80,14 +80,14 @@
           <cwg-icon name="icon_unfreeze" :size="28" color="#EA002A" />
           <view v-if="currentCard.freezeStatus == 'success'">{{
             t("card.Btn.b5")
-          }}</view>
+            }}</view>
           <view v-else>{{ t("card.Btn.b14") }}</view>
         </view>
         <view v-if="currentCard.freezeType == '2'" class="action-btn" @click="ucardOperation(currentCard, 5)">
           <cwg-icon name="icon_freeze" :size="28" color="#EA002A" />
           <view v-if="currentCard.freezeStatus == 'success'">{{
             t("card.Btn.b6")
-          }}</view>
+            }}</view>
           <view v-else>{{ t("card.Btn.b15") }}</view>
         </view>
       </view>
@@ -107,7 +107,7 @@
         <view class="balance">
           <view class="balance-amount">{{
             isOpen ? amount + " " + "USD" : "*****"
-          }}</view>
+            }}</view>
           <cwg-icon :name="isOpen ? 'icon_visiable' : 'icon_unvisiable'" :size="24" @click.stop="debouncedGetBalance" />
         </view>
       </view>
@@ -115,18 +115,18 @@
         <view class="trans-title">{{ t("cards.transactions") }}</view>
         <view class="all" @click="goRechargeRecord">{{
           t("card.Status.t22")
-        }}</view>
+          }}</view>
         <!-- <i class="i-mdi-calendar-month-outline" @click="showDatePicker = true" /> -->
       </view>
       <cwg-tabs :list="tabList" @click="handleTabClick" />
       <view class="transaction-list">
         <!-- Recharge Records -->
         <view v-if="jiluIndex === 0">
-          <RechargeList :pageSize="4" ref="rechargeListRef" :cardNo="currentCard.cardNo" />
+          <RechargeList :pageSize="4" ref="rechargeListRef" :cardNumber="currentCard.cardNumber" />
         </view>
         <!-- Transfer Records -->
-        <view v-if="jiluIndex === 1">
-          <TransactionList :pageSize="4" ref="rechargeListRef" :cardNo="currentCard.cardNo" />
+        <view v-if="jiluIndex === 1" :a="currentCard.cardNumber">
+          <TransactionList :pageSize="4" ref="rechargeListRef" :cardNumber="currentCard.cardNumber" />
         </view>
       </view>
     </template>
@@ -181,15 +181,12 @@
 
 <script setup lang="ts">
 import { ref, onMounted, watch, computed, onUnmounted } from "vue";
-import type { CardInfo, TransactionInfo } from "@/api/ucard";
-import dayjs from "dayjs";
+import type { CardInfo } from "@/api/ucard";
 import { showToast } from "@/utils/toast";
 import { useI18n } from "vue-i18n";
 import useRouter from "@/hooks/useRouter";
 import { ucardApi } from "@/api/ucard";
 import _ from 'lodash';
-import useTransferStore from "@/stores/use-transfer-store";
-import useUserStore from "@/stores/use-user-store";
 import useCardStore from "@/stores/use-card-store";
 import CardHandle from "./CardHandle.vue";
 import RechargeList from "@/pages/recharge-record/components/RechargeList.vue";
@@ -197,12 +194,14 @@ import TransactionList from "@/pages/recharge-record/components/TransactionList.
 const debouncedGetBalance = _.debounce(getBalance, 300, { leading: true, trailing: false });
 const router = useRouter();
 const cardStore = useCardStore();
-const userStore = useUserStore();
-const transferStore = useTransferStore();
-const cardList = computed(() => cardStore.userCard);
-const userInfo = computed(() => userStore.userInfo);
+const cardList = computed(() => {
+  return cardStore.userCard;
+});
 const { t } = useI18n();
-const currentCard = ref<CardInfo | null>({});
+const currentCard = computed<CardInfo | null>(() => {
+  if (!cardList.value.length) return null;
+  return cardList.value[currentIndex.value] || null;
+});
 const formList = ref({});
 const balance = ref<{ amount: number; currency: string; value: string }[]>([
   {
@@ -211,7 +210,6 @@ const balance = ref<{ amount: number; currency: string; value: string }[]>([
     value: "USD",
   },
 ]);
-const transactions = ref<TransactionInfo[]>([]);
 const showCardNo = ref<{ [key: string]: boolean }>({});
 const isFlipping = ref<{ [key: string]: boolean }>({});
 const isOpen = ref(false);
@@ -226,7 +224,6 @@ const tabList = ref([
 ]);
 
 const handleTabClick = (item, index) => {
-  console.log('点击了标签:', item, '索引:', index);
   jiluIndex.value = index;
 };
 
@@ -238,15 +235,6 @@ function setCvv() {
   formList.value = currentCard.value;
 }
 const jiluIndex = ref(0);
-const transStatusMap = {
-  succeed: t("card.Status.t1"),
-  success: t("card.Status.t1"),
-  failed: t("card.Status.t1"),
-  fail: t("card.Status.t1"),
-  processing: t("card.Status.t3"),
-  auth: t("card.Status.t4"),
-  wait_process: t("card.Status.t5"),
-};
 function cardCopy(data) {
   let title = t("common.copy1");
   console.log(title);
@@ -257,50 +245,17 @@ function cardCopy(data) {
     },
   });
 }
-function setDate(date) {
-  return dayjs(date).format("YYYY-MM-DD HH:mm:ss");
-}
 const currency = ref("USD");
 const amount = ref(0);
-const modelValue = ref(false);
-function setModelValue() {
-  modelValue.value = true;
-}
-function changeSelect(e) {
-  amount.value = e.amount;
-  currency.value = e.currency;
-}
-const showDatePicker = ref(false);
 const dateRange = ref<[string, string] | undefined>(undefined);
 dateRange.value = ["", ""];
-const minDate = new Date(new Date().getFullYear() - 10, 0, 1);
-const maxDate = new Date(new Date().getFullYear() + 10, 0, 1);
-function onConfirmStart(value: [string, string]) {
-  dateRange.value = ["", ""];
-  if (value && value.length === 2) {
-    dateRange.value = value;
-  }
-  showDatePicker.value = false;
-  handleDateRangeChange();
-}
 
-function formatter(day: any) {
-  if (day.type === "start") {
-    day.bottomInfo = t("cards.start");
-  } else if (day.type === "end") {
-    day.bottomInfo = t("cards.end");
-  } else {
-    day.bottomInfo = "";
-  }
-  return day;
-}
 function goRechargeRecord() {
-  router.push(`/pages/recharge-record/list?cardNo=${currentCard.value?.cardNo}`);
+  router.push(`/pages/recharge-record/list?cardNumber=${currentCard.value?.cardNumber}`);
 }
 
 
 async function getBalance() {
-  console.log(isOpen.value, 'isOpen.valueisOpen.value');
   if (isOpen.value) {
     isOpen.value = false;
     return;
@@ -400,40 +355,10 @@ function viewApply(item: any) {
   });
 }
 
-function goToTransactionDetail(record: TransactionInfo) {
-  const amount = Number(record.amount || 0);
-  const fee = Number(record.fee || 0);
-  const normalizedStatus = normalizeStatus(record.status);
-
-  const detailPayload = {
-    category: 'recharge' as const,
-    orderNo: record.merchantOrderNo || record.orderNo || '',
-    type: '充值',
-    amount,
-    fee,
-    actualAmount: amount - fee,
-    currency: record.currency || 'USD',
-    orderStatus: normalizedStatus,
-    statusMessage: getStatusText(record.status),
-    createTime: formatDateTime(record.addTime || record.time),
-    completeTime: '',
-    merchant: '',
-    bankCard: record.cardNumber || '',
-    remark: record.remark || '',
-    approvalSteps: [] as any[]
-  };
-
-  cardStore.saveOrderDetail(detailPayload);
-  uni.navigateTo({
-    url: '/pages/recharge-record/detail'
-  });
-}
-
 watch(
   currentIndex,
   (newIndex) => {
     if (cardList.value[newIndex]) {
-      currentCard.value = cardList.value[newIndex];
       if (
         cardList.value[newIndex].cardNo &&
         cardList.value[newIndex].activateStatus == "success"

+ 7 - 6
pages/card/operations.vue

@@ -34,7 +34,7 @@
             <text class="balance-value">{{ userBalance }} USD</text>
             <view class="all-btn" @click="allBalance">{{
               t("card.Form.f57")
-              }}</view>
+            }}</view>
           </view>
           <view class="balance-info">
             <text class="balance-key">{{ t("card.Form.f58") }}</text>
@@ -71,7 +71,7 @@
           <view class="cwg-button">
             <u-button type="primary" block @click="infoSubmit">{{
               t(btn[type])
-              }}</u-button>
+            }}</u-button>
           </view>
         </view>
       </u-form>
@@ -196,7 +196,7 @@ const rules = {
   cardNumber1: [
     {
       required: true,
-      message: t("card.vaildate.v22"),
+      message: t("card.vaildate.v41"),
       trigger: "blur",
     },
   ],
@@ -262,7 +262,7 @@ const rule2 = computed(() => {
 });
 async function infoSubmit() {
   if (formData.value.cardNumber1 != infoForm.value.cardNumber) {
-    showToast(t("card.vaildate.v22"));
+    showToast(t("card.vaildate.v41"));
     return;
   }
   if (pictLoading.value) {
@@ -349,8 +349,9 @@ async function getCardInfo() {
   try {
     if (!id) return;
     const res = await ucardApi.getCardInfo({ id: id.value });
-    infoForm.value = res.data;
-    formData.value = res.data;
+    // 只更新后端返回的字段,避免整体替换导致输入被清空
+    Object.assign(infoForm.value, res.data);
+    Object.assign(formData.value, res.data);
     exchangeRate.value = res.data.rechargeFeeRate;
     rechargeMaxQuota.value = res.data.rechargeMaxQuota;
     rechargeMinQuota.value = res.data.rechargeMinQuota;

+ 3 - 3
pages/recharge-record/components/DeductionList.vue

@@ -66,7 +66,7 @@ interface RecordItem extends TransactionInfo {
 type NormalizedStatus = 'success' | 'processing' | 'failed';
 
 const props = defineProps<{
-  cardNo: string;
+  cardNumber: string;
   typeIndex: number;
   statusIndex: number;
   dateFilter: string;
@@ -158,13 +158,13 @@ const formatDateTime = (time?: string | number): string => {
 };
 
 const fetchRecords = async (isLoadMore = false) => {
-  if (!props.cardNo || loading.value) return;
+  if (!props.cardNumber || loading.value) return;
   if (isLoadMore && finished.value) return;
 
   loading.value = true;
   try {
     const res = await ucardApi.getCardWithdrawPage({
-      cardNo: props.cardNo,
+      cardNumber: props.cardNumber,
       type: props.typeIndex || undefined,
       status: props.statusIndex || undefined,
       beginDate: props.dateFilter,

+ 4 - 4
pages/recharge-record/components/RechargeList.vue

@@ -29,7 +29,7 @@
 
           <view class="record-right">
             <text class="amount-recharge">+{{ Number(record.amount || 0).toFixed(2) }} {{ record.currency || 'USD'
-              }}</text>
+            }}</text>
             <text class="fee-text">{{ t('global.p17') }} {{ Number(record.rechargeFee || 0).toFixed(2) }}</text>
           </view>
         </view>
@@ -79,7 +79,7 @@ interface RecordItem extends TransactionInfo {
 type NormalizedStatus = 'success' | 'processing' | 'failed';
 
 const props = defineProps<{
-  cardNo: string;
+  cardNumber: string;
   pageSize: number;
   typeIndex: number;
   statusIndex: number;
@@ -196,13 +196,13 @@ const copyOrderNo = (orderNo?: string) => {
 };
 
 const fetchRecords = async (isLoadMore = false) => {
-  if (!props.cardNo || loading.value) return;
+  if (!props.cardNumber || loading.value) return;
   if (isLoadMore && finished.value) return;
 
   loading.value = true;
   try {
     const res = await ucardApi.rechargeList({
-      cardNo: props.cardNo,
+      cardNumber: props.cardNumber,
       rechargeType: props.typeIndex || undefined,
       status: props.statusIndex || undefined,
       startDate: props.dateFilter ? dayjs(props.dateFilter).format('YYYY-MM-DD') : undefined,

+ 3 - 3
pages/recharge-record/components/TransactionList.vue

@@ -73,7 +73,7 @@ interface RecordItem extends TransactionInfo {
 type NormalizedStatus = 'success' | 'processing' | 'failed';
 
 const props = defineProps<{
-  cardNo: string;
+  cardNumber: string;
   pageSize: number;
   typeIndex: number;
   statusIndex: number;
@@ -214,13 +214,13 @@ const copyOrderNo = (orderNo?: string) => {
 };
 
 const fetchRecords = async (isLoadMore = false) => {
-  if (!props.cardNo || loading.value) return;
+  if (!props.cardNumber || loading.value) return;
   if (isLoadMore && finished.value) return;
 
   loading.value = true;
   try {
     const res = await ucardApi.transactionsList({
-      cardNo: props.cardNo,
+      cardNumber: props.cardNumber,
       type: props.typeIndex || undefined,
       status: props.statusIndex || undefined,
       beginDate: props.dateFilter ? dayjs(props.dateFilter).format('YYYY-MM-DD') : undefined,

+ 6 - 6
pages/recharge-record/list.vue

@@ -14,7 +14,7 @@
         <view :class="['tab-item', { 'tab-active': activeTab === 'transaction' }]" @click="activeTab = 'transaction'">
           <cwg-icon class="icons" name="list" :size="18" :color="activeTab === 'transaction' ? '#ea002a' : '#9ca3af'" />
           <view :class="['tab-text', { 'tab-text-active': activeTab === 'transaction' }]">{{ t('Shop.Index.Transaction')
-          }}</view>
+            }}</view>
           <view v-if="activeTab === 'transaction'" class="tab-indicator" />
         </view>
 
@@ -57,17 +57,17 @@
       <!-- Content -->
       <view class="content">
         <!-- Recharge Records -->
-        <RechargeList v-if="activeTab === 'recharge'" ref="rechargeListRef" :cardNo="cardNo"
+        <RechargeList v-if="activeTab === 'recharge'" ref="rechargeListRef" :cardNumber="cardNumber"
           :typeIndex="currentTypeIndex" :statusIndex="statusFilterIndex" :dateFilter="dateFilter"
           :typeOptions="currentTypeOptions" />
 
         <!-- Transaction Records -->
-        <TransactionList v-if="activeTab === 'transaction'" ref="transactionListRef" :cardNo="cardNo"
+        <TransactionList v-if="activeTab === 'transaction'" ref="transactionListRef" :cardNumber="cardNumber"
           :typeIndex="currentTypeIndex" :statusIndex="statusFilterIndex" :dateFilter="dateFilter"
           :typeOptions="currentTypeOptions" />
 
         <!-- Deduction Records -->
-        <DeductionList v-if="activeTab === 'deduction'" ref="deductionListRef" :cardNo="cardNo"
+        <DeductionList v-if="activeTab === 'deduction'" ref="deductionListRef" :cardNumber="cardNumber"
           :typeIndex="currentTypeIndex" :statusIndex="statusFilterIndex" :dateFilter="dateFilter1"
           :typeOptions="currentTypeOptions" />
       </view>
@@ -93,9 +93,9 @@ const minDate = ref(new Date(2000, 0, 1).getTime());
 const maxDate = ref(new Date().getTime());
 
 const activeTab = ref<'recharge' | 'transaction' | 'deduction'>('recharge');
-const cardNo = ref('');
+const cardNumber = ref('');
 onLoad((options) => {
-  cardNo.value = options.cardNo || '';
+  cardNumber.value = options.cardNumber || '';
 });
 const currentTypeOptions = computed(() => {
   if (activeTab.value === 'recharge') {

+ 4 - 4
pages/wallet/components/GlobalList.vue

@@ -38,7 +38,7 @@
                         <view class="row">
                             <view class="l"><text class="record-detail" v-if="record.deductionAccountType == 1">{{
                                 record.cardNumber ||
-                                    '--' }}</text>
+                                '--' }}</text>
                                 <text class="record-detail" v-if="record.deductionAccountType == 2">{{
                                     t('global.GlobalOrder.bagBal') }}</text>
                             </view>
@@ -47,7 +47,7 @@
 
                                 <text class="fee-text">{{ t('card.Form.f30') }} {{ Number(record.deductionFee ||
                                     0).toFixed(2)
-                                    }} {{
+                                }} {{
                                         record.sendCurrency
                                         || 'USD' }}</text>
                             </view>
@@ -99,7 +99,7 @@ interface RecordItem extends TransactionInfo {
 type NormalizedStatus = 'success' | 'wait_process' | 'fail';
 
 const props = defineProps<{
-    cardNo: string;
+    cardNumber: string;
     typeIndex: number;
     statusIndex: number;
     dateFilter: string;
@@ -222,7 +222,7 @@ const fetchRecords = async (isLoadMore = false) => {
     loading.value = true;
     try {
         const res = await ucardApi.globalOrdersList({
-            cardNo: props.cardNo,
+            cardNumber: props.cardNumber,
             payoutCurrency: props.payoutCurrency,
             status: props.statusIndex == 0 ? undefined : props.statusIndex,
             startDate: props.dateFilter ? dayjs(props.dateFilter).format('YYYY-MM-DD') : undefined,

+ 2 - 2
pages/wallet/components/VaultodyList.vue

@@ -81,7 +81,7 @@ interface RecordItem extends TransactionInfo {
 type NormalizedStatus = 'success' | 'wait_process' | 'fail';
 
 const props = defineProps<{
-    cardNo: string;
+    cardNumber: string;
     typeIndex: number;
     statusIndex: number;
     dateFilter: string;
@@ -202,7 +202,7 @@ const fetchRecords = async (isLoadMore = false) => {
     loading.value = true;
     try {
         const res = await ucardApi.getBlockchainTransactionPage({
-            cardNo: props.cardNo,
+            cardNumber: props.cardNumber,
             payoutCurrency: props.payoutCurrency,
             status: props.statusIndex == 0 ? undefined : props.statusIndex,
             startDate: props.dateFilter ? dayjs(props.dateFilter).format('YYYY-MM-DD') : undefined,

+ 2 - 2
pages/wallet/components/WithdrawList.vue

@@ -75,7 +75,7 @@ interface RecordItem extends TransactionInfo {
 type NormalizedStatus = 'success' | 'wait_process' | 'fail';
 
 const props = defineProps<{
-    cardNo: string;
+    cardNumber: string;
     typeIndex: number;
     statusIndex: number;
     dateFilter: string;
@@ -197,7 +197,7 @@ const fetchRecords = async (isLoadMore = false) => {
     loading.value = true;
     try {
         const res = await ucardApi.getBlockchainWithdrawPage({
-            cardNo: props.cardNo,
+            cardNumber: props.cardNumber,
             payoutCurrency: props.payoutCurrency,
             transactionStatus: props.statusIndex == 0 ? undefined : props.statusIndex,
             startDate: props.dateFilter ? dayjs(props.dateFilter).format('YYYY-MM-DD') : undefined,

+ 1 - 1
pages/wallet/global-detail.vue

@@ -8,7 +8,7 @@
         <view class="section-card">
           <view class="success-icon-wrap">
             <image v-if="detailData.status === 'success'" src="/static/images/vector.png" alt="" mode="widthFix" />
-            <image v-else-if="detailData.status === 'fail'" src="/static/images/vector2.png" alt="" mode="widthFix" />
+            <image v-else-if="detailData.status === 'fail' || detailData.status === 'cancel'" src="/static/images/vector2.png" alt="" mode="widthFix" />
             <image v-else src="/static/images/vector3.png" alt="" mode="widthFix" />
             <text class="success-text">{{ t(globalStatusText[detailData.status]) }}</text>
             <text v-if="approveDesc" class="success-text">{{ approveDesc }}</text>

+ 3 - 3
pages/wallet/global-list.vue

@@ -26,7 +26,7 @@
                 </view>
             </view>
             <view class="content">
-                <GlobalList ref="globalListRef" :cardNo="cardNo" :payoutCurrency="payoutCurrency"
+                <GlobalList ref="globalListRef" :cardNumber="cardNumber" :payoutCurrency="payoutCurrency"
                     :statusIndex="statusFilterIndex" :dateFilter="dateFilter" />
             </view>
         </view>
@@ -48,9 +48,9 @@ const statusBarHeight = computed(() => globalStore.statusBarHeight);
 const { t } = useI18n();
 const minDate = ref(new Date(2000, 0, 1).getTime());
 const maxDate = ref(new Date().getTime());
-const cardNo = ref('');
+const cardNumber = ref('');
 onLoad((options) => {
-    cardNo.value = options.cardNo || '';
+    cardNumber.value = options.cardNumber || '';
 });
 
 const statusOptions = computed(() => {

+ 1 - 1
pages/wallet/global-order.vue

@@ -692,7 +692,7 @@ const getAccountDropdown = async () => {
       loginOptions.value = res.data.map((item: any) => {
 
         if (item.type === "1") {
-          item.text = `${t("global.GlobalOrder.cardNo")} - ${item.cardNumber} ${t("global.GlobalOrder.bal")}: ${item.balance}`;
+          item.text = `${t("global.GlobalOrder.cardNumber")} - ${item.cardNumber} ${t("global.GlobalOrder.bal")}: ${item.balance}`;
         } else {
           item.text = `${t("global.GlobalOrder.bagBal")}: ${item.balance}`;
         }

+ 3 - 3
pages/wallet/vaultody-list.vue

@@ -22,7 +22,7 @@
                 </view>
             </view>
             <view class="content">
-                <VaultodyList ref="globalListRef" :cardNo="cardNo" :payoutCurrency="payoutCurrency"
+                <VaultodyList ref="globalListRef" :cardNumber="cardNumber" :payoutCurrency="payoutCurrency"
                     :statusIndex="statusFilterIndex" :dateFilter="dateFilter" />
             </view>
         </view>
@@ -44,9 +44,9 @@ const statusBarHeight = computed(() => globalStore.statusBarHeight);
 const { t } = useI18n();
 const minDate = ref(new Date(2000, 0, 1).getTime());
 const maxDate = ref(new Date().getTime());
-const cardNo = ref('');
+const cardNumber = ref('');
 onLoad((options) => {
-    cardNo.value = options.cardNo || '';
+    cardNumber.value = options.cardNumber || '';
 });
 
 const statusOptions = computed(() => {

+ 3 - 3
pages/wallet/vaultody.vue

@@ -15,12 +15,12 @@
                 <view v-if="!text1" class="cwg-button ok-button">
                     <u-button type="primary" block @click="getVaultodyAddress">{{
                         t("Blockchain1.p3")
-                    }}</u-button>
+                        }}</u-button>
                 </view>
                 <view v-else class="cwg-button ok-button">
                     <u-button type="primary" block @click="cardCopy">{{
                         t("Blockchain1.p4")
-                    }}</u-button>
+                        }}</u-button>
                 </view>
             </view>
         </view>
@@ -40,7 +40,7 @@ const userInfo = computed(() => userStore.userInfo);
 const formRef = ref();
 const form = ref<{
     emailCode: string;
-    cardNo?: string;
+    cardNumber?: string;
     password?: string;
     country?: string;
     email?: string;

+ 3 - 3
pages/wallet/withdraw-list.vue

@@ -22,7 +22,7 @@
                 </view>
             </view>
             <view class="content">
-                <WithdrawList ref="globalListRef" :cardNo="cardNo" :payoutCurrency="payoutCurrency"
+                <WithdrawList ref="globalListRef" :cardNumber="cardNumber" :payoutCurrency="payoutCurrency"
                     :statusIndex="statusFilterIndex" :dateFilter="dateFilter" />
             </view>
         </view>
@@ -44,9 +44,9 @@ const statusBarHeight = computed(() => globalStore.statusBarHeight);
 const { t } = useI18n();
 const minDate = ref(new Date(2000, 0, 1).getTime());
 const maxDate = ref(new Date().getTime());
-const cardNo = ref('');
+const cardNumber = ref('');
 onLoad((options) => {
-    cardNo.value = options.cardNo || '';
+    cardNumber.value = options.cardNumber || '';
 });
 
 const statusOptions = computed(() => {

+ 1 - 1
pages/wallet/withdraw.vue

@@ -70,7 +70,7 @@ const userInfo = computed(() => userStore.userInfo);
 const formRef = ref();
 const form = ref<{
     emailCode: string;
-    cardNo?: string;
+    cardNumber?: string;
     password?: string;
     country?: string;
     email?: string;

+ 2 - 1
stores/use-card-store.ts

@@ -87,7 +87,8 @@ const useCardStore = defineStore("cardStore", () => {
 
   // 保存用户卡
   const saveUserCard = (info: any) => {
-    userCard.value = info;
+    // 保证 userCard.value 总是新数组,触发响应式
+    userCard.value = Array.isArray(info) ? [...info] : info;
     const encryptedCard = crypt.encrypt(JSON.stringify(info));
     ls.set(CARD_KEY, encryptedCard);
   };