通用优惠券展示组件。支持大/小尺寸、水平/竖直/多列排列、禁用态、行动按钮与主题色定制。
示例图


基础用法
页面 .json 文件 usingComponents 中引入组件
// json
{
"usingComponents": {
"mx-coupon": "/components/mxwui/coupon/index"
}
}页面 .wxml 文件中使用组件
<mx-coupon dataSource="{{list}}" />Page({
data: {
list: [
{
title: '满减优惠券',
desc: '全场通用 · 限时领取',
money: '50',
moneyUnit: '元',
threshold: '满500可用',
validTime: '2026/12/31 23:59:59',
actionAreaInfo: {
text: '立即领取',
},
},
],
},
});更多用法示例
数据源 dataSource
属性:dataSource,优惠券数组,必填。
每项支持:title、desc、money、moneyUnit、threshold、validTime、validTimeText、disabled、actionAreaInfo。
<mx-coupon dataSource="{{list}}" />券尺寸 size
属性:size,默认 large,可选 large、small。
<mx-coupon size="small" dataSource="{{list}}" />排列方式 direction
属性:direction,默认 horizontal,可选 horizontal、vertical、multipleColumn。
horizontal:水平滑动排列vertical:竖直堆叠排列multipleColumn:两列网格排列
<mx-coupon direction="vertical" dataSource="{{list}}" />
<mx-coupon direction="multipleColumn" dataSource="{{list}}" />有效期 validTime
属性:dataSource 单项的 validTime,支持精确到时分秒,券面上单行完整展示(不换行、不截断)。
支持传入:
- 完整字符串:
2026/12/31 23:59:59(也兼容-分隔) - 仅日期:
2026/12/31(自动补齐为23:59:59) - 时间戳:毫秒 / 秒(数字或纯数字字符串)
- 兼容别名:
expireTime
展示格式统一为:YYYY/MM/DD HH:mm:ss,默认带前缀「有效期至」。
{
title: '满减优惠券',
money: '50',
threshold: '满500可用',
validTime: '2026/12/31 23:59:59',
}<mx-coupon dataSource="{{list}}" />自定义有效期文案 validTimeText
属性:dataSource 单项的 validTimeText。有值时优先生效,不再走 validTime 格式化。
{
title: '限时券',
money: '10',
validTimeText: '领取后 24 小时内有效(至 2026/08/01 12:00:00)',
}有效期前缀 validTimePrefix
属性:validTimePrefix,默认 有效期至。传空字符串可去掉前缀。
<mx-coupon validTimePrefix="截止" dataSource="{{list}}" />主题色 themeColor
属性:themeColor,默认 #CA0E2D,支持任何合法的颜色值。用于左侧金额区与行动按钮强调色。
<mx-coupon themeColor="#1677FF" dataSource="{{list}}" />自定义样式 customStyle
属性:customStyle,作用在组件根节点。
<mx-coupon customStyle="padding: 0 24rpx;" dataSource="{{list}}" />禁用态 disabled
在 dataSource 单项上设置 disabled。禁用后不可点击,并降低不透明度。
{
title: '已过期优惠券',
money: '30',
threshold: '满200可用',
validTime: '2026/06/30 23:59:59',
disabled: true,
actionAreaInfo: {
text: '已过期',
disabled: true,
},
}行动区 actionAreaInfo
dataSource 单项的 actionAreaInfo:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | String | 按钮文案 | |
| disabled | Boolean | false |
按钮是否禁用 |
| imageUrl | String | 完成态图片,有值时优先展示图片 |
actionAreaInfo: {
text: '立即领取',
disabled: false,
// imageUrl: 'https://xxx.png',
}自定义事件
事件:bind:coupon_tap,点击整张券,返回 event.detail.item、event.detail.index。
事件:bind:coupon_btn_tap,点击行动按钮,返回 event.detail.item、event.detail.index。禁用态不触发。
<mx-coupon
dataSource="{{list}}"
bind:coupon_tap="handleCouponTap"
bind:coupon_btn_tap="handleBtnTap"
/>handleCouponTap(e) {
const { item, index } = e.detail;
},
handleBtnTap(e) {
const { item, index } = e.detail;
},参数
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| dataSource | Array | 是 | 优惠券数据源 | ||
| size | String | large、small |
large |
券尺寸 | |
| direction | String | horizontal、vertical、multipleColumn |
horizontal |
多张券排列方式 | |
| validTimePrefix | String | 有效期至 |
有效期前缀,空字符串可去掉前缀 | ||
| themeColor | String | 颜色值 | #CA0E2D |
主题色,支持任何合法的颜色值 | |
| customStyle | String | 自定义样式 |
dataSource 单项
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| title | String | 券标题 | |||
| desc | String | 券描述 | |||
| money | String | 金额/折扣文案 | |||
| moneyUnit | String | 元 |
单位文案,如「元」「折」 | ||
| threshold | String | 使用门槛文案 | |||
| validTime | String / Number | 有效期,支持到时分秒;日期字符串 / 时间戳均可 | |||
| expireTime | String / Number | validTime 别名 |
|||
| validTimeText | String | 自定义有效期完整文案,优先于 validTime |
|||
| disabled | Boolean | true、false |
false |
是否禁用整张券 | |
| actionAreaInfo | Object | 行动区域配置 |
actionAreaInfo
| 参数 | 类型 | 必填 | 可选值 | 默认值 | 参数描述 |
|---|---|---|---|---|---|
| text | String | 按钮文案 | |||
| disabled | Boolean | true、false |
false |
按钮是否禁用 | |
| imageUrl | String | 完成态图片地址,有值时不展示按钮 |
事件
| 事件名称 | 类型 | 返回值 | 事件说明 |
|---|---|---|---|
| bind:coupon_tap | Click | event |
点击整张券,返回 event.detail.item、event.detail.index |
| bind:coupon_btn_tap | Click | event |
点击行动按钮,返回 event.detail.item、event.detail.index |
插槽
| 名称 | 说明 |
|---|---|
| action | 行动区域插槽;当单项未配置 actionAreaInfo 时展示 |
其他说明
- 金额文案超过 3 个字符时,组件会自动使用较小字号,避免溢出。
- 有效期按
YYYY/MM/DD HH:mm:ss单行完整展示,不换行、不截断。 - 仅传入日期(如
2026/12/31)时,自动补齐为当天23:59:59。