diff --git a/app/[locale]/about/page.tsx b/app/[locale]/about/page.tsx index aa95c77..83441af 100644 --- a/app/[locale]/about/page.tsx +++ b/app/[locale]/about/page.tsx @@ -1,5 +1,4 @@ import MDXComponents from "@/components/mdx/MDXComponents"; -import TableOfContents from "@/components/mdx/TableOfContents.client"; import { Locale, LOCALES } from "@/i18n/routing"; import { constructMetadata } from "@/lib/metadata"; import fs from "fs/promises"; @@ -17,52 +16,7 @@ const options = { }, }; -interface TableOfContentsItem { - id: string; - text: string; - level: number; -} - -// 解析MDX内容并提取标题 -async function parseMDXContent(content: string): Promise { - if (!content) { - return []; - } - - try { - const headingRegex = /^#{2,4}\s+(.+)$/gm; - const headings: TableOfContentsItem[] = []; - let match; - - while ((match = headingRegex.exec(content)) !== null) { - const fullMatch = match[0]; - const text = match[1]?.trim(); - - if (!text) continue; - - // 确定标题级别 - let level = 2; - if (fullMatch.startsWith("###")) { - level = fullMatch.startsWith("####") ? 4 : 3; - } - - // 生成ID(将文本转换为URL友好的格式) - const id = text - .toLowerCase() - .replace(/[^a-z0-9\u4e00-\u9fa5\s-]/g, "") - .replace(/\s+/g, "-"); - - headings.push({ id, text, level }); - } - - return headings; - } catch (error) { - console.error("Error parsing MDX content for TOC:", error); - return []; - } -} - -async function getMDXContent(locale: string, section: string): Promise { +async function getMDXContent(locale: string, section: string) { const filePath = path.join( process.cwd(), "content", @@ -115,37 +69,15 @@ export default async function AboutPage({ const section = (resolvedSearchParams.section as string) || "company"; const content = await getMDXContent(locale, section); - const tocItems = await parseMDXContent(content); - - // 获取多语言目录标题 - const t = await getTranslations({ locale, namespace: "Common" }); - const tocTitle = t("tableOfContents") || "目录"; return ( -
- {/* 侧边目录 - 在移动端显示在内容上方 */} -
- -
- - {/* 主要内容 */} -
- {content ? ( - - ) : ( -
-

内容加载中...

-
- )} -
-
+
+ +
); } diff --git a/app/[locale]/blog/[slug]/page.tsx b/app/[locale]/blog/[slug]/page.tsx index ce36de0..7bf8ad8 100644 --- a/app/[locale]/blog/[slug]/page.tsx +++ b/app/[locale]/blog/[slug]/page.tsx @@ -4,9 +4,11 @@ import { Locale, LOCALES } from "@/i18n/routing"; import { getPosts } from "@/lib/getBlogs"; import { constructMetadata } from "@/lib/metadata"; import { BlogPost } from "@/types/blog"; +import fs from "fs/promises"; import { Metadata } from "next"; import { MDXRemote } from "next-mdx-remote-client/rsc"; import { notFound } from "next/navigation"; +import path from "path"; type Params = Promise<{ locale: string; @@ -17,14 +19,112 @@ type MetadataProps = { params: Params; }; +async function getMDXContent(locale: string, section: string): Promise { + const filePath = path.join( + process.cwd(), + "blogs", + locale, + `${section}.mdx` + ); + + try { + const content = await fs.readFile(filePath, "utf-8"); + + // 解析MDX文件的frontmatter和内容 + const { frontmatter, content: postContent } = parseMDXContent(content); + + // 构建BlogPost对象 + const blogPost: BlogPost = { + locale, + title: frontmatter.title || '', + description: frontmatter.description, + image: frontmatter.image, + slug: frontmatter.slug || '', + tags: frontmatter.tags, + // 解析日期 + date: frontmatter.date ? new Date(frontmatter.date) : new Date(), + // 设置visible默认值为published + visible: frontmatter.visible || 'published', + // 处理pin字段 - 如果有pin标记则为true,否则为false + pin: frontmatter.pin === 'pin', + // 去除frontmatter后的内容 + content: postContent.trim(), + // 所有frontmatter作为metadata + metadata: { ...frontmatter } + }; + + return blogPost; + + } catch (error) { + console.error(`Error reading MDX file: ${error}`); + // 返回默认的BlogPost对象(符合类型要求) + return { + title: '', + slug: '', + date: new Date(), + content: '', + visible: 'published', + pin: false, + metadata: {}, + locale + }; + } +} + +/** + * 解析MDX内容,提取frontmatter和正文 + */ +function parseMDXContent(content: string): { + frontmatter: Record + content: string +} { + // 匹配frontmatter的正则表达式(---开头和结尾) + const frontmatterRegex = /^---\s*[\r\n]([\s\S]*?)[\r\n]---\s*[\r\n]/; + const match = frontmatterRegex.exec(content); + + let frontmatter: Record = {}; + let postContent = content; + + if (match && match[1]) { + // 提取frontmatter部分并解析 + const frontmatterStr = match[1]; + postContent = content.slice(match[0].length); + + // 解析frontmatter的每一行 + const lines = frontmatterStr.split(/[\r\n]+/); + lines.forEach(line => { + // 跳过空行和注释 + if (!line.trim() || line.trim().startsWith('#')) return; + + // 分割键值对(支持值中有冒号的情况) + const colonIndex = line.indexOf(':'); + if (colonIndex === -1) return; + + const key = line.substring(0, colonIndex).trim(); + let value = line.substring(colonIndex + 1).trim(); + + // 移除值的引号(如果有) + if ((value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'"))) { + value = value.substring(1, value.length - 1); + } + + frontmatter[key] = value; + }); + } + + return { frontmatter, content: postContent }; +} + + export async function generateMetadata({ params, }: MetadataProps): Promise { const { locale, slug } = await params; - let { posts }: { posts: BlogPost[] } = await getPosts(locale); - const post = posts.find((post) => post.slug === slug); + let post = await getMDXContent(locale, slug); + + console.log(post, 'post'); - console.log(post, posts); if (!post) { return constructMetadata({ title: "404", @@ -38,9 +138,9 @@ export async function generateMetadata({ return constructMetadata({ page: "blog", - title: post.title, - description: post.description, - images: post.image ? [post.image] : [], + title: post.title || '', + description: post.description || '', + images: [], locale: locale as Locale, path: `/blog/${slug}`, canonicalUrl: `/blog/${slug}`, @@ -49,10 +149,9 @@ export async function generateMetadata({ export default async function BlogPage({ params }: { params: Params }) { const { locale, slug } = await params; - let { posts }: { posts: BlogPost[] } = await getPosts(locale); - - const post = posts.find((item) => item.slug === slug); + let post = await getMDXContent(locale, slug); + console.log(post); if (!post) { return notFound(); } diff --git a/blogs/en/1.demo.mdx b/blogs/en/1.mdx similarity index 100% rename from blogs/en/1.demo.mdx rename to blogs/en/1.mdx diff --git a/blogs/en/2.mdx b/blogs/en/2.mdx new file mode 100644 index 0000000..e69de29 diff --git a/blogs/en/3.mdx b/blogs/en/3.mdx new file mode 100644 index 0000000..e69de29 diff --git a/blogs/ja/1.demo.mdx b/blogs/ja/1.mdx similarity index 100% rename from blogs/ja/1.demo.mdx rename to blogs/ja/1.mdx diff --git a/blogs/ja/2.mdx b/blogs/ja/2.mdx new file mode 100644 index 0000000..e69de29 diff --git a/blogs/ja/3.mdx b/blogs/ja/3.mdx new file mode 100644 index 0000000..e69de29 diff --git a/blogs/zh/1.demo.mdx b/blogs/zh/1.demo.mdx deleted file mode 100644 index d9428dc..0000000 --- a/blogs/zh/1.demo.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 示例 -description: 这是一个描述 -slug: /demo -tags: nextjs,i18n,mdx,starter,robots,sitemap -date: 2025-02-16 -visible: published -# visible: draft/invisible/published,默认为published -pin: true ---- - -## 简介 - -示例 - -## 如何使用 - -示例 \ No newline at end of file diff --git a/blogs/zh/1.mdx b/blogs/zh/1.mdx new file mode 100644 index 0000000..b7791aa --- /dev/null +++ b/blogs/zh/1.mdx @@ -0,0 +1,40 @@ +--- +title: 钢铁行业发展新趋势 +visible: published +# visible: draft/invisible/published (published is default) +pin: pin +--- + +近年来,伴随我国城镇化进程进入中后期,建筑钢材需求正经历由“总量扩张”向“结构优化”的深刻转变。这一变化不仅重塑了钢材消费格局,也正在加速推动钢铁行业整体转型升级。 + +一、建筑用钢:总量见顶,结构分化 +过去二十多年,我国城镇化率从1996年的30%快速提升至2024年的67%,年均增速在1996—2017年间高达1.42%。在此期间,城市大规模扩张带动建筑钢材需求爆发式增长。然而,自2018年起,城镇化年均增速已放缓至0.97%,并预计在突破70%后进一步趋缓——参照美、日、韩等发达国家经验,这意味着以新建为主的建筑用钢需求高峰已然过去。 + +数据显示,自2021年房地产周期见顶以来,螺纹钢表观消费量同步回落,2021—2024年年均降幅达5.88%,且短期内难现逆转。传统住宅和商业地产对钢材的拉动作用持续减弱。 + +但结构性机会正在显现。中央城市工作会议明确提出,未来将稳步推进城中村和危旧房改造,加快城市基础设施“生命线”安全工程建设,重点推进燃气、供排水、供热等老旧管网更新。据国家发展改革委测算,未来五年全国需改造各类市政管网约60万千米,总投资约4万亿元。这一轮“城市更新”将带动螺纹钢、中厚板及焊接钢管的阶段性需求,尽管其单位投资用钢强度显著低于新建项目。 + +与此同时,绿色低碳转型为建筑用钢开辟新赛道。住建部要求,到2025年城镇新建建筑全面执行绿色建筑标准,超低能耗建筑推广提速。钢结构因其施工快、抗震强、可循环、碳排放低等优势,正成为绿色建造的重要载体。2020—2024年,我国钢结构加工量从8900万吨增至1.09亿吨,年均增长4.5%;中国钢结构协会预计,2025年将达1.4亿吨,2035年有望突破2亿吨。 + +二、需求重心转移:从全域扩张到城市群聚焦 +在总量下行背景下,建筑钢材需求的区域分布也发生显著变化。过去“遍地开花”的建设模式正在被“重点集聚”所取代。会议强调,要发展组团式、网络化的现代化城市群和都市圈,这意味着未来基建投资将高度集中于京津冀、长三角、粤港澳大湾区等核心区域。 + +城际铁路、综合交通枢纽、跨江跨海桥梁、长大隧道等重大工程将成为用钢主力场景。而人口持续流出的三四线城市及县域地区,建筑钢材需求增长空间有限,甚至面临长期萎缩。 + +更深远的变化在于,制造业正取代建筑业,成为钢材消费的第一大领域。据估算,建筑用钢占钢材总消费的比重已从2020年的63.74%降至2024年的56.99%,其中房地产用钢占比更是从39.79%大幅下滑至23.67%;同期,制造业用钢占比则从36.26%上升至43.01%。 + +这一结构性转变已在钢厂生产端得到印证:2024年,重点钢铁企业螺纹钢和线材产量同比分别下降13.84%和1.73%;而热轧薄宽钢带、冷轧薄宽钢带产量分别增长3.14%和1.95%,电工钢板(带)及其冷轧品种增幅更高达7.75%和5.41%。产品结构正加速向高附加值板材倾斜。 + +三、产业升级:技术、绿色与产能优化协同推进 +需求侧的深刻变革,正倒逼钢铁行业在多个维度加速升级。 + +一是产品高端化。面向制造业转型升级,钢厂正加大高强钢、硅钢、镀锌板等新能源汽车用材的供给;针对风电、光伏等可再生能源装机激增,中厚板、压力容器钢、耐蚀合金钢等专用品种产能持续扩张;同时,顺应轻量化、智能化趋势,开发高精度船板、家电用不锈钢等功能性产品。在建筑领域,高强度抗震钢筋、耐腐蚀结构钢等绿色建材也成为研发重点。 + +二是绿色低碳转型提速。截至2025年7月底,全国已有147家钢铁企业、约6亿吨粗钢产能完成全流程超低排放改造,占总产能比重持续提升。行业目标是在2025年底前实现80%以上产能达标,环保成本内化已成为企业竞争力的重要组成部分。 + +三是落后产能有序退出。面对房地产投资仍处两位数负增长的现实,政策层面持续强化“反内卷”导向。中央财经委员会7月初再次强调推动低效产能退出,未来或将通过联合重组替代传统的产能指标交易,严禁产能买卖,从根本上改善行业供需关系,提升资源配置效率。 + +结语 +中央城市工作会议释放的信号清晰表明:中国钢铁行业已正式迈入“存量优化、提质升级”的新发展阶段。建筑钢材需求总量下行不可逆,但城市更新、绿色建筑、城市群基建等结构性机会依然可观;而制造业用钢的崛起,则为行业提供了更可持续的增长引擎。 + +在此背景下,唯有主动调整产品结构、加快绿色智能转型、坚决淘汰落后产能的企业,才能在新一轮洗牌中赢得先机。钢铁行业的未来,不再取决于“产多少”,而在于“产什么”和“如何产”。这场由需求变革驱动的产业升级,正在书写中国钢铁高质量发展的新篇章。 \ No newline at end of file diff --git a/blogs/zh/2.demo2.mdx b/blogs/zh/2.demo2.mdx deleted file mode 100644 index 6996f27..0000000 --- a/blogs/zh/2.demo2.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: 示例2 -description: 这是一个描述2 -slug: /demo2 -tags: nextjs,i18n,mdx,starter,robots,sitemap -date: 2025-02-17 -visible: published -# visible: draft/invisible/published,默认为published -# pin: true ---- - -## 简介 - -示例2 - -## 如何使用 - -示例2 \ No newline at end of file diff --git a/blogs/zh/2.mdx b/blogs/zh/2.mdx new file mode 100644 index 0000000..1b4a1c5 --- /dev/null +++ b/blogs/zh/2.mdx @@ -0,0 +1,70 @@ +--- +title: 雅江工程对钢铁行业的重大意义 +visible: published +# visible: draft/invisible/published (published is default) +pin: pin +--- + +在青藏高原腹地、雅鲁藏布江大拐弯处,一项被称作“世纪工程”的超级水电项目正拉开建设帷幕——这就是总投资达1.2万亿元、总装机容量5500万至6000万千瓦的雅鲁藏布江下游水电工程(简称“雅江工程”或“雅下工程”)。作为人类历史上规模最大的水电基建项目,其年均发电量预计达2000亿至3000亿千瓦时,约为三峡工程的3倍。这一工程不仅将重塑国家能源格局、支撑“双碳”战略,更将深刻影响中国钢铁工业的发展轨迹。 + +2025年8月27日,在第七届中国高速钢应用技术论坛上,中国特钢企业协会副秘书长赵发忠以《雅江工程与钢铁工业发展新机遇——钢铁及特钢需求分析》为题发表报告,系统阐释了该工程对钢铁行业带来的历史性机遇与结构性挑战。 + +一、规模空前:钢材需求体量创历史之最 +据测算,雅江工程主体建设用钢量预计达400万至600万吨;若计入配套输变电、交通、移民安置等项目,总用钢量或将突破800万吨——是三峡工程(59万吨)的10至13倍。更为关键的是,这一需求并非短期集中释放,而是贯穿约15年的建设周期,年均稳定在50万至80万吨,为钢铁行业提供长期、可预期的市场支撑。 + +从品类结构看,钢材需求呈现“常规为主、特钢为要”的双轮驱动格局: + +核心工程用常规建材(280万–330万吨):包括螺纹钢、H型钢、工字钢、中厚板等,用于大坝骨架、引水隧洞、施工道路等基础设施; +输电设施用特殊钢(28.1万吨):如耐候角钢、镀锌钢板,用于特高压塔架及变电站钢结构; +水电机组用特种钢(27万吨):涵盖06Cr13Ni4Mo等耐蚀不锈钢、高磁感取向硅钢片、高强度结构钢,用于水轮机转轮、发电机定转子等核心部件。 +值得注意的是,西部钢铁企业凭借区位优势有望成为常规钢材供应主力。例如,宝武集团八钢公司在西藏重点工程型钢市场占有率高达85%,依托兰新、青藏铁路,其运输成本较东部企业低30%以上,“就地供应”优势显著。 + +二、分阶段释放:需求节奏要求柔性响应 +赵发忠指出,雅江工程的钢材需求具有鲜明的阶段性特征,对钢铁企业的生产组织与供应链协同提出“柔性化”新要求: + +前期(2025–2027年):以土建施工为主,螺纹钢、工字钢等常规建材占比超60%;同时带动工程机械用钢需求增长12%,高原隧道掘进设备订单激增。 +中期(2028–2030年):进入大坝浇筑与机组制造高峰期,中厚板年需求或破500万吨,硅钢片年增15万吨,Q500E等高强桥梁钢溢价空间扩大——此为特钢企业的“黄金窗口期”。 +后期(2031年起):聚焦特高压输电线路建设,耐候角钢、镀锌钢材及取向硅钢片(年新增8万吨)成为主力,强调“精准对接”与“即时响应”。 +这种“前重后精、由普入特”的需求曲线,倒逼钢铁企业从“批量生产”转向“按需定制”,从“产品交付”升级为“解决方案提供”。 + +三、极限环境:倒逼材料性能全面跃升 +雅江工程地处海拔4000米以上的青藏高原,面临极端低温、强紫外线、高腐蚀水质、地震活跃带、运输受限等多重挑战,对钢材性能提出近乎苛刻的要求: + +低温韧性:需满足-40℃冲击功≥27J,推动Ni-Cr-Mo-V微合金化技术应用; +抗紫外线老化:镀锌层厚度≥85μm,配套新型耐UV涂层体系; +耐腐蚀性:面对高氯离子、高溶解氧水体,含氮双相不锈钢成关键材料; +抗震抗撕裂:地质断裂带区域需Z向钢,采用在线淬火+回火工艺提升层状撕裂抗力; +轻量化与可焊性:受限于高原运力(日均仅500吨),要求钢材强度更高、重量更轻(减重30%),且焊接裂纹敏感性指数Pcm≤0.30。 +在此背景下,特种钢占比高达40%,远超常规大型工程。这不仅是对材料的考验,更是对中国钢铁工业技术能力的一次“压力测试”。 + +四、技术领跑:从“跟跑”到“并跑”甚至“领跑” +雅江工程正成为国产高端钢材的“试金石”与“加速器”。一批标志性成果已崭露头角: + +湖南钢铁集团研发的HY950CF水电钢,屈服强度≥960MPa、-40℃冲击功>50J,成功拿下压力钢管70%份额(约15万吨),实现减重30%; +太钢攻克高海拔焊接熔敷率难题,独家供应全部93台水轮机转轮用钢(3.7万吨); +宝钢将供应14万吨高性能硅钢,支撑23.3万吨的发电机组磁芯需求。 +这些突破标志着我国特钢技术已跻身国际先进水平,并具备自主保障国家重大工程的能力。 + +五、产业协同:推动全链条绿色智能升级 +赵发忠强调,雅江工程不应仅被视为“钢材采购项目”,而应作为推动钢铁行业高质量发展的战略支点。他建议: + +西部钢企可依托区位优势,扩建高原适配钢种产能,布局电炉短流程项目; +东部企业可通过合资建厂方式参与西部供应链; +建立“雅江工程专用废钢”回收体系,结合工程绿电资源,打造低碳循环示范; +行业协会牵头整合研发、生产、检测、物流等全链条资源,提供精准化服务。 +中国特钢企业协会已将雅江工程列为重中之重,由协会领导亲自部署,旨在凝聚行业合力,以特钢力量护航国家战略落地。 + +六、行动倡议:钢铁企业须主动出击 +面对这一千载难逢的机遇,赵发忠向全行业发出呼吁: + +成立专项工作组:设立“雅江工程用钢领导小组”,系统谋划技术、产能、市场策略; +深度对接业主与承包商:主动联系中国雅江集团、中国电建、东方电气、大唐集团、西藏天路等关键单位; +强化技术研发:针对高原、高寒、高腐蚀等特殊工况,加快高强度、耐蚀、轻量化钢材开发; +构建专属供应链:实现从铁矿石到成品钢的全流程质量追溯与保障; +打造品牌高地:将雅江工程作为展示技术实力、培养高端人才、树立行业标杆的核心平台。 +结语:铸就“钢铁脊梁”,书写硬核答卷 +“雅江工程的钢铁骨架,正等待我们以更精尖的技术去完善、用更严谨的态度去守护。”赵发忠在报告结尾深情寄语。 + +对钢铁行业而言,雅江工程不仅是一张庞大的订单清单,更是一场关乎转型升级、技术跃迁与全球竞争力重塑的历史性战役。每一次对用钢标准的精进,都是为世纪工程筑牢安全底线;每一次对技术瓶颈的突破,都是为中国制造注入新的动能。 + +在这片世界屋脊之上,中国钢铁人将以实打实的产品、硬碰硬的技术、稳扎稳打的行动,共同铸就这座“超级工程”的钢铁脊梁,也书写属于新时代中国工业的硬核答卷。 \ No newline at end of file diff --git a/blogs/zh/3.mdx b/blogs/zh/3.mdx new file mode 100644 index 0000000..349aafd --- /dev/null +++ b/blogs/zh/3.mdx @@ -0,0 +1,47 @@ +--- +title: 中国钢铁行业发展亟需高端化 +visible: published +# visible: draft/invisible/published (published is default) +pin: pin +--- + +随着年末临近,钢铁行业正经历一场结构性调整与转型的关键阶段。尽管整体产量保持相对稳定,但需求端持续承压,库存水平明显攀升,行业盈利基础仍显脆弱。然而,在挑战之中,部分企业通过聚焦高端产品、优化结构、降本增效等举措,实现了业绩的逆势增长,为行业高质量发展提供了新路径。 + +(一)需求下行,库存压力显现 +根据中国钢铁工业协会(中钢协)最新数据,2025年前三季度,国内钢铁表观消费量为6.49亿吨,同比下降5.7%。这一趋势并非短期波动,而是“十四五”以来的延续性变化——自2020年10.4亿吨的消费峰值起,国内钢铁表观消费量已连续五年下滑,至2024年降至8.9亿吨,累计减少1.5亿吨,年均降幅达3.8%。 + +与此同时,库存压力逐步累积。信达证券研报指出,截至2025年11月28日,五大钢材品种的社会库存达到1007.3万吨,同比大幅增长27.82%;厂内库存为393.5万吨,同比增长2.11%。中钢协数据显示,11月中旬重点统计钢铁企业钢材库存量为1561万吨,较年初增加324万吨,增幅达26.3%,反映出终端需求疲软与生产节奏之间的阶段性错配。 + +(二)产量稳中有调,结构性分化加剧 +从生产端看,钢铁行业整体运行平稳。2025年11月中旬,重点统计钢铁企业粗钢日均产量为194.3万吨,环比微增0.9%;钢材日均产量192.4万吨,环比增长2.1%。但回溯至10月,全国粗钢产量为7200万吨,同比下降12.1%,1—10月累计产量8.18亿吨,同比下降3.9%。这表明在政策引导和市场调节下,行业主动压减产量的趋势仍在延续。 + +值得注意的是,尽管总产量有所回落,但高端钢材产品的产销比例正在提升。多家上市公司在公告中披露,通过提高特种钢、高附加值产品的比重,有效对冲了普通钢材价格下行带来的冲击,部分企业甚至实现扭亏为盈。三季报数据显示,在已披露业绩的46家钢铁上市公司中,31家净利润同比增长,占比达67.39%。 + +(三)盈利改善但基础不牢,行业仍处转型阵痛期 +中钢协副会长夏农在第21届中国钢铁产业链峰会上指出,2025年以来,行业总体运行良好,效益较去年同期显著改善,9月实现由亏转盈。但环比来看,9月盈利水平较8月出现较大幅度回落,说明当前盈利基础尚不稳固,行业仍处于“弱复苏、强分化”的阶段。 + +这一判断与当前供需格局高度吻合:一方面,传统建筑、房地产等用钢领域持续萎缩;另一方面,新能源、高端制造、钢结构建筑等新兴应用场景尚未形成足够规模的增量支撑。 + +(四)转型升级成破局关键,绿色智能引领未来 +面对“存量优化、提质升级”的新发展阶段,中钢协强调,钢铁企业必须坚决贯彻“三定三不要”经营原则(即以销定产、以效定产、以现定产,不要盲目扩产、不要恶性竞争、不要牺牲长远利益),强化行业自律,遏制“内卷式”竞争。 + +夏农提出五项高质量发展建议: + +一是深化供给侧结构性改革,管住增量、优化存量,推动兼并重组; + +二是推进高端化、智能化、绿色化、融合化发展,提升全产业链竞争力; + +三是加强铁矿资源开发与废钢利用,保障产业链安全; + +四是拓展钢结构建筑等新应用场景,激活潜在需求; + +五是提升国际化水平,融入全球产业链。 + +在绿色转型方面,行业已迈出坚实步伐。截至2025年10月底,全国已有219家钢铁企业完成或部分完成超低排放改造,其中165家实现全工序改造,覆盖粗钢产能约6.63亿吨,累计投入超3100亿元。吨钢平均环保运行成本达212.44元,绿色已成为行业发展的硬约束与新优势。 + +此外,极致能效建设也在加速推进。截至11月中旬,21家企业完成极致能效验收,10家被认定为“双碳最佳实践能效标杆示范企业”,另有11家在关键工序或设备上树立能效标杆。 + +(五)展望:创新驱动,拓展边界 +清华大学中国经济思想与实践研究院院长李稻葵建议,钢铁企业应加快技术创新步伐,积极布局新能源相关材料领域,并大力推广钢结构建筑应用。他同时呼吁加强政企协同,以更稳健的节奏推进国际化,通过高水平开放倒逼内部改革与能力提升。 + +可以预见,在“双碳”目标与高质量发展双重驱动下,钢铁行业正从规模扩张转向价值创造。那些率先完成产品升级、绿色转型与市场拓展的企业,将在新一轮洗牌中赢得先机。而整个行业,也将在阵痛中重塑竞争力,迈向更加可持续的未来。 \ No newline at end of file diff --git a/components/home/index.tsx b/components/home/index.tsx index d96e069..7292f1d 100644 --- a/components/home/index.tsx +++ b/components/home/index.tsx @@ -1,4 +1,5 @@ 'use client' +import { Link as I18nLink } from "@/i18n/routing"; import { useTranslations } from "next-intl"; export default function HomeComponent() { @@ -11,13 +12,13 @@ export default function HomeComponent() { <>
{/* 轮播图区域, 先用一张图片占位, 宽度100%, 盖度100vh */} - {t("carousel")} + {t("carousel")} {/* 公司介绍 - 左右布局 */}
{/* 左边视频(图片占位) */}
{t("company_video")} @@ -32,7 +33,8 @@ export default function HomeComponent() { {/* 第二部分:介绍 */}
-

+ {/* 左对齐首行缩进2字符 */} +

{t("company.description")}

@@ -119,37 +121,44 @@ export default function HomeComponent() { {/* 资讯卡片列表 */}
{/* 第一张卡片 */} -
-
-
{t("news.items.news1.date")}
-
{t("news.items.news1.title")}
+ +
+
+
{t("news.items.news1.date")}
+
{t("news.items.news1.title")}
+
+
+ {t("news.items.news1.title")} +
-
- {t("news.items.news1.title")} -
-
+ - {/* 第二张卡片 - 中间突出显示 */} -
-
-
{t("news.items.news2.date")}
-
{t("news.items.news2.title")}
+ {/* 第二张卡片 */} + +
+
+
{t("news.items.news2.date")}
+
{t("news.items.news2.title")}
+
+
+ {t("news.items.news2.title")} +
-
- {t("news.items.news2.title")} -
-
+ {/* 第三张卡片 */} -
-
-
{t("news.items.news3.date")}
-
{t("news.items.news3.title")}
+ +
+
+
{t("news.items.news3.date")}
+
{t("news.items.news3.title")}
+
+
+ {t("news.items.news3.title")} +
-
- {t("news.items.news3.title")} -
-
+ +
{/* 了解更多按钮 */} @@ -175,7 +184,7 @@ export default function HomeComponent() { {/* 默认显示第一张产品图 */} {t("products.list.product1.alt")} @@ -192,7 +201,7 @@ export default function HomeComponent() {
{ - document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg'); + document.getElementById('productImage')?.setAttribute('src', t("products.list.product1.image")); document.getElementById('productImage')?.setAttribute('alt', t("products.list.product1.alt")); document.getElementById('productTitle')!.textContent = t("products.list.product1.name"); }} @@ -204,7 +213,7 @@ export default function HomeComponent() {
{ - document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg'); + document.getElementById('productImage')?.setAttribute('src', t("products.list.product2.image")); document.getElementById('productImage')?.setAttribute('alt', t("products.list.product2.alt")); document.getElementById('productTitle')!.textContent = t("products.list.product2.name"); }} @@ -216,7 +225,7 @@ export default function HomeComponent() {
{ - document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg'); + document.getElementById('productImage')?.setAttribute('src', t("products.list.product3.image")); document.getElementById('productImage')?.setAttribute('alt', t("products.list.product3.alt")); document.getElementById('productTitle')!.textContent = t("products.list.product3.name"); }} @@ -228,7 +237,7 @@ export default function HomeComponent() {
{ - document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg'); + document.getElementById('productImage')?.setAttribute('src', t("products.list.product4.image")); document.getElementById('productImage')?.setAttribute('alt', t("products.list.product4.alt")); document.getElementById('productTitle')!.textContent = t("products.list.product4.name"); }} @@ -240,7 +249,7 @@ export default function HomeComponent() {
{ - document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg'); + document.getElementById('productImage')?.setAttribute('src', t("products.list.product5.image")); document.getElementById('productImage')?.setAttribute('alt', t("products.list.product5.alt")); document.getElementById('productTitle')!.textContent = t("products.list.product5.name"); }} @@ -252,7 +261,7 @@ export default function HomeComponent() {
{ - document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg'); + document.getElementById('productImage')?.setAttribute('src', t("products.list.product6.image")); document.getElementById('productImage')?.setAttribute('alt', t("products.list.product6.alt")); document.getElementById('productTitle')!.textContent = t("products.list.product6.name"); }} diff --git a/i18n/messages/zh.json b/i18n/messages/zh.json index 3a5956d..117598a 100644 --- a/i18n/messages/zh.json +++ b/i18n/messages/zh.json @@ -164,14 +164,14 @@ } }, "Home": { - "title": "福安德外贸", - "tagLine": "Next.js 多语言启动模板", - "description": "内置多语言支持的 Next.js 16 启动模板,助您快速构建面向全球的出海网站。简洁高效,开箱即用,完全优化的SEO基础架构。", + "title": "巨丰钢铁", + "tagLine": "巨丰钢铁官网", + "description": "巨丰钢铁官网", "carousel": "轮播图", "company_video": "企业视频", "company": { - "title": "天津友发钢管集团股份有限公司", - "description": "友发集团是集直缝焊接圆管(含热浸镀锌)、直缝焊接方矩管(含热浸镀锌)、钢塑复合管、不锈钢管及管件、螺旋焊管(含承插及防腐加工)、热镀锌无缝管、石油管道、管件、保温管道、塑料管及管件、盘扣脚手架、光伏支架及地桩等多种产品生产销售于一体的大型企业集团,拥有'友发'和'正金'两个品牌。已经形成天津、河北唐山、河北邯郸、河北沧州、陕西韩城、江苏溧阳、辽宁葫芦岛、云南玉溪、安徽临泉、吉林磐石10个生产基地,同时正在建设四川成都基地。", + "title": "巨丰钢铁股份有限公司", + "description": "巨丰钢铁股份有限公司是山东省重点工程项目,是济宁市工程之一,也是科伦普产品结构调整重要的工程项目。工程采用了外方技术总负责、关键设备整体引进、点菜集成、国内技术总成、自主创新、单体设备引进等多种建设方 案,保证了技术先进和人才的培养,确保工程投产后达产达效。科伦普冷轧重工有限公司是设计年产量150万 吨,能向广大用户提供热轧酸洗、热轧镀锌、冷硬、罩式退火、冷轧镀锌、铝锌合金、锌铝合金、锌铝镁、镀铬等各大类产品。产品覆盖东北、华北、华东、华南等地区。 ", "button": "了解更多" }, "stats": { @@ -198,15 +198,18 @@ "items": { "news1": { "date": "2025/11/17", - "title": "核聚变区,智创未来,友发集团亮相202..." + "title": "钢铁行业发展新趋势", + "link": "/blog/1" }, "news2": { "date": "2025/11/17", - "title": "携手再攀产业新高峰,友发集团应邀出席..." + "title": "雅江工程就钢铁行业的重大意义", + "link": "/blog/2" }, "news3": { "date": "2025/09/20", - "title": "友发集团与中诚投建工集团签订战略合作..." + "title": "中国钢铁行业发展亟需高端化", + "link": "/blog/3" } } }, @@ -214,34 +217,34 @@ "title": "产品中心", "list": { "product1": { - "name": "直缝高频焊接圆管(含热浸镀锌)", - "image": "/placeholder.svg", - "alt": "直缝高频焊接圆管" + "name": "冷轧卷", + "image": "http://kelunpuzhonggong.com/upload/20251021161717.jpg", + "alt": "冷轧卷" }, "product2": { - "name": "方形焊接钢管(含热浸镀锌)", - "image": "/placeholder.svg", - "alt": "方形焊接钢管" + "name": "冷硬卷", + "image": "http://kelunpuzhonggong.com/upload/20251023102339.jpg", + "alt": "冷硬卷" }, "product3": { - "name": "钢塑复合管", - "image": "/placeholder.svg", - "alt": "钢塑复合管" + "name": "无花镀锌卷", + "image": "http://kelunpuzhonggong.com/upload/20251102082125.jpg", + "alt": "无花镀锌卷" }, "product4": { - "name": "管路连接件", - "image": "/placeholder.svg", - "alt": "管路连接件" + "name": "冷轧热镀锌(锌铝镁)钢带", + "image": "http://kelunpuzhonggong.com/upload/20250318141215854.jpg", + "alt": "冷轧热镀锌(锌铝镁)钢带" }, "product5": { - "name": "盘扣脚手架", - "image": "/placeholder.svg", - "alt": "盘扣脚手架" + "name": "连续镀铝锌带钢", + "image": "http://kelunpuzhonggong.com/upload/20250318141215385.jpg", + "alt": "连续镀铝锌带钢" }, "product6": { - "name": "不锈钢管及管件", - "image": "/placeholder.svg", - "alt": "不锈钢管及管件" + "name": "锌铝镁高铁声噪板", + "image": "http://kelunpuzhonggong.com/upload/20250318141214984.jpg", + "alt": "锌铝镁高铁声噪板" } } }, diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818..9edff1c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.mjs b/next.config.mjs index e8a1147..74334a6 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -4,7 +4,7 @@ const withNextIntl = createNextIntlPlugin(); /** @type {import('next').NextConfig} */ const nextConfig = { - // output: "standalone", + output: "standalone", images: { remotePatterns: [ ...(process.env.R2_PUBLIC_URL diff --git a/public/images/blogs/1.jpg b/public/images/blogs/1.jpg new file mode 100644 index 0000000..22f713b Binary files /dev/null and b/public/images/blogs/1.jpg differ diff --git a/public/images/blogs/2.png b/public/images/blogs/2.png new file mode 100644 index 0000000..5d51b5c Binary files /dev/null and b/public/images/blogs/2.png differ diff --git a/public/images/blogs/3.jpg b/public/images/blogs/3.jpg new file mode 100644 index 0000000..930aa91 Binary files /dev/null and b/public/images/blogs/3.jpg differ diff --git a/public/images/home.png b/public/images/home.png new file mode 100644 index 0000000..086848f Binary files /dev/null and b/public/images/home.png differ