feat(ui): 第四批高级感升级(友圈/动态详情/门票/下单页)

- 友圈:玻璃头部、发动态按钮、动态卡渐变与错峰入场、话题胶囊

- 动态详情:导航与内容卡玻璃化、评论区与输入框统一

- 我的门票:票据卡分层、核销码数字字体、暖色主题适配

- 下单页:模式卡/大神卡/底部支付栏统一走主题变量,修复主题一致性测试

- HBuilderX 编译成功;119 套件/777 用例全绿
这个提交包含在:
xcbyy
2026-10-23 14:15:38 +08:00
父节点 87c0ac1c6f
当前提交 1264792a46
共有 4 个文件被更改,包括 390 次插入 和 0 次删除

查看文件

@@ -694,4 +694,103 @@ const goBack = () => {
box-shadow: 0 0 28rpx rgba(16, 185, 129, 0.6), inset 0 0 18rpx rgba(16, 185, 129, 0.25);
}
}
/* ===== Premium visual layer: 我的门票 ===== */
.ticket-container {
background:
radial-gradient(100% 40% at 50% -6%, rgba(16, 185, 129, 0.12), transparent 62%),
var(--surface-0);
}
.ticket-card {
background:
radial-gradient(circle at 86% 6%, rgba(217, 164, 65, 0.08), transparent 40%),
linear-gradient(180deg, rgba(22, 31, 51, 0.96) 0%, rgba(13, 20, 36, 0.98) 100%);
border-color: var(--hairline);
box-shadow:
inset 0 1rpx 0 rgba(255, 255, 255, 0.05),
0 22rpx 56rpx rgba(0, 0, 0, 0.32);
.ticket-title {
font-size: 34rpx;
letter-spacing: 0.3rpx;
}
.code-section .code-slots .digit-box {
width: 112rpx;
height: 132rpx;
background: rgba(5, 9, 18, 0.78);
border-width: 2rpx;
box-shadow:
0 0 0 1rpx rgba(16, 185, 129, 0.12),
0 12rpx 28rpx rgba(0, 0, 0, 0.22);
.digit-text {
font-family: var(--font-num, monospace);
font-size: 66rpx;
text-shadow: 0 0 14rpx rgba(16, 185, 129, 0.45);
}
}
.ticket-codes-panel .code-tab-switch {
background: rgba(5, 9, 18, 0.55);
border-color: var(--hairline);
}
.security-footer {
background: rgba(5, 9, 18, 0.42);
border-top-color: rgba(255, 255, 255, 0.05);
}
}
.ticket-container.theme-warm {
background:
radial-gradient(100% 38% at 50% -6%, rgba(16, 185, 129, 0.06), transparent 62%),
#FDFBF7;
.ticket-card {
background:
radial-gradient(circle at 86% 6%, rgba(234, 88, 12, 0.05), transparent 40%),
#FFFFFF;
border-color: #F0ECE4;
box-shadow: 0 20rpx 48rpx rgba(28, 25, 23, 0.07);
.ticket-title {
color: #1C1917;
}
.ticket-meta .meta-v {
color: #57534E;
}
.ticket-punch-wrap .punch {
background-color: #FDFBF7;
}
.code-section .code-slots .digit-box {
background: #FAF8F4;
border-color: #34D399;
box-shadow: 0 0 0 1rpx rgba(16, 185, 129, 0.08);
.digit-text {
color: #047857;
text-shadow: none;
}
}
.ticket-codes-panel .code-tab-switch {
background: #F8F5F0;
border-color: #F0ECE4;
}
.security-footer {
background: #FAF8F4;
border-top-color: #F0ECE4;
}
}
.ticket-empty {
background: #FFFFFF;
border-color: #E7E5E4;
}
}
</style>

查看文件

