2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
|
|
import{c as H,o as z,a as j,r as k,d as x,b,e,n as O,t as h,f as S,g as v,_ as E,F as B,h as M,i as P,j as V,u as w,k as C,l as N,m as T,p}from"./index-eVF4AHSu.js";import{m as U,f as D}from"./case-C97jSxNP.js";import{m as K,f as Q}from"./product-xndN8QNU.js";import{r as I}from"./media-BgGGvhcR.js";import"./pagination-BgSlm-mj.js";const q=H();function G(t){const s=t.imagePc??t.image??t.coverUrl??t.cover??t.coverImage;if(s==null)return null;const o=String(s).trim();return o.length?o:null}function J(t){return{id:Number(t.id??0),imagePc:G(t),titleZh:t.titleZh===void 0?null:String(t.titleZh),titleEn:t.titleEn===void 0?null:String(t.titleEn),subtitleZh:t.subtitleZh===void 0?null:String(t.subtitleZh),subtitleEn:t.subtitleEn===void 0?null:String(t.subtitleEn),btnTextZh:t.btnTextZh===void 0?null:String(t.btnTextZh),btnTextEn:t.btnTextEn===void 0?null:String(t.btnTextEn),btnLink:t.btnLink===void 0?null:String(t.btnLink)}}function W(t){if(!t||typeof t!="object")return;const s={};for(const[o,i]of Object.entries(t))typeof i=="string"?s[o]=i:typeof i=="number"||typeof i=="boolean"?s[o]=String(i):s[o]=void 0;return Object.keys(s).length?s:void 0}function X(t){const s=t.metric??t.value??t.titleMetric??t.number??t.count??"",o=t.title??t.label??t.desc??t.subtitle??"",i=typeof s=="string"?s.trim():String(s).trim(),u=typeof o=="string"?o.trim():String(o).trim();return!i||!u?null:{metric:i,title:u}}function A(t){if(!t||typeof t!="object")return null;const s=t,o=s.items??s.cards??s.metrics??s.list;let i;return Array.isArray(o)&&(i=o.map(u=>u&&typeof u=="object"?X(u):null).filter(Boolean),i.length||(i=void 0)),{eyebrowZh:typeof s.eyebrowZh=="string"?s.eyebrowZh:void 0,titleZh:typeof s.titleZh=="string"?s.titleZh:typeof s.title=="string"?s.title:void 0,subtitleZh:typeof s.subtitleZh=="string"?s.subtitleZh:void 0,items:i}}function Y(t){var r;let s=t.banners??t.carousel??t.homeBanners??t.bannerList??[];Array.isArray(s)||(s=[]);const o=s.map(l=>J(l&&typeof l=="object"?l:{})).filter(Boolean),i=t.pageBlocks??t.blocks??t.page_block,u=W(i);let g;const c=t.hotProducts??t.recommendProducts??t.hot_products;Array.isArray(c)&&(g=c.map(l=>K(l&&typeof l=="object"?l:{})));let a;const n=t.recommendCases??t.recommendedCases??t.recommend_cases;Array.isArray(n)&&(a=n.map(l=>U(l&&typeof l=="object"?l:{})));let d=A(t.brandStrength)??A(t.brand_strength);d=d&&((((r=d.items)==null?void 0:r.length)??0)>0||(d.titleZh??d.eyebrowZh??d.subtitleZh))?d:null;const m=typeof t.heroTitleZh=="string"?t.heroTitleZh:void 0,f=typeof t.heroSubtitleZh=="string"?t.heroSubtitleZh:void 0,y=typeof t.heroTitleEn=="string"?t.heroTitleEn:void 0,$=typeof t.heroSubtitleEn=="string"?t.heroSubtitleEn:void 0;return{banners:o.length?o:[{id:1,imagePc:null,titleZh:m??null,subtitleZh:f??null,titleEn:y??null,subtitleEn:$??null,btnLink:"/products"}],pageBlocks:u,hotProducts:g,recommendCases:a,brandStrength:d,heroTitleZh:m,heroSubtitleZh:f,heroTitleEn:y,heroSubtitleEn:$}}const tt={banners:[{id:1,imagePc:null,titleZh:"设计驱动的高端定制交付",titleEn:"Design-led tailoring & delivery",subtitleZh:"客厅 / 餐厨 / 睡眠 / 收纳 / 工装 · 占位文案,可由后台 Banner 接管",subtitleEn:"Living · dining · sleep · storage · commercial — placeholder managed by CMS later.",btnTextZh:"进入产品中心",btnTextEn:"Explore products",btnLink:"/products"},{id:2,imagePc:null,titleZh:"工程与渠道协同的一站式服务",titleEn:"Engineering-ready programs",subtitleZh:"项目打样 · 选型清单 · 安装协同 · (占位说明)",subtitleEn:"Sampling · BOQ coordination · installation support — placeholder narrative.",btnTextZh:"查看案例展示",btnTextEn:"View cases",btnLink:"/cases"}],brandStrength:{eyebrowZh:"交付与质量体系",titleZh:"品牌可信度指标(占位卡片)",subtitleZh:"* 以上为示例字段,请以企业真实统计数据为准。",items:[{metric:"20+",title:"年行业积累(占位)"},{metric:"50000㎡+",title:"现代化制造与仓储(占位)"},{metric:"1000+",title:"项目与私人客户触点(占位)"}]}};async function et(){tr
|