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
f0e03866
Commit
f0e03866
authored
Dec 18, 2020
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'test' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into test
parents
64f9b519
c7d00914
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
23 additions
and
2303 deletions
+23
-2303
index.tsx
src/pages/handling/assign/detail/index.tsx
+10
-5
index.tsx
src/pages/logistics/addLogistics/index.tsx
+6
-6
confirmModal.tsx
src/pages/logistics/components/confirmModal.tsx
+3
-0
addCompany.tsx
src/pages/logistics/list/addCompany.tsx
+1
-0
ModalTableOrder.tsx
...ics/logisticsSubmit/detail/components/ModalTableOrder.tsx
+0
-290
basicInfo.tsx
...logistics/logisticsSubmit/detail/components/basicInfo.tsx
+0
-338
goods.tsx
...ges/logistics/logisticsSubmit/detail/components/goods.tsx
+0
-319
index.less
...es/logistics/logisticsSubmit/detail/components/index.less
+0
-74
table.tsx
...ges/logistics/logisticsSubmit/detail/components/table.tsx
+0
-38
index.tsx
src/pages/logistics/logisticsSubmit/detail/index.tsx
+0
-238
toOrderSubmitDetail.tsx
src/pages/logistics/logisticsSubmit/toOrderSubmitDetail.tsx
+0
-992
index.tsx
src/pages/transaction/inquiryQuote/schema/index.tsx
+2
-2
pendingReview.tsx
src/pages/transaction/inquiryQuote/schema/pendingReview.tsx
+1
-1
No files found.
src/pages/handling/assign/detail/index.tsx
View file @
f0e03866
...
...
@@ -288,7 +288,7 @@ const Detail: React.FC<{}> = () => {
const
handleManualDeliver
=
(
value
)
=>
{
const
postData
=
{
produceNoticeOrderId
:
id
,
manualDeliver
BO
:
value
,
manualDeliver
:
value
,
}
PublicApi
.
postEnhanceProcessToBeDeliveryManualDeliver
(
postData
)
.
then
(({
data
,
code
})
=>
{
...
...
@@ -354,6 +354,11 @@ const Detail: React.FC<{}> = () => {
text=
{
info
.
innerStatusName
}
></
Badge
>
</
Descriptions
.
Item
>
</
Descriptions
>
{
info
?.
cause
?
<
div
style=
{
{
marginLeft
:
'32px'
}
}
>
不通过原因:
{
info
.
cause
}
</
div
>
:
null
}
</
Col
>
<
Col
span=
{
4
}
>
{
...
...
@@ -376,10 +381,10 @@ const Detail: React.FC<{}> = () => {
<
DeliverGood
mode=
"view"
deliveryType=
{
info
.
deliveryType
}
deliveryAddress=
{
info
.
manualDeliver
BO
?.
deliveryAddress
}
deliveryTime=
{
info
.
manualDeliver
BO
?.
deliveryTime
}
deliveryNo=
{
info
.
manualDeliver
BO
?.
deliveryNo
}
logisticsName=
{
info
.
manualDeliver
BO
?.
logisticsName
}
deliveryAddress=
{
info
.
manualDeliver
?.
deliveryAddress
}
deliveryTime=
{
info
.
manualDeliver
?.
deliveryTime
}
deliveryNo=
{
info
.
manualDeliver
?.
deliveryNo
}
logisticsName=
{
info
.
manualDeliver
?.
logisticsName
}
handleManualReceiver=
{
handleManualReceiver
}
>
<
Button
type=
"primary"
>
确认手工收货
</
Button
>
...
...
src/pages/logistics/addLogistics/index.tsx
View file @
f0e03866
...
...
@@ -186,7 +186,7 @@ const AddLogistics: React.FC<{}> = () => {
relevanceOrderCode
:
res
.
data
.
orderNo
,
voucherTime
:
res
.
data
.
transactionTime
,
externalState
:
res
.
data
.
state
,
shipmentOrderId
:
res
.
data
.
i
nvoicesTypeI
d
,
shipmentOrderId
:
res
.
data
.
id
,
relevanceOrderId
:
res
.
data
.
relevanceInvoicesId
,
}
form
.
setFieldsValue
(
obj
);
...
...
@@ -332,7 +332,7 @@ const AddLogistics: React.FC<{}> = () => {
case
1
:
case
2
:
case
3
:
PublicApi
.
getWarehouseInvoicesProductList
({
...
params
,
invoicesId
:
i
d
}).
then
((
res
:
any
)
=>
{
PublicApi
.
getWarehouseInvoicesProductList
({
...
params
,
invoicesId
:
query
.
shipmentOrderI
d
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
res
.
data
.
data
.
forEach
(
item
=>
{
item
.
category
=
item
.
categoryName
...
...
@@ -344,21 +344,21 @@ const AddLogistics: React.FC<{}> = () => {
})
break
;
case
4
:
PublicApi
.
getAsReplaceGoodsPageReturnCommodityByLogistics
({
...
params
,
dataId
:
i
d
}).
then
(
res
=>
{
PublicApi
.
getAsReplaceGoodsPageReturnCommodityByLogistics
({
...
params
,
dataId
:
query
.
relevanceOrderI
d
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
break
;
case
5
:
PublicApi
.
getAsReplaceGoodsPageReplaceCommodityByLogistics
({
...
params
,
dataId
:
id
}).
then
(
res
=>
{
PublicApi
.
getAsReplaceGoodsPageReplaceCommodityByLogistics
({
...
params
,
dataId
:
query
.
relevanceOrderId
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
break
;
case
6
:
PublicApi
.
getAsReturnGoodsPageCommodityByLogistics
({
...
params
,
dataId
:
i
d
}).
then
(
res
=>
{
PublicApi
.
getAsReturnGoodsPageCommodityByLogistics
({
...
params
,
dataId
:
query
.
relevanceOrderI
d
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
...
...
@@ -695,7 +695,7 @@ const AddLogistics: React.FC<{}> = () => {
}
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
label=
"单据时间"
name=
'voucherTime'
><
span
>
{
query
.
voucherTime
}
</
span
></
Form
.
Item
>
<
Form
.
Item
label=
"单据时间"
name=
'voucherTime'
><
span
>
{
moment
(
query
.
voucherTime
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
}
</
span
></
Form
.
Item
>
<
Form
.
Item
label=
"外部状态"
name=
'externalState'
><
span
>
{
query
.
externalState
}
</
span
></
Form
.
Item
>
</
Form
>
</
TabPane
>
...
...
src/pages/logistics/components/confirmModal.tsx
View file @
f0e03866
...
...
@@ -32,6 +32,9 @@ const comfirmDialog: React.FC<Params> = (props) => {
if
(
res
.
code
===
1000
)
{
props
.
onOK
()
}
}).
catch
(
error
=>
{
console
.
log
(
error
)
props
.
onOK
()
})
}
...
...
src/pages/logistics/list/addCompany.tsx
View file @
f0e03866
...
...
@@ -180,6 +180,7 @@ const company: React.FC<parmas> = (props) => {
let
{
memberId
,
roleId
,
name
}
=
selectRow
menuForm
.
setFieldsValue
({
companyMemberId
:
memberId
,
companyRoleId
:
roleId
,
name
:
name
})
setsVisible
(
false
)
...
...
src/pages/logistics/logisticsSubmit/detail/components/ModalTableOrder.tsx
deleted
100644 → 0
View file @
64f9b519
import
React
,
{
ReactText
,
useRef
,
useEffect
,
useLayoutEffect
,
useState
}
from
'react'
;
import
{
StandardTable
}
from
'god'
;
import
{
ISchema
}
from
'@formily/antd'
;
import
NestTable
from
'@/components/NestTable'
;
import
{
IStandardTableProps
}
from
'god/dist/src/standard-table'
;
import
{
Row
,
Col
,
Modal
,
Form
,
Radio
}
from
'antd'
;
import
Search
from
'@/components//NiceForm/components/Search'
;
import
SearchSelect
from
'@/components//NiceForm/components/SearchSelect'
;
import
Submit
from
'@/components//NiceForm/components/Submit'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
DateSelect
from
'@/components//NiceForm/components/DateSelect'
;
import
{
PublicApi
}
from
'@/services/api'
;
export
interface
ModalTableProps
extends
IStandardTableProps
<
any
>
{
width
?:
number
,
confirm
?:
Function
,
cancel
?(),
visible
?:
boolean
,
resetModal
?:
object
,
useNestTable
?:
boolean
,
// 是否使用嵌套表格
nestColumns
?:
any
[],
nestTableProps
?:
any
,
// fix: 新增参数, 为true时每次开启弹窗都会重新reload接口
forceRender
?:
boolean
,
invoicesNo
?:
string
,
// 对应订单号/售后单号
relevanceType
?:
number
,
//对应单据类型
}
export
const
logisticsDeliverySearchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
invoicesNo
:
{
type
:
'string'
,
'x-component'
:
'ModalSearch'
,
'x-component-props'
:
{
placeholder
:
'单据号'
,
align
:
'flex-left'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
,
style
:
{
marginRight
:
0
}
},
colStyle
:
{
marginTop
:
20
,
},
},
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'会员名称'
,
style
:
{
width
:
160
}
}
},
invoicesAbstract
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'单据摘要'
,
style
:
{
width
:
160
}
}
},
"[startTransactionTime,endTransactionTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'单据时间(全部)'
,
}
},
submit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
export
const
otherSearchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
applyNo
:
{
type
:
'string'
,
'x-component'
:
'ModalSearch'
,
'x-component-props'
:
{
placeholder
:
'申请单号'
,
align
:
'flex-left'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
,
style
:
{
marginRight
:
0
}
},
colStyle
:
{
marginTop
:
20
,
},
},
properties
:
{
memberName
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'会员名称'
,
style
:
{
width
:
160
}
}
},
applyAbstract
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'单据摘要'
,
style
:
{
width
:
160
}
}
},
"[startTime,endTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'单据时间(全部)'
,
}
},
submit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
const
ModalTableOrder
:
React
.
FC
<
ModalTableProps
>
=
(
props
)
=>
{
const
{
width
=
704
,
confirm
,
cancel
,
visible
,
currentRef
,
resetModal
,
forceRender
,
useNestTable
=
false
,
nestColumns
,
nestTableProps
,
invoicesNo
,
relevanceType
=
1
,
...
resetTable
}
=
props
const
selfRef
=
currentRef
||
useRef
<
any
>
({})
useEffect
(()
=>
{
if
(
visible
&&
forceRender
)
{
// 重新开启时需reload接口
// fix: 去掉自动reload接口, 防止重复请求
// fix: 新增forceRender接口, 用于控制弹窗是否需要reload
selfRef
.
current
.
reload
&&
selfRef
.
current
.
reload
()
}
else
{
selfRef
.
current
.
resetField
&&
selfRef
.
current
.
resetField
({
validate
:
false
})
}
},
[
visible
])
const
[
form
]
=
Form
.
useForm
();
const
[
type
,
setType
]
=
useState
<
number
>
(
1
);
const
[
modalTitle
,
setmodalTitle
]
=
useState
<
string
>
(
'订单'
);
useEffect
(()
=>
{
console
.
log
(
relevanceType
)
setType
(
relevanceType
)
},
[
relevanceType
])
useEffect
(()
=>
{
form
.
setFieldsValue
({
radio
:
type
})
},
[
type
])
const
fetchData
=
(
parmas
?:
any
)
=>
{
return
new
Promise
(
resolve
=>
{
switch
(
type
)
{
case
1
:
PublicApi
.
getOrderLogisticsOrderList
({...
parmas
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
break
;
case
2
:
PublicApi
.
getAsReplaceGoodsPageToBeAddReturnByLogistics
({...
parmas
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
break
;
case
3
:
PublicApi
.
getAsReplaceGoodsPageToBeAddReplaceByLogistics
({...
parmas
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
break
;
case
4
:
PublicApi
.
getAsReturnGoodsPageByLogistics
({...
parmas
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
break
;
}
})
}
return
(
<
Modal
width=
{
width
}
title=
{
modalTitle
}
onOk=
{
()
=>
confirm
(
type
)
}
onCancel=
{
cancel
}
visible=
{
visible
}
{
...
resetModal
}
maskClosable=
{
false
}
>
{
useNestTable
?
(
<
NestTable
NestColumns=
{
nestColumns
}
className=
"common_tb"
rowClassName=
{
(
_
,
index
)
=>
(
index
%
2
)
===
0
&&
"tb_bg"
}
{
...
nestTableProps
}
/>
)
:
(
<
StandardTable
tableType=
'small'
currentRef=
{
selfRef
}
fetchTableData=
{
(
params
)
=>
fetchData
(
params
)
}
formRender=
{
(
child
,
ps
)
=>
<
Row
justify=
'space-between'
style=
{
{
marginBottom
:
16
}
}
>
<
Col
span=
{
18
}
style=
{
{
zIndex
:
99
}
}
>
<
Form
form=
{
form
}
>
<
Form
.
Item
name=
'radio'
label=
'单据选择'
>
<
Radio
.
Group
onChange=
{
(
e
)
=>
{
setType
(
e
.
target
.
value
);
selfRef
.
current
.
reload
();
}
}
>
<
Radio
value=
{
1
}
>
订单
</
Radio
>
<
Radio
value=
{
2
}
>
换货申请单(退货发货)
</
Radio
>
<
Radio
value=
{
3
}
>
换货申请单(换货发货)
</
Radio
>
<
Radio
value=
{
4
}
>
退货申请单
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
</
Form
>
</
Col
>
<
Col
style=
{
{
marginTop
:
4
}
}
>
{
ps
}
</
Col
>
<
Col
span=
{
18
}
style=
{
{
zIndex
:
99
}
}
>
{
child
}
</
Col
>
</
Row
>
}
formilyProps=
{
{
ctx
:
{
schema
:
type
===
1
?
logisticsDeliverySearchSchema
:
otherSearchSchema
,
components
:
{
ModalSearch
:
Search
,
SearchSelect
,
Submit
,
DateSelect
},
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
type
===
1
?
'invoicesNo'
:
'applyNo'
,
FORM_FILTER_PATH
,
);
}
}
}
}
{
...
resetTable
}
/>
)
}
</
Modal
>
)
}
ModalTableOrder
.
defaultProps
=
{}
export
default
ModalTableOrder
src/pages/logistics/logisticsSubmit/detail/components/basicInfo.tsx
deleted
100644 → 0
View file @
64f9b519
/**
* @Name: 新增编辑 - 待提交物流单 - 基本信息
* @Date: 2020-11-06
* @Author: HJX
*/
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Form
,
Input
,
Select
,
Button
}
from
'antd'
;
import
styles
from
'./index.less'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
LinkOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
ModalTable
from
'@/components/ModalTable'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
ModalTableOrder
from
'./ModalTableOrder'
;
const
{
Search
}
=
Input
;
const
{
Option
}
=
Select
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
export
interface
interfaceinfo
{
set
?:
any
,
currentRef
?:
any
,
onGet
?:
Function
,
onBadge
?:
Function
,
addId
?:
Number
,
}
const
BasicInfo
:
React
.
FC
<
interfaceinfo
>
=
(
props
)
=>
{
const
{
set
,
currentRef
,
onGet
,
onBadge
,
addId
}
=
props
;
const
[
listcompany
,
setlistcompany
]
=
useState
<
any
>
([]);
//物流服务商
const
[
shipperaddress
,
setshipperaddress
]
=
useState
<
any
>
([]);
//发货地址
const
[
shippingvisible
,
setshippingvisible
]
=
useState
<
boolean
>
(
false
);
const
[
invoicesvisible
,
setinvoicesvisible
]
=
useState
<
boolean
>
(
false
);
const
[
shippingRowSelection
,
shippingRowCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
type
:
'radio'
});
const
[
invoicesRowSelection
,
invoicesRowCtl
]
=
useRowSelectionTable
({
customKey
:
'id'
,
type
:
'radio'
});
const
[
form
]
=
Form
.
useForm
();
//获取物流服务商
const
getListCompany
=
()
=>
{
const
company
=
new
Promise
(
resolve
=>
{
PublicApi
.
getLogisticsSelectListMemberCompany
({}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
return
company
}
//获取发货地址
const
getShipperAddress
=
()
=>
{
const
address
=
new
Promise
(
resolve
=>
{
PublicApi
.
getLogisticsSelectListShipperAddress
().
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
return
address
}
useEffect
(()
=>
{
Promise
.
all
([
getListCompany
(),
getShipperAddress
()]).
then
(
res
=>
{
setlistcompany
(
res
[
0
]);
setshipperaddress
(
res
[
1
]);
})
},
[])
// 对应发货单 columns
const
shippingColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'发货单号'
,
dataIndex
:
'invoicesNo'
,
},
{
title
:
'对应订单号'
,
dataIndex
:
'orderNo'
,
},
{
title
:
'单据摘要'
,
dataIndex
:
'invoicesAbstract'
,
},
{
title
:
'对应仓库'
,
dataIndex
:
'inventory'
,
},
{
title
:
'单据类型'
,
dataIndex
:
'invoicesType'
,
},
{
title
:
'单据时间'
,
dataIndex
:
'transactionTime'
,
render
:
(
text
:
any
)
=>
<>
{
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
}
</>
}
]
// 对应订单 columns
const
invoicesColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'单据号'
,
dataIndex
:
'orderNo'
,
},
{
title
:
'单据摘要'
,
dataIndex
:
'orderThe'
,
},
{
title
:
'会员名称'
,
dataIndex
:
'supplyMembersName'
,
},
{
title
:
'单据时间'
,
dataIndex
:
'createTime'
,
render
:
(
text
:
any
)
=>
<>
{
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
}
</>
}
]
// 确定
const
handleShipping
=
()
=>
{
const
selectRow
=
shippingRowCtl
.
selectRow
[
0
]
console
.
log
(
selectRow
)
form
.
setFieldsValue
({
shipmentOrderCode
:
selectRow
.
invoicesNo
})
onGet
(
selectRow
,
2
);
setshippingvisible
(
false
);
}
const
handleInvoices
=
(
type
:
number
)
=>
{
const
selectRow
=
invoicesRowCtl
.
selectRow
[
0
]
form
.
setFieldsValue
({
relevanceOrderCode
:
selectRow
.
orderNo
})
onGet
(
selectRow
,
3
,
type
);
setinvoicesvisible
(
false
);
}
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
resolve
({
state
:
true
,
name
:
'basicInfo'
,
data
:
{
digest
:
res
.
digest
,
companyId
:
res
.
companyId
,
shipmentOrderCode
:
res
.
shipmentOrderCode
,
invoicesNo
:
res
.
invoicesNo
,
shipperAddressId
:
res
.
shipperAddressId
,
companyName
:
set
.
companyName
,
shipperFullAddress
:
set
.
shipperFullAddress
,
receiverMemberId
:
set
.
receiverMemberId
,
receiverMemberName
:
set
.
receiverMemberName
,
receiverFullAddress
:
set
.
receiverFullAddress
,
receiverName
:
set
.
receiverName
,
receiverPhone
:
set
.
receiverPhone
,
}
})
onBadge
(
0
,
0
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
0
)
}
})
})
}
})
/** 选择发货单 列表数据 */
const
fetchShippingData
=
(
params
:
any
)
=>
{
return
new
Promise
(
resolve
=>
{
PublicApi
.
getWarehouseInvoicesList
({
...
params
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
}
/**编辑是调用选择对应发货单 */
const
getShipmentOrder
=
()
=>
{
const
params
=
{
invoicesNo
:
set
.
shipmentOrderCode
,
invoicesType
:
''
,
invoicesAbstract
:
''
,
memberName
:
''
,
inventoryId
:
''
,
startTransactionTime
:
''
,
endTransactionTime
:
''
,
orderNo
:
''
,
state
:
''
,
current
:
'1'
,
pageSize
:
'1'
}
new
Promise
(
resolve
=>
{
PublicApi
.
getWarehouseInvoicesList
({
...
params
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
}).
then
((
res
:
any
)
=>
{
shippingRowCtl
.
setSelectRow
(
res
.
data
);
shippingRowCtl
.
setSelectedRowKeys
(
res
.
data
.
map
(
v
=>
v
.
id
));
onGet
(
res
.
data
[
0
],
2
);
})
}
/** 编辑是调用对应订单号/售后单 */
const
getInvoicesOrder
=
(
type
:
number
)
=>
{
switch
(
type
)
{
case
1
:
PublicApi
.
getOrderLogisticsOrderList
({
orderNo
:
set
.
invoicesNo
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
}
=
res
.
data
;
invoicesRowCtl
.
setSelectRow
(
data
);
invoicesRowCtl
.
setSelectedRowKeys
(
data
.
map
(
v
=>
v
.
id
));
onGet
(
data
[
0
],
3
);
}
})
break
;
case
2
:
break
;
case
3
:
break
;
case
4
:
break
;
}
}
useEffect
(()
=>
{
/**编辑回显数据 */
if
(
set
.
id
)
{
form
.
setFieldsValue
({
digest
:
set
.
digest
,
companyId
:
set
.
companyId
,
shipmentOrderCode
:
set
.
shipmentOrderCode
,
relevanceOrderCode
:
set
.
relevanceOrderCode
,
shipperAddressId
:
set
.
shipperAddressId
})
if
(
set
.
shipmentOrderCode
)
{
getShipmentOrder
()
}
if
(
set
.
relevanceOrderCode
)
{
getInvoicesOrder
(
Number
(
set
.
relevanceType
))
}
}
if
(
addId
)
{
console
.
log
(
set
,
960
)
form
.
setFieldsValue
({
shipmentOrderCode
:
set
.
shipmentOrderCode
,
relevanceOrderCode
:
set
.
relevanceOrderCode
,
})
}
},
[
set
.
id
,
addId
])
return
(
<>
<
Form
{
...
layout
}
form=
{
form
}
className=
{
styles
.
revise_style
}
>
<
Form
.
Item
label=
"单据摘要"
name=
"digest"
rules=
{
[{
required
:
true
,
message
:
'请输入单据摘要'
}]
}
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"物流服务商"
name=
"companyId"
rules=
{
[{
required
:
true
,
message
:
'请选择流服务商'
}]
}
>
<
Select
allowClear
onChange=
{
(
value
,
option
)
=>
onGet
(
option
,
1
)
}
>
{
listcompany
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Option
roleid=
{
item
.
roleId
}
memberid=
{
item
.
memberId
}
key=
{
item
.
id
}
value=
{
item
.
id
}
>
{
item
.
name
}
</
Option
>
))
}
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
label=
"物流单号"
name=
'receiverName1'
><
span
></
span
></
Form
.
Item
>
<
Form
.
Item
label=
'对应发货单号'
>
<
Form
.
Item
noStyle
name=
'shipmentOrderCode'
>
<
Search
disabled=
{
!!
addId
}
readOnly
enterButton=
{
<><
LinkOutlined
/>
选择
</>
}
onSearch=
{
()
=>
setshippingvisible
(
true
)
}
/>
</
Form
.
Item
>
{
shippingRowCtl
.
selectRow
.
length
>
0
&&
<
Button
type=
'link'
>
查看单号详情
</
Button
>
}
</
Form
.
Item
>
<
Form
.
Item
label=
'对应订单号/售后单'
>
<
Form
.
Item
noStyle
name=
'relevanceOrderCode'
>
<
Search
disabled=
{
!!
addId
}
readOnly
enterButton=
{
<><
LinkOutlined
/>
选择
</>
}
onSearch=
{
()
=>
setinvoicesvisible
(
true
)
}
/>
</
Form
.
Item
>
{
invoicesRowCtl
.
selectRow
.
length
>
0
&&
<
Button
type=
'link'
>
查看单号详情
</
Button
>
}
</
Form
.
Item
>
<
Form
.
Item
label=
"收货方"
name=
'receiverName'
><
span
>
{
set
.
receiverName
}
</
span
></
Form
.
Item
>
<
Form
.
Item
label=
"收货地址"
name=
'receiverFullAddress'
>
<
div
style=
{
{
lineHeight
:
'36px'
}
}
>
{
set
.
receiverName
}
/
{
set
.
receiverPhone
}
</
div
>
<
div
>
{
set
.
receiverFullAddress
}
</
div
>
</
Form
.
Item
>
<
Form
.
Item
label=
"发货地址"
name=
"shipperAddressId"
rules=
{
[{
required
:
true
,
message
:
'请选择发货地址'
}]
}
>
<
Select
allowClear
onChange=
{
(
value
,
option
)
=>
onGet
(
option
,
4
)
}
>
{
shipperaddress
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Option
key=
{
item
.
id
}
value=
{
item
.
id
}
>
{
item
.
fullAddress
}
</
Option
>
))
}
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
label=
"单据时间"
name=
'voucherTime'
><
span
>
{
set
.
invoicesTime
&&
set
.
invoicesTime
}
</
span
></
Form
.
Item
>
<
Form
.
Item
label=
"外部状态"
name=
'externalState'
><
span
>
{
set
.
status
&&
set
.
status
}
</
span
></
Form
.
Item
>
</
Form
>
{
/* 选择发货单弹框 */
}
<
ModalTable
width=
{
900
}
modalTitle=
'选择发货单'
columns=
{
shippingColumns
}
visible=
{
shippingvisible
}
rowSelection=
{
shippingRowSelection
}
cancel=
{
()
=>
setshippingvisible
(
false
)
}
confirm=
{
handleShipping
}
fetchTableData=
{
params
=>
fetchShippingData
(
params
)
}
resetModal=
{
{
destroyOnClose
:
true
}
}
tableProps=
{
{
rowKey
:
'id'
}
}
modalType=
'logisticsDelivery'
searchName=
'invoicesNo'
/>
{
/* 选择订单/换货申请单(退货发货)/换货申请单(换货发货)/退货申请单 */
}
<
ModalTableOrder
width=
{
900
}
visible=
{
invoicesvisible
}
columns=
{
invoicesColumns
}
invoicesNo=
{
set
.
invoicesNo
}
relevanceType=
{
set
.
relevanceType
}
resetModal=
{
{
destroyOnClose
:
true
}
}
tableProps=
{
{
rowKey
:
'id'
}
}
rowSelection=
{
invoicesRowSelection
}
cancel=
{
()
=>
setinvoicesvisible
(
false
)
}
confirm=
{
handleInvoices
}
/>
</>
)
}
export
default
BasicInfo
;
src/pages/logistics/logisticsSubmit/detail/components/goods.tsx
deleted
100644 → 0
View file @
64f9b519
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Input
,
Table
,
Row
,
Col
,
Statistic
,
message
,
Form
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
ModalTable
from
'@/components/ModalTable'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
interface
goodsParamsProps
{
currentRef
?:
any
,
set
?:
any
,
onGet
?:
Function
,
onBadge
?:
Function
,
addId
?:
Number
,
createType
?:
any
}
const
AddGoods
:
React
.
FC
<
goodsParamsProps
>
=
(
props
)
=>
{
const
{
currentRef
,
set
,
onGet
,
onBadge
,
addId
,
createType
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
[
visible
,
setvisible
]
=
useState
<
boolean
>
(
false
);
const
[
rowSelection
,
SelectionRowCtl
]
=
useRowSelectionTable
({
customKey
:
'productId'
});
const
[
data
,
setdata
]
=
useState
<
Array
<
any
>>
([]);
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
key
:
'productId'
,
dataIndex
:
'productId'
},
{
title
:
'商品名称'
,
key
:
'productName'
,
dataIndex
:
'productName'
},
{
title
:
'品类'
,
key
:
'categoryName'
,
dataIndex
:
'categoryName'
},
{
title
:
'品牌'
,
key
:
'brandName'
,
dataIndex
:
'brandName'
},
{
title
:
'单位'
,
key
:
'unitName'
,
dataIndex
:
'unitName'
},
{
title
:
'数量'
,
key
:
'amount'
,
width
:
120
,
dataIndex
:
'amount'
,
render
:
(
text
:
any
,
record
:
any
,
index
:
number
)
=>
<
Form
.
Item
noStyle
name=
{
`amount${index}`
}
initialValue=
{
record
.
amount
}
rules=
{
[{
required
:
true
,
message
:
'请输入数量'
}]
}
>
<
Input
type=
'number'
min=
{
1
}
onBlur=
{
(
e
)
=>
inputOnchange
(
record
.
productId
,
e
,
'amount'
)
}
/>
</
Form
.
Item
>
},
{
title
:
'箱数'
,
key
:
'carton'
,
width
:
120
,
dataIndex
:
'carton'
,
render
:
(
text
:
any
,
record
:
any
,
index
:
number
)
=>
<
Form
.
Item
noStyle
name=
{
`carton${index}`
}
initialValue=
{
record
.
carton
}
rules=
{
[{
required
:
true
,
message
:
'请输入箱数'
}]
}
>
<
Input
type=
'number'
min=
{
1
}
onBlur=
{
(
e
)
=>
inputOnchange
(
record
.
productId
,
e
,
'carton'
)
}
/>
</
Form
.
Item
>
},
{
title
:
'重量 (KG)'
,
key
:
'weight'
,
width
:
120
,
dataIndex
:
'weight'
,
render
:
(
text
:
any
,
record
:
any
,
index
:
number
)
=>
<
Form
.
Item
noStyle
name=
{
`weight${index}`
}
initialValue=
{
record
.
weight
}
rules=
{
[{
required
:
true
,
message
:
'请输入重量 (KG)'
}]
}
>
<
Input
type=
'number'
min=
{
1
}
onBlur=
{
(
e
)
=>
inputOnchange
(
record
.
productId
,
e
,
'weight'
)
}
/>
</
Form
.
Item
>
},
{
title
:
'体积 (M3)'
,
key
:
'volume'
,
width
:
120
,
dataIndex
:
'volume'
,
render
:
(
text
:
any
,
record
:
any
,
index
:
number
)
=>
<
Form
.
Item
noStyle
name=
{
`volume${index}`
}
initialValue=
{
record
.
volume
}
rules=
{
[{
required
:
true
,
message
:
'请输入体积 (M3)'
}]
}
>
<
Input
type=
'number'
min=
{
1
}
onBlur=
{
(
e
)
=>
inputOnchange
(
record
.
productId
,
e
,
'volume'
)
}
/>
</
Form
.
Item
>
},
{
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
,
index
:
number
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
onHandleDelect
(
index
)
}
>
删除
</
Button
>
}
]
/** 删除 */
const
onHandleDelect
=
(
idx
:
number
)
=>
{
const
list
=
[...
data
];
list
.
splice
(
idx
,
1
);
SelectionRowCtl
.
setSelectRow
(
list
)
SelectionRowCtl
.
setSelectedRowKeys
(
list
.
map
(
v
=>
v
.
productId
));
setdata
([...
list
])
form
.
resetFields
();
console
.
log
(
idx
)
}
/**选择商品弹框表头 */
const
columnsTable
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
key
:
'productId'
,
dataIndex
:
'productId'
},
{
title
:
'商品名称'
,
key
:
'productName'
,
dataIndex
:
'productName'
},
{
title
:
'品类'
,
key
:
'categoryName'
,
dataIndex
:
'categoryName'
},
{
title
:
'品牌'
,
key
:
'brandName'
,
dataIndex
:
'brandName'
}
]
/**获取商品列表 */
const
fetchProductList
=
(
params
:
any
)
=>
{
return
new
Promise
(
resolve
=>
{
PublicApi
.
getOrderProcurementOrderProductPageList
({
id
:
set
.
shipmentOrderId
,
...
params
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
arr
:
any
=
[];
res
.
data
.
data
.
forEach
((
item
:
any
)
=>
{
arr
.
push
({
productId
:
item
.
productId
,
productName
:
item
.
productName
,
categoryName
:
item
.
category
,
brandName
:
item
.
brand
,
unitName
:
item
.
unit
,
amount
:
item
.
amount
,
carton
:
item
.
carton
,
weight
:
item
.
weight
,
volume
:
item
.
volume
})
})
res
.
data
.
data
=
arr
resolve
(
res
.
data
)
}
})
})
}
/**用户循环改变列表返回的字段 */
const
forKeyValue
=
(
data
:
any
)
=>
{
const
arr
:
any
=
[];
data
.
forEach
((
item
:
any
)
=>
{
arr
.
push
({
productId
:
item
.
id
,
productName
:
item
.
productName
,
categoryName
:
item
.
category
,
brandName
:
item
.
brand
,
unitName
:
item
.
unit
,
amount
:
item
.
productCount
,
carton
:
item
.
carton
,
weight
:
item
.
weight
,
volume
:
item
.
volume
})
})
setdata
([...
arr
])
}
/** 打开添加商品 */
const
openModal
=
()
=>
{
const
dataInfo
=
{
...
set
};
if
(
Object
.
keys
(
dataInfo
).
length
>
0
&&
dataInfo
.
shipmentOrderId
)
{
if
(
data
.
length
>
0
)
{
SelectionRowCtl
.
setSelectRow
([...
data
])
}
setvisible
(
true
)
}
else
{
message
.
error
(
'请先选择要操作的对应发货单号或对应订单号/售后单'
)
}
}
/** 确定添加商品 */
const
onconfirm
=
()
=>
{
const
list
=
SelectionRowCtl
.
selectRow
;
const
arr
:
any
[]
=
[]
list
.
forEach
((
item
:
any
)
=>
{
arr
.
push
({
productId
:
item
.
productId
,
productName
:
item
.
productName
,
categoryName
:
item
.
categoryName
,
brandName
:
item
.
brandName
,
unitName
:
item
.
unitName
,
amount
:
item
.
amount
,
carton
:
item
.
carton
,
weight
:
item
.
weight
,
volume
:
item
.
volume
})
})
setdata
([...
arr
])
setvisible
(
false
)
}
/**输入框输入 */
const
inputOnchange
=
(
id
,
e
,
name
)
=>
{
const
{
value
}
=
e
.
target
data
.
forEach
(
v
=>
{
if
(
v
.
productId
===
id
)
{
v
[
name
]
=
value
}
})
onGet
([...
data
])
// 返回给父级
setdata
([...
data
])
countTotal
(
name
)
}
/** 计算总数 */
const
countTotal
=
(
name
?:
string
)
=>
{
let
num
:
any
=
0
data
.
forEach
((
item
:
any
,
idx
:
number
)
=>
{
if
(
name
===
'carton'
)
{
num
+=
item
.
carton
?
Number
(
item
.
carton
)
:
0
}
else
if
(
name
===
'weight'
)
{
num
+=
item
.
weight
?
Number
(
item
.
weight
)
:
0
}
else
if
(
name
===
'volume'
)
{
num
+=
item
.
volume
?
Number
(
item
.
volume
)
:
0
}
})
return
num
}
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
if
(
data
.
length
>
0
)
{
resolve
({
state
:
true
,
name
:
'goods'
,
})
onBadge
(
0
,
1
)
}
else
{
resolve
({
state
:
false
,
name
:
'goods'
,
})
onBadge
(
1
,
1
)
}
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
1
)
}
})
})
}
})
/**编辑回显 */
useEffect
(()
=>
{
if
(
set
.
id
)
{
setdata
([...
set
.
detailList
])
SelectionRowCtl
.
setSelectRow
(
set
.
detailList
);
SelectionRowCtl
.
setSelectedRowKeys
(
set
.
detailList
.
map
(
v
=>
v
=
v
.
productId
))
}
},
[
set
.
id
])
/**别处单据过来 */
useEffect
(()
=>
{
switch
(
Number
(
createType
))
{
case
2
:
PublicApi
.
getWarehouseInvoicesDetailsList
({
invoicesId
:
addId
.
toString
()}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
forKeyValue
(
res
.
data
)
}
})
break
case
3
:
break
case
4
:
break
}
},
[
addId
])
return
(
<>
<
Button
disabled=
{
!!
addId
}
block
type=
'dashed'
style=
{
{
marginBottom
:
'24px'
}
}
onClick=
{
openModal
}
><
PlusOutlined
/>
添加商品
</
Button
>
<
Form
form=
{
form
}
>
<
Table
columns=
{
columns
}
dataSource=
{
data
}
rowKey=
{
'productId'
}
pagination=
{
false
}
/>
</
Form
>
<
Row
gutter=
{
[
24
,
24
]
}
style=
{
{
margin
:
'0 0 0 65%'
,
width
:
'35%'
}
}
>
<
Col
span=
{
8
}
><
Statistic
title=
"总箱数(箱)"
value=
{
countTotal
(
'carton'
)
}
/></
Col
>
<
Col
span=
{
8
}
><
Statistic
title=
"总重量(KG)"
value=
{
countTotal
(
'weight'
)
}
/></
Col
>
<
Col
span=
{
8
}
><
Statistic
title=
"总体积(M3)"
value=
{
countTotal
(
'volume'
)
}
/></
Col
>
</
Row
>
{
/* 选择商品弹框 */
}
<
ModalTable
width=
{
900
}
modalTitle=
'选择商品'
columns=
{
columnsTable
}
visible=
{
visible
}
rowSelection=
{
rowSelection
}
fetchTableData=
{
params
=>
fetchProductList
(
params
)
}
resetModal=
{
{
destroyOnClose
:
true
}
}
tableProps=
{
{
rowKey
:
'productId'
}
}
cancel=
{
()
=>
setvisible
(
false
)
}
confirm=
{
()
=>
onconfirm
()
}
/>
</>
)
}
export
default
AddGoods
;
src/pages/logistics/logisticsSubmit/detail/components/index.less
deleted
100644 → 0
View file @
64f9b519
.revise_style {
:global {
.ant-form-item-label {
width: 174px;
label {
color:#6B778C
}
}
.ant-form-item-control {
width: 500px;
.ant-form-item-control-input-content {
position: relative;
.ant-btn-link {
position: absolute;
right: -120px;
}
.ant-picker {
width: 100%;
}
}
.ant-input-group-addon {
.ant-input-search-button {
background-color: #6B778C;
border-color: #6B778C;
}
}
}
.ant-radio-group-solid {
.ant-radio-button-wrapper-checked {
background: #6B778C;
border-color: #6B778C;
&:hover {
background: #6B778C;
border-color: #6B778C;
}
}
}
}
.upload_item {
padding: 5px 8px;
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
background-color: #FAFBFC;
.upload_left {
display: flex;
align-items: center;
color: #303133;
:global {
.anticon-file-word {
color: #4279df;
font-size: 20px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00B37A;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #C0C4CC;
}
}
}
}
}
\ No newline at end of file
src/pages/logistics/logisticsSubmit/detail/components/table.tsx
deleted
100644 → 0
View file @
64f9b519
/**
* @Name: 新增编辑 - 待提交物流单 - 流转记录
* @Date: 2020-11-06
* @Author: HJX
*/
import
React
from
'react'
;
import
{
Table
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
const
TableLOG
:
React
.
FC
<
{}
>
=
()
=>
{
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
dataIndex
:
'operatorRoleId'
},{
title
:
'操作角色'
,
dataIndex
:
'operatorRoleName'
},{
title
:
'状态'
,
dataIndex
:
'status'
},{
title
:
'操作'
,
dataIndex
:
'type'
},{
title
:
'操作时间'
,
dataIndex
:
'operateTime'
},{
title
:
'审核意见'
,
dataIndex
:
'remark'
}
]
return
(
<
Table
columns=
{
columns
}
/>
)
}
export
default
TableLOG
\ No newline at end of file
src/pages/logistics/logisticsSubmit/detail/index.tsx
deleted
100644 → 0
View file @
64f9b519
/**
* @Name: 新增编辑 - 待提交物流单
* @Date: 2020-11-06
* @Author: HJX
*/
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
{
Button
,
Card
,
Tabs
,
Form
,
message
,
Badge
}
from
'antd'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
ReturnEle
from
'@/components/ReturnEle'
;
import
{
history
}
from
'umi'
;
import
Table
from
'./components/table'
;
//流转记录
import
BasicInfo
from
'./components/basicInfo'
;
//基本信息
import
Goods
from
'./components/goods'
;
//物流单明细
import
{
PublicApi
}
from
'@/services/api'
;
const
{
TabPane
}
=
Tabs
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
const
TabFormErrors
=
(
props
)
=>
{
return
(
<
Badge
size=
"small"
count=
{
props
.
dot
}
offset=
{
[
6
,
-
5
]
}
>
{
props
.
children
}
</
Badge
>
)
}
const
AddEditLogistics
:
React
.
FC
<
{}
>
=
()
=>
{
const
basic
=
useRef
<
any
>
();
const
goods
=
useRef
<
any
>
();
// 用于提交的
const
[
parmas
,
setParmas
]
=
useState
<
any
>
({
digest
:
''
,
//单据摘要
companyId
:
''
,
//物流服务商id
shipmentOrderId
:
''
,
//发货单id 1
shipmentOrderCode
:
''
,
//发货单号 1
relevanceOrderId
:
''
,
//对应订单id
relevanceOrderCode
:
''
,
//对应单据编号 1
relevanceType
:
1
,
//对应单据类型 1-订单 2-换货申请单(退货发货) 3-换货申请单(换货发货) 4-退货申请单
receiverName
:
''
,
//收货方名称1
receiverAddressId
:
''
,
//收货方id 1
shipperAddressId
:
''
,
//发货方id
receiverFullAddress
:
''
,
createType
:
1
,
detailList
:
[],
//物流单明细列表 ,LogisticsOrderDetailRequest
})
const
parmasRef
=
useRef
(
parmas
)
const
[
settlementMethod
,
setSettlementMethod
]
=
useState
<
any
>
();
const
[
memberInfo
,
setmemberInfo
]
=
useState
<
any
>
({});
const
[
badge
,
setbadge
]
=
useState
<
any
>
([
0
,
0
,
0
]);
const
{
pathname
,
query
}
=
history
.
location
;
const
type
=
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
];
const
[
addId
,
setAddId
]
=
useState
<
number
>
(
0
);
// 提交数据
const
handleSubmit
=
async
()
=>
{
const
basicRef
=
await
basic
.
current
.
get
();
const
goodsRef
=
await
goods
.
current
.
get
();
if
(
basicRef
.
state
&&
goodsRef
.
state
)
{
if
(
parmas
.
detailList
.
length
>
0
)
{
const
data
=
{
...
basicRef
.
data
};
data
.
relevanceOrderCode
=
parmas
.
relevanceOrderCode
;
data
.
receiverMemberId
=
parmas
.
receiverMemberId
;
data
.
receiverMemberName
=
parmas
.
receiverMemberName
;
data
.
relevanceOrderId
=
parmas
.
relevanceOrderId
;
data
.
relevanceType
=
parmas
.
relevanceType
;
data
.
detailList
=
parmas
.
detailList
;
data
.
createType
=
parmas
.
createType
;
if
(
type
===
'add'
)
{
PublicApi
.
postLogisticsOrderWaitSubmitAdd
({
...
data
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
})
}
else
{
data
.
id
=
parmas
.
id
;
PublicApi
.
postLogisticsOrderWaitSubmitUpdate
({...
data
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
})
}
}
}
else
if
(
!
goodsRef
.
state
)
{
setbadge
(
badge
[
1
]
=
1
)
message
.
error
(
'请先添加商品'
)
}
}
const
getBasicInfo
=
(
value
:
any
,
index
:
number
,
type
?:
number
)
=>
{
console
.
log
(
value
,
index
,
85
)
const
data
=
{
...
parmas
};
if
(
index
===
1
)
{
data
.
companyName
=
value
.
children
setmemberInfo
({
memberId
:
value
.
memberid
,
roleId
:
value
.
roleid
})
}
else
if
(
index
===
2
)
{
data
.
shipmentOrderId
=
value
.
id
data
.
shipmentOrderCode
=
value
.
shipmentOrderCode
;
//发货单号
data
.
receiverPhone
=
value
.
phone
;
data
.
receiverName
=
value
.
receiverName
;
//收货方名称
data
.
receiverFullAddress
=
value
.
fullAddress
;
data
.
receiverMemberName
=
value
.
memberName
;
}
else
if
(
index
===
3
)
{
if
(
!
data
.
shipmentOrderId
)
{
data
.
receiverPhone
=
value
.
phone
;
data
.
receiverName
=
value
.
receiverName
;
//收货方名称
data
.
receiverFullAddress
=
value
.
fullAddress
;
data
.
receiverMemberName
=
value
.
memberName
;
}
data
.
relevanceOrderId
=
value
.
id
data
.
relevanceOrderCode
=
value
.
orderNo
data
.
relevanceType
=
type
;
}
else
{
data
.
shipperFullAddress
=
value
.
children
}
setParmas
(
data
)
}
/**必填没填写出现角标 */
const
getError
=
(
num
:
number
,
idx
:
number
)
=>
{
const
data
=
[...
badge
];
data
[
idx
]
=
num
;
setbadge
(
data
);
}
const
getGoodsList
=
(
list
:
any
)
=>
{
const
data
=
{
...
parmas
}
data
.
detailList
=
list
;
setParmas
(
data
);
}
useEffect
(()
=>
{
if
(
Object
.
keys
(
memberInfo
).
length
>
0
)
{
PublicApi
.
getSettleAccountsPlatformConfigGetSettlementWay
({
...
memberInfo
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
console
.
log
(
res
.
data
)
}
}).
catch
(
error
=>
{
message
.
error
(
error
.
message
)
})
}
},
[
memberInfo
])
useEffect
(()
=>
{
const
{
id
,
createType
,
shipmentOrderCode
,
invoicesNo
,
relevanceType
}
=
query
;
if
(
id
&&
type
===
'edit'
)
{
PublicApi
.
getLogisticsOrderWaitSubmitGet
({
id
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setParmas
(
res
.
data
)
}
})
}
else
if
(
id
&&
type
===
'add'
)
{
const
data
=
{
...
parmas
};
data
.
createType
=
Number
(
createType
);
data
.
relevanceType
=
Number
(
relevanceType
);
data
.
shipmentOrderCode
=
shipmentOrderCode
;
data
.
relevanceOrderCode
=
invoicesNo
;
switch
(
Number
(
relevanceType
))
{
case
1
:
new
Promise
(
resolve
=>
{
PublicApi
.
getWarehouseInvoicesDetails
({
invoicesId
:
id
}).
then
((
res
:
any
)
=>
{
resolve
(
res
.
data
)
})
}).
then
((
res
:
any
)
=>
{
data
.
relevanceOrderId
=
res
.
relevanceInvoicesId
data
.
receiverPhone
=
res
.
phone
;
data
.
receiverName
=
res
.
receiverName
;
//收货方名称
data
.
receiverFullAddress
=
res
.
fullAddress
;
data
.
receiverMemberName
=
res
.
memberName
;
}).
catch
(
error
=>
{
console
.
log
(
error
)
})
break
;
case
2
:
break
;
case
3
:
break
;
case
4
:
break
;
}
parmasRef
.
current
=
data
setParmas
(
parmasRef
.
current
);
setAddId
(
Number
(
id
));
}
},
[])
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReturnEle
description=
'返回'
/>
}
extra=
{
<
Button
type=
"primary"
onClick=
{
handleSubmit
}
>
保存
</
Button
>
}
>
<
Card
>
<
Tabs
type=
"card"
>
<
TabPane
key=
'tab-1'
tab=
{
<
TabFormErrors
dot=
{
badge
[
0
]
}
>
基本信息
</
TabFormErrors
>
}
forceRender
>
<
BasicInfo
addId=
{
addId
}
currentRef=
{
basic
}
set=
{
parmas
}
onBadge=
{
getError
}
onGet=
{
getBasicInfo
}
/>
</
TabPane
>
<
TabPane
key=
'tab-2'
tab=
{
<
TabFormErrors
dot=
{
badge
[
1
]
}
>
物流单明细
</
TabFormErrors
>
}
forceRender
>
<
Goods
addId=
{
addId
}
createType=
{
query
.
createType
}
currentRef=
{
goods
}
set=
{
parmas
}
onBadge=
{
getError
}
onGet=
{
getGoodsList
}
/>
</
TabPane
>
<
TabPane
key=
'tab-3'
tab=
'运费'
forceRender
>
<
Form
{
...
layout
}
>
<
Form
.
Item
label=
'运费'
>
<
span
></
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'结算方式'
>
<
span
></
span
>
</
Form
.
Item
>
</
Form
>
</
TabPane
>
<
TabPane
key=
'tab-4'
tab=
'流转记录'
forceRender
>
<
Table
/>
</
TabPane
>
</
Tabs
>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
AddEditLogistics
src/pages/logistics/logisticsSubmit/toOrderSubmitDetail.tsx
deleted
100644 → 0
View file @
64f9b519
/*
* @Author: LeeJiancong
* @Date: 2020-07-28 11:25:30
* @LastEditors: LeeJiancong
* @Copyright: 1549414730@qq.com
* @LastEditTime: 2020-10-14 16:23:57
*/
import
React
,
{
Component
,
useEffect
,
useRef
,
useState
,
ReactNode
}
from
'react'
import
{
Card
,
Row
,
Col
,
Tabs
,
Button
,
Input
as
SelectInput
,
Badge
,
message
}
from
'antd'
import
{
LinkOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
import
ModalTable
,
{
ModalTableProps
}
from
'@/components/ModalTable'
import
{
StandardTable
}
from
'god'
import
{
ColumnType
,
TableRowSelection
}
from
'antd/lib/table/interface'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PATTERN_MAPS
}
from
'@/constants/regExp'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
PageStatus
,
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
SearchSelect
from
'@/components/NiceForm/components/SearchSelect'
import
ListMadal
from
'../components/sumbitOrderModal'
import
OrderLog
from
'../components/pageOrderLog'
import
{
PublicApi
}
from
'@/services/api'
import
{
Submit
,
Reset
,
SchemaForm
,
ISchema
,
Form
,
FormItem
,
MegaLayout
,
FieldList
,
SchemaMarkupField
as
Field
,
FormEffectHooks
,
useFormSpy
,
createFormActions
}
from
'@formily/antd'
import
createAscyncActions
from
'@formily/antd/esm'
import
{
Input
,
NumberPicker
,
FormTab
,
FormMegaLayout
,
Select
,
ArrayTable
}
from
'@formily/antd-components'
import
ReturnEle
from
'@/components/ReturnEle'
import
style
from
'../components/index.less'
import
{
history
}
from
'umi'
import
moment
from
'moment'
import
{
values
,
action
}
from
'mobx'
import
Search
from
'@/components/NiceForm/components/Search'
const
actions
=
createFormActions
()
const
{
onFieldChange$
,
onFieldValueChange$
}
=
FormEffectHooks
const
{
TabPane
}
=
Tabs
const
data
=
[
{
key
:
'22'
,
name
:
'3'
},
{
key
:
'11'
,
name
:
'11'
},
]
const
fetchData
=
(
params
:
any
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
queryResult
=
data
.
find
(
v
=>
v
.
key
===
params
.
keywords
)
setTimeout
(()
=>
{
resolve
({
code
:
200
,
message
:
''
,
data
:
queryResult
?
[
queryResult
]
:
data
})
},
1000
)
})
}
const
Deatail
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
({})
const
[
visibleObj
,
setvisibleObj
]
=
useState
({
ModalSeletOrder1
:
false
,
ModalSeletOrder2
:
false
,
ModalSeletOrder3
:
false
})
let
{
query
}
=
history
.
location
//保存发货 销售 退货 换货相关id和code
const
[
shipmentOrderCode
,
setshipmentOrderCode
]
=
useState
(
''
)
const
[
invoicesNo
,
setinvoicesNo
]
=
useState
(
''
)
const
[
initOrderObj
,
setinitOrderObj
]
=
useState
({
invoicesTypeId
:
null
,
shipmentOrderCode
:
''
,
//发货单id orderDeliveryDetailsId
invoicesNo
:
''
,
//对应单据编号
relevanceOrderId
:
null
,
//订单id
relevanceType
:
1
,
//对应单据类型 1-订单 2-换货申请单(退货发货) 3-换货申请单(换货发货) 4-退货申请单
})
const
[
rowSelection
,
goodRowCtl
]
=
useRowSelectionTable
({
type
:
"checkbox"
,
customKey
:
'id'
})
let
[
companyList
,
setCompanyList
]
=
useState
([])
const
[
initialValues
,
setInitialValues
]
=
useState
<
any
>
({})
const
[
relevanceType
,
setrelevanceType
]
=
useState
(
'1'
)
//对应单据类型 1-订单 2-换货申请单(退货发货) 3-换货申请单(换货发货) 4-退货申请单
const
[
shipmentOrderID
,
setShipmentOrderID
]
=
useState
<
any
>
(
null
)
//发货单
const
[
invoicesId
,
setInvoicesId
]
=
useState
<
any
>
(
null
)
const
[
headerTitle
,
setHeaderTitle
]
=
useState
<
string
>
(
''
)
let
[
shipperAddress
,
setshipperAddress
]
=
useState
([])
let
[
receiverAddress
,
setReceiverAddress
]
=
useState
(
''
)
const
{
id
,
pageStatus
}
=
usePageStatus
()
const
[
totalVolume
,
setTotalVolume
]
=
useState
(
0
)
const
[
totalWeight
,
setTotalWeight
]
=
useState
(
0
)
const
[
totalCarton
,
setTotalCarton
]
=
useState
(
0
)
//箱数
const
[
editable
,
setEditable
]
=
useState
(
true
)
const
[
loading
,
setloading
]
=
useState
(
false
);
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
align
:
'center'
,
dataIndex
:
'id'
,
key
:
'id'
,
},
{
title
:
'状态'
,
align
:
'left'
,
dataIndex
:
'name'
,
key
:
'name'
,
render
:
(
text
:
number
,
record
:
any
)
=>
{
let
component
:
ReactNode
=
null
;
text
===
1
?
component
=
<
Badge
status=
'default'
text=
"待提交"
/>
:
text
===
2
?
component
=
<
Badge
status=
'processing'
text=
"待确认"
/>
:
text
===
3
?
component
=
<
Badge
status=
'error'
text=
"不接受物流单"
/>
:
component
=
<
Badge
status=
'success'
text=
"接受物流单"
/>
return
component
;
},
},
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
''
,
key
:
''
,
},
{
title
:
'操作时间'
,
align
:
'center'
,
dataIndex
:
''
,
key
:
''
,
},
{
title
:
'审核意见'
,
align
:
'center'
,
dataIndex
:
''
,
key
:
''
}
]
/**
* @description: 选择订单
* @param {type}
* @return:
*/
const
columns1
:
ColumnType
<
any
>
[]
=
[
{
title
:
'单据号'
,
align
:
'left'
,
dataIndex
:
'orderNo'
,
key
:
'orderNo'
,
},
{
title
:
'单据摘要'
,
align
:
'center'
,
dataIndex
:
'orderThe'
,
key
:
'orderThe'
},
{
title
:
'会员名称'
,
align
:
'center'
,
dataIndex
:
'supplyMembersName'
,
key
:
'supplyMembersName'
,
},
{
title
:
'单据时间'
,
align
:
'center'
,
dataIndex
:
'createTime'
,
key
:
'createTime'
,
render
:
(
text
:
any
)
=>
<>
{
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
}
</>
}
]
/**
* @description: 选择发货单
* @param {type}
* @return:
*/
const
columns2
:
ColumnType
<
any
>
[]
=
[
{
title
:
'发货单号'
,
align
:
'left'
,
dataIndex
:
'invoicesNo'
,
key
:
'invoicesNo'
,
},
{
title
:
'对应订单号'
,
align
:
'center'
,
dataIndex
:
'orderNo'
,
key
:
'orderNo'
,
},
{
title
:
'单据摘要'
,
align
:
'center'
,
dataIndex
:
'invoicesAbstract'
,
key
:
'invoicesAbstract'
},
{
title
:
'对应仓库'
,
align
:
'center'
,
dataIndex
:
'inventory'
,
key
:
'inventory'
,
},
{
title
:
'单据类型'
,
align
:
'center'
,
dataIndex
:
'invoicesType'
,
key
:
'invoicesType'
,
},
{
title
:
'单据时间'
,
align
:
'center'
,
dataIndex
:
'transactionTime'
,
key
:
'transactionTime'
,
render
:
(
text
:
any
)
=>
<>
{
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
}
</>
}
]
/**
* @description: 选择商品
* @param {type}
* @return:
*/
const
columns3
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
align
:
'center'
,
dataIndex
:
'productId'
,
key
:
'productId'
,
},
{
title
:
'商品名称'
,
align
:
'center'
,
dataIndex
:
'productName'
,
key
:
'productName'
},
{
title
:
'品类'
,
align
:
'center'
,
dataIndex
:
'categoryName'
,
key
:
'categoryName'
},
{
title
:
'品牌'
,
align
:
'center'
,
dataIndex
:
'brandName'
,
key
:
'brandName'
}
]
/**
* @description: 挂载更新
* @param {type}
* @return:
*/
useEffect
(()
=>
{
// let _title = pageStatus === PageStatus.PREVIEW ? '查看' : id ? '编辑' : '新建'
// setHeaderTitle(`${_title}物流单`)
PublicApi
.
getLogisticsSelectListCompany
({
cooperateType
:
'1'
}).
then
(
res
=>
{
let
list
=
[]
res
.
data
.
forEach
(
item
=>
{
list
.
push
({
value
:
item
.
id
,
label
:
item
.
name
})
})
setCompanyList
(
list
)
})
PublicApi
.
getLogisticsSelectListShipperAddress
().
then
(
res
=>
{
let
list
=
[]
res
.
data
.
forEach
(
item
=>
{
list
.
push
({
value
:
item
.
id
,
label
:
item
.
fullAddress
})
})
setshipperAddress
(
list
)
})
//详情
if
(
id
)
{
PublicApi
.
getLogisticsOrderWaitSubmitGet
({
id
:
id
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
let
{
data
}
=
res
setInitialValues
(
data
)
}
})
}
console
.
log
(
'query'
,
query
)
//从销售订单来
if
(
query
.
orderId
)
{
PublicApi
.
getOrderPurchaseOrderDetails
({
id
:
query
.
orderId
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
actions
.
setFieldValue
(
'receiverName'
,
res
.
data
.
receiverName
)
}
})
//发货单号
if
(
query
.
shipmentOrderCode
)
{
setshipmentOrderCode
(
query
.
shipmentOrderCode
)
}
//设置地址 发货单id 逻辑有物流单的用物流单优先 无物流单用订单 二选一
setShipmentOrderID
(
query
.
orderDeliveryDetailsId
||
null
)
//发货单id
setInvoicesId
(
query
.
invoicesId
||
null
)
//订单id
//订单号
if
(
query
.
invoicesNo
)
{
setinvoicesNo
(
query
.
invoicesNo
)
}
if
(
query
.
orderDeliveryDetailsId
)
{
//发货单
PublicApi
.
getWarehouseInvoicesList
({
current
:
'1'
,
pageSize
:
'1000'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
console
.
log
(
res
.
data
,
100086
)
let
v
=
res
.
data
.
data
.
filter
(
v
=>
v
.
id
==
query
.
orderDeliveryDetailsId
).
map
(
v
=>
v
)
let
{
memberName
,
fullAddress
,
deliveryAddresId
}
=
v
[
0
]
||
{}
actions
.
setFieldValue
(
'receiverName'
,
memberName
)
actions
.
setFieldValue
(
'receiverAddressId'
,
deliveryAddresId
)
actions
.
setFieldValue
(
'receiverFullAddress'
,
fullAddress
)
}
})
return
}
if
(
query
.
invoicesId
)
{
//订单
PublicApi
.
getOrderLogisticsOrderList
({
current
:
'1'
,
pageSize
:
'100000'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
let
v
=
res
.
data
.
data
.
filter
(
v
=>
v
.
id
==
query
.
invoicesId
).
map
(
v
=>
v
)
let
{
memberName
,
fullAddress
,
deliveryAddresId
}
=
v
[
0
]
||
{}
actions
.
setFieldValue
(
'receiverName'
,
memberName
)
actions
.
setFieldValue
(
'receiverAddressId'
,
deliveryAddresId
)
actions
.
setFieldValue
(
'receiverFullAddress'
,
fullAddress
)
}
})
}
}
return
()
=>
{
}
},
[])
//具体可以看 formProduct
const
formSearch
:
ISchema
=
{
type
:
'object'
,
properties
:
{
productName
:
{
type
:
'string'
,
'x-component'
:
'ModalSearch'
,
'x-component-props'
:
{
placeholder
:
'请输入商品名称'
,
align
:
'flex-left'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
,
style
:
{
marginRight
:
0
}
},
colStyle
:
{
marginTop
:
20
,
},
},
properties
:
{
category
:
{
type
:
'string'
,
"x-component"
:
'Select'
,
"x-component-props"
:
{
placeholder
:
'请输入品类'
,
className
:
'fixed-ant-selected-down'
,
// 该类强制将显示的下拉框出现在select下, 只有这里出现问题, ??
fetchSearch
:
PublicApi
.
getProductSelectGetSelectCustomerCategory
,
style
:
{
width
:
160
}
},
},
brand
:
{
type
:
'string'
,
"x-component"
:
'Input'
,
"x-component-props"
:
{
placeholder
:
'请输入品牌'
,
fetchSearch
:
PublicApi
.
getProductSelectGetSelectBrand
,
style
:
{
width
:
160
}
}
},
submit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
const
handleLink
=
(
type
:
number
)
=>
{
switch
(
type
)
{
//订单
case
1
:
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder1
:
true
})
break
;
//发货单
case
2
:
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder2
:
true
})
break
;
}
}
const
selectBtn1
=
(
<
Button
style=
{
{
backgroundColor
:
'#909399'
,
borderColor
:
'#909399'
,
color
:
'white'
}
}
onClick=
{
()
=>
handleLink
(
1
)
}
>
<
LinkOutlined
/>
选择
</
Button
>
)
const
selectBtn2
=
(
<
Button
style=
{
{
backgroundColor
:
'#909399'
,
borderColor
:
'#909399'
,
color
:
'white'
}
}
onClick=
{
()
=>
handleLink
(
2
)
}
>
<
LinkOutlined
/>
选择
</
Button
>
)
/**
* @description: 保存
* @param {type}
* @return {type}
*/
const
FormSubmit
=
(
values
:
any
)
=>
{
let
value
=
{
...
values
}
console
.
log
(
value
)
setloading
(
true
)
if
(
query
.
orderId
)
{
//销售订单过来的
// value['orderId'] = query.orderId
// value['orderDeliveryDetailsId'] = query.orderDeliveryDetailsId
value
[
'shipmentOrderId'
]
=
query
.
orderDeliveryDetailsId
value
[
'shipmentOrderCode'
]
=
query
.
shipmentOrderCode
value
[
'relevanceType'
]
=
Number
(
query
.
invoicesTypeId
)
value
[
'relevanceOrderId'
]
=
query
.
invoicesId
value
[
'receiverName'
]
=
actions
.
getFieldValue
(
'receiverName'
)
value
[
'receiverAddressId'
]
=
actions
.
getFieldValue
(
'receiverAddressId'
)
value
[
'invoicesNo'
]
=
query
.
invoicesNo
//对应单据编号
console
.
log
(
'value'
,
value
,
JSON
.
stringify
(
value
))
PublicApi
.
postOrderLogisticsOrderAdd
(
value
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setTimeout
(()
=>
{
history
.
goBack
()
},
1000
)
}
}).
catch
(
error
=>
{
setloading
(
false
)
})
}
else
{
//原页面 物流进来
if
(
id
)
{
value
[
'id'
]
=
id
value
[
'relevanceType'
]
=
Number
(
relevanceType
)
PublicApi
.
postLogisticsOrderWaitSubmitUpdate
(
value
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setTimeout
(()
=>
{
history
.
goBack
()
},
1000
)
}
}).
catch
(
error
=>
{
setloading
(
false
)
})
}
else
{
value
[
'relevanceType'
]
=
Number
(
relevanceType
)
PublicApi
.
postLogisticsOrderWaitSubmitAdd
(
value
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setTimeout
(()
=>
{
history
.
goBack
()
},
1000
)
}
}).
catch
(
error
=>
{
setloading
(
false
)
})
}
}
}
const
headList
=
[
{
name
:
'ID'
,
span
:
2
},
{
name
:
'商品名称'
,
span
:
5
},
{
name
:
'品类'
,
span
:
2
},
{
name
:
'品牌'
,
span
:
3
},
{
name
:
'单位'
,
span
:
1
},
{
name
:
'数量'
,
span
:
3
},
{
name
:
'箱数'
,
span
:
3
},
{
name
:
'重量 (KG)'
,
span
:
2
},
{
name
:
'体积 (M3)'
,
span
:
2
},
,
{
name
:
'操作'
,
span
:
1
}
]
/**
* @description: 自定义hook 计算属性
* @param {type}
* @return {type}
*/
const
useTabEffect
=
()
=>
{
const
{
setFieldValue
}
=
createFormActions
()
onFieldValueChange$
(
'detailList'
).
subscribe
(({
value
})
=>
{
// setFieldValue('detailList', [...value])
let
detailData
=
[...
value
]
computedALL
(
detailData
)
})
}
/**
* @description: 结算 计算
* @param {type}
* @return {type}
*/
const
computedALL
=
(
data
)
=>
{
let
_totalCarton
=
0
,
_totalVolume
=
0
,
_totalWeight
=
0
if
(
data
&&
data
.
length
>
0
)
{
console
.
log
(
'全部'
,
data
)
data
.
forEach
(
v
=>
{
if
(
v
.
amount
&&
v
.
carton
)
{
_totalCarton
+=
Number
(
v
.
carton
)
}
if
(
v
.
amount
&&
v
.
volume
)
{
_totalVolume
+=
Number
(
v
.
volume
)
}
if
(
v
.
amount
&&
v
.
weight
)
{
_totalWeight
+=
Number
(
v
.
weight
)
}
});
}
setTotalCarton
(
_totalCarton
)
setTotalVolume
(
_totalVolume
)
setTotalWeight
(
_totalWeight
)
}
/**
* @description: 订单 || 发货单弹窗
* @param {type}
* @return {type}
*/
const
handleOnOK
=
(
type
,
values
,
params
)
=>
{
console
.
log
(
type
,
values
,
'参数:'
,
params
)
let
{
id
,
orderNo
,
deliveryAddresId
,
fullAddress
,
memberName
,
invoicesNo
,
receiverName
}
=
values
[
0
]
switch
(
type
)
{
case
1
:
//订单
setrelevanceType
(
params
.
orderType
)
//订单类型
actions
.
setFieldValue
(
'invoicesNo'
,
orderNo
)
actions
.
setFieldValue
(
'relevanceOrderId'
,
id
)
// setReceiverAddress(address)
// deliveryAddresId
setInvoicesId
(
id
)
//需求 发货人和发货地址已发货单为准
if
(
!
actions
.
getFieldValue
(
'receiverAddressId'
))
{
actions
.
setFieldValue
(
"receiverAddressId"
,
deliveryAddresId
)
}
if
(
!
actions
.
getFieldValue
(
'receiverFullAddress'
))
{
actions
.
setFieldValue
(
"receiverFullAddress"
,
fullAddress
)
}
if
(
!
actions
.
getFieldValue
(
'receiverName'
))
{
actions
.
setFieldValue
(
"receiverName"
,
memberName
)
}
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder1
:
false
})
break
;
case
2
:
//发货单
// memberName 收货方
setShipmentOrderID
(
id
)
actions
.
setFieldValue
(
'shipmentOrderCode'
,
invoicesNo
)
actions
.
setFieldValue
(
"receiverName"
,
receiverName
)
actions
.
setFieldValue
(
'shipmentOrderId'
,
id
)
// 发货单id
actions
.
setFieldValue
(
"invoicesTypeId"
,
1
)
//发货单
actions
.
setFieldValue
(
"receiverAddressId"
,
deliveryAddresId
)
actions
.
setFieldValue
(
"receiverFullAddress"
,
fullAddress
)
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder2
:
false
})
break
;
}
}
/**
* @description: 保存商品
* @param {type}
* @return {type}
*/
const
handleConfirmProduct
=
()
=>
{
console
.
log
(
'goodRowCtl'
,
goodRowCtl
)
let
list
=
[...
goodRowCtl
.
selectRow
]
list
.
forEach
((
val
:
any
)
=>
{
if
(
!
val
.
hasOwnProperty
(
'amount'
))
{
val
[
'amount'
]
=
null
}
if
(
!
val
.
hasOwnProperty
(
'carton'
))
{
val
[
'carton'
]
=
null
}
if
(
!
val
.
hasOwnProperty
(
'weight'
))
{
val
[
'weight'
]
=
null
}
if
(
!
val
.
hasOwnProperty
(
'volume'
))
{
val
[
'volume'
]
=
null
}
})
actions
.
setFieldValue
(
"detailList"
,
goodRowCtl
.
selectRow
)
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder3
:
false
})
}
const
data2
=
[
{
id
:
'1'
,
productId
:
'1'
,
productName
:
'名称1'
,
categoryName
:
'品类1'
,
brandName
:
'品牌'
,
unitName
:
'单位1'
},
{
id
:
'2'
,
productId
:
'2'
,
productName
:
'名称2'
,
categoryName
:
'品类2'
,
brandName
:
'品牌2'
,
unitName
:
'单位2'
},
]
/**
* @description: 选择商品
* @param {type}
* @return {type}
*/
const
fetchProductList
=
async
(
params
)
=>
{
// if(shipmentOrderID === null){//发货单id
// message.error('请先选择发货单')
// return
// }
if
(
shipmentOrderID
)
{
//发货单
const
res
=
await
PublicApi
.
getWarehouseInvoicesProductList
({
...
params
,
invoicesId
:
shipmentOrderID
})
return
res
.
data
}
else
{
//订单
const
res
=
await
PublicApi
.
getOrderProcurementOrderProductPageList
({
...
params
,
id
:
invoicesId
})
return
res
.
data
}
}
return
(
<>
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
headerTitle
}
backIcon=
{
<
ReturnEle
description=
'返回'
/>
}
extra=
{
<
Button
type=
"primary"
onClick=
{
()
=>
actions
.
submit
()
}
loading=
{
loading
}
>
保存
</
Button
>
}
>
<
Card
>
<
Row
>
<
Col
span=
{
24
}
>
<
Form
actions=
{
actions
}
editable=
{
pageStatus
===
PageStatus
.
PREVIEW
?
false
:
true
}
initialValues=
{
initialValues
}
labelCol=
{
5
}
onSubmit=
{
(
values
)
=>
FormSubmit
(
values
)
}
effects=
{
()
=>
useTabEffect
()
}
>
<
Tabs
key=
'tabs'
type=
"card"
defaultActiveKey=
{
'tab-1'
}
>
<
TabPane
key=
'tab-1'
tab=
'基本信息'
forceRender
>
<
Row
>
<
Col
span=
{
12
}
>
<
FormItem
name=
"companyId"
label=
"物流服务商"
dataSource=
{
companyList
}
required
component=
{
Select
}
/>
<
FormItem
name=
"digest"
label=
"单据摘要"
required
component=
{
Input
}
/>
{
query
.
invoicesTypeId
!=
2
&&
<
Row
style=
{
{
marginLeft
:
'23px'
}
}
>
<
Col
span=
{
21
}
>
<
FormItem
editable=
{
false
}
name=
"shipmentOrderCode"
label=
'对应发货单号'
component=
{
Input
}
></
FormItem
>
</
Col
>
<
Col
span=
{
3
}
>
{
selectBtn2
}
</
Col
>
<
Col
span=
{
21
}
>
<
FormItem
editable=
{
false
}
name=
"invoicesNo"
label=
'对应订单号/售后单'
component=
{
Input
}
></
FormItem
>
</
Col
>
<
Col
span=
{
3
}
>
{
selectBtn1
}
</
Col
>
</
Row
>
}
{
query
.
invoicesTypeId
==
2
&&
<>
<
FormItem
label=
'对应发货单号'
name=
"shipmentOrder_Code"
>
<
Button
type=
"link"
>
{
shipmentOrderCode
}
</
Button
>
</
FormItem
>
<
FormItem
label=
'对应订单号/售后单'
name=
"invoices_No"
>
<
Button
type=
"link"
>
{
invoicesNo
}
</
Button
>
</
FormItem
>
</>
}
<
FormItem
editable=
{
false
}
name=
"receiverName"
label=
'收货方'
component=
{
Input
}
/>
<
FormItem
display=
{
false
}
editable=
{
false
}
name=
"receiverAddressId"
label=
'收货地址id'
component=
{
Input
}
/>
<
FormItem
display=
{
false
}
editable=
{
false
}
name=
"shipmentOrderId"
label=
'发货单Id'
component=
{
Input
}
/>
<
FormItem
display=
{
false
}
editable=
{
false
}
name=
"relevanceOrderId"
label=
'对应订单id'
component=
{
Input
}
/>
{
/* <FormItem display={false} editable={false} name="invoicesTypeId" label='订单类型' component={Input}/> */
}
<
FormItem
editable=
{
false
}
name=
"receiverFullAddress"
label=
'收货地址'
component=
{
Input
}
/>
<
FormItem
name=
"shipperAddressId"
label=
"发货地址"
dataSource=
{
shipperAddress
}
required
component=
{
Select
}
/>
</
Col
>
</
Row
>
</
TabPane
>
<
TabPane
key=
"tab-2"
tab=
"物流单明细"
forceRender
>
<
FieldList
name=
"detailList"
// initialValue={[
// ]}
>
{
({
state
,
mutators
})
=>
{
// const onAdd = () => mutators.push()
const
selectGoods
=
()
=>
{
if
(
!
shipmentOrderID
&&
!
invoicesId
)
{
message
.
error
(
'请先选择发货单'
)
return
}
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder3
:
true
})
}
return
(
<>
<
Button
style=
{
{
marginBottom
:
16
,
marginTop
:
24
}
}
block
icon=
{
<
PlusOutlined
/>
}
onClick=
{
selectGoods
}
type=
'dashed'
>
选择商品
</
Button
>
<
div
>
<
Row
gutter=
{
[
10
,
10
]
}
justify=
"center"
>
{
headList
.
map
((
item
,
index
)
=>
{
return
<
Col
key=
{
index
}
className=
{
item
.
name
==
'商品名称'
?
style
[
'alignLeft'
]
:
style
[
'alignCenter'
]
}
span=
{
item
.
span
}
>
{
item
.
name
}
</
Col
>
})
}
</
Row
>
{
state
.
value
.
map
((
item
:
any
,
index
:
any
)
=>
{
const
onRemove
=
(
index
:
number
)
=>
{
// let _list = list.splice(index, 1)
// console.log('_list', _list,mutators)
mutators
.
remove
(
index
)
let
list
=
actions
.
getFieldValue
(
'detailList'
)
// actions.setFieldValue('detailList', ...list)
computedALL
(
list
)
}
return
(
<>
<
Row
gutter=
{
[
10
,
10
]
}
key=
{
'index'
+
index
}
>
<
Col
span=
{
2
}
className=
{
style
[
'alignCenter'
]
}
>
<
FormItem
name=
{
`detailList.${index}.productId`
}
component=
{
Input
}
editable=
{
false
}
required
/>
</
Col
>
<
Col
span=
{
5
}
>
<
FormItem
name=
{
`detailList.${index}.productName`
}
component=
{
Input
}
required
editable=
{
false
}
/>
</
Col
>
<
Col
span=
{
2
}
className=
{
style
[
'alignCenter'
]
}
>
<
FormItem
name=
{
`detailList.${index}.categoryName`
}
component=
{
Input
}
required
editable=
{
false
}
/>
</
Col
>
<
Col
span=
{
3
}
className=
{
style
[
'alignCenter'
]
}
>
<
FormItem
name=
{
`detailList.${index}.brandName`
}
component=
{
Input
}
required
editable=
{
false
}
/>
</
Col
>
<
Col
span=
{
1
}
className=
{
style
[
'alignCenter'
]
}
>
<
FormItem
name=
{
`detailList.${index}.unitName`
}
component=
{
Input
}
required
editable=
{
false
}
/>
</
Col
>
<
Col
span=
{
3
}
className=
{
style
[
'alignCenter'
]
}
>
<
FormItem
name=
{
`detailList.${index}.amount`
}
component=
{
NumberPicker
}
required
/>
</
Col
>
<
Col
span=
{
3
}
className=
{
style
[
'alignCenter'
]
}
>
<
FormItem
name=
{
`detailList.${index}.carton`
}
component=
{
NumberPicker
}
required
/>
</
Col
>
<
Col
span=
{
2
}
>
<
FormItem
name=
{
`detailList.${index}.weight`
}
component=
{
NumberPicker
}
rules=
{
[
{
// pattern:''
message
:
'请输入数值'
}
]
}
required
/>
</
Col
>
<
Col
span=
{
2
}
>
<
FormItem
name=
{
`detailList.${index}.volume`
}
component=
{
NumberPicker
}
required
/>
</
Col
>
<
Col
span=
{
1
}
>
<
Button
type=
'link'
onClick=
{
()
=>
onRemove
(
index
)
}
>
删除
</
Button
>
</
Col
>
</
Row
>
</>
)
})
}
<
Row
style=
{
{
marginTop
:
'26px'
}
}
>
<
Col
span=
{
9
}
push=
{
15
}
>
<
Row
align=
'middle'
justify=
'center'
gutter=
{
[
16
,
16
]
}
>
<
Col
span=
{
8
}
>
<
div
>
总箱数(箱)
</
div
>
<
div
className=
{
style
.
count
}
>
{
totalCarton
}
</
div
>
</
Col
>
<
Col
span=
{
8
}
>
<
div
>
总重量(KG)
</
div
>
<
div
className=
{
style
.
count
}
>
{
totalWeight
}
</
div
>
</
Col
>
<
Col
span=
{
8
}
>
<
div
>
总体积(M3)
</
div
>
<
div
className=
{
style
.
count
}
>
{
totalVolume
}
</
div
>
</
Col
>
</
Row
>
</
Col
>
</
Row
>
</
div
>
</>
)
}
}
</
FieldList
>
</
TabPane
>
<
TabPane
key=
'tab-3'
tab=
'运费'
forceRender
>
<
FormItem
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
editable=
{
false
}
name=
"fregint"
label=
"运费"
>
<>
{
initialValues
.
freightPrice
||
'未报价'
}
</>
</
FormItem
>
<
FormItem
labelAlign=
"left"
labelCol=
{
{
span
:
2
}
}
editable=
{
false
}
name=
"fregint2"
label=
"结算方式"
>
<>
{
initialValues
.
freightPrice
||
'-'
}
</>
</
FormItem
>
</
TabPane
>
<
TabPane
key=
'tab-4'
tab=
'流转记录'
forceRender
>
<
OrderLog
id=
{
id
}
type=
"Submit"
/>
</
TabPane
>
</
Tabs
>
</
Form
>
</
Col
>
</
Row
>
</
Card
>
<
ListMadal
title=
'选择订单'
columns=
{
columns1
}
type=
{
1
}
onOk=
{
(
type
,
values
,
params
)
=>
handleOnOK
(
type
,
values
,
params
)
}
dialogVisible=
{
visibleObj
.
ModalSeletOrder1
}
onCancel=
{
()
=>
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder1
:
false
})
}
/>
<
ListMadal
title=
'选择发货单'
columns=
{
columns2
}
type=
{
2
}
onOk=
{
(
type
,
values
,
params
)
=>
handleOnOK
(
type
,
values
,
params
)
}
dialogVisible=
{
visibleObj
.
ModalSeletOrder2
}
onCancel=
{
()
=>
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder2
:
false
})
}
/>
<
ModalTable
modalTitle=
'选择商品'
confirm=
{
handleConfirmProduct
}
cancel=
{
()
=>
setvisibleObj
({
...
visibleObj
,
ModalSeletOrder3
:
false
})
}
visible=
{
visibleObj
.
ModalSeletOrder3
}
columns=
{
columns3
}
rowSelection=
{
rowSelection
}
rowKey=
{
'id'
}
fetchTableData=
{
params
=>
fetchProductList
(
params
)
}
formilyProps=
{
{
ctx
:
{
schema
:
formSearch
,
components
:
{
ModalSearch
:
Search
,
SearchSelect
,
Submit
,
Input
},
effects
:
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'productName'
,
FORM_FILTER_PATH
,
);
}
}
}
}
tableProps=
{
{
rowKey
:
'id'
}
}
/>
</
PageHeaderWrapper
>
</>
)
}
export
default
Deatail
src/pages/transaction/inquiryQuote/schema/index.tsx
View file @
f0e03866
...
...
@@ -173,7 +173,7 @@ export const enquierySearchSchema: ISchema = {
inline
:
true
},
properties
:{
inquiryListMemberName
:{
memberName
:{
type
:
'string'
,
"x-component-props"
:{
placeholder
:
'询价会员'
...
...
@@ -458,7 +458,7 @@ export const quoteFormSearch: ISchema = {
placeholder
:
'询价单号'
}
},
inquiryListMemberName
:{
memberName
:{
type
:
'string'
,
"x-component-props"
:{
placeholder
:
'询价会员'
...
...
src/pages/transaction/inquiryQuote/schema/pendingReview.tsx
View file @
f0e03866
...
...
@@ -164,7 +164,7 @@ export const inquiryQuoteSchema: ISchema = {
placeholder
:
'报价单摘要'
}
},
inquiryListMemberName
:
{
memberName
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'询价会员'
...
...
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