-
痛点引入
-
+
+
+
痛点引入
+
在数字化转型的路上,企业往往陷入两难——
-
+
找咨询公司?他们做完报告就走了,留下一堆看不懂的PPT。
-
+
找技术供应商?他们卖完系统就消失了,出了问题只能自己扛。
-
+
企业需要的,不是一个高高在上的"专家",也不是一个做完就跑的"卖家",而是一个能坐下来、一起想办法的同行者。
-
-
睿新的选择
-
+
+
睿新的选择
+
所以我们选择了一条不同的路。
-
智连未来
-
+
智连未来
+
我们坚持对行业趋势的深度研究,不追逐昙花一现的概念。
-
+
每一次方案,都源于对您业务场景的洞察;
-
+
每一次连接,都为了让技术真正服务于您的未来。
-
成长伙伴
-
+
成长伙伴
+
我们不把"项目交付"当作终点。
-
+
您的业务增长了吗?您的团队能力提升了吗?
-
+
您下一次遇到难题时,还会第一个想到我们吗?
-
+
这些问题,比"项目是否按时交付"更让我们在意。
-
-
品牌承诺
-
+
+
品牌承诺
+
我们承诺:
-
✅
- 不卖您用不上的技术
+ 不卖您用不上的技术
-
✅
- 不说不懂业务的术语
+ 不说不懂业务的术语
-
✅
- 不做路过就忘的"一锤子买卖"
+ 不做路过就忘的"一锤子买卖"
-
+
我们只做一件事:成为您数字化转型路上,信得过的成长伙伴。
-
+
{/* 数据统计 */}
-
+
{STATS.map((stat, idx) => (
-
+
- {stat.value}
- {stat.label}
+ {stat.value}
+ {stat.label}
))}
-
+
{/* 核心价值观 */}
-
-
核心价值观
+
+ 核心价值观
{values.map((value, idx) => (
-
-
-
-
-
-
-
-
{value.title}
-
{value.description}
-
-
-
-
+
+
+
+
+
+
{value.title}
+
{value.description}
+
+
))}
-
+
{/* 发展历程 */}
-
-
发展历程
+
+ 发展历程
{milestones.map((milestone, idx) => (
-
-
-
{milestone.date}
+
+
+ {milestone.date}
-
-
-
{milestone.title}
-
{milestone.description}
+
+
{milestone.title}
+
{milestone.description}
-
+
))}
-
+
{/* 联系我们 */}
-
-
联系我们
+
+ 联系我们
-
+
-
公司地址
-
{COMPANY_INFO.address}
+
公司地址
+
{COMPANY_INFO.address}
-
+
-
电子邮箱
-
{COMPANY_INFO.email}
+
电子邮箱
+
{COMPANY_INFO.email}
-
联系电话
-
{COMPANY_INFO.phone}
+
联系电话
+
{COMPANY_INFO.phone}
-
+
diff --git a/src/app/(marketing)/cases/[id]/client.tsx b/src/app/(marketing)/cases/[id]/client.tsx
index b162a5f..959e7a1 100644
--- a/src/app/(marketing)/cases/[id]/client.tsx
+++ b/src/app/(marketing)/cases/[id]/client.tsx
@@ -65,36 +65,27 @@ export function CaseDetailClient({ caseItem }: CaseDetailClientProps) {
return (
-
-
-
-
-
-
-
-
-
-
-
-
- {caseItem.industry}
-
-
- {caseItem.title}
-
-
- {caseItem.client}
-
-
+
+
+
+
+
+
+
+ {caseItem.industry}
+
+
+ {caseItem.title}
+
+
+ {caseItem.client}
+
+
-
-
-
- 与谁同行,决定能走多远
-
-
- 我们与优秀的企业同行,共同成长,共创未来
-
-
-
+
-
+
{CASES.map((caseItem, index) => (
-
-
-
-
-
-
-
- {caseItem.industry}
-
-
-
-
-
-
-
-
{caseItem.client}
+
+
+
+
+
+
+
+ {caseItem.industry}
+
+
-
- {caseItem.title}
-
+
+
+
+ {caseItem.client}
+
-
-
-
- 3年合作
-
-
-
- 数字化转型
-
+
+ {caseItem.title}
+
+
+
+
+
+ 3年合作
+
+
+
+ 数字化转型
+
+
+
+
+ {caseItem.description}
+
+
+
-
-
- {caseItem.description}
-
-
-
-
-
+
+
))}
-
+
准备开始您的数字化转型之旅?
@@ -112,7 +124,7 @@ export default function CasesPage() {
-
+
);
}
diff --git a/src/app/(marketing)/contact/page.tsx b/src/app/(marketing)/contact/page.tsx
index 1d93187..d913419 100644
--- a/src/app/(marketing)/contact/page.tsx
+++ b/src/app/(marketing)/contact/page.tsx
@@ -1,17 +1,22 @@
'use client';
-import { useState } from 'react';
+import { useState, useRef } from 'react';
+import { useInView } from 'framer-motion';
+import { motion } from 'framer-motion';
import { COMPANY_INFO } from '@/lib/constants';
import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Textarea } from '@/components/ui/textarea';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
+import { PageHeader } from '@/components/ui/page-header';
import { Mail, Phone, MapPin, Send, Loader2 } from 'lucide-react';
export default function ContactPage() {
const [isSubmitting, setIsSubmitting] = useState(false);
const [isSubmitted, setIsSubmitted] = useState(false);
+ const contentRef = useRef(null);
+ const isContentInView = useInView(contentRef, { once: true, margin: '-100px' });
async function handleSubmit(_formData: FormData) {
setIsSubmitting(true);
@@ -23,75 +28,74 @@ export default function ContactPage() {
}
return (
-
-
-
-
- 联系我们
-
-
- 与我们取得联系
-
-
- 无论您有任何问题或合作意向,我们都很乐意与您交流
-
-
+
+
-
+
+
{/* Contact Info */}
-
+
- 联系方式
+ 联系方式
-
+
-
公司地址
-
{COMPANY_INFO.address}
+
公司地址
+
{COMPANY_INFO.address}
-
+
-
联系电话
-
{COMPANY_INFO.phone}
+
联系电话
+
{COMPANY_INFO.phone}
-
+
-
电子邮箱
-
{COMPANY_INFO.email}
+
电子邮箱
+
{COMPANY_INFO.email}
-
+
- 工作时间
+ 工作时间
- 周一至周五
- 9:00 - 18:00
+ 周一至周五
+ 9:00 - 18:00
- 周六
- 9:00 - 12:00
+ 周六
+ 9:00 - 12:00
- 周日
- 休息
+ 周日
+ 休息
@@ -99,98 +103,108 @@ export default function ContactPage() {
{/* Contact Form */}
-
-
- 发送消息
-
-
- {isSubmitted ? (
-
-
-
+
+
+
+ 发送消息
+
+
+ {isSubmitted ? (
+
+
+
+
+
消息已发送
+
感谢您的留言,我们会尽快与您联系!
- 消息已发送
- 感谢您的留言,我们会尽快与您联系!
-
- ) : (
-
- )}
-
-
-
+
+
+
+
+
+
+ )}
+
+
+
+
);
diff --git a/src/app/(marketing)/solutions/page.tsx b/src/app/(marketing)/solutions/page.tsx
index ea36d87..6a5a5c6 100644
--- a/src/app/(marketing)/solutions/page.tsx
+++ b/src/app/(marketing)/solutions/page.tsx
@@ -1,26 +1,32 @@
'use client';
+import { motion } from 'framer-motion';
+import { useInView } from 'framer-motion';
+import { useRef } from 'react';
import { Button } from '@/components/ui/button';
-import { ArrowRight, Lightbulb, Cpu, Users, Calendar, CheckCircle2, TrendingUp, Code, FileText } from 'lucide-react';
+import { PageHeader } from '@/components/ui/page-header';
+import { ArrowRight, Lightbulb, Cpu, Users, CheckCircle2 } from 'lucide-react';
export default function SolutionsPage() {
+ const contentRef = useRef(null);
+ const isContentInView = useInView(contentRef, { once: true, margin: '-100px' });
+
return (
-
-
-
- 三种角色,一种身份——您的成长伙伴
-
-
- 我们以伙伴的身份,陪您走过数字化转型的每一步
-
-
-
+
-
+
-
+
@@ -83,9 +89,14 @@ export default function SolutionsPage() {
-
+
-
+
@@ -149,9 +160,14 @@ export default function SolutionsPage() {
-
+
-
+
@@ -214,12 +230,17 @@ export default function SolutionsPage() {
-
+
-
+
准备开始您的数字化转型之旅?
@@ -255,7 +276,7 @@ export default function SolutionsPage() {
-
+
);
}
diff --git a/src/app/news/[slug]/NewsDetailClient.tsx b/src/app/news/[slug]/NewsDetailClient.tsx
new file mode 100644
index 0000000..eb24709
--- /dev/null
+++ b/src/app/news/[slug]/NewsDetailClient.tsx
@@ -0,0 +1,131 @@
+'use client';
+
+import { Button } from '@/components/ui/button';
+import { Badge } from '@/components/ui/badge';
+import { PageHeader } from '@/components/ui/page-header';
+import { ArrowLeft, Calendar, Share2 } from 'lucide-react';
+import Link from 'next/link';
+import { motion } from 'framer-motion';
+import { useInView } from 'framer-motion';
+import { useRef } from 'react';
+import { NEWS } from '@/lib/constants';
+
+interface NewsItem {
+ id: string;
+ title: string;
+ category: string;
+ date: string;
+ excerpt: string;
+ content: string;
+}
+
+interface NewsDetailClientProps {
+ news: NewsItem;
+}
+
+export function NewsDetailClient({ news }: NewsDetailClientProps) {
+ const contentRef = useRef(null);
+ const isContentInView = useInView(contentRef, { once: true, margin: '-100px' });
+
+ const relatedNews = NEWS
+ .filter((n) => n.id !== news.id && n.category === news.category)
+ .slice(0, 3);
+
+ return (
+
+
+
+
+
+ 返回新闻列表
+
+
+
+ {news.category}
+
+
+ {news.title}
+
+
+
+
+ {news.date}
+
+
+
+
+
+
+
+
+
+
+
+ 📰
+
+
+
+ {news.excerpt}
+
+
+
+ {news.content}
+
+
+
+ {relatedNews.length > 0 && (
+
+
+ 相关新闻
+
+
+ {relatedNews.map((related) => (
+
+
+
+ 📰
+
+
+ {related.category}
+
+
+ {related.title}
+
+
+ {related.excerpt}
+
+
+
+ ))}
+
+
+ )}
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/news/[slug]/page.tsx b/src/app/news/[slug]/page.tsx
index ffb0077..2261bda 100644
--- a/src/app/news/[slug]/page.tsx
+++ b/src/app/news/[slug]/page.tsx
@@ -1,9 +1,6 @@
import { notFound } from 'next/navigation';
import { NEWS } from '@/lib/constants';
-import { Button } from '@/components/ui/button';
-import { Badge } from '@/components/ui/badge';
-import { ArrowLeft, Calendar, Share2 } from 'lucide-react';
-import Link from 'next/link';
+import { NewsDetailClient } from './NewsDetailClient';
export async function generateStaticParams() {
return NEWS.map((news) => ({
@@ -35,100 +32,5 @@ export default async function NewsDetailPage({ params }: { params: Promise<{ slu
notFound();
}
- const relatedNews = NEWS
- .filter((n) => n.id !== news.id && n.category === news.category)
- .slice(0, 3);
-
- return (
-
-
-
-
-
- 返回新闻列表
-
-
-
- {news.category}
-
-
- {news.title}
-
-
-
-
- {news.date}
-
-
-
-
-
-
-
-
-
-
-
- 📰
-
-
-
- {news.excerpt}
-
-
-
- {news.content}
-
-
-
- {relatedNews.length > 0 && (
-
-
- 相关新闻
-
-
- {relatedNews.map((related) => (
-
-
-
- 📰
-
-
- {related.category}
-
-
- {related.title}
-
-
- {related.excerpt}
-
-
-
- ))}
-
-
- )}
-
-
-
-
-
-
-
-
- );
+ return
;
}
diff --git a/src/app/news/page.tsx b/src/app/news/page.tsx
index 87f768d..7aa8134 100644
--- a/src/app/news/page.tsx
+++ b/src/app/news/page.tsx
@@ -1,11 +1,13 @@
'use client';
-import { useState, useMemo } from 'react';
+import { useState, useMemo, useRef } from 'react';
+import { useInView } from 'framer-motion';
import { NEWS } from '@/lib/constants';
import { Card, CardContent } from '@/components/ui/card';
import { Badge } from '@/components/ui/badge';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
+import { PageHeader } from '@/components/ui/page-header';
import { Search, Calendar, ArrowRight, Filter } from 'lucide-react';
import Link from 'next/link';
import { motion } from 'framer-motion';
@@ -15,6 +17,8 @@ const categories = ['全部', '公司新闻', '产品发布', '合作动态', '
export default function NewsListPage() {
const [selectedCategory, setSelectedCategory] = useState('全部');
const [searchQuery, setSearchQuery] = useState('');
+ const contentRef = useRef(null);
+ const isContentInView = useInView(contentRef, { once: true, margin: '-100px' });
const filteredNews = useMemo(() => {
return NEWS.filter((news) => {
@@ -27,20 +31,19 @@ export default function NewsListPage() {
}, [selectedCategory, searchQuery]);
return (
-
-
-
-
- 新闻动态
-
-
- 了解睿新致远最新动态,把握行业发展脉搏
-
-
-
+
+
-
-
+
+
@@ -74,7 +77,7 @@ export default function NewsListPage() {
className="pl-10"
/>
-
+
{filteredNews.length === 0 ? (
@@ -86,8 +89,8 @@ export default function NewsListPage() {
diff --git a/src/app/products/[id]/page.tsx b/src/app/products/[id]/page.tsx
index f797e83..488a7b8 100644
--- a/src/app/products/[id]/page.tsx
+++ b/src/app/products/[id]/page.tsx
@@ -36,30 +36,30 @@ export default async function ProductDetailPage({ params }: { params: Promise<{
return (
-
-
+
+
返回产品列表
-
+
{product.category}
-
+
{product.title}
-
+
{product.description}
-
+
产品概述
@@ -214,7 +214,7 @@ export default async function ProductDetailPage({ params }: { params: Promise<{
-
+