# WriteOff 核销组件

优惠券核销组件,支持滑动手势核销,提供精美的动画效果和多种布局模式。

# 引入

import PressWriteOff from 'press-plus/press-write-off/press-write-off';

export default {
  components: {
    PressWriteOff,
  }
}

# 代码演示

# 基础用法

<template>
  <PressWriteOff
    :show="show"
    :coupon-info="couponInfo"
    @handleSwipeSuccess="onSwipeSuccess"
  />
</template>

<script>
export default {
  data() {
    return {
      show: true,
      couponInfo: {
        name: '古茗8折券',
        pic: 'https://example.com/coupon.jpg',
        desc: '古茗8折券,满20元可用',
        time: '有效期至2025.12.31',
      }
    };
  },
  methods: {
    onSwipeSuccess() {
      console.log('核销成功');
      // 处理核销成功逻辑
    }
  }
}
</script>

# 水平布局模式

<template>
  <PressWriteOff
    :show="show"
    :is-horizontal="true"
    :coupon-info="couponInfo"
    @handleSwipeSuccess="onSwipeSuccess"
  />
</template>

# 核销成功状态

<template>
  <PressWriteOff
    :show="show"
    :is-check-success="isSuccess"
    :coupon-info="couponInfo"
    @handleSwipeSuccess="onSwipeSuccess"
  />
</template>

<script>
export default {
  data() {
    return {
      show: true,
      isSuccess: false,
      couponInfo: {
        name: '星巴克优惠券',
        pic: 'https://example.com/starbucks.jpg',
        desc: '星巴克满减券,满50减10',
        time: '有效期至2025.06.30',
      }
    };
  },
  methods: {
    onSwipeSuccess() {
      // 模拟核销成功
      this.isSuccess = true;
    }
  }
}
</script>

# API

# Props

参数 说明 类型 默认值
show 是否显示核销弹窗 boolean false
is-horizontal 是否为水平布局模式 boolean false
is-check-success 是否为核销成功状态 boolean false
coupon-info 优惠券信息对象 object { name: '古茗8折券', pic: 'https://picsum.photos/200', desc: '古茗8折券', time: '有效期至2025.12.31' }

# CouponInfo 数据结构

参数 说明 类型 默认值
name 优惠券名称 string '古茗8折券'
pic 优惠券图片 string 'https://picsum.photos/200'
desc 优惠券描述 string '古茗8折券'
time 有效期信息 string '有效期至2025.12.31'

# Events

事件名 说明 回调参数
handleSwipeSuccess 滑动核销成功时触发 -

# 手势操作

# 垂直布局模式(默认)

  • 滑动方向: 从左往右滑动
  • 触发区域: 手势区域
  • 动画效果: 水平滑动动画

# 水平布局模式

  • 滑动方向: 从上往下滑动
  • 触发区域: 手势区域
  • 动画效果: 垂直滑动动画

# 动画效果

组件提供了丰富的动画效果:

  • 标题动画: 核销前后标题切换动画
  • 手势动画: 滑动手势引导动画
  • 核销动画: 优惠券时间区域消失动画
  • 成功动画: 核销成功光效动画

# 样式定制

组件使用 BEM 命名规范,支持样式定制:

.press-write-off {
  // 主容器样式
  
  &__title-wrap {
    // 标题容器样式
  }
  
  &__wrap {
    // 优惠券容器样式
  }
  
  &__gesture {
    // 手势区域样式
  }
}

# 注意事项

  1. 组件使用 PressTeleport 实现全屏弹窗效果
  2. 手势识别有最小滑动距离(5px)和最大滑动时间(1000ms)限制
  3. 水平和垂直布局模式下的手势方向不同
  4. 核销成功后手势区域会自动隐藏
  5. 建议在移动端使用,手势操作体验更佳