我的页迁远程 H5

h5/mine/index.html改用SGBridge.getAuthState/navigate(同源相对API);拷入页面静态资源h5/mine/assets/

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
陈世睿
2026-06-29 17:12:08 +08:00
parent 109aebaa16
commit be77ffa721
45 changed files with 96 additions and 72 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 KiB

+24
View File
@@ -0,0 +1,24 @@
<svg width="1254" height="1254" viewBox="0 0 1254 1254" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="shadow" x="250" y="170" width="754" height="914" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="34" stdDeviation="40" flood-color="#D56A00" flood-opacity="0.22"/>
<feDropShadow dx="0" dy="8" stdDeviation="14" flood-color="#8A3C00" flood-opacity="0.10"/>
</filter>
<linearGradient id="body" x1="372" y1="232" x2="866" y2="994" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFE780"/>
<stop offset="0.52" stop-color="#FFC12F"/>
<stop offset="1" stop-color="#FF9A1A"/>
</linearGradient>
<radialGradient id="shine" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(470 332) rotate(50) scale(254 150)">
<stop stop-color="white" stop-opacity="0.7"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</radialGradient>
</defs>
<g filter="url(#shadow)">
<rect x="336" y="230" width="578" height="784" rx="168" fill="url(#body)"/>
<rect x="336" y="230" width="578" height="784" rx="168" fill="url(#shine)"/>
<path d="M468 424H786" stroke="white" stroke-width="72" stroke-linecap="round" opacity="0.94"/>
<path d="M468 586H786" stroke="white" stroke-width="58" stroke-linecap="round" opacity="0.72"/>
<path d="M468 730H704" stroke="white" stroke-width="58" stroke-linecap="round" opacity="0.58"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

