- {/* Logo 区域 - 增强版 */}
+
+
+
-
-
- {/* 光晕效果 */}
-
-
+
+
+
-
- 示例集团
-
-
CHENGYU GROUP
+
+ {locale === 'en' ? COMPANY_INFO.nameEn : COMPANY_INFO.name}
+
+
{COMPANY_INFO.nameEn.toUpperCase()}
- {/* 桌面端导航菜单 - 增强版 */}
-
- {/* 桌面端操作区域 */}
-
- {/* 搜索按钮 */}
-
+
+
+
{locale === 'en' ? '中文' : 'English'}
+
- {/* 联系电话按钮 */}
-
setIsMobileMenuOpen((v) => !v)}
+ className="lg:hidden inline-flex items-center justify-center w-10 h-10 rounded-lg text-gray-700 hover:bg-gray-50"
+ aria-label={isMobileMenuOpen ? (locale === 'en' ? 'Close menu' : '关闭菜单') : locale === 'en' ? 'Open menu' : '打开菜单'}
+ aria-expanded={isMobileMenuOpen}
>
-
- 400-123-4567
-
-
- {/* CTA 按钮 - 渐变风格 */}
-
-
-
-
- 立即咨询
-
- →
-
-
-
+ {isMobileMenuOpen ?
:
}
+
-
- {/* 移动端菜单按钮 */}
-
setIsMobileMenuOpen(!isMobileMenuOpen)}
- aria-label={isMobileMenuOpen ? '关闭菜单' : '打开菜单'}
- aria-expanded={isMobileMenuOpen}
- whileHover={{ scale: 1.05 }}
- whileTap={{ scale: 0.95 }}
- >
-
- {isMobileMenuOpen ? : }
-
-
- {/* 移动端菜单 - 玻璃效果版 */}
{isMobileMenuOpen && (
-
- {NAVIGATION_MENU.map((item, index) => (
-
+ {navItems.map((item) => (
+
-
-
- {item.label}
-
-
-
+ {item.label}
+
))}
-
- {/* 移动端联系方式 */}
-
-
-
- 400-123-4567
-
-
-
- 立即咨询
-
-
+
{locale === 'en' ? 'Language' : '语言'}
+
{locale === 'en' ? '中文' : 'English'}
+
)}
-
- >
- );
-};
+
+ )
+}
-export default Header;
+export default Header
diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx
index d25374c..e651810 100644
--- a/src/components/Hero.tsx
+++ b/src/components/Hero.tsx
@@ -29,18 +29,23 @@ const CountUpNumber: React.FC<{
// 数字递增动画
let current = 0;
const increment = numValue / (duration * 60);
- const timer = setInterval(() => {
- current += increment;
- if (current >= numValue) {
- current = numValue;
- clearInterval(timer);
- }
- let display = Math.floor(current);
- if (hasYi) {
- display = Math.floor(current);
- }
- ref.current.textContent = display.toLocaleString() + (hasPlus ? '+' : '') + (hasYi ? '亿' : suffix);
- }, 1000 / 60);
+ const element = ref.current;
+ if (!element) return;
+
+ const timer = setInterval(() => {
+ current += increment;
+ if (current >= numValue) {
+ current = numValue;
+ clearInterval(timer);
+ }
+ let display = Math.floor(current);
+ if (hasYi) {
+ display = Math.floor(current);
+ }
+ element.textContent =
+ display.toLocaleString() + (hasPlus ? '+' : '') + (hasYi ? '亿' : suffix);
+ }, 1000 / 60);
+
return () => clearInterval(timer);
}
diff --git a/src/components/Home/ServicesSection.tsx b/src/components/Home/ServicesSection.tsx
index c8c44a4..832c1c9 100644
--- a/src/components/Home/ServicesSection.tsx
+++ b/src/components/Home/ServicesSection.tsx
@@ -28,7 +28,7 @@ const ServiceCard: React.FC<{
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: index * 0.1, duration: 0.5 }}
- whileHover={{ y: -8, shadow: '0 20px 40px rgba(0,0,0,0.1)' }}
+ whileHover={{ y: -8, boxShadow: '0 20px 40px rgba(0,0,0,0.1)' }}
>
{/* 背景装饰 */}
diff --git a/src/hooks/usePageMeta.ts b/src/hooks/usePageMeta.ts
new file mode 100644
index 0000000..4b7169c
--- /dev/null
+++ b/src/hooks/usePageMeta.ts
@@ -0,0 +1,35 @@
+import { useEffect } from 'react'
+import { COMPANY_INFO } from '../lib/constants'
+import type { Locale } from '../lib/i18n'
+
+type PageMetaInput = {
+ title: string
+ description?: string
+ locale: Locale
+}
+
+function setMetaTag(name: string, content: string) {
+ const meta = document.querySelector(`meta[name="${name}"]`)
+ if (meta) meta.setAttribute('content', content)
+}
+
+export function usePageMeta({ title, description, locale }: PageMetaInput) {
+ useEffect(() => {
+ const previousTitle = document.title
+ const previousLang = document.documentElement.lang
+
+ const suffix = locale === 'en' ? COMPANY_INFO.nameEn : COMPANY_INFO.name
+ document.title = title ? `${title} - ${suffix}` : suffix
+
+ document.documentElement.lang = locale === 'en' ? 'en' : 'zh-CN'
+
+ if (description) {
+ setMetaTag('description', description)
+ }
+
+ return () => {
+ document.title = previousTitle
+ document.documentElement.lang = previousLang
+ }
+ }, [description, locale, title])
+}
diff --git a/src/hooks/usePageTitle.ts b/src/hooks/usePageTitle.ts
index f2b556f..4d8e882 100644
--- a/src/hooks/usePageTitle.ts
+++ b/src/hooks/usePageTitle.ts
@@ -5,7 +5,7 @@ import { useEffect } from 'react';
* @param title 页面标题
* @param suffix 标题后缀,默认为 "示例集团"
*/
-export const usePageTitle = (title: string, suffix: string = '示例集团') => {
+export const usePageTitle = (title: string, suffix: string = '诚裕集团') => {
useEffect(() => {
const prevTitle = document.title;
document.title = title ? `${title} - ${suffix}` : suffix;
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index 5a758b4..bded472 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -4,25 +4,28 @@
// 企业基本信息
export const COMPANY_INFO = {
- name: '示例集团',
+ name: '诚裕集团',
nameEn: 'Chengyu Group',
- slogan: '稳健前行,携手共赢',
- description: '示例集团成立于2010年,是一家集科技研发、金融服务、产业投资于一体的综合性企业集团。秉承"诚信、创新、共赢"的经营理念,致力于为客户提供高品质的产品和服务。',
- fullName: '示例集团有限公司',
- registrationNumber: '91110000XXXXXXXX',
- established: '2010年',
- headquarters: '北京市朝阳区建国路88号',
- phone: '400-888-8888',
- email: 'contact@chengyu-group.com',
- workingHours: '周一至周五 9:00-18:00',
+ slogan: '以专业为本,以稳健致远',
+ description:
+ '诚裕集团是一家以综合服务为核心的集团型企业,围绕客户在经营与管理中的关键需求,提供系统化、可持续的解决方案。本网站内容为占位示例,后续将根据集团正式资料进行完善与更新。',
+ fullName: '诚裕集团',
+ registrationNumber: '统一社会信用代码(待补充)',
+ established: '成立时间(待补充)',
+ headquarters: '总部地址(待补充)',
+ phone: '联系电话(待补充)',
+ email: '邮箱(待补充)',
+ workingHours: '工作时间(待补充)',
};
// 导航菜单配置
export const NAVIGATION_MENU = [
{ id: 'home', label: '首页', path: '/' },
- { id: 'about', label: '关于我们', path: '/about' },
- { id: 'services', label: '产品服务', path: '/services' },
- { id: 'news', label: '新闻资讯', path: '/news' },
+ { id: 'about', label: '集团概况', path: '/about' },
+ { id: 'scope', label: '服务范围', path: '/services' },
+ { id: 'cases', label: '服务案例', path: '/cases' },
+ { id: 'news', label: '新闻中心', path: '/news' },
+ { id: 'learning', label: '培训学习', path: '/learning' },
{ id: 'contact', label: '联系我们', path: '/contact' },
];
@@ -123,24 +126,32 @@ export const COMPANY_STATS = [
// 页面元信息
export const PAGE_META = {
home: {
- title: '示例集团 - 稳健前行,携手共赢',
- description: '示例集团是一家集科技研发、金融服务、产业投资于一体的综合性企业集团',
+ title: '诚裕集团',
+ description: '诚裕集团品牌官网(内容占位,后续根据正式资料完善)',
},
about: {
- title: '关于我们 - 示例集团',
- description: '了解示例集团的发展历程、企业文化和核心价值观',
+ title: '集团概况',
+ description: '了解诚裕集团的基本信息、文化理念与发展概况(占位内容)',
},
services: {
- title: '产品服务 - 示例集团',
- description: '提供金融服务、科技研发、产业投资、咨询管理等专业服务',
+ title: '服务范围',
+ description: '围绕客户关键需求提供系统化服务(占位内容)',
+ },
+ cases: {
+ title: '服务案例',
+ description: '典型项目与解决思路展示(占位内容)',
},
news: {
- title: '新闻资讯 - 示例集团',
- description: '了解示例集团最新动态、行业资讯和荣誉资质',
+ title: '新闻中心',
+ description: '集团新闻、行业动态与公告(占位内容)',
+ },
+ learning: {
+ title: '培训学习',
+ description: '课程与学习资源(占位内容)',
},
contact: {
- title: '联系我们 - 示例集团',
- description: '获取示例集团联系方式,欢迎随时与我们沟通',
+ title: '联系我们',
+ description: '联系信息与留言反馈(占位内容)',
},
};
diff --git a/src/lib/i18n.ts b/src/lib/i18n.ts
new file mode 100644
index 0000000..5fee47f
--- /dev/null
+++ b/src/lib/i18n.ts
@@ -0,0 +1,26 @@
+export type Locale = 'zh' | 'en'
+
+export const DEFAULT_LOCALE: Locale = 'zh'
+
+export function getLocaleFromPathname(pathname: string): Locale {
+ return pathname === '/en' || pathname.startsWith('/en/') ? 'en' : 'zh'
+}
+
+export function stripLocalePrefix(pathname: string): string {
+ if (pathname === '/en') return '/'
+ if (pathname.startsWith('/en/')) return pathname.replace(/^\/en/, '')
+ return pathname
+}
+
+export function withLocalePath(locale: Locale, path: string): string {
+ if (locale === 'en') {
+ if (path === '/') return '/en'
+ return `/en${path}`
+ }
+
+ return path
+}
+
+export function toOppositeLocale(locale: Locale): Locale {
+ return locale === 'en' ? 'zh' : 'en'
+}
diff --git a/src/pages/About.tsx b/src/pages/About.tsx
index 9191323..c3dde57 100644
--- a/src/pages/About.tsx
+++ b/src/pages/About.tsx
@@ -10,55 +10,50 @@ import {
Building2,
Globe,
} from 'lucide-react';
-import { Header } from '../components/Header';
-import { Footer } from '../components/Footer';
-import { COMPANY_INFO } from '../lib/constants';
-import { usePageTitle } from '../hooks/usePageTitle';
+import { Header } from '../components/Header'
+import { Footer } from '../components/Footer'
+import { COMPANY_INFO, PAGE_META } from '../lib/constants'
+import { usePageMeta } from '../hooks/usePageMeta'
+import { getLocaleFromPathname } from '../lib/i18n'
// 发展历程数据
const milestones = [
{
- year: '2010',
- title: '公司成立',
- description: '示例集团在北京成立,开始布局金融服务业务',
+ year: '年份',
+ title: '关键节点(待补充)',
+ description: '根据集团正式资料补充发展历程与重要节点。',
icon: Building2,
},
{
- year: '2012',
- title: '首次战略融资',
- description: '完成 A 轮融资,获得知名投资机构认可',
+ year: '年份',
+ title: '关键节点(待补充)',
+ description: '根据集团正式资料补充发展历程与重要节点。',
icon: TrendingUp,
},
{
- year: '2015',
- title: '业务扩展',
- description: '成立科技研发子公司,进军科技领域',
+ year: '年份',
+ title: '关键节点(待补充)',
+ description: '根据集团正式资料补充发展历程与重要节点。',
icon: Globe,
},
{
- year: '2018',
- title: '规模扩张',
- description: '员工规模突破 200 人,服务客户超过 500 家',
+ year: '年份',
+ title: '关键节点(待补充)',
+ description: '根据集团正式资料补充发展历程与重要节点。',
icon: Users,
},
{
- year: '2020',
- title: '产业投资布局',
- description: '成立产业投资基金,全面进入投资领域',
+ year: '年份',
+ title: '关键节点(待补充)',
+ description: '根据集团正式资料补充发展历程与重要节点。',
icon: Target,
},
{
- year: '2023',
- title: '集团化运营',
- description: '正式更名为示例集团,形成多元化业务体系',
+ year: '年份',
+ title: '关键节点(待补充)',
+ description: '根据集团正式资料补充发展历程与重要节点。',
icon: Award,
},
- {
- year: '2025',
- title: '新里程碑',
- description: '管理资产突破 500 亿,员工规模超过 500 人',
- icon: Calendar,
- },
];
// 核心价值观数据
@@ -127,8 +122,14 @@ const honors = [
* About 组件 - 关于我们页面
*/
export const About: React.FC = () => {
- const timelineRef = useRef
(null);
- usePageTitle('关于我们');
+ const timelineRef = useRef(null)
+ const locale = getLocaleFromPathname(window.location.pathname)
+
+ usePageMeta({
+ title: locale === 'en' ? 'About' : PAGE_META.about.title,
+ description: PAGE_META.about.description,
+ locale,
+ })
return (
{
transition={{ duration: 0.6 }}
>
- 关于示例集团
+ {locale === 'en' ? 'About Chengyu Group' : '集团概况'}
- 示例集团成立于 2010 年,是一家集科技研发、金融服务、产业投资于一体的综合性企业集团
+ {locale === 'en'
+ ? 'This is a placeholder introduction. Content will be updated after official materials are provided.'
+ : '本页面为占位示例,将在收到集团正式资料后完善集团介绍、文化理念与组织信息。'}
@@ -176,17 +179,23 @@ export const About: React.FC = () => {
@@ -217,14 +226,15 @@ export const About: React.FC = () => {
{/* 装饰元素 */}
diff --git a/src/pages/Cases.tsx b/src/pages/Cases.tsx
new file mode 100644
index 0000000..e307220
--- /dev/null
+++ b/src/pages/Cases.tsx
@@ -0,0 +1,73 @@
+import { motion } from 'framer-motion'
+import { Header } from '../components/Header'
+import { Footer } from '../components/Footer'
+import { usePageMeta } from '../hooks/usePageMeta'
+import { getLocaleFromPathname } from '../lib/i18n'
+import { PAGE_META } from '../lib/constants'
+
+type CaseCategory = {
+ id: string
+ zh: string
+ en: string
+}
+
+const caseCategories: CaseCategory[] = [
+ { id: 'separation', zh: '分立类案例', en: 'Separation Cases' },
+ { id: 'accounts', zh: '整账类案例', en: 'Accounts Cases' },
+ { id: 'internal-audit', zh: '企业内审类案例', en: 'Internal Audit Cases' },
+ { id: 'tax-advisory', zh: '财税顾问案例', en: 'Tax & Finance Advisory' },
+ { id: 'planning', zh: '涉税筹划类案例', en: 'Tax Planning Cases' },
+ { id: 'insolvency', zh: '破产清算类案例', en: 'Insolvency & Liquidation' },
+]
+
+export const Cases: React.FC = () => {
+ const locale = getLocaleFromPathname(window.location.pathname)
+
+ usePageMeta({
+ title: locale === 'en' ? 'Cases' : PAGE_META.cases.title,
+ description: PAGE_META.cases.description,
+ locale,
+ })
+
+ return (
+
+ )
+}
+
+export default Cases
diff --git a/src/pages/Categories.tsx b/src/pages/Categories.tsx
index e7da140..c6833dd 100644
--- a/src/pages/Categories.tsx
+++ b/src/pages/Categories.tsx
@@ -53,7 +53,7 @@ export const CategoriesPage: React.FC = () => {