0
点赞
收藏
分享

微信扫一扫

短信和注册前端

1. 注册页面   94

短信和注册前端_服务器

1.1 添加路由   94

index.js

短信和注册前端_服务器_02

{
    path: '/page/user/register',
    name: 'RegisterView',
    component: () => import('../views/ProductDetail.vue')
  }

1.2 添加按钮  94

Header.vue

短信和注册前端_服务器_03

<div class="public-head-right">
        <a href="login.html" target="_blank">登录</a>
        <a href="javascript:void(0);" @click="goLink('/page/user/register',)">注册</a>
      </div>

1.3 安装md5  和qs 100

1.3.1 npm install js-md5 --save   100

短信和注册前端_sed_04

要使用的文件,import md5 from 'js-md5';

短信和注册前端_验证码_05

1.3.2 安装 qs  , 项目根目录下执行:  npm i qs --save  100

短信和注册前端_sed_06

并且定义发送请求的dopost

短信和注册前端_sed_07

1.3 添加页面   94-101

LoginView.vue   101

登录路由

短信和注册前端_sed_08

登录界面

<template>
  <div>
    <h1>登陆页面</h1>
  </div>
</template>

<script>
export default {
  name: "LoginView"
}
</script>

<style scoped>

</style>

前端不做重点,直接赋值即可

RegisterView.vue

<template>
  <div>
    <Header></Header>
    <div class="login-content">
      <div class="login-flex">
        <div class="login-left">
          <p>万民用户知心托付    <span>{{ historyAvgRate }}%</span>历史年化收益</p>
          <p>千万级技术研发投入    亿级注册资本平台 </p>
        </div>
        <!---->
        <div class="login-box">
          <h3 class="login-title">用户注册</h3>
          <form action="" id="register_Submit">
            <div class="alert-input">
              <input type="text" class="form-border user-num" @blur="checkPhone" v-model="phone" name="mobile"
                     placeholder="请输入11位手机号">
              <div class="err">{{ phoneErr }}</div>
              <p class="prompt_num"></p>
              <input type="password" placeholder="请输入6-20位英文和数字混合密码"
                     class="form-border user-pass" autocomplete name="password" v-model="password"
                     @blur="checkPassword">
              <div class="err">{{ passwordErr }}</div>
              <p class="prompt_pass"></p>
              <div class="form-yzm form-border">
                <input class="yzm-write" type="text" name="" placeholder="输入短信验证码" v-model="code" @blur="checkCode">
                <input class="yzm-send" type="button" v-bind:value="yzmText" @click="requestSmsCode" id="yzmBtn">
              </div>
              <div class="err">{{ codeErr }}</div>

              <p class="prompt_yan"></p>
            </div>
            <div class="alert-input-agree">
              <input type="checkbox" v-model="agree">我已阅读并同意<a href="javascript:;" target="_blank">《动力金融网注册服务协议》</a>
            </div>
            <div class="alert-input-btn">
              <input type="button" class="login-submit" @click="requestUserRegister" value="注册">
            </div>
          </form>
          <div class="login-skip">
            已有账号? <a href="javascript:void(0)" @click="goLink('/page/user/login')">登录</a>
          </div>
        </div>
      </div>
    </div>
    <Footer></Footer>
  </div>
</template>

<script>
import Header from "@/components/common/Header";
import Footer from "@/components/common/Footer";
import {doGet, doPost} from "@/api/httpRequest";
import layx from "vue-layx";
import md5 from 'js-md5';  //导入MD5的库   100

