• vue实现发送验证码60秒


    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>

    <body>
        <van-cell-group class="home-congratulation-from">
            <van-field ref="phone" type="tel" onkeyup="this.value=this.value.replace(/[^d.]/g,'');"
                keyboardType="UIKeyboardTypeDecimalPad;" v-model="phone" maxlength="11" placeholder="请输入手机号" />
            <div>
                <van-field type="tel" onkeyup="this.value=this.value.replace(/[^d.]/g,'');"
                    keyboardType="UIKeyboardTypeDecimalPad;" v-model="verifycode" maxlength="6" center clearable
                    placeholder="请输入验证码" />
                <van-button :color="(types==1?`#09BB07`:`#2480FF`)" class="home-congratulation-from-button"
                    @click="sendVerifycode()" type="primary" round :disabled="!disabledCodeBtn">{{codeText}}</van-button>
            </div>
            <div>
                <van-button :color="(types==1?`#09BB07`:`#2480FF`)" slot="button" type="primary" round block
                    @click="login()" native-type="submit">立即领取</van-button>
            </div>
        </van-cell-group>

        <script>
            export default {
                data() {
                    return {
                        phone: "",
                        verifycode: "",
                        codeText: "获取验证码",
                        disabledCodeBtn: true,
                    }
                },
                methods: {
                    // 向后台要验证码方法
                    sendVerifycode() {
                        if (this.verifyPhone()) {
                            Toast(this.verifyPhone());
                        } else {
                            let data = {
                                phone: this.phone
                            };
                            axios
                                .post(store.state.baseURL + "xxxxxxx", data, {
                                    headers: {
                                        "content-type": "application/x-www-form-urlencoded"
                                    }
                                })
                                .then(res => {
                                    console.log(res);
                                    if (res.data.error == 0) {
                                        alert(res.data.error_reason);
                                        this.countDown(60);
                                    } else if (res.data.error != 0) {
                                        alert(res.data.error_reason);
                                    }
                                })
                                .catch(error => {
                                    console.log(error);
                                });
                        }
                    },
                    // 表单校验方法
                    verifyPhone() {
                        if (!this.phone) {
                            return "请输入手机号";
                        } else if (this.phone.length !== 11) {
                            return "请输入11位手机号";
                        } else {
                            return false;
                        }
                    },
                    // 倒计时方法
                    countDown(time) {
                        if (time === 0) {
                            this.disabledCodeBtn = true;
                            this.codeText = "获取验证码";
                            return;
                        } else {
                            this.disabledCodeBtn = false;
                            this.codeText = "重新发送(" + time + ")";
                            time--;
                        }
                        setTimeout(() => {
                            this.countDown(time);
                        }, 1000);
                    },
                    async login() {
                        if (this.verifyPhone()) {
                            Toast(this.verifyPhone());
                        } else if (this.verifycode == "") {
                            Toast("请输入验证码");
                        } else {
                            let list = {
                                phone: this.phone,
                                code: this.verifycode
                            };
                            let resq = await request("xx验证验证码接口路径xx", list);
                            if (resq.error == 0) {
                                let data = {
                                    id: this.money.id,
                                    phone: this.phone,
                                    money: this.money.money,
                                    total_money: this.total_amount,
                                    uniqueid: this.user_id,
                                    type: this.types
                                };
                                let res = await request(
                                    "xx接口路径xx",
                                    data
                                );
                                if (res.error == 0) {
                                    Toast(res.error_reason);
                                    this.$router.push({
                                        path: "要跳转的页面"
                                    });
                                } else {
                                    Toast(res.error_reason);
                                }
                            } else {
                                Toast(resq.error_reason);
                            }

                        }
                    }
                }
            }
        </script>
    </body>

    </html>
  • 相关阅读:
    markdown转HTML,目录生成
    schedule与scheduleAtFixedRate之Timer源码分析
    rocketmq刷盘过程
    rocketmq消息存储概述
    Cassandra修改集群名称
    Cassandra读写性能测试
    rocketmq--push消费过程
    rocketmq消费负载均衡--push消费为例
    go反射实例
    JUnit4参数的使用
  • 原文地址:https://www.cnblogs.com/1609359841qq/p/13272014.html
Copyright © 2020-2023  润新知