<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">我的推广</view> </view> <view class="content-bg"> <image src="../../static/img/tg-bg.png" mode=""></image> </view> <view class="money-box"> <view class="money">{{ totalLevel + all|| '0' }}</view> <view>我的团队</view> </view> <!-- <view class="money-box" style="padding-top: 20rpx;" v-if="order*1 > 0"> <view>直推:{{zt_order}}单</view> <view>间推:{{jt_order}}单</view> </view> --> </view> <view class="flex buttom-box"> <view class="buttom" @click="tabClick(0)"> <view class="money">{{all || 0}}</view> <text class="text" :class="{ current: tabCurrentIndex === 0 }">一级推广</text> </view> <view class="buttom" @click="tabClick(1)"> <view class="money">{{totalLevel || 0}}</view> <text class="text" :class="{ current: tabCurrentIndex === 1 }">团队推广</text> </view> </view> <swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab"> <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex"> <scroll-view class="list-scroll-content" :style="{ height: maxheight }" scroll-y @scrolltolower="loadData"> <empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty> <view v-for="(item, index) in tabItem.orderList" :key="index" class="order-item flex"> <view class="title-box flex_item"> <view class="title-avatar"> <image :src="item.avatar"></image> </view> <view class="list_tpl"> <view class="title"> <view class="title-name clamp">{{ item.nickname }}</view> </view> <view class="flex star" v-if="item.zero_level >= 7"> <image src="../../static/icon/star.png" mode="" v-for="item in (item.zero_level*1 - 6)"></image> </view> <!-- <view class="time"> <text>{{ item.phone }} ({{ showLevel(item)}})</text> </view> --> <view class="time"> <text>{{ item.time }}</text> </view> </view> </view> </view> <uni-load-more :status="tabItem.loadingType"></uni-load-more> </scroll-view> </swiper-item> </swiper> </view> </template> <script> import { myspread, getLevelList } from '@/api/user.js'; import empty from '@/components/empty'; import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue'; import { mapState, mapMutations } from 'vuex'; export default { components: { empty, uniLoadMore }, onReady(res) { var _this = this; uni.getSystemInfo({ success: resu => { const query = uni.createSelectorQuery(); query.select('.swiper-box').boundingClientRect(); query.exec(function(res) { _this.maxheight = resu.windowHeight - res[0].top + 'px'; console.log('打印页面的剩余高度', _this.height); }); }, fail: res => {} }); }, data() { return { // 头部图高度 maxheight: '', tabCurrentIndex: 0, navList: [{ state: 0, text: '直接推荐', loadingType: 'more', orderList: [], page: 1, //当前页数 limit: 10 //每次信息条数 }, { state: 1, text: '间接推荐', loadingType: 'more', orderList: [], page: 1, //当前页数 limit: 10 //每次信息条数 }], all: '', list: '', totalLevel: '', order: '', zt_order: '', jt_order: '', listList: [] }; }, computed: { ...mapState('user', ['userInfo', 'orderInfo', 'hasLogin']), ...mapState(['baseURL']) }, onLoad(options) {}, onShow() { this.loadData(); getLevelList().then(res => { console.log(res); this.listList = res.data.list }) }, methods: { showLevel(val) { let data = this.listList.find(item => item.grade == val.level) if(data) { return data.name }else { if(val.orderCount > 0) { return '会员' }else { return '粉丝' } } }, // 页面跳转 navto(e) { uni.navigateTo({ url: e }); }, //获取收入支出信息 async loadData(source) { //这里是将订单挂载到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; } if (navItem.loadingType === 'noMore') { //防止重复加载 return; } // 修改当前对象状态为加载中 navItem.loadingType = 'loading'; myspread({ page: navItem.page, limit: navItem.limit, grade:state, uid: this.userInfo.uid }) .then(({ data }) => { console.log(data,'的'); this.order = data.order this.zt_order = data.zt_order this.jt_order = data.jt_order this.all = data.total; this.totalLevel = data.totalLevel if (data.list.length > 0) { this.list = data.list; navItem.orderList = navItem.orderList.concat(data.list); navItem.page++; } this.$nextTick(function() { if (navItem.limit == data.list.length) { //判断是否还有数据, 有改为 more, 没有改为noMore navItem.loadingType = 'more'; return; } else { //判断是否还有数据, 有改为 more, 没有改为noMore navItem.loadingType = 'noMore'; } }); this.$set(navItem, 'loaded', true); }) .catch(e => { console.log(e); }); }, //swiper 切换 changeTab(e) { this.tabCurrentIndex = e.target.current; this.loadData('tabChange'); }, //顶部tab点击 tabClick(index) { this.tabCurrentIndex = index; }, // 点击返回 我的页面 toBack() { uni.switchTab({ url: '/pages/user/user' }); } } }; </script> <style lang="scss"> page { background: #f8f8f8; height: 100%; } .status_bar { height: var(--status-bar-height); width: 100%; background: #5dbc7c; } .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: $base-color; 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; } } } .money-box { position: relative; z-index: 2; padding-top: 90rpx; color: $base-color; text-align: center; .money { font-size: 72rpx; font-family: PingFang SC; font-weight: bold; color: $base-color } .text { font-size: 30rpx; } } .order-item { padding: 20rpx 30rpx; line-height: 1.5; background-color: #fff; .title-box { width: 100%; .title-avatar { flex-shrink: 0; width: 100rpx; height: 100rpx; margin-right: 25rpx; border-radius: 100%; image { width: 100%; height: 100%; border-radius: 100%; } } .list_tpl { width: 85%; .title { display: flex; justify-content: flex-start; font-size: $font-lg; color: $font-color-base; overflow: hidden; //超出的文本隐藏 text-overflow: ellipsis; //溢出用省略号显示 white-space: nowrap; line-height: 1; text-align: center; .title-name { max-width: 40%; } .dl { margin-left: 10rpx; width: 93rpx; height: 32rpx; border-radius: 16rpx; image { width: 93rpx; height: 32rpx; border-radius: 16rpx; } } .class { display: inline-block; margin-left: 10rpx; padding: 6rpx; text-align: center; border: 1px solid #2e58ff; border-radius: 16rpx; font-size: 20rpx; font-family: PingFang SC; font-weight: 500; color: #2e58ff; } } .time { font-size: $font-lg; color: $font-color-light; } .star { justify-content: flex-start; image { width: 36rpx; height: 36rpx; } } } } .money { width: 50%; text-align: right; color: #db1935; font-size: $font-lg; } } .yeji { position: relative; margin: -72rpx auto 0; width: 690rpx; height: 143rpx; background: #ffffff; box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(50, 50, 52, 0.06); border-radius: 10rpx; display: flex; align-items: center; .yeji-a { width: 50%; display: flex; flex-direction: column; justify-content: center; align-items: center; .yeji-top { font-size: 28rpx; font-family: PingFang SC; font-weight: bold; color: #333333; } .yeji-buttom { font-size: 42rpx; font-family: PingFang SC; font-weight: bold; color: #333333; } } .border { width: 1rpx; height: 51rpx; background: #dddddd; } } .buttom-box { position: relative; background-color: #ffffff; text-align: center; padding: 30rpx 0; .buttom { flex-grow: 1; } .money{ font-size: 32rpx; font-weight: bold; color: $base-color; } .text { padding-bottom: 26rpx; font-size: 28rpx; font-weight: 500; color: #666666; &.current { border-bottom: 2px solid $base-color; } } .icon { height: 50rpx; width: 48rpx; margin: 0 auto; .icon-img { width: 100%; height: 100%; } } } </style>