vant/src/coupon-list
neverland c3ad21791b
docs: prefer using ref (#9285)
* docs: prefer using ref

* docs: fix lint error
2021-08-18 16:39:09 +08:00
..
2021-08-18 16:39:09 +08:00
2021-08-18 16:39:09 +08:00

Coupon

Intro

Used for redemption and selection of coupons.

Install

Register component globally via app.use, refer to Component Registration for more registration ways.

import { createApp } from 'vue';
import { CouponCell, CouponList } from 'vant';

const app = createApp();
app.use(CouponCell);
app.use(CouponList);

Usage

Basic Usage

<!-- Coupon Cell -->
<van-coupon-cell
  :coupons="coupons"
  :chosen-coupon="chosenCoupon"
  @click="showList = true"
/>
<!-- Coupon List -->
<van-popup
  v-model:show="showList"
  round
  position="bottom"
  style="height: 90%; padding-top: 4px;"
>
  <van-coupon-list
    :coupons="coupons"
    :chosen-coupon="chosenCoupon"
    :disabled-coupons="disabledCoupons"
    @change="onChange"
    @exchange="onExchange"
  />
</van-popup>
import { ref } from 'vue';

export default {
  setup() {
    const coupon = {
      available: 1,
      originCondition: 0,
      reason: '',
      value: 150,
      name: 'Coupon name',
      startAt: 1489104000,
      endAt: 1514592000,
      valueDesc: '1.5',
      unitDesc: '元',
    };

    const coupons = ref([coupon]);
    const showList = ref(false);
    const chosenCoupon = ref(-1);

    const onChange = (index) => {
      showList.value = false;
      chosenCoupon.value = index;
    };
    const onExchange = (code) => {
      coupons.value.push(coupon);
    };

    return {
      coupons,
      showList,
      onChange,
      onExchange,
      chosenCoupon,
      disabledCoupons: [coupon],
    };
  },
};

API

CouponCell Props

Attribute Description Type Default
title Cell title string Coupon
chosen-coupon Index of chosen coupon number | string -1
coupons Coupon list Coupon[] []
editable Cell editable boolean true
border Whether to show inner border boolean true
currency Currency symbol string ¥

CouponList Props

Attribute Description Type Default
v-model Current exchange code string -
chosen-coupon Index of chosen coupon number -1
coupons Coupon list Coupon[] []
disabled-coupons Disabled coupon list Coupon[] []
enabled-title Title of coupon list string Available
disabled-title Title of disabled coupon list string Unavailable
exchange-button-text Exchange button text string Exchange
exchange-button-loading Whether to show loading in exchange button boolean false
exchange-button-disabled Whether to disable exchange button boolean false
exchange-min-length Min length to enable exchange button number 1
displayed-coupon-index Index of displayed coupon number -
close-button-text Close button text string Close
input-placeholder Input placeholder string Coupon code
currency Currency symbol string ¥
empty-image Placeholder image when list is empty string https://img.yzcdn.cn/vant/coupon-empty.png
show-count Whether to show coupon count in tab title boolean true

CouponList Events

Event Description Arguments
change Emitted when chosen coupon changed index: index of chosen coupon
exchange Emitted when exchanging coupon code: exchange code

CouponList Slots

Name Description
list-footer v3.0.18 Coupon list bottom
disabled-list-footer v3.0.18 Unavailable coupons list bottom

Data Structure of Coupon

Key Description Type
id Id string
name Name string
condition Condition string
startAt Start time (Timestamp, unit second) number
endAt End time (Timestamp, unit second) number
description Description string
reason Unavailable reason string
value Value number
valueDesc Value Text string
unitDesc Unit Text string

CSS Variables

The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.

Name Default Value Description
--van-coupon-margin 0 var(--van-padding-sm) var(--van-padding-sm) -
--van-coupon-content-height 84px -
--van-coupon-content-padding 14px 0 -
--van-coupon-background-color var(--van-white) -
--van-coupon-active-background-color var(--van-active-color) -
--van-coupon-border-radius var(--van-border-radius-lg) -
--van-coupon-box-shadow 0 0 4px rgba(0, 0, 0, 0.1) -
--van-coupon-head-width 96px -
--van-coupon-amount-color var(--van-danger-color) -
--van-coupon-amount-font-size 30px -
--van-coupon-currency-font-size 40% -
--van-coupon-name-font-size var(--van-font-size-md) -
--van-coupon-disabled-text-color var(--van-gray-6) -
--van-coupon-description-padding var(--van-padding-xs) var(--van-padding-md) -
--van-coupon-description-border-color var(--van-border-color) -
--van-coupon-corner-checkbox-icon-color var(--van-danger-color) -
--van-coupon-list-background-color var(--van-background-color) -
--van-coupon-list-field-padding 5px 0 5px var(--van-padding-md) -
--van-coupon-list-exchange-button-height 32px -
--van-coupon-list-close-button-height 40px -
--van-coupon-list-empty-image-size 200px -
--van-coupon-list-empty-tip-color var(--van-gray-6) -
--van-coupon-list-empty-tip-font-size var(--van-font-size-md) -
--van-coupon-list-empty-tip-line-height var(--van-line-height-md) -
--van-coupon-cell-selected-text-color var(--van-text-color) -