購物商城系統設計與實現總結_註冊功能的實現

用戶點擊註冊按鈕會跳轉註冊界面,按照系統提示要求,填寫用戶名、密碼和一些非必填的個人信息以及驗證碼後,點擊註冊按鈕即可進行註冊。各輸入框中會有輸入提示,並且輸入框在失焦時就會立即進行判斷填寫內容是否符合提示要求。在輸入不符合要求時,有錯誤的對應輸入框下會顯示紅色提示信息,當輸入修改正確後信息會自動隱藏。

 

<template>
  <div id="Register">
    <div class="reg_box">
      <!-- logo區域 -->
      <div class="avatar_box">
        <img src="@/assets/imgs/logo.jpg" alt />
      </div>
      <!-- 註冊表單區域 -->
      <form class="reg_form">
        <table>
          <tr>
            <td><span>用戶名</span></td>
            <td>
              <input type="text" v-model="username" placeholder="請輸入用戶名" @blur="check_username" v-focus>
              <span class="error_tip" v-show="error_username">{{tip_username}}</span>
            </td>
          </tr>
          <tr>
            <td><span>密碼</span></td>
            <td>
              <input type="password" v-model="pwd1" placeholder="請輸入密碼" @blur="check_password(pwd1)">
              <span class="error_tip" v-show="error_password">{{tip_password}}</span>
            </td>
          </tr>
          <tr>
            <td><span>確認密碼</span></td>
            <td>
              <input type="password" v-model="pwd2" placeholder="請再次輸入密碼進行確認" @blur="check_confirm">
              <span class="error_tip" v-show="error_confirm">{{tip_confirm}}</span>
            </td>
          </tr>
          <tr>
            <td><span>姓名</span></td>
            <td>
              <input type="text" v-model="name" placeholder="請輸入真實姓名">
            </td>
          </tr>
          <tr>
            <td><span>聯繫方式</span></td>
            <td>
              <input type="text" v-model="phone" placeholder="請輸入電話或手機號碼">
            </td>
          </tr>
          <tr>
            <td><span>地址</span></td>
            <td><input type="text" v-model="place" placeholder="請輸入地址"></td>
          </tr>
          <tr>
            <td><span>郵箱</span></td>
            <td><input type="text" v-model="email" placeholder="請輸入Email"></td>
          </tr>
          <tr>
            <td><span>驗證碼</span></td>
            <td>
              <input type="text" v-model="code" placeholder="請輸入右圖所示驗證碼" id="code_input" @blur="check_code">
              <div class="pic_code" :style="{backgroundColor:gencode.bgColor,color:gencode.codeColor}" @click="generatedCode()">{{gencode.codeNumber}}</div>
              <span class="error_tip" v-show="error_code">{{tip_code}}</span>
            </td>
          </tr>
        </table>
      </form>
      <!-- 按鈕區 -->
      <div class="btns">
        <button @click="register">註冊</button>
        <button @click="resetRegForm">重置</button>
      </div>
    </div>
  </div>
</template>

<script>
import {addRegisterData} from '../../api/index'
// 混入屬性,驗證碼生成方法複用
import {genCodeMixin} from '@/assets/js/mixin'
export default {
  name: 'Register',
  // 混入對象
  mixins:[genCodeMixin],
  data() {
    return {
      username: '',
      password: '',
      name: '',
      phone: '',
      place: '',
      email: '',
      //提示標記
      error_username:false,
      error_password:false,
      error_confirm:false,
      //兩次密碼確認
      pwd1: '',
      pwd2: '',
      //錯誤提示信息
      tip_username:'',
      tip_password:'',
      tip_confirm:'',
    }
  },
  mounted() {
    //生成圖形驗證碼
    this.generatedCode()
  },
  methods: {
    //檢測密碼
    check_password(password) {
      let re = /^[a-zA-Z0-9]{8,20}$/;
      if(re.test(password)){
        this.error_password=false;
      }else {
        this.tip_password='注意:密碼必須由8-20個大小寫字母、數字組成';
        this.error_password=true;
      }
    },
    //檢測確認密碼
    check_confirm() {
      if(this.pwd2 != this.pwd1){
        this.error_confirm=true;
        this.tip_confirm='兩次輸入的密碼不一致'
      }else{
        this.error_confirm=false;
        //兩次一致才賦給用於提交的表單內
        this.password = this.pwd1
      }
    },
    // 提交註冊
    register() {
      if(this.error_username || this.error_password || this.error_confirm || this.error_code){
        alert('請將有誤信息修改正確後再提交')
      }else{
        addRegisterData({
          username:this.username,
          password:this.password,
          name:this.name,
          phone:this.phone,
          place:this.place,
          email:this.email
        })
        .then(res => {
          if(res.message == '註冊成功'){
            alert('註冊成功!')
            this.$router.push('/home/first')
          }else{
            alert('此用戶名已存在!')
          }
        })
        .catch(error => {
          alert('error')
        })
      }
    },
    //點擊重置按鈕,重置註冊表單
    resetRegForm() {
      this.username = ''
      this.pwd1 = ''
      this.pwd2 = ''
      this.name = ''
      this.phone = ''
      this.place = ''
      this.email = ''
      this.code = ''
    }
  }
}
</script>

<style scoped>
/* 驗證碼和按鈕樣式複用 */
@import '../../assets/css/loginRegis.css';
#Register {
  width: 100%;
  height: 800px;
  background-color: #ff8700;
}
.reg_box {
  width: 540px;
  height: 660px;
  background-color: #fff;
  border-radius: 3px;
  position: absolute;
  left: 50%;
  top: 30%;
  transform: translate(-50%);
}
/* 註冊表單區域 */
.reg_form {
  left: 10px;
}
.reg_form table tr td:nth-child(1) span{
  height: 35px;
  display: block;
  text-align: right;
  padding-right: 15px;
  margin-bottom: 15px;
}
.reg_form table tr td:nth-child(2){
  height: 60px;
  vertical-align: top;
}
form input {
  height: 35px;
  width: 360px;
  border: 1px solid #aaa;
  border-radius: 5px;
  padding-left: 15px;
}
</style>

 註冊界面的用戶名,密碼等輸入信息的格式是否符合系統規定要求,是通過對應的正則表達式來判斷的。如果信息有誤,會在對應輸入框下顯示紅色提示文字,提示用戶修改。在點擊註冊按鈕進行註冊時,系統會先判斷所填信息是否符合要求,都無誤後纔會提交。

註冊頁提供的驗證碼是基於Math.random()*n隨機生成數字,利用Ascii碼生成數字和字母,`rgb(${num1},${num2},${num3})`隨機生成字體和背景顏色,在點擊、刷新、輸入錯誤時都會自動更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章