fix: icons和布局
All checks were successful
构建并部署前端到生产环境 / build-and-deploy (push) Successful in 55s

This commit is contained in:
luo
2026-07-29 16:26:32 +08:00
parent 6c3cf15165
commit 2166241cdb
5 changed files with 49 additions and 40 deletions

View File

@@ -20,9 +20,9 @@
@tap="selectPaymentMethod(method.value)" @tap="selectPaymentMethod(method.value)"
> >
<view class="method-left"> <view class="method-left">
<view v-if="method.value === 'alipay'" class="method-icon method-badge method-badge-alipay"></view> <image v-if="method.value === 'alipay'" class="method-icon" src="/static/支付宝支付.png" mode="aspectFit"></image>
<image v-else-if="method.value === 'wallet'" class="method-icon" src="/static/wallet.png" mode="aspectFit"></image> <image v-else-if="method.value === 'wallet'" class="method-icon" src="/static/wallet.png" mode="aspectFit"></image>
<view v-else class="method-icon method-badge"></view> <image v-else-if="method.value === 'wechat'" class="method-icon" src="/static/微信支付.png" mode="aspectFit"></image>
<text class="method-name">{{ method.label }}</text> <text class="method-name">{{ method.label }}</text>
</view> </view>
<view class="method-radio" :class="{ checked: paymentMethod === method.value }"></view> <view class="method-radio" :class="{ checked: paymentMethod === method.value }"></view>

View File

@@ -158,8 +158,8 @@
<view v-for="method in paymentMethodOptions" :key="method.value" class="method-item" <view v-for="method in paymentMethodOptions" :key="method.value" class="method-item"
:class="{ active: rechargePaymentMethod === method.value }" @tap="selectRechargePaymentMethod(method.value)"> :class="{ active: rechargePaymentMethod === method.value }" @tap="selectRechargePaymentMethod(method.value)">
<view class="method-left"> <view class="method-left">
<view v-if="method.value === 'alipay'" class="method-icon method-badge method-badge-alipay"></view> <image v-if="method.value === 'alipay'" class="method-icon" src="/static/支付宝支付.png" mode="aspectFit"></image>
<view v-else-if="method.value === 'wechat'" class="method-icon method-badge"></view> <image v-else-if="method.value === 'wechat'" class="method-icon" src="/static/微信支付.png" mode="aspectFit"></image>
<image v-else class="method-icon" src="/static/wallet.png" mode="aspectFit"></image> <image v-else class="method-icon" src="/static/wallet.png" mode="aspectFit"></image>
<text class="method-name">{{ method.label }}</text> <text class="method-name">{{ method.label }}</text>
</view> </view>

View File

