# ActAwardDialog 奖励弹窗

# 引入

import PressActAwardDialog from '@tencent/press-plus/press-act-award-dialog/press-act-award-dialog';

export default {
  components: {
    PressActAwardDialog,
  }
}

另外,该组件依赖 vue-qrcodevue-barcode,使用者需先行安装。

# 代码演示

# 基础用法

<PressActAwardDialog
  sub-btn-text="订阅"
  :show.sync="show"
  :issubscribe="isSubscribe"
  :props-data="MOCK_AWARD_PROPS_DATA"
  :water="MOCK_AWARD_WATER"
  @clickSub="isSubscribe = !isSubscribe"
  @clickButton="show = false"
/>
const MOCK_ICON = 'https://mike-1255355338.cos.ap-guangzhou.myqcloud.com/article/2024/1/own_mike_b4dd7d92644d642238.png';

export const MOCK_AWARD_PROPS_DATA = {
  shopName: '商店名称',
  shopIcon: MOCK_ICON,
  issubscribe: 1,
  brandacttitle: '品牌活动标题',
  extraGiftImg: MOCK_ICON,
  extraGiftName: '现金红包',
  limitDate: '2021.09.30前到店兑换上述物品后',
  giftList: [
    {
      giftname: '大乔-猫狗日记永久*1',
      giftpic: MOCK_ICON,
    },
    {
      giftname: '荣耀水晶*1',
      giftpic: MOCK_ICON,
    },
    {
      giftname: '舞动绿茵7日',
      giftpic: MOCK_ICON,
    },
    {
      giftname: '圣诞狂欢7日',
      giftpic: MOCK_ICON,
    },
    {
      giftname: '大喇叭*1',
      giftpic: MOCK_ICON,
    },
  ],
  expireTime: '兑换有效期至 2021.09.30',
  actList: [
    {
      pic: MOCK_ICON,
      name: '免费领取',
      benefittag: '价值128元免费游玩门票',
      giftBoxData: {
        expireTime: '兑换有效期至 2021.09.30',
      },
    },
  ],
  type: 'received',
  btnText: '兑换到账',
};

export const MOCK_AWARD_WATER = {
  goodscfg: {
    goodsname: '免费领取',
    goodsdetail:
      '<p>1、本券为王者人生用户专享,仅限本人使用,不可转赠或转卖。<br/>2、本券仅可使用一次,以下文旅城任选且仅可选择一个文旅城使用。<br/>3、于融创文旅城票口,出示融创文旅俱乐部会员码核销兑换,即获得该文旅城所包含指定四项票设备游玩门票一张。<br/>4、项目体验时会有身高、体重、年龄、陪同等要求,具体内容请各位游客以园区公示牌及实际开放为准。<br/>5、限当天使用有效,项目可游玩一次,门票不退不改,不挂失、不兑换现金。<br/>6、有效期限:自领取之日,至9月30日内有效(7.10-8.22暑期期间周末不可使用)</p><p>7、本券不可用于联营游乐设备。</p><p>8、本券使用以当日设备实际开放情况为准。<br/>9、使用时需要到当地融创文旅城售票口出显会员码进行兑换。<br/>适用范围:<br/>重庆融创文旅城<br/>成都融创文旅城<br/>无锡融创文旅城<br/>广州融创文旅城<br/>合肥融创文旅城<br/>南昌融创文旅城<br/>哈尔滨融创文旅城<br/>青岛融创东方影都</p>',
    goodsicon: MOCK_ICON,
  },
  status: 4,
};


export default {
  data() {
    return {
      show: true,
      isSubscribe: true,
      
      MOCK_AWARD_PROPS_DATA,
      MOCK_AWARD_WATER,
    }
  }
}

# API

# Props

参数 说明 类型 默认值
show 是否展示 boolean false
issubscribe 是否已订阅 boolean false
sub-btn-text 订阅按钮文案 String ``
is-show-mp-button 是否显示小程序按钮 boolean true
props-data 弹窗数据,说明见下方 Object -
water 物品详情,说明见下方 Object -
water-list 物品列表,说明见下方 Array -
use-tip-class 是否使用 tip-comp 为前缀的类名 boolean false
hide-tip-style 是否隐藏 @TIP_STYLE_NAME 关键词编译时加的样式 boolean false

# Events

事件名 说明 回调参数
clickButton 点击主按钮 event
update:show 更新是否展示 false
clickCloseButton 点击关闭按钮 -
clickEnter 点击更多福利 -
clickSub 点击订阅 -
clickModfy 点击修改绑定的微信/手机号 -
clickUsedShop 点击商店 -
clickExtraAct 点击查看活动 url
clickGoodItem 点击物品列表项 waterItem, index
gotoGoodsDetailDesc 查看物品详情 waterItem, index

# Inject

参数 说明 类型 默认值
globalHideTipStyle 是否隐藏关键词编译的样式,对应 hide-tip-style 属性 boolean false

# 类型说明

左侧部分

  1. 对于每日任务类型,用活动数据,即 propsData.actList[0]
  2. 其他的弹窗,则用 water

这里是不好的设计,数据应该提前处理好,然后给组件,组件应该不需要关心业务,后面需重构。

右侧部分,使用的都是 propsData,使用到的属性包括 shopIcon, shopName, brandacttitle

type IPropsData = {
  // 奖励类型:恭喜获得,你已获得,奖励说明
  type: 'get' | 'received' | 'detail'; 
  extraGiftDesc: string; // 核销文案
  limitDate: string; // 使用期限
  extraGiftName: string; // 宝箱
  btnText: string; // 按钮文案

  shopIcon: string; // 店铺图标
  shopName: string; // 店铺名称
  brandacttitle: string; // 品牌提示

  actList?: Array<{
    acquireStatus?: number; // 领取类型
    useWay?: number; // 1 线上,2 线下
    pic: string; // 图片
    benefittag: string; // 福利标签
    name: string;

    giftBoxData: {
      expireTime: string; // 过期时间
    }

    des: string; // 任务描述
    processDesc: string; // 任务进度
  }>;

  giftList?: Array<{
    giftid: number | string;
    giftname: string; 
    giftpic: string; 
  }>;

  extraAct?: IExtraAct;
}

// 核销相关
type IExtraAct = {
  img: string; // 图片
  title: string; // 标题
  desc: string; // 描述
  link: string; // 活动链接
}

water

type IWater = {
  goodscfg: {
    goodsicon: string; // 物品图片地址
    goodsname: string; // 物品名称
    goodsdetail: string; //其他说明
  };
  benefitTag: string; // 标签
  displayOverduetime: string; // 兑换有限期
  winningtime: string; // 领取时间戳,用作 id

  // 兑换状态,2 已兑换, 4 立即兑换, 6 已过期
  // 7 待发货, 8 已发货
  status: number; 

  displayCdKey: string; // 兑换码
  recvWay: string; // 使用方式
  displayType: number; // 展示方式
  wechatCard: string; 
  isBindWechat: boolean;  // 是否绑定微信
  bindNick: string; // 绑定昵称
  wxNick: string; // 微信昵称

  bindWechatExchange: boolean; // 是否显示“将”
  needBindWechat: boolean; // 是否显示修改绑定的微信号

  showVipNumber: string | number; // 奖励发放号码
  showMonifyMobile: string | number; // 奖励发放号码
  extraAct?: IExtraAct;
  useLimit: string; // 使用限制
  specialStatement: string; // 特别说明
}

waterList

type IWaterList = Array<IWater>

# 自定义样式

样式内容:
横屏