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
d77ca746
Commit
d77ca746
authored
Oct 27, 2020
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into test
parents
280bff38
ef941cc9
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
525 additions
and
278 deletions
+525
-278
index.ts
config/routes/tranactionRoute/index.ts
+19
-3
index.tsx
...dSettle/amountAccountManage/memberAccountManage/index.tsx
+5
-5
memberAccountDetail.tsx
...AccountManage/memberAccountManage/memberAccountDetail.tsx
+45
-17
accountDetail.tsx
...yandSettle/capitalAccounts/accountLists/accountDetail.tsx
+72
-21
applyWithdraw.tsx
...yandSettle/capitalAccounts/accountLists/applyWithdraw.tsx
+63
-22
index.tsx
...pages/payandSettle/capitalAccounts/accountLists/index.tsx
+6
-7
index.tsx
...ayandSettle/capitalAccounts/accountLists/schema/index.tsx
+10
-2
constant.ts
src/pages/payandSettle/constant.ts
+15
-0
index.tsx
...e/creditApplication/components/OuterCirculation/index.tsx
+11
-7
index.tsx
...editApplication/components/QuotaApplicationInfo/index.tsx
+40
-31
index.ts
...plication/components/QuotaApplicationInfo/schema/index.ts
+5
-1
detail.tsx
.../payandSettle/creditApplication/quotaFormQuery/detail.tsx
+147
-94
index.tsx
...s/payandSettle/creditApplication/quotaFormQuery/index.tsx
+1
-1
index.tsx
...ages/payandSettle/creditApplication/quotaMenage/index.tsx
+29
-3
index.ts
...ayandSettle/creditApplication/quotaMenage/schema/index.ts
+2
-48
index.tsx
...Application/quotaPrSubmit/components/DetailInfo/index.tsx
+31
-13
index.tsx
...es/payandSettle/creditApplication/quotaPrSubmit/index.tsx
+3
-3
index.tsx
src/utils/index.tsx
+21
-0
No files found.
config/routes/tranactionRoute/index.ts
View file @
d77ca746
import
{
RouterChild
}
from
'../../utils'
;
//
import { RouterChild } from '../../utils';
import
goodsOffer
from
'./goodsOffer'
;
import
inquiryQuote
from
'./inquiryQuote'
;
import
confirmInquiryQuote
from
'./confirmInquiryQuote'
;
...
...
@@ -11,7 +11,7 @@ import comfirmDemandPosts from './comfirmDemandPosts';
/**
* 交易能力路由
*/
const
TranactionRoute
:
RouterChild
=
{
const
TranactionRoute
=
{
path
:
'/memberCenter/tranactionAbility'
,
name
:
'tranactionAbility'
,
icon
:
'smile'
,
...
...
@@ -191,12 +191,28 @@ const TranactionRoute: RouterChild = {
// 新增交易规则
{
path
:
'/memberCenter/tranactionAbility/transactionRules/add
Rule
'
,
path
:
'/memberCenter/tranactionAbility/transactionRules/add'
,
name
:
'addRule'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/transactionRules/addRule'
,
},
// 编辑交易规则
{
path
:
'/memberCenter/tranactionAbility/transactionRules/edit'
,
name
:
'editRule'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/transactionRules/addRule'
,
},
// 交易规则详情
{
path
:
'/memberCenter/tranactionAbility/transactionRules/detail'
,
name
:
'ruleDetail'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/transactionRules/addRule'
,
},
// 供应会员评价管理
{
path
:
'/memberCenter/tranactionAbility/supplierEvaluation'
,
...
...
src/pages/payandSettle/amountAccountManage/memberAccountManage/index.tsx
View file @
d77ca746
...
...
@@ -60,21 +60,21 @@ const AccountLists: React.FC<{}> = () => {
},
{
title
:
'账户余额'
,
dataIndex
:
'account
Status
'
,
key
:
'account
Status
'
,
render
:
text
=>
`¥
${
text
}
`
dataIndex
:
'account
Balance
'
,
key
:
'account
Balance
'
,
render
:
text
=>
`¥
${
text
.
toFixed
(
2
)
}
`
},
{
title
:
'锁定余额'
,
dataIndex
:
'lockBalance'
,
key
:
'lockBalance'
,
render
:
text
=>
`¥
${
text
}
`
render
:
text
=>
`¥
${
text
.
toFixed
(
2
)
}
`
},
{
title
:
'可用余额'
,
dataIndex
:
'usableBalance'
,
key
:
'usableBalance'
,
render
:
(
t
,
r
)
=>
`¥
${
r
.
accountStatus
-
r
.
lockBalance
}
`
render
:
(
t
,
r
)
=>
`¥
${
((
r
.
accountBalance
*
100
-
r
.
lockBalance
*
100
)
/
100
).
toFixed
(
2
)
}
`
},
{
title
:
'会员状态'
,
...
...
src/pages/payandSettle/amountAccountManage/memberAccountManage/memberAccountDetail.tsx
View file @
d77ca746
...
...
@@ -12,13 +12,15 @@ import { memberStatusMap, moveStatusMap, statusMap } from '../../constant'
import
{
SettingOutlined
,
StopOutlined
}
from
'@ant-design/icons'
import
{
validatorByte
}
from
'@/utils/regExp'
import
{
PublicApi
}
from
'@/services/api'
import
{
GetPayMemberAssetAccountGetMemberAssetAccountResponse
}
from
'@/services/PayApi
'
import
{
StandardTable
}
from
'god
'
const
{
TextArea
}
=
Input
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
refTrade
=
useRef
<
any
>
({})
const
refMove
=
useRef
<
any
>
({})
const
[
checkForm
]
=
Form
.
useForm
()
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
//
const [dealRecord, setDealRecord] = useState<any>()
const
[
moveRecord
,
setMoveRecord
]
=
useState
<
any
>
()
const
[
isDisabled
,
setIsDisabled
]
=
useState
<
boolean
>
(
false
)
const
[
visibleModal
,
setVisibleModal
]
=
useState
<
boolean
>
(
false
)
...
...
@@ -26,7 +28,6 @@ const AccountDetail: React.FC<{}> = () => {
useEffect
(()
=>
{
getAccountInfo
()
// pay/memberAssetAccount/getMemberAssetAccount
},
[])
const
getAccountInfo
=
async
()
=>
{
...
...
@@ -35,13 +36,33 @@ const AccountDetail: React.FC<{}> = () => {
const
{
code
,
data
}
=
res
setDetails
(
data
)
if
(
code
===
1000
){
let
tradeRecord
=
await
PublicApi
.
getPayMemberAssetAccountGetAccountTradeRecord
({
memberAssetAccountId
:
data
.
id
+
''
})
//
let tradeRecord = await PublicApi.getPayMemberAssetAccountGetAccountTradeRecord({memberAssetAccountId: data.id + ''})
let
statusRecord
=
await
PublicApi
.
getPayMemberAssetAccountGetAccountCheckRecord
({
memberAssetAccountId
:
data
.
id
+
''
})
setDealRecord
(
tradeRecord
.
data
)
//
setDealRecord(tradeRecord.data)
setMoveRecord
(
statusRecord
.
data
)
}
}
// 获取交易记录
const
fetchTradeData
=
(
params
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayMemberAssetAccountGetAccountTradeRecord
({
memberAssetAccountId
:
history
.
location
.
query
.
id
+
''
,
...
params
}).
then
(
res
=>
{
const
{
data
}
=
res
resolve
(
data
)
})
})
}
// // 获取流转记录
// const fetchMoveData = (params) => {
// return new Promise((resolve, reject) => {
// PublicApi.getPayMemberAssetAccountGetAccountCheckRecord({memberAssetAccountId: history.location.query.id + ''}).then(res => {
// const { data } = res
// resolve(data)
// })
// })
// }
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
...
...
@@ -65,11 +86,6 @@ const AccountDetail: React.FC<{}> = () => {
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
...
...
@@ -91,8 +107,8 @@ const AccountDetail: React.FC<{}> = () => {
},
{
title
:
'操作角色'
,
dataIndex
:
'parentMemberRoleName'
,
key
:
'
parentMemberRoleName
'
,
dataIndex
:
[
'memberAssetAccount'
,
'parentMemberRoleName'
]
,
key
:
'
id
'
,
},
{
title
:
'状态'
,
...
...
@@ -165,7 +181,7 @@ const AccountDetail: React.FC<{}> = () => {
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`${
details.accountBalance - details.lockBalance
}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
{
`${
((details.accountBalance*100 - details.lockBalance*100)/100).toFixed(2)
}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
...
...
@@ -191,7 +207,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
accountBalance
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
accountBalance
?.
toFixed
(
2
)
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -199,7 +215,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
lockBalance
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
lockBalance
?.
toFixed
(
2
)
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -222,12 +238,24 @@ const AccountDetail: React.FC<{}> = () => {
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"交易记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
<
StandardTable
columns=
{
columns
}
currentRef=
{
refTrade
}
fetchTableData=
{
(
params
:
any
)
=>
fetchTradeData
(
params
)
}
/>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"流转记录"
>
<
Table
dataSource=
{
moveRecord
}
columns=
{
moveColumns
}
/>
<
Table
columns=
{
moveColumns
}
dataSource=
{
moveRecord
}
pagination=
{
false
}
/>
{
/* <StandardTable
columns={moveColumns}
currentRef={refMove}
fetchTableData={(params: any) => fetchMoveData(params)}
tableProps={{
pagination: false
}}
/> */
}
</
Card
>
</
Space
>
<
Modal
...
...
src/pages/payandSettle/capitalAccounts/accountLists/accountDetail.tsx
View file @
d77ca746
import
React
,
{
useState
,
useEffect
,
useRef
,
ReactNode
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Space
,
Row
,
Col
,
Button
,
Table
}
from
'antd'
import
{
Card
,
Space
,
Row
,
Col
,
Button
,
Table
,
Modal
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
...
...
@@ -11,16 +11,20 @@ import { ColumnType } from 'antd/lib/table/interface'
import
ModalForm
from
'@/components/ModalForm'
import
{
createFormActions
}
from
'@formily/antd'
import
{
rechargeSchema
}
from
'./schema'
import
{
memberStatusMap
,
moveStatusMap
,
statusMap
}
from
'../../constant'
import
{
memberStatusMap
,
moveStatusMap
,
operationMap
,
statusMap
}
from
'../../constant'
import
{
PublicApi
}
from
'@/services/api'
import
{
StandardTable
}
from
'god'
const
schemaActions
=
createFormActions
()
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
modalRef
=
useRef
<
any
>
()
const
refTrade
=
useRef
<
any
>
({})
// const refMove = useRef<any>({})
const
[
moveData
,
setMoveData
]
=
useState
<
any
>
()
const
[
details
,
setDetails
]
=
useState
<
any
>
({
accountBalance
:
0
,
lockBalance
:
0
})
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
([]
)
const
[
moveRecord
,
setMoveRecord
]
=
useState
<
any
>
([]
)
const
[
pageId
,
setPageId
]
=
useState
<
any
>
(
)
const
[
isBtnLoading
,
setIsBtnLoading
]
=
useState
<
boolean
>
(
false
)
useEffect
(()
=>
{
getAccountInfo
()
...
...
@@ -28,17 +32,36 @@ const AccountDetail: React.FC<{}> = () => {
const
getAccountInfo
=
async
()
=>
{
const
{
id
}
=
history
.
location
.
query
setPageId
(
id
)
let
res
=
await
PublicApi
.
getPayAssetAccountGetAssetAccount
({
id
})
const
{
code
,
data
}
=
res
setDetails
(
data
)
if
(
code
===
1000
){
let
tradeRecord
=
await
PublicApi
.
getPayAssetAccountGetAccountTradeRecord
({
memberAssetAccountId
:
data
.
id
+
''
})
let
statusRecord
=
await
PublicApi
.
getPayAssetAccountGetAccountStatusRecord
({
memberAssetAccountId
:
data
.
id
+
''
})
setDealRecord
(
tradeRecord
.
data
)
setMoveRecord
(
statusRecord
.
data
)
}
PublicApi
.
getPayAssetAccountGetAccountStatusRecord
({
memberAssetAccountId
:
id
+
''
}).
then
(
res
=>
{
const
{
data
}
=
res
setMoveData
(
data
)
})
}
// 获取交易记录
const
fetchTradeData
=
(
params
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayAssetAccountGetAccountTradeRecord
({
memberAssetAccountId
:
history
.
location
.
query
.
id
+
''
,
...
params
}).
then
(
res
=>
{
const
{
data
}
=
res
resolve
(
data
)
})
})
}
// // 获取流转记录
// const fetchMoveData = (params) => {
// return new Promise((resolve, reject) => {
// PublicApi.getPayAssetAccountGetAccountStatusRecord({memberAssetAccountId: history.location.query.id + ''}).then(res => {
// const { data } = res
// resolve(data)
// })
// })
// }
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
...
...
@@ -60,11 +83,7 @@ const AccountDetail: React.FC<{}> = () => {
title
:
'交易项目'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
render
:
(
t
,
r
)
=>
operationMap
[
t
]
},
{
title
:
'状态'
,
...
...
@@ -119,6 +138,7 @@ const AccountDetail: React.FC<{}> = () => {
];
const
handleConfirm
=
()
=>
{
setIsBtnLoading
(
true
)
schemaActions
.
submit
()
}
...
...
@@ -127,7 +147,21 @@ const AccountDetail: React.FC<{}> = () => {
}
const
handleSubmit
=
(
value
)
=>
{
console
.
log
(
value
)
// 提交重置
let
parasm
=
{
memberAssetAccountId
:
pageId
,
money
:
Number
(
value
.
money
),
type
:
value
[
'type'
][
0
]
}
PublicApi
.
postPayAssetAccountRecharge
(
parasm
).
then
(
res
=>
{
if
(
res
.
code
===
1000
){
getAccountInfo
()
refTrade
.
current
.
reload
()
// refMove.current.reload()
}
modalRef
.
current
.
setVisible
(
false
)
setIsBtnLoading
(
false
)
})
}
const
handleRecharge
=
()
=>
{
...
...
@@ -149,7 +183,7 @@ const AccountDetail: React.FC<{}> = () => {
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`${
details.accountBalance - details.lockBalance
}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
{
`${
((details.accountBalance*100 - details.lockBalance*100)/100).toFixed(2)
}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
...
...
@@ -175,7 +209,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
accountBalance
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
accountBalance
?.
toFixed
(
2
)
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -183,7 +217,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
lockBalance
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
lockBalance
?.
toFixed
(
2
)
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -212,12 +246,24 @@ const AccountDetail: React.FC<{}> = () => {
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"交易记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
<
StandardTable
columns=
{
columns
}
currentRef=
{
refTrade
}
fetchTableData=
{
(
params
:
any
)
=>
fetchTradeData
(
params
)
}
/>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"流转记录"
>
<
Table
dataSource=
{
moveRecord
}
columns=
{
moveColumns
}
/>
<
Table
columns=
{
moveColumns
}
dataSource=
{
moveData
}
pagination=
{
false
}
/>
{
/* <StandardTable
columns={moveColumns}
currentRef={refMove}
fetchTableData={(params: any) => fetchMoveData(params)}
tableProps={{
pagination: false
}}
/> */
}
</
Card
>
</
Space
>
<
ModalForm
...
...
@@ -228,6 +274,11 @@ const AccountDetail: React.FC<{}> = () => {
confirm=
{
handleConfirm
}
onSubmit=
{
handleSubmit
}
cancel=
{
handleCannel
}
modalProps=
{
{
okText
:
"确定充值"
,
confirmLoading
:
isBtnLoading
,
destroyOnClose
:
true
}
}
// effects={($, {setFieldState}) => {
// $('onFieldInputChange', 'money').subscribe(parentState => {
// console.log(parentState.value)
...
...
src/pages/payandSettle/capitalAccounts/accountLists/applyWithdraw.tsx
View file @
d77ca746
import
React
,
{
useState
,
useEffect
,
useRef
,
ReactNode
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Space
,
Steps
,
Row
,
Col
,
Button
,
InputNumber
,
Table
}
from
'antd'
import
{
Card
,
Space
,
Steps
,
Row
,
Col
,
Button
,
InputNumber
,
Table
,
message
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
...
...
@@ -8,15 +8,19 @@ import StatusTag from '@/components/StatusTag'
import
cx
from
'classnames'
import
moment
from
'moment'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
memberStatusMap
,
statusMap
}
from
'../../constant'
import
{
memberStatusMap
,
operationMap
,
statusMap
}
from
'../../constant'
import
{
PublicApi
}
from
'@/services/api'
import
{
GetSettleAccountsCorporateAccountConfigResponse
}
from
'@/services/SettleApi'
import
{
StandardTable
}
from
'god'
const
{
Step
}
=
Steps
;
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
refTrade
=
useRef
<
any
>
({})
const
[
details
,
setDetails
]
=
useState
<
any
>
({
accountBalance
:
0
,
lockBalance
:
0
})
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
const
[
withdrawAmount
,
setWidthdrawAmount
]
=
useState
<
number
>
(
0
)
const
[
withdrawAmount
,
setWidthdrawAmount
]
=
useState
<
any
>
(
0
)
const
[
bankDetail
,
setBankDetail
]
=
useState
<
GetSettleAccountsCorporateAccountConfigResponse
>
()
const
[
btnLoading
,
setBtnLoading
]
=
useState
<
boolean
>
(
false
)
useEffect
(()
=>
{
getAccountInfo
()
...
...
@@ -28,11 +32,20 @@ const AccountDetail: React.FC<{}> = () => {
const
{
code
,
data
}
=
res
setDetails
(
data
)
if
(
code
===
1000
){
let
tradeRecord
=
await
PublicApi
.
getPayAssetAccountGetAccountTradeRecord
({
memberAssetAccountId
:
data
.
i
d
+
''
})
set
DealRecord
(
tradeRecord
.
data
)
let
bankRes
=
await
PublicApi
.
getSettleAccountsCorporateAccountConfig
({
memberId
:
data
.
memberI
d
+
''
})
set
BankDetail
(
bankRes
.
data
)
}
}
const
fetchTradeData
=
(
params
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayAssetAccountGetAccountTradeRecord
({
memberAssetAccountId
:
history
.
location
.
query
.
id
+
''
,
...
params
}).
then
(
res
=>
{
const
{
data
}
=
res
resolve
(
data
)
})
})
}
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
...
...
@@ -54,11 +67,7 @@ const AccountDetail: React.FC<{}> = () => {
title
:
'交易项目'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
render
:
(
t
,
r
)
=>
operationMap
[
t
]
},
{
title
:
'状态'
,
...
...
@@ -74,7 +83,32 @@ const AccountDetail: React.FC<{}> = () => {
];
const
handleAllCharge
=
()
=>
{
setWidthdrawAmount
(
details
.
accountBalance
-
details
.
lockBalance
)
let
amount
=
(
details
.
accountBalance
*
100
-
details
.
lockBalance
*
100
)
/
100
setWidthdrawAmount
(
amount
)
}
// 提交提现申请
const
handleSubmitApply
=
()
=>
{
setBtnLoading
(
true
)
let
amount
=
(
details
.
accountBalance
*
100
-
details
.
lockBalance
*
100
)
/
100
if
(
withdrawAmount
>
0
&&
withdrawAmount
<=
amount
){
// 大于0并且小于可用金额
let
params
=
{
memberAssetAccountId
:
details
.
id
,
money
:
withdrawAmount
,
bankAccountName
:
bankDetail
.
name
,
bankAccount
:
bankDetail
.
bankAccount
,
bankName
:
bankDetail
.
bankDeposit
}
PublicApi
.
postPayAssetAccountCashOut
(
params
).
then
(
res
=>
{
setBtnLoading
(
false
)
getAccountInfo
()
setWidthdrawAmount
(
0
)
refTrade
.
current
.
reload
()
})
}
else
{
setBtnLoading
(
false
)
message
.
error
(
'请正确输入提现金额!'
)
}
}
return
(
...
...
@@ -108,8 +142,11 @@ const AccountDetail: React.FC<{}> = () => {
formatter=
{
value
=>
`${value}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
parser=
{
value
=>
value
.
replace
(
/
\$\s?
|
(
,*
)
/g
,
''
)
}
className=
{
styles
[
'statistic-input'
]
}
onChange=
{
value
=>
setWidthdrawAmount
(
value
)
}
precision=
{
2
}
min=
{
0
}
/>
<
Button
<
Button
type=
"text"
size=
"small"
style=
{
{
marginLeft
:
24
,
color
:
'#fff'
}
}
...
...
@@ -121,12 +158,12 @@ const AccountDetail: React.FC<{}> = () => {
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
最多可以提现:¥
{
details
.
accountBalance
-
details
.
lockBalance
}
最多可以提现:¥
{
((
details
.
accountBalance
*
100
-
details
.
lockBalance
*
100
)
/
100
).
toFixed
(
2
)
}
</
span
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-right'
]
}
>
<
Button
ghost
>
提交
</
Button
>
<
Button
ghost
onClick=
{
handleSubmitApply
}
loading=
{
btnLoading
}
>
提交
</
Button
>
</
div
>
</
div
>
</
Col
>
...
...
@@ -137,7 +174,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
parentMemberN
ame
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
bankDetail
?.
n
ame
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -145,7 +182,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
银行账号:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
6214 7812 3456 7891 1234
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
bankDetail
?.
bankAccount
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -153,7 +190,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
开户行:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
中国建设银行广州市分行营业部
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
bankDetail
?.
bankDeposit
}
</
p
>
</
Col
>
</
Row
>
</
div
>
...
...
@@ -170,7 +207,7 @@ const AccountDetail: React.FC<{}> = () => {
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`${
details.accountBalance - details.lockBalance
}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
{
`${
((details.accountBalance*100 - details.lockBalance*100)/100).toFixed(2)
}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
...
...
@@ -196,7 +233,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
accountBalance
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
accountBalance
?.
toFixed
(
2
)
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -204,7 +241,7 @@ const AccountDetail: React.FC<{}> = () => {
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
lockBalance
}
</
p
>
<
p
className=
{
styles
.
rightInfo
}
>
{
details
?.
lockBalance
?.
toFixed
(
2
)
}
</
p
>
</
Col
>
</
Row
>
<
Row
>
...
...
@@ -225,7 +262,11 @@ const AccountDetail: React.FC<{}> = () => {
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"提现处理记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
<
StandardTable
columns=
{
columns
}
currentRef=
{
refTrade
}
fetchTableData=
{
(
params
:
any
)
=>
fetchTradeData
(
params
)
}
/>
</
Card
>
</
Space
>
</
PageHeaderWrapper
>
...
...
src/pages/payandSettle/capitalAccounts/accountLists/index.tsx
View file @
d77ca746
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
Card
,
Space
,
Button
,
}
from
'antd'
import
{
Card
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
StandardTable
}
from
'god'
import
{
ColumnType
}
from
'antd/lib/table/interface'
...
...
@@ -9,7 +9,6 @@ import { createFormActions, FormEffectHooks } from '@formily/antd'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
searchSchema
}
from
'./schema'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
PlusOutlined
}
from
'@ant-design/icons'
import
EyePreview
from
'@/components/EyePreview'
import
{
DatePicker
}
from
'@formily/antd-components'
import
StatusTag
from
'@/components/StatusTag'
...
...
@@ -69,21 +68,21 @@ const AccountLists: React.FC<{}> = () => {
},
{
title
:
'账户余额'
,
dataIndex
:
'account
Status
'
,
key
:
'account
Status
'
,
render
:
text
=>
`¥
${
text
}
`
dataIndex
:
'account
Balance
'
,
key
:
'account
Balance
'
,
render
:
text
=>
`¥
${
text
.
toFixed
(
2
)
}
`
},
{
title
:
'锁定余额'
,
dataIndex
:
'lockBalance'
,
key
:
'lockBalance'
,
render
:
text
=>
`¥
${
text
}
`
render
:
text
=>
`¥
${
text
.
toFixed
(
2
)
}
`
},
{
title
:
'可用余额'
,
dataIndex
:
'usableBalance'
,
key
:
'usableBalance'
,
render
:
(
t
,
r
)
=>
`¥
${
r
.
accountStatus
-
r
.
lockBalance
}
`
render
:
(
t
,
r
)
=>
`¥
${
((
r
.
accountBalance
*
100
-
r
.
lockBalance
*
100
)
/
100
).
toFixed
(
2
)
}
`
},
]
...
...
src/pages/payandSettle/capitalAccounts/accountLists/schema/index.tsx
View file @
d77ca746
...
...
@@ -121,6 +121,16 @@ export const rechargeSchema: ISchema = {
required
:
true
,
message
:
'请输入充值金额'
},
{
validator
:
value
=>
{
return
isNaN
(
value
)
},
message
:
'请正确输入数字金额'
},
{
pattern
:
/^
\d
+
(\.\d{1,2})?
$/
,
message
:
'充值金额仅限两位小数'
,
},
]
},
...
...
@@ -129,8 +139,6 @@ export const rechargeSchema: ISchema = {
"x-component"
:
'CardCheckBox'
,
"x-component-props"
:
{
dataSource
:
[
// {id: 1, name: '支付宝', logo: 'https://shushangyun01.oss-cn-shenzhen.aliyuncs.com/66bf577211624304947938a2afde771b1603682420367.png'},
// {id: 2, name: '微信', logo: 'https://shushangyun01.oss-cn-shenzhen.aliyuncs.com/733815c243ce4cec8a8cb10e0e92876f1603682449715.png'}
{
id
:
1
,
name
:
'支付宝'
,
logoUrl
:
alipay
},
{
id
:
2
,
name
:
'微信'
,
logoUrl
:
wxpay
}
],
...
...
src/pages/payandSettle/constant.ts
View file @
d77ca746
...
...
@@ -99,6 +99,7 @@ export const CREDIT_OUTER_STATUS_BADGE_MAP = {
* 资金账户相关常量
*/
// 交易记录状态
export
const
statusMap
=
{
'1'
:
{
title
:
'申请提现'
,
type
:
'warning'
},
'2'
:
{
title
:
'审核通过'
,
type
:
'success'
},
...
...
@@ -108,23 +109,36 @@ export const CREDIT_OUTER_STATUS_BADGE_MAP = {
'6'
:
{
title
:
'确认到账'
,
type
:
'success'
},
}
// 流转状态
export
const
moveStatusMap
=
{
'1'
:
{
title
:
'冻结'
,
type
:
'danger'
},
'2'
:
{
title
:
'解冻'
,
type
:
'success'
},
}
// 会员状态
export
const
memberStatusMap
=
{
'1'
:
{
title
:
'正常'
,
type
:
'success'
},
'2'
:
{
title
:
'已冻结'
,
type
:
'danger'
},
}
// 账户状态
export
const
accountStatusMap
=
{
'1'
:
{
title
:
'正常'
,
className
:
'commonStatusValid'
},
'2'
:
{
title
:
'已冻结'
,
className
:
'commonStatusNoPass'
},
}
// 会员等级类型
export
const
memberLevelTypeMap
=
{
'1'
:
'平台会员'
,
'2'
:
'商户会员'
,
'3'
:
'渠道会员'
,
}
// 操作项目
export
const
operationMap
=
{
'1'
:
'账户充值'
,
'2'
:
'账户提现'
,
'3'
:
'订单支付'
,
'4'
:
'订单退款'
,
'5'
:
'订单返利'
}
\ No newline at end of file
src/pages/payandSettle/creditApplication/components/OuterCirculation/index.tsx
View file @
d77ca746
...
...
@@ -2,11 +2,11 @@
* @Author: XieZhiXiong
* @Date: 2020-09-29 10:47:07
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-2
6 17:11:5
4
* @LastEditTime: 2020-10-2
7 10:33:2
4
* @Description: 外部流转组件
*/
import
React
from
'react'
;
import
{
Steps
}
from
'antd'
;
import
{
Steps
,
Empty
}
from
'antd'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
styles
from
'./index.less'
;
...
...
@@ -34,11 +34,15 @@ const OuterCirculation: React.FC<OuterCirculation> = ({
marginBottom
:
24
,
}
}
>
<
Steps
style=
{
{
marginTop
:
30
}
}
progressDot
current=
{
current
}
>
{
steps
.
map
((
item
,
index
)
=>
(
<
Steps
.
Step
key=
{
index
}
title=
{
item
.
title
}
description=
{
item
.
description
}
/>
))
}
</
Steps
>
{
(
steps
&&
steps
.
length
>
0
)
?
(
<
Steps
style=
{
{
marginTop
:
30
}
}
progressDot
current=
{
current
}
>
{
steps
.
map
((
item
,
index
)
=>
(
<
Steps
.
Step
key=
{
index
}
title=
{
item
.
title
}
description=
{
item
.
description
}
/>
))
}
</
Steps
>
)
:
(
<
Empty
image=
{
Empty
.
PRESENTED_IMAGE_SIMPLE
}
/>
)
}
</
MellowCard
>
);
};
...
...
src/pages/payandSettle/creditApplication/components/QuotaApplicationInfo/index.tsx
View file @
d77ca746
...
...
@@ -46,21 +46,28 @@ interface QuotaApplicationInfo {
repayPeriod
:
number
,
// 审批时间
verifyTime
:
string
,
},
}
|
null
,
};
const
QuotaApplicationInfo
:
React
.
FC
<
QuotaApplicationInfo
>
=
({
editable
=
false
,
onSubmit
,
quotaInfo
=
{},
verify
=
{}
,
verify
,
})
=>
{
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
const
handleSubmit
=
values
=>
{
if
(
onSubmit
)
{
const
{
billDay
,
repayPeriod
,
...
rest
}
=
values
;
const
{
applyQuota
,
billDay
,
repayPeriod
,
quotaSlide
,
...
rest
}
=
values
;
onSubmit
({
applyQuota
:
+
applyQuota
,
billDay
:
+
billDay
,
repayPeriod
:
+
repayPeriod
,
...
rest
,
...
...
@@ -114,7 +121,7 @@ const QuotaApplicationInfo: React.FC<QuotaApplicationInfo> = ({
marginBottom
:
24
}
}
>
<
Col
span=
{
1
4
}
>
<
Col
span=
{
verify
?
14
:
2
4
}
>
<
MellowCard
title=
"授信申请信息"
extra=
{
(
...
...
@@ -210,36 +217,38 @@ const QuotaApplicationInfo: React.FC<QuotaApplicationInfo> = ({
</
MellowCard
>
</
Col
>
<
Col
span=
{
10
}
>
<
MellowCard
title=
{
(
<
div
style=
{
{
color
:
'#fff'
}
}
>
授信审批信息
</
div
>
)
}
style=
{
{
background
:
'#4279DF'
,
}
}
fullHeight
>
<
div
className=
{
styles
.
approval
}
>
<
div
className=
{
styles
[
'approval-amountWrap'
]
}
>
{
verify
?
(
<
Col
span=
{
10
}
>
<
MellowCard
title=
{
(
<
div
style=
{
{
color
:
'#fff'
}
}
>
授信审批信息
</
div
>
)
}
style=
{
{
background
:
'#4279DF'
,
}
}
fullHeight
>
<
div
className=
{
styles
.
approval
}
>
<
div
className=
{
styles
[
'approval-amountWrap'
]
}
>
<
Descriptions
column=
{
1
}
>
<
Descriptions
.
Item
label=
"审批额度(元)"
>
<
div
className=
{
styles
[
'approval-amount'
]
}
>
{
verify
.
quota
}
</
div
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
<
Descriptions
column=
{
1
}
>
<
Descriptions
.
Item
label=
"审批额度(元)"
>
<
div
className=
{
styles
[
'approval-amount'
]
}
>
{
verify
.
quota
}
</
div
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"审批账单日期"
>
{
verify
.
billDay
}
日
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"审批还款周期"
>
{
verify
.
repayPeriod
}
天
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"审批时间"
>
{
verify
.
verifyTime
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
<
Descriptions
column=
{
1
}
>
<
Descriptions
.
Item
label=
"审批账单日期"
>
{
verify
.
billDay
}
日
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"审批还款周期"
>
{
verify
.
repayPeriod
}
天
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"审批时间"
>
{
verify
.
verifyTime
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
</
MellowCard
>
</
Col
>
</
MellowCard
>
</
Col
>
)
:
null
}
</
Row
>
<
Modal
...
...
src/pages/payandSettle/creditApplication/components/QuotaApplicationInfo/schema/index.ts
View file @
d77ca746
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-29 15:51:31
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-2
6 18:46:02
* @LastEditTime: 2020-10-2
7 09:52:57
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
...
...
@@ -32,6 +32,10 @@ export const editModalSchema: ISchema = {
required
:
true
,
message
:
'请填写申请调整额度'
,
},
{
pattern
:
PATTERN_MAPS
.
money
,
message
:
'请填写正数'
,
},
],
},
quotaSlide
:
{
...
...
src/pages/payandSettle/creditApplication/quotaFormQuery/detail.tsx
View file @
d77ca746
import
React
,
{
Suspense
}
from
'react'
;
import
React
,
{
Suspense
,
useEffect
,
useState
}
from
'react'
;
import
{
PageHeader
,
Descriptions
,
...
...
@@ -11,114 +11,167 @@ import {
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
history
}
from
'umi'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetPayCreditApplyGetApplyDetailResponse
}
from
'@/services/PayApi'
;
import
{
CREDIT_INNER_STATUS
,
CREDIT_OUTER_STATUS
}
from
'@/constants'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
{
MEMBER_STATUS_TAG_MAP
,
CREDIT_OUTER_STATUS_TAG_MAP
,
CREDIT_OUTER_STATUS_BADGE_MAP
}
from
'../../constant'
;
const
OuterCirculation
=
React
.
lazy
(()
=>
import
(
'../components/OuterCirculation'
));
const
QuotaApplicationInfo
=
React
.
lazy
(()
=>
import
(
'../components/QuotaApplicationInfo'
));
const
HitoryList
=
React
.
lazy
(()
=>
import
(
'../components/HistoryList'
));
const
OuterCirculationRecord
=
React
.
lazy
(()
=>
import
(
'../components/OuterCirculationRecord'
));
interface
DetailInfo
{
// 授信id
id
:
string
;
// 申请id
applyId
:
string
;
// 是否是编辑的
isEdit
?:
boolean
;
};
interface
QuotaValues
{
// 申请调整额度
applyQuota
:
number
|
null
;
// 申请调整账单日期
billDay
:
number
|
null
;
// 申请还款周期
repayPeriod
:
number
|
null
;
};
const
QuotaFormQueryDetail
:
React
.
FC
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
[
quotaInfo
,
setQuotaInfo
]
=
useState
<
GetPayCreditApplyGetApplyDetailResponse
>
(
null
);
const
[
quotaValues
,
setQuotaValues
]
=
useState
<
QuotaValues
>
({
applyQuota
:
null
,
billDay
:
null
,
repayPeriod
:
null
,
});
const
[
infoLoading
,
setInfoloading
]
=
useState
(
false
);
const
steps
=
[
{
title
:
'提交授信申请单'
,
description
:
'采购商'
,
},
{
title
:
'确认授信申请单'
,
description
:
'供应商'
,
},
{
title
:
'完成'
,
description
:
''
,
},
];
const
getQuotaInfo
=
()
=>
{
if
(
!
id
)
{
return
;
}
setInfoloading
(
true
);
PublicApi
.
getPayCreditApplyGetApplyDetail
({
id
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setQuotaInfo
(
res
.
data
);
setQuotaValues
({
applyQuota
:
res
.
data
.
applyQuota
,
billDay
:
res
.
data
.
billDay
,
repayPeriod
:
res
.
data
.
repayPeriod
,
});
}
}).
finally
(()
=>
{
setInfoloading
(
false
);
});
};
const
outerRecord
=
[
{
id
:
1
,
order
:
1
,
role
:
'采购商'
,
status
:
2
,
action
:
'提交授信申请单'
,
createTime
:
'2020-05-12 08:08'
,
opinion
:
'同意'
,
},
{
id
:
2
,
order
:
2
,
role
:
'采购商'
,
status
:
2
,
action
:
'提交授信申请单'
,
createTime
:
'2020-05-12 08:08'
,
opinion
:
'同意'
,
},
];
useEffect
(()
=>
{
getQuotaInfo
();
},
[]);
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
'申请单号:DPTY12'
,
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
`申请单号:${quotaInfo && quotaInfo.applyNo ? quotaInfo.applyNo : ''}`
,
}
}
extra=
{
quotaInfo
&&
quotaInfo
.
member
?
quotaInfo
.
member
.
levelTag
||
''
:
''
}
/>
}
extra=
{
(
<>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
extra=
"青铜会员"
/>
>
<
Descriptions
.
Item
label=
"会员归属"
>
{
'暂无'
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
quotaInfo
?.
member
?.
memberTypeName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色名称"
>
{
quotaInfo
?.
member
?.
roleName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
quotaInfo
&&
quotaInfo
.
member
?
quotaInfo
.
member
.
status
||
1
:
1
]
}
title=
{
quotaInfo
&&
quotaInfo
.
member
?
quotaInfo
.
member
.
status
||
1
:
1
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
StatusTag
type=
{
CREDIT_OUTER_STATUS_TAG_MAP
[
quotaInfo
?.
outerStatus
]
}
title=
{
CREDIT_OUTER_STATUS
[
quotaInfo
?.
outerStatus
]
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"内部状态"
>
<
Badge
color=
{
CREDIT_OUTER_STATUS_BADGE_MAP
[
quotaInfo
?.
innerStatus
]
}
text=
{
CREDIT_INNER_STATUS
[
quotaInfo
?.
innerStatus
]
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
Suspense
fallback=
{
null
}
>
<
OuterCirculation
steps=
{
quotaInfo
&&
quotaInfo
.
outerVerifyRecordList
?
quotaInfo
.
outerVerifyRecordList
.
map
(
item
=>
({
title
:
item
.
operate
,
description
:
item
.
roleName
,
}))
:
[]
}
extra=
{
(
<>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"会员归属"
>
广州白马皮具交易中心
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员类型"
>
企业会员
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色名称"
>
采购商
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
StatusTag
type=
"success"
title=
"正常"
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
StatusTag
type=
"success"
title=
"接受申请"
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"内部状态"
>
<
Badge
color=
"#41CC9E"
text=
"正常"
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
Suspense
fallback=
{
null
}
>
<
OuterCirculation
steps=
{
steps
}
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
QuotaApplicationInfo
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
HitoryList
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
OuterCirculationRecord
dataSource=
{
outerRecord
}
/>
</
Suspense
>
</
PageHeaderWrapper
>
current=
{
0
}
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
QuotaApplicationInfo
quotaInfo=
{
{
originalQuota
:
quotaInfo
?.
originalQuota
,
applyQuota
:
quotaValues
.
applyQuota
,
billDay
:
quotaValues
.
billDay
,
repayPeriod
:
quotaValues
.
repayPeriod
,
applyTime
:
quotaInfo
?.
applyTime
,
}
}
verify=
{
quotaInfo
&&
quotaInfo
.
verify
?
{
quota
:
quotaInfo
?.
verify
?.
quota
,
billDay
:
quotaInfo
?.
verify
?.
billDay
,
repayPeriod
:
quotaInfo
?.
verify
?.
repayPeriod
,
verifyTime
:
quotaInfo
?.
verify
?.
verifyTime
,
}
:
null
}
editable=
{
false
}
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
HitoryList
dataSource=
{
quotaInfo
?.
historyApplyList
}
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
OuterCirculationRecord
dataSource=
{
quotaInfo
?.
outerVerifyRecordList
}
/>
</
Suspense
>
</
PageHeaderWrapper
>
</
Spin
>
);
};
...
...
src/pages/payandSettle/creditApplication/quotaFormQuery/index.tsx
View file @
d77ca746
...
...
@@ -64,7 +64,7 @@ const QuotaFormQuery: React.FC = () => {
render
:
(
text
,
record
)
=>
(
<>
<
EyePreview
url=
{
`/memberCenter/payandSettle/creditApplication/quotaFormQuery/detail`
}
url=
{
`/memberCenter/payandSettle/creditApplication/quotaFormQuery/detail
?id=${record.id}
`
}
>
{
text
}
</
EyePreview
>
...
...
src/pages/payandSettle/creditApplication/quotaMenage/index.tsx
View file @
d77ca746
...
...
@@ -9,6 +9,7 @@ import { PublicApi } from '@/services/api';
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
coverColFiltersItem
}
from
'@/utils'
;
import
{
CREDIT_STATUS_NOT_APPLIED
,
CREDIT_STATUS_APPLYING
,
...
...
@@ -192,7 +193,32 @@ const QuotaMenage: React.FC = () => {
};
// 初始化高级筛选选项
const
fetchSelectOptions
=
async
()
=>
{
const
fetchSearchItems
=
async
()
=>
{
const
res
=
await
PublicApi
.
getPayCreditApplyPageItemsByConsumer
();
if
(
res
.
code
===
1000
)
{
const
{
data
}
=
res
;
const
{
statusList
=
[],
repayStatusList
=
[],
}
=
data
;
const
newColumns
=
columns
.
slice
();
// filter 0 过滤掉全部选项
coverColFiltersItem
(
newColumns
,
'statusName'
,
statusList
.
map
(
item
=>
({
text
:
item
.
name
,
value
:
item
.
status
})).
filter
(
item
=>
item
.
value
),
);
setColumns
(
newColumns
);
return
{
status
:
statusList
.
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
status
})).
filter
(
item
=>
item
.
value
),
rePayStatus
:
repayStatusList
.
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
status
})).
filter
(
item
=>
item
.
value
),
};
}
return
{};
};
...
...
@@ -218,8 +244,8 @@ const QuotaMenage: React.FC = () => {
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'
innerStatus'
,
'outer
Status'
],
fetchSe
lectOption
s
,
[
'
status'
,
'rePay
Status'
],
fetchSe
archItem
s
,
);
}
}
schema=
{
listSearchSchema
}
...
...
src/pages/payandSettle/creditApplication/quotaMenage/schema/index.ts
View file @
d77ca746
...
...
@@ -7,18 +7,6 @@
*/
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
CREDIT_STATUS_NOT_APPLIED
,
CREDIT_STATUS_APPLYING
,
CREDIT_STATUS_NORMAL
,
CREDIT_STATUS_FROZEN
,
CREDIT_STATUS
,
CREDIT_REPAYMENT_STATUS_OUTSTANDING
,
CREDIT_REPAYMENT_STATUS_UNCONFIRMED
,
CREDIT_REPAYMENT_STATUS_PAID
,
CREDIT_REPAYMENT_STATUS_OVERDUE
,
CREDIT_REPAYMENT_STATUS
,
}
from
'@/constants'
;
export
const
listSearchSchema
:
ISchema
=
{
type
:
'object'
,
...
...
@@ -49,24 +37,7 @@ export const listSearchSchema: ISchema = {
rePayStatus
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[
{
label
:
CREDIT_STATUS
[
CREDIT_STATUS_NOT_APPLIED
],
value
:
CREDIT_STATUS_NOT_APPLIED
,
},
{
label
:
CREDIT_STATUS
[
CREDIT_STATUS_APPLYING
],
value
:
CREDIT_STATUS_APPLYING
,
},
{
label
:
CREDIT_STATUS
[
CREDIT_STATUS_NORMAL
],
value
:
CREDIT_STATUS_NORMAL
,
},
{
label
:
CREDIT_STATUS
[
CREDIT_STATUS_FROZEN
],
value
:
CREDIT_STATUS_FROZEN
,
},
],
enum
:
[],
'x-component-props'
:
{
placeholder
:
'还款状态(全部)'
,
allowClear
:
true
,
...
...
@@ -75,24 +46,7 @@ export const listSearchSchema: ISchema = {
status
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[
{
label
:
CREDIT_REPAYMENT_STATUS
[
CREDIT_REPAYMENT_STATUS_OUTSTANDING
],
value
:
CREDIT_REPAYMENT_STATUS_OUTSTANDING
},
{
label
:
CREDIT_REPAYMENT_STATUS
[
CREDIT_REPAYMENT_STATUS_UNCONFIRMED
],
value
:
CREDIT_REPAYMENT_STATUS_UNCONFIRMED
},
{
label
:
CREDIT_REPAYMENT_STATUS
[
CREDIT_REPAYMENT_STATUS_PAID
],
value
:
CREDIT_REPAYMENT_STATUS_PAID
},
{
label
:
CREDIT_REPAYMENT_STATUS
[
CREDIT_REPAYMENT_STATUS_OVERDUE
],
value
:
CREDIT_REPAYMENT_STATUS_OVERDUE
},
],
enum
:
[],
'x-component-props'
:
{
placeholder
:
'状态(全部)'
,
allowClear
:
true
,
...
...
src/pages/payandSettle/creditApplication/quotaPrSubmit/components/DetailInfo/index.tsx
View file @
d77ca746
...
...
@@ -24,19 +24,26 @@ const HitoryList = React.lazy(() => import('../../../components/HistoryList'));
const
OuterCirculationRecord
=
React
.
lazy
(()
=>
import
(
'../../../components/OuterCirculationRecord'
));
interface
DetailInfo
{
// 授信id
id
:
string
;
// 申请id
applyId
:
string
;
// 是否是编辑的
isEdit
?:
boolean
;
};
interface
QuotaValues
{
// 申请调整额度
applyQuota
:
number
|
null
;
// 申请调整账单日期
billDay
:
number
|
null
;
// 申请还款周期
repayPeriod
:
number
|
null
;
};
const
DetailInfo
:
React
.
FC
<
DetailInfo
>
=
({
id
,
applyId
,
isEdit
=
false
,
})
=>
{
const
[
quotaInfo
,
setQuotaInfo
]
=
useState
<
GetPayCreditApplyGetApplyDetailResponse
>
(
null
);
...
...
@@ -58,6 +65,11 @@ const DetailInfo: React.FC<DetailInfo> = ({
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setQuotaInfo
(
res
.
data
);
setQuotaValues
({
applyQuota
:
res
.
data
.
applyQuota
,
billDay
:
res
.
data
.
billDay
,
repayPeriod
:
res
.
data
.
repayPeriod
,
});
}
}).
finally
(()
=>
{
setInfoloading
(
false
);
...
...
@@ -76,11 +88,14 @@ const DetailInfo: React.FC<DetailInfo> = ({
const
handleSubmit
=
()
=>
{
setSubmitLoading
(
true
);
PublicApi
.
postPayCreditApplyAddCreditApply
({
creditId
:
+
id
,
creditId
:
+
id
,
applyId
:
applyId
?
+
applyId
:
0
,
...
quotaValues
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
();
setTimeout
(()
=>
{
history
.
goBack
();
},
800
);
}
}).
finally
(()
=>
{
setSubmitLoading
(
false
);
...
...
@@ -99,9 +114,9 @@ const DetailInfo: React.FC<DetailInfo> = ({
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
`申请单号:${quotaInfo
?.applyNo
}`
,
name
:
`申请单号:${quotaInfo
&& quotaInfo.applyNo ? quotaInfo.applyNo : ''
}`
,
}
}
extra=
{
quotaInfo
?.
member
?.
levelTag
}
extra=
{
quotaInfo
&&
quotaInfo
.
member
?
quotaInfo
.
member
.
levelTag
||
''
:
''
}
/>
}
extra=
{
(
...
...
@@ -163,17 +178,20 @@ const DetailInfo: React.FC<DetailInfo> = ({
<
QuotaApplicationInfo
quotaInfo=
{
{
originalQuota
:
quotaInfo
?.
originalQuota
,
applyQuota
:
quota
Info
?
.
applyQuota
,
billDay
:
quota
Info
?
.
billDay
,
repayPeriod
:
quota
Info
?
.
repayPeriod
,
applyQuota
:
quota
Values
.
applyQuota
,
billDay
:
quota
Values
.
billDay
,
repayPeriod
:
quota
Values
.
repayPeriod
,
applyTime
:
quotaInfo
?.
applyTime
,
}
}
verify=
{
{
quota
:
quotaInfo
?.
verify
.
quota
,
billDay
:
quotaInfo
?.
verify
.
billDay
,
repayPeriod
:
quotaInfo
?.
verify
.
repayPeriod
,
verifyTime
:
quotaInfo
?.
verify
.
verifyTime
,
}
}
verify=
{
quotaInfo
&&
quotaInfo
.
verify
?
{
quota
:
quotaInfo
?.
verify
?.
quota
,
billDay
:
quotaInfo
?.
verify
?.
billDay
,
repayPeriod
:
quotaInfo
?.
verify
?.
repayPeriod
,
verifyTime
:
quotaInfo
?.
verify
?.
verifyTime
,
}
:
null
}
editable=
{
isEdit
}
onSubmit=
{
handleQuotaSubmit
}
/>
...
...
src/pages/payandSettle/creditApplication/quotaPrSubmit/index.tsx
View file @
d77ca746
...
...
@@ -35,7 +35,7 @@ const QuotaPrSubmit: React.FC = () => {
render
:
(
text
,
record
)
=>
(
<>
<
EyePreview
url=
{
`/memberCenter/payandSettle/creditApplication/quotaPrSubmit/detail`
}
url=
{
`/memberCenter/payandSettle/creditApplication/quotaPrSubmit/detail
?id=${record.id}
`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -84,7 +84,7 @@ const QuotaPrSubmit: React.FC = () => {
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
CREDIT_OUTER_STATUS_TAG_MAP
[
record
.
outerStatus
]
}
title=
{
text
}
/>
<
StatusTag
type=
{
CREDIT_OUTER_STATUS_TAG_MAP
[
record
.
outerStatus
]
}
title=
{
record
.
outerStatusName
}
/>
),
},
{
...
...
@@ -93,7 +93,7 @@ const QuotaPrSubmit: React.FC = () => {
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
{
CREDIT_OUTER_STATUS_BADGE_MAP
[
record
.
innerStatus
]
}
text=
{
text
}
/>,
render
:
(
text
,
record
)
=>
<
Badge
color=
{
CREDIT_OUTER_STATUS_BADGE_MAP
[
record
.
innerStatus
]
}
text=
{
record
.
innerStatusName
}
/>,
},
{
title
:
'操作'
,
...
...
src/utils/index.tsx
View file @
d77ca746
...
...
@@ -494,6 +494,27 @@ export const isJSONStr = str => {
return
str
;
}
/**
* 给 Table columns 的 filters 赋值
* @param {array} data 需要赋值的数组
* @param {string} dataIndex 索引
* @param {array} item 需要赋值的值
*/
export
const
coverColFiltersItem
=
(
data
:
Array
<
{[
key
:
string
]:
any
}
>
,
dataIndex
:
string
,
item
:
{[
key
:
string
]:
any
}
)
=>
{
const
index
=
data
.
findIndex
(
i
=>
i
.
dataIndex
===
dataIndex
);
if
(
index
!==
-
1
)
{
data
.
splice
(
index
,
1
,
{
...
data
[
index
],
filters
:
item
,
});
}
};
export
default
{
isArray
,
isObject
,
...
...
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