Vant4 Vant4 Coupon 优惠卷

2024-02-25 开发教程 Vant4 匿名 4

介绍

用于优惠券的兑换和选择。

引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册。

import { createApp } from 'vue';
import { CouponCell, CouponList } from 'vant';
const app = createApp();
app.use(CouponCell);
app.use(CouponList);

代码演示

基础用法

<!-- 优惠券单元格 -->
<van-coupon-cell
:coupons="coupons"
:chosen-coupon="chosenCoupon"
@click="showList = true"
/>
<!-- 优惠券列表 -->
<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,
condition: '无门槛\n最多优惠12元',
reason: '',
value: 150,
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

参数说明类型默认值
title单元格标题string 优惠券
chosen-coupon当前选中优惠券的索引number | string -1
coupons可用优惠券列表Coupon[] []
editable能否切换优惠券boolean true
border是否显示内边框boolean true
currency货币符号string ¥

CouponList Props

参数说明类型默认值
v-model:code当前输入的兑换码string -
chosen-coupon当前选中优惠券的索引number -1
coupons可用优惠券列表Coupon[] []
disabled-coupons不可用优惠券列表Coupon[] []
enabled-title可用优惠券列表标题string 可使用优惠券
disabled-title不可用优惠券列表标题string 不可使用优惠券
exchange-button-text兑换按钮文字string 兑换
exchange-button-loading是否显示兑换按钮加载动画boolean false
exchange-button-disabled是否禁用兑换按钮boolean false
exchange-min-length兑换码最小长度number 1
displayed-coupon-index滚动至特定优惠券位置number -
show-close-button是否显示列表底部按钮boolean true
close-button-text列表底部按钮文字string 不使用优惠
input-placeholder输入框文字提示string 请输入优惠码
show-exchange-bar是否展示兑换栏boolean true
currency货币符号string ¥
empty-image列表为空时的占位图string -
show-count是否展示可用 / 不可用数量boolean true

CouponList Events

事件名说明回调参数
change优惠券切换回调index, 选中优惠券的索引
exchange兑换优惠券回调code, 兑换码

CouponList Slots

名称说明
list-footer v3.0.18优惠券列表底部
disabled-list-footer v3.0.18不可用优惠券列表底部

Coupon 数据结构

键名说明类型
id优惠券 idstring
name优惠券名称string
condition满减条件string
startAt卡有效开始时间 (时间戳, 单位秒)number
endAt卡失效日期 (时间戳, 单位秒)number
description描述信息,优惠券可用时展示string
reason不可用原因,优惠券不可用时展示string
value折扣券优惠金额,单位分number
valueDesc折扣券优惠金额文案string
unitDesc单位文案string

类型定义

组件导出以下类型定义:

import type { CouponCellProps, CouponListProps } from 'vant';

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
--van-coupon-margin0 var(--van-padding-sm) var(--van-padding-sm) -
--van-coupon-content-height84px -
--van-coupon-content-padding14px 0 -
--van-coupon-content-text-colorvar(--van-text-color) -
--van-coupon-backgroundvar(--van-background-2) -
--van-coupon-active-backgroundvar(--van-active-color) -
--van-coupon-radiusvar(--van-radius-lg) -
--van-coupon-shadow0 0 4px rgba(0, 0, 0, 0.1) -
--van-coupon-head-width96px -
--van-coupon-amount-colorvar(--van-danger-color) -
--van-coupon-amount-font-size30px -
--van-coupon-currency-font-size40% -
--van-coupon-name-font-sizevar(--van-font-size-md) -
--van-coupon-disabled-text-colorvar(--van-text-color-2) -
--van-coupon-description-paddingvar(--van-padding-xs) var(--van-padding-md) -
--van-coupon-description-border-colorvar(--van-border-color) -
--van-coupon-checkbox-colorvar(--van-danger-color) -
--van-coupon-list-backgroundvar(--van-background) -
--van-coupon-list-field-padding5px 0 5px var(--van-padding-md) -
--van-coupon-list-exchange-button-height32px -
--van-coupon-list-close-button-height40px -
--van-coupon-list-empty-tip-colorvar(--van-text-color-2) -
--van-coupon-list-empty-tip-font-sizevar(--van-font-size-md) -
--van-coupon-list-empty-tip-line-heightvar(--van-line-height-md) -
--van-coupon-cell-selected-text-colorvar(--van-text-color) -