Register.vue 5.8 KB
Newer Older
yma16's avatar
yma16 已提交
1
<template>
Y
yma16 已提交
2
  <div class="register" style="text-align: center; margin: 0 auto">
yma16's avatar
yma16 已提交
3
    <el-card class="box-card" style="text-align: center; margin: 60px auto">
Y
yma16 已提交
4
      <!-- 弹出一个警告框 -->
yma16's avatar
yma16 已提交
5

Y
yma16 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
      <el-form
        :model="ruleForm"
        status-icon
        :rules="rules"
        ref="ruleForm"
        label-width="100px"
        class="demo-ruleForm"
        style="text-align: center; margin: 0 auto"
      >
        <el-form-item>
          <!-- 弹出一个警告框 -->
          <el-alert
            title="这个用户名已经被使用!"
            type="warning"
            v-if="register_error"
          >
          </el-alert>
          <!-- 成功注册! -->
yma16's avatar
yma16 已提交
24

Y
yma16 已提交
25 26 27 28 29 30 31
          <el-alert title="欢迎!!!" type="success" v-if="register_success">
          </el-alert>
          <p style="font-size: 30px">注册</p>
          <el-avatar
            src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png"
          ></el-avatar>
          <!-- <svg
yma16's avatar
yma16 已提交
32 33 34 35 36
          class="icon"
          aria-hidden="true"
        >
          <use xlink:href="#iconshejitouxiangai"></use>
        </svg> -->
Y
yma16 已提交
37
        </el-form-item>
yma16's avatar
yma16 已提交
38

Y
yma16 已提交
39 40 41
        <el-form-item label="账号" prop="name">
          <el-input v-model="ruleForm.name"></el-input>
        </el-form-item>
yma16's avatar
yma16 已提交
42

Y
yma16 已提交
43 44 45 46 47
        <el-form-item label="密码" prop="pass">
          <el-input
            type="password"
            v-model="ruleForm.pass"
            autocomplete="off"
yma16's avatar
yma16 已提交
48
            show-password
Y
yma16 已提交
49 50
          ></el-input>
        </el-form-item>
yma16's avatar
yma16 已提交
51
        <el-form-item label="密码" prop="checkPass">
Y
yma16 已提交
52 53 54 55
          <el-input
            type="password"
            v-model="ruleForm.checkPass"
            autocomplete="off"
yma16's avatar
yma16 已提交
56
            show-password
Y
yma16 已提交
57 58 59 60 61 62 63 64 65 66
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="submitForm('ruleForm')"
            >注册</el-button
          >
          <el-button @click="resetForm('ruleForm')">清空</el-button>
        </el-form-item>
        <el-form-item>
          <el-link target="_blank" @click="$router.push({ path: '/login' })"
yma16's avatar
yma16 已提交
67
            >已有账号?</el-link
Y
yma16 已提交
68 69 70 71 72 73
          >
          <el-link type="primary" @click="$router.push({ path: '/login' })"
            >去登录</el-link
          >
        </el-form-item>
      </el-form>
yma16's avatar
yma16 已提交
74
    </el-card>
Y
yma16 已提交
75
  </div>
yma16's avatar
yma16 已提交
76 77 78
</template>

<script>
Y
yma16 已提交
79
import axios from "axios";
yma16's avatar
yma16 已提交
80
export default {
Y
yma16 已提交
81 82 83
  name: "Register",
  data() {
    const checkName = (rule, value, callback) => {
yma16's avatar
yma16 已提交
84
      if (!value) {
Y
yma16 已提交
85
        return callback(new Error("账号不能为空"));
yma16's avatar
yma16 已提交
86 87 88 89 90 91
      }
      setTimeout(() => {
        // if (!Number.isInteger(value)) {
        //   callback(new Error('请输入密码'));
        // } if {
        if (value.length < 2) {
Y
yma16 已提交
92
          callback(new Error("名字至少两位"));
yma16's avatar
yma16 已提交
93
        } else {
Y
yma16 已提交
94
          callback();
yma16's avatar
yma16 已提交
95
        }
Y
yma16 已提交
96 97 98 99 100
      }, 1000);
    };
    const validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
yma16's avatar
yma16 已提交
101
      } else {
Y
yma16 已提交
102 103
        if (this.ruleForm.checkPass !== "") {
          this.$refs.ruleForm.validateField("checkPass");
yma16's avatar
yma16 已提交
104
        }
Y
yma16 已提交
105
        callback();
yma16's avatar
yma16 已提交
106
      }
Y
yma16 已提交
107 108 109 110
    };
    const validatePass2 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
