diff --git a/index.html b/index.html index 51f6fcb..9ba88c7 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,17 @@ + + 柚康|患者精细化管理服务平台 +
diff --git a/public/assets/上海长宁区精神卫生中心.png b/public/assets/上海长宁区精神卫生中心.png new file mode 100644 index 0000000..fb1ef4e Binary files /dev/null and b/public/assets/上海长宁区精神卫生中心.png differ diff --git a/public/assets/广附一.gif b/public/assets/国家呼吸中心.gif similarity index 100% rename from public/assets/广附一.gif rename to public/assets/国家呼吸中心.gif diff --git a/public/assets/复旦大学附属中山医院吴淞医院.png b/public/assets/复旦大学附属中山医院吴淞医院.png new file mode 100644 index 0000000..24602c6 Binary files /dev/null and b/public/assets/复旦大学附属中山医院吴淞医院.png differ diff --git a/public/assets/奉化妇保院.jpg b/public/assets/奉化妇保院.jpg new file mode 100644 index 0000000..34e09eb Binary files /dev/null and b/public/assets/奉化妇保院.jpg differ diff --git a/public/assets/广附一.jpg b/public/assets/广附一.jpg new file mode 100644 index 0000000..6de8063 Binary files /dev/null and b/public/assets/广附一.jpg differ diff --git a/public/assets/杭州仁德.png b/public/assets/杭州仁德.png new file mode 100644 index 0000000..83079cb Binary files /dev/null and b/public/assets/杭州仁德.png differ diff --git a/public/assets/杭州嘉誉护理院有限公司.jpg b/public/assets/杭州嘉誉护理院有限公司.jpg new file mode 100644 index 0000000..0a2d9bc Binary files /dev/null and b/public/assets/杭州嘉誉护理院有限公司.jpg differ diff --git a/public/assets/杭州市上城区九堡街道社区卫生服务中心.png b/public/assets/杭州市上城区九堡街道社区卫生服务中心.png new file mode 100644 index 0000000..96b7d15 Binary files /dev/null and b/public/assets/杭州市上城区九堡街道社区卫生服务中心.png differ diff --git a/public/assets/杭州整形医院.jpg b/public/assets/杭州整形医院.jpg new file mode 100644 index 0000000..778b105 Binary files /dev/null and b/public/assets/杭州整形医院.jpg differ diff --git a/public/assets/杭州钱塘新区和禾康复医院.png b/public/assets/杭州钱塘新区和禾康复医院.png new file mode 100644 index 0000000..0fd6876 Binary files /dev/null and b/public/assets/杭州钱塘新区和禾康复医院.png differ diff --git a/public/assets/浦江妇幼保健医院.png b/public/assets/浦江妇幼保健医院.png new file mode 100644 index 0000000..a1b439a Binary files /dev/null and b/public/assets/浦江妇幼保健医院.png differ diff --git a/public/assets/磐安县妇幼保健院.jpg b/public/assets/磐安县妇幼保健院.jpg new file mode 100644 index 0000000..bd77fd7 Binary files /dev/null and b/public/assets/磐安县妇幼保健院.jpg differ diff --git a/public/assets/绍兴市震元堂中医院.jpg b/public/assets/绍兴市震元堂中医院.jpg new file mode 100644 index 0000000..58da62f Binary files /dev/null and b/public/assets/绍兴市震元堂中医院.jpg differ diff --git a/public/assets/衡阳县中医医院.png b/public/assets/衡阳县中医医院.png new file mode 100644 index 0000000..2c1fec2 Binary files /dev/null and b/public/assets/衡阳县中医医院.png differ diff --git a/public/assets/邹平市妇保院.jpg b/public/assets/邹平市妇保院.jpg new file mode 100644 index 0000000..666a7e1 Binary files /dev/null and b/public/assets/邹平市妇保院.jpg differ diff --git a/src/components/CaseSection.vue b/src/components/CaseSection.vue index 5476ae9..df9f052 100644 --- a/src/components/CaseSection.vue +++ b/src/components/CaseSection.vue @@ -1,6 +1,7 @@ + + diff --git a/src/data/homepage.js b/src/data/homepage.js index 3e79f0d..918b579 100644 --- a/src/data/homepage.js +++ b/src/data/homepage.js @@ -59,12 +59,27 @@ export const solutions = [ export const caseCategories = ['国家医学中心', '公立医院', '妇幼保健客户', '医疗集团客户'] export const cases = [ - { short: '骨', logo: '/assets/上海六院.png', logoFit: 'round', name: '国家骨科医学中心\n上海市第六人民医院', tone: 'blue', category: '国家医学中心' }, - { short: '呼', logo: '/assets/广附一.gif', logoFit: 'wide', name: '国家呼吸医学中心\n广州医科大学附属第一医院', tone: 'orange', category: '国家医学中心' }, - { short: '广', logo: '/assets/广医口腔logo.png', logoFit: 'round', name: '广医口腔', tone: 'blue', category: '公立医院' }, - { short: '十', logo: '/assets/圣德logo.png', name: '圣德', tone: 'green', category: '医疗集团客户' }, - { short: '中', logo: '/assets/中信医疗logo.jpg', logoFit: 'wide', name: '中信医疗', tone: 'red', category: '医疗集团客户' }, - { short: 'Z', logo: '/assets/震元.png', logoFit: 'wide', name: '浙江震元', tone: 'cyan', category: '医疗集团客户' }, - { short: '合', logo: '', name: '合禾', tone: 'green', category: '医疗集团客户' }, - { short: '丹', logo: '', name: '中丹红互联网医院', tone: 'red', category: '医疗集团客户' }, + { logo: '/assets/上海六院.png', logoFit: 'round', name: '国家骨科医学中心\n上海市第六人民医院', category: '国家医学中心' }, + { logo: '/assets/国家呼吸中心.gif', logoFit: 'wide', name: '国家呼吸医学中心\n广州医科大学附属第一医院', category: '国家医学中心' }, +{ logo: '/assets/广附一.jpg', logoFit: 'round', name: '广州医科大学附属第一医院', category: '公立医院' }, +{ logo: '/assets/上海六院.png', logoFit: 'round', name: '上海市第六人民医院', category: '公立医院' }, +{ logo: '/assets/广医口腔logo.png', logoFit: 'round', name: '广州医科大学附属口腔医院', category: '公立医院' }, +{ logo: '/assets/复旦大学附属中山医院吴淞医院.png', logoFit: 'round', name: '复旦大学附属中山医院吴淞医院', category: '公立医院' }, +{ logo: '/assets/衡阳县中医医院.png', logoFit: 'round', name: '衡阳县中医医院', category: '公立医院' }, +{ logo: '/assets/上海长宁区精神卫生中心.png', logoFit: 'round', name: '上海长宁区精神卫生中心', category: '公立医院' }, +{ logo: '/assets/杭州整形医院.jpg', logoFit: 'round', name: '杭州整形医院', category: '公立医院' }, +{ logo: '/assets/绍兴市震元堂中医院.jpg', logoFit: 'round', name: '绍兴市震元堂中医院', category: '公立医院' }, +{ logo: '/assets/杭州嘉誉护理院有限公司.jpg', logoFit: 'round', name: '杭州嘉誉护理院', category: '公立医院' }, +{ logo: '/assets/杭州钱塘新区和禾康复医院.png', logoFit: 'wide', name: '杭州钱塘新区和禾康复医院', category: '公立医院' }, +{ logo: '/assets/杭州市上城区九堡街道社区卫生服务中心.png', logoFit: 'round', name: '杭州市上城区九堡街道社区卫生服务中心', category: '公立医院' }, + { logo: '/assets/奉化妇保院.jpg', name: '宁波市奉化区妇幼保健院', category: '妇幼保健客户' }, + { logo: '/assets/邹平市妇保院.jpg', logoFit: 'round', name: '邹平市妇幼保健院', category: '妇幼保健客户' }, + { logo: '/assets/浦江妇幼保健医院.png', logoFit: 'round', name: '浦江妇幼保健医院', category: '妇幼保健客户' }, + { logo: '/assets/磐安县妇幼保健院.jpg', logoFit: 'round', name: '磐安县妇幼保健院', category: '妇幼保健客户' }, + { logo: '/assets/杭州仁德.png', name: '杭州仁德妇产医院', category: '公立医院' }, + { logo: '/assets/中信医疗logo.jpg', logoFit: 'wide', name: '中信医疗', category: '医疗集团客户' }, + { logo: '/assets/震元.png', logoFit: 'wide', name: '浙江震元股份有限公司', category: '医疗集团客户' }, + { logo: '/assets/圣德logo.png', logoFit: 'wide', name: '圣德', category: '医疗集团客户' }, + // { logo: '/assets/杭州钱塘新区和禾康复医院.png', logoFit: 'wide', name: '杭州钱塘新区和禾康复医院', category: '医疗集团客户' }, + // { logo: '', name: '中丹红互联网医院', category: '医疗集团客户' }, ] diff --git a/src/main.js b/src/main.js index 6cfbbad..4f84613 100644 --- a/src/main.js +++ b/src/main.js @@ -2,4 +2,19 @@ import { createApp } from 'vue' import App from './App.vue' import './styles/theme.css' +if ('scrollRestoration' in history) { + history.scrollRestoration = 'manual' +} + +if (!window.location.hash) { + const scrollToTop = () => window.scrollTo(0, 0) + + scrollToTop() + requestAnimationFrame(scrollToTop) + window.addEventListener('load', scrollToTop, { once: true }) + window.addEventListener('pageshow', scrollToTop, { once: true }) + window.setTimeout(scrollToTop, 120) + window.setTimeout(scrollToTop, 360) +} + createApp(App).mount('#app') diff --git a/src/styles/theme.css b/src/styles/theme.css index 9b3e1a4..e9e31c2 100644 --- a/src/styles/theme.css +++ b/src/styles/theme.css @@ -339,6 +339,10 @@ button { filter: drop-shadow(0 28px 56px rgba(255, 138, 0, 0.14)); } +.mobile-scroll-cue { + display: none; +} + .float-card { position: absolute; display: grid; @@ -818,10 +822,10 @@ button { margin: auto; display: grid; place-items: center; - border-radius: 13px; - color: #fff; - font-weight: 900; - font-size: 19px; + border-radius: 50%; + color: #7d8795; + background: linear-gradient(135deg, #f3f5f8, #dfe4eb); + box-shadow: inset 0 0 0 1px rgba(126, 136, 150, 0.16); } .case-logo--blue { background: linear-gradient(135deg, #2e6bd4, #153d93); } @@ -1021,7 +1025,10 @@ button { transform: none; } .hero-section { - padding: 32px 0 42px; + padding: 18px 0 22px; + } + .hero-grid { + gap: 0; } .hero-copy { max-width: 100%; @@ -1036,19 +1043,39 @@ button { column-gap: 0; } .hero-badge { - font-size: 18px; - padding: 11px 22px; + font-size: 17px; + margin-top: 12px; + padding: 9px 18px; } .intro-card { - margin-top: 24px; - padding: 18px; + margin-top: 12px; + padding: 14px 16px; } .intro-card p { font-size: 15px; - line-height: 1.9; + line-height: 1.62; } .hero-visual { - min-height: auto; + min-height: 0; + margin-top: -4px; + } + .hero-visual img { + width: min(60vw, 280px); + border-radius: 30px; + filter: drop-shadow(0 18px 34px rgba(255, 138, 0, 0.12)); + } + .mobile-scroll-cue { + display: inline-grid; + place-items: center; + justify-self: center; + width: 44px; + height: 22px; + margin-top: -4px; + opacity: 0.86; + animation: scroll-cue-float 2.8s ease-in-out infinite; + } + .mobile-scroll-cue svg { + display: block; } .float-card { display: none; @@ -1057,6 +1084,10 @@ button { .contact-manager-grid { grid-template-columns: 1fr; } + .contact-manager-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 12px; + } .solution-grid--desktop { display: none; } @@ -1149,10 +1180,25 @@ button { transition: transform 0.26s ease; } .contact-card { - padding: 24px 18px; + padding: 20px 16px; } .manager-card { align-items: center; + padding: 16px 12px; + } + .contact-manager-grid .qr-wrap { + gap: 6px; + } + .contact-manager-grid .qr-image, + .contact-manager-grid .qr-fake { + width: 108px; + height: 108px; + border-width: 5px; + } + .contact-manager-grid .qr-label { + max-width: 116px; + font-size: 12px; + line-height: 1.25; } .footer-inner { flex-direction: column; @@ -1193,24 +1239,34 @@ button { height: 42px; } .page-section { - padding: 44px 0; + padding: 34px 0; } .page-section--compact { - padding-top: 28px; + padding-top: 22px; } .hero-copy h1 { - font-size: 28px; + font-size: 26px; + line-height: 1.22; letter-spacing: -0.05em; } .hero-badge { width: fit-content; max-width: 100%; - font-size: 17px; + font-size: 16px; white-space: normal; } + .hero-visual { + margin-top: -6px; + } + .hero-visual img { + width: min(62vw, 250px); + } + .mobile-scroll-cue { + margin-top: -6px; + } .solution-card { min-height: auto; - padding: 22px 20px; + padding: 18px 18px; } .solution-points { line-height: 1.78; @@ -1221,7 +1277,7 @@ button { } .section-title { gap: 12px; - margin-bottom: 24px; + margin-bottom: 18px; } .title-dots { display: none; @@ -1231,9 +1287,9 @@ button { } .case-card { height: auto; - min-height: 112px; + min-height: 100px; gap: 15px; - padding: 18px; + padding: 14px 16px; animation: case-card-in 0.32s ease both; } .case-logo-slot { @@ -1245,7 +1301,6 @@ button { font-size: 16px; } .manager-card { - grid-template-columns: 1fr; justify-items: center; text-align: center; } @@ -1296,9 +1351,33 @@ button { border-radius: 11px; } .hero-copy h1 { - font-size: 26px; + font-size: 24px; line-height: 1.25; } + .hero-badge { + font-size: 15px; + padding: 8px 14px; + } + .intro-card { + padding: 12px 14px; + } + .intro-card p { + font-size: 14px; + line-height: 1.58; + } + .hero-visual img { + width: min(58vw, 220px); + } +} + +@keyframes scroll-cue-float { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(5px); + } } @keyframes case-card-in { @@ -1314,7 +1393,8 @@ button { @media (prefers-reduced-motion: reduce) { .reveal-on-scroll, - .case-card { + .case-card, + .mobile-scroll-cue { animation: none; opacity: 1; transform: none;