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;