1 line
7.0 KiB
Plaintext
1 line
7.0 KiB
Plaintext
{"version":3,"sources":["pages/mall/consumer/subscription/plan-detail.uvue","pages/user/login.uvue","pages/mall/consumer/index.uvue"],"sourcesContent":["<template>\r\n <view class=\"plan-detail\">\r\n <view class=\"header\">\r\n <text class=\"title\">订阅方案详情</text>\r\n </view>\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 <text class=\"name\">{{ plan['name'] }}</text>\r\n <text class=\"desc\">{{ plan['description'] || '—' }}</text>\r\n\r\n <view class=\"price-row\">\r\n <text class=\"price\">¥{{ plan['price'] }}</text>\r\n <text class=\"period\">/{{ plan['billing_period'] === 'yearly' ? '年' : '月' }}</text>\r\n </view>\r\n\r\n <view class=\"features\">\r\n <text class=\"f-title\">包含功能</text>\r\n <view class=\"f-list\">\r\n <text class=\"f-item\" v-for=\"(v,k) in toFeatureArray(plan['features'])\" :key=\"k\">• {{ v }}</text>\r\n </view>\r\n </view>\r\n\r\n <view class=\"actions\">\r\n <button class=\"primary\" @click=\"toCheckout\">订阅此方案</button>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, onMounted } from 'vue'\r\nimport { onLoad } from '@dcloudio/uni-app'\r\nimport supaClient from '@/components/supadb/aksupainstance.uts'\r\n\r\nconst planId = ref<string>('')\r\nconst loading = ref<boolean>(true)\r\nconst plan = ref<UTSJSONObject | null>(null)\r\n\r\nonLoad((opts: OnLoadOptions) => {\r\n planId.value = (opts['id'] ?? '') as string\r\n})\r\n\r\nconst toFeatureArray = (features: any): Array<string> => {\r\n const arr: Array<string> = []\r\n if (features == null) return arr\r\n if (features instanceof UTSJSONObject) {\r\n const keys = Object.keys(features as any)\r\n for (let i = 0; i < keys.length; i++) {\r\n const k = keys[i]\r\n const v = (features as UTSJSONObject)[k]\r\n const vs = typeof v === 'string' ? v : JSON.stringify(v)\r\n arr.push(vs)\r\n }\r\n }\r\n return arr\r\n}\r\n\r\nconst loadPlan = async () => {\r\n try {\r\n loading.value = true\r\n if (planId.value.length === 0) return\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 // single() 风格有些客户端会返回对象数组,这里兼容\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 } else {\r\n plan.value = null\r\n }\r\n } catch (e) {\r\n console.error('加载方案失败:', e)\r\n plan.value = null\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\nconst toCheckout = () => {\r\n if (plan.value == null) return\r\n const id = (plan.value['id'] ?? '') as string\r\n uni.navigateTo({ url: `/pages/mall/consumer/subscription/subscribe-checkout?planId=${id}` })\r\n}\r\n\r\nonMounted(loadPlan)\r\n</script>\r\n\r\n<style scoped>\r\n.plan-detail { 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.name { font-size: 16px; font-weight: 700; }\r\n.desc { color: #666; margin: 6px 0; }\r\n .price-row { display: flex; align-items: flex-end; margin: 8px 0; }\r\n .price { font-size: 22px; color: #ff4d4f; font-weight: 700; margin-right: 4px; }\r\n .period { color: #999; }\r\n .features { margin-top: 8px; }\r\n .f-title { font-weight: 700; margin-bottom: 4px; }\r\n .f-list { display: flex; flex-direction: column; color: #444; }\r\n .f-item { margin-bottom: 2px; }\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],"names":[],"mappings":"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"} |