Files
2026-07-10 18:23:41 +08:00

254 lines
11 KiB
Vue
Raw Permalink 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 { cases } from "~/data/cases";
import { solutionOverview, solutions } from "~/data/solutions";
const heroRoutes = [
{ label: "页面路径", href: "/solutions", path: "/solutions" },
{ label: "方案详情", href: "/solutions/enterprise-service", path: "/solutions/enterprise-service" },
{ label: "联系页", href: "/contact", path: "/contact" },
];
const entryRoutes = [
{ label: "模块锚点", href: "#solution-entry", path: "/solutions#solution-entry" },
{ label: "首页入口", href: "/", path: "/" },
{ label: "咨询入口", href: "#contact", path: "/solutions#contact" },
];
const mappingRoutes = [
{ label: "模块锚点", href: "#solution-mapping", path: "/solutions#solution-mapping" },
{ label: "企业服务方案", href: "/solutions/enterprise-service", path: "/solutions/enterprise-service" },
{ label: "本地生活方案", href: "/solutions/local-life", path: "/solutions/local-life" },
];
const caseRoutes = [
{ label: "模块锚点", href: "#solution-cases", path: "/solutions#solution-cases" },
{ label: "案例总览", href: "/cases", path: "/cases" },
{ label: "案例详情", href: "/cases/local-life-search", path: "/cases/local-life-search" },
];
const moreRoutes = [
{ label: "更多行业", href: "/solutions/other-key-industries", path: "/solutions/other-key-industries" },
{ label: "快消方案", href: "/solutions/fmcg", path: "/solutions/fmcg" },
{ label: "美妆方案", href: "/solutions/beauty", path: "/solutions/beauty" },
];
const featuredCases = computed(() => cases.filter((item) => item.featured).slice(0, 4));
useHead({
title: "行业解决方案 - 大马棒·云途全域 GEO",
meta: [
{
name: "description",
content:
"针对企业服务、电商零售、本地生活、职业教育、医疗健康及更多行业,提供专属 GEO 增长方案。",
},
],
});
</script>
<template>
<WebsiteShell>
<section
class="relative overflow-hidden bg-black bg-cover bg-center text-white"
:style="{ backgroundImage: `url(${solutionOverview.hero.image})` }"
>
<div class="absolute inset-0 bg-black/55" />
<div class="absolute inset-x-0 bottom-0 h-24 bg-gradient-to-t from-white to-transparent" />
<div class="container-gm relative z-10 py-24 md:py-32">
<p class="text-sm uppercase tracking-[0.34em] text-white/65" data-hero-reveal>
{{ solutionOverview.hero.eyebrow }}
</p>
<h1 class="mt-5 max-w-4xl text-balance text-[34px] font-semibold leading-tight md:text-[42px]" data-hero-reveal>
{{ solutionOverview.hero.title }}
</h1>
<p class="mt-6 max-w-2xl text-base leading-8 text-white/78 md:text-lg" data-hero-reveal>
{{ solutionOverview.hero.description }}
</p>
<div class="mt-8" data-hero-reveal>
<SectionRouteLinks :routes="heroRoutes" light />
</div>
</div>
</section>
<section id="solution-entry" 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">{{ solutionOverview.entry.title }}</h2>
<p class="mt-4 text-base leading-8 text-[#666]">{{ solutionOverview.entry.description }}</p>
</div>
<SectionRouteLinks :routes="entryRoutes" />
</div>
<div class="mt-10 grid gap-5 md:grid-cols-2 xl:grid-cols-3" data-stagger>
<NuxtLink
v-for="item in solutions"
: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="solution-mapping" 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]">{{ solutionOverview.mapping.eyebrow }}</p>
<h2 class="section-title mt-4">{{ solutionOverview.mapping.title }}</h2>
<p class="mt-4 text-base leading-8 text-[#666]">{{ solutionOverview.mapping.description }}</p>
</div>
<SectionRouteLinks :routes="mappingRoutes" />
</div>
<div class="mt-10 grid gap-5 md:grid-cols-2" data-stagger>
<article
v-for="item in solutionOverview.mapping.items"
:key="item.industry"
class="rounded-lg border border-gm-border bg-[#f7f8f7] p-6"
data-stagger-item
>
<div class="flex items-start justify-between gap-4">
<div>
<p class="text-xs uppercase tracking-[0.28em] text-gm-green">Industry</p>
<h3 class="mt-3 text-[22px] font-semibold text-[#262626]">{{ item.industry }}</h3>
</div>
<div class="flex flex-wrap justify-end gap-2">
<span
v-for="tag in item.tags"
:key="tag"
class="rounded-full border border-gm-border bg-white px-3 py-1 text-xs text-[#666]"
>
{{ tag }}
</span>
</div>
</div>
<div class="mt-6 space-y-4 text-sm leading-7">
<div>
<p class="font-medium text-[#262626]">行业痛点</p>
<p class="mt-1 text-[#666]">{{ item.pain }}</p>
</div>
<div>
<p class="font-medium text-[#262626]">对应方案</p>
<p class="mt-1 text-[#666]">{{ item.plan }}</p>
</div>
</div>
<div class="mt-6 flex flex-wrap gap-3">
<NuxtLink
:to="item.solutionHref"
class="inline-flex items-center gap-2 rounded-full border border-gm-green px-4 py-2 text-sm font-medium text-gm-green transition hover:bg-gm-green hover:text-white"
>
查看行业方案
<span aria-hidden="true"></span>
</NuxtLink>
<NuxtLink
:to="item.caseHref"
class="inline-flex items-center gap-2 rounded-full border border-gm-border bg-white px-4 py-2 text-sm text-[#555] transition hover:border-gm-green hover:text-gm-green"
>
查看对应案例
<span aria-hidden="true"></span>
</NuxtLink>
</div>
<div class="mt-5 space-y-2 font-mono text-[11px] text-[#999]">
<p>方案路径 {{ item.solutionPath }}</p>
<p>案例路径 {{ item.casePath }}</p>
</div>
</article>
</div>
</div>
</section>
<section id="solution-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-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="solution-more" class="bg-white py-16 md:py-20">
<div class="container-gm rounded-lg border border-gm-border bg-gm-light p-8 md:p-10" data-reveal>
<h2 class="section-title">{{ solutionOverview.more.title }}</h2>
<p class="mt-4 max-w-3xl text-base leading-8 text-[#666]">{{ solutionOverview.more.description }}</p>
<div class="mt-6">
<SectionRouteLinks :routes="moreRoutes" />
</div>
<NuxtLink to="#contact" class="gm-btn gm-btn-primary mt-8">获取我的行业专属方案</NuxtLink>
</div>
</section>
<CtaSection />
</WebsiteShell>
</template>