zs před 2 roky
rodič
revize
4afa7d8c3a
3 změnil soubory, kde provedl 222 přidání a 8 odebrání
  1. 1 2
      pagesHome/group/index.vue
  2. 6 2
      pagesHome/order/order.vue
  3. 215 4
      pagesMy/dough/index.vue

+ 1 - 2
pagesHome/group/index.vue

@@ -31,7 +31,6 @@
 							<view class="image">
 								<image class="file" v-for="(tag, indexs) in item.persons.slice(0,7)" :key="indexs"
 									:src="tag.icon&&tag.icon.length>0?tag.icon[0].url:''" mode="">
-
 							</view>
 							</image>
 							<view class="list_1">
@@ -141,7 +140,7 @@
 						if (arr.data.result == true) {
 							that.clearPage();
 							uni.navigateTo({
-								url: `/pagesHome/order/order?key=${arr.data.key}`
+								url: `/pagesHome/order/order?key=${arr.data.key}&group_id=${e?._id}`
 							})
 						} else {
 							uni.showToast({

+ 6 - 2
pagesHome/order/order.vue

@@ -160,12 +160,15 @@
 				// 优惠劵名称
 				coupon_name: '',
 				// 是否开团
-				type: '0'
+				type: '0',
+				// 团id
+				group_id: '',
 			};
 		},
 		onLoad: async function(e) {
 			const that = this;
 			that.$set(that, `key`, e.key || '');
+			that.$set(that, `group_id`, e.group_id || '');
 			that.watchLogin()
 		},
 		methods: {
@@ -245,7 +248,8 @@
 						goods: that.orderList,
 						total_detail: that.total_detail,
 						coupon: that.coupon,
-						type: that.type
+						type: that.type,
+						group_id: that.group_id
 					}
 					const arr = await that.$api(`/order`, 'POST', data)
 					if (arr.errcode == '0') {

+ 215 - 4
pagesMy/dough/index.vue

@@ -1,6 +1,41 @@
 <template>
 	<mobile-frame>
-		我的拼团
+		<view class="main">
+			<view class="one">
+				<input type="text" v-model="searchInfo.name" @blur="toInput" placeholder="搜索商品名称">
+			</view>
+			<view class="two">
+				<scroll-view scroll-y="true" class="scroll-view" @scrolltolower="toPage">
+					<view class="list-scroll-view">
+						<view class="list" v-for="(item, index) in list" :key="index">
+							<view class="image">
+								<image class="file" v-for="(tag, indexs) in item.persons.slice(0,7)" :key="indexs"
+									:src="tag.icon&&tag.icon.length>0?tag.icon[0].url:''" mode="">
+							</view>
+							</image>
+							<view class="list_1">
+								<view class="name">
+									{{item.person_limit||0}}人即可开团成功
+								</view>
+								<view class="some">
+									<text>团长</text>
+									<text>{{item.leader.name||'暂无'}}</text>
+								</view>
+								<view class="some">
+									<text>参团人数</text>
+									<text>{{item.persons.length||0}}人</text>
+								</view>
+							</view>
+							<view class="other">
+								<view class="btn" @click="onSubmit(item)">
+									<text>{{item.zhStatus||'暂无状态'}}</text>立即参团
+								</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+		</view>
 	</mobile-frame>
 </template>
 
@@ -8,16 +43,192 @@
 	export default {
 		data() {
 			return {
-
+				user: {},
+				searchInfo: {},
+				list: [],
+				total: 0,
+				skip: 0,
+				limit: 6,
+				page: 0,
+				statusList: [],
 			};
 		},
-		onShow: function() {},
+		onShow: function() {
+			const that = this;
+			that.watchLogin()
+		},
 		methods: {
-
+			// 监听用户是否登录
+			watchLogin() {
+				const that = this;
+				uni.getStorage({
+					key: 'token',
+					success: async function(res) {
+						let user = that.$jwt(res.data);
+						that.$set(that, `user`, user);
+						let status = await that.$api(`/dictData`, 'GET', {
+							code: "group_status"
+						});
+						if (status.errcode == '0') {
+							that.$set(that, `statusList`, status.data)
+						}
+						that.search()
+					},
+					fail: function(err) {
+						uni.reLaunch({
+							url: `/pages/login/index`
+						})
+					}
+				})
+			},
+			// 查询列表
+			async search() {
+				const that = this;
+				let user = that.user;
+				if (user._id) {
+					let info = {
+						skip: that.skip,
+						limit: that.limit,
+						persons: user._id
+					}
+					let res = await that.$api(`/group`, 'GET', {
+						...info,
+						...that.searchInfo
+					})
+					if (res.errcode == '0') {
+						let list = [...that.list, ...res.data];
+						for (let val of list) {
+							let status = that.statusList.find(i => i.value == val.status)
+							if (status) val.zhStatus = status.label;
+						}
+						that.$set(that, `list`, list);
+						that.$set(that, `total`, res.total)
+					}
+				}
+			},
+			// 分页
+			toPage(e) {
+				const that = this;
+				let list = that.list;
+				let limit = that.limit;
+				if (that.total > list.length) {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					})
+					let page = that.page + 1;
+					that.$set(that, `page`, page)
+					let skip = page * limit;
+					that.$set(that, `skip`, skip)
+					that.search();
+					uni.hideLoading();
+				} else uni.showToast({
+					title: '没有更多数据了'
+				});
+			},
+			// 清空列表
+			clearPage() {
+				const that = this;
+				that.$set(that, `list`, [])
+				that.$set(that, `skip`, 0)
+				that.$set(that, `limit`, 6)
+				that.$set(that, `page`, 0)
+			}
 		}
 	}
 </script>
 
 <style lang="scss">
