Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-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
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
2525f78b
Commit
2525f78b
authored
Jun 23, 2021
by
guomingpang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/pangguoming/20210622/login_page_modify' into rc
parents
7adf6a2c
f4df368a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
102 additions
and
99 deletions
+102
-99
src/modules/root/Login.jsx
+0
-0
src/modules/root/Login.less
+27
-33
src/modules/root/WechatLogin.less
+10
-11
src/modules/root/WechatLogin.tsx
+65
-55
yarn.lock
+0
-0
No files found.
src/modules/root/Login.jsx
View file @
2525f78b
This diff is collapsed.
Click to expand it.
src/modules/root/Login.less
View file @
2525f78b
@import url(
"../../core/variables.less"
);
@import url(
'../../core/variables.less'
);
.login-page {
.login-page {
position: static;
position: static;
font-family:
"微软雅黑"
;
font-family:
'微软雅黑'
;
padding: 0;
padding: 0;
min-width: 1200px;
min-width: 1200px;
background: #
F4F6FA
;
background: #
f4f6fa
;
height: 100%;
height: 100%;
overflow-y: hidden;
overflow-y: hidden;
.logo-img-box{
.logo-img-box
{
position: absolute;
position: absolute;
top:24px;
top:
24px;
right:32px;
right:
32px;
z-index:1;
z-index:
1;
.logo-img{
.logo-img
{
width:120px;
width:
120px;
display: inline-block;
display: inline-block;
}
}
}
}
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
width: 540px;
width: 540px;
height: 100vh;
height: 100vh;
.img-box {
.img-box {
background: #2966
FF
;
background: #2966
ff
;
width: 540px;
width: 540px;
height: 100vh;
height: 100vh;
img {
img {
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
position: absolute;
position: absolute;
left: 50%;
left: 50%;
top: 50%;
top: 50%;
transform: translate(-50%,-50%);
transform: translate(-50%,
-50%);
}
}
}
}
}
}
...
@@ -50,10 +50,10 @@
...
@@ -50,10 +50,10 @@
height: 256px;
height: 256px;
background: rgba(41, 102, 255, 0.05);
background: rgba(41, 102, 255, 0.05);
position: absolute;
position: absolute;
top:0;
top:
0;
left: 0;
left: 0;
&.right-bottom-block {
&.right-bottom-block {
top:auto;
top:
auto;
left: auto;
left: auto;
bottom: 0;
bottom: 0;
right: 0;
right: 0;
...
@@ -90,8 +90,8 @@
...
@@ -90,8 +90,8 @@
height: 420px;
height: 420px;
position: absolute;
position: absolute;
left: 50%;
left: 50%;
top:50%;
top:
50%;
transform: translate(-50%,-50%);
transform: translate(-50%,
-50%);
overflow: hidden;
overflow: hidden;
background-color: #ffffff;
background-color: #ffffff;
border-radius: 4px;
border-radius: 4px;
...
@@ -107,7 +107,7 @@
...
@@ -107,7 +107,7 @@
.ant-tabs-tab-active {
.ant-tabs-tab-active {
.ant-tabs-tab-btn {
.ant-tabs-tab-btn {
color: #333333;
color: #333333;
font-weight:
500
!important;
font-weight:
500
!important;
}
}
}
}
.ant-tabs-nav::before {
.ant-tabs-nav::before {
...
@@ -115,7 +115,7 @@
...
@@ -115,7 +115,7 @@
}
}
.ant-tabs-tab {
.ant-tabs-tab {
text-align: center;
text-align: center;
margin:0;
margin:
0;
}
}
.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list {
.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list {
margin: 0 auto;
margin: 0 auto;
...
@@ -128,13 +128,7 @@
...
@@ -128,13 +128,7 @@
width: 280px;
width: 280px;
height: 100%;
height: 100%;
background: @primary;
background: @primary;
background: -webkit-gradient(
background: -webkit-gradient(linear, left top, left bottom, from(#ffaa1a), to(#ff8634)) !important;
linear,
left top,
left bottom,
from(#ffaa1a),
to(#ff8634)
) !important;
display: flex;
display: flex;
display: -webkit-flex;
display: -webkit-flex;
-webkit-flex-direction: column;
-webkit-flex-direction: column;
...
@@ -197,8 +191,8 @@
...
@@ -197,8 +191,8 @@
}
}
}
}
}
}
.login-form{
.login-form
{
margin-top:32px;
margin-top:
32px;
}
}
.qrcode {
.qrcode {
display: none;
display: none;
...
@@ -281,7 +275,7 @@
...
@@ -281,7 +275,7 @@
font-weight: 500;
font-weight: 500;
color: #333;
color: #333;
&::after {
&::after {
content:
""
;
content:
''
;
display: block;
display: block;
width: 24px;
width: 24px;
height: 4px;
height: 4px;
...
@@ -383,12 +377,12 @@
...
@@ -383,12 +377,12 @@
border-radius: 3px;
border-radius: 3px;
margin-top: 60px;
margin-top: 60px;
font-size: 14px; // font-weight: 300;
font-size: 14px; // font-weight: 300;
color:
#2966FF
;
color:
#2966ff
;
&:hover {
&:hover {
color: #2966
FF
;
color: #2966
ff
;
}
}
&::before {
&::before {
content:
""
;
content:
''
;
display: block;
display: block;
height: 20px;
height: 20px;
width: 1px;
width: 1px;
...
@@ -416,7 +410,7 @@
...
@@ -416,7 +410,7 @@
}
}
.refresh {
.refresh {
font-size: 14px;
font-size: 14px;
color: #2966
FF
;
color: #2966
ff
;
cursor: pointer;
cursor: pointer;
}
}
}
}
...
@@ -466,10 +460,10 @@
...
@@ -466,10 +460,10 @@
transition: all 0.3s;
transition: all 0.3s;
cursor: pointer;
cursor: pointer;
border: none;
border: none;
text-align:center;
text-align:
center;
&:hover {
&:hover {
opacity: 0.7;
opacity: 0.7;
background: #5
C8AFF
;
background: #5
c8aff
;
}
}
}
}
}
}
...
...
src/modules/root/WechatLogin.less
View file @
2525f78b
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
color: #999999;
color: #999999;
line-height: 20px;
line-height: 20px;
}
}
.rwm{
.rwm
{
position: relative;
position: relative;
width: 210px;
width: 210px;
height: 210px;
height: 210px;
...
@@ -18,29 +18,28 @@
...
@@ -18,29 +18,28 @@
margin-top: 24px;
margin-top: 24px;
border: 1px solid #e8e8e8;
border: 1px solid #e8e8e8;
border-radius: 2px;
border-radius: 2px;
padding:15px;
padding:
15px;
.error{
.error
{
position: absolute;
position: absolute;
width: 200px;
width: 200px;
height: 200px;
height: 200px;
background: rgba(255, 255, 255, 0.95);
background: rgba(255, 255, 255, 0.95);
display: flex;
display: flex;
align-items:
center;
align-items:
center;
justify-content:
center;
justify-content:
center;
left:
5px;
left:
5px;
top:
5px;
top:
5px;
div
{
div
{
margin: 0 10px;
margin: 0 10px;
font-size: 14px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
font-weight: 400;
color: #333333;
color: #333333;
line-height: 20px;
line-height: 20px;
}
}
.ope
{
.ope
{
cursor: pointer;
cursor: pointer;
color:
rgba(82, 137, 250, 1);
color:
rgba(82, 137, 250, 1);
}
}
}
}
}
}
...
...
src/modules/root/WechatLogin.tsx
View file @
2525f78b
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
qrcode
from
"@/libs/qrcode/qrcode.js"
;
import
qrcode
from
'@/libs/qrcode/qrcode.js'
;
import
Service
from
"@/common/js/service"
;
import
Service
from
'@/common/js/service'
;
import
User
from
'@/common/js/user'
;
import
User
from
'@/common/js/user'
;
import
{
PATH
}
from
'@/domains/basic-domain/constants'
;
import
{
PATH
}
from
'@/domains/basic-domain/constants'
;
import
'./WechatLogin.less'
import
'./WechatLogin.less'
;
const
Logo
=
require
(
"@/common/images/logo.png"
)
const
Logo
=
require
(
'@/common/images/logo.png'
);
declare
var
location
:
any
;
declare
var
location
:
any
;
export
default
function
WechatLogin
(
props
:
any
)
{
export
default
function
WechatLogin
(
props
:
any
)
{
const
freshTime
=
60
;
const
freshTime
=
60
;
const
init
:
any
=
null
;
const
init
:
any
=
null
;
const
[
status
,
setStatus
]
=
useState
(
0
);
const
[
status
,
setStatus
]
=
useState
(
0
);
const
[
ticket
,
setTicket
]
=
useState
(
''
);
const
[
ticket
,
setTicket
]
=
useState
(
''
);
const
[
leftTime
,
setLeftTime
]
=
useState
(
freshTime
)
const
[
leftTime
,
setLeftTime
]
=
useState
(
freshTime
);
const
QRCode
=
useRef
(
init
);
const
QRCode
=
useRef
(
init
);
const
timer
=
useRef
(
init
);
const
timer
=
useRef
(
init
);
const
leftTimeRef
=
useRef
(
init
);
const
leftTimeRef
=
useRef
(
init
);
useEffect
(()
=>
{
useEffect
(()
=>
{
leftTimeRef
.
current
=
leftTime
;
leftTimeRef
.
current
=
leftTime
;
},
[
leftTime
])
},
[
leftTime
]);
useEffect
(()
=>
{
useEffect
(()
=>
{
clearInterval
(
timer
.
current
as
any
);
clearInterval
(
timer
.
current
as
any
);
if
(
status
===
0
)
{
if
(
status
===
0
)
{
Service
.
Hades
(
"anon/hades/getTicket"
,
{}).
then
((
res
:
any
)
=>
{
Service
.
Hades
(
'anon/hades/getTicket'
,
{}).
then
((
res
:
any
)
=>
{
setTicket
(
res
.
result
)
setTicket
(
res
.
result
);
const
redirect
=
`
${
PATH
}
?ticket=
${
res
.
result
}
&appTermEnum=XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN&env=
${
process
.
env
.
DEPLOY_ENV
||
'dev'
}
`
const
redirect
=
`
${
PATH
}
?ticket=
${
res
.
result
}
&appTermEnum=XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN&env=
${
process
.
env
.
DEPLOY_ENV
||
'dev'
}
`
;
// console.log(redirect)
// console.log(redirect)
// const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww409ccf9c6e31f19e&redirect_uri=${encodeURIComponent(redirect)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
// const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww409ccf9c6e31f19e&redirect_uri=${encodeURIComponent(redirect)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
// console.log(url)
// console.log(url)
const
qrcodeWrapDom
:
any
=
document
.
querySelector
(
'#qrcode'
);
const
qrcodeWrapDom
:
any
=
document
.
querySelector
(
'#qrcode'
);
let
qrnode
=
new
qrcode
({
let
qrnode
=
new
qrcode
({
text
:
redirect
,
text
:
redirect
,
correctLevel
:
2
,
correctLevel
:
2
,
size
:
180
,
size
:
180
,
// image: 'https://image.xiaomaiketang.com/xm/Newk4NrxKC.png',
// image: 'https://image.xiaomaiketang.com/xm/Newk4NrxKC.png',
image
:
'https://image.xiaomaiketang.com/xm/bFkRBz7teA.png'
,
image
:
'https://image.xiaomaiketang.com/xm/bFkRBz7teA.png'
,
imageSize
:
50
imageSize
:
50
,
});
});
qrcodeWrapDom
.
innerHTML
=
''
;
qrcodeWrapDom
.
innerHTML
=
''
;
qrcodeWrapDom
&&
qrcodeWrapDom
.
appendChild
(
qrnode
);
qrcodeWrapDom
&&
qrcodeWrapDom
.
appendChild
(
qrnode
);
...
@@ -50,79 +48,91 @@ export default function WechatLogin(props: any) {
...
@@ -50,79 +48,91 @@ export default function WechatLogin(props: any) {
if
(
leftTimeRef
.
current
==
0
)
{
if
(
leftTimeRef
.
current
==
0
)
{
clearInterval
(
timer
.
current
);
clearInterval
(
timer
.
current
);
setStatus
(
1
);
setStatus
(
1
);
return
return
;
}
}
setLeftTime
(
leftTimeRef
.
current
-
1
);
setLeftTime
(
leftTimeRef
.
current
-
1
);
},
1000
);
},
1000
)
});
})
}
}
return
()
=>
{
return
()
=>
{
clearInterval
(
timer
.
current
);
clearInterval
(
timer
.
current
);
}
};
},
[
status
])
},
[
status
]);
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
leftTime
==
60
||
!
ticket
)
{
if
(
leftTime
==
60
||
!
ticket
)
{
return
return
;
}
}
Service
.
Hades
(
'anon/hades/getTicketState'
,
{
Service
.
Hades
(
'anon/hades/getTicketState'
,
{
ticket
ticket
,
}).
then
((
res
:
any
)
=>
{
}).
then
((
res
:
any
)
=>
{
if
(
res
.
result
===
'AUTH_SUCCESS'
)
{
if
(
res
.
result
===
'AUTH_SUCCESS'
)
{
Service
.
Hades
(
'anon/hades/getTicketWXWorkLogin'
,
{
Service
.
Hades
(
'anon/hades/getTicketWXWorkLogin'
,
{
ticket
ticket
,
}).
then
((
_res
:
any
)
=>
{
}).
then
((
_res
:
any
)
=>
{
User
.
setUserId
(
_res
.
result
.
loginInfo
.
userId
);
User
.
setUserId
(
_res
.
result
.
loginInfo
.
userId
);
User
.
setToken
(
_res
.
result
.
loginInfo
.
xmToken
);
User
.
setToken
(
_res
.
result
.
loginInfo
.
xmToken
);
User
.
setEnterpriseId
(
_res
.
result
.
enterpriseId
);
User
.
setEnterpriseId
(
_res
.
result
.
enterpriseId
);
User
.
setIdentifier
(
_res
.
result
.
identifier
)
User
.
setIdentifier
(
_res
.
result
.
identifier
);
window
.
RCHistory
.
push
({
window
.
RCHistory
.
push
({
pathname
:
`/switch-route`
,
pathname
:
`/switch-route`
,
})
});
})
});
}
}
});
},
[
leftTime
]);
})
return
(
<
div
className=
'wechatLoginBox'
>
},
[
leftTime
])
<
div
className=
'rwm'
>
<
div
id=
'qrcode'
></
div
>
return
<
div
className=
'wechatLoginBox'
>
<
div
className=
"rwm"
>
<
div
id=
"qrcode"
></
div
>
{
{
status
===
1
&&
(
status
===
1
&&
<
div
className=
"error"
>
<
div
className=
'error'
>
<
div
>
二维码已过期
<
div
>
<
p
className=
"ope"
onClick=
{
()
=>
{
二维码已过期
setStatus
(
0
)
<
p
}
}
>
刷新
</
p
>
className=
'ope'
onClick=
{
()
=>
{
setStatus
(
0
);
}
}
>
刷新
</
p
>
</
div
>
</
div
>
</
div
>
</
div
>
}
)
}
{
{
status
===
2
&&
(
status
===
2
&&
<
div
className=
"error"
>
<
div
className=
'error'
>
<
div
>
所在企业还未注册学院
<
div
>
所在企业还未注册学院
<
p
className=
"ope"
onClick=
{
()
=>
{
<
p
setStatus
(
0
)
className=
'ope'
}
}
>
我知道了
</
p
>
onClick=
{
()
=>
{
setStatus
(
0
);
}
}
>
我知道了
</
p
>
</
div
>
</
div
>
</
div
>
</
div
>
}
)
}
{
{
status
===
3
&&
(
status
===
3
&&
<
div
className=
"error"
>
<
div
className=
'error'
>
<
div
>
你还不是学院员工,请联系企业管理员
<
div
>
你还不是学院员工,请联系企业管理员
<
p
className=
"ope"
onClick=
{
()
=>
{
<
p
setStatus
(
0
)
className=
'ope'
}
}
>
我知道了
</
p
>
onClick=
{
()
=>
{
setStatus
(
0
);
}
}
>
我知道了
</
p
>
</
div
>
</
div
>
</
div
>
</
div
>
}
)
}
</
div
>
</
div
>
<
p
className=
'text'
>
请使用企业微信扫码登录
</
p
>
<
p
className=
'text'
>
请使用企业微信扫码登录
</
p
>
</
div
>
</
div
>
);
}
}
yarn.lock
View file @
2525f78b
This diff is collapsed.
Click to expand it.
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