Преглед изворни кода

fix: 按钮请求增加loading

liangan пре 4 недеља
родитељ
комит
7c38f00551

+ 5 - 3
src/pages/productDetail/checkOut.vue

@@ -96,9 +96,10 @@ function showInsufficientBalanceDialog() {
     },
   ))
 }
-
+const loading = ref<boolean>(false)
 // 下单处理
 async function handlePlaceOrder() {
+  loading.value = true
   const params = {
     preOrderNo: queryParams.value.preOrderId,
     type: queryParams.value.groupType,
@@ -120,6 +121,7 @@ async function handlePlaceOrder() {
     else {
       toPage('/pages/myOrders/myOrders', {}, true)
     }
+    loading.value = false
   }
 }
 
@@ -199,7 +201,7 @@ function handleDialogClose() {
           <view class="flex items-center justify-between text-24rpx">
             <view class="flex items-center">
               <image
-                src="/static/images/avatar.jpg"
+                :src="userInfo.headPic"
                 class="mr-32rpx h-68rpx w-68rpx rounded-full"
               />
               <view class="text-24rpx">
@@ -228,7 +230,7 @@ function handleDialogClose() {
             ৳ {{ formatNumber(orderSummary.Total) }}
           </text>
         </view>
-        <wd-button @click="handlePlaceOrder">
+        <wd-button :loading="loading" @click="handlePlaceOrder">
           {{ $t('checkout.placeOrder') }}
         </wd-button>
       </view>

+ 4 - 2
src/pages/productDetail/productDetail.vue

@@ -296,12 +296,13 @@ async function toggleFavorite() {
     console.error('收藏操作失败:', error)
   }
 }
-
+const loading = ref<boolean>(false)
 // 预下单
 async function preOrder() {
   if (!requireLogin()) {
     return
   }
+  loading.value = true
   const data = {
     orderDetails: {
       attrValueId: matchedAttrValue.value.id,
@@ -314,6 +315,7 @@ async function preOrder() {
   const res = await _preOrder(data)
   if (res.code === '200') {
     showSku.value = false
+    loading.value = false
     toPage(
       '/pages/productDetail/checkOut',
       {
@@ -589,7 +591,7 @@ onShow(async () => {
         <wd-input-number v-model="formData.productNum" :max="1" :min="1" />
       </view>
       <view class="py-24rpx">
-        <wd-button block :style="{ backgroundColor: groupType === 'open' ? '#2F2D31' : 'var(--wot-color-theme)' }" @click="preOrder">
+        <wd-button block :loading="loading" :style="{ backgroundColor: groupType === 'open' ? '#2F2D31' : 'var(--wot-color-theme)' }" @click="preOrder">
           {{ groupType === 'open' ? $t('productDetail.openGroup') : $t('productDetail.joinGroup') }}
         </wd-button>
       </view>

+ 5 - 1
src/pages/wallet/recharge.vue

@@ -80,11 +80,15 @@ function focusAmount() {
   selectData.value.amount = ''
 }
 
+const loading = ref<boolean>(false)
+
 async function submit() {
+  loading.value = true
   const amount = selectData.value.customAmount || selectData.value.amount
   const addRes = await rechargeAdd({ amount, methodId: selectData.value.methodId })
   if (addRes.code === '200') {
     toPage('/pages/webLink/webLink', { link: addRes.data.payUrl }, true)
+    loading.value = false
   }
 }
 
@@ -154,7 +158,7 @@ onShow(() => {
         Reminder: If the recharge is not successful, please select another channel. Transaction ID must be filled in correctly.
       </view>
       <view class="bg-white/60 px-28rpx py-30rpx backdrop-blur-20">
-        <wd-button block :disabled="!selectData.amount && !selectData.customAmount" @click="submit">
+        <wd-button block :disabled="!selectData.amount && !selectData.customAmount" :loading="loading" @click="submit">
           {{ $t('wallet.recharge.submit') }}
         </wd-button>
       </view>

+ 4 - 1
src/pages/wallet/withdraw.vue

@@ -39,6 +39,7 @@ const bankColumns = [
   { label: 'NAGAD', value: 'NAGAD' },
   { label: 'ROCKET', value: 'ROCKET' },
 ]
+const loading = ref<boolean>(false)
 async function submit() {
   if (!formData.value.bank) {
     toast.info(t('wallet.withdraw.error.bankName'))
@@ -56,6 +57,7 @@ async function submit() {
     toast.info(t('wallet.withdraw.error.amount'))
     return
   }
+  loading.value = true
   const res = await withdrawAdd({ ...formData.value, accountType: queryParams.value.type, channel: formData.value.bank })
   console.log(res)
   if (res.code === '200') {
@@ -67,6 +69,7 @@ async function submit() {
   else {
     toast.error(res.message || t('wallet.withdraw.fail'))
   }
+  loading.value = false
 }
 const withdrawRate = ref<any>()
 async function getConfig() {
@@ -163,7 +166,7 @@ onLoad((options) => {
             </wd-button>
           </view>
         </view>
-        <wd-button plain block custom-class="h-80rpx!" @click="submit">
+        <wd-button plain block custom-class="h-80rpx!" :loading="loading" @click="submit">
           {{ $t('wallet.withdraw.form.submit') }}
         </wd-button>
       </wd-form>