生娃计算器:路线顺序改为 普通人 → 中产 → 大富豪(存档按路线 id 兼容旧顺序)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-02 11:41:29 +00:00
parent a8a27964f6
commit 9b29af6dc3

View File

@@ -390,14 +390,14 @@ h1 .mk{background:linear-gradient(transparent 64%,rgba(24,160,88,.24) 0)}
/* ================= 路线 ================= */ /* ================= 路线 ================= */
var ROUTES = [ var ROUTES = [
{ id: 'rich', badge: 'b-rich', who: '我是大富豪', how: '富养娃', line: '钱能解决的,都不让娃将就', { id: 'low', badge: 'b-low', who: '我是普通人', how: '量力养', line: '能省则省,爱一点不少',
tags: ['私立高端产检', '月子中心', '育儿嫂', '国际学校'], def: { hosp: 2, yuezi: 2, care: 2, school: 2, extra: 2 } }, tags: ['公立医院', '家人坐月子', '老人帮带', '能省则省'], def: { hosp: 0, yuezi: 0, care: 0, school: 0, extra: 0 } },
{ id: 'mid', badge: 'b-mid', who: '我是中产家', how: '从容养', line: '不卷也不亏待,日子过得舒展', { id: 'mid', badge: 'b-mid', who: '我是中产家', how: '从容养', line: '不卷也不亏待,日子过得舒展',
tags: ['公立特需', '月嫂', '托班', '适度早教'], def: { hosp: 1, yuezi: 1, care: 1, school: 0, extra: 1 } }, tags: ['公立特需', '月嫂', '托班', '适度早教'], def: { hosp: 1, yuezi: 1, care: 1, school: 0, extra: 1 } },
{ id: 'low', badge: 'b-low', who: '我是普通人', how: '量力养', line: '能省则省,爱一点不少', { id: 'rich', badge: 'b-rich', who: '我是大富豪', how: '富养娃', line: '钱能解决的,都不让娃将就',
tags: ['公立医院', '家人坐月子', '老人帮带', '能省则省'], def: { hosp: 0, yuezi: 0, care: 0, school: 0, extra: 0 } } tags: ['私立高端产检', '月子中心', '育儿嫂', '国际学校'], def: { hosp: 2, yuezi: 2, care: 2, school: 2, extra: 2 } }
]; ];
function tierOf(r) { return [2, 1, 0][r]; } // 档次 T:0 量力 / 1 从容 / 2 富养 function tierOf(r) { return r; } /* 11-02 用户:路线顺序改成 普通人 → 中产 → 大富豪,下标即档次 */ // 档次 T:0 量力 / 1 从容 / 2 富养
/* ================= 阶段 ================= */ /* ================= 阶段 ================= */
var STAGES = [ var STAGES = [
@@ -1212,17 +1212,17 @@ h1 .mk{background:linear-gradient(transparent 64%,rgba(24,160,88,.24) 0)}
function renderTools() { function renderTools() {
if (!window.TopicTools) return; if (!window.TopicTools) return;
var why = [ var why = [
['好东西也要买在点上,列清单不重复买', '私立、特需的自费项先排进日历,心里有数', '补剂按需补,贵的不一定是对的'], ['列清单按需买,能借能复用的先划掉', '跟着产检表走,不额外加做没必要的项目', '补剂按需补,不乱花冤枉钱'],
['月嫂、待产包要准备的,一张清单理清', '产检时间和自费项目提前排好', '按需补,不跟风买补剂'], ['月嫂、待产包要准备的,一张清单理清', '产检时间和自费项目提前排好', '按需补,不跟风买补剂'],
['列清单按需买,能借能复用的先划掉', '跟着产检表走,不额外加做没必要的项目', '补剂按需补,不乱花冤枉钱'] ['好东西也要买在点上,列清单不重复买', '私立、特需的自费项先排进日历,心里有数', '补剂按需补,贵的不一定是对的']
][route]; ][route];
var el = $('#tools'); var el = $('#tools');
el.className = 'fu' + (el.classList.contains('in') ? ' in' : ''); el.className = 'fu' + (el.classList.contains('in') ? ' in' : '');
TopicTools.render(el, [ TopicTools.render(el, [
{ id: 'daichanqingdan', why: why[0], tag: route === 2 ? '省钱' : '' }, { id: 'daichanqingdan', why: why[0], tag: route === 0 ? '省钱' : '' },
{ id: 'chanjianrili', why: why[1] }, { id: 'chanjianrili', why: why[1] },
{ id: 'bushui', why: why[2] } { id: 'bushui', why: why[2] }
], { title: route === 0 ? '钱花在刀刃上' : '帮你少花冤枉钱', color: '#18A058', bg: '#EAF7F0', wk: 0 }); ], { title: route === 2 ? '钱花在刀刃上' : '帮你少花冤枉钱', color: '#18A058', bg: '#EAF7F0', wk: 0 });
} }
var io = 'IntersectionObserver' in window ? new IntersectionObserver(function (es) { var io = 'IntersectionObserver' in window ? new IntersectionObserver(function (es) {
@@ -1239,13 +1239,15 @@ h1 .mk{background:linear-gradient(transparent 64%,rgba(24,160,88,.24) 0)}
/* ================= 存取(v5;兼容读取 v4:路线 + 6 题答案,阶段按全部、收入为空) ================= */ /* ================= 存取(v5;兼容读取 v4:路线 + 6 题答案,阶段按全部、收入为空) ================= */
function save() { function save() {
try { localStorage.setItem(KEY, JSON.stringify({ route: route, a: A, done: hasBill, no: billNo, at: billAt })); } catch (e) {} try { localStorage.setItem(KEY, JSON.stringify({ route: route, rid: ROUTES[route].id, a: A, done: hasBill, no: billNo, at: billAt })); } catch (e) {}
} }
function load() { function load() {
try { try {
var o = JSON.parse(localStorage.getItem(KEY) || 'null') || JSON.parse(localStorage.getItem(KEY4) || 'null'); var o = JSON.parse(localStorage.getItem(KEY) || 'null') || JSON.parse(localStorage.getItem(KEY4) || 'null');
if (!o || !(o.route >= 0 && o.route < ROUTES.length)) return false; if (o && !o.rid && o.route >= 0) o.rid = ['rich', 'mid', 'low'][o.route]; /* 旧记录是旧顺序(富豪在前),按 id 换算 */
route = o.route; var ri = o ? ROUTES.map(function (x) { return x.id; }).indexOf(o.rid) : -1;
if (ri < 0) return false;
route = ri;
var a = o.a || {}; var a = o.a || {};
QS.forEach(function (q) { var v = a[q.k]; if (q.o && typeof v === 'number' && v >= 0 && v < q.o.length) A[q.k] = v; }); QS.forEach(function (q) { var v = a[q.k]; if (q.o && typeof v === 'number' && v >= 0 && v < q.o.length) A[q.k] = v; });
if (Array.isArray(a.st)) { var st = a.st.filter(function (i) { return ALL.indexOf(i) >= 0; }); if (st.length) A.st = st.sort(function (x, y) { return x - y; }); } if (Array.isArray(a.st)) { var st = a.st.filter(function (i) { return ALL.indexOf(i) >= 0; }); if (st.length) A.st = st.sort(function (x, y) { return x - y; }); }