Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mr-julyedu
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
baiguangyao
mr-julyedu
Commits
0ad15bc8
Commit
0ad15bc8
authored
May 13, 2020
by
zhanghaozhe
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更换滑块验证
parent
ca9d3562
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
222 additions
and
123 deletions
+222
-123
src/common/Captcha-ali/index.js
+56
-0
src/common/Captcha-ali/index.scss
+27
-0
src/common/bindPhone/index.js
+37
-41
src/common/index.js
+1
-0
src/components/detail/redPacket/index.js
+0
-0
src/components/detail/redPacket/index.scss
+28
-0
src/components/passport/bindingTel/index.js
+8
-14
src/components/passport/common/veriCodeInput/index.js
+11
-12
src/components/passport/forgotPassword/index.js
+9
-10
src/components/passport/forgotPasswordEmail/index.js
+10
-10
src/components/passport/login/index.js
+15
-20
src/components/passport/studentRoot/index.js
+9
-14
src/store/userAction.js
+0
-1
src/utils/index.js
+11
-1
No files found.
src/common/Captcha-ali/index.js
0 → 100644
View file @
0ad15bc8
import
React
,
{
Component
}
from
'react'
;
import
'./index.scss'
import
{
initCaptchaNC
}
from
"@/utils"
const
appkey
=
'FFFF0N000000000090FC'
const
scene
=
'nc_login_h5'
class
CaptchaAli
extends
Component
{
nc
=
null
state
=
{
isLoaded
:
false
}
componentDidMount
()
{
const
_this
=
this
const
el
=
document
.
querySelector
(
'#nc'
)
el
&&
initCaptchaNC
(()
=>
{
const
nc_token
=
[
appkey
,
(
new
Date
()).
getTime
(),
Math
.
random
()].
join
(
':'
);
this
.
nc
=
NoCaptcha
.
init
({
renderTo
:
'#nc'
,
appkey
,
scene
,
token
:
nc_token
,
elementID
:
[
'tel'
],
bannerHidden
:
false
,
callback
(
data
)
{
_this
.
props
.
onVerify
({
app_key
:
appkey
,
scene
,
token
:
nc_token
,
session_id
:
data
.
csessionid
,
sig
:
data
.
sig
})
},
error
(
s
)
{
console
.
log
(
s
)
}
})
NoCaptcha
.
setEnabled
(
true
);
this
.
nc
.
reset
()
this
.
props
.
getInstance
(
this
.
nc
)
})
}
render
()
{
const
{
mb
=
30
}
=
this
.
props
return
(
<
div
id
=
{
'captcha'
}
style
=
{{
marginBottom
:
`
${
mb
}
px`
}}
>
<
div
id
=
"nc"
><
/div
>
<
/div
>
);
}
}
export
default
CaptchaAli
;
\ No newline at end of file
src/common/Captcha-ali/index.scss
0 → 100644
View file @
0ad15bc8
#captcha
{
._nc
{
.stage
{
padding
:
0
;
}
.stage1
{
height
:
48px
;
.label
{
height
:
46px
;
}
.button
{
width
:
48px
;
height
:
48px
;
}
.slider
{
height
:
48px
;
width
:
100%
;
left
:
0
;
}
}
}
}
\ No newline at end of file
src/common/bindPhone/index.js
View file @
0ad15bc8
...
@@ -2,8 +2,8 @@ import React, { Component } from 'react';
...
@@ -2,8 +2,8 @@ import React, { Component } from 'react';
import
{
Formik
,
Form
,
Field
}
from
'formik'
;
import
{
Formik
,
Form
,
Field
}
from
'formik'
;
import
{
Toast
}
from
'antd-mobile'
;
import
{
Toast
}
from
'antd-mobile'
;
import
{
isEmpty
}
from
'lodash'
;
import
{
isEmpty
}
from
'lodash'
;
import
Captcha
from
'@/common/Captcha'
;
import
Captcha
Ali
from
"@common/Captcha-ali"
import
{
http
,
getParam
}
from
'@/utils'
;
import
{
http
}
from
'@/utils'
;
import
'./index.scss'
;
import
'./index.scss'
;
class
BindPhone
extends
Component
{
class
BindPhone
extends
Component
{
...
@@ -21,7 +21,8 @@ class BindPhone extends Component {
...
@@ -21,7 +21,8 @@ class BindPhone extends Component {
bindInfo
:
{},
bindInfo
:
{},
country
:
{
country
:
{
num
:
'86'
num
:
'86'
}
},
validationData
:
null
}
}
}
}
...
@@ -30,14 +31,14 @@ class BindPhone extends Component {
...
@@ -30,14 +31,14 @@ class BindPhone extends Component {
}
}
initCountryInfo
=
()
=>
{
initCountryInfo
=
()
=>
{
const
{
country
}
=
this
.
props
;
const
{
country
}
=
this
.
props
;
this
.
setState
({
this
.
setState
({
country
country
});
});
}
}
toFetchCountryNum
=
()
=>
{
toFetchCountryNum
=
()
=>
{
const
{
history
,
hideBindPhone
}
=
this
.
props
;
const
{
history
,
hideBindPhone
}
=
this
.
props
;
hideBindPhone
();
hideBindPhone
();
history
.
push
(
'/country?from=bind'
);
history
.
push
(
'/country?from=bind'
);
}
}
...
@@ -46,45 +47,43 @@ class BindPhone extends Component {
...
@@ -46,45 +47,43 @@ class BindPhone extends Component {
this
.
captchaInstance
=
instance
;
this
.
captchaInstance
=
instance
;
}
}
onVerify
=
(
err
,
data
)
=>
{
onVerify
=
(
data
)
=>
{
if
(
err
)
{
console
.
log
(
err
);
}
else
{
this
.
setState
({
this
.
setState
({
validate
:
data
.
validate
validate
:
true
,
});
validationData
:
data
}
}
)
}
}
// 获取手机号验证码
// 获取手机号验证码
handleToSend
=
({
tel
,
code
})
=>
{
handleToSend
=
({
tel
,
code
})
=>
{
let
{
validate
,
seconds
,
isFirst
,
isTimer
,
country
:
{
num
=
'86'
}
}
=
this
.
state
;
let
{
validate
,
seconds
,
validationData
,
isFirst
,
isTimer
,
country
:
{
num
=
'86'
}
}
=
this
.
state
;
if
(
validate
)
{
if
(
validate
)
{
if
(
!
isFirst
)
{
if
(
!
isFirst
)
{
Toast
.
info
(
'请重新进行滑块验证'
,
2
,
null
,
false
);
Toast
.
info
(
'请重新进行滑块验证'
,
2
,
null
,
false
);
this
.
captchaInstance
.
re
fresh
();
this
.
captchaInstance
.
re
set
();
this
.
setState
({
this
.
setState
({
isFirst
:
true
isFirst
:
true
});
});
return
return
}
}
if
(
!
isTimer
)
{
if
(
!
isTimer
)
{
if
(
!
tel
)
{
if
(
!
tel
)
{
Toast
.
info
(
'手机号码不能为空'
,
2
,
null
,
false
);
Toast
.
info
(
'手机号码不能为空'
,
2
,
null
,
false
);
}
else
if
(
!
/^
\d
+$/
.
test
(
tel
))
{
}
else
if
(
!
/^
\d
+$/
.
test
(
tel
))
{
Toast
.
info
(
'请输入正确格式的手机号码'
,
2
,
null
,
false
);
Toast
.
info
(
'请输入正确格式的手机号码'
,
2
,
null
,
false
);
}
else
{
}
else
{
// 获取验证码
// 获取验证码
http
.
post
(
http
.
post
(
`
${
API
[
'passport-api'
]}
/m/personal/bindPhoneSendCode`
,
`
${
API
[
'passport-api'
]}
/m/personal/bindPhoneSendCode`
,
{
{
area_code
:
`00
${
num
}
`
,
area_code
:
`00
${
num
}
`
,
phone_num
:
tel
phone_num
:
tel
,
...
validationData
}
}
).
then
(
res
=>
{
).
then
(
res
=>
{
const
{
errno
,
msg
}
=
res
.
data
;
const
{
errno
,
msg
}
=
res
.
data
;
if
(
errno
===
200
)
{
if
(
errno
===
200
)
{
Toast
.
info
(
'验证码发送成功'
,
2
,
null
,
false
);
Toast
.
info
(
'验证码发送成功'
,
2
,
null
,
false
);
// 倒计时
// 倒计时
...
@@ -95,7 +94,7 @@ class BindPhone extends Component {
...
@@ -95,7 +94,7 @@ class BindPhone extends Component {
isTimer
:
false
,
isTimer
:
false
,
seconds
:
60
seconds
:
60
});
});
}
else
{
}
else
{
this
.
setState
({
this
.
setState
({
isTimer
:
true
,
isTimer
:
true
,
seconds
:
--
seconds
seconds
:
--
seconds
...
@@ -107,7 +106,7 @@ class BindPhone extends Component {
...
@@ -107,7 +106,7 @@ class BindPhone extends Component {
this
.
setState
({
this
.
setState
({
isFirst
:
false
isFirst
:
false
})
})
}
else
{
}
else
{
Toast
.
info
(
msg
,
2
,
null
,
false
);
Toast
.
info
(
msg
,
2
,
null
,
false
);
}
}
})
})
...
@@ -119,8 +118,8 @@ class BindPhone extends Component {
...
@@ -119,8 +118,8 @@ class BindPhone extends Component {
// 绑定手机
// 绑定手机
toBindPhone
=
()
=>
{
toBindPhone
=
()
=>
{
const
{
accountInfo
:
{
tel
,
code
},
country
:
{
num
=
'86'
}
}
=
this
.
state
;
const
{
accountInfo
:
{
tel
,
code
},
country
:
{
num
=
'86'
}
}
=
this
.
state
;
const
{
handleToConfirmPhone
,
successBindPhone
}
=
this
.
props
;
const
{
handleToConfirmPhone
,
successBindPhone
}
=
this
.
props
;
const
params
=
{
const
params
=
{
area_code
:
`00
${
num
}
`
,
area_code
:
`00
${
num
}
`
,
mobile
:
tel
,
mobile
:
tel
,
...
@@ -135,22 +134,22 @@ class BindPhone extends Component {
...
@@ -135,22 +134,22 @@ class BindPhone extends Component {
is_valid
:
1
,
// is_valid 是否验证 1:验证(默认),0不验证
is_valid
:
1
,
// is_valid 是否验证 1:验证(默认),0不验证
}
}
).
then
(
res
=>
{
).
then
(
res
=>
{
const
{
code
,
data
,
msg
}
=
res
.
data
;
const
{
code
,
data
,
msg
}
=
res
.
data
;
if
(
code
===
200
)
{
if
(
code
===
200
)
{
if
(
data
.
tip_info
)
{
if
(
data
.
tip_info
)
{
handleToConfirmPhone
(
params
,
data
.
tip_info
);
handleToConfirmPhone
(
params
,
data
.
tip_info
);
}
else
{
}
else
{
successBindPhone
();
successBindPhone
();
}
}
}
else
{
}
else
{
Toast
.
info
(
msg
,
2
,
null
,
false
);
Toast
.
info
(
msg
,
2
,
null
,
false
);
}
}
});
});
}
}
render
()
{
render
()
{
const
{
desc
,
skip
=
'year'
}
=
this
.
props
;
const
{
desc
,
skip
=
'year'
}
=
this
.
props
;
const
{
country
,
validate
,
isTimer
,
seconds
}
=
this
.
state
;
const
{
country
,
validate
,
isTimer
,
seconds
}
=
this
.
state
;
return
(
return
(
<
Formik
<
Formik
initialValues
=
{{
initialValues
=
{{
...
@@ -161,7 +160,7 @@ class BindPhone extends Component {
...
@@ -161,7 +160,7 @@ class BindPhone extends Component {
const
errors
=
{};
const
errors
=
{};
// if (!validateTel(tel)) {
// if (!validateTel(tel)) {
if
(
!
/^
\d
+$/
.
test
(
tel
))
{
if
(
!
/^
\d
+$/
.
test
(
tel
))
{
errors
.
tel
=
'请填写正确格式的手机号'
;
errors
.
tel
=
'请填写正确格式的手机号'
;
}
}
if
(
!
/
[
0-9
]{6}
/
.
test
(
code
))
{
if
(
!
/
[
0-9
]{6}
/
.
test
(
code
))
{
...
@@ -170,7 +169,7 @@ class BindPhone extends Component {
...
@@ -170,7 +169,7 @@ class BindPhone extends Component {
return
errors
;
return
errors
;
}}
}}
onSubmit
=
{(
values
,
{
setStatus
,
setSubmitting
})
=>
{
onSubmit
=
{(
values
,
{
setStatus
,
setSubmitting
})
=>
{
this
.
setState
({
this
.
setState
({
accountInfo
:
{
accountInfo
:
{
...
values
...
values
...
@@ -205,10 +204,7 @@ class BindPhone extends Component {
...
@@ -205,10 +204,7 @@ class BindPhone extends Component {
}}
}}
/
>
/
>
<
/div
>
<
/div
>
<
Captcha
<
CaptchaAli
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
<
div
className
=
"popup-form__item"
>
<
div
className
=
"popup-form__item"
>
<
Field
<
Field
name
=
"code"
name
=
"code"
...
@@ -225,18 +221,18 @@ class BindPhone extends Component {
...
@@ -225,18 +221,18 @@ class BindPhone extends Component {
/
>
/
>
<
button
<
button
className
=
"popup-form__button--code"
className
=
"popup-form__button--code"
data
-
status
=
{(
validate
&&
!
isTimer
)?
'do'
:
''
}
data
-
status
=
{(
validate
&&
!
isTimer
)
?
'do'
:
''
}
type
=
"button"
type
=
"button"
onClick
=
{()
=>
this
.
handleToSend
({
tel
,
code
})}
onClick
=
{()
=>
this
.
handleToSend
({
tel
,
code
})}
>
>
{
{
isTimer
?
`重新发送
${
seconds
}
s`
:
'发送验证码'
isTimer
?
`重新发送
${
seconds
}
s`
:
'发送验证码'
}
}
<
/button
>
<
/button
>
<
/div
>
<
/div
>
<
button
<
button
className
=
"popup-form__button--bundle"
className
=
"popup-form__button--bundle"
data
-
status
=
{(
tel
&&
code
&&
isEmpty
(
errors
))?
'do'
:
'done'
}
data
-
status
=
{(
tel
&&
code
&&
isEmpty
(
errors
))
?
'do'
:
'done'
}
type
=
"submit"
type
=
"submit"
>
>
完成绑定
完成绑定
...
...
src/common/index.js
View file @
0ad15bc8
...
@@ -5,6 +5,7 @@ export { default as OrderItem } from './OrderList'
...
@@ -5,6 +5,7 @@ export { default as OrderItem } from './OrderList'
export
{
default
as
HeaderBar
}
from
'./HeaderBar'
export
{
default
as
HeaderBar
}
from
'./HeaderBar'
export
{
default
as
CallApp
}
from
'./CallApp'
export
{
default
as
CallApp
}
from
'./CallApp'
export
{
default
as
Captcha
}
from
'./Captcha'
export
{
default
as
Captcha
}
from
'./Captcha'
export
{
default
as
CaptchaAli
}
from
'./Captcha-ali'
export
{
default
as
ClearableInput
}
from
"./ClearableInput"
export
{
default
as
ClearableInput
}
from
"./ClearableInput"
export
{
default
as
Loading
}
from
'./Loading'
export
{
default
as
Loading
}
from
'./Loading'
export
{
default
as
RenderTabBar
}
from
'./renderTabBar'
export
{
default
as
RenderTabBar
}
from
'./renderTabBar'
...
...
src/components/detail/redPacket/index.js
View file @
0ad15bc8
This diff is collapsed.
Click to expand it.
src/components/detail/redPacket/index.scss
View file @
0ad15bc8
...
@@ -323,6 +323,34 @@
...
@@ -323,6 +323,34 @@
border-radius
:
10px
;
border-radius
:
10px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
background-color
:
#fff
;
background-color
:
#fff
;
#nc
{
$height
:
36px
;
height
:
$height
;
._nc
{
.stage1
{
height
:
$height
;
.icon
{
left
:
5px
;
}
.button
{
width
:
$height
;
height
:
$height
;
}
}
.slider
{
height
:
$height
;
.label
{
height
:
100%
;
line-height
:
$height
;
}
.bg-green
{
height
:
$height
;
line-height
:
$height
;
}
}
}
}
}
}
.popup-form__title
{
.popup-form__title
{
...
...
src/components/passport/bindingTel/index.js
View file @
0ad15bc8
...
@@ -5,11 +5,7 @@ import { http, getParam } from "@/utils"
...
@@ -5,11 +5,7 @@ import { http, getParam } from "@/utils"
import
{
compose
}
from
"redux"
import
{
compose
}
from
"redux"
import
{
connect
}
from
"react-redux"
import
{
connect
}
from
"react-redux"
import
{
setCurrentUser
}
from
"@/store/userAction"
import
{
setCurrentUser
}
from
"@/store/userAction"
import
Captcha
from
'@/common/Captcha'
import
{
HeaderBar
,
CaptchaAli
}
from
'@/common'
import
{
HeaderBar
}
from
'@/common'
// import ClearableInput from '@common/ClearableInput'
import
ClearableInput
from
'../common/clearableInputWithCountryCodes'
import
ClearableInput
from
'../common/clearableInputWithCountryCodes'
import
Button
from
'../common/Button'
import
Button
from
'../common/Button'
import
VeriCodeInput
from
'../common/veriCodeInput'
import
VeriCodeInput
from
'../common/veriCodeInput'
...
@@ -21,7 +17,8 @@ class BindingTel extends Component {
...
@@ -21,7 +17,8 @@ class BindingTel extends Component {
state
=
{
state
=
{
validate
:
null
,
validate
:
null
,
captchaInstance
:
null
captchaInstance
:
null
,
validationData
:
null
}
}
getCaptchaInstance
=
instance
=>
{
getCaptchaInstance
=
instance
=>
{
...
@@ -29,15 +26,12 @@ class BindingTel extends Component {
...
@@ -29,15 +26,12 @@ class BindingTel extends Component {
captchaInstance
:
instance
captchaInstance
:
instance
})
})
}
}
onVerify
=
(
err
,
data
)
=>
{
onVerify
=
(
data
)
=>
{
if
(
err
)
{
console
.
log
(
err
)
}
else
{
this
.
setState
({
this
.
setState
({
validate
:
data
.
validate
validate
:
true
,
validationData
:
data
})
})
}
}
}
render
()
{
render
()
{
const
{
const
{
...
@@ -79,16 +73,16 @@ class BindingTel extends Component {
...
@@ -79,16 +73,16 @@ class BindingTel extends Component {
placeholder
=
{
'验证码'
}
placeholder
=
{
'验证码'
}
account
=
{
values
.
tel
}
account
=
{
values
.
tel
}
tel
=
{
values
.
tel
}
tel
=
{
values
.
tel
}
challenge
=
{
this
.
state
.
validate
}
instance
=
{
this
.
state
.
captchaInstance
}
instance
=
{
this
.
state
.
captchaInstance
}
action
=
{
'auth'
}
action
=
{
'auth'
}
country
=
{
country
}
country
=
{
country
}
validationData
=
{
this
.
state
.
validationData
}
/
>
/
>
)
)
}}
}}
/
>
/
>
<
Captcha
onVerify
=
{
this
.
onVerify
}
getInstance
=
{
this
.
getCaptchaInstance
}
/
>
<
Captcha
Ali
onVerify
=
{
this
.
onVerify
}
getInstance
=
{
this
.
getCaptchaInstance
}
mb
=
{
0
}
/
>
<
Button
className
=
{
'complete-btn'
}
<
Button
className
=
{
'complete-btn'
}
active
=
{
values
.
tel
&&
values
.
veriCode
&&
isEmpty
(
errors
)}
>
完成
<
/Button
>
active
=
{
values
.
tel
&&
values
.
veriCode
&&
isEmpty
(
errors
)}
>
完成
<
/Button
>
<
/Form
>
<
/Form
>
...
...
src/components/passport/common/veriCodeInput/index.js
View file @
0ad15bc8
...
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
...
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import
'./veri-code-input.scss'
import
'./veri-code-input.scss'
import
{
http
,
validateEmail
}
from
'@/utils'
;
import
{
http
,
validateEmail
}
from
'@/utils'
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
has
}
from
'lodash'
import
{
has
,
isEmpty
}
from
'lodash'
import
classnames
from
'classnames'
import
classnames
from
'classnames'
...
@@ -23,7 +23,7 @@ class VeriCodeInput extends Component {
...
@@ -23,7 +23,7 @@ class VeriCodeInput extends Component {
let
{
count
}
=
this
.
state
let
{
count
}
=
this
.
state
if
(
!
this
.
state
.
isFirst
)
{
if
(
!
this
.
state
.
isFirst
)
{
Toast
.
info
(
'请重新进行滑块验证'
,
2
,
null
,
false
)
Toast
.
info
(
'请重新进行滑块验证'
,
2
,
null
,
false
)
this
.
props
.
instance
.
refresh
()
this
.
props
.
instance
.
reset
()
this
.
setState
({
this
.
setState
({
isFirst
:
true
isFirst
:
true
})
})
...
@@ -61,10 +61,10 @@ class VeriCodeInput extends Component {
...
@@ -61,10 +61,10 @@ class VeriCodeInput extends Component {
}
}
sendEmail
=
()
=>
{
sendEmail
=
()
=>
{
const
{
email
,
challenge
}
=
this
.
props
const
{
email
,
validationData
}
=
this
.
props
http
.
post
(
`
${
API
[
'passport-api'
]}
/send_email_code`
,
{
http
.
post
(
`
${
API
[
'passport-api'
]}
/send_email_code`
,
{
email
,
email
,
challenge
...
validationData
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
data
.
errno
===
0
)
{
if
(
res
.
data
.
errno
===
0
)
{
Toast
.
info
(
'验证码发送成功'
,
2
,
null
,
false
)
Toast
.
info
(
'验证码发送成功'
,
2
,
null
,
false
)
...
@@ -79,7 +79,7 @@ class VeriCodeInput extends Component {
...
@@ -79,7 +79,7 @@ class VeriCodeInput extends Component {
}
}
sendSMS
=
()
=>
{
sendSMS
=
()
=>
{
const
{
action
,
tel
,
account
,
challenge
,
checking
,
country
}
=
this
.
props
const
{
action
,
tel
,
account
,
validationData
,
checking
,
country
}
=
this
.
props
if
(
!
tel
)
{
if
(
!
tel
)
{
Toast
.
info
(
'请输入手机号'
)
Toast
.
info
(
'请输入手机号'
)
return
return
...
@@ -87,9 +87,9 @@ class VeriCodeInput extends Component {
...
@@ -87,9 +87,9 @@ class VeriCodeInput extends Component {
http
.
post
(
`
${
API
[
'passport-api'
]}
/quick_sms`
,
{
http
.
post
(
`
${
API
[
'passport-api'
]}
/quick_sms`
,
{
phone_num
:
tel
||
account
,
phone_num
:
tel
||
account
,
action
:
action
||
'login'
,
action
:
action
||
'login'
,
area_code
:
'00'
+
country
.
num
,
area_code
:
'00'
+
country
.
num
,
challenge
,
checking
,
checking
...
validationData
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
data
.
errno
===
0
)
{
if
(
res
.
data
.
errno
===
0
)
{
Toast
.
info
(
'验证码发送成功'
,
2
,
null
,
false
)
Toast
.
info
(
'验证码发送成功'
,
2
,
null
,
false
)
...
@@ -104,7 +104,7 @@ class VeriCodeInput extends Component {
...
@@ -104,7 +104,7 @@ class VeriCodeInput extends Component {
validate
=
()
=>
{
validate
=
()
=>
{
const
{
tel
,
challenge
,
email
}
=
this
.
props
const
{
tel
,
validationData
,
email
}
=
this
.
props
let
hasTel
=
has
(
this
.
props
,
'tel'
)
let
hasTel
=
has
(
this
.
props
,
'tel'
)
let
content
let
content
...
@@ -129,8 +129,7 @@ class VeriCodeInput extends Component {
...
@@ -129,8 +129,7 @@ class VeriCodeInput extends Component {
return
false
return
false
}
}
if
(
isEmpty
(
validationData
))
{
if
(
!
challenge
)
{
Toast
.
info
(
'请进行滑块验证'
,
2
,
null
,
false
)
Toast
.
info
(
'请进行滑块验证'
,
2
,
null
,
false
)
return
false
return
false
}
}
...
@@ -138,7 +137,7 @@ class VeriCodeInput extends Component {
...
@@ -138,7 +137,7 @@ class VeriCodeInput extends Component {
}
}
render
()
{
render
()
{
let
{
className
,
...
rest
}
=
this
.
props
let
{
className
,
validationData
,
...
rest
}
=
this
.
props
return
(
return
(
<
Input
<
Input
type
=
{
'number'
}
type
=
{
'number'
}
...
...
src/components/passport/forgotPassword/index.js
View file @
0ad15bc8
...
@@ -6,7 +6,7 @@ import { withFormik, Form, Field } from 'formik';
...
@@ -6,7 +6,7 @@ import { withFormik, Form, Field } from 'formik';
import
{
connect
}
from
'react-redux'
;
import
{
connect
}
from
'react-redux'
;
import
{
compose
}
from
'redux'
;
import
{
compose
}
from
'redux'
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
HeaderBar
,
Captcha
}
from
"@/common"
;
import
{
HeaderBar
,
Captcha
Ali
}
from
"@/common"
;
import
ClearableInput
from
'../common/clearableInputWithCountryCodes'
import
ClearableInput
from
'../common/clearableInputWithCountryCodes'
import
{
http
}
from
"@/utils"
;
import
{
http
}
from
"@/utils"
;
import
{
quickLogin
}
from
'@/store/userAction'
;
import
{
quickLogin
}
from
'@/store/userAction'
;
...
@@ -18,7 +18,8 @@ class ForgotPassword extends Component {
...
@@ -18,7 +18,8 @@ class ForgotPassword extends Component {
state
=
{
state
=
{
validate
:
null
,
validate
:
null
,
captchaInstance
:
null
captchaInstance
:
null
,
validationData
:
null
}
}
...
@@ -27,15 +28,12 @@ class ForgotPassword extends Component {
...
@@ -27,15 +28,12 @@ class ForgotPassword extends Component {
captchaInstance
:
instance
captchaInstance
:
instance
})
})
}
}
onVerify
=
(
err
,
data
)
=>
{
onVerify
=
(
data
)
=>
{
if
(
err
)
{
console
.
log
(
err
)
}
else
{
this
.
setState
({
this
.
setState
({
validate
:
data
.
validate
validationData
:
data
,
validate
:
true
})
})
}
}
}
onSubmissionError
=
()
=>
{
onSubmissionError
=
()
=>
{
const
errors
=
Object
.
values
(
this
.
props
.
errors
);
const
errors
=
Object
.
values
(
this
.
props
.
errors
);
errors
.
length
&&
Toast
.
info
(
errors
[
0
],
2
,
null
,
false
)
errors
.
length
&&
Toast
.
info
(
errors
[
0
],
2
,
null
,
false
)
...
@@ -84,13 +82,14 @@ class ForgotPassword extends Component {
...
@@ -84,13 +82,14 @@ class ForgotPassword extends Component {
action
=
{
'auth'
}
action
=
{
'auth'
}
checking
=
{
1
}
checking
=
{
1
}
country
=
{
country
}
country
=
{
country
}
validationData
=
{
this
.
state
.
validationData
}
/
>
/
>
)
)
}}
}}
/
>
/
>
}
}
<
OnSubmissionError
callback
=
{
this
.
onSubmissionError
}
/
>
<
OnSubmissionError
callback
=
{
this
.
onSubmissionError
}
/
>
<
Captcha
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
<
CaptchaAli
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
<
Button
className
=
{
'next_step'
}
active
=
{
isValid
}
>
下一步
<
/Button
>
<
Button
className
=
{
'next_step'
}
active
=
{
isValid
}
>
下一步
<
/Button
>
<
Link
className
=
{
'to-email'
}
to
=
{
`/passport/forgot-password-email`
}
replace
>
邮箱找回
<
/Link
>
<
Link
className
=
{
'to-email'
}
to
=
{
`/passport/forgot-password-email`
}
replace
>
邮箱找回
<
/Link
>
<
/Form
>
<
/Form
>
...
@@ -123,7 +122,7 @@ const formikConfig = {
...
@@ -123,7 +122,7 @@ const formikConfig = {
http
.
post
(
`
${
API
[
'passport-api'
]}
/check_phone_code`
,
{
http
.
post
(
`
${
API
[
'passport-api'
]}
/check_phone_code`
,
{
phone
:
values
.
tel
,
phone
:
values
.
tel
,
code
:
values
.
veriCode
,
code
:
values
.
veriCode
,
area_code
:
'00'
+
props
.
country
.
num
area_code
:
'00'
+
props
.
country
.
num
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
data
.
errno
==
0
)
{
if
(
res
.
data
.
errno
==
0
)
{
props
.
history
.
push
(
'/passport/set-password'
,
{
from
:
props
.
location
})
props
.
history
.
push
(
'/passport/set-password'
,
{
from
:
props
.
location
})
...
...
src/components/passport/forgotPasswordEmail/index.js
View file @
0ad15bc8
...
@@ -6,8 +6,8 @@ import { withFormik, Form, Field } from 'formik';
...
@@ -6,8 +6,8 @@ import { withFormik, Form, Field } from 'formik';
import
{
connect
}
from
'react-redux'
;
import
{
connect
}
from
'react-redux'
;
import
{
compose
}
from
'redux'
;
import
{
compose
}
from
'redux'
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
HeaderBar
,
C
aptcha
,
ClearableInput
}
from
"@/common"
;
import
{
HeaderBar
,
C
learableInput
,
CaptchaAli
}
from
"@/common"
;
import
{
validateEmail
,
http
,
api
}
from
"@/utils"
;
import
{
validateEmail
,
http
}
from
"@/utils"
;
import
{
quickLogin
}
from
'@/store/userAction'
;
import
{
quickLogin
}
from
'@/store/userAction'
;
import
OnSubmissionError
from
'../common/OnSubmissionError'
import
OnSubmissionError
from
'../common/OnSubmissionError'
import
{
Link
}
from
"react-router-dom"
;
import
{
Link
}
from
"react-router-dom"
;
...
@@ -17,7 +17,8 @@ class ForgotPassword extends Component {
...
@@ -17,7 +17,8 @@ class ForgotPassword extends Component {
state
=
{
state
=
{
validate
:
null
,
validate
:
null
,
captchaInstance
:
null
captchaInstance
:
null
,
validationData
:
null
}
}
...
@@ -26,15 +27,12 @@ class ForgotPassword extends Component {
...
@@ -26,15 +27,12 @@ class ForgotPassword extends Component {
captchaInstance
:
instance
captchaInstance
:
instance
})
})
}
}
onVerify
=
(
err
,
data
)
=>
{
onVerify
=
(
data
)
=>
{
if
(
err
)
{
console
.
log
(
err
)
}
else
{
this
.
setState
({
this
.
setState
({
validate
:
data
.
validate
validationData
:
data
,
validate
:
true
})
})
}
}
}
onSubmissionError
=
()
=>
{
onSubmissionError
=
()
=>
{
const
errors
=
Object
.
values
(
this
.
props
.
errors
);
const
errors
=
Object
.
values
(
this
.
props
.
errors
);
errors
.
length
&&
Toast
.
info
(
errors
[
0
],
2
,
null
,
false
)
errors
.
length
&&
Toast
.
info
(
errors
[
0
],
2
,
null
,
false
)
...
@@ -78,6 +76,7 @@ class ForgotPassword extends Component {
...
@@ -78,6 +76,7 @@ class ForgotPassword extends Component {
email
=
{
values
.
email
}
email
=
{
values
.
email
}
challenge
=
{
this
.
state
.
validate
}
challenge
=
{
this
.
state
.
validate
}
instance
=
{
this
.
state
.
captchaInstance
}
instance
=
{
this
.
state
.
captchaInstance
}
validationData
=
{
this
.
state
.
validationData
}
action
=
{
'auth'
}
action
=
{
'auth'
}
checking
=
{
1
}
checking
=
{
1
}
/
>
/
>
...
@@ -86,7 +85,8 @@ class ForgotPassword extends Component {
...
@@ -86,7 +85,8 @@ class ForgotPassword extends Component {
/
>
/
>
}
}
<
OnSubmissionError
callback
=
{
this
.
onSubmissionError
}
/
>
<
OnSubmissionError
callback
=
{
this
.
onSubmissionError
}
/
>
<
Captcha
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
{
/*<Captcha getInstance={this.getCaptchaInstance} onVerify={this.onVerify}/>*/
}
<
CaptchaAli
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
<
Button
className
=
{
'next_step'
}
active
=
{
isValid
}
>
下一步
<
/Button
>
<
Button
className
=
{
'next_step'
}
active
=
{
isValid
}
>
下一步
<
/Button
>
<
Link
className
=
{
'to-phone'
}
to
=
{
'/passport/forgot-password'
}
replace
>
手机号找回
<
/Link
>
<
Link
className
=
{
'to-phone'
}
to
=
{
'/passport/forgot-password'
}
replace
>
手机号找回
<
/Link
>
<
/Form
>
<
/Form
>
...
...
src/components/passport/login/index.js
View file @
0ad15bc8
import
React
,
{
Component
}
from
'react'
import
React
,
{
Component
}
from
'react'
import
'./wechatLogin.scss'
import
'./wechatLogin.scss'
// import Input from "../common/Input"
import
Input
from
'../common/inputWithCountryCodes'
import
Input
from
'../common/inputWithCountryCodes'
import
LoginButton
from
'../common/LoginButton'
import
LoginButton
from
'../common/LoginButton'
import
LoginWays
from
'../common/LoginWays'
import
LoginWays
from
'../common/LoginWays'
import
Header
from
'../common/Header'
import
Header
from
'../common/Header'
import
VeriCodeInput
from
'../common/veriCodeInput'
import
VeriCodeInput
from
'../common/veriCodeInput'
import
{
Form
,
Field
,
withFormik
}
from
"formik"
import
{
Form
,
Field
,
withFormik
}
from
"formik"
import
Captcha
from
'@/common/Captcha'
import
{
quickLogin
}
from
'@/store/userAction'
;
import
{
quickLogin
}
from
'@/store/userAction'
;
import
{
connect
}
from
'react-redux'
;
import
{
connect
}
from
'react-redux'
;
import
{
compose
}
from
'redux'
;
import
{
compose
}
from
'redux'
;
import
{
isEmpty
}
from
'lodash'
import
{
isEmpty
}
from
'lodash'
import
{
Toast
}
from
'antd-mobile'
;
import
{
Toast
}
from
'antd-mobile'
;
import
{
HeaderBar
}
from
"@/common"
;
import
{
HeaderBar
,
CaptchaAli
}
from
"@/common"
;
class
Login
extends
Component
{
class
Login
extends
Component
{
state
=
{
state
=
{
validate
:
null
,
validate
:
null
,
captchaInstance
:
null
captchaInstance
:
null
,
validationData
:
null
}
}
loginWaysClick
=
method
=>
{
loginWaysClick
=
method
=>
{
...
@@ -56,18 +55,16 @@ class Login extends Component {
...
@@ -56,18 +55,16 @@ class Login extends Component {
captchaInstance
:
instance
captchaInstance
:
instance
})
})
}
}
onVerify
=
(
err
,
data
)
=>
{
if
(
err
)
{
onVerify
=
(
data
)
=>
{
console
.
log
(
err
)
}
else
{
this
.
setState
({
this
.
setState
({
validate
:
data
.
validate
validationData
:
data
,
validate
:
true
})
})
}
}
}
toStudentRegister
=
()
=>
{
toStudentRegister
=
()
=>
{
const
{
history
}
=
this
.
props
;
const
{
history
}
=
this
.
props
;
history
.
push
(
'/passport/student-login'
)
history
.
push
(
'/passport/student-login'
)
}
}
...
@@ -77,11 +74,9 @@ class Login extends Component {
...
@@ -77,11 +74,9 @@ class Login extends Component {
let
pathname
=
location
.
state
&&
location
.
state
.
from
&&
location
.
state
.
from
.
pathname
let
pathname
=
location
.
state
&&
location
.
state
.
from
&&
location
.
state
.
from
.
pathname
let
search
=
location
.
state
&&
location
.
state
.
from
&&
location
.
state
.
from
.
search
let
search
=
location
.
state
&&
location
.
state
.
from
&&
location
.
state
.
from
.
search
console
.
log
(
action
,
pathname
,
search
);
if
(
action
!==
'POP'
)
{
if
(
action
!==
'POP'
){
let
historyUrl
=
`
${
pathname
}${
search
}
`
let
historyUrl
=
`
${
pathname
}${
search
}
`
window
.
localStorage
.
setItem
(
'HistoryUrl'
,
historyUrl
)
window
.
localStorage
.
setItem
(
'HistoryUrl'
,
historyUrl
)
}
}
}
}
...
@@ -107,6 +102,7 @@ class Login extends Component {
...
@@ -107,6 +102,7 @@ class Login extends Component {
placeholder
=
{
'手机号快捷登录(免注册)'
}
placeholder
=
{
'手机号快捷登录(免注册)'
}
wrapperClass
=
{
'tel-input'
}
wrapperClass
=
{
'tel-input'
}
country
=
{
country
}
country
=
{
country
}
id
=
{
'tel'
}
/
>
/
>
)}
)}
>
>
...
@@ -124,18 +120,17 @@ class Login extends Component {
...
@@ -124,18 +120,17 @@ class Login extends Component {
style
=
{{
fontSize
:
'20px'
,
left
:
'12px'
}}
style
=
{{
fontSize
:
'20px'
,
left
:
'12px'
}}
/>
}
/>
}
tel
=
{
values
.
tel
}
tel
=
{
values
.
tel
}
challenge
=
{
this
.
state
.
validate
}
errors
=
{
errors
}
errors
=
{
errors
}
placeholder
=
{
'请输入验证码'
}
placeholder
=
{
'请输入验证码'
}
instance
=
{
this
.
state
.
captchaInstance
}
instance
=
{
this
.
state
.
captchaInstance
}
validationData
=
{
this
.
state
.
validationData
}
country
=
{
country
}
country
=
{
country
}
/
>
/
>
)}
)}
/
>
/
>
}
}
<
Captcha
mrBtm
=
{
this
.
state
.
validate
?
'20px'
:
'33px'
}
getInstance
=
{
this
.
getCaptchaInstance
}
<
CaptchaAli
onVerify
=
{
this
.
onVerify
}
getInstance
=
{
this
.
getCaptchaInstance
}
/
>
onVerify
=
{
this
.
onVerify
}
/
>
<
LoginButton
active
=
{
values
.
tel
&&
values
.
veriCode
&&
isEmpty
(
errors
)}
/
>
<
LoginButton
active
=
{
values
.
tel
&&
values
.
veriCode
&&
isEmpty
(
errors
)}
/
>
{
/* 助学计划 */
}
{
/* 助学计划 */
}
...
@@ -159,7 +154,7 @@ const FormikConfig = {
...
@@ -159,7 +154,7 @@ const FormikConfig = {
props
.
quickLogin
({
props
.
quickLogin
({
phone_num
:
values
.
tel
,
phone_num
:
values
.
tel
,
phone_code
:
values
.
veriCode
,
phone_code
:
values
.
veriCode
,
area_code
:
'00'
+
props
.
country
.
num
,
area_code
:
'00'
+
props
.
country
.
num
,
redirect
:
from
&&
encodeURIComponent
(
window
.
location
.
origin
+
from
.
pathname
+
from
.
search
+
from
.
hash
)
redirect
:
from
&&
encodeURIComponent
(
window
.
location
.
origin
+
from
.
pathname
+
from
.
search
+
from
.
hash
)
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
hasError
)
{
if
(
res
.
hasError
)
{
...
...
src/components/passport/studentRoot/index.js
View file @
0ad15bc8
...
@@ -5,8 +5,7 @@ import { studentLogin } from '@/store/userAction';
...
@@ -5,8 +5,7 @@ import { studentLogin } from '@/store/userAction';
import
{
http
}
from
'@/utils'
;
import
{
http
}
from
'@/utils'
;
import
{
Formik
,
Form
,
Field
}
from
'formik'
;
import
{
Formik
,
Form
,
Field
}
from
'formik'
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
Toast
}
from
"antd-mobile"
;
import
{
HeaderBar
}
from
"@/common"
;
import
{
HeaderBar
,
CaptchaAli
}
from
"@/common"
;
import
Captcha
from
'@/common/Captcha'
import
Header
from
'../common/Header'
;
import
Header
from
'../common/Header'
;
import
Input
from
'../common/inputWithCountryCodes'
;
import
Input
from
'../common/inputWithCountryCodes'
;
import
VeriCodeInput
from
'../common/veriCodeInput'
;
import
VeriCodeInput
from
'../common/veriCodeInput'
;
...
@@ -33,6 +32,7 @@ class StudentRoot extends PureComponent {
...
@@ -33,6 +32,7 @@ class StudentRoot extends PureComponent {
list
:
[],
list
:
[],
schoolList
:
[],
schoolList
:
[],
schoolName
:
''
,
schoolName
:
''
,
validationData
:
null
,
};
};
}
}
...
@@ -73,7 +73,7 @@ class StudentRoot extends PureComponent {
...
@@ -73,7 +73,7 @@ class StudentRoot extends PureComponent {
redirect
:
from
&&
window
.
location
.
origin
+
from
.
pathname
+
from
.
search
+
from
.
hash
,
redirect
:
from
&&
window
.
location
.
origin
+
from
.
pathname
+
from
.
search
+
from
.
hash
,
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
hasError
)
{
if
(
res
.
hasError
)
{
captchaInstance
.
re
fresh
();
captchaInstance
.
re
set
();
Toast
.
info
(
res
.
msg
,
2
,
null
,
false
);
Toast
.
info
(
res
.
msg
,
2
,
null
,
false
);
}
}
});
});
...
@@ -85,12 +85,11 @@ class StudentRoot extends PureComponent {
...
@@ -85,12 +85,11 @@ class StudentRoot extends PureComponent {
});
});
}
}
onVerify
=
(
err
,
data
)
=>
{
onVerify
=
(
data
)
=>
{
if
(
!
err
)
{
this
.
setState
({
this
.
setState
({
validate
:
data
.
validate
validationData
:
data
,
});
validate
:
true
}
}
)
}
}
selectSwitch
=
(
key
,
value
)
=>
{
selectSwitch
=
(
key
,
value
)
=>
{
...
@@ -194,11 +193,7 @@ class StudentRoot extends PureComponent {
...
@@ -194,11 +193,7 @@ class StudentRoot extends PureComponent {
placeholder
=
"密码需要包含6-16位字母和数字"
placeholder
=
"密码需要包含6-16位字母和数字"
/>
/>
<
/div
>
<
/div
>
<
Captcha
<
CaptchaAli
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
mb
=
{
15
}
/
>
mrBtm
=
{
'15px'
}
getInstance
=
{
this
.
getCaptchaInstance
}
onVerify
=
{
this
.
onVerify
}
/
>
{
{
validate
&&
validate
&&
<
Field
<
Field
...
@@ -210,7 +205,7 @@ class StudentRoot extends PureComponent {
...
@@ -210,7 +205,7 @@ class StudentRoot extends PureComponent {
className
=
{
'student-form__code'
}
className
=
{
'student-form__code'
}
icon
=
{
<
i
className
=
{
'iconfont iconduanxin'
}
style
=
{{
fontSize
:
'20px'
,
left
:
'12px'
}}
/>
}
icon
=
{
<
i
className
=
{
'iconfont iconduanxin'
}
style
=
{{
fontSize
:
'20px'
,
left
:
'12px'
}}
/>
}
tel
=
{
props
.
values
.
tel
}
tel
=
{
props
.
values
.
tel
}
challenge
=
{
validate
}
validationData
=
{
this
.
state
.
validationData
}
errors
=
{
props
.
errors
}
errors
=
{
props
.
errors
}
placeholder
=
{
'请输入验证码'
}
placeholder
=
{
'请输入验证码'
}
instance
=
{
captchaInstance
}
instance
=
{
captchaInstance
}
...
...
src/store/userAction.js
View file @
0ad15bc8
...
@@ -16,7 +16,6 @@ const accountLogin = user => dispatch => {
...
@@ -16,7 +16,6 @@ const accountLogin = user => dispatch => {
const
studentLogin
=
params
=>
dispatch
=>
{
const
studentLogin
=
params
=>
dispatch
=>
{
return
http
.
post
(
`
${
API
[
'passport-api'
]}
/phone_reg`
,
{
return
http
.
post
(
`
${
API
[
'passport-api'
]}
/phone_reg`
,
{
challenge
:
params
.
validate
,
phone
:
params
.
tel
,
phone
:
params
.
tel
,
password
:
params
.
password
,
password
:
params
.
password
,
code
:
params
.
code
,
code
:
params
.
code
,
...
...
src/utils/index.js
View file @
0ad15bc8
...
@@ -67,6 +67,15 @@ function initCaptcha(cb) {
...
@@ -67,6 +67,15 @@ function initCaptcha(cb) {
}
}
function
initCaptchaNC
(
cb
)
{
if
(
window
.
NoCaptcha
&&
typeof
window
.
NoCaptcha
.
init
===
'function'
)
{
cb
()
}
else
{
const
url
=
'//g.alicdn.com/sd/nch5/index.js'
+
'?t='
+
getTimestamp
(
1
*
60
*
1000
)
loadScript
(
url
,
cb
)
}
}
export
const
is_weixin
=
()
=>
{
export
const
is_weixin
=
()
=>
{
var
ua
=
window
.
navigator
.
userAgent
.
toLowerCase
();
var
ua
=
window
.
navigator
.
userAgent
.
toLowerCase
();
...
@@ -126,11 +135,12 @@ export {
...
@@ -126,11 +135,12 @@ export {
export
{
export
{
html
,
html
,
initCaptcha
,
initCaptcha
,
initCaptchaNC
,
validateTel
,
validateTel
,
validateEmail
,
validateEmail
,
browser
,
browser
,
isLogin
,
isLogin
,
dateCountDown
dateCountDown
,
}
}
export
{
export
{
default
as
SendMessageToApp
default
as
SendMessageToApp
...
...
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