Login.vue 5.0 KB
Newer Older
yma16's avatar
yma16 已提交
1
<template>
Y
yma16 已提交
2
  <div class="login" style="text-align: center">
yma16's avatar
yma16 已提交
3
    <el-card class="box-card" style="text-align: center"  v-loading="loading">
Y
yma16 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16
      <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>
        <el-form-item label="账号" prop="name">
          <el-input v-model="ruleForm.name"></el-input>
        </el-form-item>
yma16's avatar
yma16 已提交
17

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

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

<style scoped>
Y
yma16 已提交
153
.login {
yma16's avatar
yma16 已提交
154
  position: relative;
Y
yma16 已提交
155
  width: 100%;
yma16's avatar
yma16 已提交
156 157
  height: auto;
}
Y
yma16 已提交
158
.left {
yma16's avatar
yma16 已提交
159
  position: relative;
Y
yma16 已提交
160 161 162 163 164 165 166 167 168 169
  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 已提交
170 171
}

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

Y
yma16 已提交
178 179 180 181 182 183 184 185 186 187 188
.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 已提交
189
</style>