<template>
    <div class="login-container">

        <el-form
            class="card-box login-form"
            autocomplete="on"
            :model="ruleForm"
            :rules="rules"
            ref="ruleForm"
            label-position="left"
        >
            <el-card class="box-card">
                <div style="text-align: center; margin-top: 10px">
                    <img alt="element-logo" src="../../assets/logo.png"/>
                </div>
                <h3 class="title">用户登录</h3>
                <el-form-item prop="username" class="item" style="margin-top: -20px;width:305px">
                    <el-input
                        placeholder="账号"
                        name="userName"
                        autocomplete="on"
                        v-model="ruleForm.userName"
                    >
                        <i slot="prefix" class="el-input__icon">
                            <icon-svg icon-class="user"/>
                        </i>
                    </el-input>
                </el-form-item>
                <el-form-item prop="password" class="item" style="width:305px">
                    <!--<span class="svg-container">-->
                    <!--<icon-svg icon-class="pwd"/>-->
                    <!--</span>-->
                    <el-input
                        placeholder="密码"
                        name="pwd"
                        :type="isShowPwd ? 'text' : 'password'"
                        @keyup.enter.native="handleLogin"
                        v-model="ruleForm.pwd"
                        autocomplete="on"

                    >
                        <i slot="prefix" class="el-input__icon">
                            <icon-svg icon-class="pwd"/>
                        </i>
                        <i
                            slot="suffix"
                            class="el-input__icon"
                            @click="isShowPwd = !isShowPwd"
                        >
                            <icon-svg icon-class="eye"/>
                        </i>
                    </el-input>
                </el-form-item>
                <el-form-item prop="verificationCode" class="item" style="background-color: white">
                    <Verify ref="checkV" :showButton="false" :barSize="{width:'305px',height:'37px'}" :vOffset="5"
                            @success="verifyAlert('success')" @error="verifyAlert('error')" :type="3"></Verify>
                </el-form-item>
                <div style="text-align: center; margin-top: 15px">
                    <el-button
                        type="primary"
                        style="width: 60%; margin-bottom: 30px"
                        :loading="loading"
                        @click.native="handleLogin()"
                    >登录
                    </el-button>
                </div>
                <div style="margin-top: -15px">
                    <a style="margin-left: 50%; font-size: 12px" :href="'#/register'"
                    >立即注册</a
                    >
                    <a style="margin-left: 5%; font-size: 12px" :href="'#/forgetPasswd'"
                    >忘记密码</a
                    >
                </div>
            </el-card>
        </el-form>
        <div style="
          position: absolute;
          bottom: 0;
          left: 50%;
          transform: translate(-50%, -50%);
        ">
            <a target="_blank" href=" " style="display:inline-block;text-decoration:none;height:20px;line-height:20px;">
                <img src="../../assets/image/gongan.png" style="float:left;"/>
                <p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:rgba(255,255,238,0.94);">
                    闽公网安备 35020302034268号&nbsp; &nbsp;闽ICP备17019234号</p>
            </a>
        </div>
    </div>
</template>

<script>
import Verify from "vue2-verify";

export default {
    data() {
        let validatePwd = (rule, value, callback) => {
            if (value === "") {
                callback(new Error("请输入密码"));
            } else {
                callback();
            }
        };
        return {
            ruleForm: {
                userName: "",
                pwd: "",
                checked: true,
                verificationCode: false
            },
            rules: {
                userName: [
                    {required: true, message: "请输入登录名", trigger: "blur"}
                ],
                pwd: [{validator: validatePwd, trigger: "blur"}]
            },
            isShowPwd: false, // 是否显示密码
            loading: false, // 登录loading
            showDialog: false, // 显示dialog
            redirect: null // 回调地址
        };
    },
    methods: {
        verifyAlert(text) {
            if (text === "success") {
                this.ruleForm.verificationCode = true;
            }
        },
        handleLogin() {
            if (!this.ruleForm.verificationCode) {
                this.$message({
                    message: "请进行验证",
                    center: true,
                    type: "warning"
                });
                return;
            }
            this.$refs["ruleForm"].validate((valid) => {
                if (valid) {
                    this.loading = true;
                    this.$store
                        .dispatch("loginName", this.ruleForm)
                        .then((response) => {
                            this.loading = false;
                            if (response.code !== 20000) {
                                this.ruleForm.verificationCode = false;
                                this.$refs.checkV.refresh();
                                this.$message.error(response.message);
                                return;
                            }
                            let path = "/";
                            if (this.redirect) {
                                path = this.redirect;
                            }
                            this.$router.push({
                                path: "../main"
                            });
                        })
                        .catch((error) => {
                            this.ruleForm.verificationCode = false;
                            this.$refs.checkV.refresh();
                            this.loading = false;
                        });
                } else {
                    return false;
                }
            });
        }
    },
    components: {
        Verify
    },
    created() {
        // 将参数拷贝进查询对象
        let query = this.$route.query;
        if (query.redirect) {
            // URL Encode
            this.redirect = decodeURIComponent(query.redirect);
        }
    }
};
</script>

<style type="text/scss" lang="scss">
@import "../../styles/mixin";

$bg: #2d3a4b;
$dark_gray: #889aa4;
$light_gray: #eee;
.login-container {

    @include relative;
    background-color: white;
    background-image: url("../../assets/login.jpg");
    background-size: 100vw 100vh;
    height: 100%;

    input:-webkit-autofill {
        -webkit-box-shadow: 0 0 0 1000px #293444 inset !important;
        -webkit-text-fill-color: #fff !important;
    }

    .item {
        width: 22em;
        margin-left: 5em;

        .el-form-item__content {
            display: flex;
            flex-flow: row;
        }
    }

    input {
        background: transparent;
        border: 0;
        -webkit-appearance: none;
        border-radius: 0;
        padding: 0.46rem 0.0666rem 0.16rem 0.2rem;
        color: $dark_gray;
        height: 100%;
    }

    .el-input {
        display: inline-block;
    }

    .tips {
        font-size: 14px;
        color: #fff;
        margin-bottom: 0.13333rem;
    }

    .svg-container {
        padding: 0.08rem 0.0666rem 0.08rem 0.2rem;
        color: $dark_gray;
        vertical-align: middle;
        display: inline-block;

        &_login {
            font-size: 20px;
        }
    }

    .title {
        font-size: 26px;
        color: #2d3a4b;
        margin: 0 auto 0.5333rem auto;
        text-align: center;
        font-weight: bold;
        margin-bottom: 50px;
    }

    .login-form {
        //@include fxied-center;
        margin: 0px 100px auto auto;
        width: 50em;
        /*background-color: silver;*/
        /*background: #fff;*/
        padding: 10em 10em 15em 10em;
    }

    .el-form-item {
        border: 1px solid rgba(255, 255, 255, 0.1);
        background: rgba(0, 0, 0, 0.1);
        border-radius: 0.0666rem;
        color: #454545;
    }

    .show-pwd {
        position: absolute;
        right: 0.1333rem;
        top: 0.09333rem;
        font-size: 16px;
        color: $dark_gray;
        cursor: pointer;
    }

    .thirdparty-button {
        /*position: absolute;*/
        /*right: .4666rem;*/
        /*bottom: .37333rem;*/
    }

    .box-card {
        margin-top: -20px;
        height: 550px;
        width: 490px;
    }
}
</style>
