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
shenshaokai
jinfa-platform
Commits
f7cf7236
Commit
f7cf7236
authored
Oct 28, 2020
by
Bill
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into test
parents
cb4fd52e
bf6f833c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
974 additions
and
516 deletions
+974
-516
balanceRoute.ts
config/routes/balanceRoute.ts
+9
-5
index.tsx
...ges/accountSetting/components/EditDataComponent/index.tsx
+0
-0
index.tsx
src/pages/accountSetting/components/GetCaptchaCode/index.tsx
+1
-0
index.tsx
src/pages/balance/accountsPayable/settlementList/index.tsx
+82
-41
logisticsDetail.tsx
...alance/accountsPayable/settlementList/logisticsDetail.tsx
+40
-25
productNoticeSettlementDetail.tsx
...sPayable/settlementList/productNoticeSettlementDetail.tsx
+27
-6
index.tsx
...s/balance/accountsPayable/settlementList/schema/index.tsx
+125
-24
index.tsx
...pages/balance/accountsReceivable/settlementList/index.tsx
+71
-19
logisticsDetail.tsx
...nce/accountsReceivable/settlementList/logisticsDetail.tsx
+25
-12
productNoticeSettlementDetail.tsx
...ceivable/settlementList/productNoticeSettlementDetail.tsx
+37
-16
index.tsx
...alance/accountsReceivable/settlementList/schema/index.tsx
+136
-35
index.tsx
src/pages/balance/components/ConfirmAccount/index.tsx
+16
-3
index.tsx
src/pages/balance/components/StatusActions/index.tsx
+62
-12
index.tsx
src/pages/balance/components/UploadPayVoucher/index.tsx
+31
-6
index.tsx
src/pages/balance/components/Voucher/index.tsx
+6
-3
index.tsx
...tion/quotaMenage/detail/components/IntroduceRow/index.tsx
+1
-1
index.tsx
...yandSettle/creditApplication/quotaMenage/detail/index.tsx
+14
-1
index.tsx
...ayandSettle/creditManage/components/HistoryList/index.tsx
+26
-19
index.less
...tManage/quotaMenage/detail/components/BillInfo/index.less
+5
-0
index.tsx
...itManage/quotaMenage/detail/components/BillInfo/index.tsx
+97
-80
index.tsx
...nage/quotaMenage/detail/components/IntroduceRow/index.tsx
+0
-0
index.ts
...uotaMenage/detail/components/IntroduceRow/schema/index.ts
+0
-165
index.less
...nage/quotaMenage/detail/components/TradeRecord/index.less
+5
-0
index.tsx
...anage/quotaMenage/detail/components/TradeRecord/index.tsx
+0
-0
index.tsx
...es/payandSettle/creditManage/quotaMenage/detail/index.tsx
+130
-15
index.tsx
src/pages/payandSettle/creditManage/quotaMenage/index.tsx
+1
-1
addRepository.tsx
src/pages/repositories/addRepository.tsx
+9
-5
PositionSetting.tsx
src/pages/repositories/components/PositionSetting.tsx
+18
-22
No files found.
config/routes/balanceRoute.ts
View file @
f7cf7236
...
...
@@ -7,7 +7,7 @@
/*
* @Author: Bill
* @Date: 2020-10-12 09:45:20
* @LastEditTime: 2020-10-2
3 16:08:13
* @LastEditTime: 2020-10-2
7 14:53:56
* @Description: 加工能力路由
*/
...
...
@@ -133,14 +133,16 @@ const HandlingRoute = {
path
:
'/memberCenter/balance/accountsPayable/settlementList/logisticsDetail'
,
name
:
'logisticsDetail'
,
icon
:
'smile'
,
component
:
'@/pages/balance/accountsPayable/settlementList/logisticsDetail'
component
:
'@/pages/balance/accountsPayable/settlementList/logisticsDetail'
,
hideInMenu
:
true
,
},
// 应付账款管理 -> 生产通知单结算明细
{
path
:
'/memberCenter/balance/accountsPayable/settlementList/productNoticeSettlementDetail'
,
name
:
'productNoticeSettlementDetail'
,
icon
:
'smile'
,
component
:
'@/pages/balance/accountsPayable/settlementList/productNoticeSettlementDetail'
component
:
'@/pages/balance/accountsPayable/settlementList/productNoticeSettlementDetail'
,
hideInMenu
:
true
,
}
]
},
...
...
@@ -162,14 +164,16 @@ const HandlingRoute = {
path
:
'/memberCenter/balance/accountsReceivable/settlementList/logisticsDetail'
,
name
:
'logisticsDetail'
,
icon
:
'smile'
,
component
:
'@/pages/balance/accountsReceivable/settlementList/logisticsDetail'
component
:
'@/pages/balance/accountsReceivable/settlementList/logisticsDetail'
,
hideInMenu
:
true
,
},
// 应收账款管理 -> 生产通知单结算明细
{
path
:
'/memberCenter/balance/accountsReceivable/settlementList/productNoticeSettlementDetail'
,
name
:
'productNoticeSettlementDetail'
,
icon
:
'smile'
,
component
:
'@/pages/balance/accountsReceivable/settlementList/productNoticeSettlementDetail'
component
:
'@/pages/balance/accountsReceivable/settlementList/productNoticeSettlementDetail'
,
hideInMenu
:
true
,
},
// 应收账款管理 -> 开票管理
{
...
...
src/pages/accountSetting/components/EditDataComponent/index.tsx
View file @
f7cf7236
This diff is collapsed.
Click to expand it.
src/pages/accountSetting/components/GetCaptchaCode/index.tsx
View file @
f7cf7236
...
...
@@ -23,6 +23,7 @@ const GetCaptchaCode = (props) => {
setTime
((
prev
)
=>
prev
-
1
)
},
1000
)
}
else
if
(
time
==
0
)
{
!!
props
.
callback
&&
props
.
callback
()
clearInterval
(
ref
.
current
)
}
},
[
time
])
...
...
src/pages/balance/accountsPayable/settlementList/index.tsx
View file @
f7cf7236
...
...
@@ -6,10 +6,10 @@
import
React
,
{
useRef
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
Button
,
DatePicker
,
Modal
,
Tag
,
Space
}
from
'antd'
;
import
{
Card
,
DatePicker
}
from
'antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ISchema
,
createFormActions
}
from
'@formily/antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
...
...
@@ -17,37 +17,67 @@ import { schema } from './schema';
import
StatusTag
from
'../../components/StatusTag'
;
import
StatusActions
from
'../../components/StatusActions'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
Moment
}
from
'moment'
;
const
formActions
=
createFormActions
();
interface
SearchParams
{
settlementName
?:
string
,
payName
?:
string
,
isSettlement
:
number
,
startTime
?:
Moment
,
endTime
?:
Moment
,
orderType
?:
number
,
status
?:
number
,
current
:
number
,
pageSize
:
number
,
}
const
SettlementList
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
fetchListData
=
async
(
params
)
=>
{
const
searchParams
=
{
orderType
:
0
,
status
:
0
,
...
params
,
orderType
:
params
.
orderType
||
0
,
status
:
params
.
status
||
0
,
}
// /settle/accounts/member/settlement/pagePayableSettlement
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementPagePayableSettlement
(
searchParams
);
return
{
totalCount
:
1
,
data
:
[{
id
:
1
,
status
:
2
}]
}
return
data
}
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'
,
title
:
'结算单号'
,
dataIndex
:
'settlementNo'
,
render
:
(
text
,
record
)
=>
{
const
prefix
=
`/memberCenter/balance/accountsPayable/settlementList/`
;
const
url
=
record
.
orderType
===
1
?
`logisticsDetail`
:
`productNoticeSettlementDetail`
;
return
(
<
EyePreview
url=
{
`${prefix}${url}?id=${record.id}`
}
>
{
record
.
settlementNo
}
</
EyePreview
>
)
}
},
{
title
:
'结算日期'
,
dataIndex
:
'settlementDate'
},
{
title
:
'结算方式'
,
dataIndex
:
'settlementWayName'
},
{
title
:
'结算方'
,
dataIndex
:
'settlementName'
},
{
title
:
'结算单据'
,
dataIndex
:
'orderTypeName'
},
{
title
:
'总单数'
,
dataIndex
:
'totalCount'
},
{
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
:
number
,
record
:
any
)
=>
record
.
status
==
value
,
render
:
(
text
:
string
,
record
:
any
)
=>
{
return
(
<
StatusTag
status=
{
record
.
status
}
/>
)
...
...
@@ -55,13 +85,18 @@ const SettlementList = () => {
},
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
render
:
(
text
:
string
,
record
:
any
)
=>
{
return
(
<
StatusActions
status=
{
record
.
status
}
handleReconciledComfirm=
{
handleConfirm
}
handleComfirmInCompletePayment=
{
handleComfirmInCompletePayment
}
handleComfirmCompletePayment=
{
handleComfirmCompletePayment
}
status=
{
record
.
status
<=
2
?
record
.
status
:
4
}
id=
{
record
.
id
}
excludes=
{
[
1
,
3
]
}
settlementId=
{
record
.
settlementID
||
1
}
handleUpload=
{
handleUploadVoucher
}
type=
{
1
}
// handleReconciledComfirm={handleConfirm}
// handleComfirmInCompletePayment={handleComfirmInCompletePayment}
// handleComfirmCompletePayment={handleComfirmCompletePayment}
/>
)
}
...
...
@@ -69,33 +104,39 @@ const SettlementList = () => {
]
/**
*
确认对账
* @param
cancel 关闭回调函数
*
上传凭证
* @param
params
*/
const
handleConfirm
=
(
params
:
any
)
=>
{
console
.
log
(
123
)
params
.
onCancel
();
}
const
handleComfirmInCompletePayment
=
(
params
:
any
)
=>
{
const
handleUploadVoucher
=
(
params
:
any
)
=>
{
console
.
log
(
params
);
params
.
onCancel
()
///settle/accounts/member/settlement/pay
PublicApi
.
postSettleAccountsMemberSettlementPay
({
id
:
params
.
id
,
proveList
:
params
.
fileList
})
.
then
((
data
)
=>
{
if
(
data
.
code
===
1000
)
{
formActions
.
submit
();
params
.
onCancel
()
}
})
}
const
handleComfirmCompletePayment
=
(
params
:
any
)
=>
{
params
.
onCancel
();
}
// const handleComfirmInCompletePayment = (params: any) => {
// console.log(params);
// params.onCancel()
// }
// const handleComfirmCompletePayment = (params: any) => {
// params.onCancel();
// }
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
console
.
log
(
values
);
const
handleSearch
=
(
values
:
SearchParams
)
=>
{
const
format
=
'YYYY-MM-DD'
const
startTime
=
values
.
startTime
?.
format
(
format
);
const
endTime
=
values
.
endTime
?.
format
(
format
);
console
.
log
(
startTime
,
endTime
);
ref
.
current
.
reload
({
startTime
,
endTime
});
ref
.
current
.
reload
({...
values
,
startTime
,
endTime
});
}
return
(
...
...
@@ -114,7 +155,7 @@ const SettlementList = () => {
components=
{
{
DatePicker
}
}
expressionScope=
{
{}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.
n
ame'
,
FORM_FILTER_PATH
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.
settlementN
ame'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
...
...
src/pages/balance/accountsPayable/settlementList/logisticsDetail.tsx
View file @
f7cf7236
...
...
@@ -6,33 +6,22 @@
import
React
,
{
useRef
,
useEffect
,
useState
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
Card
,
PageHeader
,
Descriptions
,
Button
,
DatePicker
}
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
{
createFormActions
}
from
'@formily/antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
d
etailSchema
}
from
'./schema'
import
{
logisticsD
etailSchema
}
from
'./schema'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
StatusTag
from
'../../components/StatusTag'
;
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
RangePicker
=
DatePicker
.
RangePicker
const
formActions
=
createFormActions
();
interface
infoType
{
id
:
number
,
// 会员结算id
...
...
@@ -47,18 +36,32 @@ interface infoType {
statusName
:
string
// 结算状态名称
}
const
columns
=
[
{
title
:
'单据号'
,
dataIndex
:
'orderNo'
},
{
title
:
'单据摘要'
,
dataIndex
:
'orderAbstract'
},
{
title
:
'单据类型'
,
dataIndex
:
'orderTypeName'
},
{
title
:
'单据时间'
,
dataIndex
:
'orderTime'
},
{
title
:
'总箱数'
,
dataIndex
:
'totalCarton'
},
{
title
:
'总重量'
,
dataIndex
:
'totalWeight'
},
{
title
:
'总体积'
,
dataIndex
:
'totalVolume'
},
{
title
:
'接单金额'
,
dataIndex
:
'orderAmount'
},
{
title
:
'接单时间'
,
dataIndex
:
'acceptOrderTime'
},
{
title
:
'结算金额'
,
dataIndex
:
'settlementAmount'
},
]
const
logisticsDetail
:
React
.
FC
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
infoDetail
,
setInfoDetail
]
=
useState
<
infoType
>
(
null
);
const
{
id
,
preview
}
=
usePageStatus
();
const
fetchListData
=
async
(
params
)
=>
{
console
.
log
(
id
);
// const { data } = await PublicApi.getSettleAccountsMemberSettlementGetPayableDetail({id})
return
{
totalCount
:
0
,
data
:
[]
const
postData
=
{
settlementId
:
id
,
...
params
}
///settle/accounts/member/settlement/pagePayableLogisticsSettlement
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementPagePayableLogisticsSettlement
(
postData
)
return
data
}
useEffect
(()
=>
{
...
...
@@ -72,6 +75,17 @@ const logisticsDetail: React.FC = () => {
}
},
[
id
])
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
console
.
log
(
values
);
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
title=
{
...
...
@@ -86,7 +100,7 @@ const logisticsDetail: React.FC = () => {
name
:
"结算单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
"TPTY12"
}
</
span
>
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
infoDetail
?.
settlementNo
}
</
span
>
)
}
/>
}
...
...
@@ -118,6 +132,7 @@ const logisticsDetail: React.FC = () => {
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
}
}
actions=
{
formActions
}
expressionScope=
{
{
exportBtn
:
(
...
...
@@ -127,14 +142,14 @@ const logisticsDetail: React.FC = () => {
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
search
'
,
FORM_FILTER_PATH
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
orderNo
'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
d
etailSchema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
schema=
{
logisticsD
etailSchema
}
onSubmit=
{
handleSearch
}
/>
}
/>
...
...
src/pages/balance/accountsPayable/settlementList/productNoticeSettlementDetail.tsx
View file @
f7cf7236
...
...
@@ -6,7 +6,7 @@
import
React
,
{
useRef
,
useState
,
useEffect
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
Card
,
PageHeader
,
Descriptions
,
Button
,
DatePicker
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
...
...
@@ -18,6 +18,7 @@ import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import
{
detailSchema
}
from
'./schema'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
RangePicker
=
DatePicker
.
RangePicker
;
const
formActions
=
createFormActions
();
...
...
@@ -53,7 +54,12 @@ const ProductNoticeSettlementDetail: React.FC = () => {
const
{
id
,
preview
}
=
usePageStatus
();
const
fetchListData
=
async
(
params
)
=>
{
return
{}
const
postData
=
{
settlementId
:
id
,
...
params
}
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementPagePayableProductionNoticeSettlement
(
postData
)
return
data
}
useEffect
(()
=>
{
...
...
@@ -67,6 +73,20 @@ const ProductNoticeSettlementDetail: React.FC = () => {
}
},
[
id
])
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
console
.
log
(
values
);
const
format
=
'YYYY-MM-DD'
const
startTime
=
values
.
startTime
?.
format
(
format
);
const
endTime
=
values
.
endTime
?.
format
(
format
);
const
receiveStartTime
=
values
.
receiveStartTime
?.
format
(
format
);
const
receiveEndTime
=
values
.
receiveEndTime
?.
format
(
format
);
ref
.
current
.
reload
({...
values
,
startTime
,
endTime
,
receiveStartTime
,
receiveEndTime
});
}
return
(
<
PageHeaderWrapper
title=
{
...
...
@@ -78,10 +98,10 @@ const ProductNoticeSettlementDetail: React.FC = () => {
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
"
通知
单号:"
name
:
"
结算
单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
"TPTY12"
}
</
span
>
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
infoDetail
?.
settlementNo
}
</
span
>
)
}
/>
}
...
...
@@ -114,6 +134,7 @@ const ProductNoticeSettlementDetail: React.FC = () => {
controlRender=
{
<
NiceForm
actions=
{
formActions
}
components=
{
{
RangePicker
}
}
expressionScope=
{
{
exportBtn
:
(
<
div
>
...
...
@@ -122,14 +143,14 @@ const ProductNoticeSettlementDetail: React.FC = () => {
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
search
'
,
FORM_FILTER_PATH
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
orderNo
'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
detailSchema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
onSubmit=
{
handleSearch
}
/>
}
/>
...
...
src/pages/balance/accountsPayable/settlementList/schema/index.tsx
View file @
f7cf7236
...
...
@@ -17,11 +17,11 @@ 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: '输入通知单号、通知单摘要进行搜索',
},
...
...
@@ -52,12 +52,32 @@ 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
,
},
},
orderType
:
{
type
:
'string'
,
enum
:
[
{
label
:
'结算单据(所有)'
,
value
:
0
},
{
label
:
'生产通知单'
,
value
:
1
},
{
label
:
'物流单'
,
value
:
2
},
],
default
:
0
,
'x-component-props'
:
{
placeholder
:
'结算单据(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
...
...
@@ -100,11 +120,11 @@ export const detailSchema: ISchema = {
children
:
'{{exportBtn}}'
,
},
},
search
:
{
orderNo
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索
(单据号)
'
,
},
},
},
...
...
@@ -118,35 +138,117 @@ export const detailSchema: ISchema = {
},
},
properties
:
{
order
Time
:
{
order
Abstract
:
{
type
:
'string'
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'下单时间(全部)'
,
allowClear
:
true
,
placeholder
:
'单据摘要'
}
},
"[startTime, endTime]"
:
{
type
:
'array'
,
'x-component'
:
'RangePicker'
,
'x-component-props'
:
{
showTime
:
false
,
allowClear
:
true
,
placeholder
:
[
"单据时间(开始时间)"
,
"单据时间(结束时间)"
]
},
},
payTime
:
{
"[receiveStartTime, receiveEndTime]"
:
{
type
:
'array'
,
'x-component'
:
'RangePicker'
,
'x-component-props'
:
{
showTime
:
false
,
allowClear
:
true
,
placeholder
:
[
"收货时间(开始时间)"
,
"收货时间(结束时间)"
]
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
/**
* 应付账款结算--物流单结算明细
*/
export
const
logisticsDetailSchema
:
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'
,
enum
:
[]
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'支付时间(全部)'
,
allowClear
:
true
,
placeholder
:
'搜索(单据号)'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
colStyle
:
{
marginLeft
:
20
,
},
},
properties
:
{
orderAbstract
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'单据摘要'
}
},
"[startTime, endTime]"
:
{
type
:
'array'
,
'x-component'
:
'RangePicker'
,
'x-component-props'
:
{
showTime
:
false
,
allowClear
:
true
,
placeholder
:
[
"单据时间(开始时间)"
,
"单据时间(结束时间)"
]
},
},
//
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
:
'查询'
,
},
},
},
},
},
},
},
};
\ No newline at end of file
};
src/pages/balance/accountsReceivable/settlementList/index.tsx
View file @
f7cf7236
...
...
@@ -17,6 +17,7 @@ import { schema } from './schema';
import
{
PublicApi
}
from
'@/services/api'
;
import
StatusActions
from
'../../components/StatusActions'
;
import
StatusTag
from
'../../components/StatusTag'
;
import
EyePreview
from
'@/components/EyePreview'
;
const
formActions
=
createFormActions
();
...
...
@@ -24,26 +25,45 @@ const SettlementList = () => {
const
ref
=
useRef
<
any
>
({})
const
fetchListData
=
async
(
params
)
=>
{
const
searchParams
=
{
orderType
:
0
,
status
:
0
,
...
params
,
orderType
:
params
.
orderType
||
0
,
status
:
params
.
status
||
0
,
}
// /settle/accounts/member/settlement/pagePayableSettlement
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementPageReceivableSettlement
(
searchParams
);
return
data
}
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
:
'settlementNo'
,
render
:
(
text
,
record
)
=>
{
const
prefix
=
`/memberCenter/balance/accountsReceivable/settlementList/`
;
const
url
=
record
.
orderTypeName
===
'物流单'
?
`logisticsDetail`
:
`productNoticeSettlementDetail`
;
return
(
<
EyePreview
url=
{
`${prefix}${url}?id=${record.id}`
}
>
{
record
.
settlementNo
}
</
EyePreview
>
)
}
},
{
title
:
'结算日期'
,
dataIndex
:
'settlementDate'
},
{
title
:
'结算方式'
,
dataIndex
:
'settlementWayName'
},
{
title
:
'付款方'
,
dataIndex
:
'payName'
},
{
title
:
'结算单据'
,
dataIndex
:
'orderTypeName'
},
{
title
:
'总单数'
,
dataIndex
:
'totalCount'
},
{
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
:
number
,
record
:
any
)
=>
record
.
status
==
value
,
render
:
(
text
,
record
)
=>
{
return
(
<
StatusTag
status=
{
record
.
status
||
1
}
/>
...
...
@@ -55,7 +75,11 @@ const SettlementList = () => {
render
:
(
text
,
record
)
=>
{
return
(
<
StatusActions
status=
{
record
.
status
||
3
}
excludes=
{
[
2
]
}
// {...record}
id=
{
record
.
id
}
type=
{
2
}
status=
{
record
.
status
}
handleReconciledComfirm=
{
handleConfirm
}
handleComfirmInCompletePayment=
{
handleComfirmInCompletePayment
}
handleComfirmCompletePayment=
{
handleComfirmCompletePayment
}
...
...
@@ -67,21 +91,49 @@ const SettlementList = () => {
/**
* 确认对账
* @param
cancel
关闭回调函数
* @param
{cancel: function, id: number} cancel 为
关闭回调函数
*/
const
handleConfirm
=
(
params
:
any
)
=>
{
console
.
log
(
123
)
params
.
onCancel
();
PublicApi
.
postSettleAccountsMemberSettlementConfirmAccountComplete
({
settlementId
:
params
.
id
})
.
then
((
data
)
=>
{
if
(
data
.
code
===
1000
)
{
params
.
onCancel
();
formActions
.
submit
();
}
})
}
/**
* 确认未到款
* @param params
*/
const
handleComfirmInCompletePayment
=
(
params
:
any
)
=>
{
console
.
log
(
params
);
params
.
onCancel
()
}
/**
* 确认到款
* @param {onCancel:function, id: number, status: number}
*/
const
handleComfirmCompletePayment
=
(
params
:
any
)
=>
{
params
.
onCancel
();
PublicApi
.
postSettleAccountsMemberSettlementConfirmPayProve
({
id
:
params
.
id
,
status
:
params
.
id
})
.
then
((
data
)
=>
{
if
(
data
.
code
===
1000
)
{
params
.
onCancel
();
}
})
}
/**
* 搜索
*/
const
handleSearch
=
(
values
:
any
)
=>
{
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
>
...
...
@@ -98,14 +150,14 @@ const SettlementList = () => {
actions=
{
formActions
}
expressionScope=
{
{}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.
n
ame'
,
FORM_FILTER_PATH
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.
payN
ame'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
schema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
onSubmit=
{
handleSearch
}
/>
}
/>
...
...
src/pages/balance/accountsReceivable/settlementList/logisticsDetail.tsx
View file @
f7cf7236
...
...
@@ -6,7 +6,7 @@
import
React
,
{
useRef
,
useEffect
,
useState
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
Card
,
PageHeader
,
Descriptions
,
Button
,
DatePicker
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
...
...
@@ -15,10 +15,12 @@ import { ISchema, createFormActions } from '@formily/antd';
import
{
StandardTable
}
from
'god'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
d
etailSchema
}
from
'./schema'
import
{
logisticsD
etailSchema
}
from
'./schema'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
StatusTag
from
'../../components/StatusTag'
;
const
RangePicker
=
DatePicker
.
RangePicker
;
const
formActions
=
createFormActions
();
const
columns
=
[
...
...
@@ -53,25 +55,35 @@ const logisticsDetail: React.FC = () => {
const
{
id
,
preview
}
=
usePageStatus
();
const
fetchListData
=
async
(
params
)
=>
{
console
.
log
(
id
);
// const { data } = await PublicApi.getSettleAccountsMemberSettlementGetPayableDetail({id})
return
{
totalCount
:
0
,
data
:
[]
const
postData
=
{
settlementId
:
id
,
...
params
}
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementPageReceivableLogisticsSettlement
(
postData
)
return
data
}
useEffect
(()
=>
{
if
(
id
)
{
// 获取详情
async
function
fetchDetail
()
{
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementGet
Pay
ableDetail
({
id
})
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementGet
Receiv
ableDetail
({
id
})
setInfoDetail
(
data
);
}
fetchDetail
();
}
},
[
id
])
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
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
title=
{
...
...
@@ -86,7 +98,7 @@ const logisticsDetail: React.FC = () => {
name
:
"结算单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
"TPTY12"
}
</
span
>
<
span
style=
{
{
fontSize
:
12
}
}
>
{
infoDetail
?.
settlementNo
}
</
span
>
)
}
/>
}
...
...
@@ -118,6 +130,7 @@ const logisticsDetail: React.FC = () => {
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
}
}
actions=
{
formActions
}
expressionScope=
{
{
exportBtn
:
(
...
...
@@ -127,14 +140,14 @@ const logisticsDetail: React.FC = () => {
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
search
'
,
FORM_FILTER_PATH
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
orderNo
'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
d
etailSchema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
schema=
{
logisticsD
etailSchema
}
onSubmit=
{
handleSearch
}
/>
}
/>
...
...
src/pages/balance/accountsReceivable/settlementList/productNoticeSettlementDetail.tsx
View file @
f7cf7236
...
...
@@ -6,7 +6,7 @@
import
React
,
{
useRef
,
useState
,
useEffect
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Card
,
PageHeader
,
Descriptions
,
Button
}
from
'antd'
;
import
{
Card
,
PageHeader
,
Descriptions
,
Button
,
DatePicker
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
...
...
@@ -19,19 +19,20 @@ import { detailSchema } from './schema'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
RangePicker
=
DatePicker
.
RangePicker
;
const
formActions
=
createFormActions
();
const
columns
=
[
{
title
:
'单据号'
,
dataIndex
:
'
n
o'
},
{
title
:
'单据摘要'
,
dataIndex
:
'
desc
'
},
{
title
:
'单据类型'
,
dataIndex
:
'
typ
e'
},
{
title
:
'单据时间'
,
dataIndex
:
'
t
ime'
},
{
title
:
'单据总额'
,
dataIndex
:
'
total
'
},
{
title
:
'单据号'
,
dataIndex
:
'
orderN
o'
},
{
title
:
'单据摘要'
,
dataIndex
:
'
orderAbstract
'
},
{
title
:
'单据类型'
,
dataIndex
:
'
orderTypeNam
e'
},
{
title
:
'单据时间'
,
dataIndex
:
'
orderT
ime'
},
{
title
:
'单据总额'
,
dataIndex
:
'
orderAmount
'
},
{
title
:
'收货批次'
,
dataIndex
:
'batch'
},
{
title
:
'收货时间'
,
dataIndex
:
'receiveTime'
},
{
title
:
'收货数量'
,
dataIndex
:
'receive
Count
'
},
{
title
:
'加工单价'
,
dataIndex
:
'
unit
Price'
},
{
title
:
'结算金额'
,
dataIndex
:
'
payPrice
'
},
{
title
:
'收货数量'
,
dataIndex
:
'receive
Time
'
},
{
title
:
'加工单价'
,
dataIndex
:
'
process
Price'
},
{
title
:
'结算金额'
,
dataIndex
:
'
settlementAmount
'
},
]
interface
infoType
{
...
...
@@ -53,20 +54,39 @@ const ProductNoticeSettlementDetail: React.FC = () => {
const
{
id
,
preview
}
=
usePageStatus
();
const
fetchListData
=
async
(
params
)
=>
{
return
{}
const
postData
=
{
settlementId
:
id
,
...
params
}
// /settle/accounts/member/settlement/pageReceivableProductionNoticeSettlement
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementPageReceivableProductionNoticeSettlement
(
postData
)
return
data
}
useEffect
(()
=>
{
if
(
id
)
{
// 获取详情
async
function
fetchDetail
()
{
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementGet
Pay
ableDetail
({
id
})
const
{
data
}
=
await
PublicApi
.
getSettleAccountsMemberSettlementGet
Receiv
ableDetail
({
id
})
setInfoDetail
(
data
);
}
fetchDetail
();
}
},
[
id
])
/**
* 搜索
*/
const
handleSearch
=
(
values
)
=>
{
console
.
log
(
values
);
const
format
=
'YYYY-MM-DD'
const
startTime
=
values
.
startTime
?.
format
(
format
);
const
endTime
=
values
.
endTime
?.
format
(
format
);
const
receiveStartTime
=
values
.
receiveStartTime
?.
format
(
format
);
const
receiveEndTime
=
values
.
receiveEndTime
?.
format
(
format
);
ref
.
current
.
reload
({...
values
,
startTime
,
endTime
,
receiveStartTime
,
receiveEndTime
});
}
return
(
<
PageHeaderWrapper
title=
{
...
...
@@ -78,10 +98,10 @@ const ProductNoticeSettlementDetail: React.FC = () => {
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
"
通知
单号:"
name
:
"
结算
单号:"
}
}
extra=
{
(
<
span
style=
{
{
fontSize
:
12
,
fontWeight
:
'normal'
}
}
>
{
"TPTY12"
}
</
span
>
<
span
style=
{
{
fontSize
:
12
}
}
>
{
infoDetail
?.
settlementNo
}
</
span
>
)
}
/>
}
...
...
@@ -106,13 +126,14 @@ const ProductNoticeSettlementDetail: React.FC = () => {
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
rowKey
:
(
record
)
=>
`${record.orderNo}-${record.batch}`
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
}
}
actions=
{
formActions
}
expressionScope=
{
{
exportBtn
:
(
...
...
@@ -122,14 +143,14 @@ const ProductNoticeSettlementDetail: React.FC = () => {
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
search
'
,
FORM_FILTER_PATH
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'megaLayout.topLayout.
orderNo
'
,
FORM_FILTER_PATH
);
// useAsyncInitSelect(
// ['innerStatus', 'outerStatus'],
// fetchSelectOptions,
// );
}
}
schema=
{
detailSchema
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
onSubmit=
{
handleSearch
}
/>
}
/>
...
...
src/pages/balance/accountsReceivable/settlementList/schema/index.tsx
View file @
f7cf7236
...
...
@@ -17,13 +17,13 @@ export const schema: ISchema = {
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
n
ame
:
{
payN
ame
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索
(付款方)
'
,
align
:
'flex-left'
,
tip
:
'输入通知单号、通知单摘要进行搜索'
,
//
tip: '输入通知单号、通知单摘要进行搜索',
},
},
[
FORM_FILTER_PATH
]:
{
...
...
@@ -52,21 +52,41 @@ 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: '查询',
// },
// },
orderType
:
{
type
:
'string'
,
enum
:
[
{
label
:
'结算单据(所有)'
,
value
:
0
},
{
label
:
'生产通知单'
,
value
:
1
},
{
label
:
'物流单'
,
value
:
2
},
],
default
:
0
,
'x-component-props'
:
{
placeholder
:
'结算单据(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
...
...
@@ -75,7 +95,7 @@ export const schema: ISchema = {
};
/**
* 应收账款管理-
-物流单结算明细详情,
生产通知单结算明细
* 应收账款管理- 生产通知单结算明细
*/
export
const
detailSchema
:
ISchema
=
{
...
...
@@ -99,11 +119,11 @@ export const detailSchema: ISchema = {
children
:
'{{exportBtn}}'
,
},
},
search
:
{
orderNo
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索
(单据号)
'
,
},
},
},
...
...
@@ -117,35 +137,117 @@ export const detailSchema: ISchema = {
},
},
properties
:
{
order
Time
:
{
order
Abstract
:
{
type
:
'string'
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'下单时间(全部)'
,
allowClear
:
true
,
placeholder
:
'单据摘要'
}
},
"[startTime, endTime]"
:
{
type
:
'array'
,
'x-component'
:
'RangePicker'
,
'x-component-props'
:
{
showTime
:
false
,
allowClear
:
true
,
placeholder
:
[
"单据时间(开始时间)"
,
"单据时间(结束时间)"
]
},
},
"[receiveStartTime, receiveEndTime]"
:
{
type
:
'array'
,
'x-component'
:
'RangePicker'
,
'x-component-props'
:
{
showTime
:
false
,
allowClear
:
true
,
placeholder
:
[
"收货时间(开始时间)"
,
"收货时间(结束时间)"
]
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
payTime
:
{
},
},
},
},
},
};
/**
* 应付账款结算--物流单结算明细
*/
export
const
logisticsDetailSchema
:
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'
,
enum
:
[]
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'支付时间(全部)'
,
allowClear
:
true
,
placeholder
:
'搜索(单据号)'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
colStyle
:
{
marginLeft
:
20
,
},
},
properties
:
{
orderAbstract
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'单据摘要'
}
},
"[startTime, endTime]"
:
{
type
:
'array'
,
'x-component'
:
'RangePicker'
,
'x-component-props'
:
{
showTime
:
false
,
allowClear
:
true
,
placeholder
:
[
"单据时间(开始时间)"
,
"单据时间(结束时间)"
]
},
},
//
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
:
'查询'
,
},
},
},
},
},
},
},
};
\ No newline at end of file
};
src/pages/balance/components/ConfirmAccount/index.tsx
View file @
f7cf7236
...
...
@@ -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/balance/components/StatusActions/index.tsx
View file @
f7cf7236
...
...
@@ -3,7 +3,7 @@
* @Date: 2020-10-23 17:24:23
* @Description: 结算能力列表操作
*/
import
React
from
'react'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
ModalContainer
from
'../ModalContainer'
;
import
{
Modal
,
Space
,
Button
}
from
'antd'
;
import
ConfirmAccount
from
'../../components/ConfirmAccount'
;
...
...
@@ -11,16 +11,25 @@ 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
ConfirmAccountComponent
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
const
{
settlementDate
,
payName
}
=
props
;
return
(
<
ModalContainer
>
{
...
...
@@ -32,9 +41,9 @@ const ConfirmAccountComponent: React.FC<Iprops> = (props) => {
title=
"确认对账完成"
visible=
{
visible
}
onCancel=
{
cancel
}
onOk=
{
()
=>
props
.
handleReconciledComfirm
({
onCancel
:
cancel
})
}
onOk=
{
()
=>
props
.
handleReconciledComfirm
({
onCancel
:
cancel
,
id
:
props
.
id
})
}
>
<
ConfirmAccount
/>
<
ConfirmAccount
settlementDate=
{
settlementDate
}
payName=
{
payName
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
确认对账完成
</
div
>
</>
...
...
@@ -59,16 +68,16 @@ const ConfirmCollected = (props) => {
<
Button
onClick=
{
cancel
}
>
取消
</
Button
>
<
Button
danger
onClick=
{
()
=>
props
.
handleComfirmInCompletePayment
({
onCancel
:
cancel
})
}
onClick=
{
()
=>
props
.
handleComfirmInCompletePayment
({
onCancel
:
cancel
,
status
:
0
,
id
:
props
.
id
})
}
>
确认未到款
</
Button
>
<
Button
type=
{
"primary"
}
onClick=
{
()
=>
props
.
handleComfirmCompletePayment
({
onCancel
:
cancel
})
}
onClick=
{
()
=>
props
.
handleComfirmCompletePayment
({
onCancel
:
cancel
,
status
:
1
,
id
:
props
.
id
})
}
>
确认到款
</
Button
>
</
Space
>
)
}
>
<
Voucher
/>
<
WrapVoucher
id=
{
props
.
id
}
type=
{
props
.
type
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
确认付款凭证
</
div
>
</>
...
...
@@ -79,8 +88,31 @@ const ConfirmCollected = (props) => {
)
}
const
WrapVoucher
=
({
id
,
type
})
=>
{
const
[
files
,
setFiles
]
=
useState
([]);
console
.
log
(
id
);
useEffect
(()
=>
{
if
(
id
)
{
const
service
=
type
==
1
?
PublicApi
.
getSettleAccountsMemberSettlementGetPayablePayProve
:
PublicApi
.
getSettleAccountsMemberSettlementGetReceivablePayProve
service
({
id
}).
then
((
data
)
=>
{
if
(
data
.
code
==
1000
)
{
setFiles
(
data
.
data
)
}
})
}
},
[
id
])
return
(
<
Voucher
files=
{
files
}
/>
)
}
// 显示查看付款凭证
const
ViewPaymentVoucher
:
React
.
FC
=
(
props
)
=>
{
const
ViewPaymentVoucher
=
(
props
)
=>
{
return
(
<
ModalContainer
>
{
...
...
@@ -88,7 +120,7 @@ const ViewPaymentVoucher: React.FC = (props) => {
return
(
<>
<
Modal
width=
{
548
}
title=
"查看付款凭证"
onCancel=
{
cancel
}
visible=
{
visible
}
footer=
{
null
}
>
<
Voucher
files=
{
[]
}
/>
<
WrapVoucher
id=
{
props
.
id
}
type=
{
props
.
type
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
查看付款凭证
</
div
>
</>
...
...
@@ -99,8 +131,25 @@ const ViewPaymentVoucher: React.FC = (props) => {
)
}
interface
UploadVocherProps
{
settlementId
:
number
,
id
:
number
handleUpload
:
(
params
:
any
)
=>
void
}
interface
FileType
{
name
:
string
,
proveUrl
:
string
}
// 待付款 状态 上传付款凭证
const
UploadVoucher
:
React
.
FC
=
(
props
)
=>
{
const
UploadVoucher
:
React
.
FC
<
UploadVocherProps
>
=
(
props
)
=>
{
const
{
settlementId
}
=
props
;
const
[
fileList
,
setFileList
]
=
useState
<
FileType
[]
>
([]);
const
getFileList
=
(
list
:
FileType
[])
=>
{
setFileList
(
list
);
}
return
(
<
ModalContainer
>
{
...
...
@@ -117,11 +166,12 @@ const UploadVoucher: React.FC = (props) => {
<
Button
onClick=
{
cancel
}
>
取消
</
Button
>
<
Button
type=
{
"primary"
}
onClick=
{
()
=>
props
.
handleUpload
({
onCancel
:
cancel
,
id
:
props
.
id
,
fileList
:
fileList
})
}
>
确认
</
Button
>
</
Space
>
)
}
>
<
UploadPayVoucher
fileList=
{
[{
name
:
'123'
,
proveUrl
:
''
}]
}
/>
<
UploadPayVoucher
id=
{
settlementId
}
getFileList=
{
getFileList
}
/>
</
Modal
>
<
div
className=
{
styles
.
modalBtn
}
onClick=
{
show
}
>
上传付款凭证
</
div
>
</>
...
...
@@ -141,8 +191,8 @@ const ChildrenComponent = {
}
const
StatusActions
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
status
}
=
props
;
const
Component
=
ChildrenComponent
[
status
];
const
{
status
,
excludes
=
[]
}
=
props
;
const
Component
=
excludes
.
includes
(
status
)
?
null
:
ChildrenComponent
[
status
];
return
(
<>
{
Component
&&
<
Component
{
...
props
}
/>
}
...
...
src/pages/balance/components/UploadPayVoucher/index.tsx
View file @
f7cf7236
...
...
@@ -12,19 +12,43 @@ 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
Iprops
{
fileList
:
VoucherFileProps
[],
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
([]);
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
accountInfo
,
setAccountInfo
]
=
useState
<
AccountInfo
>
(
null
)
// 进来设置fileList
// useEffect(() => {
// setFileList(props.fileList)
// }, [props.fileList])
/**
* 获取账户名称等
*/
useEffect
(()
=>
{
setFileList
(
props
.
fileList
)
},
[
props
.
fileList
])
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
])
/***
* 上传前检查
...
...
@@ -67,6 +91,7 @@ const UploadPayVoucher: React.FC<Iprops> = (props) => {
proveUrl
:
data
})
setFileList
(
temp
);
props
.
getFileList
(
temp
)
}
setLoading
(
false
)
}
...
...
@@ -78,15 +103,15 @@ const UploadPayVoucher: React.FC<Iprops> = (props) => {
<
div
className=
{
styles
.
container
}
>
<
div
className=
{
styles
.
formItem
}
>
<
span
className=
{
styles
.
label
}
>
账户名称
</
span
>
<
span
className=
{
styles
.
value
}
>
温州市隆昌皮具有限公司
</
span
>
<
span
className=
{
styles
.
value
}
>
{
accountInfo
?.
name
}
</
span
>
</
div
>
<
div
className=
{
styles
.
formItem
}
>
<
span
className=
{
styles
.
label
}
>
银行账号
</
span
>
<
span
className=
{
styles
.
value
}
>
3214 454646 145 46 1231
</
span
>
<
span
className=
{
styles
.
value
}
>
{
accountInfo
?.
bankAccount
}
</
span
>
</
div
>
<
div
className=
{
styles
.
formItem
}
>
<
span
className=
{
styles
.
label
}
>
开户行
</
span
>
<
span
className=
{
styles
.
value
}
>
中国建设银行广州市分行营业部
</
span
>
<
span
className=
{
styles
.
value
}
>
{
accountInfo
?.
bankDeposit
}
</
span
>
</
div
>
<
p
className=
{
styles
.
voucherText
}
>
上传支付凭证
</
p
>
<
Voucher
files=
{
fileList
}
/>
...
...
src/pages/balance/components/Voucher/index.tsx
View file @
f7cf7236
...
...
@@ -15,12 +15,13 @@ interface Iprops {
const
Voucher
:
React
.
FC
<
Iprops
>
=
(
props
)
=>
{
const
{
files
=
[]
}
=
props
;
console
.
log
(
files
);
return
(
<>
{
files
.
map
((
item
:
VoucherFileProps
)
=>
{
files
.
map
((
item
:
VoucherFileProps
,
key
:
number
)
=>
{
return
(
<
div
className=
{
styles
.
container
}
>
<
div
className=
{
styles
.
container
}
key=
{
key
}
>
{
/* <div></div>/ */
}
<
div
className=
{
styles
.
image
}
>
<
img
src=
{
image_icon
}
className=
{
styles
.
icon
}
/>
...
...
@@ -28,7 +29,9 @@ const Voucher: React.FC<Iprops> = (props) => {
<
div
className=
{
styles
.
text
}
>
<
a
href=
{
item
.
proveUrl
}
target=
{
"_blank"
}
>
{
item
.
name
}
</
a
>
</
div
>
<
div
className=
{
styles
.
view
}
>
预览
</
div
>
<
div
className=
{
styles
.
view
}
>
<
a
href=
{
item
.
proveUrl
}
target=
{
"_blank"
}
>
预览
</
a
>
</
div
>
</
div
>
)
})
...
...
src/pages/payandSettle/creditApplication/quotaMenage/detail/components/IntroduceRow/index.tsx
View file @
f7cf7236
...
...
@@ -13,6 +13,7 @@ import {
}
from
'antd'
;
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
;
import
lodash
from
'lodash'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
{
Pie
}
from
'@/components/Charts'
;
import
StatusTag
from
'@/components/StatusTag'
;
...
...
@@ -21,7 +22,6 @@ import { repaymentModalSchema, uploadVoucherModalSchema } from './schema';
import
{
createEffects
}
from
'./effects/repayment'
;
import
TradeRecord
,
{
RecordParams
,
RecordRes
}
from
'../TradeRecord'
;
import
styles
from
'./index.less'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
repaymentFormActions
=
createFormActions
();
const
uploadVoucherFormActions
=
createFormActions
();
...
...
src/pages/payandSettle/creditApplication/quotaMenage/detail/index.tsx
View file @
f7cf7236
...
...
@@ -29,13 +29,17 @@ const BillInfo = React.lazy(() => import('./components/BillInfo'));
const
HistoryList
=
React
.
lazy
(()
=>
import
(
'../../components/HistoryList'
));
const
QuotaMenageDetail
:
React
.
FC
=
()
=>
{
const
{
id
,
validateId
,
pageStatus
}
=
usePageStatus
();
const
{
id
}
=
usePageStatus
();
const
[
creditInfo
,
setCreditInfo
]
=
useState
<
GetPayCreditApplyGetCreditDetailResponse
>
(
null
);
const
[
creditOverdueList
,
setCreditOverdueList
]
=
useState
([]);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
const
[
creditOverdueListLoading
,
setCreditOverdueListLoading
]
=
useState
(
false
);
// 获取授信详情
const
getCreditDetail
=
()
=>
{
if
(
!
id
)
{
return
;
}
setInfoLoading
(
true
);
PublicApi
.
getPayCreditApplyGetCreditDetail
({
id
,
...
...
@@ -64,6 +68,7 @@ const QuotaMenageDetail: React.FC = () => {
},
];
// 获取账单详情
const
fetchBillDetail
=
(
params
:
BillDetailParams
):
Promise
<
BillDetailData
>
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayCreditApplyGetCreditBillDetail
(
params
)
...
...
@@ -79,7 +84,11 @@ const QuotaMenageDetail: React.FC = () => {
});
};
// 获取账单记录列表
const
fetchBillRecordList
=
(
params
:
BillRecordParams
):
Promise
<
any
>
=>
{
if
(
!
id
)
{
return
;
}
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayCreditApplyPageCreditTradeRecord
({
creditId
:
id
,
...
...
@@ -95,7 +104,11 @@ const QuotaMenageDetail: React.FC = () => {
});
};
// 获取逾期列表
const
getCreditOverdueList
=
()
=>
{
if
(
!
id
)
{
return
;
}
setCreditOverdueListLoading
(
true
);
PublicApi
.
getPayCreditApplyPageCreditOverdue
({
creditId
:
id
,
...
...
src/pages/payandSettle/creditManage/components/HistoryList/index.tsx
View file @
f7cf7236
...
...
@@ -4,15 +4,30 @@ import PolymericTable from '@/components/PolymericTable';
import
{
EditableColumns
}
from
'@/components/PolymericTable/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
const
HistoryList
:
React
.
FC
=
()
=>
{
interface
HistoryListHistoryListProps
{
dataSource
:
{
applyNo
:
string
,
originalQuota
:
number
;
applyQuota
:
number
;
auditQuota
:
number
;
applyTime
:
string
;
}[];
// 目标路径
target
?:
string
;
};
const
HistoryList
:
React
.
FC
<
HistoryListHistoryListProps
>
=
({
dataSource
=
[],
target
,
})
=>
{
const
columns
:
EditableColumns
[]
=
[
{
title
:
'申请单号'
,
dataIndex
:
'
order
'
,
render
:
text
=>
(
dataIndex
:
'
applyNo
'
,
render
:
(
text
,
record
)
=>
(
<
EyePreview
url=
{
``
}
url=
{
`
${target ? target : '/memberCenter/payandSettle/creditApplication/quotaPrSubmit/detail'}?id=${record.id}
`
}
>
{
text
}
</
EyePreview
>
...
...
@@ -20,30 +35,26 @@ const HistoryList: React.FC = () => {
},
{
title
:
'调整前额度(元)'
,
dataIndex
:
'
content
'
,
dataIndex
:
'
originalQuota
'
,
align
:
'center'
,
},
{
title
:
'申请调整额度(元)'
,
dataIndex
:
'
byMemberName
'
,
dataIndex
:
'
applyQuota
'
,
align
:
'center'
,
},
{
title
:
'审批额度(元)'
,
dataIndex
:
'
reason
'
,
dataIndex
:
'
auditQuota
'
,
align
:
'center'
,
},
{
title
:
'申请时间'
,
dataIndex
:
'
create
Time'
,
dataIndex
:
'
apply
Time'
,
align
:
'center'
,
},
];
const
handlePaginationChange
=
()
=>
{
};
return
(
<
MellowCard
title=
"历史授信申请"
...
...
@@ -52,15 +63,11 @@ const HistoryList: React.FC = () => {
}
}
>
<
PolymericTable
rowKey=
"
remark
"
dataSource=
{
[]
}
rowKey=
"
applyNo
"
dataSource=
{
dataSource
}
columns=
{
columns
}
loading=
{
false
}
pagination=
{
{
pageSize
:
10
,
total
:
200
,
}
}
onPaginationChange=
{
handlePaginationChange
}
pagination=
{
null
}
/>
</
MellowCard
>
);
...
...
src/pages/payandSettle/creditManage/quotaMenage/detail/components/BillInfo/index.less
View file @
f7cf7236
...
...
@@ -35,4 +35,8 @@
&-right {
flex: 1;
}
}
.noData {
padding-top: 24px;
}
\ No newline at end of file
src/pages/payandSettle/creditManage/quotaMenage/detail/components/BillInfo/index.tsx
View file @
f7cf7236
...
...
@@ -4,7 +4,11 @@ import {
Descriptions
,
Row
,
Col
,
Empty
,
}
from
'antd'
;
import
{
GetPayCreditApplyPageCreditOverdueResponseDetail
}
from
'@/services/PayApi'
;
import
{
BILL_TRADE_OPERATION
}
from
'@/constants'
;
import
{
normalizeFiledata
,
FileData
}
from
'@/utils'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
TradeWrap
from
'../TradeWrap'
;
...
...
@@ -13,9 +17,28 @@ import styles from './index.less';
const
{
TabPane
}
=
Tabs
;
const
BillInfo
:
React
.
FC
=
()
=>
{
export
interface
BillInfoProps
{
overdueList
:
GetPayCreditApplyPageCreditOverdueResponseDetail
[];
loading
?:
boolean
;
};
const
BillInfo
:
React
.
FC
<
BillInfoProps
>
=
({
overdueList
=
[],
loading
=
false
,
})
=>
{
const
[
currentVoucher
,
setCurrentVoucher
]
=
useState
<
FileData
[]
>
([]);
const
[
voucherVisible
,
setVoucherVisible
]
=
useState
(
false
);
const
handleCheckVoucher
=
record
=>
{
if
(
!
Array
.
isArray
(
record
))
{
setCurrentVoucher
([]);
}
else
{
const
voucher
=
record
.
map
(
item
=>
normalizeFiledata
(
item
.
proveUrl
));
setCurrentVoucher
(
voucher
);
}
setVoucherVisible
(
true
);
};
return
(
<
MellowCard
style=
{
{
...
...
@@ -26,91 +49,85 @@ const BillInfo: React.FC = () => {
}
}
>
<
div
className=
{
styles
.
billInfo
}
>
<
Tabs
defaultActiveKey=
"1"
onChange=
{
()
=>
{}
}
>
<
TabPane
tab=
{
(
<
div
className=
{
styles
.
dateWrap
}
>
<
StatusTag
type=
"danger"
title=
"逾期 9 天"
/>
<
div
className=
{
styles
.
time
}
>
2020/06/11 ~ 2020/07/11
</
div
>
</
div
>
)
}
key=
"1"
>
<
div
className=
{
styles
.
content
}
>
<
div
className=
{
styles
[
'content-left'
]
}
>
<
Descriptions
column=
{
1
}
>
<
Descriptions
.
Item
label=
"账单金额(元)"
>
30,000.00
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"账单最后还款日期"
>
2020-08-20
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"账单最后还款金额(元)"
>
20,000.00
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"还清日期"
>
2020-08-21
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
<
div
className=
{
styles
[
'content-right'
]
}
>
<
TradeWrap
>
<
TradeWrap
.
TradeItem
width=
"33.33%"
>
{
(
!
loading
&&
overdueList
&&
overdueList
.
length
>
0
)
?
(
<
Tabs
onChange=
{
()
=>
{}
}
>
{
overdueList
.
map
((
item
,
index
)
=>
(
<
TabPane
tab=
{
(
<
div
className=
{
styles
.
dateWrap
}
>
<
StatusTag
type=
"danger"
title=
{
`逾期 ${item.overdueDay} 天`
}
/>
<
div
className=
{
styles
.
time
}
>
{
item
.
billName
}
</
div
>
</
div
>
)
}
key=
{
index
}
>
<
div
className=
{
styles
.
content
}
>
<
div
className=
{
styles
[
'content-left'
]
}
>
<
Descriptions
column=
{
1
}
>
<
Descriptions
.
Item
label=
"交易流水号"
>
<
Row
justify=
"space-between"
>
<
Col
span=
{
12
}
>
<
a
onClick=
{
()
=>
setVoucherVisible
(
true
)
}
>
20200820000010
</
a
>
</
Col
>
<
Col
span=
{
10
}
style=
{
{
textAlign
:
'right'
,
}
}
>
<
StatusTag
type=
"danger"
title=
"待确认还款结果"
/>
</
Col
>
</
Row
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"交易项目"
>
<
Row
justify=
"space-between"
>
<
Col
span=
{
12
}
>
还款
</
Col
>
<
Col
span=
{
10
}
style=
{
{
textAlign
:
'right'
,
}
}
>
<
strong
>
+30,000.00元
</
strong
>
</
Col
>
</
Row
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"交易时间"
>
2020-08-25 08:58
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"账单金额(元)"
>
{
item
.
billQuota
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"账单最后还款日期"
>
{
item
.
lastRepayDate
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"账单最后还款金额(元)"
>
{
item
.
lastRepayQuota
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"还清日期"
>
{
item
.
payOffDate
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
TradeWrap
.
TradeItem
>
</
TradeWrap
>
</
div
>
</
div
>
</
TabPane
>
</
Tabs
>
</
div
>
<
div
className=
{
styles
[
'content-right'
]
}
>
<
TradeWrap
>
{
item
.
tradeList
&&
item
.
tradeList
.
map
(
trade
=>
(
<
TradeWrap
.
TradeItem
width=
"33.33%"
key=
{
trade
.
tradeCode
}
>
<
Descriptions
column=
{
1
}
>
<
Descriptions
.
Item
label=
"交易流水号"
>
<
Row
justify=
"space-between"
>
<
Col
span=
{
12
}
>
<
a
onClick=
{
()
=>
handleCheckVoucher
(
trade
.
payProveList
)
}
>
{
trade
.
tradeCode
}
</
a
>
</
Col
>
<
Col
span=
{
10
}
style=
{
{
textAlign
:
'right'
,
}
}
>
<
StatusTag
type=
"danger"
title=
{
`逾期 ${trade.overdueDay} 天`
}
/>
</
Col
>
</
Row
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"交易项目"
>
<
Row
justify=
"space-between"
>
<
Col
span=
{
12
}
>
{
BILL_TRADE_OPERATION
[
trade
.
operation
]
}
</
Col
>
<
Col
span=
{
10
}
style=
{
{
textAlign
:
'right'
,
}
}
>
<
strong
>
{
trade
.
tradeMoney
}
</
strong
>
</
Col
>
</
Row
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"交易时间"
>
{
trade
.
tradeTime
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
TradeWrap
.
TradeItem
>
))
}
</
TradeWrap
>
</
div
>
</
div
>
</
TabPane
>
))
}
</
Tabs
>
)
:
(
<
div
className=
{
styles
.
noData
}
>
<
Empty
/>
</
div
>
)
}
</
div
>
<
CheckVoucherModal
visible=
{
voucherVisible
}
fileList=
{
[
{
uid
:
'1'
,
name
:
'xxx.png'
,
status
:
'done'
,
url
:
'http://www.baidu.com/xxx.png'
,
},
{
uid
:
'2'
,
name
:
'yyy.png'
,
status
:
'done'
,
url
:
'http://www.baidu.com/yyy.png'
,
},
{
uid
:
'3'
,
name
:
'zzz.png'
,
status
:
'done'
,
url
:
'http://www.baidu.com/zzz.png'
,
},
]
}
fileList=
{
currentVoucher
}
onCancel=
{
()
=>
setVoucherVisible
(
false
)
}
/>
</
MellowCard
>
...
...
src/pages/payandSettle/creditManage/quotaMenage/detail/components/IntroduceRow/index.tsx
View file @
f7cf7236
This diff is collapsed.
Click to expand it.
src/pages/payandSettle/creditManage/quotaMenage/detail/components/IntroduceRow/schema/index.ts
deleted
100644 → 0
View file @
cb4fd52e
import
{
ISchema
}
from
'@formily/antd'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
;
export
const
repaymentModalSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
labelAlign
:
'top'
,
full
:
true
,
},
properties
:
{
amount
:
{
type
:
'string'
,
title
:
'还款金额'
,
'x-component-props'
:
{
placeholder
:
''
,
addonBefore
:
'¥'
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请填写还款金额'
,
},
],
},
amountSlide
:
{
type
:
'number'
,
title
:
''
,
'x-component'
:
'range'
,
'x-component-props'
:
{
min
:
0
,
max
:
20000
,
marks
:
[
0
,
5000
,
10000
,
15000
,
20000
],
},
},
payType
:
{
type
:
'number'
,
enum
:
[
{
label
:
'线上支付方式'
,
value
:
1
,
},
{
label
:
'线下支付方式'
,
value
:
2
,
},
],
default
:
1
,
title
:
'选择支付方式'
,
'x-component-props'
:
{
placeholder
:
'请选择'
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择支付方式'
,
},
],
},
payChannels
:
{
type
:
'string'
,
title
:
'选择支付渠道'
,
enum
:
[
{
label
:
'微信'
,
value
:
1
,
},
{
label
:
'支付宝'
,
value
:
2
,
},
{
label
:
'银联'
,
value
:
3
,
},
],
default
:
1
,
'x-component-props'
:
{
placeholder
:
'请选择'
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择支付渠道'
,
},
],
},
},
},
},
};
export
const
uploadVoucherModalSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
labelCol
:
6
,
wrapperCol
:
18
,
labelAlign
:
'left'
,
full
:
true
,
},
properties
:
{
accountName
:
{
type
:
'string'
,
title
:
'还款账户名称'
,
default
:
'温州市隆昌皮具有限公司'
,
'x-component'
:
'Text'
,
'x-component-props'
:
{
},
},
bankAccount
:
{
type
:
'string'
,
title
:
'银行账号'
,
default
:
'6214 7812 3456 7891 1234'
,
'x-component'
:
'Text'
,
'x-component-props'
:
{
},
},
bod
:
{
type
:
'string'
,
title
:
'开户行'
,
default
:
'中国建设银行广州市分行营业部'
,
'x-component'
:
'Text'
,
'x-component-props'
:
{
},
},
voucher
:
{
type
:
'string'
,
title
:
'上传支付凭证'
,
'x-component'
:
'Upload'
,
'x-component-props'
:
{
action
:
'/api/file/file/upload/prefix'
,
data
:
{
fileType
:
UPLOAD_TYPE
,
prefix
:
'/creditApplication/paymentVoucher/'
,
},
beforeUpload
:
'{{beforeUpload}}'
,
accept
:
'.png, .jpg, .jpeg'
,
},
'x-mega-props'
:
{
labelAlign
:
'top'
,
full
:
true
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请上传支付凭证'
,
},
],
description
:
'单个凭证文件大小不能超过 200K'
,
},
},
},
},
};
\ No newline at end of file
src/pages/payandSettle/creditManage/quotaMenage/detail/components/TradeRecord/index.less
View file @
f7cf7236
...
...
@@ -12,4 +12,8 @@
margin-top: 10px;
text-align: right;
}
.noData {
padding-top: 62px;
}
}
\ No newline at end of file
src/pages/payandSettle/creditManage/quotaMenage/detail/components/TradeRecord/index.tsx
View file @
f7cf7236
This diff is collapsed.
Click to expand it.
src/pages/payandSettle/creditManage/quotaMenage/detail/index.tsx
View file @
f7cf7236
import
React
,
{
Suspense
}
from
'react'
;
import
React
,
{
Suspense
,
useEffect
,
useState
,
useMemo
,
useCallback
}
from
'react'
;
import
{
PageHeader
,
Descriptions
,
Card
,
Spin
,
Button
,
Badge
,
message
,
}
from
'antd'
;
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
history
}
from
'umi'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetPayCreditHandleGetCreditDetailResponse
}
from
'@/services/PayApi'
;
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
CREDIT_REPAYMENT_STATUS
,
CREDIT_STATUS
,
}
from
'@/constants'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
{
CREDIT_STATUS_BADGE_MAP
,
CREDIT_REPAYMENT_STATUS_TAG_MAP
,
}
from
'../../../constant'
;
import
{
BillDetailParams
,
BillDetailData
,
BillRecordParams
}
from
'./components/IntroduceRow'
;
import
styles
from
'./index.less'
;
const
IntroduceRow
=
React
.
lazy
(()
=>
import
(
'./components/IntroduceRow'
));
...
...
@@ -20,17 +29,107 @@ const BillInfo = React.lazy(() => import('./components/BillInfo'));
const
HistoryList
=
React
.
lazy
(()
=>
import
(
'../../components/HistoryList'
));
const
QuotaMenageDetail
:
React
.
FC
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
[
creditInfo
,
setCreditInfo
]
=
useState
<
GetPayCreditHandleGetCreditDetailResponse
>
(
null
);
const
[
creditOverdueList
,
setCreditOverdueList
]
=
useState
([]);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
const
[
creditOverdueListLoading
,
setCreditOverdueListLoading
]
=
useState
(
false
);
// 获取授信详情
const
getCreditDetail
=
()
=>
{
setInfoLoading
(
true
);
PublicApi
.
getPayCreditHandleGetCreditDetail
({
id
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setCreditInfo
(
res
.
data
);
}
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
};
useEffect
(()
=>
{
getCreditDetail
();
getCreditOverdueList
();
},
[]);
const
quotaData
=
[
{
x
:
'剩余可用额度(元)'
,
y
:
8
0
,
y
:
creditInfo
&&
creditInfo
.
canUseQuota
?
creditInfo
.
canUseQuota
:
0
,
},
{
x
:
'已用额度(元)'
,
y
:
2
0
,
y
:
creditInfo
&&
creditInfo
.
useQuota
?
creditInfo
.
useQuota
:
0
,
},
];
];
// 获取账单详情
const
fetchBillDetail
=
(
params
:
BillDetailParams
):
Promise
<
BillDetailData
>
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayCreditHandleGetCreditBillDetail
(
params
)
.
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
);
}
reject
();
})
.
catch
(()
=>
{
reject
();
});
});
};
// 获取账单记录列表
const
fetchBillRecordList
=
(
params
:
BillRecordParams
):
Promise
<
any
>
=>
{
if
(
!
id
)
{
return
;
}
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getPayCreditHandlePageCreditTradeRecord
({
creditId
:
id
,
...
params
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
);
}
reject
();
}).
catch
(()
=>
{
reject
();
});
});
};
// 获取逾期列表
const
getCreditOverdueList
=
()
=>
{
if
(
!
id
)
{
return
;
}
setCreditOverdueListLoading
(
true
);
PublicApi
.
getPayCreditHandlePageCreditOverdue
({
creditId
:
id
,
current
:
'1'
,
pageSize
:
'9999'
,
// 暂时写死
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setCreditOverdueList
(
res
.
data
.
data
);
}
}).
finally
(()
=>
{
setCreditOverdueListLoading
(
false
);
});
};
const
normalizeOptions
=
arr
=>
{
if
(
!
arr
||
!
Array
.
isArray
(
arr
))
{
return
[];
}
return
arr
.
map
(
item
=>
({
title
:
item
.
name
,
value
:
item
.
id
,
}));
};
return
(
<
PageHeaderWrapper
...
...
@@ -42,9 +141,9 @@ const QuotaMenageDetail: React.FC = () => {
title=
{
<
AvatarWrap
info=
{
{
name
:
'订单号:DPTY12'
,
name
:
creditInfo
?.
member
?.
memberName
,
}
}
extra=
"青铜会员"
extra=
{
creditInfo
?.
member
?.
levelTag
}
/>
}
extra=
{
(
...
...
@@ -60,10 +159,13 @@ const QuotaMenageDetail: React.FC = () => {
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
企业会员
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
供应商
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
creditInfo
?.
member
?.
memberTypeName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
creditInfo
?.
member
?.
roleName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"状态"
>
<
Badge
color=
"#41CC9E"
text=
"正常"
/>
<
Badge
color=
{
CREDIT_STATUS_BADGE_MAP
[
creditInfo
?.
member
?.
status
]
}
text=
{
CREDIT_STATUS
[
creditInfo
?.
member
?.
status
]
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
span=
{
2
}
>
<
StatusTag
type=
"success"
title=
"正常"
/>
...
...
@@ -74,15 +176,28 @@ const QuotaMenageDetail: React.FC = () => {
}
>
<
Suspense
fallback=
{
null
}
>
<
IntroduceRow
quotaData=
{
quotaData
}
/>
<
IntroduceRow
quotaData=
{
quotaData
}
extraData=
{
{
canUseQuota
:
creditInfo
?.
canUseQuota
,
useQuota
:
creditInfo
?.
useQuota
,
quota
:
creditInfo
?.
quota
,
}
}
options=
{
normalizeOptions
(
creditInfo
?.
billSelectList
)
}
fetchBillDetail=
{
fetchBillDetail
}
fetchBillRecordList=
{
fetchBillRecordList
}
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
BillInfo
/>
<
BillInfo
overdueList=
{
creditOverdueList
}
loading=
{
creditOverdueListLoading
}
/>
</
Suspense
>
<
Suspense
fallback=
{
null
}
>
<
HistoryList
/>
<
HistoryList
dataSource=
{
creditInfo
?.
historyApplyList
}
target=
"/memberCenter/payandSettle/creditApplication/quotaMenage/history"
/>
</
Suspense
>
</
PageHeaderWrapper
>
);
...
...
src/pages/payandSettle/creditManage/quotaMenage/index.tsx
View file @
f7cf7236
...
...
@@ -99,7 +99,7 @@ const QuotaMenage: React.FC = () => {
)
:
(
<>
<
EyePreview
url=
{
`/memberCenter/payandSettle/creditManage/quotaMenage/detail`
}
url=
{
`/memberCenter/payandSettle/creditManage/quotaMenage/detail
?id=${record.id}
`
}
>
{
text
}
</
EyePreview
>
...
...
src/pages/repositories/addRepository.tsx
View file @
f7cf7236
...
...
@@ -50,11 +50,15 @@ const AddRepository:React.FC<{}> = (props) => {
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
className=
'addRepository'
title=
{
pageStatus
===
PageStatus
.
PREVIEW
?
'查看仓位'
:
'新增仓位'
}
extra=
{
[
<
Button
key=
"1"
onClick=
{
()
=>
addSchemaAction
.
submit
()
}
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
保存
</
Button
>,
]
}
extra=
{
(
pageStatus
!==
PageStatus
.
PREVIEW
?
(
<
Button
key=
"1"
onClick=
{
()
=>
addSchemaAction
.
submit
()
}
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
保存
</
Button
>
)
:
null
)
}
>
<
Card
className=
''
>
<
PositionSetting
addSchemaAction=
{
addSchemaAction
}
schema=
{
repositDetailSchema
}
formSubmit=
{
formSubmit
}
/>
...
...
src/pages/repositories/components/PositionSetting.tsx
View file @
f7cf7236
...
...
@@ -21,7 +21,8 @@ import Search from '@/components/NiceForm/components/Search'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
{
SHOP_TYPES
,
MALL_TYPE
}
from
'@/constants'
;
import
shop
from
'@/pages/lxMall/shop'
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
export
interface
PositionSettingProps
{
addSchemaAction
:
ISchemaFormActions
,
...
...
@@ -80,17 +81,17 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
useEffect
(()
=>
{
// 拿到所有的角色等级, 根据shopType, 商品的类容重新拿
async
function
getMemberLevel
()
{
const
response
=
await
PublicApi
.
getMemberManagePageitems
();
const
response
=
await
PublicApi
.
getMemberManagePageitems
(
{
roleTypeEnum
:
'2'
}
);
const
{
levels
=
[],
memberTypes
=
[],
roles
=
[]
}
=
response
.
data
;
const
allLevels
=
all
.
concat
(
transferLabelToValue
(
levels
,
"levelTag"
,
"level"
));
const
allMemberTypes
=
all
.
concat
(
transferLabelToValue
(
memberTypes
,
"memberTypeName"
,
"memberTypeId"
))
//
const allRoles = all.concat(transferLabelToValue(roles, "roleName", "roleId"))
const
allRoles
=
all
.
concat
(
transferLabelToValue
(
roles
,
"roleName"
,
"roleId"
))
setMemberFilter
((
state
)
=>
{
return
{
...
state
,
level
:
allLevels
,
//
role: allRoles,
role
:
allRoles
,
type
:
allMemberTypes
}
})
...
...
@@ -105,16 +106,11 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
const
{
data
}
=
await
PublicApi
.
getWarehouseFreightSpaceDetails
({
id
:
id
});
if
(
data
.
isAllMemberShare
===
0
)
{
const
res
=
await
getBindingMember
({
id
:
id
.
toString
(),
current
:
'1'
,
pageSize
:
'10'
});
addSchemaAction
.
setFieldState
(
'isAllMemberShare'
,
(
state
)
=>
{
state
.
value
=
0
})
addSchemaAction
.
setFieldState
(
'applyMember'
,
(
state
)
=>
{
state
.
value
=
res
.
data
})
setMembersLength
(
res
.
totalCount
);
setInitialValue
({...
data
,
applyMember
:
res
.
data
});
}
else
{
setInitialValue
(
data
)
}
console
.
log
(
data
)
setInitialValue
(
data
);
}
if
(
id
!=
''
)
{
getInitValue
();
...
...
@@ -374,15 +370,15 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
}
},
//
roleId: {
//
type: 'string',
//
"x-component": 'Select',
//
"x-component-props": {
//
options: membersFilterState.role,
//
style: {width: '180px'},
//
placeholder: '请选择会员角色'
//
}
//
},
roleId
:
{
type
:
'string'
,
"x-component"
:
'Select'
,
"x-component-props"
:
{
options
:
membersFilterState
.
role
,
style
:
{
width
:
'180px'
},
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