Files
medical-mall/unpackage/cache/.app-android/sourcemap/pages/mall/consumer/subscription/subscribe-checkout.kt.map

1 line
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"version":3,"sources":["pages/mall/consumer/subscription/subscribe-checkout.uvue","uni_modules/ak-req/ak-req.uts","pages/mall/consumer/index.uvue","pages/user/login.uvue"],"sourcesContent":["<template>\r\n <view class=\"subscribe-checkout\">\r\n <view class=\"header\">\r\n <text class=\"title\">确认订阅</text>\r\n </view>\r\n\r\n <view v-if=\"loading\" class=\"loading\">加载中...</view>\r\n <view v-else-if=\"plan == null\" class=\"empty\">未找到订阅方案</view>\r\n <view v-else class=\"card\">\r\n <view class=\"row\">\r\n <text class=\"label\">方案</text>\r\n <text class=\"value\">{{ plan['name'] }}</text>\r\n </view>\r\n <view class=\"row\">\r\n <text class=\"label\">价格</text>\r\n <text class=\"value\">¥{{ plan['price'] }} / {{ plan['billing_period'] === 'yearly' ? '年' : '月' }}</text>\r\n </view>\r\n <view class=\"row\" v-if=\"trialDays > 0\">\r\n <text class=\"label\">试用期</text>\r\n <text class=\"value\">{{ trialDays }} 天</text>\r\n </view>\r\n\r\n <view class=\"section-title\">支付方式</view>\r\n <view class=\"pay-methods\">\r\n <label class=\"pay-item\" @click=\"selPay(1)\">\r\n <radio :checked=\"payMethod === 1\"></radio>\r\n <text>微信支付</text>\r\n </label>\r\n <label class=\"pay-item\" @click=\"selPay(2)\">\r\n <radio :checked=\"payMethod === 2\"></radio>\r\n <text>支付宝</text>\r\n </label>\r\n <label class=\"pay-item\" @click=\"selPay(4)\">\r\n <radio :checked=\"payMethod === 4\"></radio>\r\n <text>余额</text>\r\n </label>\r\n </view>\r\n\r\n <view class=\"actions\">\r\n <button class=\"primary\" :disabled=\"submitting\" @click=\"confirmSubscribe\">确认并支付</button>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref } from 'vue'\r\nimport { onLoad } from '@dcloudio/uni-app'\r\nimport supaClient from '@/components/supadb/aksupainstance.uts'\r\nimport { PAYMENT_METHOD } from '@/types/mall-types.uts'\r\n\r\nconst planId = ref<string>('')\r\nconst loading = ref<boolean>(true)\r\nconst plan = ref<UTSJSONObject | null>(null)\r\nconst payMethod = ref<number>(PAYMENT_METHOD.WECHAT)\r\nconst trialDays = ref<number>(0)\r\nconst submitting = ref<boolean>(false)\r\n\r\nonLoad(async (opts: OnLoadOptions) => {\r\n planId.value = (opts['planId'] ?? '') as string\r\n await loadPlan()\r\n})\r\n\r\nconst loadPlan = async () => {\r\n try {\r\n loading.value = true\r\n const res = await supaClient\r\n .from('ml_subscription_plans')\r\n .select('*', {})\r\n .eq('id', planId.value)\r\n .single()\r\n .execute()\r\n if (res != null && res.error == null) {\r\n if (Array.isArray(res.data)) {\r\n plan.value = (res.data as Array<UTSJSONObject>)[0] ?? null\r\n } else {\r\n plan.value = res.data as UTSJSONObject\r\n }\r\n trialDays.value = (plan.value?.['trial_days'] ?? 0) as number\r\n } else {\r\n plan.value = null\r\n }\r\n } catch (e) {\r\n console.error('加载方案失败:', e)\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\nconst selPay = (v: number) => { payMethod.value = v }\r\n\r\n// 获取当前用户ID按现有store实现替换\r\nconst getCurrentUserId = (): string => {\r\n try {\r\n const u = uni.getStorageSync('current_user_id')\r\n return (u != null) ? (u as string) : ''\r\n } catch { return '' }\r\n}\r\n\r\nconst confirmSubscribe = async () => {\r\n if (plan.value == null) return\r\n const userId = getCurrentUserId()\r\n if (userId.length === 0) {\r\n uni.showToast({ title: '请先登录', icon: 'none' })\r\n return\r\n }\r\n\r\n submitting.value = true\r\n try {\r\n // 1) 创建订单或支付意图(此处简化为直接创建订阅记录)\r\n const now = new Date()\r\n const start = now.toISOString()\r\n // 简单计算下个扣费日\r\n let nextBilling: string | null = null\r\n if ((plan.value?.['billing_period'] ?? 'monthly') === 'yearly') {\r\n nextBilling = new Date(now.getFullYear() + 1, now.getMonth(), now.getDate()).toISOString()\r\n } else {\r\n nextBilling = new Date(now.getFullYear(), now.getMonth() + 1, now.getDate()).toISOString()\r\n }\r\n const body = {\r\n user_id: userId,\r\n plan_id: plan.value['id'],\r\n status: 'active',\r\n start_date: start,\r\n end_date: null,\r\n next_billing_date: nextBilling,\r\n auto_renew: true,\r\n metadata: { pay_method: payMethod.value }\r\n }\r\n const ins = await supaClient\r\n .from('ml_user_subscriptions')\r\n .insert(body)\r\n .single?.()\r\n .execute()\r\n if (ins != null && ins.error == null) {\r\n uni.showToast({ title: '订阅成功', icon: 'success' })\r\n setTimeout(() => {\r\n uni.redirectTo({ url: '/pages/mall/consumer/profile' })\r\n }, 600)\r\n } else {\r\n uni.showToast({ title: ins?.error?.message ?? '订阅失败', icon: 'none' })\r\n }\r\n } catch (e) {\r\n console.error('订阅失败:', e)\r\n uni.showToast({ title: '订阅失败', icon: 'none' })\r\n } finally {\r\n submitting.value = false\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.subscribe-checkout { padding: 12px; }\r\n.header { margin-bottom: 8px; }\r\n.title { font-size: 18px; font-weight: 700; }\r\n.card { background: #fff; border-radius: 10px; padding: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.05); }\r\n.row { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f0f0f0; }\r\n.row:last-child { border-bottom: none; }\r\n.label { color: #666; }\r\n.value { color: #111; font-weight: 700; }\r\n.section-title { margin-top: 12px; font-weight: 700; }\r\n .pay-methods { display: flex; flex-direction: column; padding: 8px 0; }\r\n .pay-item { display: flex; align-items: center; margin-bottom: 8px; }\r\n .pay-item:last-child { margin-bottom: 0; }\r\n .pay-icon { margin-right: 8px; }\r\n.actions { display: flex; justify-content: flex-end; margin-top: 12px; }\r\n.primary { background: #3cc51f; color: #fff; border-radius: 6px; padding: 8px 12px; }\r\n.loading, .empty { padding: 24px; text-align: center; color: #888; }\r\n</style>",null,null,null],"names":[],"mappings":"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"}