yak_handcuffs/src/views/login.vue

128 lines
3.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="login-container">
<div class="img"></div>
<div class="content">
<div class="content-title">欢迎来到智能手铐管理系统</div>
<el-form :model="ruleForm" :rules="rules" ref="ruleFormRef" label-position="top" label-width="auto" style="max-width: 600px">
<el-form-item label="账号" prop="username">
<el-input v-model="ruleForm.username" class="input" placeholder="请输入账号" size="large" clearable />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="ruleForm.password" type="password" class="input" placeholder="请输入密码" size="large" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" :disabled="disabled" @click="submitForm(ruleFormRef)" class="btn" size="large"> </el-button>
</el-form-item>
<div class="hint">
如遇到账号问题请联系管理员<br />
管理员联系方式13812345678 邮箱123456@qq.com
</div>
</el-form>
</div>
</div>
</template>
<script setup lang="ts">
import { reactive, ref } from "vue";
import { useRouter } from "vue-router";
import { fetchLogin } from "@/api/index";
import { useCommonStore } from "@/store/common";
import type { FormInstance, FormRules } from "element-plus";
import { ElMessage } from "element-plus";
const router = useRouter();
const comm = useCommonStore();
const ruleFormRef = ref<FormInstance>();
const validatePass = (rule: any, value: any, callback: any) => {
if (rule.field == "username" && !ruleForm.username) return callback(new Error("请输入账号"));
if (rule.field == "password" && !ruleForm.password) return callback(new Error("请输入密码"));
callback();
};
const disabled = ref(false);
const ruleForm = reactive({
username: "",
password: "",
});
const rules = reactive<FormRules<typeof ruleForm>>({
username: [{ validator: validatePass, trigger: "blur" }],
password: [{ validator: validatePass, trigger: "blur" }],
});
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
if (valid) {
disabled.value = true;
localStorage.setItem("isReload", "true");
fetchLogin(ruleForm)
.then((res) => {
comm.setUser(res);
comm.getRoleList();
ElMessage({
message: "登录成功",
type: "success",
});
setTimeout(() => {
router.push("/");
}, 1000);
})
.finally(() => {
disabled.value = false;
});
}
});
};
</script>
<style scoped lang="less">
// @media screen and (max-width: 950px) {
// .img {
// display: none;
// }
// }
.login-container {
height: 100vh;
overflow: hidden;
display: flex;
align-items: center;
.img {
width: 844px;
height: 100%;
background: url("../assets/img/loginimg.png") no-repeat center center;
background-size: cover;
}
.content {
flex: 1;
min-width: 570px;
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.content-title {
color: #061451;
font-size: 40px;
margin-bottom: 80px;
}
.input {
width: 476px;
}
.btn {
width: 476px;
}
}
.hint {
color: #787878;
font-size: 10px;
text-align: center;
}
.el-input__suffix-inner {
cursor: pointer;
}
}
</style>