- Spring Boot 后端服务 (hss-home-service) - delivery-miniapp 配送小程序 - website 官网 (Nuxt) - docs 架构设计文档 - Docker 容器化部署配置 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 line
11 KiB
JSON
1 line
11 KiB
JSON
{"file":"index-BDL6Z3sD.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAKWA,eAAAC,WAAA,EAAA,OAAM,wGAAA,GAAuG,MAAA,CAAA,2gBAW3GC,MAAA,WAAA,CAAW,mFAGXA,MAAA,eAAA,CAAe;;QAGR,IAAG;AAAA,QACX,OAAM;AAAA,MAAA;yBADR,CAGW,GAAAC,QAAAC,UAAA,aAAA;;;;;8BAFmI,QAE9I;AAAA,YAAA;AAAA;;;;;QACU,IAAG;AAAA,QACX,OAAM;AAAA,MAAA;yBADR,CAGW,GAAAD,QAAAC,UAAA,aAAA;;;;;8BAFsJ,UAEjK;AAAA,YAAA;AAAA;;;;;;;;;;;;;;;;;;ACvBV,UAAM,QAAQ,IAAI;AAAA,MAChB,EAAE,OAAO,QAAQ,OAAO,GAAG,QAAQ,IAAA;AAAA,MACnC,EAAE,OAAO,OAAO,OAAO,GAAG,QAAQ,IAAA;AAAA,MAClC,EAAE,OAAO,SAAS,OAAO,GAAG,QAAQ,IAAA;AAAA,MACpC,EAAE,OAAO,QAAQ,OAAO,GAAG,QAAQ,IAAA;AAAA,IAAI,CACxC;;;QAyCM,IAAG;AAAA,QAAoB,OAAM;AAAA,MAAA;AAEbC,oBAAA,MAAA,QAAL,MAAC;+JAENC,eAAA,EAAE,KAAK,IAAMA,eAAA,EAAE,MAAM,mDAEkBA,eAAA,EAAE,KAAK;;;;;;;;;;;;;;;;;ACrDpD,YAAA,OAAAN,eAAAC,WAAA,EAAA,OAAM,2CAAuC,MAAA,CAAA,CAAA,WAAA;AAC/BI,oBAAAH,MAAA,OAAA,IAAL,MAAC;gKAEoDI,eAAA,EAAE,KAAK,4DACjBA,eAAA,EAAE,KAAK,mDAChBA,eAAA,EAAE,IAAI;;;;;;;;;;;;;;;ACTjD,QAAA,OAAAN,eAAAC,WAAA,EAAA,OAAM,+GAA2G,MAAA,CAAA,CAAA,mBAAA;;IAC1G,IAAG;AAAA,IACX,OAAM;AAAA;qBADR,CAGW,GAAAE,QAAAC,UAAA,aAAA;;;;;0BAFiG,QAE5G;AAAA;;;;;;;;;;;;;;;;;;ACDJ,WAAO,EAAE,OAAO,MAAM,aAAa,kDAAkD;;;;;;;;;;;;;;;;;AAWlDC,oBAAAH,MAAA,UAAA,IAAL,MAAC;;UAAiB,KAAK,EAAE;AAAA,QAAA,sBAAe,CAAC,GAAA,MAAA,OAAA,CAAA;AAAA;;AAkBhD,YAAAK,mBAAA,4BAAA,EAAA,OAAM,WAAO,MAAA,OAAA,CAAA;;AASAF,oBAAAH,MAAA,YAAA,IAAL,MAAC;;UAAmB,KAAK,EAAE;AAAA,QAAA,sBAAe,CAAC,GAAA,MAAA,OAAA,CAAA;AAAA;;AASrD,YAAAK,mBAAA,0BAAA,EAAA,OAAM,WAAO,MAAA,OAAA,CAAA;;AASAF,oBAAAH,MAAA,SAAA,IAAL,MAAC;;UAAgB,KAAK,EAAE;AAAA,QAAA,sBAAe,CAAC,GAAA,MAAA,OAAA,CAAA;AAAA;;AAShD,YAAAK,mBAAA,0BAAA,EAAA,OAAM,WAAO,MAAA,OAAA,CAAA;;AAQd,YAAAA,mBAAA,yBAAA,EAAA,OAAM,WAAO,MAAA,OAAA,CAAA;;AAOb,YAAAA,mBAAA,yBAAA,EAAA,OAAM,WAAO,MAAA,OAAA,CAAA;;AAQb,YAAAA,mBAAA,yBAAA,EAAA,OAAM,UAAM,MAAA,OAAA,CAAA;;;;;;;;;;;;;;","names":["_ssrRenderAttrs","_mergeProps","_unref","_push","_parent","_ssrRenderList","_ssrInterpolate","_ssrRenderComponent"],"sources":["../../../../components/HeroSection.vue","../../../../components/DataDashboard.vue","../../../../components/ValueMetrics.vue","../../../../components/MobileBottomCTA.vue","../../../../pages/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { siteTagline, siteDescription } from '~/data/siteContent'\n</script>\n\n<template>\n <section class=\"relative overflow-hidden bg-gradient-to-br from-primary-900 via-primary-700 to-primary-500 text-white\">\n <div class=\"absolute inset-0 opacity-10\">\n <div class=\"absolute top-10 left-10 w-72 h-72 bg-white rounded-full blur-3xl\" />\n <div class=\"absolute bottom-10 right-10 w-96 h-96 bg-accent rounded-full blur-3xl\" />\n </div>\n <div class=\"section-container relative py-20 lg:py-32\">\n <div class=\"max-w-3xl\">\n <span class=\"inline-block px-3 py-1 rounded-full bg-white/20 text-sm font-medium mb-6 backdrop-blur\">\n 智慧医养 · 居家上门服务 · 长护险管理\n </span>\n <h1 class=\"text-4xl md:text-5xl lg:text-6xl font-bold leading-tight mb-6\">\n {{ siteTagline }}\n </h1>\n <p class=\"text-lg md:text-xl text-blue-100 mb-8 max-w-2xl\">\n {{ siteDescription }}\n </p>\n <div class=\"flex flex-col sm:flex-row gap-4\">\n <NuxtLink to=\"/contact\"\n class=\"px-8 py-4 bg-cta text-white rounded-xl text-lg font-semibold hover:bg-cta-700 transition-colors text-center shadow-lg shadow-cta/25\">\n 预约演示\n </NuxtLink>\n <NuxtLink to=\"/service-loop\"\n class=\"px-8 py-4 bg-white/15 backdrop-blur text-white rounded-xl text-lg font-semibold hover:bg-white/25 transition-colors text-center border border-white/20\">\n 查看服务闭环\n </NuxtLink>\n </div>\n </div>\n <div class=\"mt-12 lg:absolute lg:right-8 lg:top-1/2 lg:-translate-y-1/2 lg:mt-0\">\n <img src=\"https://loremflickr.com/560/400/technology\" alt=\"平台概览示意图(示意素材,待替换)\"\n class=\"rounded-2xl shadow-2xl w-full max-w-lg opacity-90\" width=\"560\" height=\"400\" loading=\"eager\" />\n </div>\n </div>\n </section>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useApi } from '~/composables/useApi'\n\nconst { get } = useApi()\n\nconst stats = ref([\n { label: '今日工单', value: 0, suffix: '单' },\n { label: '进行中', value: 0, suffix: '单' },\n { label: '服务完成率', value: 0, suffix: '%' },\n { label: '异常工单', value: 0, suffix: '单' },\n])\n\nfunction animate(el: { value: number }, target: number, duration = 1200) {\n const start = performance.now()\n function tick(now: number) {\n const p = Math.min((now - start) / duration, 1)\n const rounded = Math.round(target * p * 10) / 10\n if (target - rounded < 1) { el.value = target; return }\n el.value = rounded\n if (p < 1) requestAnimationFrame(tick)\n }\n requestAnimationFrame(tick)\n}\n\nonMounted(async () => {\n try {\n const [d, q] = await Promise.all([\n get<any>('/admin/dashboard').catch(() => ({})),\n get<any>('/analytics/quality').catch(() => ({})),\n ])\n const targets = [\n (d?.todayOrders as number) || 0,\n (d?.inProgress as number) || 0,\n (q?.serviceCompletionRate as number) || 0,\n (d?.exceptions as number) || 0,\n ]\n const obs = new IntersectionObserver((entries) => {\n entries.forEach(e => {\n if (e.isIntersecting) {\n stats.value.forEach((s, i) => { s.value = 0; animate(s, targets[i]) })\n obs.disconnect()\n }\n })\n }, { threshold: 0.3 })\n const el = document.querySelector('#dashboard-section')\n if (el) obs.observe(el)\n } catch (_) {}\n})\n</script>\n\n<template>\n <div id=\"dashboard-section\" class=\"space-y-6\">\n <div class=\"grid grid-cols-2 lg:grid-cols-4 gap-4\">\n <div v-for=\"s in stats\" :key=\"s.label\" class=\"bg-white rounded-2xl p-6 text-center shadow-sm border border-gray-50\">\n <div class=\"text-3xl font-bold font-mono text-primary mb-2\">\n {{ s.value }}{{ s.suffix }}\n </div>\n <div class=\"text-sm text-text-secondary\">{{ s.label }}</div>\n </div>\n </div>\n <img src=\"https://loremflickr.com/960/300/technology\" alt=\"数据看板示意图(示意素材,待替换)\"\n class=\"w-full rounded-xl shadow-sm\" width=\"960\" height=\"300\" loading=\"lazy\" />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { metrics } from '~/data/siteContent'\n</script>\n\n<template>\n <div class=\"grid grid-cols-2 lg:grid-cols-4 gap-6\">\n <div v-for=\"m in metrics\" :key=\"m.label\"\n class=\"bg-white rounded-2xl p-8 text-center shadow-sm border border-gray-100\">\n <div class=\"text-4xl font-bold font-mono text-primary mb-3\">{{ m.value }}</div>\n <div class=\"font-semibold text-text-primary mb-1\">{{ m.label }}</div>\n <div class=\"text-xs text-text-secondary\">{{ m.desc }}</div>\n </div>\n </div>\n</template>\n","<template>\n <div class=\"fixed bottom-0 left-0 right-0 lg:hidden z-40 bg-white border-t border-gray-200 px-4 py-3 safe-area-bottom\">\n <NuxtLink to=\"/contact\"\n class=\"block w-full text-center px-6 py-3 bg-cta text-white rounded-xl font-semibold text-base shadow-lg\">\n 预约演示\n </NuxtLink>\n </div>\n</template>\n\n<style scoped>\n.safe-area-bottom { padding-bottom: max(0.75rem, env(safe-area-inset-bottom)); }\n</style>\n","<script setup lang=\"ts\">\nimport { useSeo } from '~/composables/useSeo'\nimport { painPoints, capabilities, scenarios } from '~/data/siteContent'\n\nuseSeo({ title: '首页', description: '智慧医养居家上门服务闭环管理平台,覆盖申请、评估、方案、派单、执行、监管、验收、结算全流程。' })\n</script>\n\n<template>\n <HeroSection />\n\n <section class=\"py-20 bg-surface\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">居家上门服务,为什么这么难管?</h2>\n <p class=\"section-subtitle\">申请流程乱、评估标准不一、派单靠经验、上门难监管、质量难追溯、结算不规范</p>\n <div class=\"grid md:grid-cols-3 gap-8 mt-12\">\n <PainPointCard v-for=\"p in painPoints\" :key=\"p.title\" v-bind=\"p\" />\n </div>\n </div>\n </section>\n\n <section class=\"py-20 bg-white\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">一套平台,打通居家服务全流程</h2>\n <p class=\"section-subtitle\">从服务申请到结算归档,每个环节都可监管、可追溯、可评价</p>\n <img src=\"https://loremflickr.com/1024/400/technology\" alt=\"平台概览示意图(示意素材,待替换)\"\n class=\"mt-12 rounded-2xl shadow-lg w-full\" width=\"1024\" height=\"400\" loading=\"lazy\" />\n </div>\n </section>\n\n <section class=\"py-20 bg-surface\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">完整服务闭环</h2>\n <p class=\"section-subtitle\">8 个阶段无缝衔接,每个节点都可监管、可追溯</p>\n <ServiceLoopFlow class=\"mt-12\" />\n </div>\n </section>\n\n <section class=\"py-20 bg-white\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">八大核心能力</h2>\n <p class=\"section-subtitle\">覆盖居家上门服务完整业务链路</p>\n <div class=\"grid md:grid-cols-2 lg:grid-cols-4 gap-6 mt-12\">\n <CapabilityCard v-for=\"c in capabilities\" :key=\"c.title\" v-bind=\"c\" />\n </div>\n </div>\n </section>\n\n <section class=\"py-20 bg-surface\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">三端协同,角色分明</h2>\n <p class=\"section-subtitle\">家属端、服务端、管理端各司其职</p>\n <TriEndDisplay class=\"mt-12\" />\n </div>\n </section>\n\n <section class=\"py-20 bg-white\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">覆盖五大应用场景</h2>\n <p class=\"section-subtitle\">适配不同机构类型的业务需求</p>\n <div class=\"grid md:grid-cols-2 lg:grid-cols-3 gap-6 mt-12\">\n <ScenarioCard v-for=\"s in scenarios\" :key=\"s.title\" v-bind=\"s\" />\n </div>\n </div>\n </section>\n\n <section class=\"py-20 bg-surface\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">实时监管,数据驱动</h2>\n <p class=\"section-subtitle\">运营数据一目了然,异常预警即时通知</p>\n <DataDashboard class=\"mt-12\" />\n </div>\n </section>\n\n <section class=\"py-20 bg-white\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">医疗级安全合规</h2>\n <p class=\"section-subtitle\">数据安全与合规体系,满足政企医疗行业标准</p>\n <SecurityGrid class=\"mt-12\" />\n </div>\n </section>\n\n <section class=\"py-20 bg-surface\">\n <div class=\"section-container\">\n <h2 class=\"section-title\">平台建设价值</h2>\n <ValueMetrics class=\"mt-12\" />\n </div>\n </section>\n\n <section class=\"py-20 bg-white\">\n <div class=\"section-container text-center\">\n <h2 class=\"section-title\">获取完整方案</h2>\n <p class=\"section-subtitle\">下载解决方案 PDF、白皮书和产品介绍资料</p>\n <DownloadForm class=\"mt-8\" />\n </div>\n </section>\n\n <CtaSection />\n <MobileBottomCTA />\n</template>\n"],"version":3} |