Merge branch 'master' of http://git.luyuan.tk/luyuan/deming into zmr
This commit is contained in:
		
						commit
						e34c74c303
					
				| @ -78,9 +78,10 @@ export default { | ||||
| 				return vm.$u.post('Goods/getGoodsClassifyList'); | ||||
| 			}, | ||||
| 			// 商品推荐
 | ||||
|             getGoodsRecommend({page}){ | ||||
|             getGoodsRecommend({page, gc_id}){ | ||||
|                 return vm.$u.post('Goods/getGoodsRecommend', { | ||||
| 					page: page | ||||
| 					page: page, | ||||
| 					gc_id: gc_id, | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 购物车商品列表
 | ||||
| @ -135,11 +136,12 @@ export default { | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 选择地区计算运费 
 | ||||
| 			getFreight({ freight_hash, city_id, area_id }) { | ||||
| 			getFreight({ freight_hash, city_id, area_id, delivery }) { | ||||
| 				return vm.$u.post('Buy/change_addr', { | ||||
| 					freight_hash: freight_hash, | ||||
| 					city_id: city_id, | ||||
| 					area_id: area_id, | ||||
| 					delivery: delivery, | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 商品详情
 | ||||
| @ -186,6 +188,49 @@ export default { | ||||
| 					page: page | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 拼团列表
 | ||||
| 			getPinTuanList({ page, gc_id }) { | ||||
| 				return vm.$u.post('Specialci/pintuanList', { | ||||
| 					page: page, | ||||
| 					gc_id: gc_id, | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 拼团商品详情
 | ||||
| 			getPinTuanDetails({ pintuan_id }) { | ||||
| 				return vm.$u.post('Specialci/pintuanInfo', { pintuan_id: pintuan_id }); | ||||
| 			}, | ||||
| 			// pintuanPush
 | ||||
| 			getPinTuanPush() { | ||||
| 				return vm.$u.post('Specialci/pintuanPush'); | ||||
| 			}, | ||||
| 			// 商品分类(拼团分类)
 | ||||
| 			getGoodsClass() { | ||||
| 				return vm.$u.post('Specialci/goodsClass'); | ||||
| 			}, | ||||
| 			// 优惠券列表(要兑换的)
 | ||||
| 			getCouponList({ page, store_id, type, gc_id }) { | ||||
| 				return vm.$u.post('Coupon/CouponList', {  | ||||
| 					page: page, | ||||
| 					store_id: store_id, | ||||
| 					type: type, | ||||
| 					gc_id: gc_id,  | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 领取优惠券
 | ||||
| 			getCoupon({ id }) { | ||||
| 				return vm.$u.post('Coupon/getCoupon', {  | ||||
| 					vouchertemplate_id: id,  | ||||
| 				}); | ||||
| 			}, | ||||
| 			// 我的优惠券(已有的)
 | ||||
| 			getMemberCouponList({ store_id, gc_id, type, status }) { | ||||
| 				return vm.$u.post('Coupon/getMemberCouponList', { | ||||
| 					store_id: store_id, | ||||
| 					gc_id: gc_id, | ||||
| 					type: type, | ||||
| 					status: status, | ||||
| 				}); | ||||
| 			} | ||||
|         } | ||||
|     } | ||||
|      | ||||
|  | ||||
| @ -4,16 +4,20 @@ Vue.use(Vuex) | ||||
| 
 | ||||
| const store = new Vuex.Store({ | ||||
| 	state: { | ||||
| 		count: 0 | ||||
| 		cartInfo: {}, // 购物车数据
 | ||||
| 		orderAddress: {}, // 下单时选择的地址
 | ||||
| 	}, | ||||
| 	getters: { | ||||
| 		doubleCount (state) { | ||||
| 			return state.count * 2 | ||||
| 		getOrderAddress(state) { | ||||
| 			return state.orderAddress; | ||||
| 		} | ||||
| 	}, | ||||
| 	mutations: { | ||||
| 		increment (state) { | ||||
| 			state.count++ | ||||
| 		updateCart(state, cart) { | ||||
| 			state.cartInfo = cart; | ||||
| 		}, | ||||
| 		updateAddress(state, address) { | ||||
| 			state.orderAddress = address; | ||||
| 		} | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| <template> | ||||
| 	<view class="items"> | ||||
| 		<view class="item-top"> | ||||
| 		<view class="item-top" @click="choiceAddress"> | ||||
| 			<view class="user-info"> | ||||
| 				<view class="user-name">{{ item.address_realname }}</view> | ||||
| 				<view class="user-pnone">{{ item.address_mob_phone | phoneFormat }}</view> | ||||
| @ -35,17 +35,15 @@ | ||||
| 	</view> | ||||
| </template> | ||||
| <script> | ||||
| /** | ||||
|  * address | ||||
|  * @description 地址 | ||||
|  * @property {Object} item 地址信息 | ||||
|  * @property {String} state 是否选择地址 choise | ||||
|  */ | ||||
| export default { | ||||
| 	name: 'address-item', | ||||
| 	data() { | ||||
| 		return { | ||||
| 			 | ||||
| 		} | ||||
| 	}, | ||||
| 	props: ['item', 'current'], | ||||
| 	mounted() { | ||||
| 		// console.log(this.item); | ||||
| 	}, | ||||
| 	props: ['item', 'current', 'state'], | ||||
| 	filters: { | ||||
| 		phoneFormat(value) { | ||||
| 			return value.replace(/^(\d{3})\d*(\d{4})$/, '$1****$2'); | ||||
| @ -74,6 +72,15 @@ export default { | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		choiceAddress() { | ||||
| 			if(this.state) { | ||||
| 				this.$store.commit('updateAddress', this.item); | ||||
| 				this.$u.route({ | ||||
| 					type: 'navigateBack', | ||||
| 					url: '/pageC/cart/ConfirmOrder', | ||||
| 				}) | ||||
| 			} | ||||
| 		}, | ||||
| 		showToast(message, type) { | ||||
| 			this.$refs.uToast.show({ | ||||
| 				title: message, | ||||
|  | ||||
| @ -1,24 +1,24 @@ | ||||
| <template> | ||||
| 	<view class="c-coupon"> | ||||
| 		<view :class="status == 0 ? 'coupon-usable' : 'coupon-unable'"> | ||||
| 		<view :class="type == 1 && status != 0 ? 'coupon-unable' : 'coupon-usable'"> | ||||
| 			<view class="info-type" :style="{ backgroundImage: 'url(' + (status == 0 ? '/static/image/mine/30.png' : '/static/image/mine/31.png') + ')', backgroundSize:'contain', backgroundRepeat: 'no-repeat' }"> | ||||
| 				<div class="wrap_left_top"></div> | ||||
| 				{{ couponInfo.index&1 ? '店铺优惠券' : '平台优惠券' }} | ||||
| 				{{ couponInfo.type == 2 ? '店铺优惠券' : '平台优惠券' }} | ||||
| 			</view> | ||||
| 			<view class="coupon-info"> | ||||
| 				<view class="info-usable"> | ||||
| 					<view class="price">¥<span>10</span></view> | ||||
| 					<view class="condition">满100使用</view> | ||||
| 					<view class="price">¥<span>{{ couponInfo.vouchertemplate_price }}</span></view> | ||||
| 					<view class="condition">满{{ couponInfo.vouchertemplate_limit }}使用</view> | ||||
| 				</view> | ||||
| 				<view class="info-store u-line-1">仅限 nike官方旗舰店 鞋子商品使用</view> | ||||
| 				<view class="info-integral">兑换积分:200积分</view> | ||||
| 				<view class="info-date">有效期2018.09.06-2018.10.06</view> | ||||
| 				<view class="info-store u-line-1">仅限{{ couponInfo.vouchertemplate_storename }}鞋子商品使用</view> | ||||
| 				<view class="info-integral">兑换积分:{{ couponInfo.vouchertemplate_points }}积分</view> | ||||
| 				<view class="info-date">有效期{{ couponInfo.vouchertemplate_startdate }}-{{ couponInfo.vouchertemplate_enddate }}</view> | ||||
| 			</view> | ||||
| 			<view class="coupon-btn"> | ||||
| 				<text v-if="type == 0 && status == 0" @click="exchange">立即兑换</text> | ||||
| 				<text v-if="type == 0 && status == 0" @click="exchangeCoupon">立即兑换</text> | ||||
| 				<text v-if="type == 1 && status == 0" @click="use">立即使用</text> | ||||
| 				<image v-if="status == 1" src="/static/image/mine/28.png"></image> | ||||
| 				<image v-if="status == 2" src="/static/image/mine/29.png"></image> | ||||
| 				<image v-if="type == 1 && status == 1" src="/static/image/mine/28.png"></image> | ||||
| 				<image v-if="type == 1 && status == 2" src="/static/image/mine/29.png"></image> | ||||
| 			</view> | ||||
| 		</view> | ||||
| 	</view> | ||||
| @ -27,7 +27,7 @@ | ||||
| /** | ||||
|  * coupon 优惠券 | ||||
|  * @description 优惠券组件 | ||||
|  * @property {Number} type 优惠券操作方式(兑换优惠券: 0 / 使用优惠券: 1) | ||||
|  * @property {Number} type 优惠券操作方式(可兑换的优惠券: 0 / 自己的优惠券: 1) | ||||
|  * @property {Object} coupon-info 优惠券信息 | ||||
|  * @event {Function} exchange 兑换优惠券 | ||||
|  * @event {Function} use 使用优惠券 | ||||
| @ -41,12 +41,21 @@ export default { | ||||
| 		type: Number, | ||||
| 		couponInfo: Object, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		console.log(this.couponInfo); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		exchange() { | ||||
| 			this.$emit('exchange', this.couponInfo.index); | ||||
| 			this.$emit('exchange', this.couponInfo.vouchertemplate_id); | ||||
| 		}, | ||||
| 		exchangeCoupon() { | ||||
| 			this.$u.api.getCoupon({ id: this.couponInfo.vouchertemplate_id }).then(res => { | ||||
| 				this.$u.toast(res.message); | ||||
| 				if(res.errCode == 0) {} | ||||
| 			}) | ||||
| 		}, | ||||
| 		use() { | ||||
| 			this.$emit('use', this.couponInfo.index); | ||||
| 			this.$emit('use', this.couponInfo.vouchertemplate_id); | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
|  | ||||
| @ -3,24 +3,83 @@ | ||||
|         <view class="top"> | ||||
|             商品推荐 | ||||
|         </view> | ||||
|         <view class="label"> | ||||
|         <!-- <view class="label"> | ||||
|             <text v-for="item in classifyList" :key="item.gc_id">{{ item.gc_name }}</text> | ||||
|         </view> | ||||
|         <view class="item"> | ||||
|             <item v-for="item in goodsList" :key="item.goods_id" :info="item"></item> | ||||
|         </view> | ||||
|         </view> --> | ||||
| 		<view> | ||||
| 			<u-tabs-swiper ref="uTabs" :list="classifyList" name="gc_name" :is-scroll="true" active-color="#FF780F" :current="current" font-size="24" :show-bar="false" @change="tabsChange" height="60" ></u-tabs-swiper> | ||||
| 		</view> | ||||
| 		<swiper :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish" > | ||||
| 			<swiper-item class="swiper-item" v-for="(_, index) in classifyList" :key="index"> | ||||
| 				<!-- <scroll-view scroll-y style="height: 800rpx;width: 100%;"> --> | ||||
| 					<view class="item"> | ||||
| 						<item v-for="item in goodsList" :key="item.goods_id" :info="item"></item> | ||||
| 					</view> | ||||
| 					<u-empty text="暂无商品" mode="list" color="#000" v-if="!goodsList.length"></u-empty> | ||||
| 				<!-- </scroll-view> --> | ||||
| 			</swiper-item> | ||||
| 		</swiper> | ||||
|     </view>     | ||||
| </template> | ||||
| <script> | ||||
| import item from "./item" | ||||
| export default { | ||||
|     name:"list", | ||||
| 	name:"list", | ||||
| 	data() { | ||||
| 		return { | ||||
| 			current: Number, | ||||
| 			swiperCurrent: 0, | ||||
| 			goodsList: [], | ||||
| 		} | ||||
| 	}, | ||||
|     components:{ | ||||
|         item | ||||
| 	}, | ||||
| 	props: { | ||||
| 		classifyList: Array, | ||||
| 		goodsList: Array, | ||||
| 		classifyList: Array | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		current(index) { | ||||
| 			const id = this.classifyList[index].gc_id; | ||||
| 			this.getGoodsRecommend(id); | ||||
| 		} | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.current = 0; | ||||
| 		console.log(this.classifyList); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getGoodsRecommend(gc_id) { | ||||
| 			this.$u.api.getGoodsRecommend({ | ||||
| 				page: 1, | ||||
| 				gc_id: gc_id, | ||||
| 			}).then((res)=>{ | ||||
| 				if (res.errCode == 0) { | ||||
| 					this.goodsList = res.data.goodsList; | ||||
| 					console.log(this.goodsList); | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		// tabs通知swiper切换 | ||||
| 		tabsChange(index) { | ||||
| 			this.swiperCurrent = index; | ||||
| 		}, | ||||
| 		// swiper-item左右移动,通知tabs的滑块跟随移动 | ||||
| 		transition(e) { | ||||
| 			let dx = e.detail.dx; | ||||
| 			this.$refs.uTabs.setDx(dx); | ||||
| 		}, | ||||
| 		// 由于swiper的内部机制问题,快速切换swiper不会触发dx的连续变化,需要在结束时重置状态 | ||||
| 		// swiper滑动结束,分别设置tabs和swiper的状态 | ||||
| 		animationfinish(e) { | ||||
| 			let current = e.detail.current; | ||||
| 			this.$refs.uTabs.setFinishCurrent(current); | ||||
| 			this.swiperCurrent = current; | ||||
| 			this.current = current; | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
| </script> | ||||
| @ -33,21 +92,21 @@ export default { | ||||
|         text-align: center; | ||||
|         color: #333; | ||||
|     } | ||||
|     .label{ | ||||
|         display: flex; | ||||
|         color: #999; | ||||
| 		flex-wrap: wrap; | ||||
|         >text{ | ||||
|             margin-right: 34rpx; | ||||
| 			margin-bottom: 10rpx; | ||||
|         } | ||||
|     } | ||||
|     .item{ | ||||
|         display: flex; | ||||
|         flex-wrap: wrap; | ||||
|         justify-content: space-between; | ||||
|         margin-top: 20rpx; | ||||
|     // .label{ | ||||
|     //     display: flex; | ||||
|     //     color: #999; | ||||
| 	// 	flex-wrap: wrap; | ||||
|     //     >text{ | ||||
|     //         margin-right: 34rpx; | ||||
| 	// 		margin-bottom: 10rpx; | ||||
|     //     } | ||||
|     // } | ||||
|     // .item{ | ||||
|     //     display: flex; | ||||
|     //     flex-wrap: wrap; | ||||
|     //     justify-content: space-between; | ||||
|     //     margin-top: 20rpx; | ||||
| 
 | ||||
|     } | ||||
|     // } | ||||
| } | ||||
| </style> | ||||
| @ -1,16 +1,16 @@ | ||||
| <template> | ||||
|     <view class="recommend"> | ||||
|         <view class="top"> | ||||
|             <text>今日秒杀推荐</text> | ||||
|             <text>{{ type == 'spike' ? '今日秒杀推荐' : '今日拼团推荐' }}</text> | ||||
|             <text>点击查看更多></text> | ||||
|         </view> | ||||
|         <view class="connect"> | ||||
|             <view class="time" v-if="type=='spike'"> | ||||
|             <view class="time" v-if="type == 'spike'"> | ||||
|                 <image src="/static/image/common/15.png"></image> | ||||
|                 <text>{{ info.groupbuy_starttime_histime }}</text> | ||||
|             </view> | ||||
|             <view class="info"> | ||||
|                 <text class="u-line-1">{{ info.groupbuy_name }}</text> | ||||
|                 <text class="u-line-1">{{ type == 'spike' ? info.groupbuy_name : '' }}</text> | ||||
|                 <text class="u-line-2">{{ info.goods_name }}</text> | ||||
|                 <view> | ||||
|                     <text>¥{{ info.groupbuy_price }}</text> | ||||
|  | ||||
| @ -4,21 +4,25 @@ | ||||
|             <view class="title"> | ||||
|                 <view class="name">全部秒杀</view> | ||||
|                 <view class="time"> | ||||
|                     <text class="num">12</text> | ||||
|                     <text class="num">{{ time.littleHour }}</text> | ||||
|                     <text class="mah">:</text> | ||||
|                     <text class="num">12</text> | ||||
|                     <text class="num">00</text> | ||||
|                     <text class="mah">:</text> | ||||
|                     <text class="num">12</text> | ||||
|                     <text class="num">00</text> | ||||
| 					<text>-</text> | ||||
| 					<text class="num">{{ time.bigHour }}</text> | ||||
|                     <text class="mah">:</text> | ||||
|                     <text class="num">00</text> | ||||
|                     <text class="mah">:</text> | ||||
|                     <text class="num">00</text> | ||||
|                 </view> | ||||
|             </view> | ||||
|             <view class="next"> | ||||
|             <view class="next" @click="viewMore"> | ||||
|                 查看更多> | ||||
|             </view> | ||||
|         </view> | ||||
|         <view class="list"> | ||||
|             <sitem></sitem> | ||||
|             <sitem></sitem> | ||||
|             <sitem></sitem> | ||||
|             <sitem v-for="(item, index) in list.slice(0, 3)" :key="index" :item="item"></sitem> | ||||
|         </view> | ||||
|     </view> | ||||
| </template> | ||||
| @ -28,7 +32,15 @@ export default { | ||||
|     name:"seckill", | ||||
|     components:{ | ||||
|         sitem | ||||
|     } | ||||
| 	}, | ||||
| 	props: ['list', 'time'], | ||||
| 	methods: { | ||||
| 		viewMore() { | ||||
| 			this.$u.route({ | ||||
| 				url: '/pageC/spike/index', | ||||
| 			}) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| @ -46,15 +58,17 @@ export default { | ||||
|                 color: #333; | ||||
|             } | ||||
|             .time{ | ||||
|                 margin-left: 39rpx; | ||||
|                 margin-left: 20rpx; | ||||
|                 display: flex; | ||||
|                 align-items: center; | ||||
|                 font-size: 20rpx; | ||||
|                 .num{ | ||||
| 					box-sizing: content-box; | ||||
|                     width: 25rpx; | ||||
|                     height: 25rpx; | ||||
|                     background-color: #bfbfbf; | ||||
|                     margin: 0 10rpx; | ||||
| 					padding: 2rpx; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -1,25 +1,33 @@ | ||||
| <template> | ||||
|     <view class="item"> | ||||
|         <image class="head"></image> | ||||
|         <text class="title">商品名</text> | ||||
|         <image class="head" :src="item.groupbuy_image1"></image> | ||||
|         <text class="title u-line-2">{{ item.goods_name }}</text> | ||||
|         <view class="price"> | ||||
|             <text>¥99</text> | ||||
|             <text>¥299</text> | ||||
|             <text>¥{{ item.groupbuy_price }}</text> | ||||
|             <text>¥{{ item.goods_price }}</text> | ||||
|         </view> | ||||
|         <view class="info"> | ||||
|             <text>剩余21件</text> | ||||
|             <text>剩余{{ item.inventory | formatValue }}件</text> | ||||
|             <text>立即购买</text> | ||||
|         </view> | ||||
|     </view> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
|     name:"item" | ||||
| 	name:"item", | ||||
| 	props: ['item'], | ||||
| 	filters: { | ||||
| 		formatValue(value) { | ||||
| 			let temp = Number(value); | ||||
| 			if(temp > 999) temp = '999+'; | ||||
| 			return temp; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .item{ | ||||
|     width: 210rpx; | ||||
|     width: 220rpx; | ||||
|     .head{ | ||||
|         width: 210rpx; | ||||
|         height: 131rpx; | ||||
| @ -43,6 +51,7 @@ export default { | ||||
|         >text:last-child{ | ||||
|             font-size: 24rpx; | ||||
|             color: #999; | ||||
| 			text-decoration: line-through; | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| @ -50,7 +59,7 @@ export default { | ||||
|         display: flex; | ||||
|         align-items: center; | ||||
|         justify-content: space-between; | ||||
|         font-size: 22rpx; | ||||
|         font-size: 20rpx; | ||||
|         margin-top: 19rpx; | ||||
|         >text:first-child{ | ||||
|             color: #666; | ||||
|  | ||||
							
								
								
									
										91
									
								
								components/shop/special-shop/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								components/shop/special-shop/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,91 @@ | ||||
| <template> | ||||
| 	<view class="special"> | ||||
| 		<image :src="item.groupbuy_image1"></image> | ||||
| 		<view class="right"> | ||||
| 			<view class="name u-line-1">{{ item.goods_name }}</view> | ||||
| 			<view class="price" v-if="type == 'spike'"> | ||||
| 				<view class="groupbuy-price">{{ item.groupbuy_price }}</view> | ||||
| 				<view class="goods-price">{{ item.goods_price }}</view> | ||||
| 			</view> | ||||
| 			<view class="buy"> | ||||
| 				<view class="num">剩余{{ item.inventory }}件</view> | ||||
| 				<view class="btn">立即购买</view> | ||||
| 			</view> | ||||
| 		</view> | ||||
| 	</view> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
| 	data() { | ||||
| 		return {} | ||||
| 	}, | ||||
| 	props: { | ||||
| 		item: Object, | ||||
| 		type: String, | ||||
| 	}, | ||||
| 	created() { | ||||
| 		console.log(this.item); | ||||
| 	} | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .special { | ||||
| 	margin-bottom: 30rpx; | ||||
| 	display: flex; | ||||
| 	width: 690rpx; | ||||
| 	background: rgba(245,245,245,1); | ||||
| 	border-radius: 6rpx; | ||||
| 	> image { | ||||
| 		flex-shrink: 0; | ||||
| 		width: 210rpx; | ||||
| 		height: 170rpx; | ||||
| 		border-radius: 6rpx 0rpx 0rpx 6rpx; | ||||
| 	} | ||||
| 	.right { | ||||
| 		flex: 1; | ||||
| 		display: flex; | ||||
| 		flex-direction: column; | ||||
| 		justify-content: space-between; | ||||
| 		padding: 20rpx; | ||||
| 		.name { | ||||
| 			width: 400rpx; | ||||
| 			font-size: 26rpx; | ||||
| 			color: rgba(51,51,51,1); | ||||
| 			margin-bottom: 20rpx; | ||||
| 		} | ||||
| 		.price { | ||||
| 			display: flex; | ||||
| 			.groupbuy-price { | ||||
| 				font-size: 26rpx; | ||||
| 				color: rgba(255,49,49,1); | ||||
| 				margin-right: 12rpx; | ||||
| 			} | ||||
| 			.goods-price { | ||||
| 				font-size: 24rpx; | ||||
| 				text-decoration: line-through; | ||||
| 				color: rgba(153,153,153,1); | ||||
| 			} | ||||
| 		} | ||||
| 		.buy { | ||||
| 			display: flex; | ||||
| 			justify-content: space-between; | ||||
| 			align-items: center; | ||||
| 			.num { | ||||
| 				font-size: 22rpx; | ||||
| 				color: rgba(102,102,102,1); | ||||
| 			} | ||||
| 			.btn { | ||||
| 				width: 140rpx; | ||||
| 				height: 50rpx; | ||||
| 				background: rgba(255,120,15,1); | ||||
| 				border-radius: 25rpx; | ||||
| 				font-size: 22rpx; | ||||
| 				font-weight: 500; | ||||
| 				color: rgba(255,255,255,1); | ||||
| 				line-height: 50rpx; | ||||
| 				text-align: center; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
| @ -1,72 +1,119 @@ | ||||
| <template> | ||||
|     <view class="youhq"> | ||||
|         <view class="top"> | ||||
|             <text>全部优惠券</text> | ||||
|             <text>查看更多></text> | ||||
|         </view> | ||||
|         <view class="label"> | ||||
|             <text>sda</text> | ||||
|             <text>asda</text> | ||||
|             <text>dsad</text> | ||||
|             <text>asdas</text> | ||||
|         </view> | ||||
|         <scroll-view style="width:100%;margin-top: 21rpx;" scroll-x="true"> | ||||
|             <view class="list"> | ||||
|                 <sitem></sitem> | ||||
|                 <sitem></sitem> | ||||
|                 <sitem></sitem> | ||||
|                 <sitem></sitem> | ||||
|                 <sitem></sitem> | ||||
|             </view> | ||||
|         </scroll-view> | ||||
| 
 | ||||
|         | ||||
|     </view> | ||||
| 	<view class="coupon-swiper"> | ||||
| 		<view class="top"> | ||||
| 			<view class="title">全部优惠券</view> | ||||
| 			<view class="view-more" @click="toCouponPage">查看更多></view> | ||||
| 		</view> | ||||
| 		<u-tabs-swiper ref="coupon" :list="couponGroupList" name="gc_name" :is-scroll="true" active-color="#FF780F" :current="couponCurrent" font-size="24" :show-bar="false" @change="couponTabsChange" height="88" ></u-tabs-swiper> | ||||
| 		 <!-- :style="{ height: swiperHeight }" --> | ||||
| 		<swiper :current="swiperCouponCurrent" @animationfinish="couponAnimationFinish"> | ||||
| 			<swiper-item class="swiper-coupon-item" v-for="(_, i) in couponGroupList" :key="i"> | ||||
| 				<!-- <scroll-view scroll-y style="height: 100%;"> --> | ||||
| 					<view v-for="(coupon, index) in couponList.slice(0, 4)" :key="index" class="coupon-item"> | ||||
| 						<Coupon :couponInfo="coupon" :status='0' :type="0"></Coupon> | ||||
| 					</view> | ||||
| 					<u-empty text="暂无优惠券" mode="coupon" color="#000" v-if="!couponList.length"></u-empty> | ||||
| 				<!-- </scroll-view> --> | ||||
| 			</swiper-item> | ||||
| 		</swiper> | ||||
| 	</view> | ||||
| </template> | ||||
| <script> | ||||
| import sitem from "./item" | ||||
| import Coupon from "@/components/mine/coupon/index"; | ||||
| export default { | ||||
|     name:"youhq", | ||||
|     components:{ | ||||
|         sitem | ||||
|     }, | ||||
|     data(){ | ||||
|         return { | ||||
| 
 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 	data() { | ||||
| 		return { | ||||
| 			swiperHeight: '', | ||||
| 			couponCurrent: 0, | ||||
| 			swiperCouponCurrent: 0, | ||||
| 			couponGroupList: [], | ||||
| 			couponList: [], | ||||
| 		} | ||||
| 	}, | ||||
| 	components: { | ||||
| 		Coupon | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		couponCurrent(index) { | ||||
| 			const id = this.couponGroupList[index].gc_id; | ||||
| 			this.getCouponList(id); | ||||
| 		} | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.setViewHeight(); | ||||
| 		this.getGoodsClass(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getGoodsClass() { | ||||
| 			this.$u.api.getGoodsClass().then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.couponGroupList = res.data; | ||||
| 					this.getCouponList(this.couponGroupList[0].gc_id); | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		getCouponList(gc_id) { | ||||
| 			this.$u.api.getCouponList({ | ||||
| 				page: 0, | ||||
| 				gc_id: gc_id,  | ||||
| 			}).then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.couponList = res.data; | ||||
| 				} else { | ||||
| 					this.couponList = []; | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		couponTabsChange(index) { | ||||
| 			this.couponCurrent = index; | ||||
| 		}, | ||||
| 		couponAnimationFinish(e) { | ||||
| 			const current = e.detail.current; | ||||
| 			this.swiperCouponCurrent = current; | ||||
| 			this.couponCurrent = current; | ||||
| 		}, | ||||
| 		setViewHeight() { | ||||
| 			const res = uni.getSystemInfoSync(); | ||||
| 			// this.swiperHeight = res.windowHeight - ((88 + 10 + 88) / 2) + 'px'; | ||||
| 			this.swiperHeight = '450px'; | ||||
| 		}, | ||||
| 		toCouponPage() { | ||||
| 			this.$u.route({ | ||||
| 				url: '/pageE/mine/MemberServe', | ||||
| 				params: { | ||||
| 					current: 1 | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 	}, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .youhq{ | ||||
|     .top{ | ||||
|         height: 90rpx; | ||||
|         width: 100%; | ||||
|         display: flex; | ||||
|         align-items: center; | ||||
|         justify-content: space-between; | ||||
|         >text:first-child{ | ||||
|             font-size: 30rpx; | ||||
|             color: #333; | ||||
|         } | ||||
|         >text:last-child{ | ||||
|             font-size: 18rpx; | ||||
|             color: #999; | ||||
|         } | ||||
|     } | ||||
|     .label{ | ||||
|         display: flex;  | ||||
|         font-size: 24rpx; | ||||
|         color: #999; | ||||
|         >text{ | ||||
|             margin-right: 34rpx; | ||||
|         } | ||||
|     } | ||||
|     .list{ | ||||
|         display: flex; | ||||
|         // justify-content: space-between; | ||||
|         width: auto; | ||||
|          | ||||
|     } | ||||
| .coupon-swiper { | ||||
| 	.top { | ||||
| 		padding-top: 30rpx; | ||||
| 		display: flex; | ||||
| 		align-items: center; | ||||
| 		justify-content: space-between; | ||||
| 		.title { | ||||
| 			font-size: 30rpx; | ||||
| 			font-weight: 500; | ||||
| 			color: rgba(51,51,51,1); | ||||
| 		} | ||||
| 		.view-more { | ||||
| 			font-size: 18rpx; | ||||
| 			color: rgba(153,153,153,1); | ||||
| 		} | ||||
| 	} | ||||
| 	.swiper-coupon-item { | ||||
| 		box-sizing: border-box; | ||||
| 		background-color: #ffffff; | ||||
| 		// padding: 30rpx { | ||||
| 		// 	top: 0; | ||||
| 		// }; | ||||
| 		.coupon-item { | ||||
| 			margin-bottom: 20rpx; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
| @ -1,83 +0,0 @@ | ||||
| <template> | ||||
|     <view class="item"> | ||||
|         <view class="top"> | ||||
|             <view class="pic"> | ||||
|                 <text>¥</text> | ||||
|                 <text>12</text> | ||||
|             </view> | ||||
|             <view class="man"> | ||||
|                 <text></text> | ||||
|                 <text></text> | ||||
|             </view> | ||||
|             <text class="button"> | ||||
|                 立即<br />领取 | ||||
|             </text> | ||||
|         </view> | ||||
|         <view class="time"> | ||||
|             使用时间:2020.01.24-2020.05.08 | ||||
|         </view> | ||||
|     </view> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
|     name:"item" | ||||
| } | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .item{ | ||||
|     padding: 10rpx; | ||||
| 
 | ||||
|     width: 254rpx; | ||||
|     height: 94rpx; | ||||
|     border: 2rpx solid #FDD360; | ||||
|     border-radius: 20rpx; | ||||
|     flex-shrink: 0; | ||||
|     margin-right: 16rpx; | ||||
|     .top{ | ||||
|         display: flex; | ||||
|         align-items: center; | ||||
|         justify-content: space-between; | ||||
|         .pic{ | ||||
|             display: flex; | ||||
|             align-items: flex-end; | ||||
|             color:#FDD360; | ||||
|             >text:first-child{ | ||||
|                 font-size: 24rpx; | ||||
|             } | ||||
|             >text:last-child{ | ||||
|                 font-size: 48rpx; | ||||
|             } | ||||
|         } | ||||
|         .man{ | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             align-items: center; | ||||
|             color: #FDD360; | ||||
|             >text:first-child{ | ||||
|                 font-size: 14rpx; | ||||
|                  | ||||
|             } | ||||
|             >text:last-child{ | ||||
|                 font-size: 18rpx; | ||||
|                 font-weight: bold; | ||||
|             } | ||||
|         } | ||||
|         .button{ | ||||
|              width: 61rpx; | ||||
|              height: 61rpx; | ||||
|              border-radius: 50%; | ||||
|              font-size: 18rpx; | ||||
|              background-color: #FDD360; | ||||
|              color: #fff; | ||||
|              display: flex; | ||||
|              align-items: center; | ||||
|              justify-content: center; | ||||
|         } | ||||
|     } | ||||
|     .time{ | ||||
|         font-size: 12rpx; | ||||
|         color: #FDD360; | ||||
|         font-weight: bold; | ||||
|     } | ||||
| } | ||||
| </style> | ||||
| @ -37,17 +37,17 @@ | ||||
| 					<view> | ||||
| 						<view class="title">优惠券折扣</view> | ||||
| 						<view class="value"> | ||||
| 							<view>-¥10.00</view> | ||||
| 							<view>{{ index }}</view> | ||||
| 							<image src="../static/image/1.png"></image> | ||||
| 						</view> | ||||
| 					</view> | ||||
| 					<!-- <view> | ||||
| 						<view class="title">支付方式</view> | ||||
| 					<view> | ||||
| 						<view class="title">运费</view> | ||||
| 						<view class="value"> | ||||
| 							<view>微信</view> | ||||
| 							<image src="../static/image/1.png"></image> | ||||
| 							<view v-if="freight">¥{{ freight | setFreight(index) }}</view> | ||||
| 							<!-- <image src="../static/image/1.png"></image> --> | ||||
| 						</view> | ||||
| 					</view> --> | ||||
| 					</view> | ||||
| 				</view> | ||||
| 			</view> | ||||
| 		</view> | ||||
| @ -59,10 +59,10 @@ | ||||
| 					<image src="../static/image/1.png"></image> | ||||
| 				</view> | ||||
| 			</view> | ||||
| 			<view> | ||||
| 			<view @click="showDelivery=true"> | ||||
| 				<view class="title">配送方式</view> | ||||
| 				<view class="value"> | ||||
| 					<view>快递</view> | ||||
| 					<view>{{ delivery.text }}</view> | ||||
| 					<image src="../static/image/1.png"></image> | ||||
| 				</view> | ||||
| 			</view> | ||||
| @ -70,36 +70,40 @@ | ||||
| 		<view class="bottom"> | ||||
| 			<view class="left"> | ||||
| 				<view class="title">合计:</view> | ||||
| 				<view class="price">¥{{ orderInfo.store_goods_total | showTotalPrice }}</view> | ||||
| 				<view class="price">¥{{ totalPrice }}</view> | ||||
| 			</view> | ||||
| 			<view class="right"> | ||||
| 				<view class="num">共件{{ orderInfo.store_cart_list | setTotalNumber }}商品</view> | ||||
| 				<view class="btn" @click="sendOrder">结算</view> | ||||
| 			</view> | ||||
| 		</view> | ||||
| 		<u-action-sheet :list="deliveryList" @click="setDelivery" border-radius="10" v-model="showDelivery"></u-action-sheet> | ||||
| 	</view> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			showDelivery: false, | ||||
| 			orderInfo: {}, | ||||
| 			totalPrice: '0.00', | ||||
| 			addressInfo: {}, | ||||
| 			freight: '', | ||||
| 			freight: {}, // 运费 | ||||
| 			isTakeawayer: '', // 是否支持骑手 | ||||
| 			deliveryList: [{ | ||||
| 				text: '快递', | ||||
| 				value: 'express', | ||||
| 			}, { | ||||
| 				text: '骑手', | ||||
| 				value: 'takeawayer', | ||||
| 			}], | ||||
| 			delivery: { | ||||
| 				text: '快递', | ||||
| 				value: 'express', | ||||
| 			}, // 配送方式 | ||||
| 		} | ||||
| 	}, | ||||
| 	filters: { | ||||
| 		showTotalPrice(object) { | ||||
| 			let price = 0; | ||||
| 			for (const key in object) { | ||||
| 				if (object.hasOwnProperty(key)) { | ||||
| 					const element = object[key]; | ||||
| 					price += Number(element); | ||||
| 				} | ||||
| 			} | ||||
| 			return price.toFixed(2); | ||||
| 		}, | ||||
| 		setTotalNumber(data) { | ||||
| 			let num = 0; | ||||
| 			for (const key in data) { | ||||
| @ -112,12 +116,29 @@ export default { | ||||
| 			} | ||||
| 			return num; | ||||
| 		}, | ||||
| 		setFreight(freight, index) { | ||||
| 			return freight[index]; | ||||
| 		} | ||||
| 	}, | ||||
| 	onLoad(option) { | ||||
| 		console.log(JSON.parse(option.info)); | ||||
| 		this.orderInfo = JSON.parse(option.info); | ||||
| 		this.addressInfo = this.orderInfo.address_info; | ||||
| 		this.getFreight(); | ||||
| 		this.orderInfo = this.$store.state.cartInfo; | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		// 判断是不是从选择地址页面返回 | ||||
| 		if(JSON.stringify(this.$store.state.orderAddress) == '{}') { | ||||
| 			this.$store.commit('updateAddress', this.orderInfo.address_info); | ||||
| 		} else { | ||||
| 			this.addressInfo = this.$store.state.orderAddress; | ||||
| 		} | ||||
| 	}, | ||||
| 	beforeDestroy() { | ||||
| 		this.$store.commit('updateAddress', {}); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		'$store.state.orderAddress'(value) { | ||||
| 			this.addressInfo = value; | ||||
| 			this.getFreight(); | ||||
| 		} | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		sendOrder() { | ||||
| @ -156,12 +177,38 @@ export default { | ||||
| 				freight_hash: this.orderInfo.freight_hash, | ||||
| 				city_id: this.addressInfo.city_id, | ||||
| 				area_id: this.addressInfo.area_id, | ||||
| 				delivery: this.delivery.value, | ||||
| 			}).then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					// this.freight = res. | ||||
| 					this.freight = res.data.content; | ||||
| 					this.isTakeawayer = res.data.delivery.takeawayer; | ||||
| 					this.setTotalPrice(); // 计算总价 | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		setTotalPrice(object) { | ||||
| 			const goods = this.orderInfo.store_goods_total; | ||||
| 			const freight = this.freight; | ||||
| 			let price = 0; | ||||
| 			[goods, freight].forEach(object => { | ||||
| 				for (const key in object) { | ||||
| 					if (object.hasOwnProperty(key)) { | ||||
| 						const element = object[key]; | ||||
| 						price += Number(element); | ||||
| 					} | ||||
| 				} | ||||
| 			}) | ||||
| 			// console.log(price); | ||||
| 			this.totalPrice =  price.toFixed(2); | ||||
| 		}, | ||||
| 		setDelivery(index) { | ||||
| 			if(index == 1) { | ||||
| 				if(!this.isTakeawayer) this.$u.toast('此地区不支持骑手配送'); | ||||
| 				return false; | ||||
| 			} | ||||
| 			this.delivery = this.deliveryList[index]; | ||||
| 			this.getFreight(); | ||||
| 		}, | ||||
| 		settlement() { | ||||
| 			uni.navigateTo({ | ||||
| 				url: '/pageE/order/Details' | ||||
| @ -169,7 +216,7 @@ export default { | ||||
| 		}, | ||||
| 		changeAddress() { | ||||
| 			uni.navigateTo({ | ||||
| 				url: '/pageE/more/Address' | ||||
| 				url: '/pageE/more/Address?type=choose' | ||||
| 			}); | ||||
| 		} | ||||
| 	}, | ||||
|  | ||||
| @ -100,11 +100,9 @@ export default { | ||||
| 			// ifcart 结算方式 1:购物车 0:直接结算(立即购买/拼团/秒杀) | ||||
| 			this.$u.api.settlementOrder({ ifcart: 1, cart_id: id }).then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.$store.commit('updateCart', res.data) | ||||
| 					this.$u.route({ | ||||
| 						url: '/pageC/cart/ConfirmOrder', | ||||
| 						params: { | ||||
| 							info: JSON.stringify(res.data), | ||||
| 						} | ||||
| 						url: '/pageC/cart/ConfirmOrder' | ||||
| 					}) | ||||
| 				} | ||||
| 			}) | ||||
|  | ||||
							
								
								
									
										63
									
								
								pageC/groupBuy/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								pageC/groupBuy/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| <template> | ||||
| 	<view class="group"> | ||||
| 		<view> | ||||
| 			<u-tabs-swiper ref="uTabs" :list="tabList" :current="current" @change="tabsChange" :is-scroll="false" | ||||
| 			 swiperWidth="750"></u-tabs-swiper> | ||||
| 		</view> | ||||
| 		<swiper :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish" > | ||||
| 			<swiper-item class="swiper-item" v-for="(_, index) in tabList" :key="index"> | ||||
| 				<scroll-view scroll-y style="height: 800rpx;width: 100%;" @scrolltolower="onreachBottom"> | ||||
| 					{{ index }} | ||||
| 				</scroll-view> | ||||
| 			</swiper-item> | ||||
| 		</swiper> | ||||
| 	</view> | ||||
| </template> | ||||
| <script> | ||||
| import SpecialGoods from "../../components/shop/special-shop/index" | ||||
| export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			tabList: [{name: '推荐'}, {name: '推荐'}, {name: '推荐'}], | ||||
| 			current: 0, | ||||
| 			swiperCurrent: 0, | ||||
| 		} | ||||
| 	}, | ||||
| 	components: { | ||||
| 		SpecialGoods | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		this.getPinTuanList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getPinTuanList() { | ||||
| 			this.$u.api.getPinTuanList().then(res => { | ||||
| 
 | ||||
| 			}) | ||||
| 		}, | ||||
| 		// tabs通知swiper切换 | ||||
| 		tabsChange(index) { | ||||
| 			this.swiperCurrent = index; | ||||
| 		}, | ||||
| 		// swiper-item左右移动,通知tabs的滑块跟随移动 | ||||
| 		transition(e) { | ||||
| 			let dx = e.detail.dx; | ||||
| 			this.$refs.uTabs.setDx(dx); | ||||
| 		}, | ||||
| 		// 由于swiper的内部机制问题,快速切换swiper不会触发dx的连续变化,需要在结束时重置状态 | ||||
| 		// swiper滑动结束,分别设置tabs和swiper的状态 | ||||
| 		animationfinish(e) { | ||||
| 			let current = e.detail.current; | ||||
| 			this.$refs.uTabs.setFinishCurrent(current); | ||||
| 			this.swiperCurrent = current; | ||||
| 			this.current = current; | ||||
| 		}, | ||||
| 		// scroll-view到底部加载更多 | ||||
| 		onreachBottom() { | ||||
| 			 | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| </style> | ||||
							
								
								
									
										85
									
								
								pageC/spike/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								pageC/spike/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,85 @@ | ||||
| <template> | ||||
| 	<view class="spike"> | ||||
| 		<view class="title"> | ||||
|             <view class="name">全部秒杀</view> | ||||
| 			<view class="time"> | ||||
| 				<text class="num">{{ seckillTime.littleHour }}</text> | ||||
| 				<text class="mah">:</text> | ||||
| 				<text class="num">00</text> | ||||
| 				<text class="mah">:</text> | ||||
| 				<text class="num">00</text> | ||||
| 				<text>-</text> | ||||
| 				<text class="num">{{ seckillTime.bigHour }}</text> | ||||
| 				<text class="mah">:</text> | ||||
| 				<text class="num">00</text> | ||||
| 				<text class="mah">:</text> | ||||
| 				<text class="num">00</text> | ||||
| 			</view> | ||||
| 		</view> | ||||
| 		<view class="spike-list"> | ||||
| 			<SpecialGoods v-for="(item, index) in spikeList" :key="index" :item="item" type='spike'></SpecialGoods> | ||||
| 		</view> | ||||
| 	</view> | ||||
| </template> | ||||
| <script> | ||||
| import SpecialGoods from "../../components/shop/special-shop/index" | ||||
| export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			spikeList: [], | ||||
| 			page: 0, | ||||
| 			seckillTime: {} | ||||
| 		} | ||||
| 	}, | ||||
| 	components: { | ||||
| 		SpecialGoods | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		this.getSpikeList(); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		// 全部秒杀 | ||||
| 		getSpikeList() { | ||||
| 			this.$u.api.getSpikeList({ page: this.page }).then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.spikeList = res.data.list; | ||||
| 					this.seckillTime = { | ||||
| 						bigHour: res.data.bigHour, | ||||
| 						littleHour: res.data.littleHour, | ||||
| 					} | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 	} | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .spike{ | ||||
| 	min-height: calc(100vh - var(--window-top)); | ||||
| 	padding: 30rpx; | ||||
| 	border-top: 1rpx solid rgba(236,236,236,1); | ||||
| 	.title{ | ||||
| 		margin-bottom: 30rpx; | ||||
| 		display: flex; | ||||
| 		align-items: center; | ||||
| 		.name{ | ||||
| 			font-size: 30rpx; | ||||
| 			color: #333; | ||||
| 		} | ||||
| 		.time{ | ||||
| 			margin-left: 20rpx; | ||||
| 			display: flex; | ||||
| 			align-items: center; | ||||
| 			font-size: 20rpx; | ||||
| 			.num{ | ||||
| 				box-sizing: content-box; | ||||
| 				width: 25rpx; | ||||
| 				height: 25rpx; | ||||
| 				background-color: #bfbfbf; | ||||
| 				margin: 0 10rpx; | ||||
| 				padding: 2rpx; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| </style> | ||||
| @ -37,11 +37,11 @@ | ||||
| 				<scroll-view scroll-y class="details"> | ||||
| 					<view v-for="(item, index) in pointslogList" :key="index" class="details-item"> | ||||
| 						<view class="item-left"> | ||||
| 							<view class="item-title">{{ item.pl_desc }}</view> | ||||
| 							<view class="item-title u-line-1">{{ item.pl_desc }}</view> | ||||
| 							<view class="item-date">{{ item.pl_addtime }}</view> | ||||
| 						</view> | ||||
| 						<view class="item-right" :class="[item.pl_addtime < 0 ? 'negative' : 'positive']"> | ||||
| 							{{ item.pl_addtime > 0 ? item.pl_addtime : '+' + 10.00 }} | ||||
| 						<view class="item-right" :class="[item.pl_points < 0 ? 'negative' : 'positive']"> | ||||
| 							{{ Number(item.pl_points) > 0 ? '+' + item.pl_points : item.pl_points }} | ||||
| 						</view> | ||||
| 					</view> | ||||
| 					<u-empty text="暂无明细" mode="data" color="#000" v-if="!pointslogList.length"></u-empty> | ||||
| @ -75,6 +75,14 @@ export default { | ||||
| 	components: { | ||||
| 		CouponView | ||||
| 	}, | ||||
| 	onLoad(option) { | ||||
| 		if(option.current) this.current = option.current; | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		current(value) { | ||||
| 			this.swiperCurrent = value; | ||||
| 		} | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		this.getMemberPointsStat(); | ||||
| 		this.getPointslogList(); | ||||
| @ -186,6 +194,7 @@ export default { | ||||
| 				justify-content: space-between; | ||||
| 				.item-left { | ||||
| 					.item-title { | ||||
| 						width: 450rpx; | ||||
| 						font-size: 32rpx; | ||||
| 						color: rgba(51,51,51,1); | ||||
| 						margin-bottom: 23rpx; | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| <template> | ||||
| 	<view class="coupon-swiper"> | ||||
| 		<u-tabs-swiper ref="coupon" :list="couponGroupList" :is-scroll="true" active-color="#FF780F" :current="couponCurrent" font-size="24" :show-bar="false" @change="couponTabsChange" height="88" ></u-tabs-swiper> | ||||
| 		<u-tabs-swiper ref="coupon" :list="couponGroupList" name="gc_name" :is-scroll="true" active-color="#FF780F" :current="couponCurrent" font-size="24" :show-bar="false" @change="couponTabsChange" height="88" ></u-tabs-swiper> | ||||
| 		<swiper :current="swiperCouponCurrent" @animationfinish="couponAnimationFinish" :style="{ height: swiperHeight }"> | ||||
| 			<swiper-item class="swiper-coupon-item" v-for="(_, i) in couponGroupList" :key="i"> | ||||
| 				<scroll-view scroll-y style="height: 100%;"> | ||||
| @ -31,43 +31,9 @@ export default { | ||||
| 			swiperHeight: '', | ||||
| 			couponCurrent: 0, | ||||
| 			swiperCouponCurrent: 0, | ||||
| 			couponGroupList: [ | ||||
| 				{ | ||||
| 					name: '平台' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				}, { | ||||
| 					name: '分类名称' | ||||
| 				} | ||||
| 			], | ||||
| 			couponList: [ | ||||
| 				{ | ||||
| 					index: 0 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 1 | ||||
| 				}, | ||||
| 			], | ||||
| 			couponGroupList: [], | ||||
| 			couponList: [], | ||||
| 			page: 0, | ||||
| 		} | ||||
| 	}, | ||||
| 	components: { | ||||
| @ -75,8 +41,35 @@ export default { | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.setViewHeight(); | ||||
| 		this.getGoodsClass(); | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		couponCurrent(index) { | ||||
| 			const id = this.couponGroupList[index].gc_id; | ||||
| 			this.getCouponList({ gc_id: id }); | ||||
| 		} | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getGoodsClass() { | ||||
| 			this.$u.api.getGoodsClass().then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.couponGroupList = res.data; | ||||
| 					this.getCouponList(this.couponGroupList[0].gc_id); | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		getCouponList({ gc_id }) { | ||||
| 			this.$u.api.getCouponList({ | ||||
| 				page: this.page, | ||||
| 				gc_id: gc_id, | ||||
| 			}).then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.couponList = res.data; | ||||
| 				} else { | ||||
| 					this.couponList = []; | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		exchangeCoupon(id) { | ||||
| 			console.log(id); | ||||
| 			 | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
| 		<u-radio-group v-model="current" @change="changeDefault" size="29" active-color="#FF780F"> | ||||
| 			<u-empty text="暂无收货地址" mode="address" color="#000000" img-width="120" margin-top="300" v-if="!addressList.length"></u-empty> | ||||
| 			<view v-for="(item, index) in addressList" :key="index" class="address-item"> | ||||
| 				<AddressItem :item="item" :current='current' @getAddressList="getAddressList"></AddressItem> | ||||
| 				<AddressItem :item="item" :current='current' @getAddressList="getAddressList" :state="state"></AddressItem> | ||||
| 			</view> | ||||
| 		</u-radio-group> | ||||
| 		<view class="address-btn" @click="addAddress">添加地址</view> | ||||
| @ -16,12 +16,16 @@ export default { | ||||
| 	data() { | ||||
| 		return { | ||||
| 			current: -1, // radio 标记 | ||||
| 			addressList: [] | ||||
| 			addressList: [], | ||||
| 			state: '', // 页面状态 是否进页面选择地址 | ||||
| 		} | ||||
| 	}, | ||||
| 	components: { | ||||
| 		AddressItem | ||||
| 	}, | ||||
| 	onLoad(option) { | ||||
| 		if(option.type) this.state = option.type; | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		this.getAddressList(); | ||||
| 	}, | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
| 		<swiper :current="swiperCurrent" @animationfinish="animationfinish" :style="{ height: swiperHeight }"> | ||||
| 			<swiper-item class="swiper-item" v-for="(_, index) in list" :key="index"> | ||||
| 				<scroll-view scroll-y class="scroll-coupon"> | ||||
| 					<view class="coupon-item" v-for="(coupon, c_index) in test" :key="c_index"> | ||||
| 					<view class="coupon-item" v-for="(coupon, c_index) in couponList" :key="c_index"> | ||||
| 						<Coupon :couponInfo="coupon" :status='index' :type="1" @use="useCoupon($event)"></Coupon> | ||||
| 					</view> | ||||
| 				</scroll-view> | ||||
| @ -24,35 +24,10 @@ export default { | ||||
| 			}, { | ||||
| 				name: '已过期' | ||||
| 			}], | ||||
| 			current: 0, | ||||
| 			current: Number, | ||||
| 			swiperCurrent: 0, | ||||
| 			swiperHeight: '', | ||||
| 			test: [ | ||||
| 				{ | ||||
| 					index: 0 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 1 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 2 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 3 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 4 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 5 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 6 | ||||
| 				}, | ||||
| 				{ | ||||
| 					index: 7 | ||||
| 				} | ||||
| 			] | ||||
| 			couponList: [] | ||||
| 		} | ||||
| 	}, | ||||
| 	components: { | ||||
| @ -61,7 +36,25 @@ export default { | ||||
| 	onLoad() { | ||||
| 		this.setViewHeight(); | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		this.current = 0; | ||||
| 	}, | ||||
| 	watch: { | ||||
| 		current(value) { | ||||
| 			let status = value + 1; | ||||
| 			this.getMemberCouponList(status); | ||||
| 		} | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		getMemberCouponList(current) { | ||||
| 			this.$u.api.getMemberCouponList({ | ||||
| 				status: current | ||||
| 			}).then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.couponList = res.data; | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		useCoupon(id) { | ||||
| 			console.log(id); | ||||
| 		}, | ||||
|  | ||||
							
								
								
									
										28
									
								
								pages.json
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								pages.json
									
									
									
									
									
								
							| @ -249,7 +249,6 @@ | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 				 | ||||
| 				}, | ||||
| 				{ | ||||
| 					"path": "cart/ConfirmOrder", | ||||
| @ -263,7 +262,32 @@ | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 				 | ||||
| 				}, | ||||
| 				{ | ||||
| 					"path": "spike/index", | ||||
| 					"style": { | ||||
| 						"navigationBarTitleText": "全部秒杀", | ||||
| 						"app-plus": { | ||||
| 							"titleSize": "36px", | ||||
| 							"titleNView": { | ||||
| 								"titleColor": "#333333", | ||||
| 								"backgroundColor": "#FFFFFF" | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 				}, | ||||
| 				{ | ||||
| 					"path": "groupBuy/index", | ||||
| 					"style": { | ||||
| 						"navigationBarTitleText": "全部拼团", | ||||
| 						"app-plus": { | ||||
| 							"titleSize": "36px", | ||||
| 							"titleNView": { | ||||
| 								"titleColor": "#333333", | ||||
| 								"backgroundColor": "#FFFFFF" | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			] | ||||
| 		}, | ||||
|  | ||||
| @ -38,16 +38,16 @@ | ||||
|         </view> | ||||
|         <view class="hr" style="margin-top:80rpx"></view> | ||||
|         <recommend v-if="JSON.stringify(recommendedSpike) != '{}'" :recommendData="recommendedSpike" type="spike"></recommend> | ||||
|         <view class="hr" style="margin-top:40rpx"></view> | ||||
|         <seckill v-if="spikeList.length"></seckill> | ||||
|         <view v-if="JSON.stringify(recommendedSpike) != '{}'" class="hr" style="margin-top:40rpx"></view> | ||||
|         <seckill v-if="spikeList.length" :list="spikeList" :time="seckillTime"></seckill> | ||||
|         <view v-if="spikeList.length" class="hr" style="margin-top:40rpx"></view> | ||||
|         <recommend v-if="0"></recommend> | ||||
|         <view class="hr" style="margin-top:40rpx" v-if="0"></view> | ||||
|         <recommend v-if="JSON.stringify(pinTuanPush) != '{}'" :recommendData="pinTuanPush" type='group'></recommend> | ||||
|         <view class="hr" style="margin-top:40rpx" v-if="JSON.stringify(pinTuanPush) != '{}'"></view> | ||||
|         <group></group> | ||||
|         <image class="lingquan"></image> | ||||
|         <youhq></youhq> | ||||
|         <view class="hr" style="margin-top:40rpx"></view> | ||||
|         <list :classifyList="classifyList" :goodsList="goodsList"></list> | ||||
|         <list v-if="couponGroupList.length" :classifyList="couponGroupList"></list> | ||||
| 		<view class="cart" @click="toCartPage"> | ||||
| 			<image src="/static/image/common/3.png"></image> | ||||
| 		</view> | ||||
| @ -85,18 +85,22 @@ export default { | ||||
| 			list:[], | ||||
| 			goodsClassify: [], // 商品分类 | ||||
| 			classifyList: [], | ||||
| 			goodsList: [], | ||||
| 			recommendedSpike: {}, // 秒杀推荐 | ||||
| 			spikeList: [], // 全部秒杀列表 | ||||
| 			seckillTime: {}, // 秒杀时间 | ||||
| 			couponGroupList: [], // 优惠券拼团分类 | ||||
| 			pinTuanList: [], // 拼团商品 | ||||
| 			pinTuanPush: {}, // 拼团推荐 | ||||
|         } | ||||
| 	}, | ||||
| 	onLoad() { | ||||
| 		this.getShopTopList(); | ||||
| 		this.getGoodsRecommend(); | ||||
| 	}, | ||||
| 	onShow() { | ||||
| 		this.getRecommendedSpike(); | ||||
| 		this.getSpikeList(); | ||||
| 		this.getGoodsClass(); | ||||
| 		this.getPinTuanPush(); | ||||
| 	}, | ||||
| 	methods: { | ||||
|         sousuo(){ | ||||
| @ -124,25 +128,45 @@ export default { | ||||
| 		getRecommendedSpike() { | ||||
| 			this.$u.api.recommendedSpike().then(res => { | ||||
| 				if(res.errCode == 0) this.recommendedSpike = res.data; | ||||
| 				console.log(this.recommendedSpike); | ||||
| 				// console.log(this.recommendedSpike); | ||||
| 			}) | ||||
| 		}, | ||||
| 		// 拼团推荐 | ||||
| 		getPinTuanPush() { | ||||
| 			this.$u.api.getPinTuanPush().then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.pinTuanPush = res.data; | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		// 获取优惠券拼团分类 | ||||
| 		getGoodsClass() { | ||||
| 			this.$u.api.getGoodsClass().then(res => { | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.couponGroupList = res.data; | ||||
| 					this.getPinTuanList(this.couponGroupList[0].gc_id); | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		// 全部秒杀 | ||||
| 		getSpikeList() { | ||||
| 			this.$u.api.getSpikeList({ page: 0 }).then(res => { | ||||
| 				if(res.errCode == 0) this.spikeList = res.data; | ||||
| 				if(res.errCode == 0) { | ||||
| 					this.spikeList = res.data.list; | ||||
| 					this.seckillTime = { | ||||
| 						bigHour: res.data.bigHour, | ||||
| 						littleHour: res.data.littleHour, | ||||
| 					} | ||||
| 				} | ||||
| 			}) | ||||
| 		}, | ||||
| 		getGoodsRecommend() { | ||||
| 			this.$u.api.getGoodsRecommend({ | ||||
| 				page: 1, | ||||
| 			}).then((res)=>{ | ||||
| 				if (res.errCode == 0) { | ||||
| 					this.classifyList = res.data.classifyList; | ||||
| 					this.goodsList = res.data.goodsList; | ||||
| 					// console.log(this.classifyList); | ||||
| 					 | ||||
| 				} | ||||
| 		// 拼团列表 | ||||
| 		getPinTuanList(id) { | ||||
| 			this.$u.api.getPinTuanList({ | ||||
| 				page: 0, | ||||
| 				gc_id: id, | ||||
| 			}).then(res => { | ||||
| 				this.pinTuanList = res.data; | ||||
| 			}) | ||||
| 		}, | ||||
| 		clickImage(index) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user