feat(products): refine page copy and retarget primary CTA to /services
产品列表页文案与转化打磨:Hero 改为「自研产品矩阵 × 数字化核心系统」并聚焦 价值主张;主 CTA 由预约接待改为「了解我们的服务」并落点到 /services(次 CTA 保持 /solutions 查看行业方案);CTA 区文案「以自研产品支撑数字化落地」+ 组合 方案入口改为 /solutions。同步更新集成测试断言。
This commit is contained in:
@@ -212,15 +212,15 @@ describe('ProductsContentV3 - 产品列表页集成测试', () => {
|
|||||||
const { default: ProductsContentV3 } = await import('./products-content-v3');
|
const { default: ProductsContentV3 } = await import('./products-content-v3');
|
||||||
render(<ProductsContentV3 products={allMockProducts} />);
|
render(<ProductsContentV3 products={allMockProducts} />);
|
||||||
|
|
||||||
expect(screen.getByText('用自研产品组合')).toBeInTheDocument();
|
expect(screen.getByText('自研产品矩阵')).toBeInTheDocument();
|
||||||
expect(screen.getByText('核心系统升级')).toBeInTheDocument();
|
expect(screen.getByText('数字化核心系统')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render hero description text', async () => {
|
it('should render hero description text', async () => {
|
||||||
const { default: ProductsContentV3 } = await import('./products-content-v3');
|
const { default: ProductsContentV3 } = await import('./products-content-v3');
|
||||||
render(<ProductsContentV3 products={allMockProducts} />);
|
render(<ProductsContentV3 products={allMockProducts} />);
|
||||||
|
|
||||||
expect(screen.getByText(/从数据智能到业务协同/)).toBeInTheDocument();
|
expect(screen.getByText(/从业务系统到数据智能/)).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render enterprise products section', async () => {
|
it('should render enterprise products section', async () => {
|
||||||
@@ -305,8 +305,8 @@ describe('ProductsContentV3 - 产品列表页集成测试', () => {
|
|||||||
const { default: ProductsContentV3 } = await import('./products-content-v3');
|
const { default: ProductsContentV3 } = await import('./products-content-v3');
|
||||||
render(<ProductsContentV3 products={allMockProducts} />);
|
render(<ProductsContentV3 products={allMockProducts} />);
|
||||||
|
|
||||||
expect(screen.getByText('预约免费咨询')).toBeInTheDocument();
|
expect(screen.getByText('联系我们')).toBeInTheDocument();
|
||||||
expect(screen.getByText('浏览行业方案')).toBeInTheDocument();
|
expect(screen.getByText('查看行业方案')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render stats section with product count', async () => {
|
it('should render stats section with product count', async () => {
|
||||||
@@ -323,7 +323,7 @@ describe('ProductsContentV3 - 产品列表页集成测试', () => {
|
|||||||
render(<ProductsContentV3 products={[]} />);
|
render(<ProductsContentV3 products={[]} />);
|
||||||
|
|
||||||
// Hero section should still render
|
// Hero section should still render
|
||||||
expect(screen.getByText('用自研产品组合')).toBeInTheDocument();
|
expect(screen.getByText('自研产品矩阵')).toBeInTheDocument();
|
||||||
|
|
||||||
// The enterprise section should still render (even without products)
|
// The enterprise section should still render (even without products)
|
||||||
expect(screen.getAllByText('企业套装').length).toBeGreaterThanOrEqual(1);
|
expect(screen.getAllByText('企业套装').length).toBeGreaterThanOrEqual(1);
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function HeroSection() {
|
|||||||
transition={{ duration: 1.2, delay: 0.15, ease: EASE_OUT }}
|
transition={{ duration: 1.2, delay: 0.15, ease: EASE_OUT }}
|
||||||
className="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold text-ink leading-[0.92] tracking-tighter mb-8 sm:mb-10 md:mb-12"
|
className="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold text-ink leading-[0.92] tracking-tighter mb-8 sm:mb-10 md:mb-12"
|
||||||
>
|
>
|
||||||
<div className="block">用自研产品组合</div>
|
<div className="block">自研产品矩阵</div>
|
||||||
<div className="block mt-5">
|
<div className="block mt-5">
|
||||||
<span className="relative inline-block">
|
<span className="relative inline-block">
|
||||||
<span className="text-brand font-extrabold">支撑企业</span>
|
<span className="text-brand font-extrabold">支撑企业</span>
|
||||||
@@ -102,7 +102,7 @@ function HeroSection() {
|
|||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="block mt-5">核心系统升级</div>
|
<div className="block mt-5">数字化核心系统</div>
|
||||||
</motion.h1>
|
</motion.h1>
|
||||||
|
|
||||||
<motion.p
|
<motion.p
|
||||||
@@ -111,8 +111,8 @@ function HeroSection() {
|
|||||||
transition={{ duration: 1, delay: 0.45, ease: EASE_OUT }}
|
transition={{ duration: 1, delay: 0.45, ease: EASE_OUT }}
|
||||||
className="text-lg sm:text-xl lg:text-2xl text-text-secondary max-w-2xl leading-relaxed mb-8 sm:mb-10 md:mb-12"
|
className="text-lg sm:text-xl lg:text-2xl text-text-secondary max-w-2xl leading-relaxed mb-8 sm:mb-10 md:mb-12"
|
||||||
>
|
>
|
||||||
从数据智能到业务协同,每一款产品都经过实战验证。
|
从业务系统到数据智能,深度自研、互为补充。
|
||||||
6 大核心产品互为补充,常以组合形式出现在行业解决方案中。
|
6 大企业套装与专业产品线,覆盖企业数字化核心场景。
|
||||||
</motion.p>
|
</motion.p>
|
||||||
|
|
||||||
<motion.div
|
<motion.div
|
||||||
@@ -122,8 +122,8 @@ function HeroSection() {
|
|||||||
className="flex flex-wrap gap-6"
|
className="flex flex-wrap gap-6"
|
||||||
>
|
>
|
||||||
<Button size="xl" asChild>
|
<Button size="xl" asChild>
|
||||||
<a href="/contact">
|
<a href="/services">
|
||||||
预约产品演示
|
了解我们的服务
|
||||||
<ArrowRight className="w-5 h-5 ml-2" />
|
<ArrowRight className="w-5 h-5 ml-2" />
|
||||||
</a>
|
</a>
|
||||||
</Button>
|
</Button>
|
||||||
@@ -398,7 +398,7 @@ function SuiteCombosSection({ products }: { products: Product[] }) {
|
|||||||
return (
|
return (
|
||||||
<a
|
<a
|
||||||
key={idx}
|
key={idx}
|
||||||
href="/contact"
|
href="/solutions"
|
||||||
className="group p-10 lg:p-12 bg-white hover:bg-bg-secondary transition-all duration-500 overflow-hidden"
|
className="group p-10 lg:p-12 bg-white hover:bg-bg-secondary transition-all duration-500 overflow-hidden"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
@@ -432,7 +432,7 @@ function SuiteCombosSection({ products }: { products: Product[] }) {
|
|||||||
whileHover={{ x: 6 }}
|
whileHover={{ x: 6 }}
|
||||||
transition={EASE_SPRING}
|
transition={EASE_SPRING}
|
||||||
>
|
>
|
||||||
<span>咨询组合方案</span>
|
<span>了解行业方案</span>
|
||||||
<ArrowRight className="w-4 h-4" />
|
<ArrowRight className="w-4 h-4" />
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</div>
|
</div>
|
||||||
@@ -454,24 +454,24 @@ function CTASection() {
|
|||||||
<div className="max-w-container mx-auto px-6 lg:px-10 relative z-10">
|
<div className="max-w-container mx-auto px-6 lg:px-10 relative z-10">
|
||||||
<ScrollReveal className="text-center max-w-3xl mx-auto">
|
<ScrollReveal className="text-center max-w-3xl mx-auto">
|
||||||
<h2 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-ink tracking-tight leading-tight mb-6 sm:mb-8">
|
<h2 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-ink tracking-tight leading-tight mb-6 sm:mb-8">
|
||||||
找到适合你的<br />
|
以<span className="text-brand">自研产品</span><br />
|
||||||
<span className="text-brand">数字化方案</span>
|
支撑数字化落地
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p className="text-xl text-text-secondary mb-12 max-w-2xl mx-auto leading-relaxed">
|
<p className="text-xl text-text-secondary mb-12 max-w-2xl mx-auto leading-relaxed">
|
||||||
无论你是需要单一产品,还是完整的数字化转型方案,
|
从企业套装到专业产品,以自研能力与专业服务,
|
||||||
我们的专家团队都能为你量身定制最佳路径。
|
陪伴企业完成数字化升级。
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="flex flex-wrap justify-center gap-6">
|
<div className="flex flex-wrap justify-center gap-6">
|
||||||
<Button size="xl" asChild>
|
<Button size="xl" asChild>
|
||||||
<a href="/contact">
|
<a href="/services">
|
||||||
预约免费咨询
|
了解我们的服务
|
||||||
<ArrowRight className="w-5 h-5 ml-2" />
|
<ArrowRight className="w-5 h-5 ml-2" />
|
||||||
</a>
|
</a>
|
||||||
</Button>
|
</Button>
|
||||||
<Button size="xl" variant="outline" asChild>
|
<Button size="xl" variant="outline" asChild>
|
||||||
<a href="/solutions">浏览行业方案</a>
|
<a href="/contact">联系我们</a>
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</ScrollReveal>
|
</ScrollReveal>
|
||||||
|
|||||||
Reference in New Issue
Block a user