Files
xk-gw/src/views/product/index.vue
2026-07-23 16:15:11 +08:00

327 lines
13 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 { ref } from 'vue'
import { ArrowRight, BadgeCheck, Check, CircleDollarSign, ClipboardCheck, Headphones, MessageCircle, Play, ShieldCheck, Star, Video } from 'lucide-vue-next'
import { caseStudies, faqs, pricingPlans, productFeatures, siteConfig } from '@/site.config'
import AnimatedContent from '@/components/vue-bits/AnimatedContent.vue'
import DecryptedText from '@/components/vue-bits/DecryptedText.vue'
import Magnet from '@/components/vue-bits/Magnet.vue'
const openFaq = ref(0)
const users = [
'医疗集团信息化负责人',
'医共体运营管理者',
'慢病中心与专科门诊',
'互联网医院项目团队'
]
const reviews = [
{
name: '林主任',
role: '县域医共体信息中心',
text: '上线后跨院区协作终于有了统一任务流,基层医生和总院专家都能在同一视图处理患者。'
},
{
name: '周女士',
role: '连锁诊所运营负责人',
text: '随访、复诊和宣教不再分散在不同工具里,护士团队的工作量和服务质量都更可控。'
},
{
name: '赵医生',
role: '慢病中心负责人',
text: '风险预警和患者画像帮助我们更早发现异常,医生不再只靠经验筛选重点患者。'
}
]
</script>
<template>
<main class="product-page">
<section class="product-hero section-pad">
<div class="mx-auto grid max-w-7xl items-center gap-12 px-5 pt-24 md:grid-cols-[0.95fr_1.05fr] md:px-8">
<AnimatedContent :distance="64" :duration="0.95" class-name="product-hero-copy">
<div class="eyebrow">
<BadgeCheck :size="16" aria-hidden="true" />
企业级医疗 SaaS 产品
</div>
<h1 class="product-hero-title">
<span>{{ siteConfig.brand.name }}</span>
<span>云协同平台</span>
</h1>
<p class="product-hero-copytext">
<DecryptedText
text="一套连接患者、医生、机构和运营管理的智慧医疗工作台。"
animate-on="view"
reveal-direction="center"
:speed="32"
:max-iterations="10"
encrypted-class-name="decrypted-ghost"
class-name="decrypted-final"
/>
<span> 让医疗组织拥有更稳定更高效更合规的数字化服务能力</span>
</p>
<div class="mt-8 flex flex-col gap-3 sm:flex-row">
<Magnet :padding="72" :magnet-strength="5.5">
<a href="#contact" class="btn-primary">
免费试用
<ArrowRight :size="18" aria-hidden="true" />
</a>
</Magnet>
<Magnet :padding="72" :magnet-strength="5.5">
<a href="#demo" class="btn-secondary">查看演示视频</a>
</Magnet>
</div>
</AnimatedContent>
<AnimatedContent :distance="72" direction="horizontal" :reverse="true" :duration="0.95" class-name="product-snapshot-shell">
<div class="product-snapshot">
<div class="snapshot-header">
<span>萧康云医工作台</span>
<strong>实时运行</strong>
</div>
<div class="snapshot-main">
<aside>
<span v-for="item in ['患者画像', '协同任务', '风险预警', '运营分析']" :key="item">{{ item }}</span>
</aside>
<div class="snapshot-content">
<div class="snapshot-alert">
<ShieldCheck :size="20" aria-hidden="true" />
<span>慢病高风险患者已自动分派给责任医生</span>
</div>
<div class="snapshot-cards">
<div>
<small>待处理随访</small>
<strong>246</strong>
</div>
<div>
<small>会诊申请</small>
<strong>38</strong>
</div>
<div>
<small>质控通过率</small>
<strong>97.8%</strong>
</div>
</div>
<div class="snapshot-bars" aria-hidden="true">
<span style="width: 76%"></span>
<span style="width: 92%"></span>
<span style="width: 58%"></span>
</div>
</div>
</div>
</div>
</AnimatedContent>
</div>
</section>
<section id="features" class="section-pad pt-8">
<div class="mx-auto max-w-7xl px-5 md:px-8">
<AnimatedContent :distance="48" :duration="0.9" class-name="section-heading">
<span>功能说明</span>
<h2>从诊疗协同到经营分析覆盖医疗服务闭环</h2>
</AnimatedContent>
<div class="mt-10 grid gap-5 md:grid-cols-2">
<AnimatedContent v-for="(feature, index) in productFeatures" :key="feature.title" :delay="index * 0.08" :distance="52" class-name="feature-reveal">
<article class="soft-card feature-row">
<ClipboardCheck :size="26" aria-hidden="true" />
<div>
<h3>{{ feature.title }}</h3>
<p>{{ feature.body }}</p>
</div>
</article>
</AnimatedContent>
</div>
<AnimatedContent class-name="target-users mt-8" :distance="38" :duration="0.75">
<span>目标用户</span>
<div>
<span v-for="user in users" :key="user">{{ user }}</span>
</div>
</AnimatedContent>
</div>
</section>
<section id="demo" class="section-band">
<div class="mx-auto grid max-w-7xl items-center gap-10 px-5 md:grid-cols-[1.08fr_0.92fr] md:px-8">
<AnimatedContent :distance="62" :duration="1" class-name="demo-frame-shell">
<div class="demo-frame">
<video
class="demo-video"
controls
:poster="siteConfig.hero.video.poster"
>
<source :src="siteConfig.hero.video.src" type="video/mp4">
</video>
<div class="demo-play" aria-hidden="true">
<Play :size="28" fill="currentColor" />
</div>
</div>
</AnimatedContent>
<AnimatedContent :distance="56" direction="horizontal" :reverse="true" :duration="0.95" class-name="demo-copy-shell">
<div>
<div class="section-heading align-left">
<span>演示视频</span>
<h2> 90 秒看清医生护士和管理者如何协同</h2>
</div>
<p class="mt-5 text-lg leading-8 text-muted">
演示覆盖患者建档风险预警复诊任务随访触达和运营看板视频源可在配置文件中替换为企业真实素材
</p>
<div class="mt-6 grid gap-3">
<div class="check-line">
<Video :size="18" aria-hidden="true" />
支持产品界面录屏品牌宣传片或客户案例视频
</div>
<div class="check-line">
<Check :size="18" aria-hidden="true" />
首页同样支持动效背景与视频背景两种配置
</div>
</div>
</div>
</AnimatedContent>
</div>
</section>
<section class="section-pad">
<div class="mx-auto max-w-7xl px-5 md:px-8">
<AnimatedContent :distance="48" :duration="0.9" class-name="section-heading">
<span>客户案例</span>
<h2>已经在多机构协同慢病管理和互联网医院场景中验证</h2>
</AnimatedContent>
<div class="mt-10 grid gap-5 lg:grid-cols-3">
<AnimatedContent v-for="(item, index) in caseStudies" :key="item.client" :delay="index * 0.08" :distance="52" class-name="case-reveal">
<article class="case-card">
<span>{{ item.client }}</span>
<h3>{{ item.result }}</h3>
<p>{{ item.quote }}</p>
</article>
</AnimatedContent>
</div>
</div>
</section>
<section id="pricing" class="section-band">
<div class="mx-auto max-w-7xl px-5 md:px-8">
<AnimatedContent :distance="48" :duration="0.9" class-name="section-heading">
<span>定价计划</span>
<h2>按机构规模和部署要求选择服务方案</h2>
</AnimatedContent>
<div class="mt-10 grid gap-5 lg:grid-cols-3">
<AnimatedContent v-for="(plan, index) in pricingPlans" :key="plan.name" :delay="index * 0.08" :distance="52" class-name="pricing-reveal">
<article
class="pricing-card"
:class="{ 'pricing-featured': plan.highlighted }"
>
<div class="pricing-head">
<span>{{ plan.name }}</span>
<CircleDollarSign :size="24" aria-hidden="true" />
</div>
<div class="mt-5">
<strong>{{ plan.price }}</strong>
<small>{{ plan.unit }}</small>
</div>
<p>{{ plan.description }}</p>
<ul>
<li v-for="feature in plan.features" :key="feature">
<Check :size="17" aria-hidden="true" />
{{ feature }}
</li>
</ul>
<a href="#contact" class="pricing-button">{{ plan.highlighted ? '预约方案顾问' : '开始咨询' }}</a>
</article>
</AnimatedContent>
</div>
</div>
</section>
<section class="section-pad">
<div class="mx-auto max-w-7xl px-5 md:px-8">
<AnimatedContent :distance="48" :duration="0.9" class-name="section-heading">
<span>用户评论与社会证明</span>
<h2>来自真实医疗场景的反馈</h2>
</AnimatedContent>
<div class="mt-10 grid gap-5 md:grid-cols-3">
<AnimatedContent v-for="(review, index) in reviews" :key="review.name" :delay="index * 0.08" :distance="52" class-name="review-reveal">
<article class="review-card">
<div class="stars" aria-label="五星评价">
<Star v-for="star in 5" :key="star" :size="16" fill="currentColor" aria-hidden="true" />
</div>
<p>{{ review.text }}</p>
<div>
<strong>{{ review.name }}</strong>
<span>{{ review.role }}</span>
</div>
</article>
</AnimatedContent>
</div>
</div>
</section>
<section id="faq" class="section-band">
<div class="mx-auto grid max-w-7xl gap-10 px-5 md:grid-cols-[0.85fr_1.15fr] md:px-8">
<AnimatedContent :distance="48" :duration="0.9" class-name="section-heading align-left">
<span>FAQ</span>
<h2>常见问题</h2>
</AnimatedContent>
<AnimatedContent class-name="faq-list" :distance="54" direction="horizontal" :reverse="true" :duration="0.9">
<button
v-for="(item, index) in faqs"
:key="item.q"
type="button"
class="faq-item"
:aria-expanded="openFaq === index"
@click="openFaq = openFaq === index ? -1 : index"
>
<span>{{ item.q }}</span>
<p v-if="openFaq === index">{{ item.a }}</p>
</button>
</AnimatedContent>
</div>
</section>
<section id="contact" class="section-pad">
<div class="mx-auto grid max-w-7xl gap-8 px-5 md:grid-cols-[0.9fr_1.1fr] md:px-8">
<AnimatedContent :distance="56" :duration="0.95" class-name="contact-panel">
<Headphones :size="30" aria-hidden="true" />
<h2>联系萧康云医</h2>
<p>留下需求后产品顾问会在 1 个工作日内联系你也可以直接通过电话或邮件咨询</p>
<div class="contact-lines">
<span>{{ siteConfig.contact.phone }}</span>
<span>{{ siteConfig.contact.email }}</span>
<span>{{ siteConfig.contact.address }}</span>
</div>
</AnimatedContent>
<AnimatedContent :distance="56" direction="horizontal" :reverse="true" :duration="0.95" class-name="contact-form-shell">
<form class="contact-form" aria-label="预约演示表单">
<label>
姓名
<input type="text" placeholder="请输入姓名">
</label>
<label>
机构名称
<input type="text" placeholder="医院、集团或诊所名称">
</label>
<label>
联系方式
<input type="tel" placeholder="手机号或邮箱">
</label>
<label>
关注场景
<textarea rows="4" placeholder="例如医共体协同、慢病随访、互联网医院建设"></textarea>
</label>
<button type="button" class="btn-primary justify-center">
提交预约
<MessageCircle :size="18" aria-hidden="true" />
</button>
</form>
</AnimatedContent>
</div>
</section>
</main>
</template>