<template> <view class="content"> <view class="content-money"> <view class="status_bar"><!-- 这里是状态栏 --></view> <view class="body-title"> <view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view> <view class="header">{{type == 9?'奖励积分池': '商城积分池'}}</view> </view> <view class="content-bg"><image src="../../static/img/tg-bg.png" mode=""></image></view> <view class="money-box"> <template v-if="type == 9"> <view class="money" v-if="pUser && pUser.recommend">{{ pUser.recommend.total|| 0 }}</view> <view class="money" v-else>0</view> </template> <template v-if="type == 10"> <view class="money" v-if="pUser && pUser.pass_integral">{{ pUser.pass_integral.total|| 0 }}</view> <view class="money" v-else>0</view> </template> </view> </view> <view class="info-box flex"> <view class="info-item"> <view class="info-font">待释放</view> <template v-if="type == 9"> <view class="info-num" v-if="pUser && pUser.recommend">{{pUser.recommend.progress || '0'}}</view> <view class="info-num" v-else>0</view> </template> <template v-if="type == 10"> <view class="info-num" v-if="pUser && pUser.pass_integral">{{pUser.pass_integral.progress || '0'}}</view> <view class="info-num" v-else>0</view> </template> </view> <view class="shu"></view> <view class="info-item"> <view class="info-font">已释放</view> <template v-if="type == 9"> <view class="info-num" v-if="pUser && pUser.recommend">{{pUser.recommend.use_recommend || '0'}}</view> <view class="info-num" v-else >{{pUser.recommend.use_recommend || '0'}}</view> </template> <template v-if="type == 10"> <view class="info-num" v-if="pUser && pUser.pass_integral">{{pUser.pass_integral.use_recommend || '0'}}</view> <view class="info-num" v-else >{{pUser.pass_integral.use_recommend || '0'}}</view> </template> </view> </view> <view class="navbar"> <view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view> </view> <swiper :current="tabCurrentIndex" :style="{ height: height }" class="swiper-box" duration="300" @change="changeTab"> <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex"> <scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData"> <!-- 空白页 --> <empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty> <!-- 订单列表 --> <view> <view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index"> <view class="title-box"> <view class="title"> <text>{{ item.title }}</text> </view> <view class="time"> <text>{{ item.add_time }}</text> </view> </view> <view class="money"> <view>{{ (item.pm == 0 ? '-' : '+') + item.number }}</view> </view> </view> </view> <uni-load-more :status="tabItem.loadingType" v-if="!(tabItem.orderList.length == 0 && tabItem.loaded)"></uni-load-more> </scroll-view> </swiper-item> </swiper> </view> </template> <script> import { mapState, mapMutations } from 'vuex'; import { getCommissionInfo,getUser } from '@/api/user.js'; import { passUser } from '@/api/zero.js' import { getMoneyStyle } from '@/utils/rocessor.js'; import { mapGetters } from 'vuex'; import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue'; import empty from '@/components/empty'; import { spreadCommission, userBalance,extractBank } from '@/api/wallet.js'; export default { filters: { getMoneyStyle }, components: { empty, uniLoadMore }, onReady(res) { var that = this; uni.getSystemInfo({ success: resu => { const query = uni.createSelectorQuery(); query.select('.swiper-box').boundingClientRect(); query.exec(function(res) { that.height = resu.windowHeight - res[0].top + 'px'; }); }, fail: res => {} }); }, data() { return { pUser: { recommend: { total: 0 }, pass_integral: { total: 0 } }, type: 9, userInfo: {}, yj: '', height: '', // 头部图高度 maxheight: '', tabCurrentIndex: 0, orderStatusSum: 0, recharge: 0, navList: [ // { // state: 0, // text: '全部', // loadingType: 'more', // orderList: [], // page: 1, //当前页数 // limit: 10 //每次信息条数 // }, { pm: 1, state: 3, text: '收入', loadingType: 'more', orderList: [], page: 1, //当前页数 limit: 10 ,//每次信息条数 loaded: false }, { pm: 0, state: 4, text: '支出', loadingType: 'more', orderList: [], page: 1, //当前页数 limit: 10 ,//每次信息条数 loaded: false }, ], money: '' }; }, onLoad(opt) { this.type = opt.type }, onShow() { // this.extractBank() // this.getUserInfo() this.loadData(); this.passUser() }, methods: { passUser() { passUser().then(res => { // console.log(res); this.pUser = res.data }) }, getUserInfo() { getUser({}).then(({ data }) => { this.userInfo = data }); }, extractBank() { extractBank().then(res => { console.log(res) this.yj = res.data.brokerage_price }) }, toBack() { uni.redirectTo({ url: '/pages/zero/task' }); }, // 页面跳转 navto(e) { uni.navigateTo({ url: e }); }, //获取收入支出信息 async loadData(source) { let obj = this; //这里是将订单挂载到tab列表下 let index = this.tabCurrentIndex; let navItem = this.navList[index]; // let state = navItem.state; if (source === 'tabChange' && navItem.loaded === true) { //tab切换只有第一次需要加载数据 return; } if (navItem.loadingType === 'loading') { //防止重复加载 return; } // 修改当前对象状态为加载中 navItem.loadingType = 'loading'; spreadCommission({ page: navItem.page, limit: navItem.limit, pm: navItem.pm, category: obj.type== 9? 'pass': 'integral' },obj.type) .then(({ data }) => { obj.$set(navItem, 'loaded', true); if(data.length > 0) { let arr = [] data.forEach(item => { arr = arr.concat(item.list) console.log(arr); }) navItem.orderList = navItem.orderList.concat(arr); navItem.page++; if (navItem.limit == data.length) { navItem.loadingType = 'more'; return; } else { navItem.loadingType = 'noMore'; } // uni.hideLoading(); }else { navItem.loadingType = 'noMore' } }) .catch(e => { console.log(e); }); }, //swiper 切换 changeTab(e) { this.tabCurrentIndex = e.target.current; this.loadData('tabChange'); }, //顶部tab点击 tabClick(index) { this.tabCurrentIndex = index; } } }; </script> <style lang="scss"> page { background: #f1f1f1; height: 100%; } .status_bar { height: var(--status-bar-height); width: 100%; } .content-money { position: relative; height: 480rpx; .content-bg { position: absolute; top: 0; left: 0; right: 0; width: 750rpx; height: 480rpx; image { width: 100%; height: 100%; } } .body-title { height: 80rpx; text-align: center; font-size: 35rpx; position: relative; .header { position: absolute; left: 0; top: 0; width: 100%; font-size: 36rpx; font-family: PingFang SC; font-weight: bold; color: #fffeff; height: 80rpx; font-size: 36rpx; font-weight: 700; z-index: 9; display: flex; justify-content: center; align-items: center; } .goback-box { position: absolute; left: 18rpx; top: 0; height: 80rpx; display: flex; align-items: center; } .goback { z-index: 100; width: 34rpx; height: 34rpx; } } } .info-box { width: 670rpx; height: 186rpx; background: #ffffff; box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06); border-radius: 20rpx; margin: -100rpx auto 0; position: relative; z-index: 2; .info-item { width: 50%; display: flex; flex-direction: column; align-items: center; line-height: 1; .info-font { font-size: 30rpx; font-family: PingFang SC; font-weight: bold; color: #999999; } .info-num { margin-top: 30rpx; font-size: 30rpx; font-family: PingFang SC; font-weight: bold; color: #181818; } } .shu { width: 2rpx; height: 74rpx; background: #dcdfe6; } } .money-box { position: relative; z-index: 2; /* #ifdef H5 */ padding-top: 90rpx; /* #endif */ color: #ffffff; text-align: center; /* #ifdef APP-PLUS */ height: 200rpx; display: flex; flex-direction: column; justify-content: center; /* #endif */ /* #ifdef MP-WEIXIN */ padding-top: 40rpx; /* #endif */ .money { font-size: 72rpx; font-family: PingFang SC; font-weight: bold; color: #ffffff; } .text { font-size: 30rpx; } } .moneybtn-box { display: flex; justify-content: space-between; position: relative; z-index: 2; color: #ffffff; padding: 0rpx 50rpx; font-size: 30rpx; font-family: PingFang SC; font-weight: bold; color: #ffffff; } .navbar { margin-top: 20rpx; display: flex; height: 88rpx; padding: 0 5px; background: #fff; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06); position: relative; z-index: 10; .nav-item { flex: 1; display: flex; justify-content: center; align-items: center; height: 100%; font-size: 15px; color: #999999; position: relative; &.current { color: #000; &:after { content: ''; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%); width: 44px; height: 0; border-bottom: 2px solid #fe5b38; } } } } //列表 .swiper-box { .order-item:last-child { margin-bottom: 60rpx; } .order-item { padding: 20rpx 30rpx; line-height: 1.5; .title-box { .title { font-size: $font-lg; color: $font-color-base; } .time { font-size: $font-base; color: $font-color-light; } } .money { color: #fd5b23; font-size: $font-lg; text-align: right; .status { color: $font-color-light; } } } } .list-scroll-content { background: #ffffff; height: 100%; } .content { height: 100%; .empty-content { background-color: #ffffff; } } .btn-box { width: 674rpx; height: 88rpx; background: linear-gradient(0deg, #2e58ff, #32c6ff); border-radius: 44rpx; font-size: 36rpx; font-family: PingFang SC; font-weight: 500; color: #ffffff; text-align: center; line-height: 88rpx; position: fixed; bottom: 48rpx; left: 0; right: 0; margin: 0 auto; } </style>