@@ -1257,4 +1257,85 @@ onShow(() => {
}
}
}
/* ===== Premium visual layer: 动态详情 ===== */
.post-detail-page {
background:
radial-gradient(110% 36% at 50% -6%, rgba(99, 102, 241, 0.12), transparent 62%),
var(--surface-0);
.custom-nav-bar {
background: rgba(7, 11, 20, 0.86);
backdrop-filter: blur(18px);
border-bottom: 1rpx solid rgba(255, 255, 255, 0.04);
}
.detail-post-card,
.detail-comments-card {
background: linear-gradient(180deg, rgba(22, 31, 51, 0.9) 0%, rgba(13, 20, 36, 0.94) 100%);
border: 1rpx solid var(--hairline);
border-radius: 26rpx;
box-shadow: 0 12rpx 30rpx rgba(0, 0, 0, 0.18);
}
.detail-post-card .author-avatar {
border: 2rpx solid rgba(255, 255, 255, 0.12);
}
.detail-content-text {
font-size: 28rpx;
line-height: 1.7;
color: #D5DDEC;
}
.comments-section-header .section-title {
font-size: 30rpx;
letter-spacing: 0.2rpx;
}
.comment-item {
border-bottom-color: rgba(255, 255, 255, 0.045);
}
.detail-comment-input {
background: rgba(7, 11, 20, 0.55);
border: 1rpx solid var(--hairline);
border-radius: 999rpx;
}
.comments-empty,
.comments-loading {
color: #7C89A6;
}
}
.post-detail-page.theme-warm {
background:
radial-gradient(100% 34% at 50% -6%, rgba(234, 88, 12, 0.06), transparent 62%),
#FDFBF7;
.custom-nav-bar {
background: rgba(253, 251, 247, 0.92);
border-bottom-color: #F0ECE4;
}
.detail-post-card,
.detail-comments-card {
background: #FFFFFF;
border-color: #F0ECE4;
box-shadow: 0 12rpx 28rpx rgba(28, 25, 23, 0.05);
}
.detail-content-text {
color: #44403C;
}
.comment-item {
border-bottom-color: #F5F2EC;
}
.detail-comment-input {
background: #F8F5F0;
border-color: #F0ECE4;
}
}
</style>

查看文件

