Browse Source

登录改版

origin/feature/monitoring
zhaoyongnian 4 years ago
parent
commit
fc80ca66b2
  1. 36
      src/assets/scss/pages/login.scss
  2. 1
      src/i18n/zh-CN.js
  3. 97
      src/views/pages/login.vue

36
src/assets/scss/pages/login.scss

@ -1,5 +1,4 @@
.aui-page__login {
&::before,
&::after {
position: absolute;
@ -54,12 +53,12 @@
margin: 0;
list-style: none;
>li {
> li {
font-size: 16px;
line-height: 1.5;
color: rgba(255, 255, 255, .6);
color: rgba(255, 255, 255, 0.6);
&+li {
& + li {
margin-top: 5px;
}
}
@ -74,7 +73,7 @@
.login-body {
padding: 20px 30px;
background-color: #fff;
box-shadow: 6px 6px 16px #FDDBD4;
box-shadow: 6px 6px 16px #fddbd4;
.login-title {
font-size: 18px;
@ -89,7 +88,7 @@
height: $--input-height;
line-height: $--input-height -2px;
>img {
> img {
max-width: 100%;
cursor: pointer;
}
@ -111,16 +110,16 @@
z-index: 1;
content: "";
height: 1px;
margin-top: -.5px;
margin-top: -0.5px;
background-color: $--border-color-base;
overflow: hidden;
}
>span {
> span {
position: relative;
z-index: 2;
padding: 0 20px;
color: rgba(0, 0, 0, .3);
color: rgba(0, 0, 0, 0.3);
background-color: #fff;
}
}
@ -131,7 +130,7 @@
list-style: none;
font-size: 0;
>li {
> li {
display: inline-block;
vertical-align: middle;
margin: 0 10px;
@ -141,7 +140,7 @@
}
.login-guide {
color: rgba(0, 0, 0, .3);
color: rgba(0, 0, 0, 0.3);
}
}
@ -149,7 +148,7 @@
position: absolute;
bottom: 0;
padding: 20px;
color: rgba(255, 255, 255, .6);
color: rgba(255, 255, 255, 0.6);
p {
margin: 10px 0;
@ -157,7 +156,7 @@
a {
padding: 0 5px;
color: rgba(255, 255, 255, .6);
color: rgba(255, 255, 255, 0.6);
&:focus,
&:hover {
@ -212,7 +211,10 @@
}
}
}
.login-mobile {
text-align: left;
height: 30px;
}
@media (max-width: 991px) {
.aui-page__login {
&--right-vertical {
@ -227,7 +229,6 @@
.aui-page__login {
&--right-vertical {
.login-header {
.login-brand,
.login-intro {
display: none;
@ -239,7 +240,6 @@
@media (max-width: 575px) {
.aui-page__login {
.login-body,
.login-footer {
width: 100%;
@ -248,7 +248,7 @@
.login-captcha {
text-align: left;
>img {
> img {
width: 136px;
}
}
@ -259,4 +259,4 @@
}
}
}
}
}

1
src/i18n/zh-CN.js

@ -77,6 +77,7 @@ t.login.title = '登录'
t.login.username = '用户名'
t.login.password = '密码'
t.login.captcha = '验证码'
t.login.smsCode = '短信验证码'
t.login.demo = '在线演示'
t.login.copyright = '青岛亿联信息科技股份有限公司'

97
src/views/pages/login.vue

@ -20,7 +20,8 @@
</el-form-item> -->
<el-form-item prop="username">
<el-input v-model="dataForm.username"
:placeholder="$t('login.username')">
:placeholder="$t('login.username')"
@blur="onInputBlur">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
@ -43,7 +44,8 @@
</span>
</el-input>
</el-form-item>
<el-form-item prop="captcha">
<el-form-item prop="captcha"
v-if='!getMobileType'>
<el-row :gutter="20">
<el-col :span="14">
<el-input v-model="dataForm.captcha"
@ -64,6 +66,31 @@
</el-col>
</el-row>
</el-form-item>
<div class="login-mobile"
v-if='getMobileType'>手机号{{loginMobile.mobile}}</div>
<el-form-item prop="smsCode"
v-if='getMobileType'>
<el-row :gutter="20">
<el-col :span="10">
<el-input v-model="dataForm.smsCode"
:placeholder="$t('login.smsCode')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-safetycertificate"></use>
</svg>
</span>
</el-input>
</el-col>
<el-col :span="10"
class="login-captcha">
<el-button @click="getSmsCode()"
:disabled="smsCodeText !== '获取验证码'"
type="primary">{{smsCodeText}}</el-button>
</el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary"
@click="dataFormSubmitHandle()"
@ -72,7 +99,8 @@
</el-form>
</div>
<div v-if="isHidden">
<p><a href="https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7B0EBBEC46-30F5-946B-A54E-5628DFF12914%7D%26lang%3Den%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Ddefaultbrowser/update2/installers/ChromeSetup.exe" target="_blank">点击此处下载谷歌浏览器</a></p>
<p><a href="https://dl.google.com/tag/s/appguid%3D%7B8A69D345-D564-463C-AFF1-A69D9E530F96%7D%26iid%3D%7B0EBBEC46-30F5-946B-A54E-5628DFF12914%7D%26lang%3Den%26browser%3D4%26usagestats%3D1%26appname%3DGoogle%2520Chrome%26needsadmin%3Dprefers%26ap%3Dx64-stable-statsdef_1%26installdataindex%3Ddefaultbrowser/update2/installers/ChromeSetup.exe"
target="_blank">点击此处下载谷歌浏览器</a></p>
</div>
<!-- <div class="login-footer">
<p><a href="http://www.elinkit.com.cn/"
@ -98,8 +126,15 @@ export default {
username: '',
password: '',
uuid: '',
captcha: ''
}
captcha: '',
smsCode: ''
},
loginMobile: {
mobile: '',
keyword: ''
},
getMobileType: false, //
smsCodeText: '获取验证码' // button
}
},
computed: {
@ -113,6 +148,9 @@ export default {
],
captcha: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
smsCode: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
@ -141,7 +179,9 @@ export default {
if (!valid) {
return false
}
this.$http.post('/auth/login', this.dataForm).then(({ data: res }) => {
// getMobileType false
const loginUrl = this.getMobileType ? '/auth/loginBySms' : '/auth/login'
this.$http.post(loginUrl, this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
this.getCaptcha()
return this.$message.error(res.msg)
@ -177,6 +217,51 @@ export default {
}
localStorage.setItem('street', res.data.id)
}).catch(() => { })
},
//
onInputBlur () {
this.$http.get(`/sys/user/getLoginMobile/?username=${this.dataForm.username}`).then(({ data: res }) => {
if (res.code !== 0) {
this.getMobileType = false
return this.$message.error(res.msg)
}
// mobile
// (/auth/loginBySms)
// phone
//
this.getMobileType = res.data.mobile ? true : false
this.loginMobile = {
mobile: res.data.mobile,
keyword: res.data.keyword
}
}).catch(() => { })
},
//
getSmsCode () {
this.smsCodeText = '获取中...'
this.$http.post(`/message/sms/send/byMobileAndKeyword?mobile=${this.loginMobile.mobile}&keyword=${this.loginMobile.keyword}`).then(({ data: res }) => {
if (res.code !== 0) {
this.smsCodeText = '获取验证码'
return this.$message.error(res.msg)
}
this.$message({
message: '验证码发送成功',
type: 'success'
})
let num = 60
this.smsCodeText = '60s后重新获取'
const timer = setInterval(() => {
if (num >= 1) {
this.smsCodeText = `${num}s后重新获取`
--num
} else {
clearInterval(timer)
this.smsCodeText = '获取验证码'
}
}, 1000)
}).catch(() => {
this.smsCodeText = '获取验证码'
})
}
}
}

Loading…
Cancel
Save