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
932096bb
Commit
932096bb
authored
Oct 23, 2020
by
Bill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
结算能力-结算规则配置接口对接完成,剩余部分等接口
parent
0cfef8dc
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
591 additions
and
274 deletions
+591
-274
balanceRoute.ts
config/routes/balanceRoute.ts
+10
-1
menu.ts
src/locales/zh-CN/menu.ts
+5
-0
index.tsx
src/pages/balance/components/SettleMethod/index.tsx
+93
-48
index.less
src/pages/balance/components/StatusActions/index.less
+5
-0
index.tsx
src/pages/balance/components/StatusActions/index.tsx
+120
-0
index.tsx
src/pages/balance/components/StatusTag/index.tsx
+47
-0
index.tsx
...es/balance/platformSettlement/accountReceivable/index.tsx
+20
-58
index.tsx
src/pages/balance/settleRules/corporateAccount/index.tsx
+71
-41
index.tsx
src/pages/balance/settleRules/memberSettle/index.tsx
+23
-62
info.tsx
src/pages/balance/settleRules/memberSettle/info.tsx
+137
-42
index.tsx
src/pages/balance/settleRules/memberSettle/schema/index.tsx
+60
-22
No files found.
config/routes/balanceRoute.ts
View file @
932096bb
...
...
@@ -7,7 +7,7 @@
/*
* @Author: Bill
* @Date: 2020-10-12 09:45:20
* @LastEditTime: 2020-10-2
1 16:37:0
3
* @LastEditTime: 2020-10-2
3 16:08:1
3
* @Description: 加工能力路由
*/
...
...
@@ -66,6 +66,15 @@ const HandlingRoute = {
path
:
'/memberCenter/balance/settleRules/memberSettleList/add'
,
name
:
'memberSettleAdd'
,
icon
:
'smile'
,
hideInMenu
:
true
,
component
:
'@/pages/balance/settleRules/memberSettle/info'
},
// 结算规则配置 -> 会员支付策略详情
{
path
:
'/memberCenter/balance/settleRules/memberSettleList/detail'
,
name
:
'memberSettleDetail'
,
icon
:
'smile'
,
hideInMenu
:
true
,
component
:
'@/pages/balance/settleRules/memberSettle/info'
},
]
...
...
src/locales/zh-CN/menu.ts
View file @
932096bb
...
...
@@ -3,6 +3,7 @@
* @Date: 2020-07-13 14:08:50
<<<<<<< HEAD
* @LastEditors: Please set LastEditors
<<<<<<< HEAD
* @LastEditTime: 2020-10-26 18:20:31
=======
* @LastEditors: Please set LastEditors
...
...
@@ -12,6 +13,9 @@
=======
* @LastEditTime: 2020-10-20 13:40:28
>>>>>>> 26b20691... 结算能力页面大致完成
=======
* @LastEditTime: 2020-10-23 16:07:53
>>>>>>> b7a56747... 结算能力-结算规则配置接口对接完成,剩余部分等接口
*/
export
default
{
...
...
@@ -506,6 +510,7 @@ export default {
'menu.balance.settleRules.receiptInfoAdd'
:
'新增发票信息'
,
'menu.balance.settleRules.receiptInfo'
:
'发票详情'
,
'menu.balance.settleRules.memberSettleAdd'
:
'新增会员结算策略'
,
'menu.balance.settleRules.memberSettleDetail'
:
'会员结算详情'
,
'menu.balance.platformSettlement'
:
'平台结算管理'
,
'menu.balance.platformSettlement.accountReceivable'
:
'平台代收账款结算'
,
'menu.balance.platformSettlement.accountReceivableInfo'
:
'平台代收账款结算明细'
,
...
...
src/pages/balance/components/SettleMethod/index.tsx
View file @
932096bb
...
...
@@ -10,8 +10,8 @@ import { QuestionCircleOutlined } from '@ant-design/icons';
import
styles
from
'./index.less'
;
import
{
registerValidationRules
}
from
'@formily/antd'
// 或者 @formily/next
const
DAY
=
0
;
const
MONTH
=
1
;
const
DAY
=
1
;
const
MONTH
=
2
;
registerValidationRules
({
settleMethodRule
:
value
=>
{
...
...
@@ -29,34 +29,26 @@ registerValidationRules({
const
SettleMethod
=
(
props
)
=>
{
const
{
active
=
DAY
,
otherValues
=
[
30
,
1
]
}
=
props
.
value
||
{};
// const componentProps = props.props['x-component-props'] || {}
;
const
{
daysVisible
,
monthVisible
}
=
props
;
const
handleChange
=
(
e
,
type
)
=>
{
if
(
active
==
type
)
{
return
;
}
const
previewValue
=
otherValues
// setActive(type)
props
.
mutators
.
c
hange
({
props
.
onC
hange
({
active
:
type
,
otherValues
:
previewValue
})
}
useEffect
(()
=>
{
const
componentProps
=
props
.
props
[
'x-component-props'
]
||
{};
const
defaultValue
=
componentProps
.
default
||
{};
if
(
typeof
props
.
initialValue
==
'undefined'
)
{
props
.
mutators
.
change
(
defaultValue
)
}
else
{
props
.
mutators
.
change
(
props
.
initialValue
)
}
},
[
props
.
initialValue
])
const
handleInputChange
=
(
value
,
type
)
=>
{
const
target
=
type
;
const
target
=
type
-
1
;
console
.
log
(
target
);
const
temp
=
[...
otherValues
];
temp
[
target
]
=
value
;
props
.
mutators
.
change
({
console
.
log
(
temp
[
target
]);
props
.
onChange
({
active
:
type
,
otherValues
:
temp
})
...
...
@@ -64,39 +56,92 @@ const SettleMethod = (props) => {
return
(
<
div
>
<
div
className=
{
styles
.
period
}
>
<
div
>
<
Radio
name=
"method"
checked=
{
active
==
DAY
}
onChange=
{
(
e
)
=>
handleChange
(
e
,
DAY
)
}
>
账期(默认)
</
Radio
>
<
Tooltip
title=
"选择账期并设置账期天数后,即结算时间为T+账期天数,系统每天自动将支付时间达到账期天数的支付金额进行结算,如设置账期天数为30天,则系统每天结算支付时间达到30天的支付金额"
>
<
QuestionCircleOutlined
/>
</
Tooltip
>
</
div
>
<
div
className=
{
styles
.
days
}
>
<
div
style=
{
{
margin
:
'0 20px 0 12px'
}
}
>
账期天数
</
div
>
<
div
>
<
Input
addonAfter=
{
"天"
}
value=
{
otherValues
[
DAY
]
}
onChange=
{
(
e
)
=>
handleInputChange
(
e
.
target
.
value
,
DAY
)
}
disabled=
{
active
!==
DAY
}
style=
{
{
width
:
'160px'
}
}
/></
div
>
</
div
>
</
div
>
<
div
className=
{
styles
.
period
}
>
<
div
>
<
Radio
name=
"method"
checked=
{
active
==
MONTH
}
onChange=
{
(
e
)
=>
handleChange
(
e
,
MONTH
)
}
>
月结
</
Radio
>
<
Tooltip
title=
"选择月结并设置每月结算日期后,系统将在每月结算日当天自动将上月发生的支付金额进行结算,如每月结算日期设置为每月1号,则每月1号系统自动结算上月所有已发生的支付金额"
>
<
QuestionCircleOutlined
/>
</
Tooltip
>
</
div
>
<
div
className=
{
styles
.
days
}
>
<
div
style=
{
{
marginRight
:
'20px'
}
}
>
每月结算日期:每月
</
div
>
<
div
><
Input
addonAfter=
{
"号"
}
style=
{
{
width
:
'160px'
}
}
value=
{
otherValues
[
MONTH
]
}
onChange=
{
(
e
)
=>
handleInputChange
(
e
.
target
.
value
,
MONTH
)
}
disabled=
{
active
!==
MONTH
}
/></
div
>
</
div
>
{
daysVisible
?
(
<
div
className=
{
styles
.
period
}
>
<
div
>
<
Radio
name=
"method"
checked=
{
active
==
DAY
}
onChange=
{
(
e
)
=>
handleChange
(
e
,
DAY
)
}
>
账期(默认)
</
Radio
>
<
Tooltip
title=
"选择账期并设置账期天数后,即结算时间为T+账期天数,系统每天自动将支付时间达到账期天数的支付金额进行结算,如设置账期天数为30天,则系统每天结算支付时间达到30天的支付金额"
>
<
QuestionCircleOutlined
/>
</
Tooltip
>
</
div
>
<
div
className=
{
styles
.
days
}
>
<
div
style=
{
{
margin
:
'0 20px 0 12px'
}
}
>
账期天数
</
div
>
<
div
>
<
Input
addonAfter=
{
"天"
}
value=
{
otherValues
[
DAY
-
1
]
}
onChange=
{
(
e
)
=>
handleInputChange
(
e
.
target
.
value
,
DAY
)
}
disabled=
{
active
!==
DAY
}
style=
{
{
width
:
'160px'
}
}
/></
div
>
</
div
>
</
div
>
)
:
null
}
{
monthVisible
?
<
div
className=
{
styles
.
period
}
>
<
div
>
<
Radio
name=
"method"
checked=
{
active
==
MONTH
}
onChange=
{
(
e
)
=>
handleChange
(
e
,
MONTH
)
}
>
月结
</
Radio
>
<
Tooltip
title=
"选择月结并设置每月结算日期后,系统将在每月结算日当天自动将上月发生的支付金额进行结算,如每月结算日期设置为每月1号,则每月1号系统自动结算上月所有已发生的支付金额"
>
<
QuestionCircleOutlined
/>
</
Tooltip
>
</
div
>
<
div
className=
{
styles
.
days
}
>
<
div
style=
{
{
marginRight
:
'20px'
}
}
>
每月结算日期:每月
</
div
>
<
div
><
Input
addonAfter=
{
"号"
}
style=
{
{
width
:
'160px'
}
}
value=
{
otherValues
[
MONTH
-
1
]
}
onChange=
{
(
e
)
=>
handleInputChange
(
e
.
target
.
value
,
MONTH
)
}
disabled=
{
active
!==
MONTH
}
/></
div
>
</
div
>
</
div
>
:
null
}
<
div
>
{
!
monthVisible
&&
!
daysVisible
?
<
div
>
请在pass平台配置结算方式,否则无法创建会员策略
</
div
>
:
null
}
</
div
>
</
div
>
)
}
SettleMethod
.
isFieldComponent
=
true
;
export
default
SettleMethod
;
\ No newline at end of file
const
Index
=
(
props
)
=>
{
const
value
=
props
.
value
||
{
active
:
0
,
otherValues
:
[
30
,
1
]};
const
componentProps
=
props
.
props
[
'x-component-props'
]
||
{};
const
options
=
componentProps
.
options
||
{};
// 默认选择
useEffect
(()
=>
{
// const componentProps = props.props['x-component-props'] || {};
const
defaultValue
=
componentProps
.
default
||
{};
if
(
!
options
.
days
&&
!
options
.
month
)
{
return
}
if
(
typeof
props
.
initialValue
==
'undefined'
)
{
props
.
mutators
.
change
(
defaultValue
)
}
else
{
props
.
mutators
.
change
(
props
.
initialValue
)
}
},
[
props
.
initialValue
,
options
])
const
onChange
=
(
value
)
=>
{
console
.
log
(
value
);
props
.
mutators
.
change
(
value
);
}
return
(
<
div
>
<
SettleMethod
value=
{
value
}
daysVisible=
{
options
.
days
}
monthVisible=
{
options
.
month
}
onChange=
{
onChange
}
/>
</
div
>
)
}
Index
.
isFieldComponent
=
true
;
export
default
Index
;
\ No newline at end of file
src/pages/balance/components/StatusActions/index.less
0 → 100644
View file @
932096bb
.modalBtn {
color: @main-color;
cursor: pointer;
}
\ No newline at end of file
src/pages/balance/components/StatusActions/index.tsx
0 → 100644
View file @
932096bb
/*
* @Author: your name
* @Date: 2020-10-23 17:24:23
* @Description: 结算能力列表操作
*/
import
React
from
'react'
;
import
ModalContainer
from
'../ModalContainer'
;
import
{
Modal
,
Space
,
Button
}
from
'antd'
;
import
ConfirmAccount
from
'../../components/ConfirmAccount'
;
import
Voucher
from
'../../components/Voucher'
;
import
{
StatusEnum
,
TO_BE_RECONCILED
,
TO_BE_PAY
,
TO_BE_COLLECTED
,
COMPLETED
}
from
'../../components/StatusTag'
;
import
styles
from
'./index.less'
;
interface
Iprops
{
status
:
StatusEnum
,
handleReconciledComfirm
?:
(
params
:
any
)
=>
void
// 对账确定回调
handleComfirmInCompletePayment
?:
(
params
:
any
)
=>
void
,
// 确认未到款回调
handleComfirmCompletePayment
?:
(
params
:
any
)
=>
void
,
//确认到款回调
}
// 显示确认对账
const
ConfirmAccountComponent
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
return
(
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
400
}
title=
"确认对账完成"
visible=
{
visible
}
onCancel=
{
cancel
}
onOk=
{
()
=>
props
.
handleReconciledComfirm
({
onCancel
:
cancel
})
}
>
<
ConfirmAccount
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
确认对账完成
</
div
>
</>
)
}
}
</
ModalContainer
>
)
}
// 确认付款凭证
const
ConfirmCollected
=
(
props
)
=>
{
return
(
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
548
}
title=
"确认付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
(
<
Space
>
<
Button
onClick=
{
cancel
}
>
取消
</
Button
>
<
Button
danger
onClick=
{
()
=>
props
.
handleComfirmInCompletePayment
({
onCancel
:
cancel
})
}
>
确认未到款
</
Button
>
<
Button
type=
{
"primary"
}
onClick=
{
()
=>
props
.
handleComfirmCompletePayment
({
onCancel
:
cancel
})
}
>
确认到款
</
Button
>
</
Space
>
)
}
>
<
Voucher
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
确认付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
)
}
// 显示查看付款凭证
const
ViewPaymentVoucher
:
React
.
FC
=
(
props
)
=>
{
return
(
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
548
}
title=
"查看付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
null
}
>
<
Voucher
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
查看付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
)
}
// 待对账时显示确认对账, 待付款 什么都不显示, 代收款显示确认付款凭证, 以完成显示 查看付款凭证
const
ChildrenComponent
=
{
[
TO_BE_RECONCILED
]:
ConfirmAccountComponent
,
[
TO_BE_PAY
]:
null
,
[
TO_BE_COLLECTED
]:
ConfirmCollected
,
[
COMPLETED
]:
ViewPaymentVoucher
}
const
StatusActions
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
status
}
=
props
;
const
Component
=
ChildrenComponent
[
status
];
return
(
<>
{
Component
&&
<
Component
{
...
props
}
/>
}
</>
)
}
export
default
StatusActions
\ No newline at end of file
src/pages/balance/components/StatusTag/index.tsx
0 → 100644
View file @
932096bb
import
React
from
'react'
;
import
{
Tag
}
from
'antd'
;
export
const
TO_BE_RECONCILED
=
1
;
// 待对账
export
const
TO_BE_PAY
=
2
// 待付款
export
const
TO_BE_COLLECTED
=
3
;
// 待收款
export
const
COMPLETED
=
4
// 以完成
export
enum
StatusEnum
{
TO_BE_RECONCILED
,
TO_BE_PAY
,
TO_BE_COLLECTED
,
COMPLETED
}
const
COLOR
=
[
"purple"
,
// 随意给一个
"gold"
,
// 待对账
"red"
,
// 待付款
"blue"
,
// 代收款,
"green"
,
// 以完成
]
const
STATUS_TEXT
=
[
"无"
,
"待对账"
,
"待付款"
,
"待收款"
,
"已完成"
]
interface
Iprops
{
status
:
StatusEnum
}
const
StatusTag
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
return
(
<
Tag
color=
{
COLOR
[
props
.
status
]
}
>
{
STATUS_TEXT
[
props
.
status
]
}
</
Tag
>
)
}
StatusTag
.
defaultProps
=
{
status
:
1
}
export
default
StatusTag
\ No newline at end of file
src/pages/balance/platformSettlement/accountReceivable/index.tsx
View file @
932096bb
...
...
@@ -14,9 +14,8 @@ import { StandardTable } from 'god';
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
schema
}
from
'./schema'
;
import
ModalContainer
from
'../../components/ModalContainer'
;
import
ConfirmAccount
from
'../../components/ConfirmAccount'
;
import
Voucher
from
'../../components/Voucher'
;
import
StatusTag
from
'../../components/StatusTag'
;
import
StatusActions
from
'../../components/StatusActions'
;
const
formActions
=
createFormActions
();
...
...
@@ -42,7 +41,7 @@ const AccountReceivable = () => {
title
:
'结算状态'
,
dataIndex
:
'status'
,
render
:
(
text
,
record
)
=>
{
return
(
<
Tag
>
待对账
</
Tag
>
<
StatusTag
status=
{
record
.
status
||
1
}
/
>
)
}
},
...
...
@@ -50,58 +49,12 @@ const AccountReceivable = () => {
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
(
<>
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
400
}
title=
"确认对账完成"
visible=
{
visible
}
onCancel=
{
cancel
}
onOk=
{
()
=>
handleConfirm
(
cancel
)
}
>
<
ConfirmAccount
/>
</
Modal
>
<
div
onClick=
{
show
}
>
确认对账完成
</
div
>
</>
)
}
}
</
ModalContainer
>
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
548
}
title=
"查看付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
null
}
>
<
Voucher
/>
</
Modal
>
<
div
onClick=
{
show
}
>
查看付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
548
}
title=
"确认付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
(
<
Space
>
<
Button
>
取消
</
Button
>
<
Button
>
确认未到款
</
Button
>
<
Button
>
确认到款
</
Button
>
</
Space
>
)
}
>
<
Voucher
/>
</
Modal
>
<
div
onClick=
{
show
}
>
确认付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
</>
<
StatusActions
status=
{
record
.
status
||
3
}
handleReconciledComfirm=
{
handleConfirm
}
handleComfirmInCompletePayment=
{
handleComfirmInCompletePayment
}
handleComfirmCompletePayment=
{
handleComfirmCompletePayment
}
/>
)
}
}
...
...
@@ -111,9 +64,18 @@ const AccountReceivable = () => {
* 确认对账
* @param cancel 关闭回调函数
*/
const
handleConfirm
=
(
cancel
)
=>
{
const
handleConfirm
=
(
params
:
any
)
=>
{
console
.
log
(
123
)
cancel
();
params
.
onCancel
();
}
const
handleComfirmInCompletePayment
=
(
params
:
any
)
=>
{
console
.
log
(
params
);
params
.
onCancel
()
}
const
handleComfirmCompletePayment
=
(
params
:
any
)
=>
{
params
.
onCancel
();
}
return
(
...
...
src/pages/balance/settleRules/corporateAccount/index.tsx
View file @
932096bb
...
...
@@ -19,39 +19,17 @@ interface Config {
cacheValue
:
string
,
changeEdit
?:
any
,
pattern
?:
any
,
message
?:
string
message
?:
string
,
dataIndex
:
string
,
}
const
CONFIGS
:
Config
[]
=
[
{
name
:
'账号名称'
,
image
:
company
,
value
:
''
,
cacheValue
:
''
,
isEdit
:
false
,
canEdit
:
false
},
{
name
:
'银行账号'
,
image
:
bank_account
,
value
:
''
,
cacheValue
:
''
,
isEdit
:
false
,
canEdit
:
true
,
pattern
:
/^
([
1-9
]{1})(\d{14}
|
\d{18})
$/
,
message
:
'请输入正确的银行账号'
},
{
name
:
'开户行'
,
image
:
bank
,
value
:
''
,
cacheValue
:
''
,
isEdit
:
false
,
canEdit
:
true
,
pattern
:
/^
[\u
4e00-
\u
9fa5
]{0,50}
|
[
0-9a-zA-Z
]{0,100}
$/
,
message
:
'最多50个汉字'
},
]
interface
AccountDetal
{
id
:
number
,
name
:
string
,
bankAccount
:
string
,
bankDeposit
:
string
,
memberId
:
number
}
const
ItemRender
:
React
.
FC
<
Config
>
=
(
props
)
=>
{
const
{
isEdit
,
name
,
canEdit
,
value
,
image
,
changeEdit
,
pattern
,
message
}
=
props
;
...
...
@@ -114,8 +92,9 @@ const ItemRender: React.FC<Config> = (props) => {
}
const
CorporateAccount
=
()
=>
{
const
[
configs
,
setConfigs
]
=
useState
<
Config
[]
>
(
CONFIGS
);
const
[
unsaved
,
setUnsaved
]
=
useState
<
Boolean
>
(
false
)
const
[
configs
,
setConfigs
]
=
useState
<
Config
[]
>
([]);
const
[
unsaved
,
setUnsaved
]
=
useState
<
boolean
>
(
false
)
const
[
datas
,
setDatas
]
=
useState
<
AccountDetal
>
(
null
);
const
changeEdit
=
(
name
:
string
,
res
:
any
,
type
:
string
)
=>
{
let
temp
=
[...
configs
];
const
index
=
temp
.
findIndex
((
row
)
=>
row
.
name
===
name
);
...
...
@@ -126,6 +105,7 @@ const CorporateAccount = () => {
...
target
,
...
res
,
}
setConfigs
(
temp
);
}
else
if
(
type
==
'cancel'
)
{
setUnsaved
(
false
);
temp
[
index
]
=
{
...
...
@@ -133,24 +113,74 @@ const CorporateAccount = () => {
...
res
,
value
:
type
==
'cancel'
?
target
.
cacheValue
:
target
.
value
,
}
setConfigs
(
temp
);
}
else
if
(
type
==
'confirm'
)
{
setUnsaved
(
false
);
temp
[
index
]
=
{
...
target
,
...
res
,
cacheValue
:
type
==
'confirm'
?
target
.
value
:
target
.
cacheValue
const
postData
=
{
...
datas
,
[
target
.
dataIndex
]:
target
.
value
}
console
.
log
(
postData
);
///settle/accounts/corporate/account/update
PublicApi
.
postSettleAccountsCorporateAccountUpdate
(
postData
)
.
then
((
data
)
=>
{
if
(
data
.
code
==
1000
)
{
setUnsaved
(
false
);
setDatas
(
postData
);
temp
[
index
]
=
{
...
target
,
...
res
,
cacheValue
:
type
==
'confirm'
?
target
.
value
:
target
.
cacheValue
}
setConfigs
(
temp
);
}
})
}
setConfigs
(
temp
);
}
useEffect
(()
=>
{
const
{
memberId
}
=
getAuth
()
||
{};
// 进行基础赋值, fetchData
///settle/accounts/corporate/account/getDetail
async
function
fetchData
()
{
const
res
=
await
PublicApi
.
getSettleAccountsCorporateAccountConfig
({
memberId
:
memberId
});
console
.
log
(
res
);
const
{
data
}
=
await
PublicApi
.
getSettleAccountsCorporateAccountGetDetail
({
memberId
:
memberId
});
console
.
log
(
data
);
setDatas
(
data
);
setConfigs
(
[
{
name
:
'账号名称'
,
dataIndex
:
'name'
,
image
:
company
,
value
:
data
.
name
,
cacheValue
:
data
.
name
,
isEdit
:
false
,
canEdit
:
false
},
{
name
:
'银行账号'
,
dataIndex
:
'bankAccount'
,
image
:
bank_account
,
value
:
data
.
bankAccount
,
cacheValue
:
data
.
bankAccount
,
isEdit
:
false
,
canEdit
:
true
,
pattern
:
/^
([
1-9
]{1})(\d{14}
|
\d{18})
$/
,
message
:
'请输入正确的银行账号'
},
{
name
:
'开户行'
,
dataIndex
:
'bankDeposit'
,
image
:
bank
,
value
:
data
.
bankDeposit
,
cacheValue
:
data
.
bankDeposit
,
isEdit
:
false
,
canEdit
:
true
,
pattern
:
/^
[\u
4e00-
\u
9fa5
]{0,50}
|
[
0-9a-zA-Z
]{0,100}
$/
,
message
:
'最多50个汉字'
},
]
)
}
fetchData
();
},
[])
...
...
src/pages/balance/settleRules/memberSettle/index.tsx
View file @
932096bb
...
...
@@ -15,68 +15,31 @@ import StatusSwitch from '@/components/StatusSwitch';
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
history
}
from
'umi'
;
import
{
indexSchema
}
from
'./schema'
;
const
formActions
=
createFormActions
();
const
schema
=
{
type
:
'object'
,
properties
:
{
layout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
columns
:
6
},
properties
:
{
createBtn
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{createBtn}}'
},
"x-mega-props"
:
{
"span"
:
4
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
"x-mega-props"
:
{
"span"
:
2
},
'x-component-props'
:
{
placeholder
:
'搜索'
,
advanced
:
false
,
},
},
}
}
}
}
const
MemberSettle
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
fetchData
=
async
(
params
:
any
)
=>
{
console
.
log
(
params
);
// let res = await PublicApi.getMemberAbilityInfoPage(params);
// return res.data;
return
{}
const
{
current
,
pageSize
,
name
}
=
params
const
postData
=
{
current
,
pageSize
,
name
:
name
||
''
}
const
{
data
}
=
await
PublicApi
.
getSettleAccountsPlatformConfigPageMemberSettlementStrategy
(
postData
);
return
data
;
};
const
handleModify
=
(
record
)
=>
{
console
.
log
(
record
);
const
handleModify
=
async
(
record
)
=>
{
const
{
code
}
=
await
PublicApi
.
postSettleAccountsPlatformConfigSetMemberSettlementStrategyStatus
({
id
:
record
.
id
,
status
:
record
.
status
?
0
:
1
})
if
(
code
==
1000
)
{
formActions
.
submit
();
}
}
const
columns
:
ColumnsType
<
any
>
=
[
{
title
:
'ID'
,
dataIndex
:
'id'
,
},
{
title
:
'ID'
,
dataIndex
:
'id'
,},
{
title
:
'策略名称'
,
dataIndex
:
'name'
,
...
...
@@ -84,7 +47,7 @@ const MemberSettle: React.FC<{}> = () => {
return
(
<
div
>
<
EyePreview
url=
{
`/
content/columnInfo
?id=${record.id}&preview=1`
}
url=
{
`/
memberCenter/balance/settleRules/memberSettleList/detail
?id=${record.id}&preview=1`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -92,14 +55,8 @@ const MemberSettle: React.FC<{}> = () => {
)
}
},
{
title
:
'结算方式'
,
dataIndex
:
'methods'
},
{
title
:
'结算单据'
,
dataIndex
:
'create-at'
,
},
{
title
:
'结算方式'
,
dataIndex
:
'settlementOrderTypeName'
},
{
title
:
'结算单据'
,
dataIndex
:
'settlementWayName'
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
...
...
@@ -114,14 +71,18 @@ const MemberSettle: React.FC<{}> = () => {
}
},
]
const
goToCreate
=
()
=>
{
history
.
push
(
'/memberCenter/balance/settleRules/memberSettleList/add'
);
}
return
(
<
PageHeaderWrapper
title=
{
"
生产通知单查询
"
}
title=
{
"
会员结算策略
"
}
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'
memberI
d'
,
rowKey
:
'
i
d'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
...
...
@@ -132,13 +93,13 @@ const MemberSettle: React.FC<{}> = () => {
expressionScope=
{
{
createBtn
:
(
<
div
style=
{
{
width
:
'112px'
}
}
>
<
Button
type=
"primary"
><
PlusOutlined
/>
新建
</
Button
>
<
Button
type=
"primary"
onClick=
{
goToCreate
}
><
PlusOutlined
/>
新建
</
Button
>
</
div
>
)
}
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
schema=
{
s
chema
}
schema=
{
indexS
chema
}
/>
}
/>
...
...
src/pages/balance/settleRules/memberSettle/info.tsx
View file @
932096bb
...
...
@@ -21,34 +21,38 @@ import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import
SettleMethod
from
'../../components/SettleMethod'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
history
,
Prompt
}
from
'umi'
import
{
getSettleAccountsPlatformConfigGetMemberSettlementStrategyDetail
}
from
'@/services/SettleApi'
;
const
formActions
=
createFormActions
();
const
common_columns
:
any
=
[
{
title
:
'ID'
,
dataIndex
:
'id'
},
{
title
:
'会员名称'
,
dataIndex
:
'name'
},
{
title
:
'会员类型'
,
dataIndex
:
'type'
},
{
title
:
'会员角色'
,
dataIndex
:
'role'
},
{
title
:
'会员等级'
,
dataIndex
:
'level'
},
]
const
columns
=
common_columns
.
concat
(
[
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
删除
</
div
>
)
}
{
title
:
'ID'
,
dataIndex
:
'memberId'
},
{
title
:
'会员名称'
,
dataIndex
:
'name'
,
render
:
(
text
,
record
)
=>
{
return
record
.
name
||
record
.
memberName
}
]
);
},
{
title
:
'会员类型'
,
dataIndex
:
'memberTypeName'
},
{
title
:
'会员角色'
,
dataIndex
:
'roleName'
},
{
title
:
'会员等级'
,
dataIndex
:
'levelTag'
,
render
:
(
text
,
record
)
=>
{
return
record
.
levelTag
||
record
.
levelName
}
},
]
const
MemberSettleAdd
:
React
.
FC
=
()
=>
{
const
[
visible
,
setVisible
]
=
useState
(
false
)
const
[
memberRowSelection
,
memberRowCtl
]
=
useRowSelectionTable
({
customKey
:
'
i
d'
});
const
[
memberRowSelection
,
memberRowCtl
]
=
useRowSelectionTable
({
customKey
:
'
memberI
d'
});
const
[
initialValue
,
setInitialValue
]
=
useState
({});
const
isEdit
=
false
;
const
{
id
,
preview
}
=
usePageStatus
();
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
[
unsaved
,
setUnsaved
]
=
useState
(
true
);
const
isEdit
=
id
&&
!
preview
;
const
isAdd
=
!
id
&&
!
preview
;
const
tableAddButton
=
()
=>
{
return
(
<
div
>
...
...
@@ -64,25 +68,46 @@ const MemberSettleAdd: React.FC = () => {
</
div
>
)
}
useEffect
(()
=>
{
if
(
isEdit
)
{
setInitialValue
({
name
:
'test'
,
methods
:
{
active
:
1
,
otherValues
:
[
25
,
2
]
}
})
}
},
[])
const
columns
=
common_columns
.
concat
(
[
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
onClick=
{
()
=>
handleRemove
(
record
.
memberId
)
}
>
删除
</
div
>
)
}
}
]
);
const
handleCancelAddMember
=
()
=>
{
setVisible
(
false
);
}
// 从PAAS平台--规则配置--平台规则配置取已勾选的结算方式决定是否显示结算方式
const
fetchBalancedMethods
=
async
()
=>
{
const
{
data
}
=
await
PublicApi
.
getManageRuleConfigurationList
({
platformType
:
'5'
});
const
length
=
data
.
length
return
{
days
:
length
>
0
&&
data
[
0
].
check
,
month
:
length
>
1
&&
data
[
1
].
check
};
}
// 获取适用会员
const
fetchMemberData
=
async
(
params
:
any
)
=>
{
const
{
data
}
=
await
PublicApi
.
getManageContentInformationPage
(
params
);
//member/manage/lower/page/bynamerole
const
{
data
}
=
await
PublicApi
.
getMemberManageLowerPageBynamerole
(
params
);
return
data
}
// 获取适用会员下拉搜索框
const
fetchMemberSearchFilter
=
async
()
=>
{
// /member/manage/role/sub/list
const
{
data
}
=
await
PublicApi
.
postMemberManageRoleSubList
({},
{
method
:
'GET'
,
ctlType
:
"none"
});
// console.log(data);
return
data
}
...
...
@@ -92,17 +117,85 @@ const MemberSettleAdd: React.FC = () => {
setVisible
(
false
);
}
// 提交
const
handleSubmit
=
(
value
)
=>
{
console
.
log
(
value
);
const
memberList
=
value
.
someLists
.
map
((
item
)
=>
({
memberId
:
item
.
memberId
,
roleId
:
item
.
roleId
}));
const
tempData
=
{
name
:
value
.
name
,
settlementOrderType
:
value
.
settlementOrderType
,
memberList
:
memberList
,
settlementWay
:
value
.
settlementWay
.
active
,
settlementDays
:
value
.
settlementWay
.
otherValues
[
0
],
settlementDate
:
value
.
settlementWay
.
otherValues
[
1
],
}
console
.
log
(
"tempData"
,
tempData
)
// /settle/accounts/platform/config/addMemberSettlementStrategy
const
serviceActions
=
isAdd
?
PublicApi
.
postSettleAccountsPlatformConfigAddMemberSettlementStrategy
:
PublicApi
.
postSettleAccountsPlatformConfigUpdateMemberSettlementStrategy
const
postData
=
{...
tempData
,
id
:
id
||
0
}
console
.
log
(
"postData"
,
postData
)
setSubmitLoading
(
true
);
setUnsaved
(
false
);
serviceActions
(
postData
).
then
((
data
)
=>
{
setSubmitLoading
(
false
);
if
(
data
.
code
===
1000
)
{
history
.
push
(
'/memberCenter/balance/settleRules/memberSettleList'
)
}
})
}
// 提交
const
handleClick
=
()
=>
{
formActions
.
submit
()
}
//
const
handleRemove
=
(
id
:
number
)
=>
{
const
string
=
'Tabs.memberTab.someLists'
;
const
chooseList
=
formActions
.
getFieldValue
(
string
);
const
res
=
chooseList
.
filter
((
item
)
=>
item
.
memberId
!==
id
);
formActions
.
setFieldValue
(
string
,
res
);
// 必须设置key
memberRowCtl
.
setSelectRow
(
res
);
memberRowCtl
.
setSelectedRowKeys
(
res
.
map
((
item
)
=>
item
.
memberId
))
}
// 从PAAS平台--规则配置--平台规则配置取已勾选的结算方式决定是否显示结算方式
useEffect
(()
=>
{
fetchBalancedMethods
().
then
(
data
=>
{
formActions
.
setFieldState
(
'Tabs.basicTab.layout.settlementWay'
,
(
state
)
=>
{
state
.
props
[
'x-component-props'
][
'options'
]
=
data
;
})
})
},
[])
useEffect
(()
=>
{
if
(
id
)
{
async
function
getInfo
()
{
const
{
data
}
=
await
getSettleAccountsPlatformConfigGetMemberSettlementStrategyDetail
({
id
})
setInitialValue
({
name
:
data
.
name
,
settlementOrderType
:
data
.
settlementOrderType
.
toString
(),
memberList
:
data
.
memberList
,
settlementWay
:
{
active
:
data
.
settlementWay
,
otherValues
:
[
data
.
settlementDays
,
data
.
settlementDate
],
}
})
formActions
.
setFieldValue
(
'Tabs.memberTab.someLists'
,
data
.
memberList
);
// 必须设置key
memberRowCtl
.
setSelectRow
(
data
.
memberList
);
memberRowCtl
.
setSelectedRowKeys
(
data
.
memberList
.
map
((
item
)
=>
item
.
memberId
))
}
getInfo
();
}
},
[
id
])
return
(
<
PageHeaderWrapper
// onBack={() => history.goBack()}
// backIcon={<ReutrnEle description="返回" />}
extra=
{
[
<
Button
key=
"1"
type=
"primary"
onClick=
{
handleClick
}
>
保存
...
...
@@ -131,7 +224,7 @@ const MemberSettleAdd: React.FC = () => {
rowSelection=
{
memberRowSelection
}
fetchTableData=
{
params
=>
fetchMemberData
(
params
)
}
tableProps=
{
{
rowKey
:
'
i
d'
,
rowKey
:
'
memberI
d'
,
}
}
formilyProps=
{
...
...
@@ -147,16 +240,18 @@ const MemberSettleAdd: React.FC = () => {
'name'
,
FORM_FILTER_PATH
,
)
// useAsyncSelect(
// 'parentMemberId',
// fetchSelectOptions,
// )
useAsyncSelect
(
'roleId'
,
fetchMemberSearchFilter
,
[
'roleName'
,
'roleId'
]
)
}
}
}
}
/>
</
Card
>
<
Prompt
when=
{
unsaved
}
message=
"内容还没保存,确定离开吗?"
/>
</
PageHeaderWrapper
>
)
}
...
...
src/pages/balance/settleRules/memberSettle/schema/index.tsx
View file @
932096bb
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
/**
* index.tsx schem
* 列表页搜索schema
*/
export
const
indexSchema
=
{
type
:
'object'
,
properties
:
{
layout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
columns
:
6
},
properties
:
{
createBtn
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{createBtn}}'
},
"x-mega-props"
:
{
"span"
:
4
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
"x-mega-props"
:
{
"span"
:
2
},
'x-component-props'
:
{
placeholder
:
'搜索'
,
advanced
:
false
,
},
},
}
}
}
}
/**
* 新增会员结算策略schema
*
*/
export
const
addSchema
=
{
type
:
'object'
,
properties
:
{
...
...
@@ -33,29 +80,34 @@ export const addSchema = {
{
required
:
true
,
message
:
'请填写策略名称'
},
]
},
methods
:
{
settlementWay
:
{
title
:
'结算方式'
,
'x-component'
:
'SettleMethod'
,
'x-rules'
:
[
{
required
:
true
,
message
:
'请
填写消
息'
message
:
'请
选择结算方式并填写信
息'
},
{
settleMethodRule
:
true
}
],
'x-component-props'
:
{
// options: {
// days: true,
// month: false
// },
default
:
{
active
:
1
,
otherValues
:
[
30
,
1
]
}
}
},
doc
:
{
settlementOrderType
:
{
type
:
'string'
,
enum
:
[
{
label
:
'1'
,
value
:
'123'
}
{
label
:
'生产通知单'
,
value
:
'1'
},
{
label
:
'物流通知单'
,
value
:
'2'
}
],
title
:
'结算单据'
,
'x-rules'
:
[
...
...
@@ -80,7 +132,7 @@ export const addSchema = {
},
'x-component'
:
'MultTable'
,
'x-component-props'
:
{
rowKey
:
'
i
d'
,
rowKey
:
'
memberI
d'
,
prefix
:
"{{tableAddButton}}"
,
columns
:
"{{tableColumns}}"
// columns: "{{tableColumns}}",
...
...
@@ -119,29 +171,15 @@ export const memberSchema = {
},
},
properties
:
{
memberType
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'选择会员类型'
,
// className: 'fixed-ant-selected-down',
// fetchSearch: PublicApi.getProductSelectGetSelectCategory,
}
},
memberRole
:
{
roleId
:
{
type
:
'string'
,
enum
:
[],
"x-component-props"
:
{
placeholder
:
'选择会员角色'
,
style
:
{
width
:
'200px'
}
}
},
memberlevel
:
{
type
:
'string'
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'选择会员等级'
,
},
},
submit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
...
...
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