后端 API:AI 对话/报告/余额告警 等服务与路由;小程序 tabBar 配置与分润相关能力;出站推送 Webhook 与管理端调试;飞书留资、小程序数据分析 等支撑;多份 数据库迁移(AI 聊天、灵魂文章、tabBar、分润等)。 管理端 / 超管:看板、用户/订单/分销/财务、设置与 小程序 tabBar 管理、分润规则、灵魂文章、AI 配置与监控 等大量页面与能力扩展;主题与布局更新。 抖音小程序:与微信侧在 结果页/购买/个人中心 等方向做了同步或优化。 另含 部署/脚本、开发文档 等配套更新。 邀请码与解锁:后端 分销/邀请码 接口与 add_invite_codes 等 SQL;小程序侧 邀请码弹窗组件、个人中心/推广/多类结果页 的填写入口与 解锁门控(inviteCodeGate、unlockGate);并补充 《小程序解锁引导与邀请码方案》 文档。 超管后台:路由与 企业中心(EnterpriseHub) 等交互与结构优化。 小程序体验:在 首页结果、推广、各测评结果页 上继续打磨;与 邀请码门控、审核门控 小步联动。
321 lines
5.6 KiB
Plaintext
321 lines
5.6 KiB
Plaintext
/* pages/result/mbti.wxss(dash 样式见 app.wxss;邀请码入口样式见 app.wxss → invite-fill-entry) */
|
||
|
||
.result-page {
|
||
width: 100%;
|
||
min-height: 100vh;
|
||
background-color: #f5f5f5;
|
||
}
|
||
|
||
.content-scroll {
|
||
width: 100%;
|
||
height: 100vh;
|
||
}
|
||
|
||
.content-container {
|
||
padding: 32rpx;
|
||
padding-bottom: 64rpx;
|
||
}
|
||
|
||
.content-container--with-fixed-footer {
|
||
padding-bottom: calc(64rpx + 220rpx + env(safe-area-inset-bottom));
|
||
}
|
||
|
||
.content-scroll--with-fixed-footer {
|
||
height: 100vh;
|
||
}
|
||
|
||
.type-card,
|
||
.analysis-card {
|
||
background-color: #fff;
|
||
border-radius: 24rpx;
|
||
padding: 48rpx;
|
||
margin-bottom: 32rpx;
|
||
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
|
||
}
|
||
|
||
.type-header {
|
||
text-align: center;
|
||
margin-bottom: 40rpx;
|
||
}
|
||
|
||
.type-label {
|
||
display: block;
|
||
font-size: 32rpx;
|
||
color: #333;
|
||
margin-bottom: 16rpx;
|
||
}
|
||
|
||
.type-value {
|
||
display: block;
|
||
font-size: 72rpx;
|
||
font-weight: bold;
|
||
color: #8b5cf6;
|
||
margin: 16rpx 0;
|
||
}
|
||
|
||
.type-title {
|
||
display: block;
|
||
font-size: 34rpx;
|
||
color: #a78bfa;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
|
||
.type-description {
|
||
display: block;
|
||
font-size: 28rpx;
|
||
color: #666;
|
||
line-height: 1.6;
|
||
}
|
||
|
||
.dimensions-section .dimension-item {
|
||
margin-bottom: 28rpx;
|
||
}
|
||
|
||
.dimension-labels,
|
||
.dimension-values {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.label-left,
|
||
.label-right,
|
||
.value-left,
|
||
.value-right {
|
||
font-size: 24rpx;
|
||
color: #666;
|
||
}
|
||
|
||
.progress-bar-container {
|
||
width: 100%;
|
||
height: 16rpx;
|
||
background-color: #e5e5e5;
|
||
border-radius: 8rpx;
|
||
margin: 8rpx 0;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.progress-bar {
|
||
height: 100%;
|
||
border-radius: 8rpx;
|
||
background: linear-gradient(90deg, #8b5cf6 0%, #a78bfa 100%);
|
||
}
|
||
|
||
.card-title {
|
||
display: block;
|
||
font-size: 36rpx;
|
||
font-weight: bold;
|
||
color: #333;
|
||
margin-bottom: 24rpx;
|
||
}
|
||
|
||
.trait-section {
|
||
margin-bottom: 24rpx;
|
||
}
|
||
|
||
.trait-title {
|
||
display: block;
|
||
font-size: 30rpx;
|
||
color: #333;
|
||
margin-bottom: 12rpx;
|
||
}
|
||
|
||
.trait-item {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
margin-bottom: 8rpx;
|
||
}
|
||
|
||
.trait-bullet {
|
||
margin-right: 12rpx;
|
||
color: #8b5cf6;
|
||
}
|
||
|
||
.trait-text {
|
||
flex: 1;
|
||
font-size: 28rpx;
|
||
color: #666;
|
||
line-height: 1.6;
|
||
}
|
||
|
||
.career-item {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 18rpx;
|
||
}
|
||
|
||
.career-dot {
|
||
width: 14rpx;
|
||
height: 14rpx;
|
||
border-radius: 50%;
|
||
background-color: #8b5cf6;
|
||
margin-right: 18rpx;
|
||
}
|
||
|
||
.career-text {
|
||
flex: 1;
|
||
font-size: 28rpx;
|
||
color: #333;
|
||
}
|
||
|
||
.relationship-text {
|
||
font-size: 28rpx;
|
||
color: #666;
|
||
line-height: 1.7;
|
||
}
|
||
|
||
.action-section {
|
||
margin-top: 16rpx;
|
||
padding-bottom: 40rpx;
|
||
}
|
||
|
||
.btn {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 100% !important;
|
||
padding: 28rpx;
|
||
border-radius: 16rpx;
|
||
margin-bottom: 20rpx;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* 消除微信 button 伪元素自带边框 */
|
||
.btn::after {
|
||
border: none;
|
||
}
|
||
|
||
.btn-primary {
|
||
background: linear-gradient(135deg, #FF6B8A 0%, #ff8fa3 100%);
|
||
box-shadow: 0 8rpx 24rpx rgba(255, 107, 138, 0.3);
|
||
}
|
||
|
||
.btn-outline {
|
||
background: #fff;
|
||
border: 2rpx solid #FF6B8A;
|
||
}
|
||
|
||
.btn-text {
|
||
font-size: 32rpx;
|
||
font-weight: 600;
|
||
color: #fff;
|
||
}
|
||
|
||
.btn-text-outline {
|
||
font-size: 30rpx;
|
||
color: #FF6B8A;
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* 付费墙 */
|
||
.paywall-card {
|
||
margin-top: 24rpx;
|
||
border-radius: 24rpx;
|
||
overflow: hidden;
|
||
}
|
||
.paywall-content { position: relative; min-height: 360rpx; }
|
||
.paywall-blur {
|
||
padding: 32rpx 24rpx 200rpx;
|
||
border-radius: 24rpx;
|
||
background: rgba(255, 255, 255, 0.97);
|
||
backdrop-filter: blur(6rpx);
|
||
}
|
||
.paywall-mask {
|
||
position: absolute;
|
||
left: 0; top: 0; right: 0; bottom: 0;
|
||
border-radius: 24rpx;
|
||
z-index: 1;
|
||
/* 更轻的白纱,底部也保持通透 */
|
||
background: linear-gradient(
|
||
180deg,
|
||
rgba(255, 255, 255, 0.08) 0%,
|
||
rgba(255, 255, 255, 0.28) 38%,
|
||
rgba(255, 255, 255, 0.58) 100%
|
||
);
|
||
pointer-events: none;
|
||
}
|
||
.paywall-fake-title { display: block; font-size: 30rpx; font-weight: 600; color: #444; margin-bottom: 16rpx; }
|
||
.paywall-fake-line { display: block; font-size: 26rpx; color: #888; line-height: 1.8; }
|
||
.paywall-btn {
|
||
position: absolute;
|
||
left: 5%;
|
||
right: 5%;
|
||
width: 90%;
|
||
bottom: 132rpx;
|
||
z-index: 3;
|
||
padding: 20rpx 0;
|
||
border-radius: 999rpx;
|
||
background: linear-gradient(135deg, #FF6B8A 0%, #ff8fa3 100%);
|
||
box-shadow: 0 8rpx 24rpx rgba(255, 107, 138, 0.35);
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: baseline;
|
||
justify-content: center;
|
||
gap: 12rpx;
|
||
}
|
||
.paywall-btn-main { font-size: 30rpx; color: #fff; font-weight: 600; }
|
||
.paywall-btn-price { font-size: 24rpx; color: #ffe5f0; }
|
||
|
||
.result-share-footer {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
z-index: 200;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
padding: 20rpx 32rpx;
|
||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||
background: #f5f5f5;
|
||
box-shadow: 0 -8rpx 24rpx rgba(0, 0, 0, 0.06);
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 16rpx;
|
||
}
|
||
|
||
.result-share-footer--stack {
|
||
gap: 16rpx;
|
||
}
|
||
.result-share-footer-btn {
|
||
width: 100% !important;
|
||
box-sizing: border-box;
|
||
display: block;
|
||
margin: 0;
|
||
padding: 0;
|
||
min-height: 96rpx;
|
||
line-height: 96rpx;
|
||
border-radius: 999rpx;
|
||
font-size: 30rpx;
|
||
font-weight: 600;
|
||
color: #fff;
|
||
background: linear-gradient(135deg, #e63946 0%, #ff6b9d 100%);
|
||
border: none;
|
||
}
|
||
.result-share-footer-btn::after {
|
||
border: none;
|
||
}
|
||
|
||
.paywall-btn--inline-profile {
|
||
position: relative !important;
|
||
left: auto !important;
|
||
right: auto !important;
|
||
bottom: auto !important;
|
||
width: 100% !important;
|
||
margin-top: 28rpx;
|
||
z-index: 1;
|
||
}
|
||
|
||
.result-share-footer-row2 {
|
||
display: flex;
|
||
flex-direction: row;
|
||
gap: 16rpx;
|
||
width: 100%;
|
||
}
|
||
|
||
.result-share-footer-row2 .result-share-footer-btn {
|
||
flex: 1;
|
||
min-height: 88rpx;
|
||
line-height: 88rpx;
|
||
}
|