@@ -62,9 +62,9 @@
<view v-for="method in paymentMethodOptions" :key="method.value" class="method-item" <view v-for="method in paymentMethodOptions" :key="method.value" class="method-item"
:class="{ active: paymentMethod === method.value }" @tap="selectPaymentMethod(method.value)"> :class="{ active: paymentMethod === method.value }" @tap="selectPaymentMethod(method.value)">
<view class="method-left"> <view class="method-left">
<view v-if="method.value === 'alipay'" class="method-icon method-badge method-badge-alipay"></view> <image v-if="method.value === 'alipay'" class="method-icon" src="/static/支付宝支付.png" mode="aspectFit"></image>
<image v-else-if="method.value === 'wallet'" class="method-icon" src="/static/wallet.png" mode="aspectFit"></image> <image v-else-if="method.value === 'wallet'" class="method-icon" src="/static/wallet.png" mode="aspectFit"></image>
<view v-else class="method-icon method-badge"></view> <image v-else-if="method.value === 'wechat'" class="method-icon" src="/static/微信支付.png" mode="aspectFit"></image>
<text class="method-name">{{ method.label }}<template v-if="method.value === 'wallet'">¥{{ formatMoney(walletBalance) }}</template></text> <text class="method-name">{{ method.label }}<template v-if="method.value === 'wallet'">¥{{ formatMoney(walletBalance) }}</template></text>
</view> </view>
<view class="method-radio" :class="{ checked: paymentMethod === method.value }"></view> <view class="method-radio" :class="{ checked: paymentMethod === method.value }"></view>
@@ -476,6 +476,9 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container {
gap: 16rpx;
padding: 24rpx 20rpx 40rpx;
.empty-state { .empty-state {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -506,69 +509,76 @@
} }
.package-card { .package-card {
margin-bottom: var(--space-md); margin-bottom: 0;
padding: 32rpx; padding: 28rpx;
border: 1rpx solid rgba(0, 122, 255, 0.08); border: 1rpx solid var(--gray-200);
box-shadow: 0 12rpx 36rpx rgba(15, 23, 42, 0.06); border-radius: 20rpx;
box-shadow: 0 4rpx 16rpx rgba(15, 23, 42, 0.03);
.package-header { .package-header {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
justify-content: space-between; justify-content: space-between;
gap: 20rpx; gap: 16rpx;
margin-bottom: 28rpx; margin-bottom: 24rpx;
.package-name { .package-name {
font-size: 32rpx; font-size: 30rpx;
font-weight: 700; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
line-height: 1.35; line-height: 1.4;
flex: 1; flex: 1;
} }
.tag-apple {
flex-shrink: 0;
padding: 6rpx 12rpx;
background: var(--gray-100);
color: var(--gray-700);
border: none;
}
} }
.package-main { .package-main {
display: flex; display: flex;
align-items: stretch; align-items: stretch;
justify-content: space-between; justify-content: space-between;
gap: 20rpx; gap: 24rpx;
padding: 26rpx; padding: 0 0 24rpx;
margin-bottom: 22rpx; margin-bottom: 22rpx;
background: linear-gradient(135deg, rgba(0, 122, 255, 0.08) 0%, rgba(0, 122, 255, 0.02) 100%); border-bottom: 1rpx solid var(--gray-100);
border-radius: 24rpx;
.data-block { .data-block {
flex: 1; flex: 1;
padding-right: 24rpx;
.data-label { .data-label {
font-size: 24rpx; font-size: 23rpx;
color: var(--text-tertiary); color: var(--text-tertiary);
margin-bottom: 8rpx; margin-bottom: 10rpx;
} }
} }
.package-data { .package-data {
font-size: 52rpx; font-size: 48rpx;
font-weight: 800; font-weight: 700;
color: var(--primary); color: var(--text-primary);
line-height: 1.1; line-height: 1.1;
letter-spacing: -1rpx; letter-spacing: -1rpx;
} }
.validity-box { .validity-box {
min-width: 132rpx; min-width: 116rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: flex-start;
justify-content: center; justify-content: center;
padding: 18rpx 16rpx; padding: 0 0 0 24rpx;
background: rgba(255, 255, 255, 0.78); border-left: 1rpx solid var(--gray-200);
border: 1rpx solid rgba(0, 122, 255, 0.08);
border-radius: 20rpx;
.validity-value { .validity-value {
font-size: 34rpx; font-size: 32rpx;
font-weight: 800; font-weight: 700;
color: var(--text-primary); color: var(--text-primary);
line-height: 1; line-height: 1;
} }
@@ -582,10 +592,10 @@
} }
.package-desc { .package-desc {
font-size: 26rpx; font-size: 24rpx;
color: var(--text-secondary); color: var(--text-secondary);
line-height: 1.55; line-height: 1.5;
margin-bottom: 24rpx; margin-bottom: 22rpx;
} }
.package-footer { .package-footer {
@@ -593,13 +603,12 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
gap: 24rpx; gap: 24rpx;
padding-top: 24rpx; padding-top: 0;
border-top: 1rpx solid var(--border-light);
.price-block { .price-block {
display: flex; display: flex;
align-items: baseline; align-items: baseline;
color: var(--warning); color: var(--text-primary);
white-space: nowrap; white-space: nowrap;
.price-symbol { .price-symbol {
@@ -609,8 +618,8 @@
} }
.package-price { .package-price {
font-size: 44rpx; font-size: 40rpx;
font-weight: 800; font-weight: 700;
letter-spacing: -1rpx; letter-spacing: -1rpx;
} }
} }

BIN
static/微信支付.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
static/支付宝支付.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB