支付宝小程序 UI·新手引导-ETC 步骤

2020-09-08 16:09 更新

本示例展示新手接入 ETC 的相关操作步骤。

使用说明

本示例为纯客户端代码,可直接在模拟器和在真机预览。

更多详情请参见 代码市场

使用指南

安装

在 IDE 安装以下依赖

npm i mashi-open-snippets --save

注册

在 JSON 中引入组件路径

{
  "usingComponents": {
    "move-demo": "mashi-open-snippets/es/etc-novice-guide/index"
  }}

调用

分别在 AXML、JS、ACSS 中输入以下代码

<view class="etc-novice-guide-page" style="background-image:url({{bgImage}})">
    <etc-confirm ref="savePopRef" title="{{confirmData.title}}" subTitle="{{confirmData.subTitle}}" cancelButtonText="{{confirmData.cancelButtonText}}" confirmButtonText="{{confirmData.confirmButtonText}}" onClose="onPopClose" onCancel="onPopCancel" onConfirm="onPopConfirm"></etc-confirm>
    <!-- 动画 -->
    <block a:if="{{showLottie === 0}}">
        <view class="etc-novice-guide-lottie1-out">
            <lottie id="lottie-step1" class="etc-novice-guide-lottie1" path="https://gw.alipayobjects.com/os/basement_prod/955552a7-4d63-462b-8905-89ce48c81dd7.json" speed="1.0" autoplay="{{true}}" repeatCount="-1" />
        </view>
    </block>
    <block a:elif="{{showLottie === 1}}">
         <view class="etc-novice-guide-lottie2-out">
            <lottie id="lottie-step2" class="etc-novice-guide-lottie2" path="https://gw.alipayobjects.com/os/basement_prod/1874be4f-1945-4e60-91ad-c58487e69dbd.json" speed="1.0" autoplay="{{true}}" repeatCount="-1" />
        </view>
    </block>
    <block a:else>
         <view class="etc-novice-guide-lottie3-out">
            <lottie id="lottie-step3" class="etc-novice-guide-lottie3" path="https://gw.alipayobjects.com/os/basement_prod/7728bce8-1dc5-4a51-a729-f9decbe3fbec.json" speed="1.0" autoplay="{{true}}" repeatCount="-1" />
        </view>
    </block>
    <view>
        <etc-novice-guide ref="saveRef" data="{{item1}}" onClickStep="onClickStep" onClickBottomText="onClickBottomText" onConfirm="onConfirm"/>
    </view>
