mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 10:18:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <view>
 | |
|     <view class="product-item" v-for="(item, index) in productList" :key="item.productId" @click="handleProductItemClick(item.productId)">
 | |
|       <view class="product-check" @click.stop="handleCheckProduct(item.productId, item.checked)">
 | |
|         <u-icon v-if="item.checked" name="checkmark-circle-fill" color="#3c9cff" size="22"></u-icon>
 | |
|         <view v-else class="un-check-box"></view>
 | |
|       </view>
 | |
|       <image class="product-image" :src="item.coverUrl"></image>
 | |
|       <view class="item-info">
 | |
|         <view class="info-text">
 | |
|           <u--text :lines="1" size="15px" color="#333333" :text="item.productTitle"></u--text>
 | |
|           <u-gap height="2px"></u-gap>
 | |
|           <u--text class="info-tips" :lines="1" size="12px" color="#939393" :text="item.tips"></u--text>
 | |
|         </view>
 | |
|         <view class="price-number-box">
 | |
|           <view class="price-box">
 | |
|             <yd-text-price color="red" size="13" intSize="20" :price="item.sellPrice"></yd-text-price>
 | |
|             <yd-text-price v-if="item.strikePrice" style="margin-left: 5px" decoration="line-through" color="#999" size="12" :price="item.sellPrice"></yd-text-price>
 | |
|           </view>
 | |
|           <view class="number-box" @click.stop>
 | |
|             <u-number-box min="1" max="999" bgColor="#fff" integer :disableMinus="false" :disabledInput="true" :name="item.productId" :value="item.productCount" @change="handleProductCountChange"></u-number-box>
 | |
|           </view>
 | |
|         </view>
 | |
|       </view>
 | |
|     </view>
 | |
|   </view>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| /**
 | |
|  * 购物车商品列表
 | |
|  */
 | |
| export default {
 | |
|   name: 'yd-cart-product',
 | |
|   props: {
 | |
|     productList: {
 | |
|       type: Array,
 | |
|       default: () => []
 | |
|     }
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       //status: 'nomore',
 | |
|       loadingText: '加载中...',
 | |
|       loadmoreText: '上拉加载更多',
 | |
|       nomoreText: '没有更多了'
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     handleProductItemClick(productId) {
 | |
|       uni.$u.route('/pages/product/product', {
 | |
|         id: productId
 | |
|       })
 | |
|     },
 | |
|     handleItemCartClick(productId) {
 | |
|       this.$store.dispatch('CartProductCountChange', { productIds: [productId], productCount: 1, addition: true }).then(res => {
 | |
|         uni.$u.toast('已添加到购物车')
 | |
|       })
 | |
|     },
 | |
|     handleCheckProduct(productId, checked) {
 | |
|       this.$emit('productCheckedChange', productId, !checked)
 | |
|     },
 | |
|     handleProductCountChange({ name, value }) {
 | |
|       this.$emit('productCartProductCountChange', name, value)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| <style lang="scss" scoped>
 | |
| .product-item {
 | |
|   background: #ffffff;
 | |
|   @include flex-space-between;
 | |
|   border-bottom: $custom-border-style;
 | |
|   padding: 10rpx 0 0 5rpx;
 | |
| 
 | |
|   .product-check {
 | |
|     padding: 20rpx;
 | |
| 
 | |
|     .un-check-box {
 | |
|       width: 20px;
 | |
|       height: 20px;
 | |
|       border: 1px solid #939393;
 | |
|       border-radius: 50%;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   .product-image {
 | |
|     width: 180rpx;
 | |
|     height: 180rpx;
 | |
|     border-radius: 10rpx;
 | |
|   }
 | |
| 
 | |
|   .item-info {
 | |
|     flex: 1;
 | |
|     padding: 20rpx 20rpx 0;
 | |
| 
 | |
|     .info-text {
 | |
|       height: 70rpx;
 | |
|       padding-bottom: 10rpx;
 | |
|     }
 | |
| 
 | |
|     .price-number-box {
 | |
|       @include flex-space-between;
 | |
| 
 | |
|       .price-box {
 | |
|         @include flex-left();
 | |
|       }
 | |
| 
 | |
|       .number-box {
 | |
|         height: 100rpx;
 | |
|         @include flex-center;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </style>
 | 
