Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
ferry_web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jianan
ferry_web
Commits
f51202db
Commit
f51202db
authored
Aug 17, 2020
by
YuleiLan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
美化login。
parent
19416ff8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
0 additions
and
416 deletions
+0
-416
src/views/login copy/auth-redirect.vue
+0
-15
src/views/login copy/components/SocialSignin.vue
+0
-72
src/views/login copy/index.vue
+0
-329
No files found.
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