v26110462 孕周专属福利改读数胎动后台(/taidong/api/public/week-perks):首页按孕周出卡、空则整块隐藏;详情页显示后台详情+详情图;价格按单份;删内置 8 份资料

This commit is contained in:
deploy
2026-11-05 10:30:03 +00:00
parent 887b87dc82
commit 8202c77ad9
26 changed files with 205 additions and 261 deletions

View File

@@ -8,8 +8,8 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<title>兜爸心选 · 孕育陪伴</title>
<!-- 11-04 UGC 总开关(孕妈广场 + 测一测,后台 /box_bm/plaza 顶部切换),见 js/ugc.js -->
<script src="js/ugc.js?v=26110461"></script>
<!-- V:26110461 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<script src="js/ugc.js?v=26110462"></script>
<!-- V:26110462 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<link rel="stylesheet" href="mama-box.css">
<link rel="stylesheet" href="night.css">
<!-- 11-04 用户:「顶部图片上的倒计时先删除掉」→ 不加载 hero-cd.css / hero-cd.js(文件留着,加回这两行即恢复),头图回到原样式 -->
@@ -33,6 +33,10 @@
.rp-list li::before{content:"";position:absolute;left:2px;top:12px;width:11px;height:6px;border-left:2.2px solid #E8743B;border-bottom:2.2px solid #E8743B;transform:rotate(-45deg)}
.rp-how{margin:10px 0 0;padding-top:10px;border-top:1px dashed var(--line);font-size:12.5px;line-height:1.7;color:var(--muted)}
.rp-how b{color:#E8743B}
.rp-p{margin:0 0 8px;font-size:14.5px;line-height:1.8;color:#4A403A;white-space:pre-wrap}
.rp-img{display:block;width:100%;border-radius:10px;margin:6px 0 4px}
.shelf-book.sb-blue{background:linear-gradient(150deg,#E8F1FB,#DAE8F7);--sb-bg:#DAE8F7}
html.night .rp-p{color:#E8DFE8}
html.night .rp-box{background:rgba(255,255,255,.06)}
html.night .rp-list li{color:#E8DFE8}
.rs-modal h3 .rs-n{color:#E8743B}
@@ -897,7 +901,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
⚠️ data-wk="n" 是从原来那条 h2 里搬过来的。app.js 用
$$('[data-wk]') 全局扫,属性一丢孕周就永远显示「—」。 -->
<section class="shelf gift2">
<section class="shelf gift2" style="display:none">
<!-- 2026-10-01 改版:用户要「资料免费送、是一种福利、针对这个孕周」的感觉。
抬头改成礼盒 + 「孕N周专属福利」,三张书卡改成「福利券」:左上孕周专属角标、
封面右上「免费」印章、中间一道撕券虚线、底行「免费领 ›」。
@@ -906,7 +910,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
<span class="gb-gift" aria-hidden="true"><svg viewBox="0 0 24 24" width="26" height="26"><rect x="4.5" y="10.5" width="15" height="9.5" rx="2" fill="#fff"/><rect x="3.2" y="7.4" width="17.6" height="4.2" rx="1.6" fill="#fff"/><rect x="11" y="7.4" width="2" height="12.6" fill="#F7745E"/><rect x="3.2" y="11" width="17.6" height="1" fill="#F7745E" opacity=".35"/><path d="M12 7.4C10.6 4.6 7.6 4.2 7.6 6.1c0 1.3 2.2 1.3 4.4 1.3zm0 0c1.4-2.8 4.4-3.2 4.4-1.3 0 1.3-2.2 1.3-4.4 1.3z" fill="none" stroke="#fff" stroke-width="1.6" stroke-linejoin="round"/><path d="M20 1.8l.5 1.3 1.3.5-1.3.5-.5 1.3-.5-1.3-1.3-.5 1.3-.5z" fill="#FFF3C4"/></svg></span>
<div class="gb-ht">
<h2 class="sh-title">孕<span data-wk="n">—</span>周专属福利</h2>
<p class="sh-note">这周用得上的孕育资料,<b><span class="res-price-n">3</span> 兜豆就能领</b></p>
<p class="sh-note">这周用得上的孕育资料,<b>兜豆就能换</b></p>
</div>
<button class="sh-all" data-open="detailResList">全部 ›</button>
</div>
@@ -935,29 +939,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
接口虽返回同源的 got(已领),但 __applyResources 明确「有意不读」
(9.19 起 H5 已无「已领」概念),所以更新领取量时要**手工改这三处**;
要改成读接口,得先把这个口径捋清再动。 -->
<div class="shelf-rail">
<button class="shelf-book sb-book ripple" data-open="detailRes" data-res="book">
<span class="sb-tag">孕<span data-wk="n">—</span>周专属</span>
<img class="sb-cover" src="assets/img/gift-book.png" alt="" aria-hidden="true">
<span class="sb-title">《糖耐检查全攻略》</span>
<span class="sb-desc">孕24-28周必看 · 附检查前饮食清单</span>
<span class="sb-row"><span class="sb-faces" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i></span><i class="sb-got">12.8 万妈妈已领取</i><span class="pill-free">3 豆兑</span></span>
</button>
<button class="shelf-book sb-food ripple" data-open="detailRes" data-res="food">
<span class="sb-tag">孕<span data-wk="n">—</span>周专属</span>
<img class="sb-cover" src="assets/img/gift-food.png" alt="" aria-hidden="true">
<span class="sb-title">孕期营养全书</span>
<span class="sb-desc">按孕周编排的一日三餐参考</span>
<span class="sb-row"><span class="sb-faces" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i></span><i class="sb-got">20.4 万妈妈已领取</i><span class="pill-free">3 豆兑</span></span>
</button>
<button class="shelf-book sb-music ripple" data-open="detailRes" data-res="music">
<span class="sb-tag">孕<span data-wk="n">—</span>周专属</span>
<img class="sb-cover" src="assets/img/gift-music.png" alt="" aria-hidden="true">
<span class="sb-title">胎教音乐合集</span>
<span class="sb-desc">30 首适合孕中期的舒缓曲目</span>
<span class="sb-row"><span class="sb-faces" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i><i></i></span><i class="sb-got">9.6 万妈妈已领取</i><span class="pill-free">3 豆兑</span></span>
</button>
</div>
<div class="shelf-rail"><!-- 11-05 起卡片由 app.js renderGiftShelf() 按数胎动后台资料 + 当前孕周现画 --></div>
<!-- ⚠️ 这句话现在是**静态文案**(2026-09-19 9.19 需求:兑换码闸门取消,
不再有「已解锁/未解锁」两版口径,原来那个给 syncUnlockCopy() 用的
#shelfLeadTxt 靶子和该函数一起删了)。
@@ -971,7 +953,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
· 没上架的**并非拿不到** —— 扫码加小助手可以直接索要(见顾问二维码弹窗)。
所以「128 份等你来领」是邀请口径(含找小助手要的),跟「列表当前 8 条」
是两件事,**数字不一样是对的**,别再"修"。 -->
<p class="unlock"><i class="ul-gift" aria-hidden="true"></i>福利库还有 <b>128</b> 份资料陆续上架 · <a data-open="detailResList">查看全部 ›</a></p>
<p class="unlock"><i class="ul-gift" aria-hidden="true"></i>福利库共 <b id="giftTotal">0</b> 份资料,按孕周陆续上新 · <a data-open="detailResList">查看全部 ›</a></p>
</section>
<!-- 孕期盲盒 · 首页细横幅(2026-10-01,需求文档 v1.0 三-7)。
@@ -1963,14 +1945,14 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
<!-- 静态文案(原「还没解锁 / 已解锁」两版已随闸门一起取消)。
「首次领取需添加顾问微信」这句必须提前说:让人一路读到底、点了
「立即领取」才撞上二维码,是把条件藏到最后一步才亮出来。 -->
<p class="rl-lead"><b>128</b> 份资源按孕周持续更新 · 首次领取需添加顾问微信</p>
<p class="rl-lead"><b id="rlTotal">0</b> 份资料按孕周持续更新 · 用兜豆兑换</p>
<div class="chips-row" id="resChips">
<button class="chip is-active" data-rescat="all">全部</button>
<button class="chip" data-rescat="产检">产检</button>
<button class="chip" data-rescat="营养">营养</button>
<button class="chip" data-rescat="胎教">胎教</button>
<button class="chip" data-rescat="运动">运动</button>
<button class="chip" data-rescat="心理">心理</button>
<button class="chip" data-rescat="产检" hidden>产检</button>
<button class="chip" data-rescat="营养" hidden>营养</button>
<button class="chip" data-rescat="胎教" hidden>胎教</button>
<button class="chip" data-rescat="运动" hidden>运动</button>
<button class="chip" data-rescat="心理" hidden>心理</button>
<!-- 收藏不是分类而是筛选,所以默认排在最后。但一旦用户有了收藏,
renderResList() 会把它挪到「全部」后面并带上数量 —— 常用的东西
不该让人横向滑到头才找得着。这里写的是「还没收藏过」时的样子。
@@ -2686,13 +2668,13 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
<script src="/_bridge/avatar-picker.js?v=26101105"></script>
<script src="/_bridge/hand-icons.js?v=26101202"></script>
<script src="js/zodiac-art.js"></script>
<script src="guangchang/topics.js?v=26110461"></script>
<script src="js/ava-pool.js?v=26110461"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
<script src="guangchang/topics.js?v=26110462"></script>
<script src="js/ava-pool.js?v=26110462"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
<script src="js/app.js"></script>
<script src="js/kit.js?v=26110461"></script>
<script src="js/kit.js?v=26110462"></script>
<!-- 11-05 用户:孕期百问加上跟趣味小测试一样的底部 Tab(孕期百问 / 记一下 / 返回首页)。挂在 #detailQA 里,面板关着时跟着滑出屏外;
「记一下」直接开首页自己的记一下弹层(z 95 盖在百问 z 80 上),「返回首页」= 关掉百问面板 -->
<script src="js/mb-tabbar.js?v=26110461"></script>
<script src="js/mb-tabbar.js?v=26110462"></script>
<script>
(function () {
var d = document.getElementById('detailQA'); if (!d || !window.MBTab) return;
@@ -2712,7 +2694,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
if (gchDone || !window.__mbUgc) return; gchDone = true;
var m = location.search.match(/[?&]gcv=([1-6])(?:&|$)/);
if (!m) window.__gcDefault = 1;
var n = m ? m[1] : '6', l = document.createElement('link'), s = document.createElement('script'), q = m ? Date.now() : 'v=26110461';
var n = m ? m[1] : '6', l = document.createElement('link'), s = document.createElement('script'), q = m ? Date.now() : 'v=26110462';
var dir = n === '4' || n === '6' ? 'js/gch/' : 'demo/gch/'; /* 11-03 上正式:定稿 V6(含它套的 V4)并进 js/gch/,其余效果稿仍在 demo/ */
l.rel = 'stylesheet'; l.href = dir + 'v' + n + '.css?' + q;
s.src = dir + 'v' + n + '.js?' + q;
@@ -2727,19 +2709,19 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
/* 11-02 品牌露出(用户定 4 处都要):默认加载,?brand=0 可关掉对比;11-03 已并进 js/gch/ */
if (!/[?&]brand=0/.test(location.search)) {
var bl = document.createElement('link'), bs = document.createElement('script');
bl.rel = 'stylesheet'; bl.href = 'js/gch/brand.css?v=26110461'; bs.src = 'js/gch/brand.js?v=26110461';
bl.rel = 'stylesheet'; bl.href = 'js/gch/brand.css?v=26110462'; bs.src = 'js/gch/brand.js?v=26110462';
document.head.appendChild(bl); document.body.appendChild(bs);
}
})();
</script>
<!-- 2026-10-03 首页彩蛋:宝宝在肚皮底下动(独立文件,删掉这一行即整体下线;开关在「隐私权限」) -->
<script src="js/bump.js?v=26110461"></script>
<script src="js/bump.js?v=26110462"></script>
<!-- 2026-10-04 首页头图:按孕周换宝宝 + 阳光水波(独立文件) -->
<script src="js/hero-fx.js"></script>
<!-- 2026-10-05 首页头图:宝宝时不时动一动小手小脚(独立文件,删掉这一行即下线) -->
<script src="js/baby-limbs.js?v=26110461"></script>
<script src="js/coach.js?v=26110461"></script>
<script src="js/birth-flow.js?v=26110461"></script>
<script src="js/baby-limbs.js?v=26110462"></script>
<script src="js/coach.js?v=26110462"></script>
<script src="js/birth-flow.js?v=26110462"></script>
<!-- 禁止下拉回弹(2026-10-11 统一规则,与孕期体重同一段):竖向拖动时从手指下往上找还能朝该方向滚的容器,找不到才拦;横滑、双指、可滚列表不受影响 -->
<script>