6 changed files with 848 additions and 7 deletions
			
			
		- 
					31components/lf-nocontent/lf-nocontent.vue
 - 
					46components/lf-price/lf-price.vue
 - 
					220components/lf-waterfall-shopdetails/lf-waterfall.vue
 - 
					5main.js
 - 
					553pages/shop/shopdetail.vue
 - 
					BINstatic/images/empty.png
 
@ -0,0 +1,31 @@ | 
				
			|||
<template> | 
				
			|||
	<view class="padding-xl margin-top-xl"> | 
				
			|||
		<view class="flex justify-center"> | 
				
			|||
			<image src="@/static/images/empty.png" mode="widthFix" class="no-content-img"></image> | 
				
			|||
		</view> | 
				
			|||
		<text class="block text-center margin-top">暂无数据</text> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		data(){ | 
				
			|||
			return { | 
				
			|||
				 | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		onLoad(){ | 
				
			|||
			 | 
				
			|||
		}, | 
				
			|||
		methods: { | 
				
			|||
			 | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style lang="scss" scoped> | 
				
			|||
	.no-content-img{ | 
				
			|||
		width: 440rpx; | 
				
			|||
		height: 380rpx; | 
				
			|||
	} | 
				
			|||
</style> | 
				
			|||
@ -0,0 +1,46 @@ | 
				
			|||
<template> | 
				
			|||
	<view> | 
				
			|||
		<block v-if="isPoint"> | 
				
			|||
			<text class="text-price lf-font-48 lf-font-bold lf-color-price">{{ showPrice(1) }}</text> | 
				
			|||
			<text class="lf-font-28 lf-font-bold lf-color-price">.{{ showPrice(2) }}</text> | 
				
			|||
		</block> | 
				
			|||
		<block v-else> | 
				
			|||
			<text class="text-price lf-font-48 lf-font-bold lf-color-price">{{ showPrice() }}</text> | 
				
			|||
		</block> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		props: { | 
				
			|||
			price: { | 
				
			|||
				type: [Number, String], | 
				
			|||
				default: '' | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		computed: { | 
				
			|||
			// 是否存在小数点 | 
				
			|||
			isPoint(){ | 
				
			|||
				let price = parseFloat(this.$props.price).toString(); | 
				
			|||
				return price.indexOf('.') >= 0; | 
				
			|||
			}, | 
				
			|||
			showPrice(){ | 
				
			|||
				let price = parseFloat(this.$props.price).toString(); // 过滤价格出现.00的情况 | 
				
			|||
				return function(type){ | 
				
			|||
					let price_arr = price.split('.'); | 
				
			|||
					if(type == 1){ | 
				
			|||
						return price_arr[0]; | 
				
			|||
					}else if(type == 2){ | 
				
			|||
						return price_arr[1]; | 
				
			|||
					}else{ | 
				
			|||
						return price_arr[0]; | 
				
			|||
					} | 
				
			|||
				} | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style lang="scss" scoped="scoped"> | 
				
			|||
	 | 
				
			|||
</style> | 
				
			|||
@ -0,0 +1,220 @@ | 
				
			|||
<template> | 
				
			|||
	<view> | 
				
			|||
		<u-waterfall v-model="dataList" ref="uWaterfall" v-for="itemFather of listlength" :key="itemFather" v-if="itemFather == tabindex"> | 
				
			|||
			<template v-slot:left="{leftList}"> | 
				
			|||
				<view class="list-warter" v-for="(item, index) in leftList" :key="index"> | 
				
			|||
					<view v-if="!item.is_ad"  @click="onClick(item.id)"> | 
				
			|||
						<u-lazy-load threshold="-450" border-radius="8px 8px 0 0" :image="item.picture" :index="index"> | 
				
			|||
							<view class="list-label">已售{{item.sale}}</view> | 
				
			|||
						</u-lazy-load> | 
				
			|||
						<view class="lf-p-20"> | 
				
			|||
							<view class="list-title"> | 
				
			|||
								{{item.title}} | 
				
			|||
							</view> | 
				
			|||
							<view class="list-price"> | 
				
			|||
								<!-- <text>{{item.price}}元</text> --> | 
				
			|||
								<lf-price :price="item.price"></lf-price> | 
				
			|||
								<text class="lf-m-l-20 lf-font-24 lf-color-666 lf-line-through">{{item.original_price}}</text> | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
					<view v-else @click="goAd(item.type,item.url)"> | 
				
			|||
						<u-lazy-load threshold="-450" border-radius="8px 8px 0 0" :image="item.picture" :index="index"></u-lazy-load> | 
				
			|||
						<view class="lf-p-20"> | 
				
			|||
							<view class="list-title"> | 
				
			|||
								{{item.title}} | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
			</template> | 
				
			|||
			<template v-slot:right="{rightList}"> | 
				
			|||
				<view class="list-warter" v-for="(item, index) in rightList" :key="index"> | 
				
			|||
					<view v-if="!item.is_ad"  @click="onClick(item.id)"> | 
				
			|||
						<u-lazy-load threshold="-450" border-radius="8px 8px 0 0" :image="item.picture" :index="index"> | 
				
			|||
							<view class="list-label">已售{{item.sale}}</view> | 
				
			|||
						</u-lazy-load> | 
				
			|||
						<view class="lf-p-20"> | 
				
			|||
							<view class="list-title"> | 
				
			|||
								{{item.title}} | 
				
			|||
							</view> | 
				
			|||
							<view class="list-price"> | 
				
			|||
								<!-- <text>{{item.price}}元</text> --> | 
				
			|||
								<lf-price :price="item.price"></lf-price> | 
				
			|||
								<text class="lf-m-l-20 lf-font-24 lf-color-666 lf-line-through">{{item.original_price}}</text> | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
					<view v-else @click="goAd(item.type,item.url)"> | 
				
			|||
						<u-lazy-load threshold="-450" border-radius="8px 8px 0 0" :image="item.picture" :index="index"></u-lazy-load> | 
				
			|||
						<view class="lf-p-20"> | 
				
			|||
							<view class="list-title"> | 
				
			|||
								{{item.title}} | 
				
			|||
							</view> | 
				
			|||
						</view> | 
				
			|||
					</view> | 
				
			|||
				</view> | 
				
			|||
			</template> | 
				
			|||
		</u-waterfall> | 
				
			|||
	</view> | 
				
			|||
</template> | 
				
			|||
 | 
				
			|||
<script> | 
				
			|||
	export default { | 
				
			|||
		props: { | 
				
			|||
			list: { | 
				
			|||
				type: Array, | 
				
			|||
				default: [] | 
				
			|||
			}, | 
				
			|||
			tabindex: { | 
				
			|||
				type: Number, | 
				
			|||
				default: 0 | 
				
			|||
			}, | 
				
			|||
			listlength: { | 
				
			|||
				type: Number, | 
				
			|||
				default: 1 | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		data(){ | 
				
			|||
			return { | 
				
			|||
				// dataList: [] | 
				
			|||
			} | 
				
			|||
		}, | 
				
			|||
		computed: { | 
				
			|||
			dataList: { | 
				
			|||
				get() { | 
				
			|||
					console.log('组件当前数据====',this.list) | 
				
			|||
					return this.list;  | 
				
			|||
				}, | 
				
			|||
				set(newValue) {  console.log('newvalue',newValue) } | 
				
			|||
			}, | 
				
			|||
		}, | 
				
			|||
		// watch: { | 
				
			|||
		// 	list(newValue,oldValue) { | 
				
			|||
		// 		console.log('值变了',newValue) | 
				
			|||
		// 		console.log('旧值',this.$refs) | 
				
			|||
		// 		// this.$forceUpdate(); | 
				
			|||
				 | 
				
			|||
				 | 
				
			|||
		// 		this.dataList = newValue | 
				
			|||
				 | 
				
			|||
		// 		console.log('当前值',this.dataList) | 
				
			|||
		// 		return newValue | 
				
			|||
		// 	} | 
				
			|||
		// }, | 
				
			|||
		onShow(){ | 
				
			|||
			 | 
				
			|||
		}, | 
				
			|||
		deactivated() { | 
				
			|||
			 | 
				
			|||
		}, | 
				
			|||
		onLoad() { | 
				
			|||
			 | 
				
			|||
		}, | 
				
			|||
		destroyed() { | 
				
			|||
			 | 
				
			|||
		}, | 
				
			|||
		methods: { | 
				
			|||
			onClick(id){ | 
				
			|||
				this.$url('/pages/goodsDetail/index?goods_id='+id); | 
				
			|||
				this.$emit('click'); | 
				
			|||
			}, | 
				
			|||
			goAd(type,url){ | 
				
			|||
				if(url) { | 
				
			|||
					if(type == 0) { | 
				
			|||
						this.$url(url); | 
				
			|||
					}else { | 
				
			|||
						this.$url('/pages/index/urlWeb?url='+url); | 
				
			|||
					} | 
				
			|||
				} | 
				
			|||
			}, | 
				
			|||
			clear() { | 
				
			|||
				console.log('组件名',this.$refs) | 
				
			|||
				this.$refs.uWaterfall[0].clear(); | 
				
			|||
			} | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
</script> | 
				
			|||
 | 
				
			|||
<style lang="scss" scoped="scoped"> | 
				
			|||
	// ==== | 
				
			|||
	.list-warter { | 
				
			|||
		border-radius: 20rpx; | 
				
			|||
		margin: 10px 5px; | 
				
			|||
		margin-top: 0px; | 
				
			|||
		background-color: #ffffff; | 
				
			|||
		// padding: 8px; | 
				
			|||
		position: relative; | 
				
			|||
		overflow: hidden; | 
				
			|||
		box-shadow: 0rpx 2rpx 8rpx 1rpx rgba(0, 0, 0, 0.1); | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.u-close { | 
				
			|||
		position: absolute; | 
				
			|||
		top: 32rpx; | 
				
			|||
		right: 32rpx; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-image { | 
				
			|||
		width: 100%; | 
				
			|||
		border-radius: 4px; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-title { | 
				
			|||
		font-size: 28rpx; | 
				
			|||
		font-weight: bold; | 
				
			|||
		color: $u-main-color; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-label{ | 
				
			|||
		position: absolute; | 
				
			|||
		bottom: 0; | 
				
			|||
		right: 0; | 
				
			|||
		background-color: rgba(0,0,0,0.5); | 
				
			|||
		width: 140rpx; | 
				
			|||
		height: 48rpx; | 
				
			|||
		border-radius: 20rpx 0rpx 0rpx 0rpx; | 
				
			|||
		font-size: 22rpx; | 
				
			|||
		color: #FFFFFF; | 
				
			|||
		line-height: 48rpx; | 
				
			|||
		text-align: center; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-tag { | 
				
			|||
		display: flex; | 
				
			|||
		margin-top: 5px; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-tag-owner { | 
				
			|||
		background-color: $u-type-error; | 
				
			|||
		color: #FFFFFF; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		padding: 4rpx 14rpx; | 
				
			|||
		border-radius: 50rpx; | 
				
			|||
		font-size: 20rpx; | 
				
			|||
		line-height: 1; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-tag-text { | 
				
			|||
		border: 1px solid $u-type-primary; | 
				
			|||
		color: $u-type-primary; | 
				
			|||
		margin-left: 10px; | 
				
			|||
		border-radius: 50rpx; | 
				
			|||
		line-height: 1; | 
				
			|||
		padding: 4rpx 14rpx; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
		border-radius: 50rpx; | 
				
			|||
		font-size: 20rpx; | 
				
			|||
	} | 
				
			|||
	 | 
				
			|||
	.list-price { | 
				
			|||
		font-size: 30rpx; | 
				
			|||
		color: $u-type-error; | 
				
			|||
		margin-top: 5px; | 
				
			|||
		display: flex; | 
				
			|||
		align-items: center; | 
				
			|||
	} | 
				
			|||
	// ==== | 
				
			|||
</style> | 
				
			|||
| 
		 After Width: 990 | Height: 852 | Size: 295 KiB  | 
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue