Files
hms/docs/designs/hms-miniprogram-mockup.html
iven 1265935fa3 chore: 设计规格文档 + 销售数据 + 脚本工具 + 根目录 monorepo 配置
- docs/: 设计规格、讨论记录、销售数据、健康管理文档
- scripts/: 辅助脚本
- package.json + pnpm-lock.yaml: monorepo 根配置
2026-04-28 00:20:37 +08:00

733 lines
72 KiB
HTML
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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HMS 健康管理小程序原型</title>
<style>
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{
--pri:#0891B2;--pri-l:#E0F7FA;--pri-d:#065A73;--pri-surface:#ECFEFF;
--acc:#059669;--acc-l:#D1FAE5;
--bg:#F0FDFA;--card:#FFFFFF;--tx:#134E4A;--tx2:#6B7280;--tx3:#94A3B8;
--bd:#E5E7EB;--bd-l:#F3F4F6;
--dan:#DC2626;--dan-l:#FEE2E2;--wrn:#D97706;--wrn-l:#FEF3C7;
--r:12px;--r-sm:8px;--r-lg:16px;
--sh-sm:0 1px 3px rgba(0,0,0,.04);
--sh:0 2px 8px rgba(0,0,0,.06);
--sh-md:0 4px 16px rgba(0,0,0,.08);
--sh-lg:0 8px 32px rgba(0,0,0,.12);
--ease:cubic-bezier(.4,0,.2,1)
}
body{font-family:'PingFang SC',-apple-system,BlinkMacSystemFont,'Segoe UI','Hiragino Sans GB','Microsoft YaHei',sans-serif;background:#0f172a;display:flex;flex-direction:column;align-items:center;padding:24px;color:var(--tx);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}
/* 模式切换 */
.mode-switch{display:flex;gap:8px;margin-bottom:16px}
.mode-btn{padding:10px 24px;border-radius:24px;border:1.5px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:rgba(255,255,255,.7);cursor:pointer;font-size:13px;font-weight:600;transition:all .25s var(--ease);backdrop-filter:blur(8px);min-height:44px;display:flex;align-items:center}
.mode-btn:hover{background:rgba(255,255,255,.12);color:#fff}
.mode-btn.active{background:var(--pri);border-color:var(--pri);color:#fff;box-shadow:0 2px 12px rgba(8,145,178,.35)}
/* 手机壳 */
.app{width:375px;height:812px;background:var(--bg);border-radius:44px;overflow:hidden;position:relative;box-shadow:0 0 0 8px #1e293b,0 24px 80px rgba(0,0,0,.5);display:flex;flex-direction:column}
/* 页面切换 */
.page{display:none;flex-direction:column;height:100%;opacity:0;transition:opacity .2s var(--ease)}
.page.active{display:flex;opacity:1}
/* 状态栏 */
.status-bar{height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;color:rgba(255,255,255,.9);font-size:13px;font-weight:600;flex-shrink:0}
/* 导航栏 */
.nav-bar{height:48px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:17px;font-weight:600;flex-shrink:0;position:relative;letter-spacing:.3px}
.nav-bar .back{position:absolute;left:14px;cursor:pointer;display:flex;align-items:center;padding:8px;border-radius:50%;transition:background .15s}
.nav-bar .back:active{background:rgba(255,255,255,.15)}
/* 内容区 */
.content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.content::-webkit-scrollbar{display:none}
/* Tab 栏 */
.tab-bar{height:82px;background:var(--card);border-top:1px solid var(--bd-l);display:flex;align-items:flex-start;padding-top:6px;padding-bottom:env(safe-area-inset-bottom,0);flex-shrink:0}
.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:var(--tx3);transition:color .2s var(--ease);padding:6px 0;min-height:44px;justify-content:center}
.tab-item:active{opacity:.7}
.tab-item.active{color:var(--pri)}
.tab-item svg{width:24px;height:24px;stroke-width:1.8}
.tab-item span{font-size:10px;font-weight:500;letter-spacing:.2px}
/* 卡片 */
.card{background:var(--card);border-radius:var(--r);padding:16px;margin:0 16px 12px;box-shadow:var(--sh);border:1px solid rgba(0,0,0,.03);transition:box-shadow .2s}
.card-title{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px;color:var(--tx)}
.card-title svg{flex-shrink:0}
/* 标签 */
.tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:500;letter-spacing:.2px;line-height:1.6}
.tag-g{background:#D1FAE5;color:#065F46}.tag-y{background:#FEF3C7;color:#92400E}
.tag-r{background:#FEE2E2;color:#991B1B}.tag-b{background:#DBEAFE;color:#1E40AF}
.tag-gray{background:#F3F4F6;color:#4B5563}
/* 按钮 */
.btn{border:none;border-radius:var(--r-sm);padding:12px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s var(--ease);min-height:44px;display:inline-flex;align-items:center;justify-content:center;letter-spacing:.3px}
.btn:active{transform:scale(.97)}
.btn-pri{background:var(--pri);color:#fff;box-shadow:0 2px 8px rgba(8,145,178,.25)}
.btn-pri:active{background:var(--pri-d)}
.btn-acc{background:var(--acc);color:#fff;box-shadow:0 2px 8px rgba(5,150,105,.25)}
.btn-out{background:transparent;border:1.5px solid var(--pri);color:var(--pri)}
.btn-out:active{background:var(--pri-l)}
/* 工具类 */
.flex{display:flex}.aic{align-items:center}.jcsb{justify-content:space-between}
.gap6{gap:6px}.gap8{gap:8px}.gap12{gap:12px}.gap16{gap:16px}
/* 分割线 */
.sep{height:1px;background:var(--bd-l);margin:0}
.sep-v{width:1px;background:var(--bd);align-self:stretch}
/* 输入框 */
.form-input{width:100%;padding:10px 14px;border:1.5px solid var(--bd);border-radius:var(--r-sm);font-size:14px;background:var(--card);outline:none;transition:border-color .2s;font-family:inherit;color:var(--tx);min-height:44px}
.form-input:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(8,145,178,.1)}
.form-input::placeholder{color:var(--tx3)}
.form-label{font-size:12px;font-weight:500;color:var(--tx2);display:block;margin-bottom:6px;letter-spacing:.2px}
/* 节标题 */
.section-title{font-size:13px;font-weight:600;color:var(--tx2);margin-bottom:10px;padding:0 16px;letter-spacing:.3px;text-transform:uppercase}
/* 无障碍 */
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
</style>
</head>
<body>
<div class="mode-switch">
<button class="mode-btn active" onclick="switchMode('patient')">患者端</button>
<button class="mode-btn" onclick="switchMode('doctor')">医护端</button>
</div>
<div class="app">
<!-- ==================== 患者端页面 ==================== -->
<!-- P1: 首页 -->
<div id="page-home" class="page active" data-mode="patient">
<div class="status-bar" style="background:var(--pri)">
<span>9:41</span><span style="display:flex;gap:4px"><svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2"><path d="M1 12h2v-2H1zm4-3h2V7H5zm4-3h2V4H9zm4-3h2V1h-2z"/></svg><svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2"><rect x="1" y="4" width="14" height="10" rx="2"/><path d="M4 4V2a4 4 0 018 0"/></svg></span>
</div>
<div class="nav-bar" style="background:var(--pri)">健康管理</div>
<div class="content" style="padding-bottom:80px">
<!-- 问候区 -->
<div style="background:linear-gradient(135deg,var(--pri),var(--pri-d));padding:20px 16px;color:#fff">
<div class="flex aic jcsb">
<div class="flex aic gap12">
<svg width="44" height="44" viewBox="0 0 44 44"><circle cx="22" cy="22" r="22" fill="rgba(255,255,255,.2)"/><circle cx="22" cy="18" r="7" fill="rgba(255,255,255,.5)"/><ellipse cx="22" cy="34" rx="12" ry="8" fill="rgba(255,255,255,.3)"/></svg>
<div><div style="font-size:18px;font-weight:700">早上好,张明</div><div style="font-size:12px;opacity:.8">2026年4月23日 星期四</div></div>
</div>
<svg width="24" height="24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"><path d="M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9"/><circle cx="18" cy="3" r="3" fill="#EF4444" stroke="none"/></svg>
</div>
</div>
<!-- 今日健康 -->
<div class="card" style="margin-top:-20px;position:relative;z-index:1">
<div class="card-title"><svg width="16" height="16" fill="none" stroke="var(--dan)" stroke-width="2"><path d="M20.8 4.6a5.5 5.5 0 00-7.8 0L12 5.7l-1-1.1A5.5 5.5 0 003.2 13.6l1 1.1L12 22l7.8-7.3 1-1.1a5.5 5.5 0 000-7.8z" transform="scale(.65) translate(2,2)"/></svg>今日健康</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px">
<div style="background:linear-gradient(135deg,#FEF2F2,#FEE2E2);padding:14px 12px;border-radius:var(--r-sm);display:flex;flex-direction:column;gap:2px"><div style="font-size:11px;font-weight:500;color:var(--tx2);letter-spacing:.3px">血压</div><div style="font-size:22px;font-weight:700;color:#B91C1C;letter-spacing:-.5px;line-height:1.2">128/82</div><div style="font-size:10px;color:var(--tx3)">mmHg · 偏高</div></div>
<div style="background:linear-gradient(135deg,#FFFBEB,#FEF3C7);padding:14px 12px;border-radius:var(--r-sm);display:flex;flex-direction:column;gap:2px"><div style="font-size:11px;font-weight:500;color:var(--tx2);letter-spacing:.3px">心率</div><div style="font-size:22px;font-weight:700;color:#B45309;letter-spacing:-.5px;line-height:1.2">72</div><div style="font-size:10px;color:var(--tx3)">bpm · 正常</div></div>
<div style="background:linear-gradient(135deg,var(--pri-l),var(--pri-surface));padding:14px 12px;border-radius:var(--r-sm);display:flex;flex-direction:column;gap:2px"><div style="font-size:11px;font-weight:500;color:var(--tx2);letter-spacing:.3px">血糖</div><div style="font-size:22px;font-weight:700;color:#0E7490;letter-spacing:-.5px;line-height:1.2">5.6</div><div style="font-size:10px;color:var(--tx3)">mmol/L · 正常</div></div>
<div style="background:linear-gradient(135deg,var(--acc-l),#ECFDF5);padding:14px 12px;border-radius:var(--r-sm);display:flex;flex-direction:column;gap:2px"><div style="font-size:11px;font-weight:500;color:var(--tx2);letter-spacing:.3px">体重</div><div style="font-size:22px;font-weight:700;color:#047857;letter-spacing:-.5px;line-height:1.2">68.5</div><div style="font-size:10px;color:var(--tx3)">kg · 稳定</div></div>
</div>
</div>
<!-- 快捷入口 -->
<div class="card">
<div class="card-title">快捷服务</div>
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:4px;text-align:center">
<div style="cursor:pointer;padding:4px"><div style="width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#0891B2,#06B6D4);margin:0 auto 8px;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(8,145,178,.3)"><svg width="22" height="22" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"><path d="M12 20V10M6 20V4M18 20v-6"/></svg></div><div style="font-size:12px;font-weight:500;color:var(--tx)">录数据</div></div>
<div style="cursor:pointer;padding:4px"><div style="width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#059669,#10B981);margin:0 auto 8px;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(5,150,105,.3)"><svg width="22" height="22" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg></div><div style="font-size:12px;font-weight:500;color:var(--tx)">预约</div></div>
<div style="cursor:pointer;padding:4px"><div style="width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#7C3AED,#A78BFA);margin:0 auto 8px;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(124,58,237,.25)"><svg width="22" height="22" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/></svg></div><div style="font-size:12px;font-weight:500;color:var(--tx)">报告</div></div>
<div style="cursor:pointer;padding:4px"><div style="width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#D97706,#FBBF24);margin:0 auto 8px;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(217,119,6,.25)"><svg width="22" height="22" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg></div><div style="font-size:12px;font-weight:500;color:var(--tx)">咨询</div></div>
</div>
</div>
<!-- 即将预约 -->
<div class="card">
<div class="card-title"><svg width="16" height="16" fill="none" stroke="var(--pri)" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg>明日值班</div>
<div class="flex aic gap12" style="padding:10px;background:var(--pri-surface);border-radius:var(--r-sm)">
<svg width="44" height="44" viewBox="0 0 44 44"><circle cx="22" cy="22" r="22" fill="var(--pri-l)"/><circle cx="22" cy="17" r="7" fill="var(--pri)"/><ellipse cx="22" cy="32" rx="11" ry="8" fill="var(--pri)" opacity=".4"/></svg>
<div style="flex:1;min-width:0"><div style="font-weight:600;font-size:14px">王建国 主任医师</div><div style="font-size:12px;color:var(--tx2);margin-top:2px">肾内科 · 明天 09:00</div></div>
<span class="tag tag-g">已确认</span>
</div>
</div>
<!-- 待办随访 -->
<div class="card">
<div class="card-title"><svg width="16" height="16" fill="none" stroke="var(--acc)" stroke-width="2"><path d="M9 11l3 3L22 4"/><rect x="3" y="4" width="18" height="18" rx="2" transform="scale(.7) translate(3,3)"/></svg>待办随访</div>
<div class="flex aic jcsb" style="padding:10px 0;border-bottom:1px solid var(--bd-l)">
<div class="flex aic gap8">
<div style="width:22px;height:22px;border:2px solid var(--acc);border-radius:6px;flex-shrink:0"></div>
<div><div style="font-size:14px;font-weight:500">血压监测记录</div><div style="font-size:11px;color:var(--tx3)">今日到期</div></div>
</div>
<span class="tag tag-y">今日</span>
</div>
<div class="flex aic jcsb" style="padding:10px 0">
<div class="flex aic gap8">
<div style="width:22px;height:22px;border:2px solid var(--bd);border-radius:6px;flex-shrink:0"></div>
<div><div style="font-size:14px;font-weight:500">健康问卷调查</div><div style="font-size:11px;color:var(--tx3)">3天后到期</div></div>
</div>
<span class="tag tag-b">3天后</span>
</div>
</div>
</div>
<!-- 患者端Tab -->
<div class="tab-bar" data-mode="patient">
<div class="tab-item active" onclick="showPage('home','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>首页</span></div>
<div class="tab-item" onclick="showPage('data','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V10M6 20V4M18 20v-6"/></svg><span>数据</span></div>
<div class="tab-item" onclick="showPage('appointment','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>预约</span></div>
<div class="tab-item" onclick="showPage('profile','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- P2: 健康数据 -->
<div id="page-data" class="page" data-mode="patient">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">健康数据</div>
<div class="content" style="padding-bottom:80px">
<!-- 指标切换 -->
<div class="flex" style="padding:16px 16px 0;gap:0">
<div style="flex:1;text-align:center;padding:10px;font-size:14px;font-weight:600;color:var(--pri);border-bottom:2.5px solid var(--pri);cursor:pointer">血压</div>
<div style="flex:1;text-align:center;padding:10px;font-size:14px;color:var(--tx3);border-bottom:2.5px solid transparent;cursor:pointer">血糖</div>
<div style="flex:1;text-align:center;padding:10px;font-size:14px;color:var(--tx3);border-bottom:2.5px solid transparent;cursor:pointer">体重</div>
</div>
<!-- SVG趋势图 -->
<div class="card">
<div class="card-title">7日趋势</div>
<svg viewBox="0 0 320 180" style="width:100%;height:auto">
<!-- 网格 -->
<line x1="40" y1="20" x2="310" y2="20" stroke="#E5E7EB" stroke-dasharray="4"/><line x1="40" y1="60" x2="310" y2="60" stroke="#E5E7EB" stroke-dasharray="4"/><line x1="40" y1="100" x2="310" y2="100" stroke="#E5E7EB" stroke-dasharray="4"/><line x1="40" y1="140" x2="310" y2="140" stroke="#E5E7EB" stroke-dasharray="4"/>
<!-- Y轴标签 -->
<text x="35" y="24" font-size="10" fill="#6B7280" text-anchor="end">145</text><text x="35" y="64" font-size="10" fill="#6B7280" text-anchor="end">125</text><text x="35" y="104" font-size="10" fill="#6B7280" text-anchor="end">105</text><text x="35" y="144" font-size="10" fill="#6B7280" text-anchor="end">85</text>
<!-- 正常范围 -->
<rect x="40" y="36" width="270" height="64" fill="#D1FAE5" opacity=".3"/>
<!-- X轴日期 -->
<text x="58" y="170" font-size="10" fill="#6B7280" text-anchor="middle">17日</text><text x="101" y="170" font-size="10" fill="#6B7280" text-anchor="middle">18日</text><text x="144" y="170" font-size="10" fill="#6B7280" text-anchor="middle">19日</text><text x="187" y="170" font-size="10" fill="#6B7280" text-anchor="middle">20日</text><text x="230" y="170" font-size="10" fill="#6B7280" text-anchor="middle">21日</text><text x="273" y="170" font-size="10" fill="#6B7280" text-anchor="middle">22日</text><text x="305" y="170" font-size="10" fill="#6B7280" text-anchor="middle">23日</text>
<!-- 收缩压(红) -->
<polyline points="58,68 101,56 144,72 187,44 230,60 273,48 305,52" fill="none" stroke="#EF4444" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="305" cy="52" r="4" fill="#EF4444"/>
<!-- 舒张压(蓝) -->
<polyline points="58,112 101,104 144,116 187,96 230,108 273,100 305,104" fill="none" stroke="#0891B2" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="305" cy="104" r="4" fill="#0891B2"/>
<!-- 最新值标注 -->
<rect x="268" y="32" width="42" height="16" rx="4" fill="#EF4444"/><text x="289" y="43" font-size="9" fill="#fff" text-anchor="middle">128</text>
<rect x="268" y="86" width="42" height="16" rx="4" fill="#0891B2"/><text x="289" y="97" font-size="9" fill="#fff" text-anchor="middle">82</text>
</svg>
<div class="flex aic gap8" style="margin-top:8px;font-size:11px;color:var(--tx2)"><span style="display:flex;align-items:center;gap:4px"><span style="width:10px;height:3px;background:#EF4444;display:inline-block;border-radius:2px"></span>收缩压</span><span style="display:flex;align-items:center;gap:4px"><span style="width:10px;height:3px;background:var(--pri);display:inline-block;border-radius:2px"></span>舒张压</span><span style="display:flex;align-items:center;gap:4px"><span style="width:10px;height:10px;background:#D1FAE5;display:inline-block;border-radius:2px;opacity:.5"></span>正常范围</span></div>
</div>
<!-- 录入表单 -->
<div class="card">
<div class="card-title">记录数据</div>
<div style="margin-bottom:12px"><label class="form-label">日期</label><input type="date" value="2026-04-23" class="form-input"></div>
<div class="flex gap8">
<div style="flex:1"><label class="form-label">收缩压</label><input type="number" inputmode="numeric" placeholder="120" class="form-input"></div>
<div style="flex:1"><label class="form-label">舒张压</label><input type="number" inputmode="numeric" placeholder="80" class="form-input"></div>
</div>
<div style="margin-top:12px"><label class="form-label">心率</label><input type="number" inputmode="numeric" placeholder="72" class="form-input"></div>
<button class="btn btn-pri" style="width:100%;margin-top:16px">保存记录</button>
</div>
<!-- 历史记录 -->
<div class="card">
<div class="card-title">历史记录</div>
<div style="font-size:13px">
<div class="flex jcsb aic" style="padding:8px 0;border-bottom:1px solid var(--bd)"><div><strong>128/82</strong> mmHg · 72 bpm</div><div style="color:var(--tx2);font-size:11px">今天 08:30</div></div>
<div class="flex jcsb aic" style="padding:8px 0;border-bottom:1px solid var(--bd)"><div><strong>125/78</strong> mmHg · 70 bpm</div><div style="color:var(--tx2);font-size:11px">昨天 07:45</div></div>
<div class="flex jcsb aic" style="padding:8px 0;border-bottom:1px solid var(--bd)"><div><strong>132/85</strong> mmHg · 75 bpm</div><div style="color:var(--tx2);font-size:11px">4/21 08:15</div></div>
<div class="flex jcsb aic" style="padding:8px 0;border-bottom:1px solid var(--bd)"><div><strong>118/76</strong> mmHg · 68 bpm</div><div style="color:var(--tx2);font-size:11px">4/20 07:50</div></div>
<div class="flex jcsb aic" style="padding:8px 0"><div><strong>130/84</strong> mmHg · 74 bpm</div><div style="color:var(--tx2);font-size:11px">4/19 08:00</div></div>
</div>
</div>
</div>
<div class="tab-bar" data-mode="patient">
<div class="tab-item" onclick="showPage('home','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>首页</span></div>
<div class="tab-item active" onclick="showPage('data','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V10M6 20V4M18 20v-6"/></svg><span>数据</span></div>
<div class="tab-item" onclick="showPage('appointment','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>预约</span></div>
<div class="tab-item" onclick="showPage('profile','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- P3: 预约挂号 -->
<div id="page-appointment" class="page" data-mode="patient">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">预约挂号</div>
<div class="content" style="padding-bottom:80px">
<!-- 搜索 -->
<div style="padding:12px 16px"><div style="background:var(--card);border-radius:24px;padding:10px 16px;display:flex;align-items:center;gap:10px;box-shadow:var(--sh);border:1px solid rgba(0,0,0,.04)"><svg width="16" height="16" fill="none" stroke="var(--tx3)" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg><input placeholder="搜索医生/科室" style="border:none;outline:none;font-size:14px;flex:1;background:transparent;color:var(--tx);min-height:24px"></div></div>
<!-- 科室筛选 -->
<div style="padding:0 16px 12px;display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch">
<span style="padding:6px 16px;border-radius:20px;font-size:12px;font-weight:600;background:var(--pri);color:#fff;white-space:nowrap;cursor:pointer">全部</span>
<span style="padding:6px 16px;border-radius:20px;font-size:12px;background:var(--card);color:var(--tx);border:1px solid var(--bd);white-space:nowrap;cursor:pointer">肾内科</span>
<span style="padding:6px 16px;border-radius:20px;font-size:12px;background:var(--card);color:var(--tx);border:1px solid var(--bd);white-space:nowrap;cursor:pointer">心内科</span>
<span style="padding:6px 16px;border-radius:20px;font-size:12px;background:var(--card);color:var(--tx);border:1px solid var(--bd);white-space:nowrap;cursor:pointer">内分泌</span>
<span style="padding:6px 16px;border-radius:20px;font-size:12px;background:var(--card);color:var(--tx);border:1px solid var(--bd);white-space:nowrap;cursor:pointer">全科</span>
</div>
<!-- 医生列表 -->
<div class="card">
<div class="flex gap12">
<svg width="52" height="52" viewBox="0 0 52 52"><circle cx="26" cy="26" r="26" fill="var(--pri-l)"/><circle cx="26" cy="21" r="8" fill="var(--pri)"/><ellipse cx="26" cy="38" rx="13" ry="9" fill="var(--pri)" opacity=".5"/></svg>
<div style="flex:1">
<div class="flex jcsb aic"><div><strong>王建国</strong> <span style="font-size:12px;color:var(--tx2)">主任医师</span></div><button class="btn btn-pri" style="padding:6px 16px;font-size:12px">预约</button></div>
<div style="font-size:12px;color:var(--tx2);margin:4px 0">肾内科</div>
<div class="flex gap8" style="margin:4px 0"><span class="tag tag-b">慢性肾病</span><span class="tag tag-g">透析管理</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:4px">★ 4.9 · 接诊 1,286 人</div>
</div>
</div>
</div>
<div class="card">
<div class="flex gap12">
<svg width="52" height="52" viewBox="0 0 52 52"><circle cx="26" cy="26" r="26" fill="#FEF3C7"/><circle cx="26" cy="21" r="8" fill="#F59E0B"/><ellipse cx="26" cy="38" rx="13" ry="9" fill="#F59E0B" opacity=".5"/></svg>
<div style="flex:1">
<div class="flex jcsb aic"><div><strong>李芳</strong> <span style="font-size:12px;color:var(--tx2)">副主任医师</span></div><button class="btn btn-pri" style="padding:6px 16px;font-size:12px">预约</button></div>
<div style="font-size:12px;color:var(--tx2);margin:4px 0">心内科</div>
<div class="flex gap8" style="margin:4px 0"><span class="tag tag-r">高血压</span><span class="tag tag-b">冠心病</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:4px">★ 4.8 · 接诊 986 人</div>
</div>
</div>
</div>
<div class="card">
<div class="flex gap12">
<svg width="52" height="52" viewBox="0 0 52 52"><circle cx="26" cy="26" r="26" fill="var(--acc-l)"/><circle cx="26" cy="21" r="8" fill="var(--acc)"/><ellipse cx="26" cy="38" rx="13" ry="9" fill="var(--acc)" opacity=".5"/></svg>
<div style="flex:1">
<div class="flex jcsb aic"><div><strong>赵明辉</strong> <span style="font-size:12px;color:var(--tx2)">主治医师</span></div><button class="btn btn-pri" style="padding:6px 16px;font-size:12px">预约</button></div>
<div style="font-size:12px;color:var(--tx2);margin:4px 0">内分泌科</div>
<div class="flex gap8" style="margin:4px 0"><span class="tag tag-y">糖尿病</span><span class="tag tag-g">甲状腺</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:4px">★ 4.7 · 接诊 756 人</div>
</div>
</div>
</div>
<!-- 预约弹窗 -->
<div style="background:var(--card);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:20px 16px;border-top:3px solid var(--pri);margin-top:8px;box-shadow:var(--sh-md)">
<div style="font-weight:600;font-size:15px;margin-bottom:16px;color:var(--tx)">选择预约时间 · 王建国</div>
<div class="flex jcsb" style="margin-bottom:16px">
<div style="text-align:center;padding:10px 8px;border-radius:8px;background:var(--bg);min-width:44px"><div style="font-size:11px;color:var(--tx2)">周四</div><div style="font-size:15px;font-weight:700">24</div><div style="width:6px;height:6px;border-radius:50%;background:var(--acc);margin:4px auto 0"></div></div>
<div style="text-align:center;padding:10px 8px;border-radius:8px;background:var(--pri-l);min-width:44px;border:2px solid var(--pri)"><div style="font-size:11px;color:var(--pri)">周五</div><div style="font-size:15px;font-weight:700;color:var(--pri)">25</div><div style="width:6px;height:6px;border-radius:50%;background:var(--pri);margin:4px auto 0"></div></div>
<div style="text-align:center;padding:10px 8px;border-radius:8px;background:var(--bg);min-width:44px"><div style="font-size:11px;color:var(--tx2)">周六</div><div style="font-size:15px;font-weight:700">26</div><div style="width:6px;height:6px;border-radius:50%;background:var(--bd);margin:4px auto 0"></div></div>
<div style="text-align:center;padding:10px 8px;border-radius:8px;background:var(--bg);min-width:44px"><div style="font-size:11px;color:var(--tx2)">周日</div><div style="font-size:15px;font-weight:700">27</div></div>
<div style="text-align:center;padding:10px 8px;border-radius:8px;background:var(--bg);min-width:44px"><div style="font-size:11px;color:var(--tx2)">周一</div><div style="font-size:15px;font-weight:700">28</div><div style="width:6px;height:6px;border-radius:50%;background:var(--acc);margin:4px auto 0"></div></div>
</div>
<div style="font-size:13px;color:var(--tx2);margin-bottom:8px">选择时段</div>
<div class="flex gap8" style="margin-bottom:16px">
<div style="flex:1;padding:10px;border-radius:8px;background:var(--pri);color:#fff;text-align:center;font-size:13px;font-weight:600">上午 09:00</div>
<div style="flex:1;padding:10px;border-radius:8px;background:var(--bg);text-align:center;font-size:13px;border:1px solid var(--bd)">下午 14:00</div>
</div>
<button class="btn btn-pri" style="width:100%">确认预约</button>
</div>
</div>
<div class="tab-bar" data-mode="patient">
<div class="tab-item" onclick="showPage('home','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>首页</span></div>
<div class="tab-item" onclick="showPage('data','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V10M6 20V4M18 20v-6"/></svg><span>数据</span></div>
<div class="tab-item active" onclick="showPage('appointment','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>预约</span></div>
<div class="tab-item" onclick="showPage('profile','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- P4: 我的报告 -->
<div id="page-report" class="page" data-mode="patient">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">
<span class="back" onclick="showPage('home','patient')"><svg width="20" height="20" fill="none" stroke="#fff" stroke-width="2"><path d="M15 18l-6-6 6-6"/></svg></span>
我的报告
</div>
<div class="content" style="padding-bottom:80px">
<div class="flex" style="padding:12px 16px;gap:0">
<div style="flex:1;text-align:center;padding:8px;font-size:13px;font-weight:600;color:var(--pri);border-bottom:2px solid var(--pri)">化验报告</div>
<div style="flex:1;text-align:center;padding:8px;font-size:13px;color:var(--tx2);border-bottom:2px solid transparent">体检记录</div>
</div>
<div style="padding:0 16px 8px"><select style="width:100%;padding:8px 12px;border:1px solid var(--bd);border-radius:8px;font-size:13px;background:var(--card)"><option>全部类型</option><option>肾功能</option><option>血常规</option><option>尿常规</option></select></div>
<div class="card">
<div class="flex jcsb aic"><div><strong style="font-size:14px">肾功能检查</strong><div style="font-size:11px;color:var(--tx2);margin-top:2px">2026-04-20 · 市第一医院</div></div><span class="tag tag-r">2项异常</span></div>
<div style="margin-top:8px;font-size:12px;color:var(--tx2)">正常 8 项,<span style="color:var(--dan)">异常 2 项</span></div>
<div style="margin-top:8px;font-size:12px;background:#FEF2F2;padding:8px;border-radius:6px"><span style="color:var(--dan)">肌酐 156 μmol/L (参考 44-133)</span><br><span style="color:var(--dan)">尿素氮 9.8 mmol/L (参考 2.5-7.1)</span></div>
</div>
<div class="card">
<div class="flex jcsb aic"><div><strong style="font-size:14px">血常规</strong><div style="font-size:11px;color:var(--tx2);margin-top:2px">2026-04-15 · 仁爱体检中心</div></div><span class="tag tag-g">全部正常</span></div>
<div style="margin-top:8px;font-size:12px;color:var(--tx2)">正常 12 项,异常 0 项</div>
</div>
<div class="card">
<div class="flex jcsb aic"><div><strong style="font-size:14px">尿常规</strong><div style="font-size:11px;color:var(--tx2);margin-top:2px">2026-04-10 · 市第一医院</div></div><span class="tag tag-y">1项异常</span></div>
<div style="margin-top:8px;font-size:12px;color:var(--tx2)">正常 9 项,<span style="color:var(--wrn)">异常 1 项</span></div>
</div>
<!-- 报告详情(模拟展开) -->
<div class="card" style="border:2px solid var(--pri)">
<div class="flex jcsb aic" style="margin-bottom:8px"><strong style="font-size:15px">肾功能检查详情</strong><span class="tag tag-g">已出</span></div>
<div style="font-size:12px;color:var(--tx2);margin-bottom:12px">2026-04-20 · 市第一医院检验科</div>
<div style="font-size:12px;border-collapse:collapse;width:100%">
<div class="flex" style="padding:6px 0;border-bottom:1px solid var(--bd);font-weight:600;color:var(--tx2)"><div style="flex:2">指标</div><div style="flex:1">结果</div><div style="flex:1">单位</div><div style="flex:1.2">参考值</div></div>
<div class="flex" style="padding:6px 0;border-bottom:1px solid var(--bd)"><div style="flex:2">肌酐</div><div style="flex:1;color:var(--dan);font-weight:600">156</div><div style="flex:1;font-size:11px">μmol/L</div><div style="flex:1.2;font-size:11px">44-133</div></div>
<div class="flex" style="padding:6px 0;border-bottom:1px solid var(--bd)"><div style="flex:2">尿素氮</div><div style="flex:1;color:var(--dan);font-weight:600">9.8</div><div style="flex:1;font-size:11px">mmol/L</div><div style="flex:1.2;font-size:11px">2.5-7.1</div></div>
<div class="flex" style="padding:6px 0;border-bottom:1px solid var(--bd)"><div style="flex:2">尿酸</div><div style="flex:1">386</div><div style="flex:1;font-size:11px">μmol/L</div><div style="flex:1.2;font-size:11px">150-420</div></div>
<div class="flex" style="padding:6px 0"><div style="flex:2">eGFR</div><div style="flex:1;color:var(--acc)">72</div><div style="flex:1;font-size:11px">ml/min</div><div style="flex:1.2;font-size:11px">>60</div></div>
</div>
<div style="background:var(--bg);border-radius:8px;padding:12px;margin-top:12px">
<div style="font-size:12px;font-weight:600;margin-bottom:4px">医生解读</div>
<div style="font-size:12px;color:var(--tx2);line-height:1.6">肌酐和尿素氮轻度升高建议控制蛋白质摄入两周后复查肾功能。eGFR 72 处于轻度下降阶段,需持续关注。</div>
<div style="font-size:11px;color:var(--tx2);margin-top:4px">—— 王建国 主任医师</div>
</div>
</div>
</div>
<div class="tab-bar" data-mode="patient">
<div class="tab-item" onclick="showPage('home','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>首页</span></div>
<div class="tab-item" onclick="showPage('data','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V10M6 20V4M18 20v-6"/></svg><span>数据</span></div>
<div class="tab-item" onclick="showPage('appointment','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>预约</span></div>
<div class="tab-item" onclick="showPage('profile','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- P5: 在线咨询 -->
<div id="page-consult" class="page" data-mode="patient">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">在线咨询</div>
<div class="content" style="padding-bottom:80px">
<!-- 会话列表 -->
<div style="padding:12px 16px"><div style="background:var(--card);border-radius:20px;padding:8px 14px;display:flex;align-items:center;gap:8px;box-shadow:var(--sh)"><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg><input placeholder="搜索医生" style="border:none;outline:none;font-size:14px;flex:1;background:transparent"></div></div>
<div class="card" style="cursor:pointer">
<div class="flex gap12">
<div style="position:relative"><svg width="48" height="48" viewBox="0 0 48 48"><circle cx="24" cy="24" r="24" fill="var(--pri-l)"/><circle cx="24" cy="19" r="7" fill="var(--pri)"/><ellipse cx="24" cy="35" rx="11" ry="8" fill="var(--pri)" opacity=".5"/></svg><div style="position:absolute;bottom:2px;right:2px;width:10px;height:10px;border-radius:50%;background:var(--acc);border:2px solid #fff"></div></div>
<div style="flex:1;min-width:0">
<div class="flex jcsb"><div><strong>王建国</strong> <span style="font-size:11px;color:var(--tx2)">肾内科</span></div><span style="font-size:11px;color:var(--tx2)">09:30</span></div>
<div style="font-size:13px;color:var(--tx2);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">您好,我最近血压波动比较大,想咨询一下...</div>
</div>
<div style="background:var(--dan);color:#fff;border-radius:10px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;margin-top:16px">3</div>
</div>
</div>
<div class="card" style="cursor:pointer">
<div class="flex gap12">
<div style="position:relative"><svg width="48" height="48" viewBox="0 0 48 48"><circle cx="24" cy="24" r="24" fill="#FEF3C7"/><circle cx="24" cy="19" r="7" fill="#F59E0B"/><ellipse cx="24" cy="35" rx="11" ry="8" fill="#F59E0B" opacity=".5"/></svg><div style="position:absolute;bottom:2px;right:2px;width:10px;height:10px;border-radius:50%;background:#9CA3AF;border:2px solid #fff"></div></div>
<div style="flex:1;min-width:0">
<div class="flex jcsb"><div><strong>李芳</strong> <span style="font-size:11px;color:var(--tx2)">心内科</span></div><span style="font-size:11px;color:var(--tx2)">昨天</span></div>
<div style="font-size:13px;color:var(--tx2);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">好的,我明白了。建议您按时服药并...</div>
</div>
</div>
</div>
<!-- 聊天界面(内嵌展示) -->
<div style="margin:8px 0;padding:12px 16px;border-top:3px solid var(--bd)">
<div style="text-align:center;font-size:11px;color:var(--tx2);margin-bottom:16px;background:var(--bg);padding:8px;border-radius:8px">以下为与王建国医生的对话预览</div>
<!-- 对方消息 -->
<div class="flex gap8" style="margin-bottom:16px">
<svg width="36" height="36" viewBox="0 0 36 36"><circle cx="18" cy="18" r="18" fill="var(--pri-l)"/><circle cx="18" cy="14" r="5" fill="var(--pri)"/></svg>
<div style="max-width:70%"><div style="background:var(--card);padding:10px 14px;border-radius:12px 12px 12px 2px;font-size:13px;line-height:1.5;box-shadow:var(--sh)">您好张先生,请问最近血压控制得怎么样?有按时服药吗?</div><div style="font-size:10px;color:var(--tx2);margin-top:2px">09:30</div></div>
</div>
<!-- 我方消息 -->
<div class="flex gap8" style="margin-bottom:16px;flex-direction:row-reverse">
<div style="max-width:70%"><div style="background:#DCF5F7;padding:10px 14px;border-radius:12px 12px 2px 12px;font-size:13px;line-height:1.5">王医生好最近血压波动比较大早上量了一次128/82有时会到140/90</div><div style="font-size:10px;color:var(--tx2);margin-top:2px;text-align:right">09:32</div></div>
</div>
<!-- 对方消息 -->
<div class="flex gap8" style="margin-bottom:16px">
<svg width="36" height="36" viewBox="0 0 36 36"><circle cx="18" cy="18" r="18" fill="var(--pri-l)"/><circle cx="18" cy="14" r="5" fill="var(--pri)"/></svg>
<div style="max-width:70%"><div style="background:var(--card);padding:10px 14px;border-radius:12px 12px 12px 2px;font-size:13px;line-height:1.5;box-shadow:var(--sh)">了解您的血压确实有些波动。建议1. 每天固定时间测血压并记录 2. 低盐饮食 3. 我帮您调整一下用药方案,请明天来门诊</div><div style="font-size:10px;color:var(--tx2);margin-top:2px">09:35</div></div>
</div>
<!-- 系统消息 -->
<div style="text-align:center;font-size:11px;color:var(--tx2);margin:12px 0;padding:4px 12px;background:var(--bg);display:inline-block;border-radius:10px">系统提示:已为您预约明天 09:00 王建国医生门诊</div>
<!-- 输入栏 -->
<div class="flex aic gap8" style="padding:10px 16px;background:var(--card);border-top:1px solid var(--bd);margin-top:auto;position:sticky;bottom:0">
<svg width="22" height="22" fill="none" stroke="var(--tx2)" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M12 8v8M8 12h8"/></svg>
<input placeholder="输入消息..." style="flex:1;border:none;outline:none;font-size:14px;padding:8px 12px;background:var(--bg);border-radius:20px">
<div style="width:36px;height:36px;border-radius:50%;background:var(--pri);display:flex;align-items:center;justify-content:center"><svg width="18" height="18" fill="none" stroke="#fff" stroke-width="2"><path d="M22 2L11 13M22 2l-7 20-4-9-9-4z"/></svg></div>
</div>
</div>
</div>
<div class="tab-bar" data-mode="patient">
<div class="tab-item" onclick="showPage('home','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>首页</span></div>
<div class="tab-item" onclick="showPage('data','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V10M6 20V4M18 20v-6"/></svg><span>数据</span></div>
<div class="tab-item" onclick="showPage('appointment','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>预约</span></div>
<div class="tab-item active" onclick="showPage('profile','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- ==================== 医护端页面 ==================== -->
<!-- P6: 工作台 -->
<div id="page-workspace" class="page" data-mode="doctor">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">工作台</div>
<div class="content" style="padding-bottom:80px">
<!-- 医护信息 -->
<div style="background:linear-gradient(135deg,var(--pri),var(--pri-d));padding:16px;color:#fff">
<div class="flex aic jcsb">
<div class="flex aic gap12">
<svg width="48" height="48" viewBox="0 0 48 48"><circle cx="24" cy="24" r="24" fill="rgba(255,255,255,.2)"/><circle cx="24" cy="19" r="7" fill="rgba(255,255,255,.6)"/><ellipse cx="24" cy="35" rx="11" ry="8" fill="rgba(255,255,255,.4)"/></svg>
<div><div style="font-size:16px;font-weight:700">王建国</div><div style="font-size:12px;opacity:.8">肾内科 · 主任医师</div></div>
</div>
<div style="display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.2);padding:4px 12px;border-radius:20px;font-size:12px"><div style="width:8px;height:8px;border-radius:50%;background:#10B981"></div>在线</div>
</div>
</div>
<!-- 今日统计 -->
<div style="padding:0 16px;margin-top:-12px;position:relative;z-index:1">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px">
<div style="background:var(--card);padding:14px 12px;border-radius:var(--r);box-shadow:var(--sh);text-align:center;border:1px solid rgba(0,0,0,.03)"><div style="width:40px;height:40px;border-radius:12px;background:var(--acc-l);display:flex;align-items:center;justify-content:center;margin:0 auto 8px"><svg width="18" height="18" fill="none" stroke="var(--acc)" stroke-width="2"><path d="M22 16.92h-4.56a2 2 0 01-1.9-1.38l-.68-2.04a2 2 0 00-1.9-1.38h-2.92a2 2 0 00-1.9 1.38l-.68 2.04a2 2 0 01-1.9 1.38H2"/><circle cx="12" cy="8" r="5" transform="scale(.6) translate(6,2)"/></svg></div><div style="font-size:26px;font-weight:700;color:var(--acc);letter-spacing:-.5px">12</div><div style="font-size:11px;color:var(--tx2);margin-top:2px">待随访</div></div>
<div style="background:var(--card);padding:14px 12px;border-radius:var(--r);box-shadow:var(--sh);text-align:center;border:1px solid rgba(0,0,0,.03)"><div style="width:40px;height:40px;border-radius:12px;background:var(--pri-l);display:flex;align-items:center;justify-content:center;margin:0 auto 8px"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg></div><div style="font-size:26px;font-weight:700;color:var(--pri);letter-spacing:-.5px">8</div><div style="font-size:11px;color:var(--tx2);margin-top:2px">今日预约</div></div>
<div style="background:var(--card);padding:14px 12px;border-radius:var(--r);box-shadow:var(--sh);text-align:center;border:1px solid rgba(0,0,0,.03)"><div style="width:40px;height:40px;border-radius:12px;background:#FEF3C7;display:flex;align-items:center;justify-content:center;margin:0 auto 8px"><svg width="18" height="18" fill="none" stroke="var(--wrn)" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg></div><div style="font-size:26px;font-weight:700;color:var(--wrn);letter-spacing:-.5px">5</div><div style="font-size:11px;color:var(--tx2);margin-top:2px">待回复咨询</div></div>
<div style="background:var(--card);padding:14px 12px;border-radius:var(--r);box-shadow:var(--sh);text-align:center;border:1px solid rgba(0,0,0,.03)"><div style="width:40px;height:40px;border-radius:12px;background:var(--dan-l);display:flex;align-items:center;justify-content:center;margin:0 auto 8px"><svg width="18" height="18" fill="none" stroke="var(--dan)" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/><path d="M12 9v4M12 17h.01" transform="scale(.7) translate(4,1)"/></svg></div><div style="font-size:26px;font-weight:700;color:var(--dan);letter-spacing:-.5px">3</div><div style="font-size:11px;color:var(--tx2);margin-top:2px">逾期任务</div></div>
</div>
</div>
<!-- 今日任务 -->
<div style="padding:12px 16px"><div style="font-size:15px;font-weight:600;margin-bottom:8px">今日任务</div>
<div class="card" style="margin:0 0 8px">
<div class="flex aic gap12">
<div style="width:36px;height:36px;border-radius:8px;background:var(--acc-l);display:flex;align-items:center;justify-content:center"><svg width="16" height="16" fill="none" stroke="var(--acc)" stroke-width="2"><path d="M22 16.92h-4.56l-.68-2.04a2 2 0 00-1.9-1.38" transform="scale(.6) translate(4,2)"/></svg></div>
<div style="flex:1"><div style="font-size:13px;font-weight:600">张明 · 电话随访</div><div style="font-size:11px;color:var(--tx2)">血压监测随访 · 10:00</div></div>
<span class="tag tag-y">待处理</span>
</div>
</div>
<div class="card" style="margin:0 0 8px">
<div class="flex aic gap12">
<div style="width:36px;height:36px;border-radius:8px;background:var(--pri-l);display:flex;align-items:center;justify-content:center"><svg width="16" height="16" fill="none" stroke="var(--pri)" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/></svg></div>
<div style="flex:1"><div style="font-size:13px;font-weight:600">刘芳 · 门诊预约</div><div style="font-size:11px;color:var(--tx2)">肾功能复查 · 11:00</div></div>
<span class="tag tag-g">已确认</span>
</div>
</div>
<div class="card" style="margin:0 0 8px">
<div class="flex aic gap12">
<div style="width:36px;height:36px;border-radius:8px;background:#FEF3C7;display:flex;align-items:center;justify-content:center"><svg width="16" height="16" fill="none" stroke="#F59E0B" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg></div>
<div style="flex:1"><div style="font-size:13px;font-weight:600">李强 · 在线咨询</div><div style="font-size:11px;color:var(--tx2)">用药咨询 · 14:00</div></div>
<span class="tag tag-y">待回复</span>
</div>
</div>
<div class="card" style="margin:0 0 8px">
<div class="flex aic gap12">
<div style="width:36px;height:36px;border-radius:8px;background:var(--acc-l);display:flex;align-items:center;justify-content:center"><svg width="16" height="16" fill="none" stroke="var(--acc)" stroke-width="2"><path d="M22 16.92h-4.56l-.68-2.04" transform="scale(.6) translate(4,2)"/></svg></div>
<div style="flex:1"><div style="font-size:13px;font-weight:600">赵婷 · 面访随访</div><div style="font-size:11px;color:var(--tx2)">术后随访 · 16:00</div></div>
<span class="tag tag-g">已完成</span>
</div>
</div>
</div>
</div>
<div class="tab-bar" data-mode="doctor">
<div class="tab-item active" onclick="showPage('workspace','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg><span>工作台</span></div>
<div class="tab-item" onclick="showPage('patients','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75"/></svg><span>患者</span></div>
<div class="tab-item" onclick="showPage('schedule','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>排班</span></div>
<div class="tab-item" onclick="showPage('me','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- P7: 患者管理 -->
<div id="page-patients" class="page" data-mode="doctor">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">患者管理</div>
<div class="content" style="padding-bottom:80px">
<div style="padding:12px 16px"><div style="background:var(--card);border-radius:20px;padding:8px 14px;display:flex;align-items:center;gap:8px;box-shadow:var(--sh)"><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg><input placeholder="搜索患者姓名/手机号" style="border:none;outline:none;font-size:14px;flex:1;background:transparent"></div></div>
<div style="padding:0 16px 12px;display:flex;gap:6px;overflow-x:auto">
<span style="padding:6px 14px;border-radius:20px;font-size:12px;font-weight:600;background:var(--pri);color:#fff;white-space:nowrap">全部</span>
<span style="padding:6px 14px;border-radius:20px;font-size:12px;background:var(--card);color:var(--dan);border:1px solid #FEE2E2;white-space:nowrap">高血压</span>
<span style="padding:6px 14px;border-radius:20px;font-size:12px;background:var(--card);color:var(--pri);border:1px solid var(--pri-l);white-space:nowrap">糖尿病</span>
<span style="padding:6px 14px;border-radius:20px;font-size:12px;background:var(--card);color:var(--acc);border:1px solid var(--acc-l);white-space:nowrap">慢性肾病</span>
<span style="padding:6px 14px;border-radius:20px;font-size:12px;background:var(--card);color:var(--wrn);border:1px solid #FEF3C7;white-space:nowrap">术后随访</span>
</div>
<!-- 患者列表 -->
<div class="card">
<div class="flex aic gap12">
<div style="width:40px;height:40px;border-radius:50%;background:var(--pri-l);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--pri);font-size:14px"></div>
<div style="flex:1">
<div class="flex aic gap8"><strong style="font-size:14px">张明</strong><svg width="14" height="14" fill="none" stroke="var(--pri)" stroke-width="2"><circle cx="7" cy="7" r="5"/><path d="M7 5v4M5 7h4" transform="translate(0,-1)"/></svg><span style="font-size:12px;color:var(--tx2)">52岁</span><div style="width:8px;height:8px;border-radius:50%;background:var(--acc)"></div></div>
<div class="flex gap6" style="margin-top:4px"><span class="tag tag-r" style="font-size:10px;padding:2px 8px">高血压</span><span class="tag tag-b" style="font-size:10px;padding:2px 8px">慢性肾病</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:2px">主治:王建国 · 上次随访 4/18</div>
</div>
<svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
</div>
</div>
<div class="card">
<div class="flex aic gap12">
<div style="width:40px;height:40px;border-radius:50%;background:#FEF3C7;display:flex;align-items:center;justify-content:center;font-weight:700;color:#F59E0B;font-size:14px"></div>
<div style="flex:1">
<div class="flex aic gap8"><strong style="font-size:14px">刘芳</strong><svg width="14" height="14" fill="none" stroke="#F59E0B" stroke-width="2"><circle cx="7" cy="7" r="5"/></svg><span style="font-size:12px;color:var(--tx2)">45岁</span><div style="width:8px;height:8px;border-radius:50%;background:var(--acc)"></div></div>
<div class="flex gap6" style="margin-top:4px"><span class="tag tag-b" style="font-size:10px;padding:2px 8px">糖尿病</span><span class="tag tag-y" style="font-size:10px;padding:2px 8px">术后随访</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:2px">主治:王建国 · 上次随访 4/20</div>
</div>
<svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
</div>
</div>
<div class="card">
<div class="flex aic gap12">
<div style="width:40px;height:40px;border-radius:50%;background:var(--acc-l);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--acc);font-size:14px"></div>
<div style="flex:1">
<div class="flex aic gap8"><strong style="font-size:14px">李强</strong><svg width="14" height="14" fill="none" stroke="var(--pri)" stroke-width="2"><circle cx="7" cy="7" r="5"/></svg><span style="font-size:12px;color:var(--tx2)">68岁</span><div style="width:8px;height:8px;border-radius:50%;background:var(--acc)"></div></div>
<div class="flex gap6" style="margin-top:4px"><span class="tag tag-r" style="font-size:10px;padding:2px 8px">高血压</span><span class="tag tag-b" style="font-size:10px;padding:2px 8px">冠心病</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:2px">主治:李芳 · 上次随访 4/15</div>
</div>
<svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
</div>
</div>
<div class="card">
<div class="flex aic gap12">
<div style="width:40px;height:40px;border-radius:50%;background:#FEE2E2;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--dan);font-size:14px"></div>
<div style="flex:1">
<div class="flex aic gap8"><strong style="font-size:14px">赵婷</strong><svg width="14" height="14" fill="none" stroke="var(--dan)" stroke-width="2"><circle cx="7" cy="7" r="5"/></svg><span style="font-size:12px;color:var(--tx2)">38岁</span><div style="width:8px;height:8px;border-radius:50%;background:var(--acc)"></div></div>
<div class="flex gap6" style="margin-top:4px"><span class="tag tag-y" style="font-size:10px;padding:2px 8px">术后随访</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:2px">主治:王建国 · 上次随访 4/22</div>
</div>
<svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
</div>
</div>
<div class="card">
<div class="flex aic gap12">
<div style="width:40px;height:40px;border-radius:50%;background:#DBEAFE;display:flex;align-items:center;justify-content:center;font-weight:700;color:#3B82F6;font-size:14px"></div>
<div style="flex:1">
<div class="flex aic gap8"><strong style="font-size:14px">陈华</strong><svg width="14" height="14" fill="none" stroke="#3B82F6" stroke-width="2"><circle cx="7" cy="7" r="5"/></svg><span style="font-size:12px;color:var(--tx2)">55岁</span><div style="width:8px;height:8px;border-radius:50%;background:#9CA3AF"></div></div>
<div class="flex gap6" style="margin-top:4px"><span class="tag tag-b" style="font-size:10px;padding:2px 8px">慢性肾病</span><span class="tag tag-r" style="font-size:10px;padding:2px 8px">高血压</span></div>
<div style="font-size:11px;color:var(--tx2);margin-top:2px">主治:王建国 · 已停用</div>
</div>
<svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
</div>
</div>
</div>
<!-- 添加患者按钮 -->
<div style="position:sticky;bottom:90px;right:16px;display:flex;justify-content:flex-end;pointer-events:none">
<div style="width:52px;height:52px;border-radius:50%;background:var(--pri);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(8,145,178,.4);pointer-events:auto;cursor:pointer"><svg width="24" height="24" fill="none" stroke="#fff" stroke-width="2.5"><path d="M12 5v14M5 12h14"/></svg></div>
</div>
<div class="tab-bar" data-mode="doctor">
<div class="tab-item" onclick="showPage('workspace','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg><span>工作台</span></div>
<div class="tab-item active" onclick="showPage('patients','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75"/></svg><span>患者</span></div>
<div class="tab-item" onclick="showPage('schedule','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>排班</span></div>
<div class="tab-item" onclick="showPage('me','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- P8: 随访执行 -->
<div id="page-followup" class="page" data-mode="doctor">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">
<span class="back"><svg width="20" height="20" fill="none" stroke="#fff" stroke-width="2"><path d="M15 18l-6-6 6-6"/></svg></span>
随访执行
</div>
<div class="content" style="padding-bottom:16px">
<!-- 患者信息条 -->
<div style="background:var(--card);padding:14px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--sh)">
<div style="width:44px;height:44px;border-radius:50%;background:var(--pri-l);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--pri)"></div>
<div style="flex:1">
<div class="flex aic gap8"><strong>张明</strong><span style="font-size:12px;color:var(--tx2)">男 · 52岁</span></div>
<div class="flex gap6" style="margin-top:4px"><span class="tag tag-r" style="font-size:10px;padding:2px 8px">高血压</span><span class="tag tag-b" style="font-size:10px;padding:2px 8px">慢性肾病</span></div>
</div>
</div>
<!-- 随访任务信息 -->
<div class="card">
<div class="card-title"><svg width="16" height="16" fill="none" stroke="var(--pri)" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg>任务信息</div>
<div style="font-size:13px;line-height:2">
<div class="flex jcsb"><span style="color:var(--tx2)">随访类型</span><strong>电话随访</strong></div>
<div class="flex jcsb"><span style="color:var(--tx2)">计划日期</span><strong>2026-04-23</strong></div>
<div class="flex jcsb"><span style="color:var(--tx2)">状态</span><span class="tag tag-y">进行中</span></div>
<div class="flex jcsb"><span style="color:var(--tx2)">关联预约</span><span style="color:var(--pri)">4/24 王建国门诊</span></div>
</div>
</div>
<!-- 随访表单 -->
<div class="card">
<div class="card-title"><svg width="16" height="16" fill="none" stroke="var(--acc)" stroke-width="2"><path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>随访记录</div>
<!-- 随访结果 -->
<div style="margin-bottom:16px">
<div style="font-size:13px;font-weight:600;margin-bottom:8px">随访结果</div>
<div style="display:flex;gap:8px;flex-wrap:wrap">
<label style="display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:2px solid var(--acc);background:var(--acc-l);cursor:pointer;font-size:13px"><input type="radio" name="result" checked style="accent-color:var(--acc)">已随访</label>
<label style="display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1.5px solid var(--bd);cursor:pointer;font-size:13px"><input type="radio" name="result" style="accent-color:var(--acc)">无法联系</label>
<label style="display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1.5px solid var(--bd);cursor:pointer;font-size:13px"><input type="radio" name="result" style="accent-color:var(--acc)">拒绝</label>
<label style="display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1.5px solid var(--bd);cursor:pointer;font-size:13px"><input type="radio" name="result" style="accent-color:var(--acc)">其他</label>
</div>
</div>
<!-- 患者状况 -->
<div style="margin-bottom:16px">
<label class="form-label">患者状况</label>
<textarea placeholder="请描述患者当前状况..." style="width:100%;height:80px;padding:10px 14px;border:1.5px solid var(--bd);border-radius:var(--r-sm);font-size:13px;background:var(--card);resize:none;outline:none;font-family:inherit;color:var(--tx);line-height:1.5;transition:border-color .2s" onfocus="this.style.borderColor='var(--pri)'" onblur="this.style.borderColor='var(--bd)'"></textarea>
</div>
<!-- 医嘱建议 -->
<div style="margin-bottom:16px">
<label class="form-label">医嘱建议</label>
<textarea placeholder="请输入医嘱建议..." style="width:100%;height:80px;padding:10px 14px;border:1.5px solid var(--bd);border-radius:var(--r-sm);font-size:13px;background:var(--card);resize:none;outline:none;font-family:inherit;color:var(--tx);line-height:1.5;transition:border-color .2s" onfocus="this.style.borderColor='var(--pri)'" onblur="this.style.borderColor='var(--bd)'"></textarea>
</div>
<!-- 下次随访日期 -->
<div style="margin-bottom:16px">
<label class="form-label">下次随访日期</label>
<input type="date" value="2026-05-23" class="form-input">
</div>
<!-- 附件 -->
<div style="margin-bottom:16px">
<div style="font-size:13px;font-weight:600;margin-bottom:6px">附件</div>
<div style="border:2px dashed var(--bd);border-radius:8px;padding:20px;text-align:center;cursor:pointer">
<svg width="28" height="28" fill="none" stroke="var(--tx2)" stroke-width="2" style="margin-bottom:6px"><path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12"/></svg>
<div style="font-size:12px;color:var(--tx2)">点击添加附件</div>
</div>
</div>
</div>
<!-- 底部操作栏 -->
<div style="padding:12px 16px;display:flex;gap:12px;background:var(--card);border-top:1px solid var(--bd)">
<button class="btn btn-out" style="flex:1">保存草稿</button>
<button class="btn btn-pri" style="flex:2">提交随访</button>
</div>
</div>
</div>
<!-- 患者端"我的"占位页 -->
<div id="page-profile" class="page" data-mode="patient">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">我的</div>
<div class="content" style="padding-bottom:80px">
<div style="background:linear-gradient(135deg,var(--pri),var(--pri-d));padding:30px 16px;color:#fff;text-align:center">
<svg width="64" height="64" viewBox="0 0 64 64" style="margin-bottom:10px"><circle cx="32" cy="32" r="32" fill="rgba(255,255,255,.2)"/><circle cx="32" cy="26" r="10" fill="rgba(255,255,255,.6)"/><ellipse cx="32" cy="48" rx="16" ry="11" fill="rgba(255,255,255,.35)"/></svg>
<div style="font-size:18px;font-weight:700">张明</div>
<div style="font-size:12px;opacity:.8;margin-top:4px">ID: HMS20260001 · 已实名</div>
</div>
<div class="card" style="margin-top:-12px;position:relative;z-index:1">
<div class="flex aic jcsb" style="padding:12px 0;border-bottom:1px solid var(--bd)"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6"/></svg>健康档案</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
<div class="flex aic jcsb" style="padding:12px 0;border-bottom:1px solid var(--bd)"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><path d="M16 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="8.5" cy="7" r="4"/><path d="M20 8v6M23 11h-6"/></svg>家庭成员</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
<div class="flex aic jcsb" style="padding:12px 0;border-bottom:1px solid var(--bd)"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg>隐私设置</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
<div class="flex aic jcsb" style="padding:12px 0"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></svg>关于我们</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
</div>
</div>
<div class="tab-bar" data-mode="patient">
<div class="tab-item" onclick="showPage('home','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg><span>首页</span></div>
<div class="tab-item" onclick="showPage('data','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20V10M6 20V4M18 20v-6"/></svg><span>数据</span></div>
<div class="tab-item" onclick="showPage('appointment','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>预约</span></div>
<div class="tab-item active" onclick="showPage('profile','patient')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<!-- 医护端"排班"和"我的"占位页 -->
<div id="page-schedule" class="page" data-mode="doctor">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">排班管理</div>
<div class="content" style="padding:16px;padding-bottom:80px">
<div class="card" style="text-align:center;padding:40px"><svg width="48" height="48" fill="none" stroke="var(--pri)" stroke-width="1.5" style="margin-bottom:12px"><rect x="6" y="8" width="36" height="32" rx="4"/><path d="M32 4v8M16 4v8M6 16h36"/></svg><div style="font-size:14px;color:var(--tx2)">排班管理页面</div><div style="font-size:12px;color:var(--tx2);margin-top:4px">功能开发中</div></div>
</div>
<div class="tab-bar" data-mode="doctor">
<div class="tab-item" onclick="showPage('workspace','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg><span>工作台</span></div>
<div class="tab-item" onclick="showPage('patients','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75"/></svg><span>患者</span></div>
<div class="tab-item active" onclick="showPage('schedule','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>排班</span></div>
<div class="tab-item" onclick="showPage('me','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
<div id="page-me" class="page" data-mode="doctor">
<div class="status-bar" style="background:var(--pri)"><span>9:41</span><span></span></div>
<div class="nav-bar" style="background:var(--pri)">我的</div>
<div class="content" style="padding-bottom:80px">
<div style="background:linear-gradient(135deg,var(--pri),var(--pri-d));padding:30px 16px;color:#fff;text-align:center">
<svg width="64" height="64" viewBox="0 0 64 64" style="margin-bottom:10px"><circle cx="32" cy="32" r="32" fill="rgba(255,255,255,.2)"/><circle cx="32" cy="26" r="10" fill="rgba(255,255,255,.6)"/><ellipse cx="32" cy="48" rx="16" ry="11" fill="rgba(255,255,255,.35)"/></svg>
<div style="font-size:18px;font-weight:700">王建国</div>
<div style="font-size:12px;opacity:.8;margin-top:4px">肾内科 · 主任医师</div>
</div>
<div class="card" style="margin-top:-12px;position:relative;z-index:1">
<div class="flex aic jcsb" style="padding:12px 0;border-bottom:1px solid var(--bd)"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>个人信息</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
<div class="flex aic jcsb" style="padding:12px 0;border-bottom:1px solid var(--bd)"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--pri)" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg>设置</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
<div class="flex aic jcsb" style="padding:12px 0"><div class="flex aic gap8"><svg width="18" height="18" fill="none" stroke="var(--dan)" stroke-width="2"><path d="M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4M16 17l5-5-5-5M21 12H9"/></svg>退出登录</div><svg width="16" height="16" fill="none" stroke="var(--tx2)" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg></div>
</div>
</div>
<div class="tab-bar" data-mode="doctor">
<div class="tab-item" onclick="showPage('workspace','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg><span>工作台</span></div>
<div class="tab-item" onclick="showPage('patients','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75"/></svg><span>患者</span></div>
<div class="tab-item" onclick="showPage('schedule','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg><span>排班</span></div>
<div class="tab-item active" onclick="showPage('me','doctor')"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>我的</span></div>
</div>
</div>
</div>
<script>
const patientPages=['home','data','appointment','report','consult','profile'];
const doctorPages=['workspace','patients','schedule','me'];
function showPage(id,mode){
document.querySelectorAll('.page').forEach(p=>p.classList.remove('active'));
const page=document.getElementById('page-'+id);
if(page){page.classList.add('active')}
// Tab bar visibility
document.querySelectorAll('.tab-bar').forEach(t=>{t.style.display=t.dataset.mode===mode?'flex':'none'});
// Update tab active states
const tabs=document.querySelectorAll('.tab-bar[data-mode="'+mode+'"] .tab-item');
const pages=mode==='patient'?patientPages:doctorPages;
tabs.forEach((t,i)=>{t.classList.toggle('active',pages[i]===id)});
}
function switchMode(mode){
document.querySelectorAll('.mode-btn').forEach(b=>b.classList.toggle('active',b.textContent.includes(mode==='patient'?'患者':'医护')));
document.querySelectorAll('.page').forEach(p=>p.classList.remove('active'));
if(mode==='patient'){
document.getElementById('page-home').classList.add('active');
}else{
document.getElementById('page-workspace').classList.add('active');
}
document.querySelectorAll('.tab-bar').forEach(t=>{t.style.display=t.dataset.mode===mode?'flex':'none'});
// Set first tab active
const tabs=document.querySelectorAll('.tab-bar[data-mode="'+mode+'"] .tab-item');
tabs.forEach((t,i)=>{t.classList.toggle('active',i===0)});
}
</script>
</body>
</html>