Skip to content

Ecard 电子卡

介绍

虚拟电子卡选择

基础用法

html
<template>
  <nut-ecard v-model="money" :list="dataList"></nut-ecard>
</template>
typescript
// `1.7.7` 开始提供 EcardDataItem 类型,之前版本使用 { price: number | number }
import type { EcardDataItem } from 'nutui-uniapp'

const money = ref<number>(0)

const dataList = ref<EcardDataItem[]>([
  { price: 10 },
  { price: 20 },
  { price: 30 },
  { price: 40 }
])

相关事件

html
<template>
  <nut-ecard v-model="money"
             :list="dataList"
             @update="onUpdate"
             @change="onChange"
             @input-change="onInputChange"
             @change-step="onStepChange"
             @input-click="onInputClick"></nut-ecard>
</template>
typescript
// `1.7.7` 开始提供 EcardChangeEvent、EcardDataValue 类型
import type { EcardChangeEvent, EcardDataValue } from 'nutui-uniapp'

// `1.7.7` 开始提供 update 事件
function onUpdate(value: EcardDataValue) {
  console.log('updated', value)
}

function onChange(event: EcardChangeEvent) {
  console.log('changed', event)
}

function onInputChange(value: string) {
  console.log('input changed', value)
}

function onStepChange(count: number, price: EcardDataValue) {
  console.log('step changed', count, price)
}

function onInputClick() {
  console.log('input clicked')
}

手动更新

1.7.7 开始支持通过 ref 手动更新

html
<template>
  <nut-ecard ref="ecard" v-model="money" :list="dataList"></nut-ecard>
</template>
typescript
import type { EcardInst } from 'nutui-uniapp'

const ecard = ref<EcardInst | null>(null)

// 更新选中项
function updateCurrentIndex() {
  ecard.value?.update({
    index: 1
  })
}

// 更新输入值
function updateInputValue() {
  ecard.value?.update({
    index: -1,
    input: '123'
  })
}

// 更新数量
function updateCount() {
  ecard.value?.update({
    index: 1,
    count: 2
  })
}

API

Props

参数说明类型默认值
v-model购买电子卡所需价钱number \ string0
list电子卡面值预设列表EcardDataItem[][]
choose-text选择面值文案string请选择电子卡面值
show-other 1.6.1是否显示其他面值控制booleantrue
other-value-text其他面值文案string其他面值
placeholder其他面值默认提示语string请输入1-5000整数
suffix符号标识string¥
card-amount-min其它面值最小值number \ string1
card-amount-max其他面值最大值number \ string9999
show-step 1.6.1是否显示是否显示数量步进booleantrue
card-buy-min购买数量最小值number1
card-buy-max购买数量最大值number9999

Events

事件名说明回调参数
update 1.7.7合计金额变化合计金额(面值 * 数量)
change切换预设面值点击的数据
input-change输入其他面值输入的数据
change-step数量变化当前数量,当前面值
input-click点击输入框-

EcardDataItem 数据结构

键名说明类型
price每张电子卡价格number \ string

Methods

通过 ref 可以获取到 Ecard 实例并调用实例方法

方法名说明参数返回值
update 1.7.7更新面值(options: EcardUpdateOptions)-
类型定义 1.7.7
typescript
export interface EcardUpdateOptions {
  /**
   * 选中项(从0开始的索引,-1表示选中输入框,null表示不选中)
   */
  index?: number | null
  /**
   * 其他面值(当index为-1或null时有效)
   */
  input?: string
  /**
   * 数量
   */
  count?: number
}
typescript
export interface EcardInst {
  /**
   * 更新面值
   *
   * @param options 配置项
   */
  update: (options: EcardUpdateOptions) => void
}

主题定制

样式变量

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

名称默认值描述
--nut-ecard-bg-color#f0f2f5-

MIT Licensed