fix(vip): 在 /user/vip/ 档位购买卡下方补充积分兑换会员入口

参考主题 zibpay_user_page_tab_content_vip:非会员 + 积分兑换会员开启 +
有可兑换套餐时,在两张档位购买卡下方输出全宽入口横条(points-color 图标
+ 标题 + 立即兑换 badg),点击经 data-aksrt-vip-points-open 打开 wp_footer
静态兑换弹窗,与会员购买弹窗内入口共用同一弹窗。

- aksrt-vip.php 新增 aksrt_get_vip_points_exchange_entry_html(),门控与
  弹窗壳同源(取服务端 catalog),已是会员不展示(对齐参考主题契约)
- vip-tab.php 在卡片区之后输出入口;credits.css 补 .uc-vip-points-entry
  表面样式(与档位卡同一变量体系,暗色自适应)
- pay-vip.js 改文档级委托承接 data-aksrt-vip-points-open,一处绑定覆盖
  静态页面横条与弹窗内按钮;移除 bindModalUi 内的重复分支
- 契约测试更新为双入口(11 项),node --test 420 项通过,php -l 通过

未写数据迁移;未做真实视觉效果验收。
This commit is contained in:
kate522 committed 2026-09-23 14:30:54 +08:00
1 parent b798c7a45d
commit 2801a89c1f
7 files changed
+164 -22

No files matched your search

+2 -2
View File
@@ -49,8 +49,8 @@
opacity:0 形成隐形遮罩,拦截整页点击;
- 打开态由 pay-vip.js 自包含开关的内联 display:flex 驱动(block 会破坏
.flex.jc 双轴居中),与余额充值/购买积分弹窗同构;
- 入口在本页 runtime 会员弹窗内,壳需高于 runtime 宿主(100050),以复现
参考主题在会员弹窗之上再叠一层兑换弹窗的行为。 */
- 入口在会员购买弹窗与 /user/vip/ 页面横条两处,壳需高于 runtime 宿主
(100050),以复现参考主题在会员弹窗之上再叠一层兑换弹窗的行为。 */
.modal[data-aksrt-vip-points-modal] {
display: none;
z-index: 100060;
+25
View File
@@ -1325,6 +1325,28 @@ body.uc-modal-open {
margin: 0 !important;
line-height: 1;
}
/* 积分兑换会员入口(参考主题用户中心 VIP 页 1:1:两张档位购买卡下方的全宽横条,
左侧 points-color 图标 + 「积分兑换会员」,右侧「立即兑换」badg + 右箭头;
结构与配色由 zibll 工具类(flex/ac/jsb/flex1/em12/c-yellow/badg)承担,
此处只提供与 .uc-vip-level-card 同一变量体系的表面与间距)。 */
.uc-vip-points-entry {
margin-top: 12px;
padding: 12px 16px;
border-radius: var(--radius, 10px);
background: var(--main-bg-color, var(--surface-1, #fff));
box-shadow: var(--shadow-sm);
color: inherit;
text-decoration: none;
}
.uc-vip-points-entry:hover,
.uc-vip-points-entry:focus {
text-decoration: none;
}
.uc-vip-points-entry .icon {
flex: 0 0 auto;
}
.uc-vip-assets-entry {
gap: 12px;
}
@@ -1361,6 +1383,9 @@ html:not(.dark):not(.theme-dark) .uc-vip-level-card.level-2 .v-name {
.uc-vip-level-card {
flex: 1 1 auto;
}
.uc-vip-points-entry {
padding: 12px 14px;
}
.uc-vip-tab .user-content-myvip {
padding: 14px 16px;
gap: 12px;