| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- // components/send-code/send-code.js
- let setInter = null;
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- phone: {
- type: String,
- value: ' '
- },
- url: {
- type: String,
- value: ''
- },
- reset: {
- type: String,
- }
- },
- observers: {
- 'reset': function() {
- this.setData({
- code: []
- })
- }
- },
- /**
- * 组件的初始数据
- */
- data: {
- up: true,
- speed: 1000,
- countdown: '点击发送验证码',
- code: [],
- numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
- keybord: [],
- time: 60
- },
- ready() {
- // this.countdown();
- const arr = this.data.numbers;
- const nums = [];
- for (let i = 0; i < 4; i++) {
- nums.push(arr.slice(i * 3, (i + 1) * 3))
- }
- this.setData({
- keybord: nums,
- up: false
- })
- },
- detached() {
- clearInterval(setInter)
- },
- /**
- * 组件的方法列表
- */
- methods: {
- keyboard(e) {
- const {
- value
- } = e.currentTarget.dataset;
- const code = this.data.code;
- if (code.length < 6) {
- code.push(value);
- this.setData({
- code
- })
- if (code.length === 6) {
- this.triggerEvent('done', {
- code: this.data.code.join('')
- })
- // wx.navigateTo({
- // url: this.data.url,
- // success: () => {
- // this.setData({
- // code: []
- // })
- // }
- // })
- }
- }
- },
- del() {
- const code = this.data.code;
- code.pop();
- this.setData({
- code
- })
- },
- send() {
- const time = this.data.time;
- if (time === 60) {
- this.countdown();
- this.setData({
- up: false
- })
- this.triggerEvent('send')
- }
- },
- cancel() {
- this.setData({
- up: true
- })
- },
- showFlash(e) {
- this.setData({
- up: false
- })
- },
- countdown() {
- let _time = this.data.time;
- _time--;
- this.setData({
- time: _time,
- countdown: `${_time}s后重新发送`
- })
- setInter = setInterval(() => {
- let _time = this.data.time;
- if (_time > 1) {
- _time--;
- this.setData({
- time: _time,
- countdown: `${_time}s后重新发送`
- })
- } else {
- clearInterval(setInter);
- this.setData({
- time: 60,
- countdown: `重新发送`
- }, _ => {
- setInter = null;
- })
- }
- }, this.data.speed)
- }
- }
- })
|