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
linweijiong
jinfa-platform
Commits
1900d374
Commit
1900d374
authored
Sep 25, 2020
by
前端-许佳敏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复金额联动
parent
90071447
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
75 additions
and
43 deletions
+75
-43
index.ts
src/constants/index.ts
+3
-8
index.tsx
...seOrder/orderDetail/components/payInfoTableCell/index.tsx
+7
-1
index.tsx
...chaseOrder/orderDetail/components/selectAddress/index.tsx
+5
-2
index.tsx
src/pages/transaction/purchaseOrder/orderDetail/index.tsx
+31
-7
usePaymentInfo.tsx
...action/purchaseOrder/orderDetail/model/usePaymentInfo.tsx
+5
-1
index.tsx
...Order/orderPreview/components/orderProductTable/index.tsx
+24
-24
No files found.
src/constants/index.ts
View file @
1900d374
...
...
@@ -660,17 +660,12 @@ export enum SaleOrderInsideWorkState {
NOT_ACCEPTED_ORDER
,
/**
* 确认支付结果到账
*/
CONFIRM_PAY_RESULT
=
16
,
/**
* 确认支付结果没到账
*/
CONFIRM_NOT_PAY_RESULT
,
CONFIRM_NOT_PAY_RESULT
=
17
,
/**
*
待新增销售发货单
*
确认支付结果到账(待新增销售发货单)
*/
SALE_CREATE_DELIVED_ORDER
,
...
...
@@ -695,7 +690,7 @@ export enum SaleOrderInsideWorkState {
FILLING_ORDER
,
/**
* 销售发货单待审核
* 销售发货单待审核
(新增销售发货单成功)
*/
READY_DELEVED_APPROVED
,
...
...
src/pages/transaction/purchaseOrder/orderDetail/components/payInfoTableCell/index.tsx
View file @
1900d374
...
...
@@ -8,6 +8,7 @@ export interface PayInfoCellProps {
dataIndex
:
string
;
record
:
any
;
colIndex
:
number
,
handleChange
(
record
:
any
,
value
:
any
)
handleSave
:
(
record
:
any
)
=>
Promise
<
any
>
;
forceEdit
:
boolean
,
formItem
:
string
,
...
...
@@ -55,6 +56,7 @@ export const PayInfoCell:React.FC<PayInfoCellProps> = ({
dataIndex
,
record
,
colIndex
,
handleChange
,
handleSave
,
forceEdit
,
formItem
,
...
...
@@ -73,11 +75,15 @@ export const PayInfoCell:React.FC<PayInfoCellProps> = ({
}
};
const
handleInputChange
=
(
e
)
=>
{
handleChange
(
record
,
e
.
target
.
value
)
}
const
chooseFormItem
=
(
type
)
=>
{
const
formId
=
dataIndex
+
colIndex
switch
(
type
)
{
case
'input'
:
{
return
<
Input
ref=
{
formItemRef
}
onPressEnter=
{
save
}
onBlur=
{
save
}
{
...
formItemProps
}
id=
{
formId
}
/>
return
<
Input
ref=
{
formItemRef
}
onPressEnter=
{
save
}
onBlur=
{
save
}
onChange=
{
handleInputChange
}
{
...
formItemProps
}
id=
{
formId
}
/>
}
case
'select'
:
{
const
{
options
,
...
rest
}
=
formItemProps
...
...
src/pages/transaction/purchaseOrder/orderDetail/components/selectAddress/index.tsx
View file @
1900d374
...
...
@@ -58,12 +58,15 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
})
const
modalRef
=
useRef
<
any
>
({})
const
{
dataSource
,
showMore
}
=
state
const
{
value
,
mutators
,
editable
}
=
props
let
{
value
=
{}
,
mutators
,
editable
}
=
props
const
transformData
=
transformDefaultData
(
dataSource
)
const
showDataSource
=
showMore
?
[...
transformData
].
splice
(
0
,
3
)
:
transformData
if
(
typeof
value
===
'number'
)
{
value
=
dataSource
.
find
(
v
=>
v
.
id
===
value
)
||
{}
}
// 当前选中的id
const
checkedId
=
value
?
value
.
id
:
dataSource
[
0
]?.
id
const
checkedId
=
value
.
id
||
dataSource
[
0
]?.
id
const
handleAdd
=
()
=>
{
setMode
(
'add'
)
...
...
src/pages/transaction/purchaseOrder/orderDetail/index.tsx
View file @
1900d374
import
React
,
{
useRef
,
useState
,
useEffect
}
from
'react'
import
React
,
{
useRef
,
useState
,
useEffect
,
useContext
}
from
'react'
import
{
history
}
from
'umi'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
...
...
@@ -58,8 +58,14 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => {
const
receiverAddressId
=
form
.
getFieldValue
(
'deliveryAddresId'
)
const
sum
=
data
.
reduce
((
prev
,
next
)
=>
prev
+
(
next
.
price
||
0
),
0
)
const
[
freePrice
,
setFreePrice
]
=
useState
<
number
>
(
0
)
useEffect
(()
=>
{
if
(
sum
+
freePrice
)
{
form
.
notify
(
'sumPrice'
,
sum
+
freePrice
)
}
},
[
sum
,
freePrice
])
useEffect
(()
=>
{
// 存在商品 并且有选择收货地址,则开始计算运费
if
(
data
&&
data
.
length
>
0
&&
receiverAddressId
)
{
// 筛选配送方式为物流的商品并且使用了运费模板
...
...
@@ -67,10 +73,10 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => {
if
(
logsiticsDataMaps
.
length
>
0
)
{
PublicApi
.
postLogisticsFreightRemoteAddDetail
({
orderProductList
:
logsiticsDataMaps
.
map
(
v
=>
({
templateId
:
v
.
templateId
,
weight
:
v
.
weight
templateId
:
v
.
logistics
.
templateId
,
weight
:
v
.
logistics
.
weight
})),
receiverAddressId
receiverAddressId
:
typeof
receiverAddressId
===
'object'
?
receiverAddressId
.
id
:
receiverAddressId
},
{
ttl
:
10
*
1000
,
useCache
:
true
,
ctlType
:
'none'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setFreePrice
(
res
.
data
)
...
...
@@ -79,6 +85,8 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => {
}
}
},
[
data
])
return
<
RowStyle
>
<
Col
span=
{
2
}
>
<
div
>
合计金额
</
div
>
...
...
@@ -103,7 +111,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
const
demandRef
=
useRef
<
any
>
({})
const
[
formLoading
,
setFormLoading
]
=
useState
(
false
)
const
update
=
useUpdate
()
const
[
productSumPrice
,
setProductSumPrice
]
=
useState
<
number
>
(
0
)
const
[
initFormValue
,
setInitFormValue
]
=
useState
<
any
>
(
null
)
const
[
paymentColumns
,
paymentComponents
,
paymentSave
]
=
usePaymentInfo
(
addSchemaAction
)
const
{
productAddButton
,
productRef
,
productColumns
,
productComponents
,
...
sectionProps
}
=
useProductTable
(
addSchemaAction
)
...
...
@@ -246,14 +254,26 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
formItem
:
col
.
formItem
,
formItemProps
:
col
.
formItemProps
,
forceEdit
:
col
.
forceEdit
,
handleSave
:
paymentSave
handleSave
:
paymentSave
,
handleChange
:
(
record
,
value
=
100
)
=>
{
const
payPrice
=
(
value
/
100
*
productSumPrice
).
toFixed
(
2
)
const
newData
=
[...
addSchemaAction
.
getFieldValue
(
'paymentInformationResponses'
)];
const
item
=
newData
[
index
];
newData
.
splice
(
index
,
1
,
{
...
item
,
payPrice
});
addSchemaAction
.
setFieldValue
(
'paymentInformationResponses'
,
newData
)
}
}),
};
})
const
providerValue
=
{
detailData
:
initFormValue
,
schemaActions
:
addSchemaAction
schemaActions
:
addSchemaAction
,
productSumPrice
,
setProductSumPrice
}
return
(
<
PageHeaderWrapper
...
...
@@ -289,6 +309,10 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
TheInvoiceList
}
}
effects=
{
(
$
,
ctx
)
=>
{
// 监听商品总价的变更, 此处逻辑需优化
$
(
'sumPrice'
).
subscribe
(
payload
=>
{
setProductSumPrice
(
payload
)
})
$
(
'onFieldInputChange'
,
'orderModel'
).
subscribe
(
state
=>
{
const
{
editable
}
=
state
// 手动切换过下单模式, 需重置受下单模式影响的字段
...
...
src/pages/transaction/purchaseOrder/orderDetail/model/usePaymentInfo.tsx
View file @
1900d374
import
{
paymentInformationColumns
}
from
'../constant'
import
{
PayInfoCell
,
EditableRow
}
from
'../components/payInfoTableCell'
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
import
{
useEffect
,
useState
,
useRef
}
from
'react'
import
{
useEffect
,
useState
,
useRef
,
useContext
}
from
'react'
import
{
PublicApi
}
from
'@/services/api'
import
{
ReadyAddOrderDetailContext
}
from
'../../context'
export
const
usePaymentInfo
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
):
any
=>
{
const
paywayData
=
useRef
<
any
>
({})
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
paymentInformationColumns
)
const
{
productSumPrice
}
=
useContext
(
ReadyAddOrderDetailContext
)
const
components
=
{
body
:
{
row
:
EditableRow
,
...
...
@@ -74,6 +76,8 @@ export const usePaymentInfo = (ctx: ISchemaFormActions | ISchemaFormAsyncActions
...
item
,
...
row
,
});
console
.
log
(
newData
)
console
.
log
(
productSumPrice
)
ctx
.
setFieldValue
(
'paymentInformationResponses'
,
newData
)
resolve
({
item
,
newData
})
})
...
...
src/pages/transaction/purchaseOrder/orderPreview/components/orderProductTable/index.tsx
View file @
1900d374
...
...
@@ -42,10 +42,10 @@ const RowStyle = styled(props => <Row style={{marginTop: 12}} justify='end' {...
const
modalPriceActions
=
createFormActions
()
// 总计金额联动框
export
const
MoneyTotalBox
=
({
dataSource
,
preview
})
=>
{
const
{
orderProductRequests
=
[],
receiverAddressId
}
=
dataSource
||
{}
const
{
orderProductRequests
=
[],
deliveryAddressInfo
,
freight
=
0
}
=
dataSource
||
{}
const
sum
=
orderProductRequests
.
reduce
((
prev
,
next
)
=>
prev
+
parseInt
((
next
.
price
||
0
)),
0
)
// const modelRef = useRef<any>({})
const
[
freePrice
,
setFreePrice
]
=
useState
<
number
>
(
0
)
//
const [freePrice, setFreePrice] = useState<number>(0)
// const handleSetting = () => {
// modelRef.current.setVisible(true)
// }
...
...
@@ -55,26 +55,26 @@ export const MoneyTotalBox = ({ dataSource, preview }) => {
// modelRef.current.setVisible(false)
// }
useEffect
(()
=>
{
// 存在商品 并且有选择收货地址,则开始计算运费
if
(
orderProductRequests
&&
orderProductRequests
.
length
>
0
&&
receiverAddressId
)
{
// 筛选配送方式为物流的商品并且使用了运费模板
const
logsiticsDataMaps
=
orderProductRequests
.
filter
(
v
=>
v
.
logistics
&&
v
.
logistics
.
useTemplate
&&
v
.
logistics
.
deliveryType
===
1
)
if
(
logsiticsDataMaps
.
length
>
0
)
{
PublicApi
.
postLogisticsFreightRemoteAddDetail
({
orderProductList
:
logsiticsDataMaps
.
map
(
v
=>
({
templateId
:
v
.
templateId
,
weight
:
v
.
weight
})),
receiverAddressI
d
},
{
ttl
:
10
*
1000
,
useCache
:
true
,
ctlType
:
'none'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setFreePrice
(
res
.
data
)
}
})
}
}
},
[
orderProductRequests
])
//
useEffect(() => {
//
// 存在商品 并且有选择收货地址,则开始计算运费
// if (orderProductRequests && orderProductRequests.length > 0 && deliveryAddressInfo
) {
//
// 筛选配送方式为物流的商品并且使用了运费模板
//
const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
//
if (logsiticsDataMaps.length > 0) {
//
PublicApi.postLogisticsFreightRemoteAddDetail({
//
orderProductList: logsiticsDataMaps.map(v => ({
//
templateId: v.templateId,
//
weight: v.weight
//
})),
// receiverAddressId: deliveryAddressInfo.i
d
//
}, {ttl: 10 * 1000, useCache: true, ctlType: 'none'}).then(res => {
//
if (res.code === 1000) {
//
setFreePrice(res.data)
//
}
//
})
//
}
//
}
//
}, [orderProductRequests])
return
<
RowStyle
>
<
Col
span=
{
2
}
>
<
div
>
合计金额
</
div
>
...
...
@@ -83,11 +83,11 @@ export const MoneyTotalBox = ({ dataSource, preview }) => {
<
Col
span=
{
2
}
>
{
/* <div>运费 { !preview && <SettingOutlined style={{marginLeft: 8}} onClick={handleSetting}/> }</div> */
}
<
div
>
运费
</
div
>
<
div
>
{
fre
ePrice
}
</
div
>
<
div
>
{
fre
ight
}
</
div
>
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
总计金额
</
div
>
<
div
>
{
sum
+
fre
ePrice
}
</
div
>
<
div
>
{
sum
+
fre
ight
}
</
div
>
</
Col
>
{
/* <ModalForm
modalTitle='设置运费'
...
...
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