<template> <view class="content"> <view class="content-money"> <view class="money-box"> <view class="bg"> <image src="../../static/img/use-i.png" mode=""></image> </view> <view> <view class="money">共<text>{{ all }}</text>人</view> </view> </view> </view> <swiper :current="tabCurrentIndex" :style="{ height: maxheight + 'px' }" 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" scroll-y @scrolltolower="loadData"> <!-- 空白页 --> <empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty> <!-- 订单列表 --> <view v-for="(item, index) in tabItem.orderList" :key="item.uid" class="andr-mt-flex andr-mt-lBox"> <!-- 订单列表 --> <image :src="item.avatar" class="andr-mt-avatar andr-mt-marR20"></image> <view class="andr-mt-flex andr-mt-fdC"> <text class="andr-mt-lname">{{ item.nickname || 'null' }}</text> <text class="andr-mt-ltime">{{ item.time }}</text> </view> </view> <uni-load-more :status="tabItem.loadingType"></uni-load-more> </scroll-view> </swiper-item> </swiper> </view> </template> <script> import { spreadPeople } from '@/api/myteam.js'; import { userinfo } from '@/api/user.js'; import { mapState, mapMutations } from 'vuex'; import empty from '@/components/empty'; export default { components: { empty, }, onReady(res) { var _this = this; uni.getSystemInfo({ success: resu => { console.log(resu, '11111'); const query = uni.createSelectorQuery(); query.select('.swiper-box').boundingClientRect(); query.exec(function(res) { console.log(res, 'ddddddddddddd'); _this.maxheight = resu.windowHeight - res[0].top; console.log('打印页面的剩余高度', _this.maxheight); }); }, fail: res => {} }); }, data() { return { userInfo: {}, // 头部图高度 maxheight: '', tabCurrentIndex: 0, navList: [{ state: 0, text: '一级推广', loadingType: 'more', num: 0, //人数 orderList: [], page: 1, //当前页数 limit: 10 //每次信息条数 }, { state: 1, text: '二级推广', num: 0, //团队人数 loadingType: 'more', orderList: [], page: 1, //当前页数 limit: 10 //每次信息条数 } ], all: 0 }; }, onLoad(options) {}, onShow() { this.loadData(); // 获取用户积分 let obj = this; userinfo({}) .then(({ data }) => { console.log(data); obj.userInfo = data; }) .catch(e => {}); }, methods: { // 页面跳转 navto(e) { uni.navigateTo({ url: e }); }, //返回上一页面 toBack() { console.log(111); uni.navigateBack({}); }, //获取收入支出信息 async loadData(source) { let obj = this; //这里是将订单挂载到tab列表下 let index = obj.tabCurrentIndex; let navItem = obj.navList[index]; let state = navItem.state; if (source === 'tabChange' && navItem.loaded === true) { //tab切换只有第一次需要加载数据 return; } if (navItem.loadingType === 'loading') { //防止重复加载 return; } // 修改当前对象状态为加载中 navItem.loadingType = 'loading'; spreadPeople({ page: navItem.page, limit: navItem.limit, grade: state, keyword: '', sort: '' }) .then(({ data }) => { obj.navList[0].num = data.total; obj.navList[1].num = data.totalLevel; if (data.list.length > 0) { navItem.orderList = navItem.orderList.concat(data.list); console.log(navItem.orderList); navItem.page++; } obj.all = data.total * 1 + data.totalLevel * 1 if (navItem.limit == data.list.length) { //判断是否还有数据, 有改为 more, 没有改为noMore navItem.loadingType = 'more'; return; } else { //判断是否还有数据, 有改为 more, 没有改为noMore navItem.loadingType = 'noMore'; } uni.hideLoading(); obj.$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; } } }; </script> <style lang="scss"> page { background: #ffffff; height: 100%; } .content-money { background: $page-color-base; } .money-box { // background-color: $base-color; padding-top: var(--status-bar-height); height: 468rpx; color: #01A6A8; text-align: center; justify-content: center; position: relative; .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-weight: bold; color: #fffeff; height: 80rpx; font-size: 32rpx; font-weight: 700; z-index: 9; display: flex; justify-content: center; align-items: center; } .goback-box { position: absolute; z-index: 10; left: 24rpx; top: 0; height: 80rpx; display: flex; align-items: center; } .goback { width: 30rpx; height: 36rpx; } } .bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; image { width: 100%; height: 100%; } } .money { position: relative; z-index: 10; font-size: 36rpx; height: 388rpx; line-height: 288rpx; text { font-size: 82rpx; } } } .navbar { width: 700rpx; margin: -60rpx auto 0; display: flex; height: 120rpx; 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; flex-direction: column; justify-content: center; align-items: center; height: 100%; font-size: 15px; color: $font-color-dark; position: relative; &.current { color: $base-color; &:after { content: ''; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%); width: 44px; height: 0; border-bottom: 2px solid $base-color; } } } } // 列表 .swiper-box { padding-top: 30rpx; .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: #01A6A8; font-size: $font-lg; } } } .list-scroll-content { height: 100%; } .content { height: 100%; .empty-content { background-color: #ffffff; } } .andr-mt-avatar { width: 78rpx; height: 78rpx; border-radius: 50rpx; } .andr-mt-avatarBd { border: 2px solid #ffffff; } .andr-mt-cname { font-size: 28rpx; color: #ffffff; } .andr-mt-flex { display: flex; } .andr-mt-lBox { background-color: #ffffff; height: 130rpx; padding: 20rpx 20rpx; border-bottom: 1px solid #f0f0f0; } .andr-mt-marR20 { margin-right: 20rpx; } .andr-mt-fdC { flex-direction: column; } .andr-mt-lname { font-size: 30rpx; color: #3f454b; } .andr-mt-ltime { font-size: 22rpx; color: #999999; } </style>