Login.vue 4.9 KB
Newer Older
yma16's avatar
yma16 已提交
1
<template>
Y
yma16 已提交
2 3 4 5 6 7 8 9 10 11 12 13
  <div class="login" style="text-align: center">
    <el-card class="box-card" style="text-align: center">
      <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><p style="font-size: 30px">登录</p></el-form-item>
yma16's avatar
yma16 已提交
14

Y
yma16 已提交
15 16 17
        <el-form-item label="账号" prop="name">
          <el-input v-model="ruleForm.name"></el-input>
        </el-form-item>
yma16's avatar
yma16 已提交
18

Y
yma16 已提交
19 20 21 22 23
        <el-form-item label="密码" prop="pass">
          <el-input
            type="password"
            v-model="ruleForm.pass"
            autocomplete="off"
yma16's avatar
yma16 已提交
24
            show-password
Y
yma16 已提交
25 26 27 28 29 30 31 32 33 34
          ></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: '/register' })"
yma16's avatar
yma16 已提交
35
            >没有账号?</el-link
Y
yma16 已提交
36 37 38 39 40 41 42
          >
          <el-link type="primary" @click="$router.push({ path: '/register' })"
            >去注册</el-link
          >
        </el-form-item>
      </el-form>
    </el-card>
yma16's avatar
yma16 已提交
43 44 45 46
  </div>
</template>

<script>
Y
yma16 已提交
47
import store from "@/store";
yma16's avatar
yma16 已提交
48
export default {
Y
yma16 已提交
49 50
  name: "Login",
  data() {
yma16's avatar
yma16 已提交
51
    const checkName = (rule, value, callback) => {
yma16's avatar
yma16 已提交
52
      if (!value) {
Y
yma16 已提交
53
        return callback(new Error("账号不能为空"));
yma16's avatar
yma16 已提交
54 55 56 57 58 59
      }
      setTimeout(() => {
        // if (!Number.isInteger(value)) {
        //   callback(new Error('请输入密码'));
        // } if {
        if (value.length < 2) {
Y
yma16 已提交
60
          callback(new Error("名字至少两位"));
yma16's avatar
yma16 已提交
61
        } else {
Y
yma16 已提交
62
          callback();
yma16's avatar
yma16 已提交
63
        }
Y
yma16 已提交
64 65
      }, 1000);
    };
yma16's avatar
yma16 已提交
66
    const validatePass = (rule, value, callback) => {
Y
yma16 已提交
67 68
      if (value === "") {
        callback(new Error("请输入密码"));
yma16's avatar
yma16 已提交
69 70 71 72
      } else {
        // if (this.ruleForm.checkPass !== '') {
        //   this.$refs.ruleForm.validateField('checkPass');
        // }
Y
yma16 已提交
73
        callback();
yma16's avatar
yma16 已提交
74
      }
Y
yma16 已提交
75
    };
yma16's avatar
yma16 已提交
76 77 78 79 80 81 82 83 84 85 86
    // var validatePass2 = (rule, value, callback) => {
    //   if (value === '') {
    //     callback(new Error('请再次输入密码'));
    //   } else if (value !== this.ruleForm.pass) {
    //     callback(new Error('两次输入密码不一致!'));
    //   } else {
    //     callback();
    //   }
    // };
    return {
      // baseurl:"http://127.0.0.1/user/login/",
Y
yma16 已提交
87
      baseurl: "/api/",
Y
yma16 已提交
88
      // baseurl: 'http://yongma16.xyz/user/login/',
yma16's avatar
yma16 已提交
89
      ruleForm: {
Y
yma16 已提交
90
        pass: "",
yma16's avatar
yma16 已提交
91
        // checkPass: '',
Y
yma16 已提交
92
        name: "",
yma16's avatar
yma16 已提交
93 94
      },
      rules: {
Y
yma16 已提交
95 96 97 98 99
        pass: [{ validator: validatePass, trigger: "blur" }],
        checkPass: [{ validator: validatePass, trigger: "blur" }],
        name: [{ validator: checkName, trigger: "blur" }],
      },
    };
yma16's avatar
yma16 已提交
100 101
  },
  methods: {
Y
yma16 已提交
102 103
    submitForm(formName) {
      const that = this; // this指向
yma16's avatar
yma16 已提交
104 105 106
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // 提交数据
Y
yma16 已提交
107
          const loginUrl = that.baseurl + "user/login/";
Y
yma16 已提交
108
          const userInfo = {
yma16's avatar
yma16 已提交
109
            name: that.ruleForm.name,
Y
yma16 已提交
110 111
            password: that.ruleForm.pass,
          };
yma16's avatar
yma16 已提交
112
          that.$axios
Y
yma16 已提交
113 114 115 116
            .post(loginUrl, userInfo)
            .then((res) => {
              // alter('提交中');
              if (res.data.code == 1) {
yma16's avatar
yma16 已提交
117 118 119 120 121 122 123
                localStorage.setItem(
                  "yma16siteUserInfo",
                  JSON.stringify({
                    username: userInfo.name,
                    password: userInfo.password,
                  })
                );
Y
yma16 已提交
124 125 126
                store.commit("setUserInfo", userInfo); // store信息
                document.cookie = `user=${that.ruleForm.name}`;
                that.$router.push({ path: "/" });
Y
yma16 已提交
127 128
                // 添加cookie
              } else if (res.data.code == 0) {
yma16's avatar
yma16 已提交
129 130
                // alter("失败!" res.data.msg)
                that.$message.error('用化名或密码错误');
Y
yma16 已提交
131 132
              }
            })
yma16's avatar
yma16 已提交
133 134
            .catch((error) => {
              that.$message.error(error);
Y
yma16 已提交
135
            });
yma16's avatar
yma16 已提交
136
        } else {
yma16's avatar
yma16 已提交
137
          that.$message.error("请输入账号密码");
Y
yma16 已提交
138
          return false;
yma16's avatar
yma16 已提交
139
        }
Y
yma16 已提交
140
      });
yma16's avatar
yma16 已提交
141
    },
Y
yma16 已提交
142 143 144 145 146
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
  },
};
yma16's avatar
yma16 已提交
147 148 149
</script>

<style scoped>
Y
yma16 已提交
150
.login {
yma16's avatar
yma16 已提交
151
  position: relative;
Y
yma16 已提交
152
  width: 100%;
yma16's avatar
yma16 已提交
153 154
  height: auto;
}
Y
yma16 已提交
155
.left {
yma16's avatar
yma16 已提交
156
  position: relative;
Y
yma16 已提交
157 158 159 160 161 162 163 164 165 166
  margin-top: 50px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
.text {
  align-content: center;
  display: flex;
  margin: 0 auto;
  font-size: 14px;
yma16's avatar
yma16 已提交
167 168
}

Y
yma16 已提交
169 170 171 172 173
.item {
  display: flex;
  margin: 0 auto;
  /* width: 50%; */
}
yma16's avatar
yma16 已提交
174

Y
yma16 已提交
175 176 177 178 179 180 181 182 183 184 185
.box-card {
  align-self: center;
  align-content: center;
  display: flex;
  width: 450px;
  /* padding-left:25%; */
  margin: 0 auto;
  opacity: 1;
  margin-top: 80px;
  background-color: #ffffff;
}
yma16's avatar
yma16 已提交
186
</style>