| 
									
										
										
										
											2022-11-19 21:40:26 +08:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <view> | 
					
						
							|  |  |  |     <view v-if="showType === 'normal'"> | 
					
						
							|  |  |  |       <u-gap height="180" bgColor="#398ade"></u-gap> | 
					
						
							|  |  |  |       <view class="prod-block"> | 
					
						
							|  |  |  |         <view class="bloc-header"> | 
					
						
							|  |  |  |           <text class="bloc-title">{{title}}</text> | 
					
						
							|  |  |  |           <text class="see-more">查看更多</text> | 
					
						
							|  |  |  |         </view> | 
					
						
							|  |  |  |         <view class="prod-grid"> | 
					
						
							|  |  |  |           <view class="prod-item" v-for="(item, index) in productList" :key="item.id" @click="handleProdItemClick(item.id)"> | 
					
						
							|  |  |  |             <image class="prod-image" :src="item.image"></image> | 
					
						
							|  |  |  |             <view class="item-info"> | 
					
						
							|  |  |  |               <view class="info-text"> | 
					
						
							|  |  |  |                 <u--text :lines="2" size="14px" color="#333333" :text="item.title"></u--text> | 
					
						
							|  |  |  |               </view> | 
					
						
							|  |  |  |               <view class="price-and-cart"> | 
					
						
							|  |  |  |                 <yd-text-price color="red" size="12" intSize="18" :price="item.price"></yd-text-price> | 
					
						
							|  |  |  |                 <u-icon name="shopping-cart" color="#2979ff" size="28"></u-icon> | 
					
						
							|  |  |  |               </view> | 
					
						
							|  |  |  |             </view> | 
					
						
							|  |  |  |           </view> | 
					
						
							|  |  |  |         </view> | 
					
						
							|  |  |  |       </view> | 
					
						
							|  |  |  |     </view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <view v-if="showType === 'half'"> | 
					
						
							|  |  |  |       <view class="prod-block half"> | 
					
						
							|  |  |  |         <view class="bloc-header"> | 
					
						
							|  |  |  |           <text class="bloc-title">{{title}}</text> | 
					
						
							|  |  |  |           <text class="more">更多 ></text> | 
					
						
							|  |  |  |         </view> | 
					
						
							|  |  |  |         <view class="prod-grid half"> | 
					
						
							|  |  |  |           <view class="prod-item" v-for="(item, index) in productList" :key="item.id" @click="handleProdItemClick(item.id)"> | 
					
						
							|  |  |  |             <image class="prod-image" :src="item.image"></image> | 
					
						
							|  |  |  |             <view class="item-info"> | 
					
						
							|  |  |  |               <view class="info-text"> | 
					
						
							|  |  |  |                 <u--text :lines="1" size="14px" color="#333333" :text="item.title"></u--text> | 
					
						
							|  |  |  |                 <u--text :lines="1" size="12px" color="#939393" :text="item.desc"></u--text> | 
					
						
							|  |  |  |               </view> | 
					
						
							|  |  |  |               <view class="price-and-cart"> | 
					
						
							|  |  |  |                 <yd-text-price color="red" size="12" intSize="18" :price="item.price"></yd-text-price> | 
					
						
							|  |  |  |                 <u-icon name="shopping-cart" color="#2979ff" size="28"></u-icon> | 
					
						
							|  |  |  |               </view> | 
					
						
							|  |  |  |             </view> | 
					
						
							|  |  |  |           </view> | 
					
						
							|  |  |  |         </view> | 
					
						
							|  |  |  |       </view> | 
					
						
							|  |  |  |     </view> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   </view> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * 商品列表 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export default { | 
					
						
							|  |  |  |   name: 'yd-product-box', | 
					
						
							|  |  |  |   components: {}, | 
					
						
							|  |  |  |   props: { | 
					
						
							|  |  |  |     showType: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       default: 'normal' | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     title: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							|  |  |  |       default: '商品推荐' | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     productList: { | 
					
						
							|  |  |  |       type: Array, | 
					
						
							|  |  |  |       default: () => [] | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   computed: {}, | 
					
						
							|  |  |  |   methods: { | 
					
						
							|  |  |  |     handleProdItemClick(productId) { | 
					
						
							|  |  |  |       uni.$u.route('/pages/product/product', { | 
					
						
							| 
									
										
										
										
											2022-12-26 21:29:19 +08:00
										 |  |  |         id: productId | 
					
						
							| 
									
										
										
										
											2022-11-19 21:40:26 +08:00
										 |  |  |       }) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | <style lang="scss" scoped> | 
					
						
							|  |  |  | .prod-block { | 
					
						
							|  |  |  |   margin-top: -160px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .bloc-header { | 
					
						
							|  |  |  |     @include flex-space-between; | 
					
						
							|  |  |  |     padding: 10rpx 20rpx; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     .bloc-title { | 
					
						
							|  |  |  |       color: $custom-bg-color; | 
					
						
							|  |  |  |       font-size: 34rpx; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     .see-more { | 
					
						
							|  |  |  |       color: $custom-bg-color; | 
					
						
							|  |  |  |       background: $u-primary; | 
					
						
							|  |  |  |       padding: 0 30rpx; | 
					
						
							|  |  |  |       height: 50rpx; | 
					
						
							|  |  |  |       line-height: 50rpx; | 
					
						
							|  |  |  |       border-radius: 50rpx; | 
					
						
							|  |  |  |       font-size: 24rpx; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   &.half { | 
					
						
							|  |  |  |     margin-top: 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     .bloc-header { | 
					
						
							|  |  |  |       margin-top: 50rpx; | 
					
						
							|  |  |  |       margin-bottom: 20rpx; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .bloc-title { | 
					
						
							|  |  |  |         color: #333333; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .more { | 
					
						
							|  |  |  |         font-size: 24rpx; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .prod-grid { | 
					
						
							|  |  |  |     width: 730rpx; | 
					
						
							|  |  |  |     margin: 0 auto; | 
					
						
							|  |  |  |     @include flex; | 
					
						
							|  |  |  |     flex-wrap: wrap; | 
					
						
							|  |  |  |     justify-content: left; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     &.half { | 
					
						
							|  |  |  |       .prod-item { | 
					
						
							|  |  |  |         width: 345rpx; | 
					
						
							|  |  |  |         margin: 10rpx; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         .prod-image { | 
					
						
							|  |  |  |           width: 345rpx; | 
					
						
							|  |  |  |           height: 345rpx; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     .prod-item { | 
					
						
							|  |  |  |       width: 223rpx; | 
					
						
							|  |  |  |       margin: 10rpx; | 
					
						
							|  |  |  |       background: #ffffff; | 
					
						
							|  |  |  |       border-radius: 10rpx; | 
					
						
							|  |  |  |       box-shadow: 0rpx 6rpx 8rpx rgba(58, 134, 185, 0.2); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .prod-image { | 
					
						
							|  |  |  |         width: 223rpx; | 
					
						
							|  |  |  |         height: 223rpx; | 
					
						
							|  |  |  |         border-radius: 10rpx 10rpx 0 0; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .item-info { | 
					
						
							|  |  |  |         padding: 15rpx; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         .info-text { | 
					
						
							|  |  |  |           height: 70rpx; | 
					
						
							|  |  |  |           padding-bottom: 10rpx; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         .price-and-cart { | 
					
						
							|  |  |  |           @include flex-space-between; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </style> |