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
6a306d92
Commit
6a306d92
authored
Dec 14, 2020
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev
parents
d592c0e2
42b124cb
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
542 additions
and
530 deletions
+542
-530
index.tsx
...ages/transaction/components/createElectronModal/index.tsx
+225
-225
index.tsx
src/pages/transaction/components/orderDeleveRecord/index.tsx
+305
-299
index.tsx
src/pages/transaction/components/orderSaleRecord/index.tsx
+11
-5
useSelfTable.tsx
...tion/saleOrder/addSaleDelevedOrder/model/useSelfTable.tsx
+1
-1
No files found.
src/pages/transaction/components/createElectronModal/index.tsx
View file @
6a306d92
import
React
,
{
useContext
,
useRef
}
from
'react'
import
{
Modal
,
Button
,
message
}
from
'antd'
import
{
createFormActions
,
ISchema
}
from
'@formily/antd'
import
ModalForm
from
'@/components/ModalForm'
import
{
history
}
from
'umi'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
import
{
PublicApi
}
from
'@/services/api'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
OrderDetailContext
}
from
'../../_public/order/context'
import
{
fetchOptions
}
from
'@/pages/balance/common'
export
interface
OrderElectronModalProps
{
currentRef
:
any
}
const
schemaActions
=
createFormActions
()
const
schema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_SUBMIT
:
{
type
:
'object'
,
"x-component"
:
"mega-layout"
,
"x-component-props"
:
{
labelAlign
:
'left'
,
labelCol
:
6
},
properties
:
{
usingElectronicContracts
:
{
type
:
'radio'
,
title
:
'是否使用电子合同'
,
enum
:
[
{
label
:
'是'
,
value
:
1
},
{
label
:
'否'
,
value
:
0
},
],
default
:
1
,
"x-linkages"
:
[
{
type
:
'value:visible'
,
target
:
'contractTemplateId'
,
condition
:
"{{$value === 1}}"
},
{
type
:
'value:visible'
,
target
:
'electronicContractName'
,
condition
:
"{{$value === 1}}"
}
]
},
contractTemplateId
:
{
type
:
'string'
,
enum
:
[],
title
:
'电子合同模板'
,
required
:
true
,
"x-component-props"
:
{
placeholder
:
'请选择电子合同模板'
,
style
:
{
minWidth
:
140
}
},
"x-props"
:
{
addonAfter
:
"{{electronBtn}}"
}
},
electronicContractName
:
{
type
:
'string'
,
"x-component"
:
'children'
,
"x-component-props"
:
{
children
:
""
},
title
:
'电子合同'
,
"x-rules"
:
[
{
message
:
'请先生成电子合同'
,
required
:
true
}
]
},
electronicContractUrl
:
{
type
:
'string'
,
display
:
false
,
},
signatureLogId
:
{
type
:
'string'
,
display
:
false
,
},
state
:
{
type
:
'radio'
,
title
:
'是否审核通过'
,
enum
:
[
{
label
:
'审核通过'
,
value
:
1
},
{
label
:
'审核不通过'
,
value
:
0
},
],
default
:
1
,
"x-linkages"
:
[
{
type
:
'value:visible'
,
target
:
'cause'
,
condition
:
"{{$value === 0}}"
}
]
},
cause
:
{
type
:
'textarea'
,
"x-component-props"
:
{
rows
:
4
,
placeholder
:
'在此输入你的原因, 最多60个汉字'
},
title
:
'审核不通过原因'
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入审核不通过原因'
},
{
limitByte
:
true
,
maxByte
:
30
}
]
}
}
}
}
}
//@todo 尚未完成
const
CreateOrderElectronModal
:
React
.
FC
<
OrderElectronModalProps
>
=
(
props
)
=>
{
const
formRef
=
useRef
<
any
>
({})
const
{
data
}
=
useContext
(
OrderDetailContext
)
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderSignatureSignContractCreate
,
{
ctlType
:
'none'
})
const
{
run
:
submitRun
,
loading
:
submitLoading
}
=
useHttpRequest
(
PublicApi
.
postOrderSubmittedReviewOrder
)
const
createElectron
=
async
()
=>
{
const
contractTemplateId
=
schemaActions
.
getFieldValue
(
'contractTemplateId'
)
if
(
data
.
isElectronicContract
===
1
&&
!
contractTemplateId
)
{
message
.
error
(
'请先选择电子合同模板'
)
return
;
}
const
orderNo
=
data
.
orderNo
const
signMemberId
=
data
.
createMemberId
const
params
=
{
contractTemplateId
,
orderNo
,
signMemberId
}
const
{
code
,
data
:
resData
}
=
await
run
(
params
)
if
(
code
===
1000
)
{
schemaActions
.
setFieldValue
(
'electronicContractName'
,
resData
.
contractName
)
schemaActions
.
setFieldValue
(
'signatureLogId'
,
resData
.
signatureLogId
)
//** */
schemaActions
.
setFieldValue
(
'electronicContractUrl'
,
resData
.
contractUrl
)
schemaActions
.
setFieldState
(
'electronicContractName'
,
state
=>
{
state
.
props
[
"x-component-props"
].
children
=
<
a
href=
{
resData
.
contractUrl
}
download=
{
resData
.
contractName
}
target=
'_blank'
>
{
resData
.
contractName
}
</
a
>
})
}
}
const
electronBtn
=
<
Button
style=
{
{
marginLeft
:
24
}
}
onClick=
{
createElectron
}
loading=
{
loading
}
>
生成电子合同
</
Button
>
const
handleSubmit
=
async
(
value
)
=>
{
const
params
=
{
...
value
,
id
:
data
.
id
,
}
const
{
code
}
=
await
submitRun
(
params
)
if
(
code
===
1000
)
{
history
.
goBack
()
}
}
const
handleConfirm
=
()
=>
{
schemaActions
.
submit
()
}
return
(
<
ModalForm
modalTitle=
'确认提交审核'
previewPlaceholder=
' '
currentRef=
{
props
.
currentRef
}
schema=
{
schema
}
actions=
{
schemaActions
}
onSubmit=
{
handleSubmit
}
confirm=
{
handleConfirm
}
modalProps=
{
{
confirmLoading
:
submitLoading
}
}
expressionScope=
{
{
electronBtn
}
}
effects=
{
async
(
$
,
actions
)
=>
{
// $('onFormInit').subscribe(() =>
{
if
(
data
.
isElectronicContract
===
1
)
{
// useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>
{
// actions.setFieldValue("contractTemplateId", data.contractTemplateId)
//
})
const
res
=
await
PublicApi
.
getOrderSelectListContractTemplate
()
let
options
=
res
.
data
.
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
id
,
}))
actions
.
setFieldState
(
'contractTemplateId'
,
state
=>
{
state
.
props
.
enum
=
options
})
if
(
options
?.
length
&&
options
.
filter
(
_i
=>
_i
.
value
===
data
[
'contractTemplateId'
]).
length
)
{
actions
.
setFieldValue
(
"contractTemplateId"
,
data
[
'contractTemplateId'
])
}
}
else
{
actions
.
setFieldState
(
'usingElectronicContracts'
,
state
=>
{
state
.
value
=
0
state
.
props
[
"x-component-props"
]
=
{
disabled
:
true
}
})
}
$
(
'onFieldValueChange'
,
'contractTemplateId'
).
subscribe
(
state
=>
{
console
.
log
(
state
.
props
)
})
//
})
}
}
/>
)
}
CreateOrderElectronModal
.
defaultProps
=
{}
export
default
CreateOrderElectronModal
import
React
,
{
useContext
,
useRef
}
from
'react'
import
{
Modal
,
Button
,
message
}
from
'antd'
import
{
createFormActions
,
ISchema
}
from
'@formily/antd'
import
ModalForm
from
'@/components/ModalForm'
import
{
history
}
from
'umi'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
import
{
PublicApi
}
from
'@/services/api'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
OrderDetailContext
}
from
'../../_public/order/context'
import
{
fetchOptions
}
from
'@/pages/balance/common'
export
interface
OrderElectronModalProps
{
currentRef
:
any
}
const
schemaActions
=
createFormActions
()
const
schema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_SUBMIT
:
{
type
:
'object'
,
"x-component"
:
"mega-layout"
,
"x-component-props"
:
{
labelAlign
:
'left'
,
labelCol
:
6
},
properties
:
{
usingElectronicContracts
:
{
type
:
'radio'
,
title
:
'是否使用电子合同'
,
enum
:
[
{
label
:
'是'
,
value
:
1
},
{
label
:
'否'
,
value
:
0
},
],
default
:
1
,
"x-linkages"
:
[
{
type
:
'value:visible'
,
target
:
'contractTemplateId'
,
condition
:
"{{$value === 1}}"
},
{
type
:
'value:visible'
,
target
:
'electronicContractName'
,
condition
:
"{{$value === 1}}"
}
]
},
contractTemplateId
:
{
type
:
'string'
,
enum
:
[],
title
:
'电子合同模板'
,
required
:
true
,
"x-component-props"
:
{
placeholder
:
'请选择电子合同模板'
,
style
:
{
minWidth
:
140
}
},
"x-props"
:
{
addonAfter
:
"{{electronBtn}}"
}
},
electronicContractName
:
{
type
:
'string'
,
"x-component"
:
'children'
,
"x-component-props"
:
{
children
:
""
},
title
:
'电子合同'
,
"x-rules"
:
[
{
message
:
'请先生成电子合同'
,
required
:
true
}
]
},
electronicContractUrl
:
{
type
:
'string'
,
display
:
false
,
},
signatureLogId
:
{
type
:
'string'
,
display
:
false
,
},
state
:
{
type
:
'radio'
,
title
:
'是否审核通过'
,
enum
:
[
{
label
:
'审核通过'
,
value
:
1
},
{
label
:
'审核不通过'
,
value
:
0
},
],
default
:
1
,
"x-linkages"
:
[
{
type
:
'value:visible'
,
target
:
'cause'
,
condition
:
"{{$value === 0}}"
}
]
},
cause
:
{
type
:
'textarea'
,
"x-component-props"
:
{
rows
:
4
,
placeholder
:
'在此输入你的原因, 最多60个汉字'
},
title
:
'审核不通过原因'
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入审核不通过原因'
},
{
limitByte
:
true
,
maxByte
:
30
}
]
}
}
}
}
}
//@todo 尚未完成
const
CreateOrderElectronModal
:
React
.
FC
<
OrderElectronModalProps
>
=
(
props
)
=>
{
const
formRef
=
useRef
<
any
>
({})
const
{
data
}
=
useContext
(
OrderDetailContext
)
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderSignatureSignContractCreate
,
{
ctlType
:
'none'
})
const
{
run
:
submitRun
,
loading
:
submitLoading
}
=
useHttpRequest
(
PublicApi
.
postOrderSubmittedReviewOrder
)
const
createElectron
=
async
()
=>
{
const
contractTemplateId
=
schemaActions
.
getFieldValue
(
'contractTemplateId'
)
if
(
data
.
isElectronicContract
===
1
&&
!
contractTemplateId
)
{
message
.
error
(
'请先选择电子合同模板'
)
return
;
}
const
orderNo
=
data
.
orderNo
const
signMemberId
=
data
.
createMemberId
const
params
=
{
contractTemplateId
,
orderNo
,
signMemberId
}
const
{
code
,
data
:
resData
}
=
await
run
(
params
)
if
(
code
===
1000
)
{
schemaActions
.
setFieldValue
(
'electronicContractName'
,
resData
.
contractName
)
schemaActions
.
setFieldValue
(
'signatureLogId'
,
resData
.
signatureLogId
)
//** */
schemaActions
.
setFieldValue
(
'electronicContractUrl'
,
resData
.
contractUrl
)
schemaActions
.
setFieldState
(
'electronicContractName'
,
state
=>
{
state
.
props
[
"x-component-props"
].
children
=
<
a
href=
{
resData
.
contractUrl
}
download=
{
resData
.
contractName
}
target=
'_blank'
>
{
resData
.
contractName
}
</
a
>
})
}
}
const
electronBtn
=
<
Button
style=
{
{
marginLeft
:
24
}
}
onClick=
{
createElectron
}
loading=
{
loading
}
>
生成电子合同
</
Button
>
const
handleSubmit
=
async
(
value
)
=>
{
const
params
=
{
...
value
,
id
:
data
.
id
,
}
const
{
code
}
=
await
submitRun
(
params
)
if
(
code
===
1000
)
{
history
.
goBack
()
}
}
const
handleConfirm
=
()
=>
{
schemaActions
.
submit
()
}
return
(
<
ModalForm
modalTitle=
'确认提交审核'
previewPlaceholder=
' '
currentRef=
{
props
.
currentRef
}
schema=
{
schema
}
actions=
{
schemaActions
}
onSubmit=
{
handleSubmit
}
confirm=
{
handleConfirm
}
modalProps=
{
{
confirmLoading
:
submitLoading
}
}
expressionScope=
{
{
electronBtn
}
}
effects=
{
async
(
$
,
actions
)
=>
{
// $('onFormInit').subscribe(() =>
{
if
(
data
.
isElectronicContract
===
1
)
{
// useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>
{
// actions.setFieldValue("contractTemplateId", data.contractTemplateId)
//
})
const
res
=
await
PublicApi
.
getOrderSelectListContractTemplate
()
let
options
=
res
.
data
.
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
id
,
}))
actions
.
setFieldState
(
'contractTemplateId'
,
state
=>
{
state
.
props
.
enum
=
options
})
if
(
options
?.
length
&&
options
.
filter
(
_i
=>
_i
.
value
===
data
[
'contractTemplateId'
]).
length
)
{
actions
.
setFieldValue
(
"contractTemplateId"
,
data
[
'contractTemplateId'
])
}
}
else
{
actions
.
setFieldState
(
'usingElectronicContracts'
,
state
=>
{
state
.
value
=
0
state
.
props
[
"x-component-props"
]
=
{
disabled
:
true
}
})
}
$
(
'onFieldValueChange'
,
'contractTemplateId'
).
subscribe
(
state
=>
{
console
.
log
(
state
.
props
)
})
//
})
}
}
/>
)
}
CreateOrderElectronModal
.
defaultProps
=
{}
export
default
CreateOrderElectronModal
src/pages/transaction/components/orderDeleveRecord/index.tsx
View file @
6a306d92
import
React
,
{
useContext
,
useRef
}
from
'react'
import
{
Tabs
,
Table
,
Button
}
from
'antd'
import
StatusColors
from
'@/pages/transaction/components/StatusColors'
import
{
formatTimeString
}
from
'@/utils'
import
{
OrderDetailContext
}
from
'../../_public/order/context'
import
MellowCard
from
'@/components/MellowCard'
import
NestTable
from
'@/components/NestTable'
import
{
SaleOrderInsideWorkState
,
DeliverySideState
}
from
'@/constants'
import
{
PublicApi
}
from
'@/services/api'
import
{
history
}
from
'umi'
export
interface
OrderDeleveRecordProps
{}
// 订单发货记录
const
OrderDeleveRecord
:
React
.
FC
<
OrderDeleveRecordProps
>
=
(
props
)
=>
{
const
pathname
=
history
.
location
.
pathname
const
isPreview
=
pathname
.
lastIndexOf
(
'/preview'
)
!==
-
1
// 是否是确认收货页
const
isReceived
=
pathname
.
indexOf
(
'readyReceiveOrder'
)
!==
-
1
// 是否是确认回单页
const
isReturn
=
pathname
.
indexOf
(
'readyConfirmReturnOrder'
)
!==
-
1
// 用于储存已经修改过的订单id
const
dataRef
=
useRef
<
any
>
([])
const
{
data
,
reloadFormData
}
=
useContext
(
OrderDetailContext
)
const
{
orderReceivingStatisticsResponses
,
orderDeliveryDetailsResponses
,
orderModel
}
=
data
const
creditsCommodity
=
(
orderModel
===
24
||
orderModel
===
25
)
// 积分或渠道积分下单模式
const
outOrderCols
:
any
[]
=
[
{
title
:
'商品ID'
,
dataIndex
:
'productId'
,
align
:
'center'
,
key
:
'productId'
},
{
title
:
'商品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
,
key
:
'productName'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
},
{
title
:
'品牌'
,
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
'单位'
,
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
},
{
title
:
creditsCommodity
?
'所需积分'
:
'单价'
,
dataIndex
:
'unitPrice'
,
align
:
'center'
,
key
:
'unitPrice'
,
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'purchaseCount'
,
align
:
'center'
,
key
:
'purchaseCount'
,
},
{
title
:
'含税'
,
dataIndex
:
'no'
,
align
:
'center'
,
key
:
'no'
,
render
:
()
=>
'是'
},
{
title
:
creditsCommodity
?
'所需积分小计'
:
'金额'
,
dataIndex
:
'price'
,
align
:
'center'
,
key
:
'price'
,
},
{
title
:
'已发货'
,
dataIndex
:
'delivered'
,
align
:
'center'
,
key
:
'delivered'
,
},
{
title
:
'未发货'
,
dataIndex
:
'notDelivered'
,
align
:
'center'
,
key
:
'notDelivered'
,
},
{
title
:
'已收货'
,
dataIndex
:
'goodsReceived'
,
align
:
'center'
,
key
:
'goodsReceived'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differenceCount'
,
align
:
'center'
,
key
:
'differenceCount'
,
},
]
const
sideChildrenCols
:
any
[]
=
[
{
title
:
'商品ID'
,
dataIndex
:
'productId'
,
align
:
'center'
,
key
:
'productId'
,
},
{
title
:
'商品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
,
key
:
'productName'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
,
},
{
title
:
'品牌'
,
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
'单位'
,
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
,
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'purchaseCount'
,
align
:
'center'
,
key
:
'purchaseCount'
,
},
{
title
:
'发货数量'
,
dataIndex
:
'deliverGoodsCount'
,
align
:
'center'
,
key
:
'deliverGoodsCount'
,
},
{
title
:
'入库数量'
,
dataIndex
:
'storageCount'
,
align
:
'center'
,
key
:
'storageCount'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differenceCount'
,
align
:
'center'
,
key
:
'differenceCount'
,
},
]
const
sideOrderCols
:
any
[]
=
[
{
title
:
'发货批次'
,
dataIndex
:
'deliveryBatch'
,
align
:
'center'
,
key
:
'deliveryBatch'
},
{
title
:
'发货单号'
,
dataIndex
:
'deliveryNo'
,
align
:
'center'
,
key
:
'deliveryNo'
,
},
{
title
:
'发货时间'
,
dataIndex
:
'deliveryTime'
,
align
:
'center'
,
key
:
'deliveryTime'
,
render
:
text
=>
formatTimeString
(
text
)
},
{
title
:
'物流单号'
,
dataIndex
:
'logisticsNo'
,
align
:
'center'
,
key
:
'logisticsNo'
,
},
{
title
:
'物流公司'
,
dataIndex
:
'logisticsCompanyName'
,
align
:
'center'
,
key
:
'logisticsCompanyName'
},
{
title
:
'入库单号'
,
dataIndex
:
'storageNo'
,
align
:
'center'
,
key
:
'storageNo'
,
},
{
title
:
'入库时间'
,
dataIndex
:
'storageTime'
,
align
:
'center'
,
key
:
'storageTime'
,
render
:
text
=>
formatTimeString
(
text
)
},
{
title
:
'内部状态'
,
dataIndex
:
'interiorState'
,
align
:
'center'
,
key
:
'interiorState'
,
render
:
text
=>
<
StatusColors
type=
'deliveInside'
status=
{
text
}
/>
},
{
title
:
'操作'
,
dataIndex
:
'ctl'
,
align
:
'center'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
/* todo 需根据内部状态判断显示哪个按钮 */
}
{
!
isPreview
&&
isReturn
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
CONFIRM_RECEIPT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleReturn
(
record
)
}
>
确认回单
</
Button
>
}
{
!
isPreview
&&
isReceived
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
WAREHOUSE_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认收货
</
Button
>
}
</>
},
]
// 确认收货
const
handleConfirm
=
async
(
record
)
=>
{
const
params
=
{
orderId
:
record
.
orderId
,
id
:
record
.
id
}
const
{
code
}
=
await
PublicApi
.
postOrderConfirmReceipt
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
}
}
// 确认回单
const
handleReturn
=
async
(
record
)
=>
{
const
params
=
{
orderId
:
record
.
orderId
,
id
:
record
.
id
}
const
{
code
}
=
await
PublicApi
.
postOrderReceiptOrderConfirmed
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
}
}
return
(
<>
{
(
orderReceivingStatisticsResponses
?.
length
>
0
||
orderDeliveryDetailsResponses
?.
length
>
0
)
&&
<
MellowCard
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
id=
'deleveBox'
>
<
Tabs
defaultActiveKey=
"2"
>
{
orderReceivingStatisticsResponses
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收货统计'
key=
"1"
>
<
Table
columns=
{
outOrderCols
}
dataSource=
{
orderReceivingStatisticsResponses
}
pagination=
{
false
}
rowKey=
"productId"
/>
</
Tabs
.
TabPane
>
}
{
orderDeliveryDetailsResponses
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收货明细'
key=
"2"
>
<
NestTable
NestColumns=
{
[
sideOrderCols
,
sideChildrenCols
]
}
rowKey=
'id'
childrenDataKey=
'orderDeliveryProducts'
dataSource=
{
orderDeliveryDetailsResponses
}
/>
</
Tabs
.
TabPane
>
}
</
Tabs
>
</
MellowCard
>
}
</>
)
}
OrderDeleveRecord
.
defaultProps
=
{}
export
default
OrderDeleveRecord
\ No newline at end of file
import
React
,
{
useContext
,
useRef
,
useState
}
from
'react'
import
{
Tabs
,
Table
,
Button
}
from
'antd'
import
StatusColors
from
'@/pages/transaction/components/StatusColors'
import
{
formatTimeString
}
from
'@/utils'
import
{
OrderDetailContext
}
from
'../../_public/order/context'
import
MellowCard
from
'@/components/MellowCard'
import
NestTable
from
'@/components/NestTable'
import
{
SaleOrderInsideWorkState
,
DeliverySideState
}
from
'@/constants'
import
{
PublicApi
}
from
'@/services/api'
import
{
history
}
from
'umi'
export
interface
OrderDeleveRecordProps
{}
// 订单发货记录
const
OrderDeleveRecord
:
React
.
FC
<
OrderDeleveRecordProps
>
=
(
props
)
=>
{
const
pathname
=
history
.
location
.
pathname
const
isPreview
=
pathname
.
lastIndexOf
(
'/preview'
)
!==
-
1
// 是否是确认收货页
const
isReceived
=
pathname
.
indexOf
(
'readyReceiveOrder'
)
!==
-
1
// 是否是确认回单页
const
isReturn
=
pathname
.
indexOf
(
'readyConfirmReturnOrder'
)
!==
-
1
// 用于储存已经修改过的订单id
const
dataRef
=
useRef
<
any
>
([])
const
[
disabled
,
setDisabled
]
=
useState
<
boolean
>
(
false
)
const
{
data
,
reloadFormData
}
=
useContext
(
OrderDetailContext
)
const
{
orderReceivingStatisticsResponses
,
orderDeliveryDetailsResponses
,
orderModel
}
=
data
const
creditsCommodity
=
(
orderModel
===
24
||
orderModel
===
25
)
// 积分或渠道积分下单模式
const
outOrderCols
:
any
[]
=
[
{
title
:
'商品ID'
,
dataIndex
:
'productId'
,
align
:
'center'
,
key
:
'productId'
},
{
title
:
'商品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
,
key
:
'productName'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
},
{
title
:
'品牌'
,
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
'单位'
,
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
},
{
title
:
creditsCommodity
?
'所需积分'
:
'单价'
,
dataIndex
:
'unitPrice'
,
align
:
'center'
,
key
:
'unitPrice'
,
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'purchaseCount'
,
align
:
'center'
,
key
:
'purchaseCount'
,
},
{
title
:
'含税'
,
dataIndex
:
'no'
,
align
:
'center'
,
key
:
'no'
,
render
:
()
=>
'是'
},
{
title
:
creditsCommodity
?
'所需积分小计'
:
'金额'
,
dataIndex
:
'price'
,
align
:
'center'
,
key
:
'price'
,
},
{
title
:
'已发货'
,
dataIndex
:
'delivered'
,
align
:
'center'
,
key
:
'delivered'
,
},
{
title
:
'未发货'
,
dataIndex
:
'notDelivered'
,
align
:
'center'
,
key
:
'notDelivered'
,
},
{
title
:
'已收货'
,
dataIndex
:
'goodsReceived'
,
align
:
'center'
,
key
:
'goodsReceived'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differenceCount'
,
align
:
'center'
,
key
:
'differenceCount'
,
},
]
const
sideChildrenCols
:
any
[]
=
[
{
title
:
'商品ID'
,
dataIndex
:
'productId'
,
align
:
'center'
,
key
:
'productId'
,
},
{
title
:
'商品名称'
,
dataIndex
:
'productName'
,
align
:
'center'
,
key
:
'productName'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
,
},
{
title
:
'品牌'
,
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
'单位'
,
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
,
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'purchaseCount'
,
align
:
'center'
,
key
:
'purchaseCount'
,
},
{
title
:
'发货数量'
,
dataIndex
:
'deliverGoodsCount'
,
align
:
'center'
,
key
:
'deliverGoodsCount'
,
},
{
title
:
'入库数量'
,
dataIndex
:
'storageCount'
,
align
:
'center'
,
key
:
'storageCount'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differenceCount'
,
align
:
'center'
,
key
:
'differenceCount'
,
},
]
const
sideOrderCols
:
any
[]
=
[
{
title
:
'发货批次'
,
dataIndex
:
'deliveryBatch'
,
align
:
'center'
,
key
:
'deliveryBatch'
},
{
title
:
'发货单号'
,
dataIndex
:
'deliveryNo'
,
align
:
'center'
,
key
:
'deliveryNo'
,
},
{
title
:
'发货时间'
,
dataIndex
:
'deliveryTime'
,
align
:
'center'
,
key
:
'deliveryTime'
,
render
:
text
=>
formatTimeString
(
text
)
},
{
title
:
'物流单号'
,
dataIndex
:
'logisticsNo'
,
align
:
'center'
,
key
:
'logisticsNo'
,
},
{
title
:
'物流公司'
,
dataIndex
:
'logisticsCompanyName'
,
align
:
'center'
,
key
:
'logisticsCompanyName'
},
{
title
:
'入库单号'
,
dataIndex
:
'storageNo'
,
align
:
'center'
,
key
:
'storageNo'
,
},
{
title
:
'入库时间'
,
dataIndex
:
'storageTime'
,
align
:
'center'
,
key
:
'storageTime'
,
render
:
text
=>
formatTimeString
(
text
)
},
{
title
:
'内部状态'
,
dataIndex
:
'interiorState'
,
align
:
'center'
,
key
:
'interiorState'
,
render
:
text
=>
<
StatusColors
type=
'deliveInside'
status=
{
text
}
/>
},
{
title
:
'操作'
,
dataIndex
:
'ctl'
,
align
:
'center'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
/* todo 需根据内部状态判断显示哪个按钮 */
}
{
!
isPreview
&&
isReturn
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
CONFIRM_RECEIPT_ORDER
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleReturn
(
record
)
}
>
确认回单
</
Button
>
}
{
!
isPreview
&&
isReceived
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
WAREHOUSE_ORDER
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认收货
</
Button
>
}
</>
},
]
// 确认收货
const
handleConfirm
=
async
(
record
)
=>
{
const
params
=
{
orderId
:
record
.
orderId
,
id
:
record
.
id
}
setDisabled
(
true
)
const
{
code
}
=
await
PublicApi
.
postOrderConfirmReceipt
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
setDisabled
(
false
)
}
else
{
setDisabled
(
false
)
}
}
// 确认回单
const
handleReturn
=
async
(
record
)
=>
{
const
params
=
{
orderId
:
record
.
orderId
,
id
:
record
.
id
}
setDisabled
(
true
)
const
{
code
}
=
await
PublicApi
.
postOrderReceiptOrderConfirmed
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
setDisabled
(
false
)
}
else
{
setDisabled
(
false
)
}
}
return
(
<>
{
(
orderReceivingStatisticsResponses
?.
length
>
0
||
orderDeliveryDetailsResponses
?.
length
>
0
)
&&
<
MellowCard
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
id=
'deleveBox'
>
<
Tabs
defaultActiveKey=
"2"
>
{
orderReceivingStatisticsResponses
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收货统计'
key=
"1"
>
<
Table
columns=
{
outOrderCols
}
dataSource=
{
orderReceivingStatisticsResponses
}
pagination=
{
false
}
rowKey=
"productId"
/>
</
Tabs
.
TabPane
>
}
{
orderDeliveryDetailsResponses
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收货明细'
key=
"2"
>
<
NestTable
NestColumns=
{
[
sideOrderCols
,
sideChildrenCols
]
}
rowKey=
'id'
childrenDataKey=
'orderDeliveryProducts'
dataSource=
{
orderDeliveryDetailsResponses
}
/>
</
Tabs
.
TabPane
>
}
</
Tabs
>
</
MellowCard
>
}
</>
)
}
OrderDeleveRecord
.
defaultProps
=
{}
export
default
OrderDeleveRecord
src/pages/transaction/components/orderSaleRecord/index.tsx
View file @
6a306d92
...
...
@@ -25,7 +25,7 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
const
isDeleved
=
pathname
.
indexOf
(
'readyConfirmDelevedOrder'
)
!==
-
1
// 是否是确认回单页
const
isReturn
=
pathname
.
indexOf
(
'readyConfirmReturnOrder'
)
!==
-
1
const
[
disabled
,
setDisabled
]
=
useState
<
boolean
>
(
false
)
// 用于储存已经修改过的订单id
const
dataRef
=
useRef
<
any
>
([])
const
{
data
,
reloadFormData
}
=
useContext
(
OrderDetailContext
)
...
...
@@ -230,8 +230,8 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
align
:
'center'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
!
isPreview
&&
isReturn
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
CONFIRM_RECEIPT_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleReturn
(
record
)
}
>
确认回单
</
Button
>
}
{
!
isPreview
&&
isDeleved
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
ADD_LOGISTICS_ORDER
&&
<
Button
type=
'link'
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认发货
</
Button
>
}
{
!
isPreview
&&
isReturn
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
CONFIRM_RECEIPT_ORDER
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleReturn
(
record
)
}
>
确认回单
</
Button
>
}
{
!
isPreview
&&
isDeleved
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
ADD_LOGISTICS_ORDER
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认发货
</
Button
>
}
</>
},
]
...
...
@@ -257,11 +257,14 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
orderId
:
record
.
orderId
,
id
:
record
.
id
}
setDisabled
(
true
)
const
{
code
}
=
await
PublicApi
.
postOrderConfirmShipmentOrder
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
setDisabled
(
false
)
}
else
{
setDisabled
(
false
)
}
}
...
...
@@ -271,11 +274,14 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
orderId
:
record
.
orderId
,
id
:
record
.
id
}
setDisabled
(
true
)
const
{
code
}
=
await
PublicApi
.
postOrderReceiptOrderConfirmed
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
setDisabled
(
false
)
}
else
{
setDisabled
(
false
)
}
}
...
...
src/pages/transaction/saleOrder/addSaleDelevedOrder/model/useSelfTable.tsx
View file @
6a306d92
...
...
@@ -113,7 +113,7 @@ export const useSelfTable = () => {
const
handleConfirm
=
async
(
record
)
=>
{
const
modal
=
Modal
.
confirm
({
title
:
'确认审核操作'
,
content
:
`是否确认审核发货单号为
${
record
.
invoiceNumber
}
的销售发货单?`
,
content
:
`是否确认审核发货单号为
${
record
.
deliverNo
}
的销售发货单?`
,
onOk
:
async
()
=>
{
const
{
code
}
=
await
PublicApi
.
postOrderAuditSalesInvoiceOrder
({
id
:
record
.
orderDeliveryDetailsId
,
...
...
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