| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | <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', {        id: productId      })    }  }}</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>
 |