Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/images/home/cases/cases-new/案例4.webp
113 changes: 102 additions & 11 deletions src/components/home/BrandWall.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,93 @@ import SectionHeader from '@/components/home/SectionHeader';

type BrandWallT = { badge: string; title: string; subtitle: string };

const LOGO_DIR = '/images/home/brands/brands solo';
const logos = [
'image-143.png',
'image-151.png',
'image-153.png',
'image-157.png',
'image-159.png',
'image-169.png',
'image-170.png',
'image-171.png',
'image-172.png',
'image-173.png',
'image-174.png',
'image-175.png',
'image-176.png',
'image-186.png',
'image-187.png',
'image-189.png',
'image-190.png',
'image-192.png',
'image-193.png',
'image-204.png',
'image-209.png',
'image-210.png',
'image-222.png',
'image-223.png',
'image-224.png',
'image-225.png',
'image-226.png',
'image-230.png',
'image-234.png',
'image-236.png',
'image-237.png',
'image-238.png',
'image-239.png',
'image-240.png',
'image-243.png',
'image-245.png',
'wps_doc_18.png',
'wps_doc_21.png',
'wps_doc_26.png',
'wps_doc_75.png',
'wps_doc_76.png',
'wps_doc_78.png',
'wps_doc_80.png',
'wps_doc_81.png',
'wps_doc_82.png',
'wps_doc_83.png',
'wps_doc_88.png',
'wps_doc_92.png'
];

// Shrink these logos (card size unchanged)
const shrinkLogos = new Set([
'image-151.png',
'image-159.png',
'wps_doc_18.png',
'wps_doc_26.png',
'wps_doc_82.png'
]);

// Extra-shrink logos
const extraShrinkLogos = new Set(['wps_doc_92.png']);

// Enlarge these logos (card size unchanged)
const enlargeLogos = new Set([
'wps_doc_75.png',
'image-240.png',
'image-223.png',
'wps_doc_88.png'
]);

function logoHeight(logo: string) {
if (extraShrinkLogos.has(logo)) return 'h-[12px] md:h-[16px] lg:h-[19px]';
if (shrinkLogos.has(logo)) return 'h-[14px] md:h-[18px] lg:h-[22px]';
if (enlargeLogos.has(logo)) return 'h-[26px] md:h-[34px] lg:h-[38px]';
return 'h-[20px] md:h-[26px] lg:h-[30px]';
}

export default function BrandWall({ t }: { t: BrandWallT }) {
return (
<section className="pt-[48px] pb-0 md:pt-[80px] bg-white">
<div className="px-[16px] md:px-[32px]">
<div className="max-w-[min(92vw,1300px)] md:max-w-[min(85vw,1300px)] mx-auto" style={{ marginBottom: 32 }}>
<div
className="max-w-[min(92vw,1300px)] md:max-w-[min(85vw,1300px)] mx-auto"
style={{ marginBottom: 32 }}
>
<SectionHeader badge={t.badge} title={t.title} subtitle={t.subtitle} />
</div>
</div>
Expand All @@ -21,17 +103,26 @@ export default function BrandWall({ t }: { t: BrandWallT }) {
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
transition={{ duration: 0.8, delay: 0.5, ease: [0.21, 0.47, 0.32, 0.98] }}
className="max-w-[min(92vw,1300px)] md:max-w-[min(85vw,1300px)] mx-auto py-6 md:py-20"
className="max-w-[min(92vw,1300px)] md:max-w-[min(85vw,1300px)] mx-auto py-6 md:py-10 lg:py-20"
>
<Image
src="/images/home/brands/brand-wall.png"
alt={t.title}
width={2800}
height={1238}
loading="lazy"
className="w-full select-none object-contain"
draggable={false}
/>
<div className="grid grid-cols-4 sm:grid-cols-5 md:grid-cols-7 lg:grid-cols-8 gap-2 md:gap-2 lg:gap-2">
{logos.map((logo) => (
<div
key={logo}
className="flex items-center justify-center bg-white rounded-md h-[32px] md:h-[40px] lg:h-[48px]"
>
<Image
src={`${LOGO_DIR}/${logo}`}
alt=""
width={160}
height={80}
loading="lazy"
className={`${logoHeight(logo)} w-auto object-contain select-none`}
draggable={false}
/>
</div>
))}
</div>
</motion.div>
</div>
</section>
Expand Down
6 changes: 2 additions & 4 deletions src/components/home/CaseStudies.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,13 @@ const iconByCaseKey: Record<string, MetricIcon[]> = {
cetc: ['zap', 'zap', 'medal'],
cms: ['arrow', 'medal', 'zap'],
snow: ['arrow', 'arrow', 'zap'],
zhaozhao: ['zap', 'medal', 'medal'],
lcfc: ['arrow', 'zap', 'medal']
zhaozhao: ['zap', 'medal', 'medal']
};
const imageByCaseKey: Record<string, string> = {
cetc: assets.cases.cetc,
cms: assets.cases.cms,
snow: assets.cases.snow,
zhaozhao: assets.cases.zhaozhao,
lcfc: assets.cases.lcfc
zhaozhao: assets.cases.zhaozhao
};

function IconDefs() {
Expand Down
9 changes: 4 additions & 5 deletions src/components/home/assets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,10 @@ export const assets = {
finance: `${LOCAL}/solutions/sol4.webp`
},
cases: {
snow: `${LOCAL}/cases/cases-new/案例1.webp`,
zhaozhao: `${LOCAL}/cases/cases-new/案例2.webp`,
lcfc: `${LOCAL}/cases/cases-new/案例3.webp`,
cetc: `${LOCAL}/cases/cases-new/案例4.webp`,
cms: `${LOCAL}/cases/cases-new/案例5.webp`
cetc: `${LOCAL}/cases/cases-new/案例2.webp`,
cms: `${LOCAL}/cases/cases-new/案例3.webp`,
snow: `${LOCAL}/cases/cases-new/案例4.webp`,
zhaozhao: `${LOCAL}/cases/cases-new/案例5.webp`
},
brandWall: `${LOCAL}/brands/brand-wall.png`,
qr: {
Expand Down
18 changes: 0 additions & 18 deletions src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -349,24 +349,6 @@
"label": "Service quality"
}
]
},
{
"key": "lcfc",
"title": "Ditch 10k-row Excel lag; query natural language on demand",
"metrics": [
{
"value": "240+ min",
"label": "Data productivity gain"
},
{
"value": "90%",
"label": "System-lag reduction"
},
{
"value": "3%",
"label": "Error rate reduced to"
}
]
}
]
},
Expand Down
18 changes: 0 additions & 18 deletions src/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -349,24 +349,6 @@
"label": "サービス品質"
}
]
},
{
"key": "lcfc",
"title": "万行Excelの重さから解放、自然言語で問い合わせ",
"metrics": [
{
"value": "240+分",
"label": "データ生産性向上"
},
{
"value": "90%",
"label": "システム遅延を削減"
},
{
"value": "3%",
"label": "エラー率を"
}
]
}
]
},
Expand Down
18 changes: 0 additions & 18 deletions src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -349,24 +349,6 @@
"label": "服务质量"
}
]
},
{
"key": "lcfc",
"title": "告别万行 Excel 卡顿,自然语言即问即查",
"metrics": [
{
"value": "240+ 分钟",
"label": "数据提效"
},
{
"value": "90%",
"label": "系统卡顿降低"
},
{
"value": "3%",
"label": "错误率降低至"
}
]
}
]
},
Expand Down
Loading