Files
Situation-Awareness-Platfor…/src/views/Jyh/Pricing/index.vue

385 lines
9.5 KiB
Vue
Raw Normal View History

<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"> &nbsp; </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>