diff --git a/pages/mall/consumer/coupons.uvue b/pages/mall/consumer/coupons.uvue index 5816b6cc..83c56a8c 100644 --- a/pages/mall/consumer/coupons.uvue +++ b/pages/mall/consumer/coupons.uvue @@ -1,15 +1,25 @@ @@ -28,28 +38,45 @@ import type { UserCoupon } from '@/utils/supabaseService.uts' type Coupon = { title: string - amount: string + displayAmount: string + typeLabel: string expiry: string id: string } const coupons = ref([]) +const loading = ref(true) +const loadError = ref(false) const loadCoupons = async () => { - uni.showLoading({ title: '加载中...' }) + loading.value = true + loadError.value = false try { const userCoupons = await supabaseService.getUserCoupons(1) const couponList: Coupon[] = [] for (let i = 0; i < userCoupons.length; i++) { const item = userCoupons[i] const amountVal = item.amount ?? 0 + const discountType = item.discount_type ?? 1 const expiryVal = (item.expire_at != null && item.expire_at !== '') ? item.expire_at.substring(0, 10) : '长期有效' + + let displayAmount = '' + let typeLabel = '优惠券' + if (discountType == 2) { + displayAmount = Math.round(amountVal * 100) / 10 + '折' + typeLabel = '折扣券' + } else { + displayAmount = '¥' + amountVal.toString() + typeLabel = '优惠券' + } + const coupon: Coupon = { id: item.id, title: (item.template_name != null && item.template_name !== '') ? item.template_name : '优惠券', - amount: `¥${amountVal}`, + displayAmount: displayAmount, + typeLabel: typeLabel, expiry: expiryVal } as Coupon couponList.push(coupon) @@ -57,9 +84,14 @@ const loadCoupons = async () => { coupons.value = couponList } catch (e) { console.error('加载优惠券失败', e) + loadError.value = true coupons.value = [] + uni.showToast({ + title: '优惠券加载失败,请稍后重试', + icon: 'none' + }) } finally { - uni.hideLoading() + loading.value = false } } @@ -76,9 +108,15 @@ const useCoupon = (coupon: Coupon) => {