Files
BigStickNewOfficialWebsite/pages/index.vue
T
2026-07-10 18:23:41 +08:00

378 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup>
import { computed } from "vue";
import { advantages } from "~/data/advantages";
import { cases } from "~/data/cases";
import {
clientLogos,
clientStats,
geoLoopModel,
homeSolutionHighlights,
processSteps,
testimonials,
} from "~/data/home";
import { ctaSection } from "~/data/navigation";
const clientRoutes = [
{ label: "模块锚点", href: "#clients", path: "/#clients" },
{ label: "客户案例", href: "/cases", path: "/cases" },
{ label: "核心优势", href: "/advantages", path: "/advantages" },
];
const modelRoutes = [
{ label: "模块锚点", href: "#model", path: "/#model" },
{ label: "服务总览", href: "/services", path: "/services" },
{ label: "咨询入口", href: "#contact", path: "/#contact" },
];
const advantageRoutes = [
{ label: "模块锚点", href: "#advantages", path: "/#advantages" },
{ label: "核心优势页", href: "/advantages", path: "/advantages" },
{ label: "服务总览", href: "/services", path: "/services" },
];
const caseRoutes = [
{ label: "模块锚点", href: "#cases", path: "/#cases" },
{ label: "案例总览", href: "/cases", path: "/cases" },
];
const solutionRoutes = [
{ label: "模块锚点", href: "#solutions", path: "/#solutions" },
{ label: "方案总览", href: "/solutions", path: "/solutions" },
];
const processRoutes = [
{ label: "模块锚点", href: "#process", path: "/#process" },
{ label: "服务总览", href: "/services", path: "/services" },
{ label: "咨询入口", href: "#contact", path: "/#contact" },
];
const testimonialRoutes = [
{ label: "模块锚点", href: "#testimonials", path: "/#testimonials" },
{ label: "客户案例", href: "/cases", path: "/cases" },
{ label: "咨询入口", href: "#contact", path: "/#contact" },
];
const featuredCases = computed(() => cases.filter((item) => item.featured).slice(0, 4));
useHead({
title: "大马棒·云途全域 GEO | AI 时代品牌全域增长服务",
meta: [
{
name: "description",
content:
"大马棒·云途全域 GEO,帮助品牌在 AI 时代建立曝光、信任、线索与转化闭环,打造长期可复用的增长资产。",
},
],
});
</script>
<template>
<WebsiteShell>
<DambangHeroSection section-id="hero" />
<section id="clients" class="bg-white py-16 md:py-20">
<div class="container-gm">
<div class="flex flex-col gap-5 md:flex-row md:items-end md:justify-between" data-reveal>
<div class="max-w-3xl">
<p class="text-sm uppercase tracking-[0.3em] text-[#999]">Proof</p>
<h2 class="section-title mt-4">已服务 300+ 全类型经营主体覆盖 12+ 主流行业</h2>
<p class="mt-4 text-base leading-8 text-[#666]">
用规模化服务经验可量化数据结果和多行业覆盖先建立品牌可信度
</p>
</div>
<SectionRouteLinks :routes="clientRoutes" />
</div>
<div class="mt-10 grid gap-4 sm:grid-cols-2 lg:grid-cols-4" data-stagger>
<AnimatedStat
v-for="metric in clientStats"
:key="metric.label"
:label="metric.label"
:value="metric.value"
:suffix="metric.suffix"
data-stagger-item
/>
</div>
<div class="mt-10">
<p class="mb-4 text-xs uppercase tracking-[0.28em] text-[#999]">Covered Industries</p>
<div class="grid grid-cols-2 gap-3 md:grid-cols-4 xl:grid-cols-6" data-stagger>
<div
v-for="logo in clientLogos"
:key="logo"
class="flex h-12 items-center justify-center rounded border border-gm-border bg-gm-light text-sm text-[#666]"
data-stagger-item
>
{{ logo }}
</div>
</div>
</div>
</div>
</section>
<section id="model" class="bg-[#f4f4f4] py-16 md:py-20">
<div class="container-gm">
<div class="grid gap-10 lg:grid-cols-[0.82fr_1.18fr]">
<div data-reveal>
<p class="text-sm uppercase tracking-[0.3em] text-[#999]">GEO Model</p>
<h2 class="section-title mt-4">{{ geoLoopModel.title }}</h2>
<p class="mt-5 text-base leading-8 text-[#666]">{{ geoLoopModel.description }}</p>
<div class="mt-6">
<SectionRouteLinks :routes="modelRoutes" />
</div>
<NuxtLink :to="geoLoopModel.cta.href" class="gm-btn gm-btn-primary mt-8">
{{ geoLoopModel.cta.label }}
</NuxtLink>
</div>
<div class="grid gap-5 md:grid-cols-2" data-stagger data-geo-loop>
<article
v-for="loop in geoLoopModel.loops"
:key="loop.title"
class="rounded-lg border border-gm-border bg-white p-6 shadow-soft"
data-stagger-item
data-hover-card
>
<p class="text-sm font-medium text-gm-green">{{ loop.title }}</p>
<p class="mt-3 text-[32px] font-semibold leading-none text-[#262626]">{{ loop.value }}</p>
<p class="mt-4 text-sm leading-7 text-[#666]">{{ loop.description }}</p>
<div class="mt-6 space-y-3">
<div
v-for="node in loop.nodes"
:key="node"
class="flex items-center gap-3 rounded border border-gm-border bg-white px-4 py-3 text-sm text-[#555]"
data-geo-node
>
<span class="size-2 shrink-0 rounded-full bg-gm-green" />
<span>{{ node }}</span>
</div>
</div>
</article>
</div>
</div>
</div>
</section>
<section id="advantages" class="bg-white py-16 md:py-20">
<div class="container-gm">
<div class="flex flex-col gap-5 md:flex-row md:items-end md:justify-between" data-reveal>
<div class="max-w-3xl">
<p class="text-sm uppercase tracking-[0.3em] text-[#999]">Advantages</p>
<h2 class="section-title mt-4">四大核心优势</h2>
<p class="mt-4 text-base leading-8 text-[#666]">
从真人内容生产媒体矩阵到增长闭环与行业定制能力帮助用户快速理解大马棒的差异化竞争力
</p>
</div>
<div class="flex flex-col items-start gap-3 md:items-end">
<SectionRouteLinks :routes="advantageRoutes" />
<NuxtLink to="/advantages" class="text-sm font-medium text-gm-green">
查看核心优势
</NuxtLink>
</div>
</div>
<div class="mt-10 grid gap-5 md:grid-cols-2 xl:grid-cols-4" data-stagger>
<article
v-for="item in advantages"
:key="item.slug"
class="rounded-lg border border-gm-border bg-white p-6 shadow-sm"
data-stagger-item
data-hover-card
>
<p class="text-[28px] font-semibold leading-none text-gm-green">{{ item.metric }}</p>
<h3 class="mt-5 text-[20px] font-semibold text-[#262626]">{{ item.title }}</h3>
<p class="mt-3 text-sm font-medium leading-7 text-[#333]">{{ item.point }}</p>
<p class="mt-3 text-sm leading-7 text-[#666]">{{ item.value }}</p>
</article>
</div>
</div>
</section>
<section id="cases" class="bg-[#f7f8f7] py-20">
<div class="container-gm">
<div class="flex flex-col gap-6 md:flex-row md:items-end md:justify-between" data-reveal>
<div class="max-w-3xl">
<p class="text-sm uppercase tracking-[0.3em] text-[#9a9a9a]">Cases</p>
<h2 class="section-title mt-4">真实落地成果见证增长实效</h2>
</div>
<div class="flex flex-col items-start gap-3 md:items-end">
<SectionRouteLinks :routes="caseRoutes" />
<NuxtLink
to="/cases"
class="inline-flex items-center gap-2 text-sm font-medium text-gm-green"
>
查看全部案例 <span aria-hidden="true"></span>
</NuxtLink>
</div>
</div>
<div class="mt-10 grid gap-6 md:grid-cols-2 xl:grid-cols-3" data-stagger>
<NuxtLink
v-for="item in featuredCases"
:key="item.title"
:to="item.path"
class="overflow-hidden rounded-lg border border-gm-border bg-white shadow-sm transition hover:shadow-hover"
data-stagger-item
data-hover-card
>
<div class="h-56 overflow-hidden bg-gm-light">
<img
:src="item.image"
:alt="item.title"
class="h-full w-full object-cover transition duration-500 hover:scale-105"
loading="lazy"
/>
</div>
<div class="p-6">
<p class="text-xs font-medium text-gm-green">{{ item.category }}</p>
<h3 class="mt-3 text-xl font-semibold leading-7 text-[#262626]">
{{ item.title }}
</h3>
<p class="mt-3 text-sm leading-7 text-[#777]">{{ item.summary }}</p>
<div class="mt-5 flex flex-wrap gap-2">
<span
v-for="tag in item.tags"
:key="tag"
class="rounded-full bg-gm-light px-3 py-1 text-xs text-[#666]"
>
{{ tag }}
</span>
</div>
<div class="mt-6 grid gap-2">
<p
v-for="metric in item.metrics"
:key="metric"
class="text-sm font-medium text-[#262626]"
>
{{ metric }}
</p>
</div>
<p class="mt-5 font-mono text-[11px] text-[#999]">案例路径 {{ item.path }}</p>
</div>
</NuxtLink>
</div>
</div>
</section>
<section id="solutions" class="bg-[#f4f4f4] py-16 md:py-20">
<div class="container-gm">
<div class="flex flex-col gap-5 md:flex-row md:items-end md:justify-between" data-reveal>
<div class="max-w-3xl">
<p class="text-sm uppercase tracking-[0.3em] text-[#999]">Solutions</p>
<h2 class="section-title mt-4">深入 12+ 行业定制专属 GEO 增长方案</h2>
<p class="mt-4 text-base leading-8 text-[#666]">
让不同行业客户快速找到与自身相关的增长方案提升业务匹配度感知
</p>
</div>
<div class="flex flex-col items-start gap-3 md:items-end">
<SectionRouteLinks :routes="solutionRoutes" />
<NuxtLink to="/solutions" class="text-sm font-medium text-gm-green">
获取我的行业专属方案
</NuxtLink>
</div>
</div>
<div class="mt-10 grid gap-5 md:grid-cols-2 xl:grid-cols-3" data-stagger>
<NuxtLink
v-for="item in homeSolutionHighlights"
:key="item.slug"
:to="item.href"
class="group overflow-hidden rounded-lg border border-gm-border bg-white shadow-sm"
data-stagger-item
data-hover-card
>
<div class="h-44 overflow-hidden bg-gm-light">
<img
:src="item.image"
:alt="item.title"
class="h-full w-full object-cover transition duration-500 group-hover:scale-105"
loading="lazy"
/>
</div>
<div class="p-6">
<h3 class="text-[20px] font-semibold text-[#262626]">{{ item.title }}</h3>
<p class="mt-3 text-sm leading-7 text-[#666]">{{ item.summary }}</p>
<div class="mt-5 flex flex-wrap gap-2">
<span
v-for="tag in item.tags"
:key="tag"
class="rounded bg-gm-light px-3 py-1 text-xs text-[#666]"
>
{{ tag }}
</span>
</div>
<p class="mt-5 font-mono text-[11px] text-[#999]">方案路径 {{ item.path }}</p>
</div>
</NuxtLink>
</div>
</div>
</section>
<section id="process" class="bg-white py-16 md:py-20">
<div class="container-gm">
<div class="flex flex-col gap-5 md:flex-row md:items-end md:justify-between" data-reveal>
<div class="max-w-3xl">
<p class="text-sm uppercase tracking-[0.3em] text-[#999]">Process</p>
<h2 class="section-title mt-4">5 步标准化交付流程透明可控效果可追踪</h2>
<p class="mt-4 text-base leading-8 text-[#666]">
标准化流程加透明化交付让服务可控结果清晰可见
</p>
</div>
<SectionRouteLinks :routes="processRoutes" />
</div>
<div class="relative mt-10 grid gap-4 md:grid-cols-5" data-stagger data-process-line>
<div class="absolute left-0 top-8 hidden h-px w-full bg-gm-border md:block" />
<div class="absolute left-0 top-8 hidden h-px w-0 bg-gm-green md:block" data-flow-line />
<article
v-for="step in processSteps"
:key="step.step"
class="relative rounded-lg border border-gm-border bg-white p-5 shadow-sm"
data-stagger-item
>
<p class="text-[24px] font-semibold text-gm-green">{{ step.step }}</p>
<h3 class="mt-4 text-[18px] font-semibold text-[#262626]">{{ step.title }}</h3>
<p class="mt-3 text-sm leading-7 text-[#666]">{{ step.text }}</p>
</article>
</div>
</div>
</section>
<section id="testimonials" class="bg-white py-20">
<div class="container-gm">
<div class="flex flex-col gap-5 md:flex-row md:items-end md:justify-between" data-reveal>
<div class="max-w-3xl">
<p class="text-sm uppercase tracking-[0.3em] text-[#a1a1a1]">Voice</p>
<h2 class="section-title mt-4">客户真实评价见证服务品质</h2>
<p class="mt-3 text-[#777]">
从真实客户视角补充信任背书进一步强化团队专业度和落地能力
</p>
</div>
<SectionRouteLinks :routes="testimonialRoutes" />
</div>
<div class="mt-10 grid gap-5 md:grid-cols-3" data-stagger>
<article
v-for="item in testimonials"
:key="item.id"
class="rounded-lg border border-gm-border bg-[#f7f8f7] p-6 shadow-sm"
data-stagger-item
data-hover-card
>
<div class="flex size-14 items-center justify-center rounded-lg bg-white text-lg font-semibold text-gm-green">
{{ item.name.slice(0, 1) }}
</div>
<blockquote class="mt-5 text-base leading-8 text-[#555]">
{{ item.quote }}
</blockquote>
<p class="mt-6 text-base font-semibold text-[#262626]">{{ item.name }}</p>
<p class="text-sm text-[#9b9b9b]">{{ item.title }}</p>
</article>
</div>
</div>
</section>
<CtaSection :cta="ctaSection" section-id="consult" />
</WebsiteShell>
</template>