Files
mama-box/topic/chanjian-js/index.html

104 lines
8.6 KiB
HTML
Raw 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,maximum-scale=1,user-scalable=no,viewport-fit=cover">
<meta name="format-detection" content="telephone=no">
<title>产检时间表</title>
<!-- 孕期计算器 · 产检时间表(2026-11-04 用户从 20 个备选里选了带星的 10 个,本页是其中之一)。
产检时间按《孕前和孕期保健指南(2018)》(中华医学会妇产科学分会)的 7~11 次常规产检孕周窗口,换算成日期;
每次「查什么」只列常规项目,具体以产检医院安排为准。做完可以打勾(记在本机 mmbox.calc.chanjian)。
预产期优先用预产期计算器填过的值。
共用 ../_shared/calc.css + calc.js(返回 / 禁回弹 / 日期按北京时间 / 记住上次填的值);自成一页,不引 app.js。 -->
<link rel="stylesheet" href="../_shared/calc.css?v=26110453">
<link rel="stylesheet" href="../_shared/wizard.css?v=26110453">
<style>:root{--c:#2F86C9;--c2:#6CB6F0;--cbg:#EAF5FF}.tl .ck{flex:none;align-self:flex-start;height:28px;padding:0 10px;margin-top:1px;border-radius:99px;background:#F4F6F8;color:var(--m);font-size:12px;font-weight:800}.tl li.ok .ck{background:var(--c);color:#fff}.tl li.ok .m{opacity:.55}.tl li.ok .d{border-color:var(--c);background:var(--c);box-shadow:none}.tl .m span.it{margin-top:3px;color:var(--t)}</style>
</head>
<body>
<div id="scroll">
<header class="bar" id="bar">
<button class="back" id="back" aria-label="返回"><svg viewBox="0 0 24 24"><path d="M15 5l-7 7 7 7"/></svg></button>
<span class="t">孕期计算器</span>
</header>
<section class="hd"><p>孕期计算器</p><h1>产检时间表</h1><span>按预产期排好每一次产检:哪天去、查什么,做完打个勾</span></section>
<section class="calc">
<div class="res" id="res"><div class="empty">填好预产期,马上排出时间表</div></div>
<div class="tabs" id="tabs" data-q="你想按哪个排?"><button type="button" data-v="due">按预产期</button><button type="button" data-v="lmp">按末次月经</button></div>
<div class="fld" id="fDue"><label class="lb" for="cDue">预产期</label><input class="in num" type="date" id="cDue"></div>
<div class="fld hide" id="fLmp"><label class="lb" for="cLmp">末次月经第一天<small>按 28 天周期算</small></label><input class="in num" type="date" id="cLmp"></div>
</section>
<section class="sec hide" id="sPlan">
<h2>我的产检时间表</h2>
<p class="lead">28 周前约 4 周一次,28~36 周两周一次,36 周后每周一次</p>
<ol class="tl" id="tl"></ol>
</section>
<div class="tip"><b>要空腹的几次:</b>第一次建档抽血、糖耐(OGTT)一般要空腹,前一晚 10 点后别吃东西;具体看医院通知。<br><b>错过不能补的:</b>NT(11~13+6 周)、大排畸(20~24 周)、糖耐(24~28 周)都有时间窗口,提前预约。</div>
<p class="foot">按《孕前和孕期保健指南(2018)》常规时间排,具体项目和时间以产检医院安排为准。</p>
</div>
<script src="../_shared/calc.js?v=26110453"></script>
<script>
(function () {
'use strict';
var C = window.CK, $ = C.$;
C.shell();
var DAY = C.DAY, T = C.today();
var st = C.store('mmbox.calc.chanjian', { m: 'due', due: '', lmp: '', ok: {} });
if (!st.due && !st.lmp) { var sd = C.savedDue(); if (!isNaN(sd)) st.due = C.fmt(sd); }
$('#cDue').min = C.fmt(T - 60 * DAY); $('#cDue').max = C.fmt(T + 300 * DAY);
$('#cLmp').max = C.fmt(T); $('#cLmp').min = C.fmt(T - 300 * DAY);
/* [名称, 起始周, 结束周(含), 查什么, 要点] */
var V = [
['第 1 次 · 建档', 6, 13.86, '问诊建档、血常规、尿常规、血型(ABO + Rh)、肝肾功能、血糖、乙肝 / 梅毒 / 艾滋病筛查、甲状腺功能、早孕 B 超', '确认宫内孕和胎心,拿孕妇手册;抽血要空腹'],
['NT 检查', 11, 13.86, 'B 超测胎儿颈后透明层厚度,可同时做早唐', '错过就不能补,提前预约'],
['第 2 次 · 唐筛 / 无创', 14, 19.86, '中唐(15~20+6 周)或无创 DNA(12~22+6 周),血常规、尿常规、听胎心', '高龄或高风险的医生会建议羊水穿刺'],
['第 3 次 · 大排畸', 20, 24, '系统超声看宝宝结构,血常规、尿常规', '宝宝不配合可能要多照几次'],
['第 4 次 · 糖耐', 24, 28, '75 克葡萄糖耐量试验(空腹 + 喝糖水后 1 小时、2 小时抽血)、血常规、尿常规', '前一晚 10 点后禁食'],
['第 5 次', 29, 32, '产科 B 超(胎位、胎儿大小、羊水)、血常规、尿常规、听胎心', '开始两周一次'],
['第 6 次', 33, 34.86, '血常规、尿常规、听胎心、宫高腹围', '可以开始准备待产包'],
['第 7 次 · B 族链球菌', 35, 36.86, 'GBS 筛查(35~37 周)、胎心监护(34 周起)、肝功能、血常规', '确定生产医院和方式'],
['第 8 次', 37, 37.86, '胎心监护、B 超(胎位、羊水、估重)、宫颈评估', '之后每周一次'],
['第 9 次', 38, 38.86, '胎心监护、听胎心、宫高腹围', ''],
['第 10 次', 39, 39.86, '胎心监护、B 超看羊水', ''],
['第 11 次', 40, 40.86, '胎心监护、B 超、宫颈评估,过了 41 周医生一般安排住院催产', '']
];
var tabUi = C.seg($('#tabs'), st, 'm', function () { ui(); paint(); });
function ui() { $('#fDue').classList.toggle('hide', st.m !== 'due'); $('#fLmp').classList.toggle('hide', st.m !== 'lmp'); $('#cDue').value = st.due; $('#cLmp').value = st.lmp; }
function start() { var d; if (st.m === 'due') { d = C.parse(st.due); return isNaN(d) ? NaN : d - 280 * DAY; } d = C.parse(st.lmp); return d; }
function range(a, b) { return a === b ? C.cn(a) : C.cn(a) + ' ~ ' + C.cn(b); }
function paint() {
st.save();
var s0 = start(), R = $('#res');
$('#sPlan').classList.toggle('hide', isNaN(s0));
if (isNaN(s0)) { R.innerHTML = '<div class="empty">填好预产期,马上排出时间表</div>'; return; }
var nx = null, done = 0;
var h = V.map(function (v, i) {
var a = s0 + Math.round(v[1] * 7) * DAY, b = s0 + Math.round(v[2] * 7) * DAY, ok = !!st.ok[i], now = T >= a && T <= b, past = T > b;
if (ok) done++;
if (!ok && !past && !nx) nx = { v: v, a: a, b: b, now: now };
return '<li class="' + (ok ? 'ok' : now ? 'now' : past ? 'done' : '') + '"><i class="d"></i><div class="m"><b>' + v[0] + (now && !ok ? '<em>就是现在</em>' : '') + '</b>' +
'<span><i class="num">' + range(a, b) + '</i> · 孕 ' + Math.floor(v[1]) + '~' + Math.floor(v[2]) + (v[2] % 1 ? '+6' : '') + ' 周</span><span class="it">' + v[3] + '</span>' + (v[4] ? '<span>' + v[4] + '</span>' : '') + '</div>' +
'<button type="button" class="ck" data-i="' + i + '">' + (ok ? '已做 ✓' : '做完了') + '</button></li>';
}).join('');
$('#tl').innerHTML = h;
R.innerHTML = nx ? '<small>' + (nx.now ? '这次产检就是现在' : '下一次产检') + '</small><b class="big">' + nx.v[0].replace(/^第 \d+ 次 · /, '') + '</b>' +
'<div class="row"><div><small>建议时间</small><b class="num" style="font-size:15px">' + range(nx.a, nx.b) + '</b></div><div><small>' + (nx.now ? '窗口还剩' : '还有') + '</small><b class="num">' + Math.max(0, Math.round(((nx.now ? nx.b : nx.a) - T) / DAY)) + ' 天</b></div></div>' +
'<div class="pg"><i style="width:' + (done / V.length * 100).toFixed(1) + '%"></i></div><span class="note">已打勾 ' + done + ' / ' + V.length + ' 次</span>'
: '<small>产检都排完啦</small><b class="big">准备迎接宝宝</b><span class="note">已打勾 ' + done + ' / ' + V.length + ' 次</span>';
}
$('#tl').addEventListener('click', function (e) { var b = e.target.closest('.ck'); if (!b) return; var i = b.dataset.i; if (st.ok[i]) delete st.ok[i]; else st.ok[i] = 1; paint(); });
$('#cDue').addEventListener('change', function () { st.due = this.value; paint(); });
$('#cLmp').addEventListener('change', function () { st.lmp = this.value; paint(); });
tabUi(); ui(); paint();
})();
</script>
<script src="../_shared/brand.js?v=26110203"></script>
<script src="../../js/share-card.js?v=26110453"></script>
<script>window.mbShare('../../assets/share/t/chanjian-js.jpg', '产检时间表:每次产检哪天去、查什么'); /* 11-04 微信转发图 */</script>
<!-- 11-04 分步模式:一步一题、最后出结果(同生娃计算器),见 ../_shared/wizard.js -->
<script src="../_shared/wizard.js?v=26110453"></script>
<script>CKW.init({ root: '.calc', res: '#res', after: '#scroll > section.calc ~ *' });</script>
</body>
</html>