feat: 体检模块完善 — 新增员工端操作流程讲解页,管理端各配置页新增/完善功能
- 员工端:新增操作流程讲解页 process-guide.html 及详情页 process-guide-detail.html,首页辅助入口跳转 - 管理端体检配置页完善:医院基础、体检套餐、体检须知、操作说明、报告模板、标准基础、标准分类、标准医院等页面新增抽屉弹窗/表单/表格/筛选/体检类型等交互
This commit is contained in:
@@ -356,8 +356,8 @@
|
||||
|
||||
<div class="section-title">辅助入口</div>
|
||||
<div class="quick-grid">
|
||||
<!-- [交互] 操作流程讲解入口,后续可跳转至体检流程说明页 -->
|
||||
<div class="quick-card">
|
||||
<!-- [交互] 点击跳转至: process-guide.html -->
|
||||
<div class="quick-card" onclick="location.href='process-guide.html'">
|
||||
<div class="quick-card__icon" style="background:#eef9ff; color:#1677ff;">
|
||||
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 8v4l2.5 2.5"/></svg>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,478 @@
|
||||
<!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; }
|
||||
:root {
|
||||
--primary: #13c2c2;
|
||||
--primary-dark: #0f9b9b;
|
||||
--primary-light: #e6fffb;
|
||||
--text-primary: #1a1a1a;
|
||||
--text-secondary: #666;
|
||||
--text-muted: #8c8c8c;
|
||||
--bg-page: #f0f2f5;
|
||||
--bg-content: #f7f9fb;
|
||||
--blue: #1677ff;
|
||||
}
|
||||
body {
|
||||
background: var(--bg-page);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
min-height: 100vh;
|
||||
padding: 20px;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', sans-serif;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.phone-shell {
|
||||
width: 390px;
|
||||
min-height: 844px;
|
||||
background: var(--bg-content);
|
||||
border-radius: 44px;
|
||||
box-shadow: 0 20px 60px rgba(0,0,0,0.25), inset 0 0 0 2px #e0e0e0;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.phone-status-bar {
|
||||
height: 44px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 24px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.phone-status-bar .time { font-size: 15px; font-weight: 700; }
|
||||
.phone-status-bar .icons { display: flex; gap: 6px; align-items: center; }
|
||||
.nav-bar {
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 16px;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
}
|
||||
.nav-back {
|
||||
font-size: 18px;
|
||||
color: var(--text-primary);
|
||||
cursor: pointer;
|
||||
line-height: 1;
|
||||
text-decoration: none;
|
||||
}
|
||||
.nav-title {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
color: var(--text-primary);
|
||||
max-width: 220px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.scroll-content {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
.scroll-content::-webkit-scrollbar { display: none; }
|
||||
|
||||
/* ===== 图文富文本页 ===== */
|
||||
.article-hero {
|
||||
background: linear-gradient(135deg, #e8f4ff 0%, #f0f8ff 100%);
|
||||
padding: 24px 16px 20px;
|
||||
border-bottom: 1px solid #eef3f8;
|
||||
}
|
||||
.article-hero__tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
height: 24px;
|
||||
padding: 0 10px;
|
||||
border-radius: 12px;
|
||||
background: #e6f4ff;
|
||||
color: var(--blue);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.article-hero__icon {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 14px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--blue);
|
||||
box-shadow: 0 6px 16px rgba(22, 119, 255, 0.12);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.article-hero__title {
|
||||
font-size: 22px;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
line-height: 1.3;
|
||||
}
|
||||
.article-body {
|
||||
background: #fff;
|
||||
padding: 20px 16px 32px;
|
||||
}
|
||||
.article-intro {
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 20px;
|
||||
padding: 14px 16px;
|
||||
background: #f7f9fb;
|
||||
border-radius: 12px;
|
||||
border-left: 3px solid var(--primary);
|
||||
}
|
||||
.article-step {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
.article-step:last-of-type { margin-bottom: 0; }
|
||||
.article-step__num {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
border-radius: 50%;
|
||||
background: var(--primary);
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
margin-top: 2px;
|
||||
}
|
||||
.article-step__body { flex: 1; min-width: 0; }
|
||||
.article-step__title {
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.article-step__text {
|
||||
font-size: 14px;
|
||||
line-height: 1.7;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.article-tips {
|
||||
margin-top: 22px;
|
||||
background: var(--primary-light);
|
||||
border: 1px solid #d4f2ef;
|
||||
border-radius: 14px;
|
||||
padding: 14px 16px;
|
||||
}
|
||||
.article-tips__title {
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
color: var(--primary-dark);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.article-tips__text {
|
||||
font-size: 13px;
|
||||
line-height: 1.7;
|
||||
color: #4d6a68;
|
||||
}
|
||||
|
||||
/* ===== 视频播放页 ===== */
|
||||
.video-page { padding: 14px 16px 28px; }
|
||||
.video-player {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
aspect-ratio: 16 / 9;
|
||||
border-radius: 16px;
|
||||
overflow: hidden;
|
||||
background: #1a1a1a;
|
||||
}
|
||||
.video-player__poster {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(135deg, #0f9b9b 0%, #13c2c2 55%, #36cfc9 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: rgba(255,255,255,0.22);
|
||||
}
|
||||
.video-player__play {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 58px;
|
||||
height: 58px;
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background: rgba(255,255,255,0.92);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.3);
|
||||
transition: transform 0.15s;
|
||||
}
|
||||
.video-player__play:active { transform: translate(-50%, -50%) scale(0.94); }
|
||||
.video-player__play svg { color: var(--primary); }
|
||||
.video-player__meta {
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
right: 12px;
|
||||
bottom: 26px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
text-shadow: 0 1px 3px rgba(0,0,0,0.5);
|
||||
}
|
||||
.video-player__track {
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
right: 12px;
|
||||
bottom: 12px;
|
||||
height: 3px;
|
||||
border-radius: 2px;
|
||||
background: rgba(255,255,255,0.3);
|
||||
overflow: hidden;
|
||||
}
|
||||
.video-player__progress {
|
||||
height: 100%;
|
||||
width: 0;
|
||||
background: #fff;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.video-info { padding: 18px 4px 4px; }
|
||||
.video-info__tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
height: 22px;
|
||||
padding: 0 10px;
|
||||
border-radius: 11px;
|
||||
background: var(--primary-light);
|
||||
color: var(--primary);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.video-info__title {
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.video-info__desc {
|
||||
font-size: 13px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.video-desc-card {
|
||||
margin-top: 16px;
|
||||
background: #fff;
|
||||
border-radius: 16px;
|
||||
padding: 16px;
|
||||
box-shadow: 0 4px 14px rgba(0,0,0,0.05);
|
||||
border: 1px solid #f0f0f0;
|
||||
}
|
||||
.video-desc-card__title {
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.video-desc-card__dot {
|
||||
width: 4px;
|
||||
height: 16px;
|
||||
border-radius: 2px;
|
||||
background: var(--primary);
|
||||
}
|
||||
.video-desc-card__text {
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="phone-shell">
|
||||
<div class="phone-status-bar">
|
||||
<span class="time">12:00</span>
|
||||
<div class="icons">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M1 6l5 5 5-5"/><path d="M4 9l3 3 3-3" opacity="0.5"/></svg>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="1" y="6" width="18" height="12" rx="2"/><path d="M21 10v4"/></svg>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-bar">
|
||||
<a class="nav-back" href="process-guide.html">‹</a>
|
||||
<span class="nav-title" id="navTitle">讲解详情</span>
|
||||
</div>
|
||||
|
||||
<div class="scroll-content" id="scrollContent"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var GUIDES = {
|
||||
image: {
|
||||
booking: {
|
||||
title: '体检预约流程',
|
||||
icon: '<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="17" rx="2"/><line x1="16" y1="2.5" x2="16" y2="6"/><line x1="8" y1="2.5" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/><path d="M8 14h3"/><path d="M8 17h5"/></svg>',
|
||||
intro: '在健康体检平台完成一次体检预约,共需四步,约 2 分钟即可完成。请按以下步骤操作。',
|
||||
steps: [
|
||||
{ title: '进入预约页面', text: '打开「健康体检」首页,点击「体检预约」进入预约页面。' },
|
||||
{ title: '选择医院与项目', text: '选择体检医院与体检项目(常规体检 / 胃肠镜体检)。' },
|
||||
{ title: '选择日期与时间段', text: '选择体检日期与时间段,系统将实时显示可预约号源。' },
|
||||
{ title: '确认并提交', text: '确认预约信息无误后提交,预约成功后可在「我的预约」中查看。' }
|
||||
],
|
||||
tips: '如需改期或取消,请提前在「我的预约」中操作,避免占用号源。'
|
||||
},
|
||||
checkin: {
|
||||
title: '到院体检流程',
|
||||
icon: '<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 9h1M14 9h1M9 13h1M14 13h1M9 17h1M14 17h1"/></svg>',
|
||||
intro: '体检当日请携带身份证,按以下五步完成到院体检。',
|
||||
steps: [
|
||||
{ title: '前台登记', text: '携带身份证到体检中心前台登记。' },
|
||||
{ title: '缴费确认', text: '核对单位信息与体检项目。' },
|
||||
{ title: '逐项检查', text: '按指引单到各科室完成检查。' },
|
||||
{ title: '交回指引单', text: '检查完成后将指引单交回前台。' },
|
||||
{ title: '领取报告', text: '报告生成后在线查看或到院领取。' }
|
||||
],
|
||||
tips: '空腹项目(如抽血、腹部 B 超)请保持空腹,可在检查结束后进食。'
|
||||
},
|
||||
report: {
|
||||
title: '报告查询流程',
|
||||
icon: '<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><line x1="8" y1="13" x2="16" y2="13"/><line x1="8" y1="17" x2="14" y2="17"/></svg>',
|
||||
intro: '体检完成后,报告将上传至平台,按以下三步在线查询。',
|
||||
steps: [
|
||||
{ title: '进入体检报告', text: '在首页点击「体检报告」进入报告页面。' },
|
||||
{ title: '查看报告列表', text: '查看报告列表与最新报告。' },
|
||||
{ title: '查看详情与解读', text: '点击查看报告详情与指标解读。' }
|
||||
],
|
||||
tips: '异常指标可点击「一键咨询」获取专家解读。'
|
||||
}
|
||||
},
|
||||
video: {
|
||||
gastro: {
|
||||
title: '胃肠镜检查流程',
|
||||
desc: '检查前准备与检查过程讲解',
|
||||
duration: '03:20',
|
||||
seconds: 200,
|
||||
icon: '<svg width="84" height="84" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/><path d="M8 11h6"/><path d="M11 8v6"/></svg>',
|
||||
intro: '本视频讲解胃肠镜检查的完整流程,包括检查前饮食与清肠准备、检查当天的注意事项,以及检查过程与检查后的恢复要点,帮助您提前了解、从容应对。'
|
||||
},
|
||||
notice: {
|
||||
title: '体检注意事项',
|
||||
desc: '体检前饮食、作息等准备事项讲解',
|
||||
duration: '02:10',
|
||||
seconds: 130,
|
||||
icon: '<svg width="84" height="84" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg>',
|
||||
intro: '本视频讲解体检前的各项准备事项,包括饮食控制、作息调整、用药注意以及体检当天的穿着与携带物品,帮助您顺利完成体检。'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var params = new URLSearchParams(window.location.search);
|
||||
var type = params.get('type') === 'video' ? 'video' : 'image';
|
||||
var id = params.get('id');
|
||||
var data = (GUIDES[type] && GUIDES[type][id]) || GUIDES.image.booking;
|
||||
|
||||
document.getElementById('navTitle').textContent = data.title;
|
||||
|
||||
var playSvg = '<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M8 5v14l11-7z"/></svg>';
|
||||
var pauseSvg = '<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></svg>';
|
||||
|
||||
function renderArticle(g) {
|
||||
var steps = g.steps.map(function(s, i) {
|
||||
return '<div class="article-step">'
|
||||
+ '<div class="article-step__num">' + (i + 1) + '</div>'
|
||||
+ '<div class="article-step__body">'
|
||||
+ '<div class="article-step__title">' + s.title + '</div>'
|
||||
+ '<div class="article-step__text">' + s.text + '</div>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
}).join('');
|
||||
return '<div class="article-hero">'
|
||||
+ '<div class="article-hero__title">' + g.title + '</div>'
|
||||
+ '</div>'
|
||||
+ '<div class="article-body">'
|
||||
+ '<div class="article-intro">' + g.intro + '</div>'
|
||||
+ steps
|
||||
+ '<div class="article-tips">'
|
||||
+ '<div class="article-tips__title">💡 温馨提示</div>'
|
||||
+ '<div class="article-tips__text">' + g.tips + '</div>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
}
|
||||
|
||||
function renderVideo(g) {
|
||||
return '<div class="video-page">'
|
||||
+ '<div class="video-player">'
|
||||
+ '<div class="video-player__poster">' + g.icon + '</div>'
|
||||
+ '<button class="video-player__play" id="playBtn" onclick="togglePlay()">' + pauseSvg + '</button>'
|
||||
+ '<div class="video-player__meta"><span id="timeLabel">00:00</span><span>' + g.duration + '</span></div>'
|
||||
+ '<div class="video-player__track"><div class="video-player__progress" id="progress"></div></div>'
|
||||
+ '</div>'
|
||||
+ '<div class="video-info">'
|
||||
+ '<div class="video-info__tag">视频讲解</div>'
|
||||
+ '<div class="video-info__title">' + g.title + '</div>'
|
||||
+ '</div>'
|
||||
+ '<div class="video-desc-card">'
|
||||
+ '<div class="video-desc-card__title"><span class="video-desc-card__dot"></span>视频简介</div>'
|
||||
+ '<div class="video-desc-card__text">' + g.intro + '</div>'
|
||||
+ '</div>'
|
||||
+ '</div>';
|
||||
}
|
||||
|
||||
document.getElementById('scrollContent').innerHTML = type === 'video' ? renderVideo(data) : renderArticle(data);
|
||||
|
||||
// 视频播放控制(进入页面直接播放)
|
||||
if (type === 'video') {
|
||||
var playing = true;
|
||||
var elapsed = 0;
|
||||
var total = data.seconds;
|
||||
var speed = total / 24; // 原型演示:约 24 秒播放完毕
|
||||
var timer = null;
|
||||
|
||||
function fmt(s) {
|
||||
s = Math.floor(s);
|
||||
var m = Math.floor(s / 60), sec = s % 60;
|
||||
return (m < 10 ? '0' + m : m) + ':' + (sec < 10 ? '0' + sec : sec);
|
||||
}
|
||||
function update() {
|
||||
document.getElementById('timeLabel').textContent = fmt(elapsed);
|
||||
document.getElementById('progress').style.width = (elapsed / total * 100) + '%';
|
||||
}
|
||||
function play() {
|
||||
playing = true;
|
||||
document.getElementById('playBtn').innerHTML = pauseSvg;
|
||||
timer = setInterval(function() {
|
||||
elapsed += 0.2 * speed;
|
||||
if (elapsed >= total) { elapsed = total; update(); pause(); }
|
||||
update();
|
||||
}, 200);
|
||||
}
|
||||
function pause() {
|
||||
playing = false;
|
||||
document.getElementById('playBtn').innerHTML = playSvg;
|
||||
clearInterval(timer);
|
||||
}
|
||||
window.togglePlay = function() { if (playing) { pause(); } else { play(); } };
|
||||
play();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,339 @@
|
||||
<!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; }
|
||||
:root {
|
||||
--primary: #13c2c2;
|
||||
--primary-light: #e6fffb;
|
||||
--text-primary: #1a1a1a;
|
||||
--text-secondary: #666;
|
||||
--text-muted: #8c8c8c;
|
||||
--bg-page: #f0f2f5;
|
||||
--bg-content: #f7f9fb;
|
||||
--danger: #e84c4c;
|
||||
--blue: #1677ff;
|
||||
--orange: #fa8c16;
|
||||
}
|
||||
body {
|
||||
background: var(--bg-page);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
min-height: 100vh;
|
||||
padding: 20px;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', sans-serif;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.phone-shell {
|
||||
width: 390px;
|
||||
min-height: 844px;
|
||||
background: var(--bg-content);
|
||||
border-radius: 44px;
|
||||
box-shadow: 0 20px 60px rgba(0,0,0,0.25), inset 0 0 0 2px #e0e0e0;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.phone-status-bar {
|
||||
height: 44px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 24px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.phone-status-bar .time { font-size: 15px; font-weight: 700; }
|
||||
.phone-status-bar .icons { display: flex; gap: 6px; align-items: center; }
|
||||
.nav-bar {
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 16px;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
}
|
||||
.nav-back {
|
||||
font-size: 18px;
|
||||
color: var(--text-primary);
|
||||
cursor: pointer;
|
||||
line-height: 1;
|
||||
text-decoration: none;
|
||||
}
|
||||
.nav-title {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
font-size: 17px;
|
||||
font-weight: 600;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.scroll-content {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
.scroll-content::-webkit-scrollbar { display: none; }
|
||||
.page-body { padding: 14px 16px 28px; }
|
||||
|
||||
/* 分段筛选 */
|
||||
.seg-tabs {
|
||||
display: flex;
|
||||
background: #fff;
|
||||
border-radius: 12px;
|
||||
padding: 4px;
|
||||
margin-bottom: 14px;
|
||||
box-shadow: 0 4px 14px rgba(0,0,0,0.05);
|
||||
border: 1px solid #f0f0f0;
|
||||
}
|
||||
.seg-tab {
|
||||
flex: 1;
|
||||
height: 36px;
|
||||
border-radius: 9px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
color: var(--text-secondary);
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.seg-tab.active {
|
||||
background: var(--primary);
|
||||
color: #fff;
|
||||
box-shadow: 0 4px 10px rgba(19, 194, 194, 0.25);
|
||||
}
|
||||
|
||||
/* 讲解列表 */
|
||||
.guide-list { display: flex; flex-direction: column; gap: 12px; }
|
||||
.guide-card {
|
||||
background: #fff;
|
||||
border-radius: 16px;
|
||||
padding: 14px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
box-shadow: 0 4px 14px rgba(0,0,0,0.05);
|
||||
border: 1px solid #f0f0f0;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
||||
}
|
||||
.guide-card:active { transform: scale(0.985); }
|
||||
.guide-card[hidden] { display: none; }
|
||||
.guide-card__thumb {
|
||||
width: 76px;
|
||||
height: 60px;
|
||||
border-radius: 12px;
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.guide-card__thumb--video {
|
||||
background: linear-gradient(135deg, #13c2c2 0%, #36cfc9 100%);
|
||||
}
|
||||
.guide-card__thumb--image {
|
||||
background: linear-gradient(135deg, #e8f4ff 0%, #f0f8ff 100%);
|
||||
}
|
||||
.guide-card__play {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255,255,255,0.95);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.guide-card__content { flex: 1; min-width: 0; }
|
||||
.guide-card__title {
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.guide-card__desc {
|
||||
font-size: 12px;
|
||||
line-height: 1.6;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 8px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.guide-card__meta {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.guide-card__tag {
|
||||
height: 20px;
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
.guide-card__tag--video { background: var(--primary-light); color: var(--primary); }
|
||||
.guide-card__tag--image { background: #eef9ff; color: var(--blue); }
|
||||
.guide-card__duration {
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.guide-card__arrow {
|
||||
font-size: 18px;
|
||||
color: #c6c6c6;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.bottom-spacer { height: 16px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="phone-shell">
|
||||
<div class="phone-status-bar">
|
||||
<span class="time">12:00</span>
|
||||
<div class="icons">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M1 6l5 5 5-5"/><path d="M4 9l3 3 3-3" opacity="0.5"/></svg>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="1" y="6" width="18" height="12" rx="2"/><path d="M21 10v4"/></svg>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-bar">
|
||||
<a class="nav-back" href="index.html">‹</a>
|
||||
<span class="nav-title">操作流程讲解</span>
|
||||
</div>
|
||||
|
||||
<div class="scroll-content">
|
||||
<div class="page-body">
|
||||
<!-- 分段筛选 -->
|
||||
<div class="seg-tabs">
|
||||
<div class="seg-tab active" data-filter="all" onclick="filterGuides('all', this)">全部</div>
|
||||
<div class="seg-tab" data-filter="video" onclick="filterGuides('video', this)">视频讲解</div>
|
||||
<div class="seg-tab" data-filter="image" onclick="filterGuides('image', this)">图文讲解</div>
|
||||
</div>
|
||||
|
||||
<!-- 讲解列表 -->
|
||||
<div class="guide-list">
|
||||
<!-- 图文:预约流程 -->
|
||||
<div class="guide-card" data-type="image" onclick="openGuide('booking')">
|
||||
<div class="guide-card__thumb guide-card__thumb--image">
|
||||
<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#1677ff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="17" rx="2"/><line x1="16" y1="2.5" x2="16" y2="6"/><line x1="8" y1="2.5" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/><path d="M8 14h3"/><path d="M8 17h5"/></svg>
|
||||
</div>
|
||||
<div class="guide-card__content">
|
||||
<div class="guide-card__title">体检预约流程</div>
|
||||
<div class="guide-card__desc">选择医院、项目、日期,完成体检预约</div>
|
||||
<div class="guide-card__meta">
|
||||
<span class="guide-card__tag guide-card__tag--image">图文</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="guide-card__arrow">›</span>
|
||||
</div>
|
||||
|
||||
<!-- 图文:到院流程 -->
|
||||
<div class="guide-card" data-type="image" onclick="openGuide('checkin')">
|
||||
<div class="guide-card__thumb guide-card__thumb--image">
|
||||
<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#1677ff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 9h1M14 9h1M9 13h1M14 13h1M9 17h1M14 17h1"/></svg>
|
||||
</div>
|
||||
<div class="guide-card__content">
|
||||
<div class="guide-card__title">到院体检流程</div>
|
||||
<div class="guide-card__desc">前台登记、逐项检查、领取报告</div>
|
||||
<div class="guide-card__meta">
|
||||
<span class="guide-card__tag guide-card__tag--image">图文</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="guide-card__arrow">›</span>
|
||||
</div>
|
||||
|
||||
<!-- 图文:报告查询 -->
|
||||
<div class="guide-card" data-type="image" onclick="openGuide('report')">
|
||||
<div class="guide-card__thumb guide-card__thumb--image">
|
||||
<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="#1677ff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><line x1="8" y1="13" x2="16" y2="13"/><line x1="8" y1="17" x2="14" y2="17"/></svg>
|
||||
</div>
|
||||
<div class="guide-card__content">
|
||||
<div class="guide-card__title">报告查询流程</div>
|
||||
<div class="guide-card__desc">查看报告列表与指标解读详情</div>
|
||||
<div class="guide-card__meta">
|
||||
<span class="guide-card__tag guide-card__tag--image">图文</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="guide-card__arrow">›</span>
|
||||
</div>
|
||||
|
||||
<!-- 视频:胃肠镜检查 -->
|
||||
<div class="guide-card" data-type="video" onclick="openGuide('gastro')">
|
||||
<div class="guide-card__thumb guide-card__thumb--video">
|
||||
<div class="guide-card__play">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="#13c2c2"><path d="M8 5v14l11-7z"/></svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="guide-card__content">
|
||||
<div class="guide-card__title">胃肠镜检查流程</div>
|
||||
<div class="guide-card__desc">检查前准备与检查过程讲解</div>
|
||||
<div class="guide-card__meta">
|
||||
<span class="guide-card__tag guide-card__tag--video">视频</span>
|
||||
<span class="guide-card__duration">时长 03:20</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="guide-card__arrow">›</span>
|
||||
</div>
|
||||
|
||||
<!-- 视频:注意事项 -->
|
||||
<div class="guide-card" data-type="video" onclick="openGuide('notice')">
|
||||
<div class="guide-card__thumb guide-card__thumb--video">
|
||||
<div class="guide-card__play">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="#13c2c2"><path d="M8 5v14l11-7z"/></svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="guide-card__content">
|
||||
<div class="guide-card__title">体检注意事项</div>
|
||||
<div class="guide-card__desc">体检前饮食、作息等准备事项讲解</div>
|
||||
<div class="guide-card__meta">
|
||||
<span class="guide-card__tag guide-card__tag--video">视频</span>
|
||||
<span class="guide-card__duration">时长 02:10</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="guide-card__arrow">›</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bottom-spacer"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 分段筛选
|
||||
function filterGuides(type, el) {
|
||||
document.querySelectorAll('.seg-tab').forEach(function(t){ t.classList.remove('active'); });
|
||||
el.classList.add('active');
|
||||
document.querySelectorAll('.guide-card').forEach(function(card){
|
||||
if (type === 'all' || card.dataset.type === type) {
|
||||
card.removeAttribute('hidden');
|
||||
} else {
|
||||
card.setAttribute('hidden', '');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 打开讲解:跳转到对应详情页(图文 → 富文本页,视频 → 播放页)
|
||||
function openGuide(key) {
|
||||
var type = (key === 'gastro' || key === 'notice') ? 'video' : 'image';
|
||||
location.href = 'process-guide-detail.html?type=' + type + '&id=' + key;
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user