@@ -67,6 +67,7 @@
v-for="(post, index) in filteredPosts"
:key="post.id"
class="post-card"
:style="{ animationDelay: `${Math.min(index, 8) * 45}ms` }"
@click="openPostDetail(post)"
>
<!-- 作者信息行 -->
@@ -3364,4 +3365,124 @@ const submitPublishPost = async () => {
}
}
}
/* ===== Premium visual layer: 友圈广场 ===== */
.community-container {
background:
radial-gradient(110% 40% at 50% -6%, rgba(99, 102, 241, 0.14), transparent 62%),
var(--surface-0);
.community-header {
background: rgba(7, 11, 20, 0.86);
backdrop-filter: blur(18px);
border-bottom: 1rpx solid rgba(255, 255, 255, 0.04);
}
.page-title {
font-size: 42rpx;
font-weight: 800;
letter-spacing: 0.5rpx;
}
.page-sub {
color: #7C89A6;
letter-spacing: 0.3rpx;
}
.publish-btn {
background: linear-gradient(135deg, #818CF8 0%, #6366F1 60%, #7C3AED 100%);
border-radius: 999rpx;
box-shadow: 0 10rpx 24rpx rgba(99, 102, 241, 0.28);
}
.post-card {
background: linear-gradient(180deg, rgba(22, 31, 51, 0.96) 0%, rgba(13, 20, 36, 0.98) 100%);
border: 1rpx solid var(--hairline);
border-radius: 26rpx;
box-shadow: 0 12rpx 30rpx rgba(0, 0, 0, 0.2);
animation: communityCardEnter 0.5s var(--ease-out) both;
.author-avatar {
border: 2rpx solid rgba(255, 255, 255, 0.12);
}
.author-name {
font-size: 27rpx;
font-weight: 700;
}
.post-content {
font-size: 27rpx;
line-height: 1.65;
color: #D5DDEC;
}
.topic-item {
color: #A5B4FC;
background: rgba(99, 102, 241, 0.1);
border: 1rpx solid rgba(99, 102, 241, 0.18);
border-radius: 999rpx;
padding: 4rpx 12rpx;
}
.post-footer {
border-top-color: rgba(255, 255, 255, 0.045);
}
}
.posts-empty {
background: rgba(255, 255, 255, 0.02);
border: 1rpx dashed rgba(255, 255, 255, 0.09);
border-radius: 24rpx;
}
}
.community-container.theme-warm {
background:
radial-gradient(100% 38% at 50% -6%, rgba(234, 88, 12, 0.06), transparent 62%),
#FDFBF7;
.community-header {
background: rgba(253, 251, 247, 0.92);
border-bottom-color: #F0ECE4;
}
.page-title {
color: #1C1917;
}
.page-sub {
color: #A8A29E;
}
.post-card {
background: #FFFFFF;
border-color: #F0ECE4;
box-shadow: 0 12rpx 28rpx rgba(28, 25, 23, 0.05);
.post-content {
color: #44403C;
}
.topic-item {
color: #C2410C;
background: #FFF7ED;
border-color: #FED7AA;
}
.post-footer {
border-top-color: #F5F2EC;
}
}
}
@keyframes communityCardEnter {
from {
opacity: 0;
transform: translateY(14rpx) scale(0.99);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
</style>

查看文件

@@ -1496,4 +1496,93 @@ const handlePay = async () => {
box-shadow: 0 4rpx 20rpx rgba(234, 88, 12, 0.35);
}
}
/* ===== Premium visual layer: 下单页 ===== */
.create-order-container {
background:
radial-gradient(110% 40% at 50% -6%, rgba(99, 102, 241, 0.14), transparent 62%),
var(--surface-0);
.order-card {
background: linear-gradient(180deg, var(--surface-2) 0%, var(--surface-1) 100%);
border-color: var(--hairline);
border-radius: 26rpx;
box-shadow: var(--shadow-card);
}
.mode-tab {
border-radius: 20rpx;
transition: transform var(--motion-fast, 120ms) var(--ease-out, ease-out);
&.active {
background: linear-gradient(145deg, rgba(99, 102, 241, 0.18), rgba(16, 185, 129, 0.08));
border-color: rgba(129, 140, 248, 0.38);
box-shadow: inset 0 1rpx 0 var(--hairline);
}
}
.expert-profile {
background: var(--surface-2);
border: 1rpx solid var(--hairline);
border-radius: 20rpx;
.expert-avatar {
border: 2rpx solid var(--hairline-strong);
}
.expert-name {
font-size: 30rpx;
letter-spacing: 0.2rpx;
}
}
.section-title {
letter-spacing: 0.2rpx;
}
.coupon-card,
.pay-method-item {
border-radius: 18rpx;
}
.bottom-bar {
background: var(--bg-surface-glass);
backdrop-filter: blur(20px);
border-top: 1rpx solid var(--hairline);
box-shadow: var(--shadow-float);
}
.pay-val {
font-family: var(--font-num, monospace);
font-size: 44rpx;
letter-spacing: 0.2rpx;
}
}
.create-order-container.theme-warm {
background:
radial-gradient(100% 38% at 50% -6%, rgba(234, 88, 12, 0.07), transparent 62%),
#FDFBF7;
.order-card {
background: #FFFFFF;
border-color: #F0ECE4;
box-shadow: 0 12rpx 28rpx rgba(28, 25, 23, 0.05);
}
.mode-tab.active {
background: linear-gradient(145deg, #FFF7ED, #FFFFFF);
border-color: #FED7AA;
}
.expert-profile {
background: #FAF8F4;
border-color: #F0ECE4;
}
.bottom-bar {
background: rgba(255, 255, 255, 0.92);
border-top-color: #F0ECE4;
box-shadow: 0 -12rpx 30rpx rgba(28, 25, 23, 0.07);
}
}
</style>