</view>
Page({
  data: {
    bgImage1: 'https://gw.alipayobjects.com/mdn/industry_l/afts/img/A*i9lcQI-9VEQAAAAAAAAAAABkARQnAQ',
    bgImage2: 'https://gw.alipayobjects.com/mdn/industry_l/afts/img/A*xEPYS5KvzGEAAAAAAAAAAABkARQnAQ',
    bgImage: '',
    showLottie: 0,
    confirmData: {
      title: '确认设备已固定',
      subTitle: '激活后请勿拆卸移动,否则将失效',
      cancelButtonText: '取消',
      confirmButtonText: '确认已固定'
    },
    item1: [
      {
        title: '车辆熄火,开启手机蓝牙',
        subTitle: '避免手机连接车载蓝牙,安卓手机打开GPS定位增强蓝牙型号',
        preText: '上一步',
        midText: '1/3',
        nextText: '下一步',
        bottomText: ['我的客服'],
        audio: 'https://gw.alipayobjects.com/mdn/industry_l/afts/file/A*xfpQRawS3lwAAAAAAAAAAABkARQnAQ',
      },
      {
        title: '安装ETC设备',
        subTitle: '固定后请勿将ETC设备拆下,以免失效',
        preText: '上一步',
        midText: '2/3',
        nextText: '下一步',
        bottomText: ['常见问题', "安装指南"],
        confirmation: true,
        audio: 'https://gw.alipayobjects.com/mdn/industry_l/afts/file/A*fUB-R7T6phMAAAAAAAAAAABkARQnAQ',
      },
      {
        title: '开启ETC设备蓝牙',
        subTitle: '芯片卡朝上插入后,按下按钮蓝灯闪烁',
        preText: '上一步',
        midText: '3/3',
        nextText: '立即激活',
        bottomText: ['常见问题', "安装指南"],
        audio: 'https://gw.alipayobjects.com/mdn/industry_l/afts/file/A*yHDHRL3vAE8AAAAAAAAAAABkARQnAQ',
      }
    ],
  },
  onLoad() {
    // 开始是背景图1
    this.setData({
      bgImage: this.data.bgImage1
    })
  },
  saveRef(ref) {
    this.noticeRef = ref;
  },
  savePopRef(ref) {
    this.popRef = ref;
  },
  /**
   * 返回 step 切换的状态
   */
  onClickStep(val) {
    console.log('onClickStep:', val)
    // 设置背景图
    if (val.fromStep === 0 && val.toStep === 1) {
      this.setData({
        bgImage: this.data.bgImage2
      })
    }
    if (val.fromStep === 1 && val.toStep === 0) {
      this.setData({
        bgImage: this.data.bgImage1
      })
    }
    // 设置播放的动画
    this.setData({
      showLottie: val.toStep
    })
  },
  /**
   * 点击底部文案
   * @param {*} val
   */
  onClickBottomText(val) {
    console.log('onClickBottomText:', val)
  },
  /**
   * 进行下一步前需要确认
   * @param {*} val
   */
  onConfirm(val) {
    console.log('onConfirm:', val);
    // 调用弹出窗组件的显示
    this.popRef.handleShow();
  },
  /**
   * 弹出窗关闭
   */
  onPopClose(e) {
    console.log('onPopClose:', e);
  },
  /**
   * 弹出窗取消
   */
  onPopCancel(e) {
    console.log('onPopCancel:', e);
  },
  /**
   * 弹出窗确认
   */
  onPopConfirm(e) {
    console.log('onPopConfirm:', e);
    // 调用步骤组件的下一步
    this.noticeRef.next();
  },
});
.etc-novice-guide-page {
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    background-color:rgb(242, 242, 242);
    height:100vh;
    box-sizing:border-box;
    //background-image:url(https://gw.alipayobjects.com/mdn/industry_l/afts/img/A*i9lcQI-9VEQAAAAAAAAAAABkARQnAQ);
    background-size:100%;
}


.etc-novice-guide-page-rectangle{
    position: absolute;
    top:69.28rpx;
    left:352rpx;
    width:166rpx;
    height:103rpx;
}


.etc-novice-guide-page-arrow{
    position: absolute;
    top:196.96rpx;
    left:406.59rpx;
    width:70rpx;
    height:70rpx;
}


.etc-novice-guide-page-card {
    position: absolute;
    top:277.28rpx;
    left:340rpx;
    width:195rpx;
    height:140rpx;
}
.etc-novice-guide-lottie1-out {
    position:absolute;
    top:221rpx;
}
.etc-novice-guide-lottie1 {
    width:750rpx;
    height:580rpx;
}


.etc-novice-guide-lottie2-out {
    position:absolute;
    top:139rpx;
}


.etc-novice-guide-lottie2 {
    width:750rpx;
    height:400rpx;
}


.etc-novice-guide-lottie3-out {
    position:absolute;
    top:261rpx;
}


.etc-novice-guide-lottie3 {
    width:750rpx;
    height:516rpx;
}

属性

属性 类型 默认值 必填 描述
data Array [] 接收一个数组,其中 title 属性是主标题;subTitle 是副标题;preText 是上一步按钮的文案;midText 是两个按钮中间的描述性文案;nextText 是下一步按钮的文案;bottomText 接收一个数组,为组件底部文案;confirmation 属性如果存在且为 true,则组件在该页直接点击下一步不会切换,需要外部确认,在组件外部调用组件的 next 方法即可切到下一页;audio 接收一个音频链接,若不传则不会播放音频;
onClickStep Function () => {} 返回 step 切换的状态,返回值形式为 { fromStep: 0, toStep: 1 },fromStep 为来源页面数组下标,toStep 为前往的数组下标。
onClickBottomText Function () => {} 点击底部文案返回的状态,返回值形式为 { content: "常见问题", index: 0},content 为点击的底部文案文字,index 为文案数组的下标。
onConfirm Function () => {} 当该页面需要外部确认时返回值,返回值为 { index: 1, msg: '该步需要组件外确认,确认后调用组件的 next 方法' },其中 index 为该页的数组下标。
containerClassName String "" 容器类名
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号