+72 -72
View File
@@ -223,7 +223,7 @@ input, textarea { -webkit-user-select: text; user-select: text; }
position: absolute;
top: 80px; left: 0; right: 0;
height: 575px;
background-image: url('../../assets/onboarding/index/full-bg.png');
background-image: url('assets/onboarding/index/full-bg.png');
background-size: 375px auto;
background-position: top center;
background-repeat: no-repeat;
@@ -582,7 +582,7 @@ input, textarea { -webkit-user-select: text; user-select: text; }
/* === 登录页 · E1 方案:PNG 背景 + 纯白渐变蒙版(分界 ~62%,红包区不糊) === */
/* 背景层:PNG 满屏 + 横向渐变兜底色(PNG 加载失败时不会露白) */
#login {
background: url("../../assets/login/index/redpacket-bg.png") center top / cover no-repeat,
background: url("assets/login/index/redpacket-bg.png") center top / cover no-repeat,
linear-gradient(90deg, #FEE7B7 0%, #FDEFD0 50%, #FEE7B7 100%);
}
/* E1 渐变蒙版:28% 起、52.5% 之前完全透明(保红包+优惠券不糊),57% 处 .95,64% 处完全不透明 */
@@ -1543,7 +1543,7 @@ body.gv-embed .variant-toggle { display: none !important; }
#home .tri-claim:active { transform: translateY(1px); }
#home .tri-claim-bg {
position: absolute; inset: -2px;
background-image: url('../../assets/home/index/coupon-claim-bg.png');
background-image: url('assets/home/index/coupon-claim-bg.png');
background-size: cover; background-position: center bottom;
background-repeat: no-repeat;
pointer-events: none;
@@ -3359,7 +3359,7 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
.prof-savings-label { position: relative; z-index: 1; font-size: 15px; line-height: 1.1; font-weight: 700; color: rgba(255,255,255,.96); text-align: center; letter-spacing: .2px; }
.prof-amount-row { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; gap: 8px; height: 62px; margin: 5px 0 5px; }
.prof-amount-row::before { content: none; }
.prof-wheat { width: 46px; height: 64px; flex: 0 0 auto; opacity: .58; background-image: url('../../assets/profile/index/laurel.png'); background-repeat: no-repeat; background-size: 230px 77px; pointer-events: none; }
.prof-wheat { width: 46px; height: 64px; flex: 0 0 auto; opacity: .58; background-image: url('assets/profile/index/laurel.png'); background-repeat: no-repeat; background-size: 230px 77px; pointer-events: none; }
.prof-wheat.left { background-position: 17% center; }
.prof-wheat.right { background-position: 83% center; }
.prof-laurel { display: none; }
@@ -3457,7 +3457,7 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
<!-- 未登录态 -->
<div id="profileUnlogged" class="prof-scroll">
<div class="prof-hero prof-unlogged-hero">
<img class="prof-clouds" src="../../assets/profile/index/top-clouds.png" alt="">
<img class="prof-clouds" src="assets/profile/index/top-clouds.png" alt="">
<div class="prof-avatar"><svg viewBox="0 0 64 64" fill="none"><circle cx="32" cy="26" r="11" fill="#fff" opacity=".7"/><path d="M14 54c2-8 9-12 18-12s16 4 18 12" stroke="#fff" stroke-width="3" stroke-linecap="round" opacity=".8" fill="none"/></svg></div>
<div class="prof-name">未登录</div>
<div class="prof-phone" style="margin-bottom: 8px;">登录后查看你的省钱战绩</div>
@@ -3465,18 +3465,18 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
</div>
<div class="prof-body-inner">
<div class="prof-card prof-menu-card" style="margin-top: 0;">
<div class="prof-menu-item" onclick="loginFrom='profile'; try{localStorage.setItem('proto_loginFrom','profile');}catch(e){}go('login');"><img src="../../assets/profile/index/lower-price-report-medal.png" class="prof-menu-ico prof-report-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title prof-report-title">上报更低价<span class="prof-report-badge">赚金币</span></div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="loginFrom='profile'; try{localStorage.setItem('proto_loginFrom','profile');}catch(e){}go('login');"><img src="../../assets/profile/index/orders.svg" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">比价记录</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="go('feedback')"><img src="../../assets/profile/index/help.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">意见反馈</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="loginFrom='profile'; try{localStorage.setItem('proto_loginFrom','profile');}catch(e){}go('login');"><img src="../../assets/profile/index/settings.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">设置</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="loginFrom='profile'; try{localStorage.setItem('proto_loginFrom','profile');}catch(e){}go('login');"><img src="assets/profile/index/lower-price-report-medal.png" class="prof-menu-ico prof-report-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title prof-report-title">上报更低价<span class="prof-report-badge">赚金币</span></div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="loginFrom='profile'; try{localStorage.setItem('proto_loginFrom','profile');}catch(e){}go('login');"><img src="assets/profile/index/orders.svg" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">比价记录</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="go('feedback')"><img src="assets/profile/index/help.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">意见反馈</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="loginFrom='profile'; try{localStorage.setItem('proto_loginFrom','profile');}catch(e){}go('login');"><img src="assets/profile/index/settings.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">设置</div></div><span class="prof-menu-arrow"></span></div>
</div>
</div>
</div>
<!-- 已登录态 -->
<div id="profileLogged" class="prof-scroll" style="display: none;">
<div class="prof-hero">
<img class="prof-clouds" src="../../assets/profile/index/top-clouds.png" alt="">
<img class="prof-piggy" src="../../assets/profile/index/piggy-coins.png" alt="">
<img class="prof-clouds" src="assets/profile/index/top-clouds.png" alt="">
<img class="prof-piggy" src="assets/profile/index/piggy-coins.png" alt="">
<div class="prof-id">
<div class="prof-avatar">
<svg viewBox="0 0 80 80" fill="none">
@@ -3521,8 +3521,8 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
<div class="prof-body-inner">
<!-- 省钱战绩 -->
<div class="prof-savings-card" id="profSavingsCard">
<img class="prof-savings-deco" src="../../assets/profile/index/savings-bg.png" alt="">
<img class="prof-savings-coin" src="../../assets/profile/index/coin.png" alt="">
<img class="prof-savings-deco" src="assets/profile/index/savings-bg.png" alt="">
<img class="prof-savings-coin" src="assets/profile/index/coin.png" alt="">
<div class="prof-savings-label">累计发现可省</div>
<div class="prof-amount-row">
<span class="prof-wheat left" aria-hidden="true"></span>
@@ -3545,10 +3545,10 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
</div>
<!-- 菜单 -->
<div class="prof-card prof-menu-card">
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('reportFlow')"><img src="../../assets/profile/index/lower-price-report-medal.png" class="prof-menu-ico prof-report-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title prof-report-title">上报更低价<span class="prof-report-badge">赚金币</span></div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('compareRecords')"><img src="../../assets/profile/index/orders.svg" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">比价记录</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('feedback')"><img src="../../assets/profile/index/help.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">意见反馈</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('settings')"><img src="../../assets/profile/index/settings.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">设置</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('reportFlow')"><img src="assets/profile/index/lower-price-report-medal.png" class="prof-menu-ico prof-report-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title prof-report-title">上报更低价<span class="prof-report-badge">赚金币</span></div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('compareRecords')"><img src="assets/profile/index/orders.svg" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">比价记录</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('feedback')"><img src="assets/profile/index/help.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">意见反馈</div></div><span class="prof-menu-arrow"></span></div>
<div class="prof-menu-item" onclick="window.SGBridge&&SGBridge.navigate('settings')"><img src="assets/profile/index/settings.png" class="prof-menu-ico" alt=""><div class="prof-menu-text"><div class="prof-menu-title">设置</div></div><span class="prof-menu-arrow"></span></div>
</div>
</div>
</div><!-- end profileLogged -->
@@ -3687,7 +3687,7 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
<div class="v6-sparkle s3"></div>
<div class="v6-sparkle s4"></div>
<div class="v6-head">
<div class="lead-line lead-line-inline">今日已从<span class="lg-inline"><img src="../../assets/shared/logos/meituan.png" alt=""></span><span class="lg-inline"><img src="../../assets/shared/logos/taobao.png" alt=""></span>帮您领取</div>
<div class="lead-line lead-line-inline">今日已从<span class="lg-inline"><img src="assets/shared/logos/meituan.png" alt=""></span><span class="lg-inline"><img src="assets/shared/logos/taobao.png" alt=""></span>帮您领取</div>
<div class="num-line"><span class="rest" style="margin-right: 6px;"></span><span class="num" id="demoCouponDoneCount">0</span><span class="rest">张优惠券</span></div>
</div>
<div class="v6-pocket">
@@ -3969,15 +3969,15 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
<div class="checkin-reward-amount">380</div>
</div>
<div class="checkin-reward-card current">
<div class="checkin-reward-icon"><img src="../../assets/welfare/index/checkin-coin-single.png" alt=""></div>
<div class="checkin-reward-icon"><img src="assets/welfare/index/checkin-coin-single.png" alt=""></div>
<div class="checkin-reward-amount">220</div>
</div>
<div class="checkin-reward-card">
<div class="checkin-reward-icon"><img src="../../assets/welfare/index/checkin-coin-single.png" alt=""></div>
<div class="checkin-reward-icon"><img src="assets/welfare/index/checkin-coin-single.png" alt=""></div>
<div class="checkin-reward-amount">260</div>
</div>
<div class="checkin-reward-card">
<div class="checkin-reward-icon"><img src="../../assets/welfare/index/checkin-coins-600.png" alt=""></div>
<div class="checkin-reward-icon"><img src="assets/welfare/index/checkin-coins-600.png" alt=""></div>
<div class="checkin-reward-amount">888</div>
</div>
</div>
@@ -3991,7 +3991,7 @@ TODO: 补充 @owner / @from / @to / @notes(参照 FLOW.md
<div class="checkin-node" data-day="7"><span class="checkin-dot"></span><span>第7天</span></div>
</div>
<button id="checkinBtn" class="checkin-popup-cta" onclick="doCheckin()">签到领 <img src="../../assets/welfare/index/checkin-coin-single.png" alt=""><b>220</b></button>
<button id="checkinBtn" class="checkin-popup-cta" onclick="doCheckin()">签到领 <img src="assets/welfare/index/checkin-coin-single.png" alt=""><b>220</b></button>
<button id="checkinReminderBtn" class="checkin-popup-cta" onclick="doCheckinReminder()" style="display: none;">打开签到提醒</button>
</div>
</div>
@@ -4170,7 +4170,7 @@ const results = [
{
status: 'found',
platform: '淘宝',
platformIcon: '../../assets/shared/logos/taobao.png',
platformIcon: 'assets/shared/logos/taobao.png',
shop: '窑鸡王(康营店)',
delivery: '商家自配',
lowest: true,
@@ -4188,12 +4188,12 @@ const results = [
totalPrice: 57.9,
totalSaved: 59,
bonuses: [{ label: '下单返豆', detail: '返110吃货豆' }],
resultImage: '../../assets/onboarding/index/platform-flows/taobao/result.jpg'
resultImage: 'assets/onboarding/index/platform-flows/taobao/result.jpg'
},
{
status: 'found',
platform: '美团',
platformIcon: '../../assets/shared/logos/meituan.png',
platformIcon: 'assets/shared/logos/meituan.png',
shop: '窑鸡王(康营店)',
delivery: '商家自配',
lowest: false,
@@ -4210,12 +4210,12 @@ const results = [
totalPrice: 62.7,
totalSaved: 24.2,
bonuses: [],
resultImage: '../../assets/onboarding/index/platform-flows/meituan/result.jpg'
resultImage: 'assets/onboarding/index/platform-flows/meituan/result.jpg'
},
{
status: 'not-found',
platform: '京东',
platformIcon: '../../assets/shared/logos/jd.png',
platformIcon: 'assets/shared/logos/jd.png',
reason: '未找到店铺'
}
];
@@ -4232,7 +4232,7 @@ function renderFoundCard(r, idx, ctx) {
const cardClass = isLowest ? 'card with-ribbon lowest' : 'card';
// 标识:最低价 → M2 斜挂红 ribbon(右上角);用户原选 → 描边方角 chip(店名旁 inline
const lowestRibbon = isLowest ? '<img class="ribbon-vi" src="../../assets/shared/badges/lowest-price.png" alt="全网最低">' : '';
const lowestRibbon = isLowest ? '<img class="ribbon-vi" src="assets/shared/badges/lowest-price.png" alt="全网最低">' : '';
const userOrigChip = isUserOrig ? '<span class="badge-userorig">原选择</span>' : '';
// 收集所有 AI 帮领的优惠(配送费减免 + 优惠券 + 店铺活动)
@@ -4343,12 +4343,12 @@ function renderCelebrationSavings() {
const card = document.getElementById('celebSavingsCard');
if (!card) return;
card.innerHTML = `
<img src="../../assets/onboarding/index/first-banner.png" alt="恭喜您完成首次比价" style="display: block;width: 100%;height: auto;">
<img src="assets/onboarding/index/first-banner.png" alt="恭喜您完成首次比价" style="display: block;width: 100%;height: auto;">
`;
}
// 无障碍全屏引导流程
const accessibilityImages = ['../../assets/onboarding/index/guide-1.jpg', '../../assets/onboarding/index/guide-2.jpg', '../../assets/onboarding/index/guide-3.jpg', '../../assets/onboarding/index/guide-4.jpg'];
const accessibilityImages = ['assets/onboarding/index/guide-1.jpg', 'assets/onboarding/index/guide-2.jpg', 'assets/onboarding/index/guide-3.jpg', 'assets/onboarding/index/guide-4.jpg'];
let accessibilityIdx = 0;
function startAccessibilityFlow() {
@@ -5007,10 +5007,10 @@ const CHECKIN_REWARD_RULES = [
{ day: 14, amount: 2888 },
];
const CHECKIN_REWARD_ASSETS = {
coin: '../../assets/welfare/index/checkin-coin-single.png',
coins: '../../assets/welfare/index/checkin-coins-600.png',
bigCoins: '../../assets/welfare/index/checkin-coins-3888.png',
chest: '../../assets/welfare/index/checkin-chest-8888.png'
coin: 'assets/welfare/index/checkin-coin-single.png',
coins: 'assets/welfare/index/checkin-coins-600.png',
bigCoins: 'assets/welfare/index/checkin-coins-3888.png',
chest: 'assets/welfare/index/checkin-chest-8888.png'
};
let checkinShown = (typeof localStorage !== 'undefined' && localStorage.getItem('proto_checkinShown') === 'true');
let checkinPending = false;
@@ -5447,7 +5447,7 @@ function showRewardToast(title, amount) {
var icon = document.createElement('img');
icon.className = 'reward-toast-icon';
icon.src = '../../assets/welfare/index/checkin-coins-600.png';
icon.src = 'assets/welfare/index/checkin-coins-600.png';
icon.alt = '';
var amountEl = document.createElement('div');
@@ -5745,12 +5745,12 @@ function smsCodeComplete() {
// ===== 平台选择流程 =====
// 全量平台列表,外卖版优先;同系优先外卖版,有外卖版则隐藏主站版
const allApps = [
{ id: 'meituan-waimai', name: '美团', icon: '../../assets/shared/logos/meituan.png', color: '#FF6B00', bg: '#FFF3E0', desc: '外卖·美食·买菜', installed: true, replaces: 'meituan' },
{ id: 'taobao-shanguang', name: '淘宝', icon: '../../assets/shared/logos/taobao.png', color: '#FF6A00', bg: '#FFF3E0', desc: '外卖·超市·买药', installed: true, replaces: 'taobao' },
{ id: 'jd-waimai', name: '京东', icon: '../../assets/shared/logos/jd.png', color: '#E1251B', bg: '#FFEBEE', desc: '品质外卖·新人立减', installed: false, replaces: 'jd' },
{ id: 'meituan', name: '美团', icon: '../../assets/shared/logos/meituan.png', color: '#FFD600', bg: '#FFFDE7', desc: '团购·到店·买菜', installed: true },
{ id: 'taobao', name: '淘宝', icon: '../../assets/shared/logos/taobao.png', color: '#FF5000', bg: '#FFF3E0', desc: '网购·百亿补贴', installed: true },
{ id: 'jd', name: '京东', icon: '../../assets/shared/logos/jd.png', color: '#E1251B', bg: '#FFEBEE', desc: '又好又便宜', installed: true },
{ id: 'meituan-waimai', name: '美团', icon: 'assets/shared/logos/meituan.png', color: '#FF6B00', bg: '#FFF3E0', desc: '外卖·美食·买菜', installed: true, replaces: 'meituan' },
{ id: 'taobao-shanguang', name: '淘宝', icon: 'assets/shared/logos/taobao.png', color: '#FF6A00', bg: '#FFF3E0', desc: '外卖·超市·买药', installed: true, replaces: 'taobao' },
{ id: 'jd-waimai', name: '京东', icon: 'assets/shared/logos/jd.png', color: '#E1251B', bg: '#FFEBEE', desc: '品质外卖·新人立减', installed: false, replaces: 'jd' },
{ id: 'meituan', name: '美团', icon: 'assets/shared/logos/meituan.png', color: '#FFD600', bg: '#FFFDE7', desc: '团购·到店·买菜', installed: true },
{ id: 'taobao', name: '淘宝', icon: 'assets/shared/logos/taobao.png', color: '#FF5000', bg: '#FFF3E0', desc: '网购·百亿补贴', installed: true },
{ id: 'jd', name: '京东', icon: 'assets/shared/logos/jd.png', color: '#E1251B', bg: '#FFEBEE', desc: '又好又便宜', installed: true },
];
// 外卖版是这个产品的画布:只要 allApps 里有外卖版条目,就隐藏对应主站版(不论主站是否安装)。
@@ -6470,43 +6470,43 @@ function selectProduct(el) {
const demoSteps = [
// ===== 一键领券前置流程 =====
{
img: '../../assets/onboarding/index/platform-flows/meituan/1-home.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/1-home.jpg',
mode: 'couponPrompt',
},
// TODO: 替换为真实的美团神券中心 / 饿了么神券中心截图
{
img: '../../assets/onboarding/index/platform-flows/meituan/1-home.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/1-home.jpg',
mode: 'agentFlow',
agentText: '正在打开美团神券中心...',
platforms: { 'meituan-waimai': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/1-home.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/1-home.jpg',
mode: 'agentFlow',
agentText: '已领取美团红包',
couponDelta: 8,
platforms: { 'meituan-waimai': 'done' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/2-coupon-center.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/2-coupon-center.jpg',
mode: 'agentFlow',
agentText: '正在领取淘宝神券...',
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/3-coupon-claimed.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/3-coupon-claimed.jpg',
mode: 'agentFlow',
agentText: '已领取淘宝神券',
couponDelta: 12,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'done' },
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/1-home.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/1-home.jpg',
mode: 'couponDone',
},
// ===== 比价引导流程 =====
{
img: '../../assets/onboarding/index/platform-flows/meituan/1-home.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/1-home.jpg',
guide: '• 点击下方店铺,并找到商品准备比价',
guideTitle: '找到待比价的商品',
kickoff: true,
@@ -6514,12 +6514,12 @@ const demoSteps = [
finger: { top: 590, left: 312 },
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/2-shop-top.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/2-shop-top.jpg',
guide: '下滑找到待比价的商品',
mode: 'swipe',
},
{
img: '../../assets/onboarding/index/waimai-guide/add-to-cart.png',
img: 'assets/onboarding/index/waimai-guide/add-to-cart.png',
guide: '点击「+」加入购物车',
spotlight: { top: 174, left: 70, width: 301, height: 152 },
plusFocus: { top: 295, left: 352 },
@@ -6531,7 +6531,7 @@ const demoSteps = [
spotlightOpacity: .62,
},
{
img: '../../assets/onboarding/index/waimai-guide/missing-required.png',
img: 'assets/onboarding/index/waimai-guide/missing-required.png',
guide: '点击添加必选品',
spotlight: { top: 719, left: 0, width: 375, height: 93 },
plusFocus: { top: 755, left: 311, width: 128, height: 54, shape: 'rect' },
@@ -6543,7 +6543,7 @@ const demoSteps = [
spotlightOpacity: .62,
},
{
img: '../../assets/onboarding/index/waimai-guide/add-required-item.png',
img: 'assets/onboarding/index/waimai-guide/add-required-item.png',
guide: '点击「+」添加',
spotlight: { top: 306, left: 76, width: 296, height: 134 },
plusFocus: { top: 403, left: 352, width: 46, height: 46, shape: 'circle' },
@@ -6555,7 +6555,7 @@ const demoSteps = [
spotlightOpacity: .62,
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/5-shop-cart.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/5-shop-cart.jpg',
guide: '点击去结算',
spotlight: { top: 719, left: 0, width: 375, height: 93 },
plusFocus: { top: 790, left: 315, width: 112, height: 46, shape: 'pill' },
@@ -6567,7 +6567,7 @@ const demoSteps = [
spotlightOpacity: .62,
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/6-checkout.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/6-checkout.jpg',
guide: '请选择待使用的红包',
spotlight: { top: 636, left: 14, width: 347, height: 48 },
finger: { top: 660, left: 315, size: 60, imgTransform: 'rotate(6deg)' },
@@ -6577,7 +6577,7 @@ const demoSteps = [
spotlightOpacity: .62,
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/7-coupon-select.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/7-coupon-select.jpg',
guide: '点击确认',
spotlight: { top: 752, left: 9, width: 354, height: 55 },
plusFocus: { top: 780, left: 312, width: 104, height: 52, shape: 'confirm' },
@@ -6589,55 +6589,55 @@ const demoSteps = [
spotlightOpacity: .62,
},
{
img: '../../assets/onboarding/index/platform-flows/meituan/8-checkout-coupon.jpg',
img: 'assets/onboarding/index/platform-flows/meituan/8-checkout-coupon.jpg',
mode: 'startCompare',
},
// ===== 淘宝 Agent 自动比价流程 =====
// 比价阶段:美团已用作起点(done),淘宝为当前 active 平台
{
img: '../../assets/onboarding/index/platform-flows/taobao/1-home.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/1-home.jpg',
mode: 'agentFlow',
agentText: '正在打开淘宝...',
retentionPercent: 11,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/4-search.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/4-search.jpg',
mode: 'agentFlow',
agentText: '正在搜索「窑鸡王」...',
retentionPercent: 26,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/5-shop-top.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/5-shop-top.jpg',
mode: 'agentFlow',
agentText: '正在浏览菜单...',
retentionPercent: 40,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/6-shop-item.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/6-shop-item.jpg',
mode: 'agentFlow',
agentText: '搜索同款商品中...',
retentionPercent: 55,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/7-spec.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/7-spec.jpg',
mode: 'agentFlow',
agentText: '正在确认商品规格...',
retentionPercent: 70,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/8-checkout.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/8-checkout.jpg',
mode: 'agentFlow',
agentText: '正在应用所有优惠...',
retentionPercent: 85,
platforms: { 'meituan-waimai': 'done', 'taobao-shanguang': 'active' },
},
{
img: '../../assets/onboarding/index/platform-flows/taobao/result.jpg',
img: 'assets/onboarding/index/platform-flows/taobao/result.jpg',
mode: 'agentFlow',
agentText: '正在获取淘宝最终价格',
retentionPercent: 100,
@@ -7134,7 +7134,7 @@ const couponPromptVariants = {
'<div style="background: linear-gradient(180deg,#fff 70%,#FFF1F4 100%);border-radius: 18px;padding: 12px 12px;margin-bottom: 16px;">' +
'<div style="font-size: 11px;color: var(--gray-600);font-weight: 600;margin-bottom: 12px;">已为您发现 <span style="color: #FF4081;font-weight: 800;">3</span> 个平台都有大额优惠</div>' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-pink" style="background: #fff;border: 2px solid #FF6B9E;border-radius: 12px;padding: 8px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 36px;height: 36px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 11px;font-weight: 700;color: var(--gray-900);margin-top: 6px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 4px;right: 4px;width: 16px;height: 16px;border-radius: 50%;background: #FF4081;display: flex;align-items: center;justify-content: center;"><svg width="9" height="9" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-pink" style="background: #fff;border: 2px solid #FF6B9E;border-radius: 12px;padding: 8px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 36px;height: 36px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 11px;font-weight: 700;color: var(--gray-900);margin-top: 6px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 4px;right: 4px;width: 16px;height: 16px;border-radius: 50%;background: #FF4081;display: flex;align-items: center;justify-content: center;"><svg width="9" height="9" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<button class="btn btn-primary btn-lg" style="border-radius: 24px;font-size: 16px;height: 48px;width: 100%;background: linear-gradient(180deg,#FFE066,#FFD600);color: #1a1a1a;font-weight: 900;box-shadow: 0 6px 16px rgba(255,179,0,.5);" onclick="onClaimCouponConfirm()">一键自动领取</button>' +
@@ -7147,7 +7147,7 @@ const couponPromptVariants = {
'<div style="font-size: 18px;font-weight: 900;color: var(--gray-900);line-height: 1.4;margin-bottom: 12px;">您今日还有大额优惠券可领</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +
@@ -7160,7 +7160,7 @@ const couponPromptVariants = {
'<div style="width: 56px;height: 56px;border-radius: 14px;margin: 0 auto 12px;background: #FFD600;display: flex;align-items: center;justify-content: center;box-shadow: 0 4px 14px rgba(255,179,0,.5);"><span style="font-size: 18px;font-weight: 900;color: #1a1a1a;line-height: 1.05;text-align: center;">傻瓜<br>比价</span></div>' +
'<div style="font-size: 18px;font-weight: 800;color: var(--gray-900);line-height: 1.4;margin-bottom: 12px;">您今日还有大额优惠券可领</div>' +
'<div style="background: var(--gray-100);border-radius: 14px;padding: 8px;margin-bottom: 16px;display: flex;flex-direction: column;gap: 6px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 1.5px solid #FFD600;border-radius: 12px;padding: 8px 12px;display: flex;align-items: center;gap: 8px;text-align: left;"><img src="' + arr[i+1] + '" style="width: 36px;height: 36px;border-radius: 8px;flex-shrink: 0;"/><div style="flex: 1;font-size: 14px;font-weight: 700;color: var(--gray-900);">' + arr[i] + '</div><span class="cp-toggle" style="position: relative;width: 36px;height: 20px;border-radius: 8px;background: #FFD600;flex-shrink: 0;transition: background .2s;"><span style="position: absolute;top: 2px;left: 2px;width: 16px;height: 16px;border-radius: 50%;background: #fff;box-shadow: 0 1px 3px rgba(0,0,0,.2);transform: translateX(16px);transition: transform .2s;"></span></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 1.5px solid #FFD600;border-radius: 12px;padding: 8px 12px;display: flex;align-items: center;gap: 8px;text-align: left;"><img src="' + arr[i+1] + '" style="width: 36px;height: 36px;border-radius: 8px;flex-shrink: 0;"/><div style="flex: 1;font-size: 14px;font-weight: 700;color: var(--gray-900);">' + arr[i] + '</div><span class="cp-toggle" style="position: relative;width: 36px;height: 20px;border-radius: 8px;background: #FFD600;flex-shrink: 0;transition: background .2s;"><span style="position: absolute;top: 2px;left: 2px;width: 16px;height: 16px;border-radius: 50%;background: #fff;box-shadow: 0 1px 3px rgba(0,0,0,.2);transform: translateX(16px);transition: transform .2s;"></span></span></div>'; }, '') +
'</div>' +
'<button class="btn btn-primary btn-lg" style="border-radius: 24px;font-size: 16px;height: 48px;width: 100%;" onclick="onClaimCouponConfirm()">一键自动领取</button>' +
'</div>',
@@ -7174,7 +7174,7 @@ const couponPromptVariants = {
'<div style="font-size: 13px;font-weight: 600;color: #8B6914;line-height: 1.5;margin-bottom: 12px;">AI 跨平台一键领取,无需手动切换 APP</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +
@@ -7189,7 +7189,7 @@ const couponPromptVariants = {
'<div style="display: inline-block;background: rgba(255,179,0,.18);color: #8B6914;font-size: 12px;font-weight: 700;padding: 4px 12px;border-radius: 32px;margin-bottom: 12px;">🎁 领取后立享更低好价</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +
@@ -7208,7 +7208,7 @@ const couponPromptVariants = {
'</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +
@@ -7223,7 +7223,7 @@ const couponPromptVariants = {
'<div style="font-size: 18px;font-weight: 900;color: var(--gray-900);line-height: 1.4;margin-bottom: 12px;">发现您有未领取的大额优惠券</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +
@@ -7238,7 +7238,7 @@ const couponPromptVariants = {
'<div style="font-size: 13px;font-weight: 700;color: #D9534F;line-height: 1.5;margin-bottom: 12px;">⏰ 仅今日有效,错过自动失效</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width="10" height="10" viewBox="0 0 9 9"><path d="M2 4.5l1.5 1.5 3-4" stroke="#fff" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +
@@ -7253,7 +7253,7 @@ const couponPromptVariants = {
'<div style="display: inline-flex;align-items: center;gap: 6px;background: rgba(255,179,0,.18);color: #8B6914;font-size: 12px;font-weight: 700;padding: 4px 12px;border-radius: 32px;margin-bottom: 12px;"><svg width="14" height="12" viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M2 7.2 V10.8 A1.4 1.4 0 0 0 3.4 12.2 H5.4 L11.2 16.4 A0.8 0.8 0 0 0 12.5 15.7 V2.3 A0.8 0.8 0 0 0 11.2 1.6 L5.4 5.8 H3.4 A1.4 1.4 0 0 0 2 7.2 Z" fill="#8B6914"/><path d="M14.6 4.4 C16 6 16 12 14.6 13.6" stroke="#8B6914" stroke-width="1.4" stroke-linecap="round" fill="none"/><path d="M16.8 2.6 C19.2 5.2 19.2 12.8 16.8 15.4" stroke="#8B6914" stroke-width="1.4" stroke-linecap="round" fill="none" opacity=".55"/><circle cx="6.2" cy="14.4" r="1.5" fill="#8B6914"/></svg>先领券再比价</div>' +
'<div style="background: #fff;border-radius: 18px;padding: 12px 8px;margin-bottom: 8px;box-shadow: 0 2px 12px rgba(255,193,7,.15);">' +
'<div style="display: grid;grid-template-columns: repeat(3,1fr);gap: 8px;">' +
['美团', '../../assets/shared/logos/meituan.png', '淘宝', '../../assets/shared/logos/taobao.png', '京东', '../../assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width=\"10\" height=\"10\" viewBox=\"0 0 9 9\"><path d=\"M2 4.5l1.5 1.5 3-4\" stroke=\"#fff\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/></svg></span></div>'; }, '') +
['美团', 'assets/shared/logos/meituan.png', '淘宝', 'assets/shared/logos/taobao.png', '京东', 'assets/shared/logos/jd.png'].reduce(function(acc, _, i, arr){ if (i % 2) return acc; return acc + '<div data-checked="true" onclick="toggleCouponPlatform(this)" class="cp-card cp-card-yellow" style="background: #fff;border: 2px solid #FFB300;border-radius: 14px;padding: 12px 4px 8px;position: relative;"><img src="' + arr[i+1] + '" style="width: 42px;height: 42px;border-radius: 8px;margin: 0 auto;display: block;"/><div style="font-size: 12px;font-weight: 700;color: var(--gray-900);margin-top: 8px;">' + arr[i] + '</div><span class="cp-check" style="position: absolute;top: 6px;right: 6px;width: 18px;height: 18px;border-radius: 50%;background: #FFB300;display: flex;align-items: center;justify-content: center;"><svg width=\"10\" height=\"10\" viewBox=\"0 0 9 9\"><path d=\"M2 4.5l1.5 1.5 3-4\" stroke=\"#fff\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/></svg></span></div>'; }, '') +
'</div>' +
'</div>' +
'<div style="font-size: 12px;color: var(--gray-500);font-weight: 500;margin-bottom: 12px;">将在以上平台领取</div>' +