export default {
  name: "RegisterView",
  components: {
    // eslint-disable-next-line vue/no-unused-components
    Header,
    // eslint-disable-next-line vue/no-unused-components
    Footer
  },
  data() {
    return {
      historyAvgRate: 0.0,
      phone: '13812345699',
      phoneErr: '',
      password: '111aaa',
      passwordErr: '',
      code: '',
      codeErr: '',
      yzmText: '获取验证码',
      isSend: false,
      agree: false
    }
  },
  mounted() {
    //向服务器发起请求,获取数据,更新页面
    doGet('/v1/plat/info').then(resp => {
      if (resp) {
        this.historyAvgRate = resp.data.data.historyAvgRate;
      }
    })
  },
  methods: {
    goLink(url,params){
      //使用router做页面跳转, vue中的对象
      this.$router.push({
        path: url,
        query: params
      })
    },
    checkPhone() { //95
      if (this.phone == '' || this.phone == undefined) {
        this.phoneErr = '请输入手机号';
      } else if (this.phone.length != 11) {
        this.phoneErr = '手机号长度不足11位';
      } else if (!/^1[1-9]\d{9}$/.test(this.phone)) {
        this.phoneErr = '手机号格式不正确'
      } else {
        this.phoneErr = '';
        //向服务器发起请求,验证手机号是否可以注册
        doGet('/v1/user/phone/exists', {phone: this.phone})
            .then(resp => {
              if (resp && resp.data.code == 1000) {
                //手机号可以注册
                console.log("手机号可以注册")
              } else {
                this.phoneErr = resp.data.msg;
              }
            })
      }
    },
    checkPassword() {//96
      if (this.password == '' || this.password == undefined) {
        this.passwordErr = '请输入密码';
      } else if (this.password.length < 6 || this.password.length > 20) {
        this.passwordErr = '密码长度是6-20位';
      } else if (!/^[0-9a-zA-Z]+$/.test(this.password)) {
        this.passwordErr = '密码只能使用数字和字母';
      } else if (!/^(([a-zA-Z]+[0-9]+)|([0-9]+[a-zA-Z]+))[a-zA-Z0-9]*/.test(this.password)) {
        this.passwordErr = '密码是数字和字母的混合';
      } else {
        this.passwordErr = '';
      }
    },
    checkCode() {//97
      if (this.code == '' || this.code == undefined) {
        this.codeErr = '必须输入验证码';
      } else if (this.code.length != 4) {
        this.codeErr = '验证码是4位的';
      } else {
        this.codeErr = '';
      }
    },
    requestSmsCode() {  //97
      //isSend:true, 发送验证码, 倒计时正在执行中。  false可以重新发送验证码  98

      if (this.isSend == false) {
        this.checkPhone();
        if (this.phoneErr == '') {
          this.isSend = true;
          let btn = document.getElementById("yzmBtn");
          btn.style.color = 'red';
          //处理倒计时   97
          let second = 5; //倒计时时间,默认是60秒
          setInterval(() => {
            if (second <= 1) {   //98
              btn.style.color = '#688EF9';
              this.yzmText = "获取验证码";
              this.isSend = false;
            } else {
              second = second - 1;
              this.yzmText = second + "秒后重新获取";
            }
          }, 1000)
          //发起请求,给手机号发送验证码   99
          doGet('/v1/sms/code/register', {phone: this.phone}).then(resp => {
            if (resp && (resp.data.code == 1000 || resp.data.code == 1006)) {
              layx.msg('短信已经发送了', {dialogIcon: 'success', position: 'ct'});
            }
          })

        }
      }
    },
    requestUserRegister() {  //注册  100-101
      this.checkPhone();
      this.checkPassword();
      this.checkCode();
      if (this.phoneErr == '' && this.passwordErr == '' && this.codeErr == '') {
        if (this.agree) {
          //数据正确,提交注册请求
          //前端密码的md5()
          let newPassword = md5(this.password);
          doPost('/v1/user/register', {
            phone: this.phone,
            pword: newPassword,
            scode: this.code
          }).then(resp => {
            if (resp && resp.data.code == 1000) {
              //跳转登录页面
              this.$router.push({
                path: "/page/user/login"
              })
            }
          })
        } else {
          layx.msg("请阅读注册协议",{dialogIcon:'warn',position:'ct'});
        }


      }
    }
  }
}
</script>

<style scoped>
.err {
  color: red;
  font-size: 18px;
}
</style>

测试  101

启动前后端

输入参数,点击获取验证码

短信和注册前端_服务器_09

短信和注册前端_服务器_10

redis中的验证码

短信和注册前端_服务器_11

看看数据库数据添加成功

短信和注册前端_sed_12

短信和注册前端_sed_13

注册成功,跳转登陆界面

短信和注册前端_验证码_14


举报

相关推荐

0 条评论