385 lines
9.5 KiB
Vue
385 lines
9.5 KiB
Vue
<template>
|
||
<div class="pricing">
|
||
<div class="pricing-container">
|
||
<header class="page-header">
|
||
<h1 class="page-title">定价</h1>
|
||
<p class="page-subtitle">查看我们的个人、Business 和 Enterprise 套餐定价。</p>
|
||
</header>
|
||
|
||
<div class="pricing-grid">
|
||
<div
|
||
v-for="(plan, index) in plans"
|
||
:key="index"
|
||
class="plan-card"
|
||
>
|
||
<div class="card-header">
|
||
<h2 class="plan-name">{{ plan.name }}</h2>
|
||
<p class="plan-desc">{{ plan.description }}</p>
|
||
</div>
|
||
|
||
<div class="plan-price-wrapper">
|
||
<div class="price-line" v-if="plan.price !== null">
|
||
<span class="currency">US${{ plan.price }}</span>
|
||
<span class="unit" v-if="plan.unit">{{ plan.unit }}</span>
|
||
</div>
|
||
<div class="price-line" v-else>
|
||
<span class="contact-text"> </span>
|
||
</div>
|
||
</div>
|
||
|
||
<button class="action-btn">
|
||
{{ plan.buttonText }}
|
||
<span class="arrow-icon">↗</span>
|
||
</button>
|
||
|
||
<div class="features-list">
|
||
<p v-if="plan.featuresTitle" class="features-title">{{ plan.featuresTitle }}</p>
|
||
|
||
<ul>
|
||
<li v-for="(feature, fIndex) in plan.features" :key="fIndex" class="feature-item">
|
||
<svg class="check-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</svg>
|
||
<span v-html="feature"></span>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="card-footer" v-if="plan.footerLink">
|
||
<a href="#">{{ plan.footerLink }}</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<PricingComparisonTable />
|
||
|
||
|
||
<PricingFAQ />
|
||
|
||
<div class="page-footer-link">
|
||
<p>Have an existing plan? See <a href="#">billing help</a></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import { ref } from 'vue';
|
||
import PricingComparisonTable from './component/PricingComparisonTable.vue';
|
||
import PricingFAQ from './component/PricingFAQ.vue';
|
||
|
||
// 定义数据结构
|
||
interface Plan {
|
||
name: string;
|
||
description: string;
|
||
price: number | null; // null 用于企业版
|
||
unit?: string;
|
||
buttonText: string;
|
||
featuresTitle?: string;
|
||
features: string[];
|
||
footerLink?: string;
|
||
}
|
||
|
||
// 模拟数据:根据截图内容填充
|
||
const plans = ref<Plan[]>([
|
||
{
|
||
name: '免费版',
|
||
description: '日常任务的智能辅助方案',
|
||
price: 0,
|
||
unit: '/月',
|
||
buttonText: '获取免费版本',
|
||
features: [
|
||
'有限使用高级模型',
|
||
'判断和上传的数据有限',
|
||
'回答生成速度:标准速度',
|
||
'有限的记忆深入研究',
|
||
'记忆与上下文支持受限'
|
||
],
|
||
footerLink: '已有账号?登录以继续'
|
||
},
|
||
{
|
||
name: 'Plus',
|
||
description: '更多先进智能模型权限',
|
||
price: 20,
|
||
unit: '/月',
|
||
buttonText: '获取 Plus 版本',
|
||
featuresTitle: '免费版中的全部内容,以及:',
|
||
features: [
|
||
'使用 GPT-4, GPT-4o, GPT-4o mini',
|
||
'判断和上传的数据更高',
|
||
'图片生成(DALL·E 3)',
|
||
'更深入的记忆与高级数据分析功能',
|
||
'记忆与上下文支持增强',
|
||
'联网、语音和自定义 GPT',
|
||
'抢先体验新功能'
|
||
],
|
||
footerLink: '查看适用范围'
|
||
},
|
||
{
|
||
name: 'Pro',
|
||
description: '全面运用 ChatGPT 的最佳功能',
|
||
price: 200,
|
||
unit: '/月',
|
||
buttonText: '获取 Pro 版本',
|
||
featuresTitle: 'Plus 中的全部功能,以及:',
|
||
features: [
|
||
'使用 GPT-4o Pro 进行专业推理',
|
||
'判断和上传数据无上限',
|
||
'无限制的高级图片生成',
|
||
'深度思考和复杂任务的最大支持',
|
||
'最大记忆与上下文支持',
|
||
'扩展限制、任务和自定义 GPT',
|
||
'o1 (原 o1-preview) 的高级推理能力',
|
||
'扩展的代码解释器',
|
||
'更深层的研究浏览'
|
||
],
|
||
footerLink: '无限制、突发情况下的算力等,了解更多'
|
||
},
|
||
{
|
||
name: 'Business Free',
|
||
description: 'A secure way to try ChatGPT at work',
|
||
price: 0,
|
||
unit: '/month',
|
||
buttonText: 'Get Business Free',
|
||
features: [
|
||
'Limited access to our best model for work',
|
||
'Privacy built in; data never used for training',
|
||
'Limited video and image creation',
|
||
'Tools for teams like projects, custom GPTs',
|
||
'Unlimited collaborator invites',
|
||
'Integration with select business apps'
|
||
]
|
||
},
|
||
{
|
||
name: 'Business 版',
|
||
description: '一个安全、协作的工作空间,专为初创企业和成长中的企业而设计',
|
||
price: 25,
|
||
unit: '/每位用户/每月 (按年计费)',
|
||
buttonText: '购买订阅',
|
||
featuresTitle: '包含 Plus 版套餐中的所有功能,并含:',
|
||
features: [
|
||
'无限制使用 GPT-4o 模型功能,并扩大使用 GPT-4 Turbo,以及对 GPT-4... 的访问',
|
||
'企业级环境,提供更长久的历史记录与 Slack, Google Drive... 等工具集成',
|
||
'安全的企业工作空间,拥有基本的管理控制、SAML SSO 和 MFA',
|
||
'数据不会用于训练模型',
|
||
'分享聊天、记录模式、Canvas、共享快捷指令和自定义工作区 GPT 等业务功能'
|
||
],
|
||
footerLink: '无限制、团队协作功能等,了解更多'
|
||
},
|
||
{
|
||
name: '企业',
|
||
description: '企业级 AI,安全与全面支持',
|
||
price: null, // 代表联系销售
|
||
buttonText: '联系销售人员',
|
||
featuresTitle: 'Business 中的全部功能,以及:',
|
||
features: [
|
||
'扩展的上下文窗口,支持更长的输入和更大的文件',
|
||
'企业级安全控制,包括 SCIM、EIKM、用户分级、域验证和更精细的权限控制',
|
||
'高级数据分析:支持自定义数据保留策略、日志与保留审计功能...',
|
||
'在多个地区支持数据驻留',
|
||
'7x24 小时的优先支持、服务等级协议 (SLA)...',
|
||
'按量计费,专属折扣'
|
||
]
|
||
}
|
||
]);
|
||
</script>
|
||
|
||
<style scoped>
|
||
/* 引入通用字体,模仿 OpenAI 风格 */
|
||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
||
|
||
.pricing {
|
||
width: 100%;
|
||
background-color: white;
|
||
}
|
||
|
||
.pricing-container {
|
||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||
max-width: 1200px;
|
||
margin: 0 auto;
|
||
padding: 60px 20px;
|
||
color: #0d0d0d;
|
||
background-color: white;
|
||
}
|
||
|
||
/* 头部样式 */
|
||
.page-header {
|
||
text-align: center;
|
||
margin-bottom: 60px;
|
||
}
|
||
|
||
.page-title {
|
||
font-size: 3rem; /* 48px */
|
||
font-weight: 600; /* Semi-bold */
|
||
margin-bottom: 16px;
|
||
letter-spacing: -0.02em;
|
||
}
|
||
|
||
.page-subtitle {
|
||
font-size: 1.125rem;
|
||
color: #6e6e80; /* 次级文本颜色 */
|
||
}
|
||
|
||
/* 网格布局 */
|
||
.pricing-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr); /* 3列 */
|
||
gap: 24px;
|
||
}
|
||
|
||
/* 响应式:小于1024px变2列,小于768px变1列 */
|
||
@media (max-width: 1024px) {
|
||
.pricing-grid {
|
||
grid-template-columns: repeat(2, 1fr);
|
||
}
|
||
}
|
||
@media (max-width: 768px) {
|
||
.pricing-grid {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
}
|
||
|
||
/* 卡片样式 */
|
||
.plan-card {
|
||
border: 1px solid #e5e5e5;
|
||
border-radius: 12px;
|
||
padding: 24px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
background-color: #fff;
|
||
transition: border-color 0.2s;
|
||
height: 100%;
|
||
}
|
||
|
||
.plan-card:hover {
|
||
border-color: #999;
|
||
}
|
||
|
||
/* 卡片头部 */
|
||
.card-header {
|
||
min-height: 80px; /* 保持对齐 */
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
.plan-name {
|
||
font-size: 1.25rem;
|
||
font-weight: 600;
|
||
margin: 0 0 8px 0;
|
||
}
|
||
|
||
.plan-desc {
|
||
font-size: 0.875rem;
|
||
color: #6e6e80;
|
||
line-height: 1.4;
|
||
margin: 0;
|
||
}
|
||
|
||
/* 价格区域 */
|
||
.plan-price-wrapper {
|
||
margin-bottom: 24px;
|
||
min-height: 42px; /* 保持对齐 */
|
||
}
|
||
|
||
.price-line {
|
||
display: flex;
|
||
align-items: baseline;
|
||
}
|
||
|
||
.currency {
|
||
font-size: 2rem;
|
||
font-weight: 600;
|
||
letter-spacing: -0.03em;
|
||
}
|
||
|
||
.unit {
|
||
font-size: 0.875rem;
|
||
color: #6e6e80;
|
||
margin-left: 4px;
|
||
}
|
||
|
||
/* 按钮样式 */
|
||
.action-btn {
|
||
width: 100%;
|
||
background-color: #0d0d0d;
|
||
color: #fff;
|
||
border: none;
|
||
padding: 12px 16px;
|
||
border-radius: 999px; /* 胶囊圆角 */
|
||
font-size: 1rem;
|
||
font-weight: 500;
|
||
cursor: pointer;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
transition: background-color 0.2s;
|
||
margin-bottom: 32px;
|
||
}
|
||
|
||
.action-btn:hover {
|
||
background-color: #333;
|
||
}
|
||
|
||
.arrow-icon {
|
||
margin-left: 6px;
|
||
font-size: 1.1em;
|
||
line-height: 1;
|
||
}
|
||
|
||
/* 功能列表 */
|
||
.features-list {
|
||
flex-grow: 1; /* 让内容撑开,使 footer 对齐底部 */
|
||
}
|
||
|
||
.features-title {
|
||
font-size: 0.875rem;
|
||
font-weight: 600;
|
||
margin-bottom: 12px;
|
||
color: #0d0d0d;
|
||
}
|
||
|
||
.features-list ul {
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.feature-item {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
font-size: 0.875rem;
|
||
color: #0d0d0d;
|
||
margin-bottom: 12px;
|
||
line-height: 1.5;
|
||
}
|
||
|
||
.check-icon {
|
||
width: 16px;
|
||
height: 16px;
|
||
margin-right: 10px;
|
||
color: #0d0d0d;
|
||
flex-shrink: 0;
|
||
margin-top: 3px;
|
||
}
|
||
|
||
/* 底部链接 */
|
||
.card-footer {
|
||
margin-top: 24px;
|
||
font-size: 0.75rem;
|
||
padding-top: 16px;
|
||
border-top: 1px solid transparent; /* 占位,如果需要分隔线可改为 #e5e5e5 */
|
||
}
|
||
|
||
.card-footer a, .page-footer-link a {
|
||
color: #0d0d0d;
|
||
text-decoration: underline;
|
||
text-underline-offset: 2px;
|
||
}
|
||
|
||
.page-footer-link {
|
||
text-align: left;
|
||
margin-top: 40px;
|
||
font-size: 0.875rem;
|
||
color: #6e6e80;
|
||
}
|
||
</style>
|