v26110463 孕周福利对齐数胎动后台最终字段(cat/read_text/claim_text/pack_*/body),恢复分类筛选;预览也跟 giftEnabled 开关(用户:隐藏福利模块,?gift=1 临时看);福利卡头像挤字判断修正
This commit is contained in:
43
js/app.js
43
js/app.js
@@ -3,7 +3,7 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
|
||||
var VER = '26110462';
|
||||
var VER = '26110463';
|
||||
const $ = (s, c) => (c || document).querySelector(s);
|
||||
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
|
||||
|
||||
@@ -2656,10 +2656,11 @@
|
||||
|
||||
/* ================= 孕育资源库:列表页 + 内容页 ================= */
|
||||
/* 2026-11-05 起「孕N周专属福利」资料由数胎动后台维护(taidong.douba.top/admin 左侧「孕周专属福利」,会话 375797cf)。
|
||||
公开列表 GET /taidong/api/public/week-perks → {items:[{id,week_from,week_to,title,subtitle,cover,images,detail,price,sort}]},
|
||||
公开列表 GET /taidong/api/public/week-perks → {items:[{key,title,cat,tint,desc,read_text,claim_text,cover,images,week_from,week_to,
|
||||
pack_fmt,pack_items,body:[{h,p}],price,sort,detail}]}(week_from=week_to=0 = 全孕期),
|
||||
只含已上架、不含网盘地址;兑换走 box_app /resources/{id}/claim(服务端去对方取链接 + 扣豆,价格以对方为准)。
|
||||
原来写死的 8 份资料(book/food… + 正文 body + 内容清单 PACK)全部删除;列表为空 / 本周没有 → 整个福利区块隐藏(对方要求)。
|
||||
RES[id] = {img,title,desc,detail,images,price,wf,wt,tint},RES_ORDER 按 sort。 */
|
||||
原来写死的 8 份资料已按原 key 导入对方后台,这里不再内置;列表为空 / 本周没有 / 接口出错 → 整个福利区块隐藏。
|
||||
RES[key] = {img,title,cat,desc,read,claim,detail,images,fmt,items,body,price,wf,wt,tint},RES_ORDER 按 sort。 */
|
||||
const RES = {};
|
||||
const RES_ORDER = [];
|
||||
const TINTS = ['o', 'g', 'p', 'b'];
|
||||
@@ -2673,11 +2674,14 @@
|
||||
Object.keys(RES).forEach(k => { delete RES[k]; });
|
||||
RES_ORDER.length = 0;
|
||||
items.forEach((it, n) => {
|
||||
const id = String(it.id);
|
||||
const id = String(it.key || it.id);
|
||||
const arr = v => Array.isArray(v) ? v : [];
|
||||
RES[id] = {
|
||||
img: it.cover || '', title: it.title || '', desc: it.subtitle || '', detail: it.detail || '',
|
||||
images: Array.isArray(it.images) ? it.images : [], price: +it.price || 0,
|
||||
wf: +it.week_from || 0, wt: +it.week_to || 0, tint: TINTS[n % 4]
|
||||
img: it.cover || '', title: it.title || '', cat: it.cat || '', desc: it.desc || it.subtitle || '',
|
||||
read: it.read_text || '', claim: it.claim_text || '', detail: it.detail || '',
|
||||
images: arr(it.images), fmt: arr(it.pack_fmt), items: arr(it.pack_items),
|
||||
body: arr(it.body).map(b => [b && b.h || '', b && b.p || '']), price: +it.price || 0,
|
||||
wf: +it.week_from || 0, wt: +it.week_to || 0, tint: TINTS.indexOf(it.tint) >= 0 ? it.tint : TINTS[n % 4]
|
||||
};
|
||||
RES_ORDER.push(id);
|
||||
});
|
||||
@@ -2705,7 +2709,7 @@
|
||||
'<img class="sb-cover" src="' + escR(r.img) + '" alt="" aria-hidden="true">' +
|
||||
'<span class="sb-title">' + escR(r.title) + '</span>' +
|
||||
'<span class="sb-desc">' + escR(r.desc) + '</span>' +
|
||||
'<span class="sb-row"><span class="sb-faces" aria-hidden="true"></span><i class="sb-got">宝妈都在领</i>' +
|
||||
'<span class="sb-row"><span class="sb-faces" aria-hidden="true"></span><i class="sb-got">' + escR(r.claim || '宝妈都在领') + '</i>' +
|
||||
'<span class="pill-free">' + (got ? '已兑换' : r.price > 0 ? r.price + ' 豆兑' : '免费领') + '</span></span></button>';
|
||||
}).join('');
|
||||
$$('.shelf-book', shelf).forEach(b => b.addEventListener('click', () => openPanel('detailRes', b)));
|
||||
@@ -2743,6 +2747,7 @@
|
||||
'<span class="ri-body"><span class="ri-title">' + escR(r.title) + '</span>' +
|
||||
'<span class="ri-desc">' + escR(r.desc) + '</span>' +
|
||||
'<span class="ri-row">' +
|
||||
(r.cat ? '<em class="ri-cat">' + escR(r.cat) + '</em>' : '') +
|
||||
'<em class="ri-ga">' + wkTxt(r) + '</em>' +
|
||||
'<em class="pill-free">' + (resGot.indexOf(k) >= 0 ? '已兑换' : priceTxt(r)) + '</em>' +
|
||||
'</span></span></button>';
|
||||
@@ -2767,7 +2772,7 @@
|
||||
/* fav 不是分类,是「只看收藏过的」,所以单走一支 */
|
||||
const fav = state.resCat === 'fav';
|
||||
const keys = fav ? RES_ORDER.filter(isFav)
|
||||
: RES_ORDER.slice(); // 11-05 后台资料没有分类字段,分类 chip 已隐藏,只剩「全部 / 收藏」
|
||||
: RES_ORDER.filter(k => state.resCat === 'all' || RES[k].cat === state.resCat);
|
||||
$('#resList').innerHTML = keys.map(resCardHTML).join('');
|
||||
bindResCards($('#resList'));
|
||||
$('#resEmptyHint').textContent = keys.length
|
||||
@@ -2789,18 +2794,22 @@
|
||||
state.resKey = RES[key] ? key : RES_ORDER[0];
|
||||
$('#rdImg').src = r.img;
|
||||
$('#rdCover').className = 'rd-cover ' + r.tint;
|
||||
$('#rdCat').textContent = wkTxt(r);
|
||||
$('#rdCat').textContent = r.cat || wkTxt(r);
|
||||
$('#rdTitle').textContent = r.title;
|
||||
$('#rdDesc').textContent = r.desc;
|
||||
$('#rdMeta').innerHTML = '<span>适用 ' + wkTxt(r) + '</span><span>' + (r.price > 0 ? r.price + ' 兜豆兑换' : '免费领取') + '</span>';
|
||||
/* 「这份资料里有什么」= 后台填的多行详情(一行一段)+ 详情图 */
|
||||
$('#rdMeta').innerHTML = [r.read, r.claim, wkTxt(r)].filter(Boolean).map(m => '<span>' + escR(m) + '</span>').join('');
|
||||
/* 「这份资料里有什么」= 文件形式标签 + 内容清单 + 补充说明(多行,一行一段)+ 详情图;正文 body 放「内容抢先看」 */
|
||||
const paras = r.detail.split(/\n+/).map(t => t.trim()).filter(Boolean);
|
||||
$('#rdPack').innerHTML = (paras.length || r.images.length) ? '<h3 class="d-sec">这份资料里有什么</h3>' +
|
||||
'<div class="rp-box">' + paras.map(t => '<p class="rp-p">' + escR(t) + '</p>').join('') +
|
||||
$('#rdPack').innerHTML = (r.fmt.length || r.items.length || paras.length || r.images.length) ? '<h3 class="d-sec">这份资料里有什么</h3>' +
|
||||
'<div class="rp-box">' +
|
||||
(r.fmt.length ? '<div class="rp-fmt">' + r.fmt.map(f => '<span>' + escR(f) + '</span>').join('') + '</div>' : '') +
|
||||
(r.items.length ? '<ul class="rp-list">' + r.items.map(t => '<li>' + escR(t) + '</li>').join('') + '</ul>' : '') +
|
||||
paras.map(t => '<p class="rp-p">' + escR(t) + '</p>').join('') +
|
||||
r.images.map(u => '<img class="rp-img" src="' + escR(u) + '" alt="" loading="lazy">').join('') +
|
||||
'<p class="rp-how">' + (r.price > 0 ? '<b>' + r.price + '</b> 兜豆兑换,' : '免费领取,') +
|
||||
'马上给你网盘地址和提取码,复制去下载;领过的再点也能看' + (r.price > 0 ? ',不重复扣豆' : '') + '。</p></div>' : '';
|
||||
$('#rdBody').innerHTML = '';
|
||||
'马上给你网盘地址和提取码,复制去下载;领过的再点也能看' + (r.price > 0 ? ',不重复扣豆' : '') + '。</p></div>' +
|
||||
(r.body.length ? '<h3 class="d-sec">内容抢先看</h3>' : '') : '';
|
||||
$('#rdBody').innerHTML = r.body.map(b => '<h4>' + escR(b[0]) + '</h4><p>' + escR(b[1]) + '</p>').join('');
|
||||
$('#rdMore').innerHTML = RES_ORDER
|
||||
.filter(k => k !== state.resKey).slice(0, 3).map(resCardHTML).join('');
|
||||
bindResCards($('#rdMore'));
|
||||
|
||||
Reference in New Issue
Block a user