zyx 1 year ago
parent
commit
17973ad376
5 changed files with 430 additions and 4 deletions
  1. 10 0
      api/myteam.js
  2. 6 0
      pages.json
  3. 19 3
      pages/user/jiance.vue
  4. 394 0
      pages/user/team.vue
  5. 1 1
      pages/user/user.vue

+ 10 - 0
api/myteam.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 获取我的团队
+export function spreadPeople(data) {
+	return request({
+		url: '/api/spread/people',
+		method:'post',
+		data
+	});
+}

+ 6 - 0
pages.json

@@ -289,6 +289,12 @@
 			   		"navigationBarTitleText": "发布素材"
 			   	}
 			   },
+			   {
+			   	"path": "team",
+			   	"style": {
+			   		"navigationBarTitleText": "我的团队"
+			   	}
+			   },
 			   {
 			   	"path": "release",
 			   	"style": {

+ 19 - 3
pages/user/jiance.vue

@@ -4,8 +4,9 @@
 			<image class="xc" src="../../static/img/xc.png" mode="aspectFit"></image>
 			<checkbox class="xz"></checkbox>
 		</div>
+		<view class="all"></view>
 		<view class="sc" @click="chooseImage">
-			<button>删除</button>
+			<button class="dele">删除</button>
 		</view>
 	</view>
 </template>
@@ -49,12 +50,27 @@ export default {
 				// height: 30px;
 			}
 		}
+		.all {
+			width: 750rpx;
+			height: 80rpx;
+		}
 		.sc {
 			width: 750rpx;
-			height: 100rpx;
 			position: fixed;
 			bottom: 0rpx;
-			background-color: #fff;
+			margin-bottom: 10rpx;
+			// background-color: #EEEEEE;
+			.dele {
+				background-color: #FF6F0F;
+				width: 160rpx;
+				height: 64rpx;
+				border-radius: 32rpx;
+				color: #fff;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				margin-right: 45rpx;
+			}
 		}
 	}
 </style>

+ 394 - 0
pages/user/team.vue

@@ -0,0 +1,394 @@
+<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 uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	import empty from '@/components/empty';
+	export default {
+		components: {
+			empty,
+			uniLoadMore
+		},
+		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>

+ 1 - 1
pages/user/user.vue

@@ -26,7 +26,7 @@
 						<view class="sy-item-name">我的余额</view>
 					</view>
 					<view class="jg"></view>
-					<view class="sy-item">
+					<view class="sy-item" @click="navTo('/pages/user/team')">
 						<view class="sy-item-val">{{ userInfo.sum_pay || '0' }}</view>
 						<view class="sy-item-name">我的团队</view>
 					</view>