1.实现效果

             

 2.代码

      html

        

<template>
  <el-form
    :model="ruleForm"
    :rules="rules"
    ref="ruleForm"
    class="demo-ruleForm"
  >
    <el-form-item label="" prop="name"
      ><el-input
        type="text"
        autocomplete="off"
        v-model="ruleForm.name"
        prefix-icon="el-icon-user-solid"
        placeholder="请输入用户名"
      ></el-input
    ></el-form-item>
    <el-form-item label="" prop="password1"
      ><el-input
        type="password"
        autocomplete="off"
        v-model="ruleForm.password1"
        prefix-icon="el-icon-lock"
        placeholder="请输入密码"
      ></el-input
    ></el-form-item>
    <el-form-item label="" prop="password2"
      ><el-input
        type="password"
        autocomplete="off"
        v-model="ruleForm.password2"
        prefix-icon="el-icon-lock"
        placeholder="请再次输入密码"
      ></el-input
    ></el-form-item>
    <el-form-item class="btns">
      <el-button type="primary" @click="submitForm('ruleForm')">注册</el-button>
      <el-button @click="resetForm('ruleForm')">重置</el-button>
    </el-form-item>
  </el-form>
</template>

js

        验证用户名后端返回数据

                

<script>
//引入接口
import { userRules, register } from "./../api/login";
export default {
  data() {
    var validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        if (this.ruleForm.password2 !== "") {
          this.$refs.ruleForm.validateField("password2");
        }
        callback();
      }
    };

    var validatePass2 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
      } else if (value !== this.ruleForm.password1) {
        callback(new Error("两次输入密码不一致!"));
      } else {
        callback();
      }
    };
    var checkname = (rule, value, callback) => {
      if (value != "") {
          if(this.nameRules()){
            callback(new Error("用户名已存在,请重新输入"))
          }else{
            callback()
          }
      
      }
      callback();
    };

    return {
      activeName:"second",
      ruleForm: {
        name: "",
        password1: "",
        password2: "",
        email:""
      },
      rules: {
        name: [
          { required: true, message: "请输入您的名称", trigger: "blur" },
          {
            min: 2,
            max: 25,
            message: "长度在 2 到 25 个字符",
            trigger: "blur",
          },
          { validator: checkname, trigger: "blur" },
        ],
        password1: [
          { required: true, validator: validatePass, trigger: "blur" },
        ],
        password2: [
          { required: true, validator: validatePass2, trigger: "blur" },
        ],
      },
    };
  },
  methods: {
    submitForm(formName) {
      const data = {
        name : this.ruleForm.name,
        password1:this.ruleForm.password1,
        password2:this.ruleForm.password2,
        email:this.ruleForm.email
      }
      this.$refs[formName].validate((valid) => {
        if (valid) {
          register(data).then((res) => {
            if (res.message == "ok") {
              this.$message.success("注册成功");
              this.resetForm(formName)
            } else {
              this.$message.error("注册失败");
            }
          });
        } else {
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    //验证用户名是否存在
    nameRules() {
      let params = {
        name: this.ruleForm.name,
      };
      userRules(params).then((res) => {
          if(res.message == 'ok'){
            return false
          }else{
            this.$message.error("用户名已存在,请重新输入!")
            this.ruleForm.name = ""
          }
      })
    },
  }
};
</script>
Logo

前往低代码交流专区

更多推荐