孕期计算器新增 10 个(孕周/产检时间表/增重范围/生育津贴/育儿补贴/个税/月子花费/身高/血型/出生后手续),共用 topic/_shared/calc.*,配转发图(v26110299)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-04 04:09:51 +00:00
parent bb4d84fb85
commit 75c418f453
36 changed files with 5913 additions and 33 deletions

View File

@@ -0,0 +1,93 @@
<!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 个,本页是其中之一)。
时间依据:《户口登记条例》第 7 条(出生后 1 个月内申报户口);新生儿参加城乡居民医保多数地方要求出生后 3 个月(90 天)内参保、可从出生起享受待遇;
预防接种证出生后 1 个月内到社区建证;个税 3 岁以下照护扣除出生当月起;育儿补贴落户后申领;产后 42 天复查。
各地规定不一,页面写「以当地为准」。很多地方已开通「新生儿出生一件事」联办(出生证 + 户口 + 医保 + 社保卡一次办)。
做完可以打勾(记在本机 mmbox.calc.shouxu);还没生的按预产期先排。
共用 ../_shared/calc.css + calc.js(返回 / 禁回弹 / 日期按北京时间 / 记住上次填的值);自成一页,不引 app.js。 -->
<link rel="stylesheet" href="../_shared/calc.css?v=26110299">
<style>:root{--c:#4E7FD8;--c2:#86AEF2;--cbg:#EDF3FF}.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 li.late .m b em{background:#FFE8E6;color:#E0453A}.tl .m span.w{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"><button type="button" data-v="1">已经生了</button><button type="button" data-v="0">还没生,按预产期</button></div>
<div class="fld"><label class="lb" for="cD" id="cDl">宝宝出生日期</label><input class="in num" type="date" id="cD"></div>
</section>
<section class="sec hide" id="sTl">
<h2>手续时间线</h2>
<p class="lead">按截止时间排,做完点「办好了」</p>
<ol class="tl" id="tl"></ol>
</section>
<div class="tip"><b>先查有没有「出生一件事」:</b>很多城市在支付宝、微信或当地政务 App 上能把出生医学证明、上户口、医保参保、社保卡一次办完,不用一趟趟跑。<br><b>要准备的:</b>爸妈身份证、户口本、结婚证、出生医学证明(宝宝名字定好再办)。</div>
<p class="foot">各地规定和截止时间不完全一样,以当地公安、医保、卫健部门要求为准。</p>
</div>
<script src="../_shared/calc.js?v=26110299"></script>
<script>
(function () {
'use strict';
var C = window.CK, $ = C.$;
C.shell();
var DAY = C.DAY, T = C.today();
/* [名称, 截止:天数 或 'm1' = 1 个月 / 'm3' = 3 个月, 在哪办 / 说明, 起始偏移天] */
var L = [
['出生医学证明', 3, '出院前在医院办,名字定好再填;写错要去医院改,很麻烦', 0],
['乙肝疫苗第 1 针 + 卡介苗', 1, '医院出生后 24 小时内接种,出院前确认接种记录', 0],
['个税加上宝宝', 'm1', '「个人所得税」App 填 3 岁以下婴幼儿照护,出生当月起每月可扣 2000 元', 0],
['办预防接种证', 'm1', '带出院时的接种记录,到户籍或居住地社区卫生服务中心建证', 0],
['上户口', 'm1', '《户口登记条例》规定出生后 1 个月内申报,带出生证、爸妈身份证、户口本、结婚证去派出所,或网上办', 0],
['乙肝疫苗第 2 针', 'm1', '满 1 个月到社区医院接种', 25],
['产后 42 天复查 + 宝宝体检', 42, '妈妈查子宫恢复、伤口、盆底,宝宝查生长发育;去生产医院或社区', 40],
['新生儿医保参保', 'm3', '多数地方出生后 3 个月(90 天)内参保,可以从出生那天起报销;上完户口就办', 0],
['申请育儿补贴', 'm3', '落户后在支付宝、微信「育儿补贴」或当地政务平台申请,每年 3600 元', 0],
['申领社保卡 / 医保电子凭证', 'm3', '参保后办,看病报销要用', 0],
['申领生育津贴', 365, '一般单位代办,产假结束后提交;多数地方要求产后 1 年内', 90]
];
var st = C.store('mmbox.calc.shouxu', { b: 1, d: '', ok: {} });
if (!st.d) { var sd = C.savedDue(); if (!isNaN(sd)) { st.d = C.fmt(sd); st.b = sd > T ? 0 : 1; } }
var tabUi = C.seg($('#tabs'), st, 'b', function () { ui(); paint(); });
function ui() { $('#cDl').textContent = st.b ? '宝宝出生日期' : '预产期'; $('#cD').value = st.d; }
function due(b, x) { return typeof x === 'number' ? b + x * DAY : C.addMonths(b, +x.slice(1)); }
function paint() {
st.save();
var b = C.parse(st.d), R = $('#res');
$('#sTl').classList.toggle('hide', isNaN(b));
if (isNaN(b)) { R.innerHTML = '<div class="empty">填宝宝出生日期,马上排出时间线</div>'; return; }
var rows = L.map(function (x, i) { return { x: x, i: i, e: due(b, x[1]), s: b + x[3] * DAY, ok: !!st.ok[i] }; }).sort(function (p, q) { return p.e - q.e; });
var nx = null, late = 0, done = 0;
$('#tl').innerHTML = rows.map(function (r) {
var left = Math.round((r.e - T) / DAY), lt = !r.ok && left < 0, cls = r.ok ? 'ok' : lt ? 'late now' : '';
if (r.ok) done++; if (lt) late++; if (!r.ok && !lt && !nx) nx = r;
return '<li class="' + cls + '"><i class="d"></i><div class="m"><b>' + r.x[0] + (r.ok ? '' : lt ? '<em>已超过截止</em>' : left <= 7 ? '<em>还剩 ' + left + ' 天</em>' : '') + '</b>' +
'<span><i class="num">' + (r.x[3] ? C.cn(r.s) + ' 起,' : '') + C.cn(r.e) + ' 前</i></span><span class="w">' + r.x[2] + '</span></div>' +
'<button type="button" class="ck" data-i="' + r.i + '">' + (r.ok ? '办好了 ✓' : '办好了') + '</button></li>';
}).join('');
R.innerHTML = nx ? '<small>' + (st.b ? '接下来最急的一件' : '宝宝出生后第一件要办的') + '</small><b class="big">' + nx.x[0] + '</b>' +
'<div class="row"><div><small>截止</small><b class="num">' + C.cn(nx.e) + '</b></div><div><small>还剩</small><b class="num">' + Math.max(0, Math.round((nx.e - T) / DAY)) + ' 天</b></div></div>' +
'<div class="pg"><i style="width:' + (done / L.length * 100).toFixed(1) + '%"></i></div><span class="note">已办好 ' + done + ' / ' + L.length + ' 件' + (late ? ',有 ' + late + ' 件过了常规截止时间,尽快去办,多数还能补' : '') + '</span>'
: '<small>手续都办完啦</small><b class="big">' + (late ? '还有 ' + late + ' 件待补' : '全部搞定') + '</b><span class="note">已办好 ' + done + ' / ' + L.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(); });
$('#cD').addEventListener('change', function () { st.d = this.value; paint(); });
tabUi(); ui(); paint();
})();
</script>
<script src="../_shared/brand.js?v=26110203"></script>
<script src="../../js/share-card.js?v=26110299"></script>
<script>window.mbShare('../../assets/share/t/shouxu-js.jpg', '出生后手续时间线:每件事截止哪天'); /* 11-04 微信转发图 */</script>
</body>
</html>