我的资料表单: 去掉演示默认值(小满妈妈/小汤圆/孕24+3), 打开时按服务端档案回填, 新用户全空+孕周锁定 (v26090715)

This commit is contained in:
2026-09-08 00:52:57 +08:00
parent 1396ccec0c
commit 3ab2b0d651
2 changed files with 47 additions and 15 deletions

View File

@@ -6,8 +6,8 @@
<meta name="theme-color" content="#F4593C">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>妈妈盒子 · 孕育陪伴</title>
<!-- V:26090714 缓存版本标记:改 css/js 时同步 bump 该值,并给下方资源引用加 ?v= 以强制 webview 刷新子资源 -->
<link rel="stylesheet" href="mama-box.css?v=26090714">
<!-- V:26090715 缓存版本标记:改 css/js 时同步 bump 该值,并给下方资源引用加 ?v= 以强制 webview 刷新子资源 -->
<link rel="stylesheet" href="mama-box.css?v=26090715">
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
</head>
<body>
@@ -1722,8 +1722,10 @@
可写 157px ÷ 14px 字 ≈ 11 个汉字,而 maxlength 分别是 16 / 12 ——
填满会在框内横向滚动,不会破版。这是可接受的,别为此把它拆回两行。 -->
<div class="fld-row">
<label class="fld"><span>昵称</span><input id="pfName" type="text" maxlength="16" value="小满妈妈"></label>
<label class="fld"><span>宝宝小名</span><input id="pgName" type="text" maxlength="12" value="小汤圆"></label>
<!-- ⚠️ 不写死演示默认值(原 value="小满妈妈"/"小汤圆"已删):打开弹窗时由
fillProfileForm() 按服务端档案回填,新用户全空 + placeholder 提示 -->
<label class="fld"><span>昵称</span><input id="pfName" type="text" maxlength="16" placeholder="妈妈"></label>
<label class="fld"><span>宝宝小名</span><input id="pgName" type="text" maxlength="12" placeholder="宝宝"></label>
</div>
<div class="fld">
<span>宝宝性别</span>
@@ -1738,8 +1740,9 @@
默认值不写死在标记里 —— 由 JS 按「打开这一刻 + 3 个月」现算 -->
<label class="fld"><span>预产期</span><input id="pgDue" type="date"></label>
<div class="fld-row">
<label class="fld"><span>当前孕周</span><input id="pgWeek" type="number" min="0" max="42" value="24" disabled></label>
<label class="fld"><span>额外天数</span><input id="pgDay" type="number" min="0" max="6" value="3" disabled></label>
<!-- 孕周/天数由预产期自动算出,打开时按档案回填;新用户留空并锁定 -->
<label class="fld"><span>当前孕周</span><input id="pgWeek" type="number" min="0" max="42" placeholder="—" disabled></label>
<label class="fld"><span>额外天数</span><input id="pgDay" type="number" min="0" max="6" placeholder="—" disabled></label>
</div>
<p class="fld-hint" id="pgHint">填完预产期后自动算出,算得不准可以自己微调。</p>
<div class="modal-foot">
@@ -1758,8 +1761,8 @@
加载失败/离线时 window.wx 为 undefined,goMall() 会降级为 toast 提示,
不影响应用其余功能。 -->
<script src="js/app.js?v=26090714"></script>
<!-- 页面版本号(排查 webview 缓存):底部会显示 v26090714 -->
<div id="ver" style="position:fixed;left:0;right:0;bottom:10px;text-align:center;z-index:9999;pointer-events:none;color:#B3A69C;font-size:10px;letter-spacing:.5px">v26090714</div>
<script src="js/app.js?v=26090715"></script>
<!-- 页面版本号(排查 webview 缓存):底部会显示 v26090715 -->
<div id="ver" style="position:fixed;left:0;right:0;bottom:10px;text-align:center;z-index:9999;pointer-events:none;color:#B3A69C;font-size:10px;letter-spacing:.5px">v26090715</div>
</body>
</html>

View File

@@ -1499,6 +1499,8 @@
modalScrim.classList.add('show');
m.classList.add('show');
haptic();
/* 「我的资料」打开时按服务端档案回填表单(新用户全空,不残留演示默认值) */
if (id === 'modalProfile') fillProfileForm();
/* 有些弹窗的主角不是输入框。企业微信那个弹窗正中间是一张二维码,
用户要做的第一件事是**举起另一台手机去扫它**;自动聚焦输入框会把
手机键盘顶上来,恰好盖住二维码的下半截。所以给一个显式的退出口,
@@ -1660,12 +1662,39 @@
? '还没填预产期,孕周先锁着 —— 选好上面的预产期就会自动算出来。'
: '已按预产期自动算出,觉得不准可以自己微调。';
}
/* state.due / week / day 已经在文件开头按 DEFAULT_DUE 填好了(那边比这里早,
信件日期要用)。这里只剩「把它们写进表单那三个格子」这一件事。 */
pgDue.value = toISO(state.due);
pgWeek.value = state.week;
pgDay.value = state.day;
lockWeekFields(false);
/* state.due / week / day 在 fetch 返回前是内置默认 —— 不能在脚本加载时
直接把默认值写进表单(新用户会看到「小汤圆/孕27周」假数据)。
改为:打开「我的资料」弹窗时按**当前档案**回填(fillProfileForm)。 */
lockWeekFields(true);
/* 打开资料弹窗时的表单回填:全部以服务端档案为准(最后写入者胜)。
新用户(未完善资料):昵称/小名/预产期/孕周全空 + 孕周锁定,只留 placeholder。 */
function fillProfileForm() {
$('#pfName').value = state.userName || '';
pgName.value = state.babyName || '';
$$('#pgSex .pick').forEach(b => b.classList.toggle('is-active', (b.dataset.sex || 'unknown') === (state.babySex || 'unknown')));
if (state.due) {
pgDue.value = toISO(state.due);
const ga = gaFromDue(state.due);
pgWeek.value = Math.floor(ga / 7);
pgDay.value = ga % 7;
lockWeekFields(false);
} else {
pgDue.value = '';
pgWeek.value = '';
pgDay.value = '';
lockWeekFields(true);
}
/* 头像预览跟随卡片(有正式头像才显示;新用户空圆 + +号) */
const _me = $('#meAvatar');
if (_me && _me.classList.contains('has-img') && meAvatarImg && meAvatarImg.src) {
avPreview.src = meAvatarImg.src;
avBig.classList.add('has-img');
} else {
avPreview.removeAttribute('src');
avBig.classList.remove('has-img');
}
}
/* 预产期一变,孕周 / 额外天数自动算出来 */
pgDue.addEventListener('change', () => {