feat: 全站预发布模式——所有产品标注研发中状态,移除定价与交付承诺
- 产品页:添加 status 字段与研发中状态徽章,移除定价信息,功能描述改为规划措辞 - 产品详情:CTA 从立即购买改为预约体验,新增定价待公布区域 - 解决方案详情:关联产品卡片补充研发中状态徽章 - 关于页:更新发展历程里程碑、统计数据、核心价值观,确保与研发阶段逻辑自洽 - 首页:更新社会证明、客户评价、解决方案等区块文案 - 新闻页:分类从产品发布调整为研发动态 - 全站品牌名统一为睿新致远,移除重复文案,规范标点与编码 - 修复 FlipCard 组件 useReducer 替代 useEffect+setState
This commit is contained in:
@@ -10,7 +10,7 @@ const VALUES = [
|
||||
{
|
||||
icon: Target,
|
||||
title: '务实',
|
||||
description: '不画大饼,只做能落地的方案。每个建议都经过实践验证,每个承诺都有交付支撑。',
|
||||
description: '不画大饼,只做能落地的方案。每个建议都经过深思熟虑,每个方向都经得起推敲。',
|
||||
},
|
||||
{
|
||||
icon: Heart,
|
||||
@@ -44,7 +44,7 @@ export function AboutSection() {
|
||||
className="text-center max-w-3xl mx-auto mb-14"
|
||||
>
|
||||
<h2 id="about-heading" className="text-3xl sm:text-4xl font-semibold text-[#1C1C1C] mb-4">
|
||||
关于<span className="text-[#C41E3A] font-calligraphy">诺瓦隆</span>
|
||||
关于<span className="text-[#C41E3A] font-calligraphy">睿新致远</span>
|
||||
</h2>
|
||||
<p className="text-base text-[#595959]">
|
||||
我们相信,数字化转型不是一场冒险,而是一次有准备的远行
|
||||
|
||||
@@ -27,7 +27,7 @@ const SOLUTIONS_OVERVIEW = [
|
||||
icon: Users,
|
||||
title: '同行伙伴',
|
||||
subtitle: '长期陪跑服务',
|
||||
description: '交付只是开始,陪伴才是常态。项目上线那天,是我们真正成为伙伴的开始。',
|
||||
description: '从需求理解到产品落地,陪伴才是常态。当产品真正为您所用那天,才是我们成为伙伴的开始。',
|
||||
points: ['专属客户成功经理', '季度业务复盘', '7×24小时响应'],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -45,7 +45,7 @@ export function ProductMatrixSection() {
|
||||
产品<span className="text-[#C41E3A] font-calligraphy">矩阵</span>
|
||||
</h2>
|
||||
<p className="text-base text-[#595959]">
|
||||
覆盖企业数字化全场景,从管理到决策,一站式解决方案
|
||||
覆盖企业数字化全场景,从管理到决策,一站式解决方案规划
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
@@ -57,6 +57,7 @@ export function ProductMatrixSection() {
|
||||
description={product.description}
|
||||
href={`/products/${product.id}`}
|
||||
index={index}
|
||||
status={product.status}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -26,10 +26,10 @@ export function ProductsSection() {
|
||||
className="text-center max-w-3xl mx-auto mb-16"
|
||||
>
|
||||
<h2 id="products-heading" className="text-4xl md:text-5xl font-bold text-[#1C1C1C] mb-6">
|
||||
我们的<span className="text-[#C41E3A] font-calligraphy">产品</span>
|
||||
我们正在打造的<span className="text-[#C41E3A] font-calligraphy">产品</span>
|
||||
</h2>
|
||||
<p className="text-lg text-[#5C5C5C]">
|
||||
自主研发的企业级产品,助力企业高效运营,实现数字化转型
|
||||
我们正在打造的企业级产品,致力于助力企业高效运营,实现数字化转型
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
@@ -56,7 +56,7 @@ export function ProductsSection() {
|
||||
</CardDescription>
|
||||
|
||||
<div className="mb-4">
|
||||
<p className="text-sm font-medium text-[#1C1C1C] mb-2">核心功能</p>
|
||||
<p className="text-sm font-medium text-[#1C1C1C] mb-2">规划功能</p>
|
||||
<div className="flex flex-wrap gap-1.5">
|
||||
{product.features.slice(0, 4).map((feature, idx) => (
|
||||
<span
|
||||
@@ -86,7 +86,7 @@ export function ProductsSection() {
|
||||
</div>
|
||||
|
||||
<Button variant="outline" className="w-full mt-auto group-hover:bg-[#A01830] group-hover:text-white group-hover:border-[#A01830] transition-colors">
|
||||
了解详情
|
||||
了解规划
|
||||
<ArrowRight className="ml-2 w-4 h-4" />
|
||||
</Button>
|
||||
</CardContent>
|
||||
@@ -114,17 +114,17 @@ export function ProductsSection() {
|
||||
</div>
|
||||
<div className="relative z-10">
|
||||
<h3 className="text-2xl sm:text-3xl font-bold text-[#1A1A2E] mb-4">
|
||||
需要定制化解决方案?
|
||||
期待与您共同打磨产品
|
||||
</h3>
|
||||
<p className="text-[#718096] mb-8 max-w-2xl mx-auto">
|
||||
我们的专业团队可以根据您的业务需求,提供量身定制的产品开发和系统集成服务
|
||||
我们的产品正在研发中,如果您对产品方向有建议或希望参与早期体验,欢迎联系我们
|
||||
</p>
|
||||
<Button
|
||||
size="lg"
|
||||
asChild
|
||||
>
|
||||
<StaticLink href="/contact">
|
||||
联系我们
|
||||
预约体验
|
||||
<ArrowRight className="ml-2 w-4 h-4" />
|
||||
</StaticLink>
|
||||
</Button>
|
||||
|
||||
@@ -6,9 +6,9 @@ import { useRef } from 'react';
|
||||
import { Building2, Users, Award, TrendingUp } from 'lucide-react';
|
||||
|
||||
const STATS = [
|
||||
{ icon: Building2, value: '10+', label: '服务企业' },
|
||||
{ icon: Building2, value: '6', label: '研发产品' },
|
||||
{ icon: Users, value: '10+', label: '团队成员' },
|
||||
{ icon: Award, value: '6', label: '自研产品' },
|
||||
{ icon: Award, value: '5+', label: '行业覆盖' },
|
||||
{ icon: TrendingUp, value: '12+', label: '年核心团队经验' },
|
||||
];
|
||||
|
||||
@@ -29,7 +29,7 @@ export function SocialProofSection() {
|
||||
值得<span className="text-[#C41E3A] font-calligraphy">信赖</span>
|
||||
</h2>
|
||||
<p className="text-base text-[#595959]">
|
||||
数字来自实践,口碑源于交付
|
||||
用心打磨产品,以专业赢得信赖
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
|
||||
@@ -6,22 +6,22 @@ import { TestimonialBlock } from '@/components/ui/testimonial-block';
|
||||
|
||||
const TESTIMONIALS = [
|
||||
{
|
||||
quote: '诺瓦隆的ERP系统帮助我们实现了财务与业务的深度一体化,运营效率提升了35%,数据决策更加精准。',
|
||||
author: '张总',
|
||||
title: 'CIO',
|
||||
company: '某制造集团',
|
||||
quote: '我们相信,好的企业管理软件应该像水一样自然——融入业务流程,而不是让业务流程去适应软件。',
|
||||
author: '产品理念',
|
||||
title: '产品设计原则',
|
||||
company: '睿新致远',
|
||||
},
|
||||
{
|
||||
quote: 'CRM系统让我们的销售团队从繁杂的手工跟进中解放出来,客户转化率提升了28%,团队协作更高效。',
|
||||
author: '李总',
|
||||
title: '销售总监',
|
||||
company: '某零售企业',
|
||||
quote: '数据不应被锁在孤岛里。打通信息壁垒,让每一个决策都有数据支撑,这是我们打造BI平台的初心。',
|
||||
author: '技术愿景',
|
||||
title: '技术方向',
|
||||
company: '睿新致远',
|
||||
},
|
||||
{
|
||||
quote: 'BI平台让我们第一次真正实现了数据驱动决策,管理层可以随时掌握业务全貌,决策速度提升了60%。',
|
||||
author: '王总',
|
||||
title: 'VP of Data',
|
||||
company: '某教育集团',
|
||||
quote: '我们不做"做完就跑"的供应商。从需求理解到产品打磨,我们希望成为企业数字化转型路上真正的同行者。',
|
||||
author: '服务承诺',
|
||||
title: '核心价值观',
|
||||
company: '睿新致远',
|
||||
},
|
||||
];
|
||||
|
||||
@@ -60,10 +60,10 @@ export function TestimonialSection() {
|
||||
className="text-center max-w-3xl mx-auto mb-14"
|
||||
>
|
||||
<h2 className="text-3xl sm:text-4xl font-semibold text-[#1C1C1C] mb-4">
|
||||
客户<span className="text-[#C41E3A] font-calligraphy">成果</span>
|
||||
我们的<span className="text-[#C41E3A] font-calligraphy">理念</span>
|
||||
</h2>
|
||||
<p className="text-base text-[#595959]">
|
||||
听听我们的客户怎么说——真实案例,真实成果
|
||||
产品未动,理念先行——我们如何思考,决定了我们打造怎样的产品
|
||||
</p>
|
||||
</motion.div>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ export function OrganizationSchema() {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": COMPANY_INFO.name,
|
||||
"alternateName": "诺瓦隆",
|
||||
"alternateName": "睿新致远",
|
||||
"url": "https://www.novalon.cn",
|
||||
"logo": "https://www.novalon.cn/logo.svg",
|
||||
"description": "专注于企业数字化转型服务,提供软件开发、云计算、数据分析、信息安全等一站式解决方案",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { useState, useEffect } from 'react';
|
||||
import { useReducer } from 'react';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
|
||||
interface FlipCardProps {
|
||||
@@ -84,24 +84,24 @@ function FlipDigit({ digit, prevDigit }: FlipDigitProps) {
|
||||
}
|
||||
|
||||
function FlipCard({ value, label, maxDigits = 2 }: FlipCardProps) {
|
||||
const [prevValue, setPrevValue] = useState(value);
|
||||
const [currentValue, setCurrentValue] = useState(value);
|
||||
const [state, dispatch] = useReducer(
|
||||
(prev: { current: number; previous: number }, next: number) => {
|
||||
if (next === prev.current) {
|
||||
return prev;
|
||||
}
|
||||
return { current: next, previous: prev.current };
|
||||
},
|
||||
{ current: value, previous: value }
|
||||
);
|
||||
dispatch(value);
|
||||
|
||||
useEffect(() => {
|
||||
if (value !== currentValue) {
|
||||
setPrevValue(currentValue);
|
||||
setCurrentValue(value);
|
||||
}
|
||||
}, [value]);
|
||||
|
||||
// 将数字转换为数组,每个数字一位
|
||||
const formatNumber = (num: number) => {
|
||||
const str = num.toString().padStart(maxDigits, '0');
|
||||
return str.split('').map(c => parseInt(c));
|
||||
};
|
||||
|
||||
const currentDigits = formatNumber(currentValue);
|
||||
const prevDigits = formatNumber(prevValue);
|
||||
const currentDigits = formatNumber(state.current);
|
||||
const prevDigits = formatNumber(state.previous);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center">
|
||||
@@ -142,7 +142,7 @@ export function FlipClock({ years, months, days }: FlipClockProps) {
|
||||
</div>
|
||||
|
||||
<p className="text-[#5C5C5C] leading-relaxed font-medium">
|
||||
持续为客户提供优质的数字化转型服务
|
||||
持续打磨产品,致力于为企业提供优质的数字化转型服务
|
||||
</p>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -9,6 +9,7 @@ interface ProductCardProps {
|
||||
description: string;
|
||||
href: string;
|
||||
index: number;
|
||||
status?: '研发中' | '内测中' | '已发布';
|
||||
}
|
||||
|
||||
interface ProductStyleConfig {
|
||||
@@ -32,9 +33,16 @@ const defaultConfig: ProductStyleConfig = {
|
||||
icon: Database, accentColor: '#C41E3A', accentColorRgb: '196, 30, 58', glowStart: '#C41E3A', glowEnd: '#D97706',
|
||||
};
|
||||
|
||||
export function ProductCard({ title, description, href, index }: ProductCardProps) {
|
||||
const statusConfig = {
|
||||
'研发中': { bg: 'rgba(196, 30, 58, 0.08)', text: '#C41E3A', border: 'rgba(196, 30, 58, 0.15)' },
|
||||
'内测中': { bg: 'rgba(217, 119, 6, 0.08)', text: '#D97706', border: 'rgba(217, 119, 6, 0.15)' },
|
||||
'已发布': { bg: 'rgba(22, 163, 74, 0.08)', text: '#16A34A', border: 'rgba(22, 163, 74, 0.15)' },
|
||||
} as const;
|
||||
|
||||
export function ProductCard({ title, description, href, index, status }: ProductCardProps) {
|
||||
const config = productConfig[index] ?? defaultConfig;
|
||||
const IconComponent = config.icon;
|
||||
const statusStyle = status ? statusConfig[status] : null;
|
||||
|
||||
return (
|
||||
<InkGlowCard
|
||||
@@ -56,9 +64,23 @@ export function ProductCard({ title, description, href, index }: ProductCardProp
|
||||
strokeWidth={1.8}
|
||||
/>
|
||||
</div>
|
||||
<span className="text-xs font-mono tracking-widest text-[#A3A3A3]">
|
||||
{String(index + 1).padStart(2, '0')}
|
||||
</span>
|
||||
<div className="flex items-center gap-2">
|
||||
{status && statusStyle && (
|
||||
<span
|
||||
className="text-[10px] font-medium px-2 py-0.5 rounded-full border"
|
||||
style={{
|
||||
backgroundColor: statusStyle.bg,
|
||||
color: statusStyle.text,
|
||||
borderColor: statusStyle.border,
|
||||
}}
|
||||
>
|
||||
{status}
|
||||
</span>
|
||||
)}
|
||||
<span className="text-xs font-mono tracking-widest text-[#A3A3A3]">
|
||||
{String(index + 1).padStart(2, '0')}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 className="text-lg font-semibold mb-2 leading-snug tracking-tight text-[#1C1C1C]">
|
||||
@@ -70,7 +92,7 @@ export function ProductCard({ title, description, href, index }: ProductCardProp
|
||||
</p>
|
||||
|
||||
<div className="flex items-center gap-1.5 text-sm font-medium text-[#A3A3A3] group-hover:text-[#C41E3A] transition-colors">
|
||||
<span>了解详情</span>
|
||||
<span>了解规划</span>
|
||||
<ArrowUpRight className="w-4 h-4" strokeWidth={2} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user