Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-admin
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
shenshaokai
jinfa-admin
Commits
56e3a9ba
Commit
56e3a9ba
authored
Oct 30, 2020
by
Bill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对接结算能力
parent
d04b5fba
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1463 additions
and
330 deletions
+1463
-330
balancedRoute.ts
config/routes/balancedRoute.ts
+25
-7
menu.ts
src/locales/zh-CN/menu.ts
+5
-3
index.tsx
src/pages/platformSettlement/accountPayable/index.tsx
+161
-0
info.tsx
src/pages/platformSettlement/accountPayable/info.tsx
+167
-0
schema.tsx
src/pages/platformSettlement/accountPayable/schema.tsx
+48
-27
index.tsx
src/pages/platformSettlement/accountReceivable/index.tsx
+0
-152
info.tsx
src/pages/platformSettlement/accountReceivable/info.tsx
+0
-115
index.tsx
...es/platformSettlement/components/ConfirmAccount/index.tsx
+16
-3
index.less
...es/platformSettlement/components/StatusActions/index.less
+5
-0
index.tsx
...ges/platformSettlement/components/StatusActions/index.tsx
+231
-0
index.less
src/pages/platformSettlement/components/StatusTag/index.less
+4
-0
index.tsx
src/pages/platformSettlement/components/StatusTag/index.tsx
+102
-0
index.less
...platformSettlement/components/UploadPayVoucher/index.less
+30
-0
index.tsx
.../platformSettlement/components/UploadPayVoucher/index.tsx
+117
-14
index.less
src/pages/platformSettlement/components/Voucher/index.less
+6
-0
index.tsx
src/pages/platformSettlement/components/Voucher/index.tsx
+31
-9
index.tsx
src/pages/platformSettlement/score/info/index.tsx
+168
-0
schema.tsx
src/pages/platformSettlement/score/info/schema.tsx
+94
-0
index.tsx
src/pages/platformSettlement/score/list/index.tsx
+170
-0
schema.tsx
src/pages/platformSettlement/score/list/schema.tsx
+83
-0
No files found.
config/routes/balancedRoute.ts
View file @
56e3a9ba
...
...
@@ -36,17 +36,35 @@ const router = {
hidePageHeader
:
true
,
hideInMenu
:
true
,
},
// 代
收
账款结算列表
// 代
付
账款结算列表
{
path
:
'/balanced/accountReceivable'
,
name
:
'accountReceivableList'
,
component
:
'@/pages/platformSettlement/accountReceivable'
,
path
:
'/balanced/accountPayable'
,
name
:
'accountPayableList'
,
component
:
'@/pages/platformSettlement/accountPayable'
,
hidePageHeader
:
true
,
},
// 代收账款结算明细
{
path
:
'/balanced/accountReceivable/detail'
,
name
:
'accountReceivableDetail'
,
component
:
'@/pages/platformSettlement/accountReceivable/info'
,
path
:
'/balanced/accountPayable/detail'
,
name
:
'accountPayableDetail'
,
component
:
'@/pages/platformSettlement/accountPayable/info'
,
hidePageHeader
:
true
,
hideInMenu
:
true
},
// 积分代付账款结算列表
{
path
:
'/balanced/scorePayable'
,
name
:
'scorePayable'
,
component
:
'@/pages/platformSettlement/score/list'
,
hidePageHeader
:
true
,
},
// 积分代付账款结算详情页
{
path
:
'/balanced/scorePayable/detail'
,
name
:
'scorePayableDetail'
,
component
:
'@/pages/platformSettlement/score/info'
,
hidePageHeader
:
true
,
hideInMenu
:
true
,
}
]
}
...
...
src/locales/zh-CN/menu.ts
View file @
56e3a9ba
...
...
@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-08-04 15:05:52
* @LastEditors: Please set LastEditors
* @LastEditTime: 2020-10-
22 18:53:15
* @LastEditTime: 2020-10-
30 16:47:21
*/
import
utils
from
'@/utils'
import
menu
from
'../en-US/menu'
...
...
@@ -176,7 +176,9 @@ export default {
'menu.balanced.receipt'
:
'发票管理'
,
'menu.balanced.receiptAdd'
:
'新建发票'
,
'menu.balanced.receiptDetail'
:
'发票详情'
,
'menu.balanced.accountReceivableList'
:
'代收账款结算'
,
'menu.balanced.accountReceivableDetail'
:
'代收账款明细'
'menu.balanced.accountPayableList'
:
'代付账款结算'
,
'menu.balanced.accountPayableDetail'
:
'代付账款明细'
,
'menu.balanced.scorePayable'
:
'积分结算'
,
'menu.balanced.scorePayableDetail'
:
'积分结算详情'
}
// export default utils.transformDataPre(data, 'menu')
src/pages/platformSettlement/accountPayable/index.tsx
0 → 100644
View file @
56e3a9ba
/*
* @Author: Bill
* @Date: 2020-10-20 11:04:07
* @Description: 应付账款结算
*/
import
React
,
{
useRef
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
Button
,
Modal
,
DatePicker
,
Tag
,
Space
}
from
'antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
,
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
schema
}
from
'./schema'
;
import
StatusActions
from
'../components/StatusActions'
;
import
StatusTag
from
'../components/StatusTag'
;
import
{
PublicApi
}
from
'@/services/api'
import
{
Moment
}
from
'moment'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
EyePreview
from
'@/components/EyePreview'
;
interface
SearchParams
{
settlementName
?:
string
,
payName
?:
string
,
isSettlement
:
number
,
startTime
?:
Moment
,
endTime
?:
Moment
,
orderType
?:
number
,
status
?:
number
,
current
:
number
,
pageSize
:
number
,
}
const
formActions
=
createFormActions
();
const
PLATFORM_PAYER
=
4
;
const
SettlementList
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
fetchListData
=
async
(
params
)
=>
{
// /settle/accounts/platform/settlement/pagePayableSettlement
const
searchData
=
{
...
params
,
status
:
typeof
params
.
status
==
'undefined'
?
0
:
params
.
status
,
}
console
.
log
(
searchData
);
const
res
=
await
PublicApi
.
getSettleAccountsPlatformSettlementPagePayableSettlement
(
searchData
)
return
res
.
data
;
}
const
columns
:
ColumnsType
<
any
>
=
[
{
title
:
'结算单号'
,
dataIndex
:
'settlementNo'
,
render
:
(
text
,
record
)
=>
{
const
url
=
`/balanced/accountPayable/detail?id=
${
record
.
id
}
`
;
return
(
<
EyePreview
url=
{
url
}
>
{
text
}
</
EyePreview
>
)
}
},
{
title
:
'结算日期'
,
dataIndex
:
'settlementDate'
},
{
title
:
'结算方式'
,
dataIndex
:
'settlementWayName'
},
{
title
:
'结算方'
,
dataIndex
:
'settlementName'
},
{
title
:
'总单数'
,
dataIndex
:
'totalCount'
},
{
title
:
'代收金额'
,
dataIndex
:
'collectAmount'
},
{
title
:
'佣金'
,
dataIndex
:
'brokerage'
},
{
title
:
'结算金额'
,
dataIndex
:
'amount'
},
{
title
:
'结算时间'
,
dataIndex
:
'settlementTime'
},
{
title
:
'支付方式'
,
dataIndex
:
'payWayName'
},
{
title
:
'结算状态'
,
dataIndex
:
'status'
,
filters
:
[
{
text
:
'待对账'
,
value
:
1
},
{
text
:
'待付款'
,
value
:
2
},
{
text
:
'待收款'
,
value
:
3
},
{
text
:
'以完成'
,
value
:
4
},
],
onFilter
:
(
value
,
record
:
any
)
=>
record
.
status
==
value
,
render
:
(
text
,
record
:
any
)
=>
{
return
(
<
StatusTag
status=
{
record
.
status
}
/>
)
}
},
{
title
:
'操作'
,
render
:
(
text
,
record
:
any
)
=>
{
return
(
<
StatusActions
status=
{
record
.
status
<=
2
?
record
.
status
:
4
}
id=
{
record
.
id
}
excludes=
{
[
1
,
3
]
}
settlementId=
{
record
.
memberId
||
1
}
handleUpload=
{
handleUploadVoucher
}
type=
{
PLATFORM_PAYER
}
/>
)
}
}
]
/**
* 上传凭证
* @param params
*/
const
handleUploadVoucher
=
(
params
:
any
)
=>
{
console
.
log
(
params
);
PublicApi
.
postSettleAccountsPlatformSettlementPay
({
id
:
params
.
id
,
proveList
:
params
.
fileList
})
.
then
((
data
)
=>
{
if
(
data
.
code
===
1000
)
{
formActions
.
submit
();
params
.
onCancel
()
}
})
}
/**
* 搜索
*/
const
handleSearch
=
(
values
:
SearchParams
)
=>
{
const
format
=
'YYYY-MM-DD'
const
startTime
=
values
.
startTime
?.
format
(
format
);
const
endTime
=
values
.
endTime
?.
format
(
format
);
ref
.
current
.
reload
({...
values
,
startTime
,
endTime
});
}
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
DatePicker
}
}
actions=
{
formActions
}
expressionScope=
{
{}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.settlementName'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
schema
}
onSubmit=
{
handleSearch
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
SettlementList
src/pages/platformSettlement/accountPayable/info.tsx
0 → 100644
View file @
56e3a9ba
/*
* @Author: Bill
* @Date: 2020-10-20 10:54:00
* @Description: 积分结算详情页
*/
import
React
,
{
useRef
,
useState
,
useEffect
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
,
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
detailSchema
}
from
'./schema'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
StatusTag
from
'../components/StatusTag'
;
import
{
timeRange
}
from
'@/utils/index'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
formActions
=
createFormActions
();
const
columns
=
[
{
title
:
'单据号'
,
dataIndex
:
'orderNo'
},
{
title
:
'单据摘要'
,
dataIndex
:
'orderAbstract'
},
{
title
:
'单据类型'
,
dataIndex
:
'settlementOrderTypeName'
},
{
title
:
'单据时间'
,
dataIndex
:
'orderTime'
},
{
title
:
'订单类型'
,
dataIndex
:
'orderTypeName'
},
{
title
:
'单据总额'
,
dataIndex
:
'orderAmount'
},
{
title
:
'代收金额'
,
dataIndex
:
'collectAmount'
},
{
title
:
'支付时间'
,
dataIndex
:
'payTime'
},
{
title
:
'佣金比率'
,
dataIndex
:
'ratio'
,
render
:
(
text
,
record
)
=>
{
return
(
record
.
ratio
+
'%'
);
}
},
{
title
:
'扣减佣金'
,
dataIndex
:
'brokerage'
},
{
title
:
'本期结算金额'
,
dataIndex
:
'settlementAmount'
},
]
const
logisticsDetail
:
React
.
FC
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
{
id
}
=
usePageStatus
();
const
[
infoDetail
,
setInfoDetail
]
=
useState
<
any
>
();
const
fetchListData
=
async
(
params
)
=>
{
const
postData
=
{
settlementId
:
id
,
...
params
}
// /settle/accounts/platform/settlement/pagePayableSettlementDetail
const
res
=
await
PublicApi
.
getSettleAccountsPlatformSettlementPagePayableSettlementDetail
(
postData
)
return
res
.
data
}
useEffect
(()
=>
{
if
(
id
)
{
// 获取详情
async
function
fetchDetail
()
{
const
{
data
,
code
}
=
await
PublicApi
.
getSettleAccountsPlatformSettlementGetPayableDetail
({
id
})
if
(
code
==
1000
)
{
setInfoDetail
(
data
);
}
}
fetchDetail
();
}
},
[
id
])
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
const
format
=
'YYYY-MM-DD'
const
{
payTime
,
orderTime
,
...
rest
}
=
values
;
const
payTimeRange
=
payTime
?
timeRange
(
values
.
payTime
):
null
;
const
payStartTime
=
payTimeRange
?
moment
(
payTimeRange
.
st
*
1000
).
format
(
format
)
:
null
;
const
payEndTime
=
payTimeRange
?
moment
(
payTimeRange
.
et
*
1000
).
format
(
format
)
:
null
;
const
orderTimeRange
=
orderTime
?
timeRange
(
values
.
orderTime
)
:
null
;
const
orderStartTime
=
orderTimeRange
?
moment
(
orderTimeRange
.
st
*
1000
).
format
(
format
)
:
null
;
const
orderEndTime
=
orderTimeRange
?
moment
(
orderTimeRange
.
et
*
1000
).
format
(
format
)
:
null
;
ref
.
current
.
reload
({...
rest
,
payStartTime
,
payEndTime
,
orderStartTime
,
orderEndTime
});
}
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
"结算单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
infoDetail
?.
settlementNo
}
</
span
>
)
}
/>
}
>
<
Descriptions
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"结算日期:"
>
{
infoDetail
?.
settlementDate
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"结算单数:"
>
{
infoDetail
?.
totalCount
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"结算金额:"
>
¥
{
infoDetail
?.
amount
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"结算方式:"
>
{
infoDetail
?.
settlementWayName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态:"
>
<
StatusTag
text=
{
infoDetail
?.
statusName
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
record
=>
(
record
.
orderNo
+
"-"
+
record
.
payTime
),
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
expressionScope=
{
{
exportBtn
:
(
<
div
>
<
Button
>
导出
</
Button
>
</
div
>
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.orderNo'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
detailSchema
}
onSubmit=
{
handleSearch
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
logisticsDetail
\ No newline at end of file
src/pages/platformSettlement/account
Receiv
able/schema.tsx
→
src/pages/platformSettlement/account
Pay
able/schema.tsx
View file @
56e3a9ba
...
...
@@ -17,13 +17,13 @@ export const schema: ISchema = {
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
n
ame
:
{
settlementN
ame
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索
(结算方)
'
,
align
:
'flex-left'
,
tip
:
'输入
通知单号、通知单摘要
进行搜索'
,
tip
:
'输入
结算方
进行搜索'
,
},
},
[
FORM_FILTER_PATH
]:
{
...
...
@@ -52,21 +52,28 @@ export const schema: ISchema = {
},
status
:
{
type
:
'string'
,
enum
:
[],
enum
:
[
{
label
:
'结算状态(所有)'
,
value
:
0
},
{
label
:
'待对账'
,
value
:
1
},
{
label
:
'待付款'
,
value
:
2
},
{
label
:
'代收款'
,
value
:
3
},
{
label
:
'已完成'
,
value
:
4
},
],
default
:
0
,
'x-component-props'
:
{
placeholder
:
'结算状态(全部)'
,
allowClear
:
true
,
},
},
//
submit: {
//
'x-component': 'Submit',
//
'x-mega-props': {
//
span: 1,
//
},
//
'x-component-props': {
//
children: '查询',
//
},
//
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
...
...
@@ -74,6 +81,18 @@ export const schema: ISchema = {
},
};
const
commonTimeList
=
[
{
label
:
'今天'
,
value
:
1
},
{
label
:
'一周内'
,
value
:
2
},
{
label
:
'一个月内'
,
value
:
3
},
{
label
:
'三个月内'
,
value
:
4
},
{
label
:
'六个月内'
,
value
:
5
},
{
label
:
'一年内'
,
value
:
6
},
{
label
:
'一年前'
,
value
:
7
}
];
const
orderTime
=
[{
label
:
'下单时间(所有)'
,
value
:
0
}].
concat
(
commonTimeList
);
const
payTime
=
[{
label
:
'支付时间(所有)'
,
value
:
0
}].
concat
(
commonTimeList
);
/**
* 应收账款管理--物流单结算明细详情, 生产通知单结算明细
*/
...
...
@@ -99,11 +118,11 @@ export const detailSchema: ISchema = {
children
:
'{{exportBtn}}'
,
},
},
search
:
{
orderNo
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索
(单据号)
'
,
},
},
},
...
...
@@ -119,30 +138,32 @@ export const detailSchema: ISchema = {
properties
:
{
orderTime
:
{
type
:
'string'
,
enum
:
[],
enum
:
orderTime
,
default
:
0
,
'x-component-props'
:
{
placeholder
:
'下单时间(全部)'
,
allowClear
:
true
,
},
},
payTime
:
{
type
:
'string'
,
enum
:
[],
enum
:
payTime
,
default
:
0
,
'x-component-props'
:
{
placeholder
:
'支付时间(全部)'
,
allowClear
:
true
,
},
},
// submit: {
// 'x-component': 'Submit',
// 'x-mega-props': {
// span: 1,
// },
// 'x-component-props': {
// children: '查询',
// },
// },
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
...
...
src/pages/platformSettlement/accountReceivable/index.tsx
deleted
100644 → 0
View file @
d04b5fba
/*
* @Author: Bill
* @Date: 2020-10-20 11:04:07
* @Description: 应付账款结算
*/
import
React
,
{
useRef
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
Button
,
Modal
,
DatePicker
,
Tag
,
Space
}
from
'antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
,
createFormActions
}
from
'@formily/antd'
;
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
UploadPayVoucher
from
'../components/UploadPayVoucher'
;
const
formActions
=
createFormActions
();
const
SettlementList
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
fetchListData
=
async
(
params
)
=>
{
return
{
data
:
[{
id
:
1
}],
totalCount
:
1
}
}
const
columns
=
[
{
title
:
'结算单号'
,
dataIndex
:
'num'
},
{
title
:
'结算日期'
,
dataIndex
:
'num'
},
{
title
:
'结算方式'
,
dataIndex
:
'num'
},
{
title
:
'总单数'
,
dataIndex
:
'num'
},
{
title
:
'代收金额'
,
dataIndex
:
'num'
},
{
title
:
'佣金'
,
dataIndex
:
'num'
},
{
title
:
'结算金额'
,
dataIndex
:
'num'
},
{
title
:
'结算日期'
,
dataIndex
:
'num'
},
{
title
:
'支付方式'
,
dataIndex
:
'payMethod'
},
{
title
:
'结算状态'
,
dataIndex
:
'status'
,
render
:
(
text
,
record
)
=>
{
return
(
<
Tag
>
待对账
</
Tag
>
)
}
},
{
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
>
)
}
>
<
UploadPayVoucher
/>
</
Modal
>
<
div
onClick=
{
show
}
>
上传付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
</>
)
}
}
]
/**
* 确认对账
* @param cancel 关闭回调函数
*/
const
handleConfirm
=
(
cancel
)
=>
{
console
.
log
(
123
)
cancel
();
}
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
DatePicker
}
}
actions=
{
formActions
}
expressionScope=
{
{}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.name'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
schema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
SettlementList
src/pages/platformSettlement/accountReceivable/info.tsx
deleted
100644 → 0
View file @
d04b5fba
/*
* @Author: Bill
* @Date: 2020-10-20 10:54:00
* @Description: 积分结算详情页
*/
import
React
,
{
useRef
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
,
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
detailSchema
}
from
'./schema'
const
formActions
=
createFormActions
();
const
columns
=
[
{
title
:
'单据号'
,
dataIndex
:
'no'
},
{
title
:
'单据摘要'
,
dataIndex
:
'desc'
},
{
title
:
'单据类型'
,
dataIndex
:
'type'
},
{
title
:
'单据时间'
,
dataIndex
:
'time'
},
{
title
:
'总箱数'
,
dataIndex
:
'box'
},
{
title
:
'总重量'
,
dataIndex
:
'weight'
},
{
title
:
'总体积'
,
dataIndex
:
'volumn'
},
{
title
:
'接单金额'
,
dataIndex
:
'price'
},
{
title
:
'支付时间'
,
dataIndex
:
'payTime'
},
{
title
:
'结算金额'
,
dataIndex
:
'payPrice'
},
]
const
logisticsDetail
:
React
.
FC
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
fetchListData
=
async
(
params
)
=>
{
return
{}
}
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
"结算单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
"TPTY12"
}
</
span
>
)
}
/>
}
>
<
Descriptions
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"通知单摘要"
>
{
"进口头层黄牛皮荔枝纹"
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"供应会员:"
>
{
"广州白马皮具交易中心"
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"单据时间:"
>
{
"2020-09-09 12:58:25"
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"通知单来源:"
>
{
"订单加工"
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态:"
>
{
"以完成通知单"
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"内部状态:"
>
{
"审核通过"
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
expressionScope=
{
{
exportBtn
:
(
<
div
>
<
Button
>
导出
</
Button
>
</
div
>
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.search'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
detailSchema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
logisticsDetail
\ No newline at end of file
src/pages/platformSettlement/components/ConfirmAccount/index.tsx
View file @
56e3a9ba
...
...
@@ -6,17 +6,30 @@
import
React
from
'react'
;
const
ConfirmAccount
=
()
=>
{
interface
Iprops
{
/**
* 结算日期
*/
settlementDate
:
string
,
/**
* 付款方
*/
payName
:
string
}
const
ConfirmAccount
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
const
{
settlementDate
,
payName
}
=
props
return
(
<
div
>
<
h3
style=
{
{
margin
:
0
}
}
>
是否确认以下对账已完成?
</
h3
>
<
div
style=
{
{
margin
:
'24px 0'
}
}
>
<
span
style=
{
{
color
:
'#909399'
,
width
:
'60px'
,
display
:
'inline-block'
}
}
>
结算日期:
</
span
>
<
span
>
2020-08-25
</
span
>
<
span
>
{
settlementDate
}
</
span
>
</
div
>
<
div
>
<
span
style=
{
{
color
:
'#909399'
,
width
:
'60px'
,
display
:
'inline-block'
}
}
>
付款方:
</
span
>
<
span
>
平台
</
span
>
<
span
>
{
payName
}
</
span
>
</
div
>
</
div
>
)
...
...
src/pages/platformSettlement/components/StatusActions/index.less
0 → 100644
View file @
56e3a9ba
.modalBtn {
color: @main-color;
cursor: pointer;
}
\ No newline at end of file
src/pages/platformSettlement/components/StatusActions/index.tsx
0 → 100644
View file @
56e3a9ba
/*
* @Author: your name
* @Date: 2020-10-23 17:24:23
* @Description: 结算能力列表操作
*/
import
React
,
{
useState
,
useEffect
}
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'
;
import
UploadPayVoucher
from
'../../components/UploadPayVoucher'
;
import
{
PublicApi
}
from
'@/services/api'
;
interface
Iprops
{
status
:
StatusEnum
,
id
:
number
,
// 应付,应收账款id
settlementDate
?:
string
,
// 结算日期
settlementId
?:
number
,
// 结算方id
payName
?:
string
,
//付款方
excludes
:
number
[],
// 排除数组,比如当应付的时候,只留下查看凭证跟付款, 应收账款的时候保留三个
type
?:
number
,
// 1 -> 应付账款结算 2-> 应收账款结算, 用于判断 查看付款凭证
handleReconciledComfirm
?:
(
params
:
any
)
=>
void
// 对账确定回调
handleComfirmInCompletePayment
?:
(
params
:
any
)
=>
void
,
// 确认未到款回调
handleComfirmCompletePayment
?:
(
params
:
any
)
=>
void
,
//确认到款回调
handleUpload
?:
(
params
:
any
)
=>
void
,
// 上传凭证
}
// 应付账款 - 付款方查看凭证, 能力中心
const
PAYABLE_PAYER
=
1
;
// 应收账款管理-收款方查看凭证, 能力中心
const
RECEIABLE_BENEFICIARY
=
2
;
// 平台代收账款结算 - 收款方查看凭证 能力中心
const
PLATFORM_BENEFICIARY
=
3
;
// 平台代收账款结算 - 付款方查看凭证 这是平台后台
const
PLATFORM_PAYER
=
4
;
// 平台积分结算-收款方查看凭证, 能力中心
const
SCORE_BENEFINCIARY
=
5
;
// 平台积分结算-付款方查看凭证 , 这是平台后天
const
SCORE_PAYER
=
6
;
// 显示确认对账
const
ConfirmAccountComponent
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
const
{
settlementDate
,
payName
}
=
props
;
const
onOk
=
(
params
)
=>
{
!!
props
.
handleReconciledComfirm
&&
props
.
handleReconciledComfirm
(
params
)
}
return
(
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
400
}
title=
"确认对账完成"
visible=
{
visible
}
onCancel=
{
cancel
}
onOk=
{
()
=>
onOk
({
onCancel
:
cancel
,
id
:
props
.
id
})
}
>
<
ConfirmAccount
settlementDate=
{
settlementDate
||
''
}
payName=
{
payName
||
''
}
/>
</
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
,
status
:
0
,
id
:
props
.
id
})
}
>
确认未到款
</
Button
>
<
Button
type=
{
"primary"
}
onClick=
{
()
=>
props
.
handleComfirmCompletePayment
({
onCancel
:
cancel
,
status
:
1
,
id
:
props
.
id
})
}
>
确认到款
</
Button
>
</
Space
>
)
}
>
<
WrapVoucher
id=
{
props
.
id
}
type=
{
props
.
type
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
确认付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
)
}
const
WrapVoucher
=
({
id
,
type
})
=>
{
const
[
files
,
setFiles
]
=
useState
<
any
>
([]);
console
.
log
(
id
);
const
SERVICES_MAP
=
{
// /settle/accounts/member/settlement/getPayablePayProve
[
PAYABLE_PAYER
]:
PublicApi
.
getSettleAccountsMemberSettlementGetPayablePayProve
,
[
RECEIABLE_BENEFICIARY
]:
PublicApi
.
getSettleAccountsMemberSettlementGetReceivablePayProve
,
///settle/accounts/platform/settlement/getReceivablePayProve
[
PLATFORM_BENEFICIARY
]:
PublicApi
.
getSettleAccountsPlatformSettlementGetReceivablePayProve
,
[
PLATFORM_PAYER
]:
PublicApi
.
getSettleAccountsPlatformSettlementGetPayablePayProve
,
// /settle/accounts/platform/score/settlement/getReceivablePayProve
[
SCORE_BENEFINCIARY
]:
PublicApi
.
getSettleAccountsPlatformScoreSettlementGetReceivablePayProve
,
[
SCORE_PAYER
]:
PublicApi
.
getSettleAccountsPlatformScoreSettlementGetPayablePayProve
}
useEffect
(()
=>
{
if
(
id
)
{
const
service
=
SERVICES_MAP
[
type
];
service
({
id
}).
then
((
data
)
=>
{
if
(
data
.
code
==
1000
)
{
setFiles
(
data
.
data
)
}
})
}
},
[
id
])
return
(
<
Voucher
files=
{
files
}
/>
)
}
// 显示查看付款凭证
const
ViewPaymentVoucher
=
(
props
)
=>
{
return
(
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
548
}
title=
"查看付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
null
}
>
<
WrapVoucher
id=
{
props
.
id
}
type=
{
props
.
type
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
查看付款凭证
</
div
>
</>
)
}
}
</
ModalContainer
>
)
}
interface
UploadVocherProps
{
settlementId
:
number
,
id
:
number
handleUpload
:
(
params
:
any
)
=>
void
}
interface
FileType
{
name
:
string
,
proveUrl
:
string
}
// 待付款 状态 上传付款凭证
const
UploadVoucher
:
React
.
FC
<
UploadVocherProps
>
=
(
props
)
=>
{
const
{
settlementId
}
=
props
;
const
[
fileList
,
setFileList
]
=
useState
<
FileType
[]
>
([]);
const
getFileList
=
(
list
:
FileType
[])
=>
{
setFileList
(
list
);
}
return
(
<
ModalContainer
>
{
({
visible
,
show
,
cancel
})
=>
{
return
(
<>
<
Modal
width=
{
548
}
title=
"上传付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
(
<
Space
>
<
Button
onClick=
{
cancel
}
>
取消
</
Button
>
<
Button
type=
{
"primary"
}
onClick=
{
()
=>
props
.
handleUpload
({
onCancel
:
cancel
,
id
:
props
.
id
,
fileList
:
fileList
})
}
>
确认
</
Button
>
</
Space
>
)
}
>
<
UploadPayVoucher
id=
{
settlementId
}
getFileList=
{
getFileList
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
付款
</
div
>
</>
)
}
}
</
ModalContainer
>
)
}
// 待对账时显示确认对账, 待付款 什么都不显示, 代收款显示确认付款凭证, 以完成显示 查看付款凭证
const
ChildrenComponent
=
{
[
TO_BE_RECONCILED
]:
ConfirmAccountComponent
,
[
TO_BE_PAY
]:
UploadVoucher
,
[
TO_BE_COLLECTED
]:
ConfirmCollected
,
[
COMPLETED
]:
ViewPaymentVoucher
}
const
StatusActions
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
status
,
excludes
=
[]
}
=
props
;
const
Component
=
excludes
.
includes
(
status
)
?
null
:
ChildrenComponent
[
status
];
return
(
<>
{
Component
&&
<
Component
{
...
props
}
/>
}
</>
)
}
export
default
StatusActions
\ No newline at end of file
src/pages/platformSettlement/components/StatusTag/index.less
0 → 100644
View file @
56e3a9ba
.tag-out-border {
border: none;
}
\ No newline at end of file
src/pages/platformSettlement/components/StatusTag/index.tsx
0 → 100644
View file @
56e3a9ba
import
React
from
'react'
;
import
{
Tag
}
from
'antd'
;
import
'./index.less'
;
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
=
[
""
,
// 随意给一个
"gold"
,
// 待对账
"red"
,
// 待付款
"blue"
,
// 代收款,
"green"
,
// 以完成
]
/**
* 以下用于 应收账款管理, 应付账款管理 列表页, 以及应收,应付款详情页状态
*/
const
STATUS_TEXT
=
[
"无"
,
"待对账"
,
"待付款"
,
"待收款"
,
"已完成"
]
const
STATUS_TEXT_MAP
=
{
"待对账"
:
1
,
"待付款"
:
2
,
"待收款"
:
3
,
"已完成"
:
4
}
/**
* 开票管理, 开票类型, 其中 value 的值对应上面 COLOR 的值
*/
const
INVOICE_TYPE
=
{
"生产通知单"
:
0
,
"积分订单"
:
1
,
"退货申请单"
:
2
,
"订单"
:
3
,
"物流单"
:
4
,
}
/**
* 开票管理, 开票状态
*/
const
INVOICE_STATUS
=
{
"未开票"
:
3
,
"已开票"
:
4
,
}
/**
* 将开票类型跟 应收应付账款管理合并
*/
const
ALL_COLOR_MAP
=
{
...
INVOICE_TYPE
,
...
STATUS_TEXT_MAP
,
...
INVOICE_STATUS
}
interface
Iprops
{
status
?:
StatusEnum
,
text
?:
string
}
const
StatusTag
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
status
,
text
}
=
props
return
(
<
Tag
className=
"tag-out-border"
color=
{
text
?
COLOR
[
ALL_COLOR_MAP
[
text
]]
:
COLOR
[
status
]
}
>
{
text
||
STATUS_TEXT
[
status
]
}
</
Tag
>
)
}
// StatusTag.defaultProps = {
// status: 1
// }
export
default
StatusTag
\ No newline at end of file
src/pages/platformSettlement/components/UploadPayVoucher/index.less
0 → 100644
View file @
56e3a9ba
.container {
.formItem {
display: flex;
flex-direction: row;
align-items: center;
font-size: 12px;
margin-bottom: 24px;
.label {
margin-right: 20px;
color: #909399;
width: 70px;
}
}
.voucherText {
color: #909399;
font-size: 14px;
}
.upload {
margin-top: 16px;
.tips {
margin-top: 12px;
font-size: 12px;
color: #909399;
}
}
}
\ No newline at end of file
src/pages/platformSettlement/components/UploadPayVoucher/index.tsx
View file @
56e3a9ba
...
...
@@ -4,26 +4,129 @@
* @Description: 上传付款凭证
*/
import
React
from
'react'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
Voucher
from
'../Voucher'
;
import
styles
from
'./index.less'
;
import
{
Upload
,
Button
,
message
}
from
'antd'
;
import
{
UploadOutlined
}
from
'@ant-design/icons'
import
{
UploadFile
,
UploadChangeParam
}
from
'antd/lib/upload/interface'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
// import { VoucherFileProps } from '../../common/type';
import
{
PublicApi
}
from
'@/services/api'
;
interface
VoucherFileProps
{
name
:
string
,
proveUrl
:
string
}
interface
Iprops
{
fileList
?:
VoucherFileProps
[],
id
:
number
,
// 结算方id
getFileList
:
(
params
:
any
[])
=>
void
}
interface
AccountInfo
{
bankAccount
:
string
,
name
:
string
,
bankDeposit
:
string
}
const
UploadPayVoucher
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
const
[
fileList
,
setFileList
]
=
useState
<
VoucherFileProps
[]
>
([]);
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
accountInfo
,
setAccountInfo
]
=
useState
<
AccountInfo
|
null
>
(
null
)
// 进来设置fileList
// useEffect(() => {
// setFileList(props.fileList)
// }, [props.fileList])
/**
* 获取账户名称等
*/
useEffect
(()
=>
{
async
function
getAccountInfo
()
{
///settle/accounts/corporate/account/config
const
{
data
,
code
}
=
await
PublicApi
.
getSettleAccountsCorporateAccountConfig
({
memberId
:
props
.
id
.
toString
()});
if
(
code
==
1000
)
{
setAccountInfo
(
data
);
}
}
getAccountInfo
()
},
[
props
.
id
])
/***
* 上传前检查
*/
const
fileMaxSize
=
200
;
const
beforeUpload
=
(
file
:
UploadFile
)
=>
{
const
isSizeLimit
=
file
.
size
/
1024
<
fileMaxSize
;
if
(
!
isSizeLimit
)
{
message
.
error
(
`上传文件大小不超过
${
fileMaxSize
}
K!`
);
}
return
isSizeLimit
;
}
/**
* 上传配置
*/
const
uploadProps
=
{
name
:
'file'
,
action
:
'/api/file/file/upload'
,
headers
:
{},
data
:
{
fileType
:
UPLOAD_TYPE
,
// 指定类型是本地还是线上,
},
disabled
:
loading
,
showUploadList
:
false
,
onChange
(
info
:
UploadChangeParam
)
{
if
(
info
.
file
.
status
===
'uploading'
)
{
setLoading
(
true
)
return
;
}
if
(
info
.
file
.
status
===
'done'
)
{
// 图片回显
const
{
code
,
data
}
=
info
.
file
.
response
if
(
code
===
1000
)
{
console
.
log
(
'upload success'
)
// onChange(data)
const
temp
:
VoucherFileProps
[]
=
[...
fileList
];
const
filename
=
info
.
file
.
name
temp
.
push
({
name
:
filename
,
proveUrl
:
data
})
setFileList
(
temp
);
props
.
getFileList
(
temp
)
}
setLoading
(
false
)
}
},
beforeUpload
};
const
UploadPayVoucher
=
()
=>
{
return
(
<
div
>
<
div
>
<
span
>
账户名称
</
span
>
<
span
>
温州市隆昌皮具有限公司
</
span
>
<
div
className=
{
styles
.
container
}
>
<
div
className=
{
styles
.
formItem
}
>
<
span
className=
{
styles
.
label
}
>
账户名称
</
span
>
<
span
className=
{
styles
.
value
}
>
{
accountInfo
?.
name
}
</
span
>
</
div
>
<
div
className=
{
styles
.
formItem
}
>
<
span
className=
{
styles
.
label
}
>
银行账号
</
span
>
<
span
className=
{
styles
.
value
}
>
{
accountInfo
?.
bankAccount
}
</
span
>
</
div
>
<
div
>
<
span
>
银行账号
</
span
>
<
span
>
3214 454646 145 46 1231
</
span
>
<
div
className=
{
styles
.
formItem
}
>
<
span
className=
{
styles
.
label
}
>
开户行
</
span
>
<
span
className=
{
styles
.
value
}
>
{
accountInfo
?.
bankDeposit
}
</
span
>
</
div
>
<
div
>
<
span
>
开户行
</
span
>
<
span
>
中国建设银行广州市分行营业部
</
span
>
<
p
className=
{
styles
.
voucherText
}
>
上传支付凭证
</
p
>
<
Voucher
files=
{
fileList
}
/>
<
div
className=
{
styles
.
upload
}
>
<
Upload
{
...
uploadProps
}
>
<
Button
icon=
{
<
UploadOutlined
/>
}
>
上传凭证
</
Button
>
<
p
className=
{
styles
.
tips
}
>
单个凭证文件大小不能超过200K
</
p
>
</
Upload
>
</
div
>
<
h1
>
上传支付凭证
</
h1
>
<
Voucher
/>
</
div
>
)
}
...
...
src/pages/platformSettlement/components/Voucher/index.less
View file @
56e3a9ba
...
...
@@ -23,5 +23,10 @@
.view {
margin-left: auto;
cursor: pointer;
}
.text {
cursor: pointer;
}
}
\ No newline at end of file
src/pages/platformSettlement/components/Voucher/index.tsx
View file @
56e3a9ba
...
...
@@ -8,16 +8,38 @@ import React from 'react';
import
styles
from
'./index.less'
import
image_icon
from
'@/asserts/image_icon.png'
;
const
Voucher
=
()
=>
{
interface
VoucherFileProps
{
name
:
string
,
proveUrl
:
string
}
interface
Iprops
{
files
:
VoucherFileProps
[]
}
const
Voucher
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
const
{
files
=
[]
}
=
props
;
console
.
log
(
files
);
return
(
<
div
className=
{
styles
.
container
}
>
{
/* <div></div>/ */
}
<
div
className=
{
styles
.
image
}
>
<
img
src=
{
image_icon
}
className=
{
styles
.
icon
}
/>
</
div
>
<
div
className=
{
styles
.
text
}
>
20187878.jpg
</
div
>
<
div
className=
{
styles
.
view
}
>
预览
</
div
>
</
div
>
<>
{
files
.
map
((
item
:
VoucherFileProps
,
key
:
number
)
=>
{
return
(
<
div
className=
{
styles
.
container
}
key=
{
key
}
>
{
/* <div></div>/ */
}
<
div
className=
{
styles
.
image
}
>
<
img
src=
{
image_icon
}
className=
{
styles
.
icon
}
/>
</
div
>
<
div
className=
{
styles
.
text
}
>
<
a
href=
{
item
.
proveUrl
}
target=
{
"_blank"
}
>
{
item
.
name
}
</
a
>
</
div
>
<
div
className=
{
styles
.
view
}
>
<
a
href=
{
item
.
proveUrl
}
target=
{
"_blank"
}
>
预览
</
a
>
</
div
>
</
div
>
)
})
}
</>
)
}
...
...
src/pages/platformSettlement/score/info/index.tsx
0 → 100644
View file @
56e3a9ba
/*
* @Author: Bill
* @Date: 2020-10-20 10:54:00
* @Description: 积分结算详情页
*/
import
React
,
{
useRef
,
useState
,
useEffect
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
detailSchema
}
from
'./schema'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
StatusTag
from
'../../components/StatusTag'
;
import
{
timeRange
}
from
'@/utils/index'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
formActions
=
createFormActions
();
const
columns
=
[
{
title
:
'单据号'
,
dataIndex
:
'orderNo'
},
{
title
:
'单据摘要'
,
dataIndex
:
'orderAbstract'
},
{
title
:
'单据类型'
,
dataIndex
:
'settlementOrderTypeName'
},
{
title
:
'单据时间'
,
dataIndex
:
'orderTime'
},
{
title
:
'订单类型'
,
dataIndex
:
'orderTypeName'
},
{
title
:
'所需积分'
,
dataIndex
:
'orderScore'
},
{
title
:
'支付积分'
,
dataIndex
:
'payScore'
},
{
title
:
'支付时间'
,
dataIndex
:
'payTime'
},
{
title
:
'兑换比率'
,
dataIndex
:
'ratio'
,
render
:
(
text
,
record
)
=>
{
return
(
record
.
ratio
+
'%'
);
}
},
{
title
:
'本期结算金额'
,
dataIndex
:
'settlementAmount'
},
]
const
ScoreInfo
:
React
.
FC
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
{
id
}
=
usePageStatus
();
const
[
infoDetail
,
setInfoDetail
]
=
useState
<
any
>
();
const
fetchListData
=
async
(
params
)
=>
{
const
postData
=
{
settlementId
:
id
,
...
params
}
// /settle/accounts/platform/settlement/pagePayableSettlementDetail
///settle/accounts/platform/score/settlement/pagePayableSettlementDetail
const
res
=
await
PublicApi
.
getSettleAccountsPlatformScoreSettlementPagePayableSettlementDetail
(
postData
)
return
res
.
data
}
useEffect
(()
=>
{
if
(
id
)
{
// 获取详情
async
function
fetchDetail
()
{
const
{
data
,
code
}
=
await
PublicApi
.
getSettleAccountsPlatformScoreSettlementGetPayableDetail
({
id
})
if
(
code
==
1000
)
{
setInfoDetail
(
data
);
}
}
fetchDetail
();
}
},
[
id
])
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
const
format
=
'YYYY-MM-DD'
const
{
payTime
,
orderTime
,
...
rest
}
=
values
;
const
payTimeRange
=
payTime
?
timeRange
(
values
.
payTime
):
null
;
const
payStartTime
=
payTimeRange
?
moment
(
payTimeRange
.
st
*
1000
).
format
(
format
)
:
null
;
const
payEndTime
=
payTimeRange
?
moment
(
payTimeRange
.
et
*
1000
).
format
(
format
)
:
null
;
const
orderTimeRange
=
orderTime
?
timeRange
(
values
.
orderTime
)
:
null
;
const
orderStartTime
=
orderTimeRange
?
moment
(
orderTimeRange
.
st
*
1000
).
format
(
format
)
:
null
;
const
orderEndTime
=
orderTimeRange
?
moment
(
orderTimeRange
.
et
*
1000
).
format
(
format
)
:
null
;
ref
.
current
.
reload
({...
rest
,
payStartTime
,
payEndTime
,
orderStartTime
,
orderEndTime
});
}
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
"结算单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
infoDetail
?.
settlementNo
}
</
span
>
)
}
/>
}
>
<
Descriptions
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"结算日期:"
>
{
infoDetail
?.
settlementDate
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"结算单数:"
>
{
infoDetail
?.
totalCount
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"结算金额:"
>
¥
{
infoDetail
?.
amount
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"结算方式:"
>
{
infoDetail
?.
settlementWayName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态:"
>
<
StatusTag
text=
{
infoDetail
?.
statusName
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
record
=>
(
record
.
orderNo
+
"-"
+
record
.
payTime
),
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
expressionScope=
{
{
exportBtn
:
(
<
div
>
<
Button
>
导出
</
Button
>
</
div
>
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.orderNo'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
detailSchema
}
onSubmit=
{
handleSearch
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
ScoreInfo
\ No newline at end of file
src/pages/platformSettlement/score/info/schema.tsx
0 → 100644
View file @
56e3a9ba
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
}
from
'@formily/antd'
;
const
commonTimeList
=
[
{
label
:
'今天'
,
value
:
1
},
{
label
:
'一周内'
,
value
:
2
},
{
label
:
'一个月内'
,
value
:
3
},
{
label
:
'三个月内'
,
value
:
4
},
{
label
:
'六个月内'
,
value
:
5
},
{
label
:
'一年内'
,
value
:
6
},
{
label
:
'一年前'
,
value
:
7
}
];
const
orderTime
=
[{
label
:
'下单时间(所有)'
,
value
:
0
}].
concat
(
commonTimeList
);
const
payTime
=
[{
label
:
'支付时间(所有)'
,
value
:
0
}].
concat
(
commonTimeList
);
/**
* 应收账款管理--物流单结算明细详情, 生产通知单结算明细
*/
export
const
detailSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megaLayout
:
{
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
:
'{{exportBtn}}'
,
},
},
orderNo
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索(单据号)'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
colStyle
:
{
marginLeft
:
20
,
},
},
properties
:
{
orderTime
:
{
type
:
'string'
,
enum
:
orderTime
,
default
:
0
,
'x-component-props'
:
{
placeholder
:
'下单时间(全部)'
,
allowClear
:
true
,
},
},
payTime
:
{
type
:
'string'
,
enum
:
payTime
,
default
:
0
,
'x-component-props'
:
{
placeholder
:
'支付时间(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
\ No newline at end of file
src/pages/platformSettlement/score/list/index.tsx
0 → 100644
View file @
56e3a9ba
/*
* @Author: Bill
* @Date: 2020-10-20 11:04:07
* @Description: 应付账款结算
*/
import
React
,
{
useRef
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
Button
,
Modal
,
DatePicker
,
Tag
,
Space
}
from
'antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
,
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
schema
}
from
'./schema'
;
import
StatusActions
from
'../../components/StatusActions'
;
import
StatusTag
from
'../../components/StatusTag'
;
import
{
PublicApi
}
from
'@/services/api'
import
{
Moment
}
from
'moment'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
EyePreview
from
'@/components/EyePreview'
;
interface
SearchParams
{
settlementName
?:
string
,
payName
?:
string
,
isSettlement
:
number
,
startTime
?:
Moment
,
endTime
?:
Moment
,
orderType
?:
number
,
status
?:
number
,
current
:
number
,
pageSize
:
number
,
}
const
formActions
=
createFormActions
();
const
SCORE_PAYER
=
6
;
const
SettlementList
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
fetchListData
=
async
(
params
)
=>
{
// /settle/accounts/platform/settlement/pagePayableSettlement
const
searchData
=
{
...
params
,
status
:
typeof
params
.
status
==
'undefined'
?
0
:
params
.
status
,
}
console
.
log
(
searchData
);
///settle/accounts/platform/score/settlement/pagePayableSettlement
const
res
=
await
PublicApi
.
getSettleAccountsPlatformScoreSettlementPagePayableSettlement
(
searchData
)
return
res
.
data
;
}
const
columns
:
ColumnsType
<
any
>
=
[
{
title
:
'结算单号'
,
dataIndex
:
'settlementNo'
,
render
:
(
text
,
record
)
=>
{
const
url
=
`/balanced/scorePayable/detail?id=
${
record
.
id
}
`
;
return
(
<
EyePreview
url=
{
url
}
>
{
text
}
</
EyePreview
>
)
}
},
{
title
:
'结算日期'
,
dataIndex
:
'settlementDate'
},
{
title
:
'结算方式'
,
dataIndex
:
'settlementWayName'
},
{
title
:
'结算方'
,
dataIndex
:
'settlementName'
},
{
title
:
'总单数'
,
dataIndex
:
'totalCount'
},
{
title
:
'结算积分'
,
dataIndex
:
'score'
},
{
title
:
'兑换比率'
,
dataIndex
:
'ratio'
,
render
:
(
text
,
record
)
=>
{
return
(
record
.
ratio
*
100
)
+
"%"
;
}
},
{
title
:
'结算金额'
,
dataIndex
:
'amount'
},
{
title
:
'结算时间'
,
dataIndex
:
'settlementTime'
},
{
title
:
'支付方式'
,
dataIndex
:
'payWayName'
},
{
title
:
'结算状态'
,
dataIndex
:
'status'
,
filters
:
[
{
text
:
'待对账'
,
value
:
1
},
{
text
:
'待付款'
,
value
:
2
},
{
text
:
'待收款'
,
value
:
3
},
{
text
:
'以完成'
,
value
:
4
},
],
onFilter
:
(
value
,
record
:
any
)
=>
record
.
status
==
value
,
render
:
(
text
,
record
:
any
)
=>
{
return
(
<
StatusTag
status=
{
record
.
status
||
1
}
/>
)
}
},
{
title
:
'操作'
,
render
:
(
text
,
record
:
any
)
=>
{
return
(
<
StatusActions
status=
{
record
.
status
<=
2
?
record
.
status
:
4
}
id=
{
record
.
id
}
excludes=
{
[
1
,
3
]
}
settlementId=
{
record
.
memberId
||
1
}
handleUpload=
{
handleUploadVoucher
}
type=
{
SCORE_PAYER
}
/>
)
}
}
]
/**
* 上传凭证
* @param params
*/
const
handleUploadVoucher
=
(
params
:
any
)
=>
{
console
.
log
(
params
);
PublicApi
.
postSettleAccountsPlatformScoreSettlementPay
({
id
:
params
.
id
,
proveList
:
params
.
fileList
})
.
then
((
data
)
=>
{
if
(
data
.
code
===
1000
)
{
formActions
.
submit
();
params
.
onCancel
()
}
})
}
/**
* 搜索
*/
const
handleSearch
=
(
values
:
SearchParams
)
=>
{
const
format
=
'YYYY-MM-DD'
const
startTime
=
values
.
startTime
?.
format
(
format
);
const
endTime
=
values
.
endTime
?.
format
(
format
);
ref
.
current
.
reload
({...
values
,
startTime
,
endTime
});
}
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
DatePicker
}
}
actions=
{
formActions
}
expressionScope=
{
{}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.settlementName'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
schema
}
onSubmit=
{
handleSearch
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
SettlementList
\ No newline at end of file
src/pages/platformSettlement/score/list/schema.tsx
0 → 100644
View file @
56e3a9ba
/*
* @Author: Bill
* @Date: 2020-10-22 09:52:10
* @Description: 应收账款结算 schema集合
*/
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
}
from
'@formily/antd'
;
/**
* 应收账款 index.tsx 列表页schema
*/
export
const
schema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megaLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
settlementName
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索(结算方)'
,
align
:
'flex-left'
,
tip
:
'输入 结算方 进行搜索'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
6
,
},
properties
:
{
startTime
:
{
type
:
'string'
,
'x-component'
:
'DatePicker'
,
'x-component-props'
:
{
allowClear
:
true
}
},
endTime
:
{
type
:
'string'
,
'x-component'
:
'DatePicker'
,
'x-component-props'
:
{
allowClear
:
true
}
},
status
:
{
type
:
'string'
,
enum
:
[
{
label
:
'结算状态(所有)'
,
value
:
0
},
{
label
:
'待对账'
,
value
:
1
},
{
label
:
'待付款'
,
value
:
2
},
{
label
:
'代收款'
,
value
:
3
},
{
label
:
'已完成'
,
value
:
4
},
],
default
:
0
,
'x-component-props'
:
{
placeholder
:
'结算状态(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
\ No newline at end of file
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