feat: 存储空间管理、虚拟支付接入与容量守卫

- 新增存储空间管理:会员套餐配置、用户容量/到期管理、后台支付记录查询
- 接入个人主体小程序虚拟支付:下单/发货推送/兜底查单(query_order)
- 修复 adminStorageUsers 等接口鉴权、out_trade_no 长度、前端 requestVirtualPayment 参数
- 前端上传前容量预检,超容引导升级无限空间
- 我的页会员卡片展示「无限空间」与已用容量/到期时间
- 后台「存储空间管理」新增支付记录标签页
This commit is contained in:
CodeBuddy
2026-10-26 23:07:09 +08:00
parent 0f5dc01674
commit 3ce6edc9a1
41 changed files with 2387 additions and 108 deletions
+157
View File
@@ -0,0 +1,157 @@
/* pages/storage/storage.wxss */
@import '../../styles/common.wxss';
page { background: linear-gradient(180deg, #FDE4EC 0%, #FFF0F5 48%, #FFF7FA 100%); height: 100vh; overflow: hidden; }
scroll-view.page-bg { height: 100vh; overflow-y: scroll; -webkit-overflow-scrolling: touch; }
/* 已用空间卡片 */
.storage-card {
background: #FFFFFF;
border-radius: 28rpx;
padding: 36rpx 32rpx;
margin: 16rpx 0 8rpx;
box-shadow: 0 8rpx 32rpx rgba(183, 71, 104, 0.08);
border: 2rpx solid rgba(255, 107, 157, 0.10);
}
.storage-card-head {
display: flex;
align-items: center;
justify-content: space-between;
}
.storage-title {
font-size: 28rpx;
font-weight: 600;
color: #666;
}
.storage-vip {
font-size: 24rpx;
font-weight: 600;
color: #B74768;
background: #FFE4EC;
padding: 6rpx 18rpx;
border-radius: 999rpx;
}
.storage-used {
margin-top: 16rpx;
display: flex;
align-items: baseline;
}
.storage-num {
font-size: 56rpx;
font-weight: 700;
color: #B74768;
line-height: 1;
}
.storage-of {
font-size: 26rpx;
color: #999;
margin-left: 10rpx;
}
.storage-bar {
margin-top: 24rpx;
height: 16rpx;
background: #F5E9ED;
border-radius: 999rpx;
overflow: hidden;
}
.storage-bar-fill {
height: 100%;
background: linear-gradient(90deg, #FF9EB5, #B74768);
border-radius: 999rpx;
transition: width 0.4s ease;
}
.storage-hint {
margin-top: 16rpx;
font-size: 24rpx;
color: #999;
}
.storage-hint.over {
color: #FF4757;
font-weight: 500;
}
/* 套餐卡片 */
.plan-list {
margin-top: 8rpx;
}
.plan-card {
display: flex;
align-items: center;
justify-content: space-between;
background: #FFFFFF;
border-radius: 24rpx;
padding: 30rpx 28rpx;
margin-bottom: 20rpx;
box-shadow: 0 6rpx 24rpx rgba(183, 71, 104, 0.06);
border: 2rpx solid rgba(255, 107, 157, 0.10);
transition: all 0.3s ease;
}
.plan-card:active {
transform: scale(0.98);
border-color: rgba(183, 71, 104, 0.35);
background: #FFF8FA;
}
.plan-info {
flex: 1;
min-width: 0;
margin-right: 16rpx;
}
.plan-name {
font-size: 30rpx;
font-weight: 600;
color: #333;
display: block;
}
.plan-desc {
font-size: 22rpx;
color: #999;
margin-top: 8rpx;
display: block;
}
.plan-price {
display: flex;
align-items: baseline;
flex-shrink: 0;
}
.plan-amount {
font-size: 40rpx;
font-weight: 700;
color: #B74768;
}
.plan-unit {
font-size: 22rpx;
color: #999;
margin-left: 4rpx;
}
/* 说明 */
.storage-note {
background: #FFF9F4;
border-radius: 20rpx;
padding: 24rpx 28rpx;
margin-top: 12rpx;
border: 2rpx solid rgba(255, 107, 157, 0.12);
}
.note-title {
font-size: 26rpx;
font-weight: 700;
color: #B74768;
display: block;
margin-bottom: 14rpx;
}
.note-item {
font-size: 24rpx;
color: #666;
display: block;
line-height: 1.9;
}
.section-heading {
font-family: 'Kaiti SC', 'STKaiti', 'KaiTi', cursive;
font-weight: 400;
letter-spacing: 1rpx;
}
@import '../../styles/design.wxss';
@import '../../styles/journal.wxss';
@import '../../styles/button-theme.wxss';
@import '../../styles/typography.wxss';