chuangte_bike_newxcx/page_fenbao/tixianjl.vue

290 lines
8.3 KiB
Vue
Raw Normal View History

2025-12-20 14:29:10 +08:00
<template>
<view class="page">
<u-navbar title="提现记录" :border-bottom="false" :background="bgc" back-icon-color="#262B37" title-color='#262B37'
title-size='36' height='36' id="navbar">
</u-navbar>
<view class="status-tabs">
<view class="tab-item" :class="{ 'active': activeTab === 0 }" @click="changeTab(0)">
全部
</view>
<view class="tab-item" :class="{ 'active': activeTab === 1 }" @click="changeTab(1)">
待审核
</view>
<view class="tab-item" :class="{ 'active': activeTab === 2 }" @click="changeTab(2)">
已审核
</view>
<view class="tab-item" :class="{ 'active': activeTab === 3 }" @click="changeTab(3)">
提现失败
</view>
</view>
<!-- 提现记录列表 -->
<scroll-view
@scrolltolower="handqixing" scroll-y
class="record-list">
<!-- 第一条记录已打款 -->
<view class="record-card" v-for="(item,index) in list" :key="index">
<view class="record-header">
<view class="user-info">
<view class="user-role">{{item.no}}</view>
</view>
<!-- <view class="status-badge status-success">已打款</view> -->
<text class="status-badge status-success" v-if="item.status == 'WAIT_VERIFY'">提现中</text>
<text class="status-badge status-success" v-if="item.status == 'PAYING'">打款中</text>
<text class="status-badge status-success" v-if="item.status == 'SUCCESS'">已打款</text>
<text class="status-badge status-success" v-if="item.status == 'REJECTED'">已驳回</text>
<text class="status-badge status-success" v-if="item.status == 'FAILED'">打款失败</text>
</view>
<view class="record-details">
<view class="detail-row">
<view class="detail-label">提现金额()</view>
<view class="detail-value" style="color: #4297F3;">{{item.amount.toFixed(2)}}</view>
</view>
<view class="detail-row">
<view class="detail-label">实际到账()</view>
<view class="detail-value" style="color: #4297F3;">{{item.arrivalAmount.toFixed(2)}}</view>
</view>
<view class="detail-row">
<view class="detail-label">收款方式</view>
<view class="detail-value">{{item.channelName}}</view>
</view>
<view class="detail-row">
<view class="detail-label">申请日期</view>
<view class="detail-value">{{item.createTime}}</view>
</view>
</view>
</view>
<view class="" style="width: 100%;text-align: center;margin-top: 30rpx;color: #ccc;">
当前没有更多数据了...
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#fff",
},
userId:'',
pageNum:1,
activeTab: 0, // 当前选中的标签
scrollHeight: 0 ,// 滚动区域高度
list:[],
total:0
}
},
onLoad(option) {
this.userId = option.userId
this.getlist()
this.calculateScrollHeight()
},
onReady() {
// 确保获取正确的窗口高度
setTimeout(() => {
this.calculateScrollHeight()
}, 100)
},
methods: {
// 上拉加载更多
handqixing(){
if(this.total > this.list.length){
this.getlist()
}
console.log('11');
},
// 请求提现记录
getlist() {
let type = ''
if(this.activeTab == 0){
type = ''
}else if(this.activeTab == 1){
type = '&status=WAIT_VERIFY'
}else if(this.activeTab == 2){
type = '&statusList=PAYING,SUCCESS'
}else if(this.activeTab == 3){
type = '&statusList=REJECTED,FAILED'
}
this.$u.get(`/bst/withdraw/list?pageNum=${this.pageNum}&pageSize=20&orderByColumn=createTime&isAsc=desc&userId=${this.userId}` + type).then((res) => {
if (res.code == 200) {
this.total = res.total
if(this.pageNum == 1){
this.list = res.rows
this.pageNum++
}else{
this.list = this.list.concat(res.rows)
this.pageNum++
}
}
})
},
// 切换标签
changeTab(index) {
this.activeTab = index
this.pageNum = 1
this.getlist()
// 这里可以根据标签筛选数据
console.log('切换到标签:', index)
},
// 计算滚动区域高度
calculateScrollHeight() {
const systemInfo = uni.getSystemInfoSync()
const windowHeight = systemInfo.windowHeight
// 获取页面各元素高度
const query = uni.createSelectorQuery().in(this)
query.select('.page-header').boundingClientRect()
query.select('.status-tabs').boundingClientRect()
query.exec(res => {
const headerHeight = res[0]?.height || 50
const tabsHeight = res[1]?.height || 44
// 计算剩余可用高度
this.scrollHeight = windowHeight - headerHeight - tabsHeight - 20 // 20为底部安全距离
})
}
}
}
</script>
<style lang="scss">
page {
min-height: 100vh;
background-color: #f5f5f5; // 浅灰色背景
box-sizing: border-box;
.page-header {
padding: 40rpx 0 30rpx;
.page-title {
font-size: 36rpx;
font-weight: bold;
color: #333;
}
}
.status-tabs {
display: flex;
background-color: #fff;
width: 750rpx;
border-radius: 12rpx;
padding: 4rpx;
margin-bottom: 30rpx;
padding-top: 20rpx;
.tab-item {
flex: 1;
text-align: center;
padding: 20rpx 0;
font-size: 28rpx;
color: #666;
border-radius: 8rpx;
transition: all 0.3s ease;
&.active {
background-color: #4297F3;
color: #fff;
font-weight: 500;
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.1);
}
}
}
.record-list {
height: 79vh;
overflow: scroll;
.record-card {
width: 710rpx;
margin: auto;
background-color: #fff;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
.record-header {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 20rpx;
border-bottom: 1rpx solid #eee;
margin-bottom: 20rpx;
.user-info {
.user-role {
font-size: 24rpx;
color: #999;
margin-bottom: 4rpx;
}
.user-name {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
}
.status-badge {
padding: 6rpx 16rpx;
border-radius: 20rpx;
font-size: 24rpx;
font-weight: 500;
&.status-success {
background-color: rgba(52, 152, 219, 0.1);
color: #3498db; // 蓝色状态
}
&.status-pending {
background-color: rgba(52, 73, 94, 0.1);
color: #34495e; // 深蓝色/灰色状态
}
}
}
.record-details {
.detail-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
&:last-child {
margin-bottom: 0;
}
.detail-label {
font-size: 28rpx;
color: #666;
flex-shrink: 0;
}
.detail-value {
font-size: 28rpx;
color: #333;
font-weight: 500;
text-align: right;
flex: 1;
margin-left: 20rpx;
word-break: break-all;
&.status-text {
&.success {
color: #3498db; // 蓝色
}
&.pending {
color: #34495e; // 深蓝色/灰色
}
}
}
}
}
}
}
}
</style>