yma16's avatar
yma16 已提交
111
      } else if (value !== this.ruleForm.pass) {
Y
yma16 已提交
112
        callback(new Error("两次输入密码不一致!"));
yma16's avatar
yma16 已提交
113
      } else {
Y
yma16 已提交
114
        callback();
yma16's avatar
yma16 已提交
115
      }
Y
yma16 已提交
116
    };
yma16's avatar
yma16 已提交
117 118 119 120
    return {
      register_success: false,
      register_error: false,
      // baseurl: "http://127.0.0.1/",
Y
yma16 已提交
121
      baseurl: "/api/",
Y
yma16 已提交
122
      // baseurl: 'http://yongma16.xyz/',
yma16's avatar
yma16 已提交
123
      ruleForm: {
Y
yma16 已提交
124 125 126
        pass: "",
        checkPass: "",
        name: "",
yma16's avatar
yma16 已提交
127 128
      },
      rules: {
Y
yma16 已提交
129 130 131 132 133
        pass: [{ validator: validatePass, trigger: "blur" }],
        checkPass: [{ validator: validatePass2, trigger: "blur" }],
        name: [{ validator: checkName, trigger: "blur" }],
      },
    };
yma16's avatar
yma16 已提交
134 135
  },
  methods: {
Y
yma16 已提交
136
    submitForm(formName) {
yma16's avatar
yma16 已提交
137
      this.$refs[formName].validate((valid) => {
Y
yma16 已提交
138
        const that = this;
yma16's avatar
yma16 已提交
139 140 141
        if (valid) {
          // 提交数据
          // alert("yes submit!");
Y
yma16 已提交
142 143
          that.register_success = false; // 初始化register的状态
          that.register_error = false;
yma16's avatar
yma16 已提交
144
          axios
Y
yma16 已提交
145
            .post(that.baseurl + "user/register/", {
yma16's avatar
yma16 已提交
146
              // 传递的名字和密码
Y
yma16 已提交
147 148 149
              name: that.ruleForm.name,
              password: that.ruleForm.pass,
            })
yma16's avatar
yma16 已提交
150 151
            .then(function (res) {
              if (res.data.code === 0) {
Y
yma16 已提交
152 153 154 155 156 157
                document.cookie = `user=${that.ruleForm.name}`;
                that.register_error = true;
                that.$message({
                  message: "名称重复" + that.ruleForm.name + "!",
                  type: "error",
                });
yma16's avatar
yma16 已提交
158
              } else {
Y
yma16 已提交
159 160 161 162 163
                that.register_success = true;
                that.$message({
                  message: "注册成功,欢迎您," + that.ruleForm.name + "!",
                  type: "success",
                });
yma16's avatar
yma16 已提交
164 165 166 167
              }
            })
            .catch(function (res) {
              // 获取res中的name
Y
yma16 已提交
168 169 170 171 172
              that.$message({
                message: "注册失败" + that.ruleForm.name + "!",
                type: "error",
              });
            });
yma16's avatar
yma16 已提交
173
        } else {
Y
yma16 已提交
174 175 176 177 178
          that.$message({
            message: "注册失败" + that.ruleForm.name + "!",
            type: "error",
          });
          return false;
yma16's avatar
yma16 已提交
179
        }
Y
yma16 已提交
180
      });
yma16's avatar
yma16 已提交
181
    },
Y
yma16 已提交
182 183 184 185 186
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
  },
};
yma16's avatar
yma16 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
</script>

<style scoped>
.text {
  align-content: center;
  display: flex;
  margin: 0 auto;
  font-size: 14px;
}

.item {
  display: flex;
  margin: 0 auto;
  /* width: 50%; */
}

.box-card {
  align-self: center;
  align-content: center;
  display: flex;
  width: 450px;
  /* padding-left:25%; */
  margin: 0 25%;
  opacity: 1;
  margin-top: 80px;
  background-color: #ffffff;
}
</style>