Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
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
黄庭坚
jinfa-platform
Commits
bbdd4f64
Commit
bbdd4f64
authored
Jan 29, 2021
by
GuanHua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 1.登录页面广告图排序问题;2.忘记密码的密码规则提示;3.隐藏登录页面第三方登录方式入口;4.购物车提交的订单,缺少发票信息问题
parent
ea167965
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
163 additions
and
138 deletions
+163
-138
index.tsx
src/pages/lxMall/purchaseOrder/index.tsx
+7
-0
forgetPwd.tsx
src/pages/user/forgetPwd.tsx
+16
-15
index.tsx
src/pages/user/index.tsx
+112
-104
register.tsx
src/pages/user/register.tsx
+5
-5
index.ts
src/pages/user/schema/index.ts
+23
-14
No files found.
src/pages/lxMall/purchaseOrder/index.tsx
View file @
bbdd4f64
...
...
@@ -554,6 +554,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
let
logisticsInfo
=
{}
setConfirmLoading
(
true
)
const
purchaseIds
=
[]
let
isInvoice
=
false
for
(
const
item
of
selectOrderList
)
{
purchaseIds
.
push
(
item
.
id
)
productIds
.
push
(
item
.
commodityUnitPrice
.
id
)
...
...
@@ -563,6 +564,11 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
hasLogistics
=
true
logisticsInfo
=
item
.
commodityUnitPrice
.
commodity
.
logistics
}
if
(
item
.
commodityUnitPrice
.
commodity
.
isInvoice
)
{
isInvoice
=
true
}
const
buyCommodityInfo
:
any
=
{
id
:
item
.
commodityUnitPrice
.
id
,
purchaseId
:
item
.
id
,
...
...
@@ -602,6 +608,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
supplyMembersId
:
selectItem
.
memberId
,
supplyMembersRoleId
:
selectItem
.
memberRoleId
,
shopId
:
storeId
,
isInvoice
,
orderList
:
[{
id
:
selectItem
.
id
,
shopname
:
selectItem
.
shopname
,
...
...
src/pages/user/forgetPwd.tsx
View file @
bbdd4f64
import
React
,
{
useState
,
Fragment
}
from
'react'
;
import
React
,
{
Fragment
}
from
'react'
;
import
cx
from
'classnames'
;
import
{
Row
,
Button
,
message
}
from
'antd'
;
import
{
Link
,
Helmet
,
history
}
from
'umi'
import
{
FormPage
,
RiskCheck
}
from
'god'
import
{
IFormControllers
,
IFormButtonTypes
}
from
'god/dist/src/form-page'
import
'./index.less'
import
NiceForm
from
'@/components/NiceForm'
;
import
{
forgetPwdSchema
}
from
'./schema'
;
import
{
PATTERN_MAPS
}
from
'@/constants/regExp'
;
...
...
@@ -12,7 +9,8 @@ import { omit } from '@/utils';
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
encryptedByAES
}
from
'@/utils/cryptoAes'
;
import
messages
from
'@/constants/responseCode'
;
import
PasswordInput
from
'./components/PasswordInput'
import
'./index.less'
const
actions
=
createFormActions
()
...
...
@@ -46,8 +44,11 @@ const GetBack: React.FC = () => {
schema=
{
forgetPwdSchema
}
onSubmit=
{
handleSubmit
}
actions=
{
actions
}
components=
{
{
PasswordInput
,
}
}
expressionScope=
{
{
SubmitBtn
SubmitBtn
,
}
}
effects=
{
(
$
,
{
setFieldState
,
getFieldState
})
=>
{
$
(
'onFieldInputChange'
,
'account'
).
subscribe
(
fieldState
=>
{
...
...
@@ -76,7 +77,7 @@ const GetBack: React.FC = () => {
if
(
PATTERN_MAPS
.
email
.
test
(
fieldState
.
value
))
{
// 校验邮箱格式通过时, 需请求接口判断邮箱是否存在数据库
PublicApi
.
getMemberRegisterEmailCheck
({
email
:
fieldState
.
value
email
:
encodeURI
(
fieldState
.
value
)
},
{
ctlType
:
'none'
,
useCache
:
true
,
ttl
:
60
*
1000
}).
then
(({
code
,
data
})
=>
{
if
(
code
===
1000
)
{
setFieldState
(
'account'
,
state
=>
{
...
...
@@ -95,14 +96,14 @@ const GetBack: React.FC = () => {
const
selfValue
=
fieldState
.
value
const
otherName
=
selfName
==
'password'
?
'confirmPassword'
:
'password'
const
otherValue
=
getFieldState
(
otherName
,
state
=>
state
.
value
)
setFieldState
(
otherName
,
state
=>
{
if
(
selfValue
&&
otherValue
&&
selfValue
!==
otherValue
)
{
state
.
errors
=
[
'两次密码输入不一致'
]
}
else
{
state
.
errors
=
[
''
]
}
})
setFieldState
(
selfName
,
state
=>
{
//
setFieldState(otherName, state =>
{
//
if (selfValue && otherValue && selfValue !== otherValue)
{
//
state.errors = ['两次密码输入不一致']
//
}
else
{
//
state.errors = ['']
//
}
//
})
setFieldState
(
'confirmPassword'
,
state
=>
{
if
(
selfValue
&&
otherValue
&&
selfValue
!==
otherValue
)
{
state
.
errors
=
[
'两次密码输入不一致'
]
}
else
{
...
...
src/pages/user/index.tsx
View file @
bbdd4f64
import
React
,
{
useState
,
useEffect
,
Fragment
}
from
'react'
;
import
globalStyles
from
'@/global/styles/global.less'
;
import
'./index.less'
import
cx
from
'classnames'
;
import
{
Row
,
Col
,
Space
,
Carousel
}
from
'antd'
;
import
ImageBox
from
'@/components/ImageBox'
import
TextLink
from
'@/components/TextLink'
;
import
{
ScanOutlined
}
from
'@ant-design/icons'
import
{
Link
,
history
,
Helmet
}
from
'umi'
import
ScanLoginWrap
from
'./components/ScanLoginWrap'
;
// import leftPicture from '../../../mockStatic/image_ad.png'
import
{
PublicApi
}
from
'@/services/api'
import
wechat
from
'../../../mockStatic/Wechat.png'
import
qq
from
'../../../mockStatic/QQ.png'
import
alipay
from
'../../../mockStatic/Alipay.png'
import
LoginWrap
from
'./components/LoginWrap'
const
User
:
React
.
FC
=
()
=>
{
const
[
isScanQrCode
,
setIsScanQrCode
]
=
useState
(
false
)
const
[
sceneList
,
setSceneList
]
=
useState
<
any
>
()
const
handleGuideLogin
=
(
param
:
boolean
)
=>
{
setIsScanQrCode
(
param
)
}
const
forgetPassword
=
()
=>
{
history
.
push
(
'/user/forget'
)
console
.
log
(
'找回密码'
)
}
useEffect
(()
=>
{
fetchUseScene
()
},
[])
const
fetchUseScene
=
()
=>
{
let
param
=
{
useScene
:
1
,
position
:
1
}
//@ts-ignore
PublicApi
.
getManageContentImageFindAllByUseSceneAndPosition
(
param
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setSceneList
(
res
.
data
)
}
})
}
return
(
<
Fragment
>
<
Helmet
>
<
title
>
用户登录
</
title
>
</
Helmet
>
<
Row
className=
{
cx
(
'loginWrap'
,
globalStyles
.
lingxiBusinessContent1024
)
}
>
<
Col
className=
{
cx
(
'loginItem'
,
'loginDesc'
)
}
>
<
div
className=
{
'adBox'
}
>
<
Carousel
autoplay
>
{
sceneList
&&
sceneList
.
map
(
item
=>
<
ImageBox
key=
{
item
.
id
}
direction=
{
"column"
}
width=
{
512
}
height=
{
550
}
imgUrl=
{
item
.
imageUrl
}
/>)
}
</
Carousel
>
</
div
>
</
Col
>
<
Col
className=
{
cx
(
'loginItem'
,
'loginCtl'
)
}
>
<
div
className=
{
'loginMain'
}
>
{
isScanQrCode
?
(
<>
<
a
onClick=
{
()
=>
handleGuideLogin
(
false
)
}
className=
{
'clickUsernameLogin'
}
>
使用账号密码登录
</
a
>
<
ScanLoginWrap
/>
<
div
className=
{
'scanTips'
}
>
<
ScanOutlined
className=
{
'scanIcon'
}
/>
<
span
>
打开 App
<
br
/>
扫一扫登录
</
span
>
</
div
>
</>
)
:
(
<>
<
a
onClick=
{
()
=>
handleGuideLogin
(
true
)
}
className=
{
'clickScanLogin'
}
/>
<
h2
>
欢迎您
</
h2
>
<
LoginWrap
/>
<
Row
justify=
'end'
style=
{
{
marginTop
:
16
}
}
>
<
Space
size=
{
32
}
>
<
TextLink
><
Link
to=
'/user/register'
style=
{
{
color
:
'#909399'
}
}
>
免费注册
</
Link
></
TextLink
>
<
TextLink
><
a
onClick=
{
forgetPassword
}
style=
{
{
color
:
'#909399'
}
}
>
忘记密码
</
a
></
TextLink
>
</
Space
>
</
Row
>
</>
)
}
</
div
>
<
Row
className=
{
'thirdLogin'
}
align=
'middle'
justify=
'center'
>
<
Col
>
其他方式登录
<
a
title=
"微登录"
><
img
src=
{
wechat
}
alt=
"微信登录"
/></
a
>
<
a
title=
"QQ登录"
><
img
src=
{
qq
}
alt=
"QQ登录"
/></
a
>
<
a
title=
"支付宝登录"
><
img
src=
{
alipay
}
alt=
"支付宝登录"
/></
a
>
</
Col
>
</
Row
>
</
Col
>
</
Row
>
</
Fragment
>
)
}
export
default
User
import
React
,
{
useState
,
useEffect
,
Fragment
}
from
'react'
;
import
globalStyles
from
'@/global/styles/global.less'
;
import
'./index.less'
import
cx
from
'classnames'
;
import
{
Row
,
Col
,
Space
,
Carousel
}
from
'antd'
;
import
ImageBox
from
'@/components/ImageBox'
import
TextLink
from
'@/components/TextLink'
;
import
{
ScanOutlined
}
from
'@ant-design/icons'
import
{
Link
,
history
,
Helmet
}
from
'umi'
import
ScanLoginWrap
from
'./components/ScanLoginWrap'
;
// import leftPicture from '../../../mockStatic/image_ad.png'
import
{
PublicApi
}
from
'@/services/api'
import
wechat
from
'../../../mockStatic/Wechat.png'
import
qq
from
'../../../mockStatic/QQ.png'
import
alipay
from
'../../../mockStatic/Alipay.png'
import
LoginWrap
from
'./components/LoginWrap'
const
User
:
React
.
FC
=
()
=>
{
const
[
isScanQrCode
,
setIsScanQrCode
]
=
useState
(
false
)
const
[
sceneList
,
setSceneList
]
=
useState
<
any
>
()
const
handleGuideLogin
=
(
param
:
boolean
)
=>
{
setIsScanQrCode
(
param
)
}
const
forgetPassword
=
()
=>
{
history
.
push
(
'/user/forget'
)
console
.
log
(
'找回密码'
)
}
useEffect
(()
=>
{
fetchUseScene
()
},
[])
const
sortData
=
(
data
)
=>
{
let
result
=
[]
if
(
data
)
{
result
=
data
.
sort
((
a
,
b
)
=>
b
.
sort
>
a
.
sort
?
-
1
:
1
)
}
return
result
}
const
fetchUseScene
=
()
=>
{
const
param
:
any
=
{
useScene
:
1
,
position
:
1
}
PublicApi
.
getManageContentImageFindAllByUseSceneAndPosition
(
param
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setSceneList
(
sortData
(
res
.
data
))
}
})
}
return
(
<
Fragment
>
<
Helmet
>
<
title
>
用户登录
</
title
>
</
Helmet
>
<
Row
className=
{
cx
(
'loginWrap'
,
globalStyles
.
lingxiBusinessContent1024
)
}
>
<
Col
className=
{
cx
(
'loginItem'
,
'loginDesc'
)
}
>
<
div
className=
{
'adBox'
}
>
<
Carousel
autoplay
>
{
sceneList
&&
sceneList
.
map
(
item
=>
<
ImageBox
key=
{
item
.
id
}
direction=
{
"column"
}
width=
{
512
}
height=
{
550
}
imgUrl=
{
item
.
imageUrl
}
/>)
}
</
Carousel
>
</
div
>
</
Col
>
<
Col
className=
{
cx
(
'loginItem'
,
'loginCtl'
)
}
>
<
div
className=
{
'loginMain'
}
>
{
isScanQrCode
?
(
<>
<
a
onClick=
{
()
=>
handleGuideLogin
(
false
)
}
className=
{
'clickUsernameLogin'
}
>
使用账号密码登录
</
a
>
<
ScanLoginWrap
/>
<
div
className=
{
'scanTips'
}
>
<
ScanOutlined
className=
{
'scanIcon'
}
/>
<
span
>
打开 App
<
br
/>
扫一扫登录
</
span
>
</
div
>
</>
)
:
(
<>
<
a
onClick=
{
()
=>
handleGuideLogin
(
true
)
}
className=
{
'clickScanLogin'
}
/>
<
h2
>
欢迎您
</
h2
>
<
LoginWrap
/>
<
Row
justify=
'end'
style=
{
{
marginTop
:
16
}
}
>
<
Space
size=
{
32
}
>
<
TextLink
><
Link
to=
'/user/register'
style=
{
{
color
:
'#909399'
}
}
>
免费注册
</
Link
></
TextLink
>
<
TextLink
><
a
onClick=
{
forgetPassword
}
style=
{
{
color
:
'#909399'
}
}
>
忘记密码
</
a
></
TextLink
>
</
Space
>
</
Row
>
</>
)
}
</
div
>
{
/* <Row className={'thirdLogin'} align='middle' justify='center'>
<Col>其他方式登录
<a title="微登录"><img src={wechat} alt="微信登录" /></a>
<a title="QQ登录"><img src={qq} alt="QQ登录" /></a>
<a title="支付宝登录"><img src={alipay} alt="支付宝登录" /></a>
</Col>
</Row> */
}
</
Col
>
</
Row
>
</
Fragment
>
)
}
export
default
User
src/pages/user/register.tsx
View file @
bbdd4f64
...
...
@@ -114,10 +114,10 @@ const UserRegistry = () => {
},
[])
const
fetchAgreement
=
()
=>
{
const
param
=
{
const
param
:
any
=
{
columnType
:
2
}
//@ts-ignore
PublicApi
.
getManageContentNoticeFindAllByColumnType
(
param
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setAgreementList
(
res
.
data
)
...
...
@@ -187,7 +187,7 @@ const UserRegistry = () => {
maxTime
:
60
,
minTime
:
0
,
initText
:
'获取验证码'
,
onEnd
:
()
=>
{
},
onEnd
:
()
=>
{
console
.
log
(
"end"
)
},
decayRate
:
1
,
delay
:
1
*
1000
})
...
...
@@ -231,7 +231,7 @@ const UserRegistry = () => {
setSubStep
(
true
)
}
}).
catch
(()
=>
{
console
.
log
()
}).
finally
(()
=>
{
setSubmitLoading
(
false
)
})
...
...
@@ -306,7 +306,7 @@ const UserRegistry = () => {
smsCodeAfter
:
<
Button
disabled=
{
isActive
}
style=
{
{
minWidth
:
110
,
marginLeft
:
8
}
}
size=
'large'
onClick=
{
handleSendSMS
}
>
{
text
}
</
Button
>,
checkBoxChildren
:
<
span
style=
{
{
fontSize
:
12
}
}
>
阅读并同意
<
span
className=
'commonPickColor'
>
{
agreementList
&&
agreementList
.
map
(
item
=>
(<
a
key=
{
`aggreem_${item.id}`
}
href=
{
`/user/agreement?id=${item.id}`
}
target=
"_blank"
>
《
{
item
.
title
}
》
</
a
>))
agreementList
&&
agreementList
.
map
(
item
=>
(<
a
key=
{
`aggreem_${item.id}`
}
href=
{
`/user/agreement?id=${item.id}`
}
target=
"_blank"
rel=
"noreferrer"
>
《
{
item
.
title
}
》
</
a
>))
}
</
span
>
</
span
>,
...
...
src/pages/user/schema/index.ts
View file @
bbdd4f64
...
...
@@ -273,22 +273,31 @@ export const forgetPwdSchema: ISchema = {
},
password
:
{
type
:
'string'
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入密码'
},
{
pattern
:
PATTERN_MAPS
.
password
,
message
:
'请输入正确的密码'
}
],
"x-component"
:
'PasswordInput'
,
"x-component-props"
:
{
type
:
'password'
,
placeholder
:
'请设置你的新密码'
,
size
:
'large'
}
},
// password: {
// type: 'string',
// "x-rules": [
// {
// required: true,
// message: '请输入密码'
// },
// {
// pattern: PATTERN_MAPS.password,
// message: '请输入正确的密码'
// }
// ],
// "x-component-props": {
// type: 'password',
// placeholder: '请设置你的新密码',
// size: 'large'
// }
// },
confirmPassword
:
{
type
:
'string'
,
"x-rules"
:
[
...
...
@@ -296,10 +305,10 @@ export const forgetPwdSchema: ISchema = {
required
:
true
,
message
:
'请输入密码'
},
{
pattern
:
PATTERN_MAPS
.
password
,
message
:
'请输入正确的密码'
}
//
{
//
pattern: PATTERN_MAPS.password,
//
message: '请输入正确的密码'
//
}
],
"x-component-props"
:
{
type
:
'password'
,
...
...
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