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
58ff2c60
Commit
58ff2c60
authored
Oct 21, 2020
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 资金账户管理、交易规则校验问题
parent
0f482b8b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
1492 additions
and
64 deletions
+1492
-64
payandSettle.ts
config/routes/payandSettle.ts
+33
-0
img_confirm.png
src/assets/imgs/img_confirm.png
+0
-0
menu.ts
src/locales/zh-CN/menu.ts
+5
-0
index.tsx
src/pages/commodity/goods/index.tsx
+0
-2
checkDetail.tsx
...dSettle/amountAccountManage/checkWithdraw/checkDetail.tsx
+273
-0
index.less
...payandSettle/amountAccountManage/checkWithdraw/index.less
+80
-0
index.tsx
.../payandSettle/amountAccountManage/checkWithdraw/index.tsx
+131
-0
index.tsx
...Settle/amountAccountManage/checkWithdraw/schema/index.tsx
+98
-0
index.less
...Settle/amountAccountManage/memberAccountManage/index.less
+97
-0
index.tsx
...dSettle/amountAccountManage/memberAccountManage/index.tsx
+75
-24
memberAccountDetail.tsx
...AccountManage/memberAccountManage/memberAccountDetail.tsx
+234
-0
index.tsx
.../amountAccountManage/memberAccountManage/schema/index.tsx
+32
-9
CardCheckbox.tsx
...AccountManage/paymentWithdraw/components/CardCheckbox.tsx
+113
-0
index.less
...yandSettle/amountAccountManage/paymentWithdraw/index.less
+80
-0
index.tsx
...ayandSettle/amountAccountManage/paymentWithdraw/index.tsx
+116
-0
paymentDetail.tsx
...tle/amountAccountManage/paymentWithdraw/paymentDetail.tsx
+0
-0
index.tsx
...ttle/amountAccountManage/paymentWithdraw/schema/index.tsx
+84
-0
accountDetail.tsx
...yandSettle/capitalAccounts/accountLists/accountDetail.tsx
+2
-17
applyWithdraw.tsx
...yandSettle/capitalAccounts/accountLists/applyWithdraw.tsx
+1
-9
index.tsx
...pages/payandSettle/capitalAccounts/accountLists/index.tsx
+4
-0
constant.ts
src/pages/payandSettle/constant.ts
+31
-2
index.tsx
src/pages/transaction/transactionRules/schema/index.tsx
+3
-1
No files found.
config/routes/payandSettle.ts
View file @
58ff2c60
...
...
@@ -181,6 +181,39 @@ const payandSettleRoute: RouterChild = {
name
:
'memberAccountManage'
,
component
:
'@/pages/payandSettle/amountAccountManage/memberAccountManage'
,
},
// 会员账户管理-详情
{
path
:
'/memberCenter/payandSettle/amountAccountManage/memberAccountManage/detail'
,
name
:
'memberAccountDetail'
,
component
:
'@/pages/payandSettle/amountAccountManage/memberAccountManage/memberAccountDetail'
,
hideInMenu
:
true
,
},
// 待审核提现
{
path
:
'/memberCenter/payandSettle/amountAccountManage/checkWithdraw'
,
name
:
'checkWithdraw'
,
component
:
'@/pages/payandSettle/amountAccountManage/checkWithdraw'
,
},
// 待审核提现-详情
{
path
:
'/memberCenter/payandSettle/amountAccountManage/checkWithdraw/detail'
,
name
:
'checkDetail'
,
component
:
'@/pages/payandSettle/amountAccountManage/checkWithdraw/checkDetail'
,
hideInMenu
:
true
,
},
// 待支付提现
{
path
:
'/memberCenter/payandSettle/amountAccountManage/paymentWithdraw'
,
name
:
'paymentWithdraw'
,
component
:
'@/pages/payandSettle/amountAccountManage/paymentWithdraw'
,
},
// 待支付提现-详情
{
path
:
'/memberCenter/payandSettle/amountAccountManage/paymentWithdraw/detail'
,
name
:
'paymentDetail'
,
component
:
'@/pages/payandSettle/amountAccountManage/paymentWithdraw/paymentDetail'
,
hideInMenu
:
true
,
},
],
},
]
...
...
src/assets/imgs/img_confirm.png
0 → 100644
View file @
58ff2c60
4.69 KB
src/locales/zh-CN/menu.ts
View file @
58ff2c60
...
...
@@ -352,6 +352,11 @@ export default {
'menu.payandSettle.capitalAccounts.applyWithdraw'
:
'申请提现'
,
'menu.payandSettle.amountAccountManage'
:
'资金账户管理'
,
'menu.payandSettle.amountAccountManage.memberAccountManage'
:
'会员账户管理'
,
'menu.payandSettle.amountAccountManage.memberAccountDetail'
:
'账户详情'
,
'menu.payandSettle.amountAccountManage.checkWithdraw'
:
'待审核提现'
,
'menu.payandSettle.amountAccountManage.checkDetail'
:
'审核提现'
,
'menu.payandSettle.amountAccountManage.paymentWithdraw'
:
'待支付提现'
,
'menu.payandSettle.amountAccountManage.paymentDetail'
:
'支付提现'
,
// 权限管理
'menu.systemSetting'
:
'系统'
,
...
...
src/pages/commodity/goods/index.tsx
View file @
58ff2c60
...
...
@@ -331,7 +331,6 @@ const Goods: React.FC<{}> = () => {
console
.
log
(
val
)
let
obj
=
val
?
{
...
filterParams
,
name
:
val
}
:
{
...
filterParams
}
setFilterParams
(
obj
)
//@ts-ignore
ref
.
current
.
reload
(
obj
)
}
...
...
@@ -340,7 +339,6 @@ const Goods: React.FC<{}> = () => {
setFilterParams
(
restObj
)
setBrandValue
(
undefined
)
setClassValue
(
undefined
)
//@ts-ignore
ref
.
current
.
reload
(
restObj
)
}
...
...
src/pages/payandSettle/amountAccountManage/checkWithdraw/checkDetail.tsx
0 → 100644
View file @
58ff2c60
import
React
,
{
useState
,
useEffect
,
useRef
,
ReactNode
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Space
,
Steps
,
Row
,
Col
,
Button
,
InputNumber
,
Table
,
Form
,
Modal
,
Radio
,
Input
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
import
StatusTag
from
'@/components/StatusTag'
import
cx
from
'classnames'
import
moment
from
'moment'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
statusMap
}
from
'../../constant'
import
{
CheckSquareOutlined
}
from
'@ant-design/icons'
const
{
Step
}
=
Steps
;
const
{
TextArea
}
=
Input
;
const
CheckDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
[
checkForm
]
=
Form
.
useForm
();
const
[
visibleModal
,
setVisibleModal
]
=
useState
<
boolean
>
(
false
)
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
const
[
checkStatus
,
setCheckStatus
]
=
useState
<
number
>
(
4
)
const
[
disableCheck
,
setDisableCheck
]
=
useState
<
boolean
>
(
false
)
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
dataIndex
:
'tradeCode'
,
key
:
'tradeCode'
,
},
{
title
:
'交易时间'
,
dataIndex
:
'tradeTime'
,
key
:
'tradeTime'
,
render
:
(
text
:
any
)
=>
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'交易项目'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
StatusTag
title=
{
statusMap
[
text
][
'title'
]
}
type=
{
statusMap
[
text
][
'type'
]
}
/>)
},
{
title
:
'意见'
,
dataIndex
:
'remark'
,
key
:
'remark'
,
},
];
const
handleStatusChange
=
(
value
:
any
)
=>
{
setCheckStatus
(
value
.
target
.
value
)
}
const
handleOK
=
()
=>
{
checkForm
.
validateFields
().
then
(
values
=>
{
console
.
log
(
values
,
'value'
)
})
}
const
handleCancel
=
()
=>
{
checkForm
.
resetFields
()
setVisibleModal
(
false
)
}
return
(
<
PageHeaderWrapper
title=
"审核提现"
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
/>
}
extra=
{
[
<
Button
icon=
{
<
CheckSquareOutlined
/>
}
key=
"1"
type=
"primary"
onClick=
{
()
=>
setVisibleModal
(
true
)
}
disabled=
{
disableCheck
}
>
审核提现
</
Button
>
]
}
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"外部流转"
>
<
Steps
progressDot
current=
{
0
}
>
<
Step
title=
"申请提现"
description=
"采购商"
/>
<
Step
title=
"审核提现"
description=
"平台"
/>
<
Step
title=
"支付提现"
description=
"平台"
/>
<
Step
title=
"完成"
description=
""
/>
</
Steps
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"账户提现"
>
<
Row
gutter=
{
100
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
styles
.
repayment
}
>
<
div
className=
{
styles
[
'repayment-left'
]
}
>
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
提现金额(元):
</
div
>
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'flex-end'
}
}
>
<
InputNumber
disabled=
{
true
}
defaultValue=
{
0
}
formatter=
{
value
=>
`${value}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
parser=
{
value
=>
value
.
replace
(
/
\$\s?
|
(
,*
)
/g
,
''
)
}
className=
{
styles
[
'statistic-input'
]
}
/>
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
最多可以提现:¥10,000.00
</
span
>
</
div
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
16
}
>
<
div
className=
{
styles
.
infoRight
}
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
广州数商云网络科技有限公司
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
银行账号:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
6214 7812 3456 7891 1234
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
开户行:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
中国建设银行广州市分行营业部
</
p
>
</
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"账户信息"
>
<
Row
gutter=
{
100
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
cx
(
styles
.
repayment
,
styles
.
repayinfo
)
}
>
<
div
className=
{
styles
[
'repayment-left'
]
}
>
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`100000`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
温州市龙昌皮具有限公司
</
span
>
</
div
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
16
}
>
<
div
className=
{
styles
.
infoRight
}
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
广州数商云网络科技有限公司
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
10,000
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
0.00
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户状态:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
><
StatusTag
type=
"success"
title=
"正常"
/></
p
>
</
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"提现处理记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
</
Card
>
</
Space
>
<
Modal
title=
"审核提现"
visible=
{
visibleModal
}
onOk=
{
handleOK
}
onCancel=
{
handleCancel
}
>
<
Form
layout=
"vertical"
form=
{
checkForm
}
>
<
Form
.
Item
name=
"status"
label=
""
rules=
{
[
{
required
:
true
,
message
:
'请选择审核状态'
}
]
}
initialValue=
{
4
}
>
<
Radio
.
Group
onChange=
{
handleStatusChange
}
>
<
Radio
value=
{
4
}
>
审核通过
</
Radio
>
<
Radio
value=
{
3
}
>
审核不通过
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
{
checkStatus
===
3
&&
<
Form
.
Item
name=
"checkRemark"
label=
{
'审核不通过原因'
}
rules=
{
[
{
required
:
true
,
message
:
'请填写原因'
}
]
}
>
<
TextArea
rows=
{
3
}
placeholder=
"请填写原因"
/>
</
Form
.
Item
>
}
</
Form
>
</
Modal
>
</
PageHeaderWrapper
>
)
}
export
default
CheckDetail
src/pages/payandSettle/amountAccountManage/checkWithdraw/index.less
0 → 100644
View file @
58ff2c60
.repayment {
padding: 56px 24px 33px;
display: flex;
align-items: center;
background: #8777D9;
border-radius: 4px;
border: 1px solid #8777D9;
color: #fff;
&-left {
flex: 1;
}
&-right {
flex-shrink: 0;
}
&-end {
margin-top: 32px;
}
&-action {
margin-left: 24px;
}
&-time {
line-height: 22px;
margin-right: 8px;
font-weight: 400;
}
}
.statistic {
&-title {
margin-bottom: 28px;
line-height: 22px;
font-weight: 400;
}
&-amount {
line-height: 40px;
font-size: 32px;
font-weight: 500;
}
&-input {
display: block;
width: 180px;
line-height: 40px;
padding: 8px 0;
font-size: 32px;
font-weight: 500;
color: #fff;
background: none;
border-top: none;
border-right: none;
border-left: none;
border-image: initial;
outline: none;
border-bottom: 1px solid #fff;
}
}
.infoRight {
margin: 35px 0;
.rightTitle {
height: 36px;
font-weight: 400;
color: #6B778C;
line-height: 36px;
}
.rightInfo {
height: 36px;
font-weight: 500;
color: #303133;
line-height: 36px;
}
}
.repayinfo {
background-color: #4279DF;
}
\ No newline at end of file
src/pages/payandSettle/amountAccountManage/checkWithdraw/index.tsx
0 → 100644
View file @
58ff2c60
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
Card
,
Space
,
Button
,
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
StandardTable
}
from
'god'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
PublicApi
}
from
'@/services/api'
import
NiceForm
from
'@/components/NiceForm'
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'
import
{
accountStatusMap
,
memberStatusMap
}
from
'../../constant'
import
moment
from
'moment'
const
formActions
=
createFormActions
();
const
CheckWithdraw
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'会员名称'
,
dataIndex
:
[
'memberAssetAccount'
,
'memberName'
],
key
:
'memberAssetAccount'
,
className
:
'commonPickColor'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/payandSettle/amountAccountManage/memberAccountManage/detail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'提现银行账户名称'
,
dataIndex
:
'bankAccountName'
,
key
:
'bankAccountName'
,
},
{
title
:
'银行账号'
,
dataIndex
:
'bankAccount'
,
key
:
'bankAccount'
,
},
{
title
:
'提现金额(元)'
,
dataIndex
:
'memberRoleName'
,
key
:
'memberRoleName'
,
},
{
title
:
'提现申请时间'
,
dataIndex
:
'tradeTime'
,
key
:
'tradeTime'
,
render
:
(
t
,
r
)
=>
moment
(
t
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
},
{
title
:
'会员状态'
,
dataIndex
:
'memberStatus'
,
key
:
'memberStatus'
,
render
:
(
t
,
r
)
=>
(<
StatusTag
title=
{
memberStatusMap
[
t
][
'title'
]
}
type=
{
memberStatusMap
[
t
][
'type'
]
}
/>)
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
render
:
(
t
,
r
)
=>
(<
Button
type=
'link'
onClick=
{
()
=>
clickUp
(
r
)
}
>
审核
</
Button
>)
}
]
const
fetchData
=
(
params
:
any
)
=>
{
console
.
log
(
params
)
return
new
Promise
((
resolve
,
reject
)
=>
{
let
obj
=
{
...
params
}
PublicApi
.
getPayMemberAssetAccountGetCheckCashOutList
(
obj
).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
clickUp
=
(
r
:
any
)
=>
{
console
.
log
(
'通过'
)
}
const
handleBatchCheck
=
()
=>
{
console
.
log
(
'批量通过'
)
}
const
controllerBtns
=
(
<
Space
>
<
Button
onClick=
{
handleBatchCheck
}
>
批量审核通过
</
Button
>
</
Space
>
);
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
columns=
{
columns
}
currentRef=
{
ref
}
tableProps=
{
{
rowKey
:
"id"
}
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
:
DatePicker
.
RangePicker
}
}
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'memberName'
,
FORM_FILTER_PATH
,
);
}
}
schema=
{
searchSchema
}
expressionScope=
{
{
controllerBtns
,
}
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
CheckWithdraw
src/pages/payandSettle/amountAccountManage/checkWithdraw/schema/index.tsx
0 → 100644
View file @
58ff2c60
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
searchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
mageLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
topLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
ctl
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{controllerBtns}}'
,
},
},
memberName
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'会员名称'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
// rowStyle: {
// flexWrap: 'nowrap',
// justifyContent: 'end',
// },
colStyle
:
{
marginRight
:
20
,
},
},
properties
:
{
status
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'状态'
,
style
:
{
width
:
'174px'
},
},
enum
:
[
{
label
:
'申请提现'
,
value
:
1
,
},
{
label
:
'审核通过'
,
value
:
2
,
},
{
label
:
'审核不通过'
,
value
:
3
,
},
{
label
:
'提现成功'
,
value
:
4
,
},
{
label
:
'提现失败'
,
value
:
5
,
}
],
},
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'RangePicker'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
\ No newline at end of file
src/pages/payandSettle/amountAccountManage/memberAccountManage/index.less
View file @
58ff2c60
.repayment {
padding: 56px 24px 33px;
display: flex;
align-items: center;
background: #8777D9;
border-radius: 4px;
border: 1px solid #8777D9;
color: #fff;
&-left {
flex: 1;
}
&-right {
flex-shrink: 0;
}
&-end {
margin-top: 32px;
}
&-action {
margin-left: 24px;
}
&-time {
line-height: 22px;
margin-right: 8px;
font-weight: 400;
}
}
.statistic {
&-title {
margin-bottom: 28px;
line-height: 22px;
font-weight: 400;
}
&-amount {
line-height: 40px;
font-size: 32px;
font-weight: 500;
}
&-input {
display: block;
width: 180px;
line-height: 40px;
padding: 8px 0;
font-size: 32px;
font-weight: 500;
color: #fff;
background: none;
border-top: none;
border-right: none;
border-left: none;
border-image: initial;
outline: none;
border-bottom: 1px solid #fff;
}
}
.infoRight {
margin: 35px 0;
.rightTitle {
height: 36px;
font-weight: 400;
color: #6B778C;
line-height: 36px;
}
.rightInfo {
height: 36px;
font-weight: 500;
color: #303133;
line-height: 36px;
}
}
.repayinfo {
background-color: #4279DF;
}
// 账户详情右侧操作按钮
.rightActions {
display: flex;
margin-top: 70px;
.rightAction {
width: 88px;
height: 40px;
&:last-child{
background-color: #6B778C;
color: #fff;
margin-left: 24px;
}
}
}
\ No newline at end of file
src/pages/payandSettle/amountAccountManage/memberAccountManage/index.tsx
View file @
58ff2c60
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
Card
,
Space
,
Button
,
}
from
'antd'
import
{
Card
,
Space
,
Button
,
Popconfirm
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
StandardTable
}
from
'god'
import
{
ColumnType
}
from
'antd/lib/table/interface'
...
...
@@ -12,6 +12,10 @@ 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
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
import
StatusTag
from
'@/components/StatusTag'
import
{
accountStatusMap
,
memberStatusMap
}
from
'../../constant'
import
LevelBrand
from
'@/pages/member/components/LevelBrand'
const
formActions
=
createFormActions
();
...
...
@@ -20,15 +24,18 @@ const AccountLists: React.FC<{}> = () => {
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'
账户归属
'
,
title
:
'
会员名称
'
,
dataIndex
:
'memberName'
,
key
:
'memberName'
,
className
:
'commonPickColor'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/payandSettle/capitalAccounts/accountLists/accountDetail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
render
:
(
text
,
record
)
=>
<>
<
EyePreview
url=
{
`/memberCenter/payandSettle/amountAccountManage/memberAccountManage/memberAccountDetail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
{
/* <LevelBrand level={record.level} /> */
}
</>
},
{
title
:
'会员类型'
,
...
...
@@ -46,21 +53,6 @@ const AccountLists: React.FC<{}> = () => {
key
:
'memberLevelName'
,
},
{
title
:
'会员等级类型'
,
dataIndex
:
'memberLevelType'
,
key
:
'memberLevelType'
,
},
{
title
:
'会员状态'
,
dataIndex
:
'memberStatus'
,
key
:
'memberStatus'
,
},
{
title
:
'账户状态'
,
dataIndex
:
'accountStatus'
,
key
:
'accountStatus'
,
},
{
title
:
'账户余额'
,
dataIndex
:
'accountStatus'
,
key
:
'accountStatus'
,
...
...
@@ -78,18 +70,73 @@ const AccountLists: React.FC<{}> = () => {
key
:
'usableBalance'
,
render
:
text
=>
`¥
${
text
}
`
},
{
title
:
'会员状态'
,
dataIndex
:
'memberStatus'
,
key
:
'memberStatus'
,
render
:
(
t
,
r
)
=>
(<
StatusTag
title=
{
memberStatusMap
[
t
][
'title'
]
}
type=
{
memberStatusMap
[
t
][
'type'
]
}
/>)
},
{
title
:
'账户状态'
,
dataIndex
:
'accountStatus'
,
key
:
'accountStatus'
,
render
:
(
t
,
r
)
=>
(<
span
className=
{
memberStatusMap
[
t
][
'className'
]
}
>
{
accountStatusMap
[
t
][
'title'
]
}
</
span
>)
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Popconfirm
title=
"确定要执行这个操作?"
onConfirm=
{
()
=>
clickHandle
(
record
)
}
onCancel=
{
cancel
}
okText=
"是"
cancelText=
"否"
>
<
Button
type=
'link'
>
{
record
.
accountStatus
===
1
?
'冻结'
:
'解除'
}
</
Button
>
</
Popconfirm
>
)
}
]
const
fetchData
=
(
params
:
any
)
=>
{
console
.
log
(
params
)
return
new
Promise
((
resolve
,
reject
)
=>
{
let
obj
=
{
...
params
}
PublicApi
.
getPay
AssetAccountGet
AssetAccountList
(
obj
).
then
(
res
=>
{
PublicApi
.
getPay
MemberAssetAccountGetMember
AssetAccountList
(
obj
).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
// 会员弹框筛选select值
const
fetchSelectOptions
=
async
()
=>
{
const
res
=
await
PublicApi
.
getMemberManagePageitems
()
if
(
res
.
code
===
1000
)
{
const
{
data
=
{}
}:
any
=
res
const
{
memberTypes
=
[],
roles
=
[],
levels
=
[],
}
=
data
return
{
memberType
:
memberTypes
.
map
(
item
=>
({
label
:
item
.
memberTypeName
,
value
:
item
.
memberTypeId
})),
memberRoleId
:
roles
.
map
(
item
=>
({
label
:
item
.
roleName
,
value
:
item
.
roleId
})),
memberLevel
:
levels
.
map
(
item
=>
({
label
:
item
.
levelTag
,
value
:
item
.
level
})),
}
}
return
{}
}
const
cancel
=
()
=>
{
console
.
log
(
'cancel'
)
}
const
clickHandle
=
(
r
:
any
)
=>
{
console
.
log
(
r
,
'操作r'
)
}
return
(
<
PageHeaderWrapper
>
<
Card
>
...
...
@@ -109,9 +156,13 @@ const AccountLists: React.FC<{}> = () => {
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
parentM
emberName'
,
'
m
emberName'
,
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'memberType'
,
'memberRoleId'
,
'memberLevel'
],
fetchSelectOptions
,
);
}
}
schema=
{
searchSchema
}
/>
...
...
src/pages/payandSettle/amountAccountManage/memberAccountManage/memberAccountDetail.tsx
0 → 100644
View file @
58ff2c60
import
React
,
{
useState
,
useEffect
,
useRef
,
ReactNode
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Space
,
Row
,
Col
,
Button
,
Table
,
Modal
,
Form
,
Input
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
import
StatusTag
from
'@/components/StatusTag'
import
cx
from
'classnames'
import
moment
from
'moment'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
moveStatusMap
,
statusMap
}
from
'../../constant'
import
{
SettingOutlined
}
from
'@ant-design/icons'
import
{
validatorByte
}
from
'@/utils/regExp'
const
{
TextArea
}
=
Input
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
[
checkForm
]
=
Form
.
useForm
()
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
const
[
moveRecord
,
setMoveRecord
]
=
useState
<
any
>
()
const
[
isDisabled
,
setIsDisabled
]
=
useState
<
boolean
>
(
false
)
const
[
visibleModal
,
setVisibleModal
]
=
useState
<
boolean
>
(
false
)
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
dataIndex
:
'tradeCode'
,
key
:
'tradeCode'
,
},
{
title
:
'交易时间'
,
dataIndex
:
'tradeTime'
,
key
:
'tradeTime'
,
render
:
(
text
:
any
)
=>
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'交易项目'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
StatusTag
title=
{
statusMap
[
text
][
'title'
]
}
type=
{
statusMap
[
text
][
'type'
]
}
/>)
},
{
title
:
'意见'
,
dataIndex
:
'remark'
,
key
:
'remark'
,
},
];
const
moveColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
c
,
i
)
=>
i
+
1
},
{
title
:
'操作角色'
,
dataIndex
:
'parentMemberRoleName'
,
key
:
'parentMemberRoleName'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
StatusTag
title=
{
moveStatusMap
[
text
][
'title'
]
}
type=
{
moveStatusMap
[
text
][
'type'
]
}
/>)
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
render
:
(
t
,
r
)
=>
{
return
t
===
1
?
'冻结资金账户'
:
'解冻资金账户'
}
},
{
title
:
'操作时间'
,
dataIndex
:
'createTime'
,
key
:
'createTime'
,
render
:
(
text
:
any
)
=>
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
},
{
title
:
'意见'
,
dataIndex
:
'remark'
,
key
:
'remark'
,
},
];
const
handleRelieve
=
()
=>
{
setVisibleModal
(
true
)
console
.
log
(
'解除'
)
}
const
handleOK
=
()
=>
{
console
.
log
(
'OK'
)
}
const
handleCancel
=
()
=>
{
console
.
log
(
'取消'
)
setVisibleModal
(
false
)
}
return
(
<
PageHeaderWrapper
title=
"账户详情"
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
/>
}
extra=
{
[
<
Button
key=
"1"
onClick=
{
handleRelieve
}
type=
"primary"
icon=
{
<
SettingOutlined
/>
}
disabled=
{
isDisabled
}
>
解冻
</
Button
>,
]
}
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"账户信息"
>
<
Row
gutter=
{
100
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
cx
(
styles
.
repayment
,
styles
.
repayinfo
)
}
>
<
div
className=
{
styles
[
'repayment-left'
]
}
>
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`100000`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
温州市龙昌皮具有限公司
</
span
>
</
div
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
16
}
>
<
div
className=
{
styles
.
infoRight
}
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
广州数商云网络科技有限公司
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
10,000
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
0.00
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户状态:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
><
StatusTag
type=
"success"
title=
"正常"
/></
p
>
</
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"交易记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"流转记录"
>
<
Table
dataSource=
{
moveRecord
}
columns=
{
moveColumns
}
/>
</
Card
>
</
Space
>
<
Modal
title=
"会员冻结"
visible=
{
visibleModal
}
onOk=
{
handleOK
}
onCancel=
{
handleCancel
}
>
<
Form
layout=
"vertical"
form=
{
checkForm
}
>
<
Form
.
Item
name=
"checkRemark"
label=
{
'会员冻结原因'
}
rules=
{
[
{
required
:
true
,
message
:
'请填写原因'
},
{
validator
:
(
r
,
v
,
c
)
=>
validatorByte
(
r
,
v
,
c
,
120
)
}
]
}
>
<
TextArea
rows=
{
6
}
placeholder=
"请填写原因"
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
</
PageHeaderWrapper
>
)
}
export
default
AccountDetail
src/pages/payandSettle/amountAccountManage/memberAccountManage/schema/index.tsx
View file @
58ff2c60
...
...
@@ -15,11 +15,11 @@ export const searchSchema: ISchema = {
grid
:
true
,
},
properties
:
{
parentM
emberName
:
{
m
emberName
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'
账户归属
'
,
placeholder
:
'
会员名称
'
,
align
:
'flex-left'
,
},
},
...
...
@@ -38,6 +38,36 @@ export const searchSchema: ISchema = {
},
},
properties
:
{
memberType
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'请选择会员类型'
,
style
:
{
width
:
174
}
}
},
memberRoleId
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'请选择会员角色'
,
style
:
{
width
:
174
}
}
},
memberLevel
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'请选择会员等级'
,
style
:
{
width
:
174
}
}
},
memberStatus
:
{
type
:
'string'
,
'x-component-props'
:
{
...
...
@@ -72,13 +102,6 @@ export const searchSchema: ISchema = {
}
],
},
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'RangePicker'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
...
...
src/pages/payandSettle/amountAccountManage/paymentWithdraw/components/CardCheckbox.tsx
0 → 100644
View file @
58ff2c60
import
React
,
{
useState
}
from
'react'
import
{
Row
,
Col
}
from
'antd'
;
import
styled
from
'styled-components'
import
{
findItemAndDelete
}
from
'@/utils'
import
cx
from
'classnames'
const
RowStyleLayout
=
styled
(
props
=>
<
div
{
...
props
}
/>)
`
.card-checkbox-item {
width: 130px;
height: 32px;
margin-right: 32px;
margin-bottom: 16px;
border:1px solid rgba(235,236,240,1);
padding: 0 16px;
display: flex;
align-items: center;
cursor: pointer;
}
.card-checkbox-item.active {
border-color: #00B382;
position: relative;
}
.card-checkbox-item.active::after {
content: '';
position: absolute;
bottom: 0;
right: 0;
width: 0;
height: 0;
border: 6px solid transparent;
border-right: 6px solid #00B382;
border-bottom: 6px solid #00B382;
}
.card-logo {
display: block;
width: 20px;
height: 20px;
border-radius: 50%;
margin-right: 6px;
}
.card-checkbox-title {
font-size: 12px;
color: #606266;
}
`
interface
IProps
{
dataSource
:
any
[],
type
?:
string
,
editable
?:
boolean
,
}
const
CardCheckBox
=
(
props
:
IProps
)
=>
{
const
{
dataSource
=
[],
type
=
'checkbox'
,
editable
=
true
}
=
props
const
[
value
,
setValue
]
=
useState
<
any
>
([])
// const value: number[] = props.value || []
const
handleChange
=
(
id
)
=>
{
console
.
log
(
id
)
if
(
!
editable
)
{
return
false
}
if
(
value
.
includes
(
id
))
{
const
newValue
=
findItemAndDelete
(
value
,
id
)
setValue
(
newValue
)
console
.
log
(
newValue
)
// props.mutators.change(newValue)
}
else
{
// type === 'radio' ? props.mutators.change([id]) : props.mutators.change([...value, id])
console
.
log
([
id
])
type
===
'radio'
?
setValue
([
id
])
:
setValue
([...
value
,
id
])
}
}
const
isChecked
=
(
id
)
=>
{
return
value
.
includes
(
id
)
}
return
(
<
RowStyleLayout
>
<
div
className=
'card-checkbox'
>
{
dataSource
.
map
(({
title
,
items
},
index
)
=>
(
<
Row
key=
{
index
}
>
<
Col
span=
{
6
}
>
<
p
>
{
title
}
:
</
p
>
</
Col
>
<
Col
span=
{
18
}
>
<
Row
>
{
items
.
length
>
0
&&
items
.
map
((
v
,
i
)
=>
<
Col
key=
{
v
.
id
}
className=
{
cx
(
'card-checkbox-item'
,
isChecked
(
v
.
id
)
?
'active'
:
''
)
}
onClick=
{
()
=>
handleChange
(
v
.
id
)
}
>
{
v
.
logoUrl
?
<
img
className=
'card-logo'
src=
{
v
.
logoUrl
}
/>
:
null
}
<
span
className=
'card-checkbox-title'
>
{
v
.
name
}
</
span
>
</
Col
>
)
}
</
Row
>
</
Col
>
</
Row
>
))
}
</
div
>
</
RowStyleLayout
>
)
}
CardCheckBox
.
defaultProps
=
{}
export
default
CardCheckBox
\ No newline at end of file
src/pages/payandSettle/amountAccountManage/paymentWithdraw/index.less
0 → 100644
View file @
58ff2c60
.repayment {
padding: 56px 24px 33px;
display: flex;
align-items: center;
background: #8777D9;
border-radius: 4px;
border: 1px solid #8777D9;
color: #fff;
&-left {
flex: 1;
}
&-right {
flex-shrink: 0;
}
&-end {
margin-top: 32px;
}
&-action {
margin-left: 24px;
}
&-time {
line-height: 22px;
margin-right: 8px;
font-weight: 400;
}
}
.statistic {
&-title {
margin-bottom: 28px;
line-height: 22px;
font-weight: 400;
}
&-amount {
line-height: 40px;
font-size: 32px;
font-weight: 500;
}
&-input {
display: block;
width: 180px;
line-height: 40px;
padding: 8px 0;
font-size: 32px;
font-weight: 500;
color: #fff;
background: none;
border-top: none;
border-right: none;
border-left: none;
border-image: initial;
outline: none;
border-bottom: 1px solid #fff;
}
}
.infoRight {
margin: 35px 0;
.rightTitle {
height: 36px;
font-weight: 400;
color: #6B778C;
line-height: 36px;
}
.rightInfo {
height: 36px;
font-weight: 500;
color: #303133;
line-height: 36px;
}
}
.repayinfo {
background-color: #4279DF;
}
\ No newline at end of file
src/pages/payandSettle/amountAccountManage/paymentWithdraw/index.tsx
0 → 100644
View file @
58ff2c60
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
Card
,
Space
,
Button
,
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
StandardTable
}
from
'god'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
PublicApi
}
from
'@/services/api'
import
NiceForm
from
'@/components/NiceForm'
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'
import
{
accountStatusMap
,
memberStatusMap
}
from
'../../constant'
import
moment
from
'moment'
const
formActions
=
createFormActions
();
const
PaymentWithdraw
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'会员名称'
,
dataIndex
:
[
'memberAssetAccount'
,
'memberName'
],
key
:
'memberAssetAccount'
,
className
:
'commonPickColor'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/payandSettle/amountAccountManage/memberAccountManage/detail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'提现银行账户名称'
,
dataIndex
:
'bankAccountName'
,
key
:
'bankAccountName'
,
},
{
title
:
'银行账号'
,
dataIndex
:
'bankAccount'
,
key
:
'bankAccount'
,
},
{
title
:
'提现金额(元)'
,
dataIndex
:
'memberRoleName'
,
key
:
'memberRoleName'
,
},
{
title
:
'提现申请时间'
,
dataIndex
:
'tradeTime'
,
key
:
'tradeTime'
,
render
:
(
t
,
r
)
=>
moment
(
t
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
},
{
title
:
'会员状态'
,
dataIndex
:
'memberStatus'
,
key
:
'memberStatus'
,
render
:
(
t
,
r
)
=>
(<
StatusTag
title=
{
memberStatusMap
[
t
][
'title'
]
}
type=
{
memberStatusMap
[
t
][
'type'
]
}
/>)
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
render
:
(
t
,
r
)
=>
(<
Button
type=
'link'
onClick=
{
()
=>
clickUp
(
r
)
}
>
支付
</
Button
>)
}
]
const
fetchData
=
(
params
:
any
)
=>
{
console
.
log
(
params
)
return
new
Promise
((
resolve
,
reject
)
=>
{
let
obj
=
{
...
params
}
PublicApi
.
getPayMemberAssetAccountGetCheckCashOutList
(
obj
).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
const
clickUp
=
(
r
:
any
)
=>
{
console
.
log
(
'通过'
)
}
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
columns=
{
columns
}
currentRef=
{
ref
}
tableProps=
{
{
rowKey
:
"id"
}
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
:
DatePicker
.
RangePicker
}
}
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'memberName'
,
FORM_FILTER_PATH
,
);
}
}
schema=
{
searchSchema
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
PaymentWithdraw
src/pages/payandSettle/amountAccountManage/paymentWithdraw/paymentDetail.tsx
0 → 100644
View file @
58ff2c60
This diff is collapsed.
Click to expand it.
src/pages/payandSettle/amountAccountManage/paymentWithdraw/schema/index.tsx
0 → 100644
View file @
58ff2c60
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
searchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
mageLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
topLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
memberName
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'会员名称'
,
align
:
'flex-left'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
,
justifyContent
:
'end'
,
},
colStyle
:
{
marginRight
:
20
,
},
},
properties
:
{
status
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'状态'
,
style
:
{
width
:
'174px'
},
},
enum
:
[
{
label
:
'审核通过'
,
value
:
1
,
},
{
label
:
'提现成功'
,
value
:
2
,
},
{
label
:
'提现失败'
,
value
:
3
,
}
],
},
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'RangePicker'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
\ No newline at end of file
src/pages/payandSettle/capitalAccounts/accountLists/accountDetail.tsx
View file @
58ff2c60
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
,
Row
,
Col
,
Button
,
Table
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
...
...
@@ -11,25 +11,10 @@ import { ColumnType } from 'antd/lib/table/interface'
import
ModalForm
from
'@/components/ModalForm'
import
{
createFormActions
}
from
'@formily/antd'
import
{
rechargeSchema
}
from
'./schema'
import
{
visible
}
from
'chalk
'
import
{
moveStatusMap
,
statusMap
}
from
'../../constant
'
const
{
Step
}
=
Steps
;
const
schemaActions
=
createFormActions
()
const
statusMap
=
{
'1'
:
{
title
:
'申请提现'
,
type
:
'warnning'
},
'2'
:
{
title
:
'审核通过'
,
type
:
'success'
},
'3'
:
{
title
:
'审核不通过'
,
type
:
'default'
},
'4'
:
{
title
:
'提现成功'
,
type
:
'success'
},
'5'
:
{
title
:
'提现失败'
,
type
:
'danger'
},
'6'
:
{
title
:
'确认到账'
,
type
:
'success'
},
}
const
moveStatusMap
=
{
'1'
:
{
title
:
'冻结'
,
type
:
'danger'
},
'2'
:
{
title
:
'解冻'
,
type
:
'success'
},
}
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
modalRef
=
useRef
<
any
>
()
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
...
...
src/pages/payandSettle/capitalAccounts/accountLists/applyWithdraw.tsx
View file @
58ff2c60
...
...
@@ -8,18 +8,10 @@ import StatusTag from '@/components/StatusTag'
import
cx
from
'classnames'
import
moment
from
'moment'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
statusMap
}
from
'../../constant'
const
{
Step
}
=
Steps
;
const
statusMap
=
{
'1'
:
{
title
:
'申请提现'
,
type
:
'warnning'
},
'2'
:
{
title
:
'审核通过'
,
type
:
'success'
},
'3'
:
{
title
:
'审核不通过'
,
type
:
'default'
},
'4'
:
{
title
:
'提现成功'
,
type
:
'success'
},
'5'
:
{
title
:
'提现失败'
,
type
:
'danger'
},
'6'
:
{
title
:
'确认到账'
,
type
:
'success'
},
}
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
...
...
src/pages/payandSettle/capitalAccounts/accountLists/index.tsx
View file @
58ff2c60
...
...
@@ -12,6 +12,8 @@ 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'
import
{
accountStatusMap
,
memberStatusMap
}
from
'../../constant'
const
formActions
=
createFormActions
();
...
...
@@ -54,11 +56,13 @@ const AccountLists: React.FC<{}> = () => {
title
:
'会员状态'
,
dataIndex
:
'memberStatus'
,
key
:
'memberStatus'
,
render
:
(
t
,
r
)
=>
(<
StatusTag
title=
{
memberStatusMap
[
t
][
'title'
]
}
type=
{
memberStatusMap
[
t
][
'type'
]
}
/>)
},
{
title
:
'账户状态'
,
dataIndex
:
'accountStatus'
,
key
:
'accountStatus'
,
render
:
(
t
,
r
)
=>
(<
span
className=
{
memberStatusMap
[
t
][
'className'
]
}
>
{
accountStatusMap
[
t
][
'title'
]
}
</
span
>)
},
{
title
:
'账户余额'
,
...
...
src/pages/payandSettle/constant.ts
View file @
58ff2c60
...
...
@@ -55,4 +55,33 @@ export const MEMBER_STATUS_TAG_MAP = {
export
const
MEMBER_STATUS_BADGE_MAP
=
{
1
:
'#EF6260'
,
2
:
'#EF6260'
,
};
\ No newline at end of file
};
/**
* 资金账户相关常量
*/
export
const
statusMap
=
{
'1'
:
{
title
:
'申请提现'
,
type
:
'warnning'
},
'2'
:
{
title
:
'审核通过'
,
type
:
'success'
},
'3'
:
{
title
:
'审核不通过'
,
type
:
'default'
},
'4'
:
{
title
:
'提现成功'
,
type
:
'success'
},
'5'
:
{
title
:
'提现失败'
,
type
:
'danger'
},
'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'
},
}
\ No newline at end of file
src/pages/transaction/transactionRules/schema/index.tsx
View file @
58ff2c60
...
...
@@ -37,13 +37,15 @@ export const ruleDetailSchema: ISchema = padRequiredMessage({
properties
:
{
"name"
:
{
type
:
'string'
,
required
:
true
,
title
:
'规则名称'
,
"x-component-props"
:
{
placeholder
:
'请输入规则名称'
},
"x-rules"
:
[
{
required
:
true
,
},
{
limitByte
:
true
,
maxByte
:
48
}
...
...
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