Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Chatopera OpenSource
/
ferry_web
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
f51202db
authored
Aug 17, 2020
by
YuleiLan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
美化login。
parent
19416ff8
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
0 additions
and
416 deletions
src/views/login copy/auth-redirect.vue
src/views/login copy/components/SocialSignin.vue
src/views/login copy/index.vue
src/views/login copy/auth-redirect.vue
deleted
100644 → 0
View file @
19416ff8
<
script
>
export
default
{
name
:
'AuthRedirect'
,
created
()
{
const
hash
=
window
.
location
.
search
.
slice
(
1
)
if
(
window
.
localStorage
)
{
window
.
localStorage
.
setItem
(
'x-admin-oauth-code'
,
hash
)
window
.
close
()
}
},
render
:
function
(
h
)
{
return
h
()
// avoid warning message
}
}
</
script
>
src/views/login copy/components/SocialSignin.vue
deleted
100644 → 0
View file @
19416ff8
<
template
>
<div
class=
"social-signup-container"
>
<div
class=
"sign-btn"
@
click=
"wechatHandleClick('wechat')"
>
<span
class=
"wx-svg-container"
><svg-icon
icon-class=
"wechat"
class=
"icon"
/></span>
WeChat
</div>
<div
class=
"sign-btn"
@
click=
"tencentHandleClick('tencent')"
>
<span
class=
"qq-svg-container"
><svg-icon
icon-class=
"qq"
class=
"icon"
/></span>
QQ
</div>
</div>
</
template
>
<
script
>
// import openWindow from '@/utils/open-window'
export
default
{
name
:
'SocialSignin'
,
methods
:
{
wechatHandleClick
(
thirdpart
)
{
alert
(
'ok'
)
// this.$store.commit('SET_AUTH_TYPE', thirdpart)
// const appid = 'xxxxx'
// const redirect_uri = encodeURIComponent('xxx/redirect?redirect=' + window.location.origin + '/auth-redirect')
// const url = 'https://open.weixin.qq.com/connect/qrconnect?appid=' + appid + '&redirect_uri=' + redirect_uri + '&response_type=code&scope=snsapi_login#wechat_redirect'
// openWindow(url, thirdpart, 540, 540)
},
tencentHandleClick
(
thirdpart
)
{
alert
(
'ok'
)
// this.$store.commit('SET_AUTH_TYPE', thirdpart)
// const client_id = 'xxxxx'
// const redirect_uri = encodeURIComponent('xxx/redirect?redirect=' + window.location.origin + '/auth-redirect')
// const url = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + redirect_uri
// openWindow(url, thirdpart, 540, 540)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.social-signup-container
{
margin
:
20px
0
;
.sign-btn
{
display
:
inline-block
;
cursor
:
pointer
;
}
.icon
{
color
:
#fff
;
font-size
:
24px
;
margin-top
:
8px
;
}
.wx-svg-container
,
.qq-svg-container
{
display
:
inline-block
;
width
:
40px
;
height
:
40px
;
line-height
:
40px
;
text-align
:
center
;
padding-top
:
1px
;
border-radius
:
4px
;
margin-bottom
:
20px
;
margin-right
:
5px
;
}
.wx-svg-container
{
background-color
:
#24da70
;
}
.qq-svg-container
{
background-color
:
#6BA2D6
;
margin-left
:
50px
;
}
}
</
style
>
src/views/login copy/index.vue
deleted
100644 → 0
View file @
19416ff8
<
template
>
<div
class=
"login-container"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
label-position=
"left"
>
<div
class=
"title-container"
>
<h3
class=
"title"
>
FERRY 管理平台
</h3>
</div>
<el-form-item
prop=
"username"
>
<span
class=
"svg-container"
>
<svg-icon
icon-class=
"user"
/>
</span>
<el-input
ref=
"username"
v-model=
"loginForm.username"
placeholder=
"用户名"
name=
"username"
type=
"text"
tabindex=
"1"
autocomplete=
"on"
/>
</el-form-item>
<el-tooltip
v-model=
"capsTooltip"
content=
"Caps lock is On"
placement=
"right"
manual
>
<el-form-item
prop=
"password"
>
<span
class=
"svg-container"
>
<svg-icon
icon-class=
"password"
/>
</span>
<el-input
:key=
"passwordType"
ref=
"password"
v-model=
"loginForm.password"
:type=
"passwordType"
placeholder=
"密码"
name=
"password"
tabindex=
"2"
autocomplete=
"on"
@
keyup
.
native=
"checkCapslock"
@
blur=
"capsTooltip = false"
@
keyup
.
enter
.
native=
"handleLogin"
/>
<span
class=
"show-pwd"
@
click=
"showPwd"
>
<svg-icon
:icon-class=
"passwordType === 'password' ? 'eye' : 'eye-open'"
/>
</span>
</el-form-item>
</el-tooltip>
<el-form-item
prop=
"code"
style=
"width: 60%;float: left;"
>
<span
class=
"svg-container"
>
<svg-icon
icon-class=
"validCode"
/>
</span>
<el-input
ref=
"username"
v-model=
"loginForm.code"
placeholder=
"验证码"
name=
"username"
type=
"text"
tabindex=
"3"
autocomplete=
"off"
style=
" width: 75%;"
@
keyup
.
enter
.
native=
"handleLogin"
/>
</el-form-item>
<div
class=
"login-code"
style=
" width: 38%;height: 48px;float: right;background-color: darkgray;"
>
<img
style=
"height: 48px;width: 100%;"
:src=
"codeUrl"
@
click=
"getCode"
>
</div>
<el-button
:loading=
"loading"
type=
"primary"
style=
"width:100%;margin-bottom:30px;"
@
click
.
native
.
prevent=
"handleLogin"
>
<span
v-if=
"!loading"
>
登 录
</span>
<span
v-else
>
登 录 中...
</span>
</el-button>
</el-form>
<el-dialog
title=
"Or connect with"
:visible
.
sync=
"showDialog"
>
Can not be simulated on local, so please combine you own business simulation! ! !
<br>
<br>
<br>
<social-sign
/>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
getCodeImg
}
from
'@/api/login'
import
SocialSign
from
'./components/SocialSignin'
export
default
{
name
:
'Login'
,
components
:
{
SocialSign
},
data
()
{
return
{
codeUrl
:
''
,
cookiePassword
:
''
,
loginForm
:
{
username
:
'admin'
,
password
:
'123456'
,
rememberMe
:
false
,
code
:
''
,
uuid
:
''
},
loginRules
:
{
username
:
[
{
required
:
true
,
trigger
:
'blur'
,
message
:
'用户名不能为空'
}
],
password
:
[
{
required
:
true
,
trigger
:
'blur'
,
message
:
'密码不能为空'
}
],
code
:
[{
required
:
true
,
trigger
:
'change'
,
message
:
'验证码不能为空'
}]
},
passwordType
:
'password'
,
capsTooltip
:
false
,
loading
:
false
,
showDialog
:
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
()
{
this
.
getCode
()
// 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
:
{
getCode
()
{
getCodeImg
().
then
(
res
=>
{
if
(
res
!==
undefined
)
{
this
.
codeUrl
=
res
.
data
this
.
loginForm
.
uuid
=
res
.
id
}
})
},
checkCapslock
({
shiftKey
,
key
}
=
{})
{
if
(
key
&&
key
.
length
===
1
)
{
if
(
shiftKey
&&
(
key
>=
'a'
&&
key
<=
'z'
)
||
!
shiftKey
&&
(
key
>=
'A'
&&
key
<=
'Z'
))
{
this
.
capsTooltip
=
true
}
else
{
this
.
capsTooltip
=
false
}
}
if
(
key
===
'CapsLock'
&&
this
.
capsTooltip
===
true
)
{
this
.
capsTooltip
=
false
}
},
showPwd
()
{
if
(
this
.
passwordType
===
'password'
)
{
this
.
passwordType
=
''
}
else
{
this
.
passwordType
=
'password'
}
this
.
$nextTick
(()
=>
{
this
.
$refs
.
password
.
focus
()
})
},
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
this
.
getCode
()
})
}
else
{
return
false
}
})
},
getOtherQuery
(
query
)
{
return
Object
.
keys
(
query
).
reduce
((
acc
,
cur
)
=>
{
if
(
cur
!==
'redirect'
)
{
acc
[
cur
]
=
query
[
cur
]
}
return
acc
},
{})
}
}
}
</
script
>
<
style
lang=
"scss"
>
/* 修复input 背景不协调 和光标变色 */
/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
$
bg
:
#283443
;
$
light_gray
:
#fff
;
$
cursor
:
#fff
;
@supports
(
-webkit-mask
:
none
)
and
(
not
(
cater-color
:
$
cursor
))
{
.login-container
.el-input
input
{
color
:
$
cursor
;
}
}
/* reset element-ui css */
.login-container
{
.el-input
{
display
:
inline-block
;
height
:
47px
;
width
:
85%
;
input
{
background
:
transparent
;
border
:
0px
;
-webkit-appearance
:
none
;
border-radius
:
0px
;
padding
:
12px
5px
12px
15px
;
color
:
$
light_gray
;
height
:
47px
;
caret-color
:
$
cursor
;
&:-webkit-autofill
{
box-shadow
:
0
0
0px
1000px
$
bg
inset
!important
;
-webkit-text-fill-color
:
$
cursor
!important
;
}
}
}
.el-form-item
{
border
:
1px
solid
rgba
(
255
,
255
,
255
,
0.1
);
background
:
rgba
(
0
,
0
,
0
,
0.1
);
border-radius
:
5px
;
color
:
#454545
;
}
}
</
style
>
<
style
lang=
"scss"
scoped
>
$
bg
:
#2d3a4b
;
$
dark_gray
:
#889aa4
;
$
light_gray
:
#eee
;
.login-container
{
min-height
:
100%
;
width
:
100%
;
background-color
:
$
bg
;
overflow
:
hidden
;
.login-form
{
position
:
relative
;
width
:
520px
;
max-width
:
100%
;
padding
:
160px
35px
0
;
margin
:
0
auto
;
overflow
:
hidden
;
}
.tips
{
font-size
:
14px
;
color
:
#fff
;
margin-bottom
:
10px
;
span
{
&:first-of-type
{
margin-right
:
16px
;
}
}
}
.svg-container
{
padding
:
6px
5px
6px
15px
;
color
:
$
dark_gray
;
vertical-align
:
middle
;
width
:
30px
;
display
:
inline-block
;
}
.title-container
{
position
:
relative
;
.title
{
font-size
:
26px
;
color
:
$
light_gray
;
margin
:
0px
auto
40px
auto
;
text-align
:
center
;
font-weight
:
bold
;
}
}
.show-pwd
{
position
:
absolute
;
right
:
10px
;
top
:
7px
;
font-size
:
16px
;
color
:
$
dark_gray
;
cursor
:
pointer
;
user-select
:
none
;
}
.thirdparty-button
{
position
:
absolute
;
right
:
0
;
bottom
:
6px
;
}
@media
only
screen
and
(
max-width
:
470px
)
{
.thirdparty-button
{
display
:
none
;
}
}
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment