diff --git a/miniprogram/scripts/verify-comprehensive-commerce.mjs b/miniprogram/scripts/verify-comprehensive-commerce.mjs index d7b7c7b..b8ac96d 100644 --- a/miniprogram/scripts/verify-comprehensive-commerce.mjs +++ b/miniprogram/scripts/verify-comprehensive-commerce.mjs @@ -20,6 +20,9 @@ const pagesJson = readFileSync(resolve(srcRoot, 'pages.json'), 'utf8') const mallPage = readFileSync(resolve(srcRoot, 'pages/comprehensive/mall/index.vue'), 'utf8') const availablePage = readFileSync(resolve(srcRoot, 'pages/comprehensive/membership/available-sessions.vue'), 'utf8') const bookingDetail = readFileSync(resolve(srcRoot, 'pages/comprehensive/membership/booking-detail.vue'), 'utf8') +const profilePage = readFileSync(resolve(srcRoot, 'pages/comprehensive/profile/index.vue'), 'utf8') +const orderPage = readFileSync(resolve(srcRoot, 'pages/comprehensive/profile/orders.vue'), 'utf8') +const payPage = readFileSync(resolve(srcRoot, 'pages/comprehensive/pay/index.vue'), 'utf8') expectIncludes(membershipApi, "url: '/api/membership/plans'", 'membership plans') expectIncludes(membershipApi, "url: '/api/membership/orders'", 'membership order') @@ -40,6 +43,14 @@ expectIncludes(mallPage, 'face_value', 'face value display') expectIncludes(availablePage, 'available_card_ids', 'available card selection') expectExcludes(bookingDetail, 'booking.order', 'card booking has no order') +expectIncludes(profilePage, '/pages/comprehensive/mall/index', 'mall entry') +expectIncludes(profilePage, '/pages/comprehensive/membership/cards', 'my cards entry') +expectIncludes(profilePage, '/pages/comprehensive/profile/balance', 'balance records entry') +expectIncludes(profilePage, '/pages/comprehensive/profile/orders', 'consumption records entry') +expectIncludes(orderPage, "value: 'membership'", 'membership filter') +expectIncludes(orderPage, "value: 'stored_value'", 'stored value filter') +expectIncludes(payPage, "order.value?.business_type === 'stored_value'", 'stored value payment guard') + if (failures.length) { console.error(`Comprehensive commerce verification failed with ${failures.length} issue(s):`) for (const failure of failures) console.error(`- ${failure}`) diff --git a/miniprogram/src/pages/comprehensive/pay/index.vue b/miniprogram/src/pages/comprehensive/pay/index.vue index c4bd567..c40362d 100644 --- a/miniprogram/src/pages/comprehensive/pay/index.vue +++ b/miniprogram/src/pages/comprehensive/pay/index.vue @@ -24,6 +24,7 @@ 支付方式 toAmountNumber(balance.value.balance) >= toAmountNumber(order.value?.amount)) +const isStoredValueOrder = computed(() => order.value?.business_type === 'stored_value') +const canUseBalance = computed(() => { + if (isStoredValueOrder.value) return false + return toAmountNumber(balance.value.balance) >= toAmountNumber(order.value?.amount) +}) const canPay = computed(() => order.value?.status === 'pending_pay' && (payMethod.value !== 'balance' || canUseBalance.value)) const payButtonText = computed(() => { if (order.value?.status !== 'pending_pay') return '订单不可支付' @@ -108,7 +113,11 @@ const loadPage = async () => { ]) order.value = orderData balance.value = balanceData - if (!canUseBalance.value) payMethod.value = 'wechat' + if (isStoredValueOrder.value) { + payMethod.value = 'wechat' + } else if (!canUseBalance.value) { + payMethod.value = 'wechat' + } updateCountdownTimer() } @@ -131,15 +140,22 @@ const stopCountdown = () => { const padTime = (value) => String(value).padStart(2, '0') const selectMethod = (method) => { - if (method === 'balance' && !canUseBalance.value) { - uni.showToast({ title: '余额不足', icon: 'none' }) - return + if (method === 'balance') { + if (isStoredValueOrder.value) { + uni.showToast({ title: '储值卡订单仅支持微信支付', icon: 'none' }) + return + } + if (!canUseBalance.value) { + uni.showToast({ title: '余额不足', icon: 'none' }) + return + } } payMethod.value = method } const pay = async () => { if (!canPay.value || isSubmitting.value) return + if (isStoredValueOrder.value && payMethod.value === 'balance') return isSubmitting.value = true try { if (payMethod.value === 'balance') { diff --git a/miniprogram/src/pages/comprehensive/profile/index.vue b/miniprogram/src/pages/comprehensive/profile/index.vue index 566c961..36d0ca4 100644 --- a/miniprogram/src/pages/comprehensive/profile/index.vue +++ b/miniprogram/src/pages/comprehensive/profile/index.vue @@ -17,6 +17,7 @@ {{ session.member.phone }} + 余额 ¥{{ balanceText }} @@ -71,25 +72,40 @@