|
|
@@ -0,0 +1,145 @@
|
|
|
+<template>
|
|
|
+ <div class="min-h-screen bg-yellow-400 px-2 md:px-4 py-6">
|
|
|
+ <!-- 全局导航 -->
|
|
|
+ <GlobalNavigation />
|
|
|
+
|
|
|
+ <div class="max-w-2xl mx-auto">
|
|
|
+ <!-- 页面标题区域 -->
|
|
|
+ <div class="mb-6">
|
|
|
+ <div class="flex items-center justify-between mb-4">
|
|
|
+ <h1 class="text-3xl md:text-4xl font-bold text-dark-800">Complete Your Subscription</h1>
|
|
|
+ <div class="w-[168px] bg-blue-600 text-white px-4 py-2 rounded-full border-2 border-[#0A0910]">
|
|
|
+ <p class="font-bold text-sm md:text-base">Premium Plan</p>
|
|
|
+ <p class="text-xs md:text-sm">• $9.99/month</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 订阅摘要卡片 -->
|
|
|
+ <div class="mb-6">
|
|
|
+ <div class="bg-white border-2 border-[#0A0910] rounded-lg p-6 md:p-8">
|
|
|
+ <h2 class="text-2xl font-bold text-blue-700 mb-6">Subscription Summary</h2>
|
|
|
+
|
|
|
+ <div class="space-y-4">
|
|
|
+ <!-- Plan -->
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span class="text-gray-600">Plan:</span>
|
|
|
+ <span class="text-lg font-bold text-dark-800">Premium Plan</span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- Price -->
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span class="text-gray-600">Price:</span>
|
|
|
+ <span class="text-lg font-bold text-dark-800">$9.99/month</span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- Billing Cycle -->
|
|
|
+ <div class="flex justify-between items-center">
|
|
|
+ <span class="text-gray-600">Billing Cycle:</span>
|
|
|
+ <span class="text-lg font-bold text-dark-800">Monthly</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 选择支付方式 -->
|
|
|
+ <div class="mb-6">
|
|
|
+ <h2 class="text-2xl font-bold text-dark-800 mb-4">Choose Payment Method</h2>
|
|
|
+
|
|
|
+ <div class="flex gap-4 mb-6">
|
|
|
+ <!-- Google Pay -->
|
|
|
+ <button
|
|
|
+ @click="selectPaymentMethod('google')"
|
|
|
+ :class="[
|
|
|
+ 'bg-white border-2 rounded-lg p-6 transition-all duration-200',
|
|
|
+ selectedPayment === 'google'
|
|
|
+ ? 'border-blue-600 shadow-lg'
|
|
|
+ : 'border-[#0A0910] hover:border-blue-400'
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <div class="flex items-center justify-center h-16">
|
|
|
+ <div class="flex items-center gap-3">
|
|
|
+ <svg class="w-12 h-12" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
|
+ <path d="M24 9.5C20.65 9.5 17.45 10.65 14.9 12.7L18.3 16.1C19.95 14.85 21.95 14.15 24 14.15C28.55 14.15 32.35 17.4 33.25 21.75H38.95C37.95 14.45 31.65 9.5 24 9.5Z" fill="#EA4335"/>
|
|
|
+ <path d="M9.05 24C9.05 26.05 9.55 28 10.45 29.7L5.8 33.1C4.1 30.35 3 27.25 3 24C3 20.75 4.1 17.65 5.8 14.9L10.45 18.3C9.55 20 9.05 21.95 9.05 24Z" fill="#FBBC05"/>
|
|
|
+ <path d="M24 38.5C20.65 38.5 17.45 37.35 14.9 35.3L10.45 38.7C13.2 41.4 16.95 43 21 43.5V43.5C28.3 42.5 34.3 37.5 36.75 30.75H33.25C32.35 35.1 28.55 38.5 24 38.5Z" fill="#34A853"/>
|
|
|
+ <path d="M45 24C45 22.85 44.9 21.7 44.7 20.6H24V27.65H35.4C34.7 30.55 32.85 32.95 30.35 34.45L33.85 37.2C37.95 33.45 40.2 28.15 40.2 24C40.2 22.85 40.1 21.7 39.9 20.6H45V24Z" fill="#4285F4"/>
|
|
|
+ </svg>
|
|
|
+ <span class="text-xl font-bold text-dark-800">Google Pay</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </button>
|
|
|
+
|
|
|
+ <!-- Apple Pay -->
|
|
|
+ <button
|
|
|
+ @click="selectPaymentMethod('apple')"
|
|
|
+ :class="[
|
|
|
+ 'border-2 rounded-lg p-6 transition-all duration-200',
|
|
|
+ selectedPayment === 'apple'
|
|
|
+ ? 'bg-black border-blue-600 shadow-lg'
|
|
|
+ : 'bg-black border-[#0A0910] hover:border-blue-400'
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <div class="flex items-center justify-center h-16">
|
|
|
+ <div class="flex items-center gap-3">
|
|
|
+ <svg class="w-10 h-10" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
|
+ <path d="M17.05 20.28C16.03 21.23 14.96 21.08 13.93 20.63C12.84 20.17 11.85 20.15 10.7 20.63C9.28 21.25 8.52 21.07 7.62 20.28C2.02 14.58 2.83 5.97 9.26 5.67C10.76 5.75 11.79 6.52 12.65 6.58C13.95 6.31 15.21 5.52 16.61 5.63C18.31 5.78 19.6 6.45 20.45 7.65C16.77 9.87 17.63 14.72 20.95 16.11C20.27 17.89 19.4 19.65 17.04 20.29L17.05 20.28ZM12.53 5.62C12.38 3.06 14.42 0.93 16.87 0.75C17.2 3.66 14.18 5.89 12.53 5.62Z" fill="white"/>
|
|
|
+ </svg>
|
|
|
+ <span class="text-xl font-bold text-white">Apple Pay</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 完成订阅按钮和条款 -->
|
|
|
+ <div class="mb-6">
|
|
|
+ <button
|
|
|
+ @click="handleCompleteSubscription"
|
|
|
+ :disabled="!selectedPayment"
|
|
|
+ class="w-full bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 text-white px-6 py-4 rounded-lg font-bold text-lg border-2 border-[#0A0910] transition-all duration-300 transform hover:scale-105 disabled:scale-100 disabled:cursor-not-allowed mb-4"
|
|
|
+ >
|
|
|
+ Complete Subscription
|
|
|
+ </button>
|
|
|
+
|
|
|
+ <p class="text-center text-sm text-gray-600">
|
|
|
+ By subscribing, you agree to our
|
|
|
+ <a href="#" class="text-blue-600 hover:text-blue-700 underline">Terms of Service</a>
|
|
|
+ and
|
|
|
+ <a href="#" class="text-blue-600 hover:text-blue-700 underline">Privacy Policy</a>.
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 底部 -->
|
|
|
+ <GlobalFooter />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import { ref } from 'vue'
|
|
|
+import GlobalNavigation from '@/components/GlobalNavigation.vue'
|
|
|
+import GlobalFooter from '@/components/GlobalFooter.vue'
|
|
|
+import { showToast } from 'vant'
|
|
|
+import 'vant/es/toast/style'
|
|
|
+
|
|
|
+const selectedPayment = ref<'google' | 'apple' | ''>('')
|
|
|
+
|
|
|
+const selectPaymentMethod = (method: 'google' | 'apple') => {
|
|
|
+ selectedPayment.value = method
|
|
|
+}
|
|
|
+
|
|
|
+const handleCompleteSubscription = () => {
|
|
|
+ if (!selectedPayment.value) {
|
|
|
+ showToast('请选择支付方式')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const paymentName = selectedPayment.value === 'google' ? 'Google Pay' : 'Apple Pay'
|
|
|
+ showToast(`正在使用 ${paymentName} 完成订阅...`)
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+/* 保持与项目整体风格一致 */
|
|
|
+</style>
|