+	.main {
+		display: flex;
+		flex-direction: column;
+		width: 100vw;
+		height: 100vh;
+
+		.one {
+			border-bottom: 1px solid var(--f85Color);
+			padding: 2vw;
+
+			input {
+				padding: 2vw;
+				background-color: var(--f1Color);
+				font-size: var(--font14Size);
+				border-radius: 5px;
+			}
+		}
+
+		.two {
+			position: relative;
+			flex-grow: 1;
+			padding: 2vw 0 0 0;
+
+			.list {
+				display: flex;
+				flex-direction: row;
+				justify-content: space-between;
+				align-items: center;
+				width: 91vw;
+				border: 1px solid var(--f1Color);
+				margin: 2vw 2vw 0 2vw;
+				padding: 0 2vw;
+				border-radius: 5px;
+
+				.image {
+					display: flex;
+					flex-wrap: wrap;
+					justify-content: center;
+					width: 27vw;
+					height: 27vw;
+					border-radius: 5px;
+					margin: 0 2vw 0 0;
 
+					.file {
+						width: 9vw;
+						height: 9vw;
+					}
+				}
+
+				.list_1 {
+					display: flex;
+					flex-direction: column;
+					flex-grow: 1;
+					padding: 2vw 0;
+
+					.name {
+						font-size: var(--font16Size);
+						margin: 0 0 1vw 0;
+					}
+
+					.some {
+						color: var(--f85Color);
+						font-size: var(--font14Size);
+						margin: 0 0 1vw 0;
+
+						text:last-child {
+							margin: 0 0 0 1vw;
+							color: var(--f00Color);
+						}
+					}
+				}
+
+				.other {
+					.btn {
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						margin: 0 2vw;
+						padding: 2vw 3vw;
+						background-color: var(--ff0Color);
+						color: var(--fffColor);
+						border-radius: 2vw;
+						font-size: var(--font14Size);
+
+						text {
+							font-size: var(--font12Size);
+						}
+					}
+				}
+			}
+		}
+	}
 </style>