小说小程序前端代码仓库(小程序)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

249 lines
7.1 KiB

<!-- 钱包流水页面 -->
<template>
<view class="walletflow-page">
<!-- 顶部导航栏 -->
<uv-navbar title="钱包流水" :autoBack="true" fixed placeholder titleStyle="color: #333; font-weight: 700;" :border="false" />
<!-- 账户余额卡片 -->
<view class="balance-card">
<view class="balance-label">账户</view>
<view class="balance-row">
<text class="balance-amount">{{ balance }}</text>
<button class="recharge-btn" @click="goRecharge">充值</button>
</view>
</view>
<!-- tab和流水列表卡片 -->
<view class="flow-card">
<view class="tab-header">
<view :class="['tab-item', {active: activeTab === 0}]" @click="activeTab = 0">
充值
<view v-if="activeTab === 0" class="tab-underline"></view>
</view>
<view :class="['tab-item', {active: activeTab === 1}]" @click="activeTab = 1">
支付
<view v-if="activeTab === 1" class="tab-underline"></view>
</view>
</view>
<scroll-view scroll-y class="flow-list">
<view v-if="activeTab === 0">
<view class="flow-item" v-for="(item, idx) in rechargeList" :key="idx">
<view class="flow-item-row">
<view class="flow-item-left">
<view class="flow-title">{{ item.title }}</view>
<view class="flow-date">{{ item.date }}</view>
</view>
<view class="flow-amount plus">+{{ item.amount }}</view>
</view>
</view>
</view>
<view v-else>
<view class="flow-item" v-for="(item, idx) in payList" :key="idx">
<view class="flow-item-row">
<view class="flow-item-left">
<view class="flow-title">{{ item.title }}</view>
<view class="flow-date">{{ item.date }}</view>
</view>
<view class="flow-amount minus">-{{ item.amount }}</view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
balance: 34532,
activeTab: 0,
rechargeList: [
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '推荐票', date: '2025.03.18', amount: 5 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
{ title: '豆豆充值', date: '2025.03.18', amount: 55 },
],
payList: [
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
{ title: '章节支付', date: '2025.03.18', amount: 10 },
]
}
},
methods: {
goRecharge() {
uni.showToast({ title: '充值功能开发中', icon: 'none' })
}
}
}
</script>
<style lang="scss" scoped>
.walletflow-page {
min-height: 100vh;
background: linear-gradient(180deg, #f8f8fc 0%, #fff 100%);
padding-bottom: 30rpx;
}
.balance-card {
background: linear-gradient(90deg, #f7f2fa 0%, #fbeaf2 100%);
border-radius: 18rpx;
margin: 24rpx 12rpx 0 12rpx;
padding: 18rpx 24rpx 14rpx 24rpx;
box-shadow: none;
border: 1rpx solid #ede7ef;
position: relative;
display: flex;
flex-direction: column;
min-height: 130rpx;
justify-content: center;
.balance-label {
color: #bbb;
font-size: 26rpx;
margin-bottom: 8rpx;
}
.balance-row {
display: flex;
align-items: center;
margin-top: 0;
position: relative;
.balance-amount {
color: #e94f7a;
font-size: 48rpx;
font-weight: bold;
}
.recharge-btn {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
background: linear-gradient(90deg, #ffb6c1 0%, #fa5a99 100%);
color: #fff;
font-size: 28rpx;
border-radius: 32rpx;
padding: 0 40rpx;
height: 56rpx;
line-height: 56rpx;
font-weight: 500;
border: none;
box-shadow: none;
display: flex;
align-items: center;
justify-content: center;
}
}
}
.flow-card {
background: #fff;
border-radius: 20rpx;
margin: 32rpx 16rpx 0 16rpx;
box-shadow: 0 4rpx 24rpx 0 rgba(0,0,0,0.06);
padding-bottom: 8rpx;
overflow: hidden;
}
.tab-header {
display: flex;
margin: 0;
background: #fff;
border-top-left-radius: 20rpx;
border-top-right-radius: 20rpx;
overflow: hidden;
.tab-item {
flex: 1;
text-align: center;
font-size: 30rpx;
color: #888;
padding: 0 0 18rpx 0;
font-weight: bold;
background: transparent;
position: relative;
&.active {
color: #223a7a;
font-weight: bold;
}
.tab-underline {
position: absolute;
left: 50%;
bottom: 0;
transform: translateX(-50%);
width: 44rpx;
height: 4rpx;
background: #223a7a;
border-radius: 2rpx;
margin-top: 4rpx;
}
}
}
.flow-list {
margin: 0;
padding: 0 16rpx;
max-height: 75vh;
background: #fff;
}
.flow-item {
border-bottom: 1px solid #f5f5f5;
padding: 18rpx 0 8rpx 0;
&:last-child {
border-bottom: none;
}
.flow-item-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
padding-right: 45rpx;
padding-left: 15rpx;
}
.flow-item-left {
display: flex;
flex-direction: column;
align-items: flex-start;
.flow-title {
font-size: 28rpx;
color: #222;
font-weight: 500;
margin-bottom: 2rpx;
}
.flow-date {
color: #bbb;
font-size: 22rpx;
margin-top: 0;
}
}
.flow-amount {
font-size: 26rpx;
font-weight: 500;
margin-left: 24rpx;
margin-top: 2rpx;
&.plus {
color: #223a7a;
}
&.minus {
color: #e94f7a;
}
}
}
</style>