| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <template>
- <div class="login-container">
- <div class="login-nav">
- <div class="login-nav-img">
- <img src="../../../public/images/nav-2.png" />
- </div>
- <div class="login-nav-info">门禁设备管理平台</div>
- <div class="login-form">
- <div class="login-form-head">
- <div class="login-form-titile">用户登录</div>
- <div class="login-form-info">—— 欢迎登录用户系统管理 ——</div>
- </div>
- <el-form
- ref="loginForm"
- :model="loginForm"
- :inline="false"
- size="normal"
- :rules="rules"
- autocomplete="on"
- >
- <el-form-item class="login-form-item" prop="username">
- <span><img src="../../../public/images/denglu.png" /></span>
- <el-input
- class="login-form-input"
- v-model="loginForm.username"
- ref="username"
- name="username"
- placeholder="请输入您的账号"
- ></el-input>
- </el-form-item>
- <el-form-item class="login-form-item" prop="password">
- <span><img src="../../../public/images/mima.png" /></span>
- <el-input
- class="login-form-input"
- type="password"
- v-model="loginForm.password"
- placeholder="请输入您的密码"
- ref="password"
- name="password"
- autocomplete="on"
- @keyup.native="checkCapslock"
- @blur="capsTooltip = false"
- @keyup.enter.native="handleLogin"
- >
- </el-input>
- </el-form-item>
- <el-form-item>
- <el-button
- :loading="loading"
- type="primary"
- @click.native.prevent="handleLogin"
- class="login-form-button"
- >登录</el-button
- >
- </el-form-item>
- </el-form>
- </div>
- </div>
- </div>
- </template>
- <script>
- import { validUsername } from "@/utils/validate";
- import SocialSign from "./components/SocialSignin";
- export default {
- name: "Login",
- components: { SocialSign },
- data() {
- const validateUsername = (rule, value, callback) => {
- if (value.length < 5) {
- callback(new Error("账号至少五位数"));
- } else {
- callback();
- }
- };
- const validatePassword = (rule, value, callback) => {
- if (value.length < 6) {
- callback(new Error("密码至少六位数"));
- } else {
- callback();
- }
- };
- return {
- loginForm: {
- username: "admin",
- password: "123abc",
- },
- rules: {
- username: [
- { required: true, trigger: "blur", validator: validateUsername },
- ],
- password: [
- { required: true, trigger: "blur", validator: validatePassword },
- ],
- },
- capsTooltip: false,
- loading: false,
- redirect: undefined,
- otherQuery: {},
- };
- },
- // watch: {
- // $route: {
- // handler: function(route) {
- // const query = route.query
- // if (query) {
- // this.redirect = query.redirect
- // this.otherQuery = this.getOtherQuery(query)
- // }
- // },
- // immediate: true
- // }
- // },
- // created() {
- // window.addEventListener('storage', this.afterQRScan)
- // },
- mounted() {
- if (this.loginForm.username === "") {
- this.$refs.username.focus();
- } else if (this.loginForm.password === "") {
- this.$refs.password.focus();
- }
- },
- // destroyed() {
- // window.removeEventListener('storage', this.afterQRScan)
- // },
- methods: {
- checkCapslock(e) {
- const { key } = e;
- this.capsTooltip = key && key.length === 1 && key >= "A" && key <= "Z";
- },
- handleLogin() {
- this.$refs.loginForm.validate((valid) => {
- if (valid) {
- this.loading = true;
- this.$store
- .dispatch("user/login", this.loginForm)
- .then(() => {
- this.$router.push({
- path: this.redirect || "/",
- query: this.otherQuery,
- });
- this.loading = false;
- })
- .catch(() => {
- this.loading = false;
- });
- } else {
- console.log("error submit!!");
- return false;
- }
- });
- },
- },
- };
- </script>
- <style scoped>
- .login-container {
- width: 960px;
- height: 540px;
- margin: 100px auto;
- box-shadow: 0 0 25px #cac6c6;
- }
- .login-nav {
- position: relative;
- width: 960px;
- height: 250px;
- background: url(../../../public/images/nav-1.png) center center/100% 100%;
- }
- .login-nav-img {
- position: absolute;
- top: 21.5px;
- left: 31.5px;
- width: 162px;
- height: 44px;
- }
- .login-nav-img img {
- width: 100%;
- }
- .login-nav-info {
- position: absolute;
- top: 71px;
- left: 326px;
- margin: 0 auto;
- width: 330px;
- line-height: 37.5px;
- font-size: 40.01px;
- color: #ffffff;
- }
- .login-form {
- position: absolute;
- top: 127.5px;
- left: 315px;
- margin: 0 auto;
- width: 330px;
- height: 350.1px;
- background-color: #fff;
- box-shadow: 0 0 25px #cac6c6;
- }
- .login-form-head {
- position: relative;
- width: 330px;
- height: 122.6px;
- }
- .login-form-titile {
- position: absolute;
- top: 34px;
- left: 109.5px;
- height: 28px;
- font-size: 30.01px;
- color: #425570;
- }
- .login-form-info {
- position: absolute;
- top: 82px;
- left: 48.5px;
- height: 15px;
- font-size: 16px;
- color: #666666;
- }
- .login-form-item {
- margin-top: 10.9px;
- margin-left: 30px;
- }
- .login-form-item span {
- display: inline-block;
- width: 43px;
- height: 43px;
- background-color: #1e4365;
- text-align: center;
- }
- .login-form-item span img {
- width: 19px;
- margin-top: 12.5px;
- vertical-align: sub;
- }
- .login-form-item .login-form-input {
- width: 227.5px;
- height: 40px;
- }
- .login-form-button {
- width: 270px;
- height: 36px;
- background-color: #1d4264;
- color: #ffffff;
- border-radius: 4px;
- font-size: 13px;
- margin-left: 30.5px;
- margin-top: 21.2px;
- }
- </style>
|