Tcode平台改造升级-定价页面设计与前端开发
This commit is contained in:
@@ -1,13 +1,384 @@
|
||||
<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>
|
||||
export default {
|
||||
name: "Pricing"
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user