|
@@ -1,28 +1,63 @@
|
|
|
<template>
|
|
|
- <div class="login">
|
|
|
- <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
|
|
|
- <h3 class="title">绑定账号</h3>
|
|
|
- <el-form-item prop="username">
|
|
|
- <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
|
|
|
- <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="password">
|
|
|
- <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin">
|
|
|
- <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item style="width:100%;">
|
|
|
- <el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click.native.prevent="handleLogin">
|
|
|
- <span v-if="!loading">提 交</span>
|
|
|
- <span v-else>提 交 中...</span>
|
|
|
- </el-button>
|
|
|
- </el-form-item>
|
|
|
+ <div class="container">
|
|
|
+ <div class="logo"></div>
|
|
|
+ <!-- 登录区域 -->
|
|
|
+ <div class="content">
|
|
|
+ <!-- 配图 -->
|
|
|
+ <div class="pic"></div>
|
|
|
+ <!-- 表单 -->
|
|
|
+ <div class="field">
|
|
|
+ <!-- [移动端]标题 -->
|
|
|
+ <h2 class="mobile-title">
|
|
|
+ <h3 class="title">芋道后台管理系统</h3>
|
|
|
+ </h2>
|
|
|
|
|
|
- </el-form>
|
|
|
- <!-- 底部 -->
|
|
|
- <div class="el-login-footer">
|
|
|
- <span>Copyright © 2020-2021 iocoder.cn All Rights Reserved.</span>
|
|
|
+ <!-- 表单 -->
|
|
|
+ <div class="form-cont">
|
|
|
+ <el-tabs class="form" v-model="loginForm.loginType " style=" float:none;">
|
|
|
+ <el-tab-pane label="绑定账号" name="uname">
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <div>
|
|
|
+ <el-form ref="loginForm" :model="loginForm" :rules="LoginRules" class="login-form">
|
|
|
+ <!-- 账号密码登录 -->
|
|
|
+ <el-form-item prop="username">
|
|
|
+ <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
|
|
|
+ <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon"/>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="password">
|
|
|
+ <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码"
|
|
|
+ @keyup.enter.native="handleLogin">
|
|
|
+ <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon"/>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="code" v-if="captchaEnable">
|
|
|
+ <el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%"
|
|
|
+ @keyup.enter.native="handleLogin">
|
|
|
+ <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon"/>
|
|
|
+ </el-input>
|
|
|
+ <div class="login-code">
|
|
|
+ <img :src="codeUrl" @click="getCode" class="login-code-img"/>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">记住密码</el-checkbox>
|
|
|
+ <!-- 下方的登录按钮 -->
|
|
|
+ <el-form-item style="width:100%;">
|
|
|
+ <el-button :loading="loading" size="medium" type="primary" style="width:100%;"
|
|
|
+ @click.native.prevent="handleLogin">
|
|
|
+ <span v-if="!loading">登 录</span>
|
|
|
+ <span v-else>登 录 中...</span>
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- footer -->
|
|
|
+ <div class="footer">
|
|
|
+ Copyright © 2020-2022 iocoder.cn All Rights Reserved.
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -36,6 +71,7 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
loginForm: {
|
|
|
+ loginType: "uname",
|
|
|
username: "admin",
|
|
|
password: "admin123",
|
|
|
rememberMe: false, // TODO 芋艿:后面看情况,去掉这块
|
|
@@ -87,10 +123,12 @@ export default {
|
|
|
const username = Cookies.get("username");
|
|
|
const password = Cookies.get("password");
|
|
|
const rememberMe = Cookies.get('rememberMe')
|
|
|
+ const loginType = Cookies.get('loginType');
|
|
|
this.loginForm = {
|
|
|
username: username === undefined ? this.loginForm.username : username,
|
|
|
password: password === undefined ? this.loginForm.password : decrypt(password),
|
|
|
- rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
|
|
|
+ rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
|
|
|
+ loginType: loginType === undefined ? this.loginForm.loginType : loginType,
|
|
|
};
|
|
|
},
|
|
|
handleLogin() {
|
|
@@ -123,64 +161,5 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style rel="stylesheet/scss" lang="scss">
|
|
|
-.login {
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- height: 100%;
|
|
|
- background-image: url("http://static.yudao.iocoder.cn/login-background.jpg");
|
|
|
- background-size: cover;
|
|
|
-}
|
|
|
-.title {
|
|
|
- margin: 0px auto 30px auto;
|
|
|
- text-align: center;
|
|
|
- color: #707070;
|
|
|
-}
|
|
|
-
|
|
|
-.login-form {
|
|
|
- border-radius: 6px;
|
|
|
- background: #ffffff;
|
|
|
- width: 400px;
|
|
|
- padding: 25px 25px 5px 25px;
|
|
|
- .el-input {
|
|
|
- height: 38px;
|
|
|
- input {
|
|
|
- height: 38px;
|
|
|
- }
|
|
|
- }
|
|
|
- .input-icon {
|
|
|
- height: 39px;
|
|
|
- width: 14px;
|
|
|
- margin-left: 2px;
|
|
|
- }
|
|
|
-}
|
|
|
-.login-tip {
|
|
|
- font-size: 13px;
|
|
|
- text-align: center;
|
|
|
- color: #bfbfbf;
|
|
|
-}
|
|
|
-.login-code {
|
|
|
- width: 33%;
|
|
|
- height: 38px;
|
|
|
- float: right;
|
|
|
- img {
|
|
|
- cursor: pointer;
|
|
|
- vertical-align: middle;
|
|
|
- }
|
|
|
-}
|
|
|
-.el-login-footer {
|
|
|
- height: 40px;
|
|
|
- line-height: 40px;
|
|
|
- position: fixed;
|
|
|
- bottom: 0;
|
|
|
- width: 100%;
|
|
|
- text-align: center;
|
|
|
- color: #fff;
|
|
|
- font-family: Arial;
|
|
|
- font-size: 12px;
|
|
|
- letter-spacing: 1px;
|
|
|
-}
|
|
|
-.login-code-img {
|
|
|
- height: 38px;
|
|
|
-}
|
|
|
+@import "~@/assets/styles/login.scss";
|
|
|
</style>
|