feat: 新增单位咨询统计、咨询流程图、快速咨询等多项功能

- 管理端新增单位咨询统计页面,11个侧边栏页面同步更新菜单
- 单位报表详情页支持多入口共用(动态导航/侧边栏/面包屑)
- 员工端新增咨询流程图页面、选择档案页面
- 聊天页增加发送文件/发送位置按钮,支持快速咨询模式
- 选择咨询人页面增加快速咨询按钮
- 批量优化管理端小助手及应急端页面

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-16 16:03:26 +08:00
co-authored by Claude Opus 4.6
parent 71a9c91f32
commit dc2ba3000a
39 changed files with 1872 additions and 255 deletions
@@ -0,0 +1,294 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>健康咨询 - 员工咨询流程图 | 健康长庆原型</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #f5f7fa;
font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', sans-serif;
color: #1a1a1a;
padding: 32px;
min-width: 1100px;
}
.page-header {
text-align: center; margin-bottom: 32px;
}
.page-header h1 { font-size: 24px; font-weight: 700; color: #1a1a1a; }
.page-header p { font-size: 14px; color: #8c8c8c; margin-top: 6px; }
.legend {
display: flex; justify-content: center; gap: 24px; margin-bottom: 28px; flex-wrap: wrap;
}
.legend-item { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #595959; }
.legend-dot { width: 14px; height: 14px; border-radius: 4px; flex-shrink: 0; }
/* 流程图容器 */
.flowchart-wrap {
display: flex; gap: 28px; justify-content: center; align-items: flex-start; flex-wrap: nowrap;
}
.flow-column {
background: #fff; border-radius: 16px; padding: 24px 20px 28px;
box-shadow: 0 2px 12px rgba(0,0,0,0.06); min-width: 320px; max-width: 360px; flex: 1;
}
.flow-column-title {
font-size: 16px; font-weight: 700; text-align: center; padding: 8px 0 16px;
border-bottom: 2px solid #f0f0f0; margin-bottom: 20px;
}
/* 节点样式 */
.node {
position: relative; border-radius: 10px; padding: 10px 14px; margin: 0 auto;
text-align: center; font-size: 13px; font-weight: 500; width: 90%;
transition: transform 0.15s;
}
.node:hover { transform: scale(1.03); }
.node-entry { background: #e6f4ff; border: 1.5px solid #91caff; color: #0958d9; }
.node-page { background: #f6ffed; border: 1.5px solid #b7eb8f; color: #389e0d; }
.node-action { background: #fff7e6; border: 1.5px solid #ffd591; color: #d46b08; }
.node-state { border-radius: 20px; padding: 7px 14px; font-size: 12px; }
.node-state.s-progress { background: #e6f4ff; border: 1.5px solid #91caff; color: #1677ff; }
.node-state.s-done { background: #f6ffed; border: 1.5px solid #b7eb8f; color: #52c41a; }
.node-state.s-timeout { background: #fff7e6; border: 1.5px solid #ffd591; color: #fa8c16; }
.node-state.s-cancel { background: #f5f5f5; border: 1.5px solid #d9d9d9; color: #8c8c8c; }
.node-state.s-reject { background: #fff2f0; border: 1.5px solid #ffccc7; color: #ff4d4f; }
.node-state.s-confirm { background: #f9f0ff; border: 1.5px solid #d3adf7; color: #722ed1; }
.node-state.s-wait { background: #fff7e6; border: 1.5px solid #ffd591; color: #fa8c16; }
.node-dialog { background: #fff0f6; border: 1.5px dashed #ffadd2; color: #c41d7f; border-radius: 10px; }
.node-end { background: #f5f5f5; border: 1.5px solid #d9d9d9; color: #595959; border-radius: 20px; }
.file-tag {
display: block; font-size: 10px; color: #8c8c8c; font-weight: 400; margin-top: 3px;
word-break: break-all;
}
/* 箭头连接线 */
.arrow-down {
display: flex; flex-direction: column; align-items: center; padding: 6px 0;
}
.arrow-down .line { width: 2px; height: 18px; background: #d9d9d9; }
.arrow-down .head { width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 6px solid #d9d9d9; }
.arrow-label {
font-size: 10px; color: #8c8c8c; background: #fff; padding: 0 4px; margin: -2px 0;
}
/* 分支容器 */
.branch-wrap {
display: flex; gap: 10px; justify-content: center; margin: 0 -6px;
}
.branch { flex: 1; display: flex; flex-direction: column; align-items: center; }
.branch .node { width: 100%; font-size: 12px; padding: 8px 6px; }
.branch .file-tag { font-size: 9px; }
/* 分支线 */
.branch-line {
display: flex; align-items: flex-start; justify-content: center; height: 24px; position: relative; width: 100%;
}
.branch-line::before {
content: ''; position: absolute; top: 0; left: 25%; right: 25%; height: 2px; background: #d9d9d9;
}
.branch-line .bl { position: absolute; top: 0; width: 2px; height: 24px; background: #d9d9d9; }
.branch-line .bl-l { left: 25%; }
.branch-line .bl-r { right: 25%; }
.branch-line .bl-c { left: 50%; transform: translateX(-50%); }
.branch-line-3::before { left: 16.6%; right: 16.6%; }
.branch-line-3 .bl-l { left: 16.6%; }
.branch-line-3 .bl-r { right: 16.6%; }
.branch-line-5::before { left: 10%; right: 10%; }
.branch-line-5 .bl-1 { left: 10%; }
.branch-line-5 .bl-2 { left: 30%; }
.branch-line-5 .bl-3 { left: 50%; transform: translateX(-50%); }
.branch-line-5 .bl-4 { right: 30%; }
.branch-line-5 .bl-5 { right: 10%; }
/* 状态分支 - 更紧凑 */
.state-branches { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; margin: 0 -4px; }
.state-branches .node-state { flex-shrink: 0; }
.section-label {
font-size: 11px; color: #8c8c8c; text-align: center; margin: 12px 0 6px;
border-top: 1px dashed #e8e8e8; padding-top: 10px;
}
/* 起始大节点 */
.node-start {
background: linear-gradient(135deg, #1677ff, #0958d9); color: #fff;
border: none; font-size: 15px; font-weight: 700; padding: 14px; border-radius: 12px;
width: 60%; margin: 0 auto;
}
@media (max-width: 1100px) {
.flowchart-wrap { flex-wrap: wrap; }
.flow-column { max-width: 100%; min-width: 0; }
}
</style>
</head>
<body>
<div class="page-header">
<h1>员工健康咨询 — 完整业务流程图</h1>
<p>覆盖咨询专家(图文 / 视频)与咨询小助手两大路径,标注页面文件与状态流转</p>
</div>
<div class="legend">
<div class="legend-item"><div class="legend-dot" style="background:#e6f4ff;border:1px solid #91caff"></div>入口 / 导航页</div>
<div class="legend-item"><div class="legend-dot" style="background:#f6ffed;border:1px solid #b7eb8f"></div>功能页面</div>
<div class="legend-item"><div class="legend-dot" style="background:#fff7e6;border:1px solid #ffd591"></div>操作 / 选择</div>
<div class="legend-item"><div class="legend-dot" style="background:#fff0f6;border:1px dashed #ffadd2"></div>弹窗 / 对话框</div>
<div class="legend-item"><div class="legend-dot" style="border-radius:10px;background:#f5f5f5;border:1px solid #d9d9d9"></div>终态</div>
<div class="legend-item"><div class="legend-dot" style="border-radius:10px;background:#e6f4ff;border:1px solid #91caff"></div>进行中</div>
<div class="legend-item"><div class="legend-dot" style="border-radius:10px;background:#f6ffed;border:1px solid #b7eb8f"></div>已完成</div>
<div class="legend-item"><div class="legend-dot" style="border-radius:10px;background:#fff7e6;border:1px solid #ffd591"></div>已超时/待开始</div>
<div class="legend-item"><div class="legend-dot" style="border-radius:10px;background:#fff2f0;border:1px solid #ffccc7"></div>已拒绝</div>
<div class="legend-item"><div class="legend-dot" style="border-radius:10px;background:#f9f0ff;border:1px solid #d3adf7"></div>待确认</div>
</div>
<!-- 起始节点 -->
<div style="text-align:center;margin-bottom:8px;">
<div class="node node-start">健康咨询首页<span class="file-tag" style="color:rgba(255,255,255,.7)">index.html</span></div>
</div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<!-- 三列流程 -->
<div class="flowchart-wrap">
<!-- ========== 图文咨询 ========== -->
<div class="flow-column">
<div class="flow-column-title" style="color:#0958d9">📝 咨询专家 — 图文咨询</div>
<div class="node node-entry">找专家<span class="file-tag">find-expert.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">按医院/科室/疾病</div><div class="line"></div><div class="head"></div></div>
<div class="node node-page">专家列表<span class="file-tag">expert-list.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-page">专家详情<span class="file-tag">expert-profile.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">点击「图文咨询」</div><div class="line"></div><div class="head"></div></div>
<div class="node node-action">选择咨询人 &amp; 健康档案<span class="file-tag">select-person.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-progress">进行中 — 图文聊天<span class="file-tag">text-chat.html</span></div>
<div class="section-label">咨询结束后的状态分支</div>
<div class="branch-line"><div class="bl bl-l"></div><div class="bl bl-c"></div><div class="bl bl-r"></div></div>
<div class="branch-wrap">
<div class="branch">
<div class="node node-state s-timeout">已超时<span class="file-tag">record-detail-timeout.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-end">再次咨询</div>
</div>
<div class="branch">
<div class="node node-state s-done">已完成·未评价<span class="file-tag">record-detail-unrated.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">评价</div><div class="line"></div><div class="head"></div></div>
<div class="node node-dialog">评价医生<span class="file-tag">rate-doctor.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-done">已完成·已评价<span class="file-tag">record-detail-rated.html</span></div>
</div>
<div class="branch">
<div class="node node-dialog">结束咨询确认<span class="file-tag">end-consult-dialog.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">确认结束</div><div class="line"></div><div class="head"></div></div>
<div class="node node-dialog">评价医生<span class="file-tag">rate-doctor.html</span></div>
</div>
</div>
</div>
<!-- ========== 视频咨询 ========== -->
<div class="flow-column">
<div class="flow-column-title" style="color:#722ed1">🎥 咨询专家 — 视频咨询</div>
<div class="node node-entry">找专家<span class="file-tag">find-expert.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">按医院/科室/疾病</div><div class="line"></div><div class="head"></div></div>
<div class="node node-page">专家列表<span class="file-tag">expert-list.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-page">专家详情<span class="file-tag">expert-profile.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">点击「视频咨询」</div><div class="line"></div><div class="head"></div></div>
<div class="node node-action">预约视频咨询<span class="file-tag">video-booking.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">选择日期时段</div><div class="line"></div><div class="head"></div></div>
<div class="node node-action">选择咨询人 &amp; 健康档案<span class="file-tag">select-person.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-page">预约成功<span class="file-tag">video-success.html</span></div>
<div class="section-label">视频咨询状态流转</div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-confirm">待确认<span class="file-tag">video-detail-confirming.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">医生确认</div><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-wait">待开始<span class="file-tag">video-detail-pending.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">进入视频</div><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-done">已完成<span class="file-tag">video-detail-done.html</span></div>
<div class="section-label">异常状态分支</div>
<div class="branch-line"><div class="bl bl-l"></div><div class="bl bl-r"></div></div>
<div class="branch-wrap">
<div class="branch">
<div class="node node-state s-cancel">已取消<span class="file-tag">video-detail-cancelled.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-end">重新预约</div>
</div>
<div class="branch">
<div class="node node-state s-reject">已拒绝<span class="file-tag">video-detail-rejected.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-end">重新预约</div>
</div>
</div>
</div>
<!-- ========== 小助手咨询 ========== -->
<div class="flow-column" style="max-width:300px;min-width:260px">
<div class="flow-column-title" style="color:#389e0d">💬 咨询小助手</div>
<div class="node node-entry">首页点击「小助手」<span class="file-tag">index.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-progress">进行中 — 小助手聊天<span class="file-tag">assistant-chat.html</span></div>
<div class="arrow-down"><div class="line"></div><div class="arrow-label">结束咨询</div><div class="line"></div><div class="head"></div></div>
<div class="node node-state s-done">已完成 — 历史记录<span class="file-tag">assistant-chat-history.html</span></div>
<div class="section-label">咨询记录入口</div>
<div class="arrow-down"><div class="line"></div><div class="head"></div></div>
<div class="node node-entry">我的咨询<span class="file-tag">my-records.html</span></div>
<div style="font-size:11px;color:#8c8c8c;text-align:center;margin-top:10px;line-height:1.8;">
一级Tab:咨询专家 / 小助手<br>
二级Tab(专家):图文咨询 / 视频咨询<br>
列表按状态跳转到对应详情页
</div>
<div class="section-label">辅助页面</div>
<div style="display:flex;flex-direction:column;gap:8px;margin-top:8px;">
<div class="node node-dialog" style="width:100%">选择咨询人弹窗<span class="file-tag">select-person-dialog.html</span></div>
<div class="node node-dialog" style="width:100%">选择体检报告弹窗<span class="file-tag">select-report-dialog.html</span></div>
<div class="node node-dialog" style="width:100%">结束咨询确认弹窗<span class="file-tag">end-consult-dialog.html</span></div>
<div class="node node-page" style="width:100%">专家评价列表<span class="file-tag">expert-reviews.html</span></div>
<div class="node node-page" style="width:100%">医院详情<span class="file-tag">hospital-detail.html</span></div>
<div class="node node-page" style="width:100%">搜索页<span class="file-tag">search.html</span></div>
<div class="node node-page" style="width:100%">选择咨询记录<span class="file-tag">select-record.html</span></div>
<div class="node node-page" style="width:100%">咨询人详情<span class="file-tag">consult-person-detail.html</span></div>
<div class="node node-page" style="width:100%">添加健康档案<span class="file-tag">add-health-record.html</span></div>
</div>
</div>
</div>
<!-- 底部说明 -->
<div style="text-align:center;margin-top:36px;font-size:12px;color:#bfbfbf;">
员工端 · 健康咨询模块 · 业务流程图 &nbsp;|&nbsp;<?php echo count(glob('*.html')); ?> 个页面
</div>
<script>
// 统计当前目录页面数(静态标注)
document.querySelector('[style*="margin-top:36px"]').innerHTML =
'员工端 · 健康咨询模块 · 业务流程图';
</script>
</body>
</html>
@@ -264,8 +264,9 @@
</div>
<!-- 底部操作栏 -->
<div class="bottom-bar">
<button class="submit-btn active" id="submitBtn" onclick="submitConsult()">确定</button>
<div class="bottom-bar" style="display:flex;gap:12px;">
<button class="submit-btn" style="flex:1;background:#fff;color:#1677ff;border:1.5px solid #1677ff;" onclick="quickConsult()">快速咨询</button>
<button class="submit-btn active" id="submitBtn" style="flex:1;" onclick="submitConsult()">确定</button>
</div>
</div>
<!-- PLACEHOLDER_SCRIPT -->
@@ -298,6 +299,11 @@
}
/** [交互] 快速咨询 - 跳转聊天页,不发送健康档案卡片 */
function quickConsult() {
window.location.href = 'text-chat.html?from=quick';
}
/** [交互] 发送咨询 - 根据来源跳转不同页面 */
function submitConsult() {
var params = new URLSearchParams(window.location.search);
@@ -0,0 +1,152 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>发送档案</title>
<style>
/* ===== 全局重置 ===== */
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #f0f0f0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Microsoft YaHei", sans-serif;
}
/* ===== 手机壳模拟器 ===== */
.phone-shell {
width: 390px; height: 844px; border-radius: 44px;
background: #f5f5f5;
box-shadow: 0 20px 60px rgba(0,0,0,0.3), inset 0 0 0 2px #d0d0d0;
overflow: hidden; position: relative; display: flex; flex-direction: column;
}
/* ===== 状态栏 ===== */
.status-bar {
height: 54px; display: flex; align-items: flex-end; justify-content: space-between;
padding: 0 24px 8px; font-size: 14px; font-weight: 600; color: #333; flex-shrink: 0; background: #fff;
}
.status-bar .time { font-size: 15px; font-weight: 700; }
.status-bar .icons { display: flex; gap: 6px; align-items: center; font-size: 13px; }
/* ===== 导航栏 ===== */
.nav-bar {
height: 44px; display: flex; align-items: center; padding: 0 16px;
background: #fff; border-bottom: 1px solid #f0f0f0; flex-shrink: 0;
}
.nav-back { font-size: 22px; color: #333; text-decoration: none; margin-right: 8px; line-height: 1; cursor: pointer; }
.nav-title { font-size: 17px; font-weight: 600; color: #333; }
/* ===== 页面内容 ===== */
.page-content { flex: 1; overflow-y: auto; padding: 12px 16px 90px; background: #f5f5f5; }
/* ===== 咨询人信息头 ===== */
.person-header {
display: flex; align-items: center; gap: 12px; padding: 14px 16px;
border-radius: 14px; background: #fff; border: 1.5px solid #e8e8e8; margin-bottom: 12px;
}
.person-avatar { font-size: 28px; flex-shrink: 0; }
.person-info { flex: 1; }
.person-name { font-size: 15px; font-weight: 600; color: #333; }
.person-detail { font-size: 12px; color: #999; margin-top: 2px; }
.person-tag { font-size: 11px; background: #f0f5ff; color: #1677ff; padding: 2px 8px; border-radius: 10px; flex-shrink: 0; }
/* ===== 档案提示 ===== */
.section-tip { font-size: 13px; color: #999; margin-bottom: 10px; }
/* ===== 档案卡片 ===== */
.record-card {
display: flex; align-items: center; gap: 12px; padding: 14px 16px;
border-radius: 14px; border: 1.5px solid #e8e8e8; background: #fff;
margin-bottom: 10px; cursor: pointer; transition: border-color 0.15s, background 0.15s;
}
.record-card:active, .record-card.selected { border-color: #1677ff; background: #f0f7ff; }
.record-icon { width: 44px; height: 44px; border-radius: 12px; background: linear-gradient(135deg, #e8f4ff, #bae0ff); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.record-info { flex: 1; min-width: 0; }
.record-name { font-size: 14px; font-weight: 600; color: #333; }
.record-desc { font-size: 12px; color: #999; margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.record-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 6px; }
.record-tag { font-size: 10px; padding: 2px 6px; border-radius: 4px; }
.record-tag--orange { color: #d46b08; background: #fff7e6; }
.record-tag--blue { color: #1677ff; background: #e8f4ff; }
.record-meta { font-size: 11px; color: #bbb; margin-top: 4px; }
.record-check { width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid #ddd; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 12px; color: #fff; transition: all 0.15s; }
.record-card.selected .record-check { background: #1677ff; border-color: #1677ff; }
/* ===== 底部操作栏 ===== */
.bottom-bar {
position: absolute; bottom: 0; left: 0; right: 0;
padding: 12px 16px 34px; background: #fff;
border-top: 1px solid #f0f0f0;
}
.submit-btn {
width: 100%; padding: 13px; border-radius: 24px; font-size: 15px; font-weight: 600;
border: none; cursor: pointer; text-align: center;
}
.submit-btn.disabled { background: #e0e0e0; color: #aaa; pointer-events: none; }
.submit-btn.active { background: #1677ff; color: #fff; }
</style>
</head>
<body>
<div class="phone-shell">
<div class="status-bar">
<span class="time">9:41</span>
<span class="icons"><span>&#9679;&#9679;&#9679;&#9679;</span><span>WiFi</span><span>&#128267;</span></span>
</div>
<div class="nav-bar">
<a class="nav-back" onclick="history.back()"></a>
<span class="nav-title">发送档案</span>
</div>
<!-- PLACEHOLDER_CONTENT -->
<div class="page-content">
<!-- 当前咨询人信息 -->
<div class="person-header">
<span class="person-avatar">👤</span>
<div class="person-info">
<div class="person-name">张旭</div>
<div class="person-detail">28岁 · 男 · 170cm · 65kg</div>
</div>
<span class="person-tag">父亲</span>
</div>
<div class="section-tip">发送给医生的健康档案</div>
<!-- 档案1 -->
<div class="record-card selected" onclick="selectRecord(this)">
<div class="record-icon">📋</div>
<div class="record-info">
<div class="record-name">腰部疼痛咨询</div>
<div class="record-desc">久坐后腰部持续酸痛,弯腰时加重</div>
<div class="record-tags">
<span class="record-tag record-tag--orange">持续时间:1-2周</span>
</div>
<div class="record-meta">2026-04-10 创建</div>
</div>
<span class="record-check"></span>
</div>
<!-- 底部操作栏 -->
<div class="bottom-bar">
<!-- [交互] 点击发送选中的档案,返回聊天页 -->
<button class="submit-btn active" id="submitBtn" onclick="sendRecord()">发送档案</button>
</div>
<!-- PLACEHOLDER_SCRIPT -->
<script>
/** 选中档案 - 单选切换 */
function selectRecord(card) {
document.querySelectorAll('.record-card').forEach(function(c) { c.classList.remove('selected'); });
card.classList.add('selected');
}
/** [交互] 发送档案 - 返回聊天页 */
function sendRecord() {
history.back();
}
</script>
</div>
</body>
</html>
+14 -4
View File
@@ -176,8 +176,8 @@
<div class="bubble">您好,我是张建国医生,请问有什么可以帮助您的?请详细描述您的症状。</div>
</div>
<!-- [交互] 发送健康档案卡片 - 点击跳转到咨询人档案详情页 -->
<div class="msg-row mine">
<!-- [交互] 发送健康档案卡片 - 点击跳转到咨询人档案详情页;快速咨询模式下隐藏 -->
<div class="msg-row mine" id="healthRecordCard">
<div class="msg-avatar">😊</div>
<div class="bubble-record" style="cursor:pointer" onclick="location.href='consult-person-detail.html'">
<div class="bubble-record__header">
@@ -229,10 +229,13 @@
<div class="plus-panel" id="plusPanel">
<div class="plus-item"><div class="pi-icon">🖼️</div><div class="pi-label">图片</div></div>
<div class="plus-item"><div class="pi-icon">📷</div><div class="pi-label">拍摄</div></div>
<div class="plus-item"><div class="pi-icon">📄</div><div class="pi-label">发送文件</div></div>
<div class="plus-item"><div class="pi-icon">📍</div><div class="pi-label">发送位置</div></div>
<!-- [交互] 点击打开体检报告选择弹窗 -->
<div class="plus-item" onclick="openReportSheet()"><div class="pi-icon">📋</div><div class="pi-label">体检报告</div></div>
<!-- [交互] 跳转到选择档案弹窗页 -->
<div class="plus-item" onclick="location.href='select-person.html'"><div class="pi-icon">📁</div><div class="pi-label">选择档案</div></div>
<div class="plus-item" onclick="location.href='select-record.html'"><div class="pi-icon">📁</div><div class="pi-label">发送档案</div></div>
<!-- [交互] 点击结束咨询弹出确认弹窗 -->
</div>
</div>
@@ -285,7 +288,7 @@
</div>
<script>
/** 根据 ?from 参数设置返回按钮目标 */
/** 根据 ?from 参数设置返回按钮目标 & 快速咨询模式隐藏健康档案卡片 */
(function() {
var params = new URLSearchParams(window.location.search);
var from = params.get('from');
@@ -294,6 +297,13 @@
backBtn.href = 'record-detail.html';
} else if (from === 'expert-profile') {
backBtn.href = 'expert-profile.html';
} else if (from === 'quick') {
backBtn.href = 'select-person.html';
}
// 快速咨询模式:隐藏健康档案卡片消息
if (from === 'quick') {
var card = document.getElementById('healthRecordCard');
if (card) card.style.display = 'none';
}
})();
+6 -14
View File
@@ -133,23 +133,15 @@
<div class="section-title">上午</div>
<!-- [交互] 时间网格:点击选择可用时段,已约满不可选 -->
<div class="time-grid">
<div class="time-slot full"><div class="t">08:00</div><div class="remain">已约满</div></div>
<div class="time-slot full"><div class="t">08:30</div><div class="remain">已约满</div></div>
<div class="time-slot" onclick="selectSlot(this,'09:00')"><div class="t">09:00</div><div class="remain">剩余3名</div></div>
<div class="time-slot" onclick="selectSlot(this,'09:30')"><div class="t">09:30</div><div class="remain">剩余5名</div></div>
<div class="time-slot active" onclick="selectSlot(this,'10:00')"><div class="t">10:00</div><div class="remain">剩余2名</div></div>
<div class="time-slot" onclick="selectSlot(this,'10:30')"><div class="t">10:30</div><div class="remain">剩余4名</div></div>
</div>
<div class="time-slot full"><div class="t">08:00~10:00</div><div class="remain">已约满</div></div>
<div class="time-slot" onclick="selectSlot(this,'10:00~12:00')"><div class="t">10:00~12:00</div><div class="remain">剩余3名</div></div>
</div>
<!-- 下午时段 -->
<div class="section-title">下午</div>
<div class="time-grid" style="margin-bottom: 20px;">
<div class="time-slot" onclick="selectSlot(this,'14:00')"><div class="t">14:00</div><div class="remain">剩余3名</div></div>
<div class="time-slot" onclick="selectSlot(this,'14:30')"><div class="t">14:30</div><div class="remain">剩余5名</div></div>
<div class="time-slot full"><div class="t">15:00</div><div class="remain">已约满</div></div>
<div class="time-slot" onclick="selectSlot(this,'15:30')"><div class="t">15:30</div><div class="remain">剩余1名</div></div>
<div class="time-slot" onclick="selectSlot(this,'16:00')"><div class="t">16:00</div><div class="remain">剩余6名</div></div>
<div class="time-slot" onclick="selectSlot(this,'16:30')"><div class="t">16:30</div><div class="remain">剩余4名</div></div>
</div>
<div class="time-slot" onclick="selectSlot(this,'14:00~16:00')"><div class="t">14:00~16:00</div><div class="remain">剩余3名</div></div>
<div class="time-slot" onclick="selectSlot(this,'16:00~18:00')"><div class="t">16:00~18:00</div><div class="remain">剩余5名</div></div>
</div>
</div>
<!-- 底部确认栏 -->
<div class="bottom-bar">