预览站示例模式 demo=1:孕29周、示例脚印、来信角标2、兜豆2000、档案带demo (v26100452)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<title>兜爸心选 · 孕育陪伴</title>
|
||||
<!-- V:26100451 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<!-- V:26100452 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<link rel="stylesheet" href="mama-box.css">
|
||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
|
||||
<!-- 共享助手:授权/跳商城/位置上报(分享卡片同步,见 docs/h5-auth-standard.md 第四节) -->
|
||||
|
||||
42
js/app.js
42
js/app.js
@@ -3,7 +3,7 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
|
||||
var VER = '26100451';
|
||||
var VER = '26100452';
|
||||
const $ = (s, c) => (c || document).querySelector(s);
|
||||
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
|
||||
|
||||
@@ -265,6 +265,17 @@
|
||||
}
|
||||
/* ② 后退重载:脚本会重跑,init() 里调;① bfcache:整页不重载,挂在文件末尾已有的 pageshow 上 */
|
||||
|
||||
/* ================= 示例模式(2026-10-05) =================
|
||||
用户:「把首页的示例生成出来,用 29 周;所有该呈现的都呈现;脚印、底 tab 宝宝来信的圈都加示例;兜豆默认 2000;
|
||||
档案页现有的示例(含 40 周旅程图)都保留」。用途:演示 / 截图 / 给人看完整首页。
|
||||
⚠️ 只在**预览路径 + 网址显式带 demo=1**(?demo=1 或 #…&demo=1)时打开。正式首页 /mama-box/ 永远走不到 ——
|
||||
AGENTS §4.2 不造假数据,2026-09-22 出过写死演示值被所有用户看到的事故;示例绝不能靠「接口没回来就兜底」触发。
|
||||
打开后覆盖的只有展示:孕 29 周 0 天(预产期按今天倒推)、脚印 4 条 + 宝宝气泡、来信角标 2、兜豆 2000、档案 Tab 带 ?demo=1。
|
||||
其余模块(工具卡示例、此刻、悄悄话、小知识、商城商品、福利)本来就有数据或预览示例,照常显示。 */
|
||||
const DEMO = location.pathname.indexOf('/mama-box-preview/') === 0 &&
|
||||
(/[?&]demo=1(&|$)/.test(location.search) || hashParam('demo') === '1');
|
||||
const DEMO_WEEK = 29;
|
||||
|
||||
/* 2026-10-01 用户要求「档案」Tab 改跳孕期档案 H5(会话 19875b1b 提供)。
|
||||
⚠️ 对方说明:目前是设计演示版(写死演示数据),还不读 URL 参数;接真实数据时按 ?openid=&unionid= 读,
|
||||
所以这里照旧拼上。无 return_url,返回靠宿主自带返回。原来跳的是 /chanjian-rili/(孕检日历)。 */
|
||||
@@ -276,6 +287,7 @@
|
||||
const q = [];
|
||||
if (oid) q.push('openid=' + encodeURIComponent(oid));
|
||||
if (uid) q.push('unionid=' + encodeURIComponent(uid));
|
||||
if (DEMO) q.push('demo=1'); // 示例模式:成长档案也出它自己的示例(含 40 周旅程图)
|
||||
if (q.length) u += '?' + q.join('&');
|
||||
reportLastApp(ARCHIVE_H5, 'chengzhangdangan');
|
||||
reportHostLocation(u);
|
||||
@@ -763,7 +775,7 @@
|
||||
let _laixinUnread = null; // 最近一次未读结果;建档状态变化时靠它重算
|
||||
function renderLetterReminder() {
|
||||
const badge = $('#tabBadge');
|
||||
const r = _laixinUnread;
|
||||
const r = DEMO ? { ok: true, unread: 2, unreadLetters: 1, unreadReplies: 1 } : _laixinUnread; // 示例模式:圈 2
|
||||
if (state.pregEmpty || !r || r.ok === false || !(Number(r.unread) > 0)) {
|
||||
if (badge) badge.classList.remove('show');
|
||||
hideLetterCard();
|
||||
@@ -3218,6 +3230,13 @@
|
||||
if (pg.result.due) { const d = parseDay(pg.result.due); if (d) state.due = d; }
|
||||
}
|
||||
}
|
||||
if (DEMO) { // 示例模式:固定孕 29 周 0 天,预产期 = 今天 + (280 - 203) 天
|
||||
state.postpartum = false; state.pregEmpty = false;
|
||||
state.week = DEMO_WEEK; state.day = 0;
|
||||
const t = new Date(); t.setHours(0, 0, 0, 0);
|
||||
state.due = new Date(t.getTime() + (TERM - DEMO_WEEK * 7) * DAY_MS);
|
||||
if (!state.babyName) state.babyName = '小汤圆';
|
||||
}
|
||||
// 统一回刷依赖这些 state 的展示
|
||||
syncPregnancy();
|
||||
if (plHook) setTimeout(plHook, 0); // 「此刻」按孕周重拉(setTimeout:等下面 syncStaticDates 把 #calNext 算好)
|
||||
@@ -4781,7 +4800,21 @@
|
||||
⚠️ 模块显隐只有 fpRender 一个 owner(原来 syncPregnancy 也直接改 display,会撞竞态)。 */
|
||||
let _fpMode = 'pending'; // pending(加载中) | rows | guide | hide
|
||||
let _fpData = null; // 接口 result(events / digest / lead / unused…)
|
||||
function fpApply(mode, r) { _fpMode = mode; _fpData = r || null; fpRender(); if (plHook) plHook(); }
|
||||
function fpApply(mode, r) {
|
||||
if (DEMO) { // 示例模式:固定一组脚印 + 宝宝气泡(不再追加下面 fpRender 里的预览示例行)
|
||||
mode = 'rows';
|
||||
r = {
|
||||
events: [
|
||||
{ at: '08:10', label: '称体重 58.2 kg,本周 +0.3 kg' },
|
||||
{ at: '09:20', label: '数胎动,宝宝动了 12 次' },
|
||||
{ at: '12:40', label: '查了「孕期能不能吃」:杨梅' },
|
||||
{ at: '15:05', label: '记一次血糖 5.6 mmol/L(餐后 2 小时)' },
|
||||
],
|
||||
digest: { text: '妈妈今天好认真呀!我动了 12 下,你都数到啦~下午记得多喝点水,晚上我们一起听故事。' },
|
||||
};
|
||||
}
|
||||
_fpMode = mode; _fpData = r || null; fpRender(); if (plHook) plHook();
|
||||
}
|
||||
function fpRender() {
|
||||
const tl = document.querySelector('.today-line'), steps = $('#tlSteps'), guide = $('#tlGuide');
|
||||
const _cd = $('#fpCalD');
|
||||
@@ -4826,7 +4859,7 @@
|
||||
/* ⚠️ 示例脚印(2026-10-03 用户:「多放两个脚印示例,数胎动、数宫缩、称体重」)——**只在预览环境**
|
||||
(路径含 mama-box-preview,或 hash 带 fpdemo=1)追加,用来看多条时的排版;正式版不会出现,不冒充真记录。
|
||||
确认样式后整段删掉即可。 */
|
||||
if (/mama-box-preview/.test(location.pathname) || hashParam('fpdemo') === '1') {
|
||||
if (!DEMO && (/mama-box-preview/.test(location.pathname) || hashParam('fpdemo') === '1')) {
|
||||
rows.push(
|
||||
{ at: '09:20', label: '数胎动,宝宝动了 12 次', detail: '', app: '' },
|
||||
{ at: '11:05', label: '数宫缩 3 次,间隔约 8 分钟', detail: '', app: '' },
|
||||
@@ -5159,6 +5192,7 @@
|
||||
return fetch(DOU_API + '/dou/summary', { headers: { Authorization: 'Bearer ' + tok } })
|
||||
.then(function (r) { if (r.status === 401) douToken = ''; return r.ok ? r.json() : null; });
|
||||
}).then(function (sum) {
|
||||
if (DEMO) sum = Object.assign({}, sum || {}, { balance: 2000 }); // 示例模式:兜豆默认 2000
|
||||
if (!sum || typeof sum.balance !== 'number') return;
|
||||
return dropP.then(function (d) {
|
||||
const now = d && d.server_time ? new Date(d.server_time).getTime() : Date.now();
|
||||
|
||||
Reference in New Issue
Block a user