Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shenshaokai
jinfa-platform
Commits
ef4eb1e3
Commit
ef4eb1e3
authored
Apr 09, 2022
by
前端-彭佳文
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v2-220418-order' into 'v2-220418'
fix: 完善送货计划管理 See merge request linkseeks-design/pro-platform!186
parents
b1ac4d80
aca9b2a7
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
752 additions
and
736 deletions
+752
-736
RoleSelect.tsx
src/components/RoleSelect/RoleSelect.tsx
+25
-10
create.tsx
...er/deliveryPlanManagement/deliveryPlanAwaitB2B/create.tsx
+259
-243
details.tsx
...r/deliveryPlanManagement/deliveryPlanAwaitB2B/details.tsx
+103
-214
index.tsx
...der/deliveryPlanManagement/deliveryPlanAwaitB2B/index.tsx
+36
-6
update.tsx
...er/deliveryPlanManagement/deliveryPlanAwaitB2B/update.tsx
+92
-78
create.tsx
...er/deliveryPlanManagement/deliveryPlanAwaitSRM/create.tsx
+5
-5
details.tsx
...r/deliveryPlanManagement/deliveryPlanAwaitSRM/details.tsx
+9
-12
index.tsx
...der/deliveryPlanManagement/deliveryPlanAwaitSRM/index.tsx
+53
-23
update.tsx
...er/deliveryPlanManagement/deliveryPlanAwaitSRM/update.tsx
+2
-2
details.tsx
...rder/deliveryPlanManagement/deliveryPlanQuery/details.tsx
+148
-124
index.tsx
.../order/deliveryPlanManagement/deliveryPlanQuery/index.tsx
+4
-4
assemblyTools.ts
src/pages/order/utils/assemblyTools.ts
+5
-4
status.ts
src/pages/order/utils/status.ts
+11
-11
No files found.
src/components/RoleSelect/RoleSelect.tsx
View file @
ef4eb1e3
import
{
Button
,
Col
,
Drawer
,
Form
,
Input
,
Pagination
,
Radio
,
Row
,
Table
}
from
"antd"
;
import
{
useCallback
,
useEffect
,
useState
}
from
"react"
;
import
{
TableMemberColumn
}
from
"./columns"
;
import
{
Button
,
Col
,
Drawer
,
Form
,
Input
,
Pagination
,
Radio
,
Row
,
Table
}
from
"antd"
import
{
useCallback
,
useEffect
,
useState
}
from
"react"
import
{
TableMemberColumn
}
from
"./columns"
import
{
LinkOutlined
}
from
"@ant-design/icons"
import
styled
from
'styled-components'
import
{
///member/manage/lower/consumer/member/page
getMemberManageLowerProviderMerchantPage
,
getMemberManageUpperProviderMerchantPage
,
getMemberManageLowerConsumerMemberPage
,
getMemberManageUpperConsumerMerchantPage
}
from
'@/services/MemberV2Api'
;
}
from
'@/services/MemberV2Api'
const
RowStyleLayout
=
styled
(
props
=>
<
div
{
...
props
}
/>)
`
.ant-input-group-compact {
display: flex;
}
.ant-input {
height: 32px;
}
.ant-btn {
height: 32px;
}
`
interface
RoleSelectProps
{
request
?:
(
payload
:
any
)
=>
Promise
<
any
>
params
?:
object
...
...
@@ -61,14 +70,20 @@ function RoleSelect(props: RoleSelectProps) {
return
(
<>
<
Row
gutter=
{
4
}
>
{
/*
<Row gutter={4}>
<Col span={18}>
<Input value={value?.name} disabled={disabled} />
</Col>
<Col span={6}>
<Button disabled={disabled} onClick={showDrawer}>选择采购会员</Button>
</Col>
</
Row
>
</Row> */
}
<
RowStyleLayout
>
<
Input
.
Group
compact
>
<
Input
value=
{
value
?.
name
}
disabled
/>
<
Button
type=
'primary'
icon=
{
<
LinkOutlined
/>
}
disabled=
{
disabled
}
onClick=
{
showDrawer
}
>
选择
</
Button
>
</
Input
.
Group
>
</
RowStyleLayout
>
<
Drawer
visible=
{
visible
}
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitB2B/create.tsx
View file @
ef4eb1e3
...
...
@@ -3,31 +3,31 @@
* @author: Gavin
* @description: 与SRM内容大致相同,文件分开方便后续对接以及日后变动修改二开
*/
import
React
,
{
useEffect
,
useRef
,
useState
}
from
'react'
import
AnchorPage
,
{
AnchorsItem
}
from
'@/components/AnchorPage'
import
{
history
}
from
'umi'
import
{
Circulation
,
ConfirmDeliveryPlan
,
Purchaser
,
SubmitDeliveryPlan
,
BaseInfo
as
base_Info
,
Supplier
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
Remarks
,
PlannedDelivery
,
DeliveryPlanText
,
DeliveryPlanRemark
,
CreateDeliveryPlanTitleB2B
}
from
'../../constants'
import
{
Button
,
DatePicker
,
Form
,
Input
,
InputNumber
,
message
,
Space
,
Steps
,
Table
}
from
'antd'
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
_
from
'lodash'
import
{
convertArrtoObj
,
getDayAll
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
CommodityNoColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TradeNameColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
RoleSelect
}
from
'@/components/RoleSelect'
import
{
getMemberManageSupplyMember
}
from
'@/services/MemberV2Api'
import
{
getOrderDeliveryPlanOrderProductPage
,
postOrderDeliveryPlanB2bCreate
}
from
'@/services/OrderNewV2Api'
const
formItemLayout
=
{
labelCol
:
{
span
:
3
},
wrapperCol
:
{
span
:
18
}
}
// 1:查询供应商角色,2:查询采购商角色
const
ROLE_TYPE
=
'1'
// 1:b2b,2:srm
const
ORDER_TYPE
=
'1'
import
React
,
{
useEffect
,
useRef
,
useState
}
from
'react'
import
AnchorPage
,
{
AnchorsItem
}
from
'@/components/AnchorPage'
import
{
history
}
from
'umi'
import
{
Circulation
,
ConfirmDeliveryPlan
,
Purchaser
,
SubmitDeliveryPlan
,
BaseInfo
as
base_Info
,
Supplier
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
Remarks
,
PlannedDelivery
,
DeliveryPlanText
,
DeliveryPlanRemark
,
CreateDeliveryPlanTitleB2B
}
from
'../../constants'
import
{
Button
,
DatePicker
,
Form
,
Input
,
InputNumber
,
message
,
Space
,
Spin
,
Steps
,
Table
}
from
'antd'
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
_
from
'lodash'
import
{
convertArrToObj
,
getDayAll
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
CommodityNoColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TradeNameColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
RoleSelect
}
from
'@/components/RoleSelect'
import
{
getMemberManageSupplyMember
}
from
'@/services/MemberV2Api'
import
{
getOrderDeliveryPlanOrderProductPage
,
postOrderDeliveryPlanB2bCreate
}
from
'@/services/OrderNewV2Api'
const
initGoodsTableColumn
=
[
const
formItemLayout
=
{
labelCol
:
{
span
:
3
},
wrapperCol
:
{
span
:
18
}
}
// 1:查询供应商角色,2:查询采购商角色
const
ROLE_TYPE
=
'1'
// 1:b2b,2:srm
const
ORDER_TYPE
=
'1'
const
initGoodsTableColumn
=
[
{
...
CommodityNoColumn
,
dataIndex
:
'skuId'
,
width
:
80
,
},
{
...
TradeNameColumn
,
dataIndex
:
'productName'
,
width
:
192
,
},
{
...
ClassColumn
,
dataIndex
:
'category'
,
width
:
96
,
},
...
...
@@ -49,226 +49,242 @@ const initExpandIconColumn = [
{
...
DeliveredNumColumn
,
dataIndex
:
'leftCount'
,
width
:
86
,
},
{
...
PlannedDeliveryNumColumn
,
dataIndex
:
'planCount'
,
width
:
96
,
},
]
const
DeliveryPlanAwaitB2BCreate
:
React
.
FC
=
()
=>
{
const
[
form
]
=
Form
.
useForm
()
const
datesRef
=
useRef
<
any
>
(
null
)
const
goodsTableDataRef
=
useRef
(
null
)
// 锚点标题
const
[
iAnchors
,
setIAnchors
]
=
useState
<
AnchorsItem
[]
>
([
Circulation
,
base_Info
,
PlannedDelivery
,
Remarks
,
])
// 动态 TableColumn
const
[
goodsTableColumn
,
setGoodsTableColumn
]
=
useState
<
any
>
(
initGoodsTableColumn
)
// 动态 expandIconColumn
const
[
expandIconColumn
,
setExpandIconColumn
]
=
useState
<
any
>
(
initExpandIconColumn
)
const
expandedRowRender
=
(
record
,
index
)
=>
{
return
<
Table
rowKey=
{
'orderProductId'
}
columns=
{
expandIconColumn
}
dataSource=
{
record
.
orders
}
pagination=
{
false
}
tableLayout=
"fixed"
/>
}
// 选中 开始时间,结束时间
const
[
selectedDate
,
setSelectedDate
]
=
useState
<
Array
<
string
>>
([])
// 选中 会员信息
const
[
selectedMember
,
setSelectedMember
]
=
useState
<
any
>
({})
// 计划送货商品 列表
const
[
goodsTableData
,
setGoodsTableData
]
=
useState
<
any
>
(
null
)
// 保存
const
save
=
()
=>
{
form
.
validateFields
().
then
(
values
=>
{
const
DeliveryPlanAwaitB2BCreate
:
React
.
FC
=
()
=>
{
const
[
form
]
=
Form
.
useForm
()
const
datesRef
=
useRef
<
any
>
(
null
)
const
goodsTableDataRef
=
useRef
(
null
)
const
[
spinning
,
setSpinning
]
=
useState
<
boolean
>
(
false
)
// 锚点标题
const
[
iAnchors
,
setIAnchors
]
=
useState
<
AnchorsItem
[]
>
([
Circulation
,
base_Info
,
PlannedDelivery
,
Remarks
,
])
// 动态 TableColumn
const
[
goodsTableColumn
,
setGoodsTableColumn
]
=
useState
<
any
>
(
initGoodsTableColumn
)
// 动态 expandIconColumn
const
[
expandIconColumn
,
setExpandIconColumn
]
=
useState
<
any
>
(
initExpandIconColumn
)
const
expandedRowRender
=
(
record
,
index
)
=>
{
return
<
Table
rowKey=
{
'orderProductId'
}
columns=
{
expandIconColumn
}
dataSource=
{
record
.
orders
}
pagination=
{
false
}
tableLayout=
"fixed"
/>
}
// 选中 开始时间,结束时间
const
[
selectedDate
,
setSelectedDate
]
=
useState
<
Array
<
string
>>
([])
// 选中 会员信息
const
[
selectedMember
,
setSelectedMember
]
=
useState
<
any
>
({})
// 计划送货商品 列表
const
[
goodsTableData
,
setGoodsTableData
]
=
useState
<
any
>
(
null
)
// 保存
const
save
=
()
=>
{
form
.
validateFields
().
then
(
values
=>
{
// console.log('values :>> ', values)
if
(
_
.
isEmpty
(
goodsTableDataRef
.
current
))
{
message
.
warning
(
'没有找到可执行计划送货'
)
return
}
const
productList
=
goodsTableDataRef
.
current
.
map
((
item
:
any
)
=>
{
return
{
...
item
,
orders
:
item
.
orders
.
map
((
o
:
any
)
=>
{
const
planDays
=
Object
.
keys
(
o
).
filter
((
f
:
any
)
=>
f
.
startsWith
(
'$'
)).
map
((
p
:
any
)
=>
o
[
p
])
return
{
...
o
,
planDays
}
})
}
})
postOrderDeliveryPlanB2bCreate
({
vendorMemberId
:
values
.
memberInfo
.
memberId
,
vendorRoleId
:
values
.
memberInfo
.
roleId
,
vendorMemberName
:
values
.
memberInfo
.
name
,
digest
:
values
.
planSummaryText
,
planStartTime
:
values
.
dates
[
0
].
format
(
'YYYY-MM-DD'
),
planEndTime
:
values
.
dates
[
1
].
format
(
'YYYY-MM-DD'
),
remark
:
values
.
remark
,
productList
}).
then
((
res
:
any
)
=>
{
console
.
log
(
'保存 :>> '
,
res
)
})
})
}
// 对应日期填入的送货数量
const
inputChange
=
(
val
:
any
,
text
:
any
,
record
:
any
)
=>
{
let
{
day
}
=
text
let
dataArr
=
JSON
.
parse
(
JSON
.
stringify
(
goodsTableDataRef
.
current
))
let
index
=
dataArr
.
findIndex
(
f
=>
f
.
skuId
===
record
.
skuId
)
let
childIndex
=
dataArr
[
index
].
orders
.
findIndex
(
f
=>
f
.
orderProductId
===
record
.
orderProductId
)
dataArr
[
index
].
orders
[
childIndex
][
`$
${
day
}
`
].
planCount
=
val
goodsTableDataRef
.
current
=
dataArr
setGoodsTableData
(
dataArr
)
}
// 计划周期 选择日期
const
handleDateAssembleColumn
=
(
dateGroup
)
=>
{
if
(
_
.
isArray
(
dateGroup
))
{
const
startDate
=
dateGroup
[
0
].
format
(
'YYYY-MM-DD'
)
const
endDate
=
dateGroup
[
1
].
format
(
'YYYY-MM-DD'
)
const
dates
=
getDayAll
(
startDate
,
endDate
)
datesRef
.
current
=
dates
setSelectedDate
([
startDate
,
endDate
])
const
datesColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
120
,
align
:
'center'
,
}))
const
datesExpandIconColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
80
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
InputNumber
style=
{
{
width
:
'100%'
}
}
bordered
value=
{
text
?.
planCount
}
onChange=
{
(
val
)
=>
inputChange
(
val
,
text
,
record
)
}
/>)
}))
setGoodsTableColumn
([...
goodsTableColumn
,
...
datesColumn
])
setExpandIconColumn
([...
expandIconColumn
,
...
datesExpandIconColumn
])
}
else
{
// 清空
datesRef
.
current
=
null
goodsTableDataRef
.
current
=
null
setSelectedDate
([])
setGoodsTableData
([])
setGoodsTableColumn
(
initGoodsTableColumn
)
setExpandIconColumn
(
initExpandIconColumn
)
}
}
// 选中的会员信息
const
handleMemberInfo
=
(
info
)
=>
{
setSelectedMember
(
info
)
}
// 获取计划送货
const
getPlannedDelivery
=
()
=>
{
getOrderDeliveryPlanOrderProductPage
({
startDate
:
selectedDate
[
0
],
endDate
:
selectedDate
[
1
],
memberId
:
selectedMember
.
memberId
,
roleId
:
selectedMember
.
roleId
,
roleType
:
ROLE_TYPE
,
orderType
:
ORDER_TYPE
,
current
:
'1'
,
pageSize
:
'10'
}).
then
((
res
)
=>
{
if
(
res
.
code
===
1000
)
{
const
assemble
=
res
.
data
.
data
.
map
((
item
=>
{
return
{
...
item
,
...
convertArrtoObj
(
datesRef
.
current
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
convertArrtoObj
(
datesRef
.
current
),
}))
}
}))
goodsTableDataRef
.
current
=
assemble
setGoodsTableData
(
assemble
)
}
})
}
// 监听 选择日期 and 选择会员
useEffect
(()
=>
{
// 双条件满足 请求
if
(
!
_
.
isEmpty
(
selectedDate
)
&&
!
_
.
isEmpty
(
selectedMember
))
{
console
.
log
(
'订单能力 - 送货计划管理 - 待提交送货计划 B2B -----------:>> '
,
'双条件满足 请求 获取计划送货'
)
getPlannedDelivery
()
const
planSummaryText
=
`
${
selectedDate
[
0
]}
~
${
selectedDate
[
1
]}
${
selectedMember
.
name
}
${
DeliveryPlanText
}
`
form
.
setFieldsValue
({
planSummaryText
})
}
else
{
console
.
log
(
'订单能力 - 送货计划管理 - 待提交送货计划 B2B -----------:>> '
,
'条件暂未满足不调取接口获取'
)
}
},
[
selectedDate
,
selectedMember
])
return
(<>
<
AnchorPage
title=
{
CreateDeliveryPlanTitleB2B
}
onBack=
{
()
=>
history
.
goBack
()
}
anchors=
{
iAnchors
}
extra=
{
<
Space
>
{
/* <Button>保存并提交</Button> */
}
<
Button
type=
'primary'
icon=
{
<
SaveOutlined
/>
}
onClick=
{
save
}
>
保存
</
Button
>
</
Space
>
}
>
<
Form
labelAlign=
'left'
form=
{
form
}
>
<
BaseInfo
className=
'mt-0'
title=
{
Circulation
.
name
}
id=
{
Circulation
.
key
}
cols=
{
1
}
>
<
Steps
progressDot
current=
{
0
}
>
<
Steps
.
Step
title=
{
Purchaser
}
description=
{
SubmitDeliveryPlan
}
/>
<
Steps
.
Step
title=
{
Supplier
}
description=
{
ConfirmDeliveryPlan
}
/>
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanningCycle
}
name=
'dates'
>
<
DatePicker
.
RangePicker
style=
{
{
width
:
'100%'
}
}
onChange=
{
(
dates
)
=>
handleDateAssembleColumn
(
dates
)
}
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
SupplyMembersLabel
}
name=
'memberInfo'
>
<
RoleSelect
request=
{
getMemberManageSupplyMember
}
onChange=
{
handleMemberInfo
}
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanSummary
}
name=
'planSummaryText'
>
<
Input
/>
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
<
Table
// defaultExpandAllRows
rowKey=
{
'skuId'
}
columns=
{
goodsTableColumn
}
expandedRowRender=
{
expandedRowRender
}
dataSource=
{
goodsTableData
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
Remarks
.
name
}
id=
{
Remarks
.
key
}
cols=
{
1
}
>
<
Form
.
Item
name=
'remark'
>
<
Input
.
TextArea
rows=
{
4
}
maxLength=
{
300
}
placeholder=
{
DeliveryPlanRemark
}
/>
</
Form
.
Item
>
</
BaseInfo
>
</
Form
>
</
AnchorPage
>
</>)
}
export
default
DeliveryPlanAwaitB2BCreate
\ No newline at end of file
setSpinning
(
true
)
const
productList
=
goodsTableDataRef
.
current
.
map
((
item
:
any
)
=>
{
return
{
...
item
,
orders
:
item
.
orders
.
map
((
o
:
any
)
=>
{
const
planDays
=
Object
.
keys
(
o
).
filter
((
f
:
any
)
=>
f
.
startsWith
(
'$'
)).
map
((
p
:
any
)
=>
o
[
p
])
return
{
...
o
,
planDays
}
})
}
})
postOrderDeliveryPlanB2bCreate
({
vendorMemberId
:
values
.
memberInfo
.
memberId
,
vendorRoleId
:
values
.
memberInfo
.
roleId
,
vendorMemberName
:
values
.
memberInfo
.
name
,
digest
:
values
.
planSummaryText
,
planStartTime
:
values
.
dates
[
0
].
format
(
'YYYY-MM-DD'
),
planEndTime
:
values
.
dates
[
1
].
format
(
'YYYY-MM-DD'
),
remark
:
values
.
remark
,
productList
}).
then
((
res
:
any
)
=>
{
setSpinning
(
false
)
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
}).
catch
(
err
=>
{
setSpinning
(
false
)
})
})
}
// 对应日期填入的送货数量
const
inputChange
=
(
val
:
any
,
text
:
any
,
record
:
any
)
=>
{
let
{
day
}
=
text
let
dataArr
=
JSON
.
parse
(
JSON
.
stringify
(
goodsTableDataRef
.
current
))
let
index
=
dataArr
.
findIndex
(
f
=>
f
.
skuId
===
record
.
skuId
)
let
childIndex
=
dataArr
[
index
].
orders
.
findIndex
(
f
=>
f
.
orderProductId
===
record
.
orderProductId
)
dataArr
[
index
].
orders
[
childIndex
][
`$
${
day
}
`
].
planCount
=
val
goodsTableDataRef
.
current
=
dataArr
setGoodsTableData
(
dataArr
)
}
// 计划周期 选择日期
const
handleDateAssembleColumn
=
(
dateGroup
)
=>
{
if
(
_
.
isArray
(
dateGroup
))
{
const
startDate
=
dateGroup
[
0
].
format
(
'YYYY-MM-DD'
)
const
endDate
=
dateGroup
[
1
].
format
(
'YYYY-MM-DD'
)
const
dates
=
getDayAll
(
startDate
,
endDate
)
datesRef
.
current
=
dates
setSelectedDate
([
startDate
,
endDate
])
const
datesColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
120
,
align
:
'center'
,
}))
const
datesExpandIconColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
80
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
InputNumber
style=
{
{
width
:
'100%'
}
}
bordered
value=
{
text
?.
planCount
}
onChange=
{
(
val
)
=>
inputChange
(
val
,
text
,
record
)
}
/>)
}))
setGoodsTableColumn
([...
initGoodsTableColumn
,
...
datesColumn
])
setExpandIconColumn
([...
initExpandIconColumn
,
...
datesExpandIconColumn
])
}
else
{
// 清空
datesRef
.
current
=
null
goodsTableDataRef
.
current
=
null
setSelectedDate
([])
setGoodsTableData
([])
setGoodsTableColumn
(
initGoodsTableColumn
)
setExpandIconColumn
(
initExpandIconColumn
)
}
}
// 选中的会员信息
const
handleMemberInfo
=
(
info
)
=>
{
setSelectedMember
(
info
)
}
// 获取计划送货
const
getPlannedDelivery
=
()
=>
{
getOrderDeliveryPlanOrderProductPage
({
startDate
:
selectedDate
[
0
],
endDate
:
selectedDate
[
1
],
memberId
:
selectedMember
.
memberId
,
roleId
:
selectedMember
.
roleId
,
roleType
:
ROLE_TYPE
,
orderType
:
ORDER_TYPE
,
current
:
'1'
,
pageSize
:
'10'
}).
then
((
res
)
=>
{
if
(
res
.
code
===
1000
)
{
const
assemble
=
res
.
data
.
data
.
map
((
item
=>
{
return
{
...
item
,
...
convertArrToObj
(
datesRef
.
current
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
convertArrToObj
(
datesRef
.
current
),
}))
}
}))
goodsTableDataRef
.
current
=
assemble
setGoodsTableData
(
assemble
)
}
})
}
// 监听 选择日期 and 选择会员
useEffect
(()
=>
{
// 双条件满足 请求
if
(
!
_
.
isEmpty
(
selectedDate
)
&&
!
_
.
isEmpty
(
selectedMember
))
{
console
.
log
(
'订单能力 - 送货计划管理 - 待提交送货计划 B2B -----------:>> '
,
'双条件满足 请求 获取计划送货'
)
getPlannedDelivery
()
const
planSummaryText
=
`
${
selectedDate
[
0
]}
~
${
selectedDate
[
1
]}
${
selectedMember
.
name
}
${
DeliveryPlanText
}
`
form
.
setFieldsValue
({
planSummaryText
})
}
else
{
console
.
log
(
'订单能力 - 送货计划管理 - 待提交送货计划 B2B -----------:>> '
,
'条件暂未满足不调取接口获取'
)
}
},
[
selectedDate
,
selectedMember
])
return
(<>
<
Spin
spinning=
{
spinning
}
>
<
AnchorPage
title=
{
CreateDeliveryPlanTitleB2B
}
onBack=
{
()
=>
history
.
goBack
()
}
anchors=
{
iAnchors
}
extra=
{
<
Space
>
{
/* <Button>保存并提交</Button> */
}
<
Button
type=
'primary'
icon=
{
<
SaveOutlined
/>
}
onClick=
{
save
}
>
保存
</
Button
>
</
Space
>
}
>
<
Form
labelAlign=
'left'
form=
{
form
}
>
<
BaseInfo
className=
'mt-0'
title=
{
Circulation
.
name
}
id=
{
Circulation
.
key
}
cols=
{
1
}
>
<
Steps
progressDot
current=
{
0
}
>
<
Steps
.
Step
title=
{
Purchaser
}
description=
{
SubmitDeliveryPlan
}
/>
<
Steps
.
Step
title=
{
Supplier
}
description=
{
ConfirmDeliveryPlan
}
/>
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanningCycle
}
name=
'dates'
>
<
DatePicker
.
RangePicker
style=
{
{
width
:
'100%'
}
}
onChange=
{
(
dates
)
=>
handleDateAssembleColumn
(
dates
)
}
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
SupplyMembersLabel
}
name=
'memberInfo'
>
<
RoleSelect
request=
{
getMemberManageSupplyMember
}
onChange=
{
handleMemberInfo
}
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanSummary
}
name=
'planSummaryText'
rules=
{
[
{
required
:
true
,
message
:
'请选择'
}
]
}
>
<
Input
/>
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
<
Table
// defaultExpandAllRows
rowKey=
{
'skuId'
}
columns=
{
goodsTableColumn
}
expandedRowRender=
{
expandedRowRender
}
dataSource=
{
goodsTableData
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
Remarks
.
name
}
id=
{
Remarks
.
key
}
cols=
{
1
}
>
<
Form
.
Item
name=
'remark'
rules=
{
[
{
required
:
true
,
message
:
'请输入'
}
]
}
>
<
Input
.
TextArea
rows=
{
4
}
maxLength=
{
300
}
placeholder=
{
DeliveryPlanRemark
}
/>
</
Form
.
Item
>
</
BaseInfo
>
</
Form
>
</
AnchorPage
>
</
Spin
>
</>)
}
export
default
DeliveryPlanAwaitB2BCreate
\ No newline at end of file
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitB2B/details.tsx
View file @
ef4eb1e3
...
...
@@ -5,39 +5,31 @@
*/
import
React
,
{
useEffect
,
useRef
,
useState
}
from
'react'
import
AnchorPage
,
{
AnchorsItem
}
from
'@/components/AnchorPage'
import
{
history
}
from
'umi'
import
{
Circulation
,
ConfirmDeliveryPlan
,
Purchaser
,
SubmitDeliveryPlan
,
BaseInfo
as
base_Info
,
Supplier
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
ExternalState
,
Remarks
,
ExternalRoamRecord
,
PlannedDelivery
,
DeliveryPlanText
,
DeliveryPlanRemark
}
from
'../../constants'
import
{
Button
,
DatePicker
,
Form
,
Input
,
InputNumber
,
Space
,
Steps
,
Table
}
from
'antd'
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
{
history
,
useHistory
}
from
'umi'
import
{
Circulation
,
ConfirmDeliveryPlan
,
Purchaser
,
SubmitDeliveryPlan
,
BaseInfo
as
base_Info
,
Supplier
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
ExternalState
,
Remarks
,
ExternalRoamRecord
,
PlannedDelivery
,
PlanNumber
}
from
'../../constants'
import
{
Steps
,
Table
,
Tag
}
from
'antd'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
{
ExternalRoamRecordTableColumn
}
from
'../../constants/page-table-column'
import
_
from
'lodash'
import
{
convertArrtoObj
,
getDayAll
}
from
'../../utils'
import
{
getDayAll
,
godAtob
,
integrationArrToObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
CommodityNoColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TradeNameColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
RoleSelect
}
from
'@/components/RoleSelect'
import
{
getMemberManageLowerMerchantProviderPage
}
from
'@/services/MemberV2Api'
import
{
getOrderDeliveryPlanOrderProductPage
,
postOrderDeliveryPlanB2bCreate
}
from
'@/services/OrderNewV2Api'
import
{
getOrderDeliveryPlanDeliveryHistory
,
getOrderDeliveryPlanDetail
,
getOrderDeliveryPlanDetailProductPage
}
from
'@/services/OrderNewV2Api'
import
moment
from
'moment'
const
formItemLayout
=
{
labelCol
:
{
span
:
3
},
wrapperCol
:
{
span
:
18
}
}
const
tagStatus
=
new
TagStatus
()
const
statusTxt
=
new
Map
([[
1
,
'待提交'
],
[
2
,
'待确认'
],
[
3
,
'待修订'
],
[
4
,
'已确认'
],
[
5
,
'已删除'
]])
// 1:查询供应商角色,2:查询采购商角色
const
ROLE_TYPE
=
'1'
// 1:b2b,2:srm
const
OEDER_TYPE
=
'1'
const
DeliveryPlanAwaitB2BDetails
:
React
.
FC
=
()
=>
{
const
[
form
]
=
Form
.
useForm
()
const
datesRef
=
useRef
<
any
>
(
null
)
const
{
location
:
{
query
:
{
i
}
}
}
=
useHistory
()
const
id
=
godAtob
(
i
)
const
goodsTableDataRef
=
useRef
(
null
)
// 锚点标题
const
[
iAnchors
,
set
i
Anchors
]
=
useState
<
AnchorsItem
[]
>
([
const
[
iAnchors
,
set
I
Anchors
]
=
useState
<
AnchorsItem
[]
>
([
Circulation
,
base_Info
,
PlannedDelivery
,
Remarks
,
ExternalRoamRecord
,
])
...
...
@@ -70,225 +62,122 @@ const DeliveryPlanAwaitB2BDetails: React.FC = () => {
return
<
Table
rowKey=
{
'orderProductId'
}
columns=
{
expandIconColumn
}
dataSource=
{
record
.
orders
}
pagination=
{
false
}
tableLayout=
"fixed"
/>
}
// 选中 开始时间,结束时间
const
[
selectedDate
,
setSelectedDate
]
=
useState
<
Array
<
string
>>
([])
// 选中 会员信息
const
[
selectedMember
,
setSelectedMember
]
=
useState
<
any
>
({})
// 详情
const
[
details
,
setDetails
]
=
useState
<
any
>
({})
// 计划送货商品 列表
const
[
goodsTableData
,
setGoodsTableData
]
=
useState
<
any
>
(
null
)
const
[
details
,
setDetails
]
=
useState
<
any
>
({})
// 保存
const
save
=
()
=>
{
form
.
validateFields
().
then
(
values
=>
{
console
.
log
(
'values :>> '
,
values
)
const
productList
=
goodsTableDataRef
.
current
.
map
((
item
:
any
)
=>
{
return
{
...
item
,
orders
:
item
.
orders
.
map
((
o
:
any
)
=>
{
const
planDays
=
Object
.
keys
(
o
).
filter
((
f
:
any
)
=>
f
.
startsWith
(
'$'
)).
map
((
p
:
any
)
=>
o
[
p
])
return
{
...
o
,
planDays
}
})
}
})
postOrderDeliveryPlanB2bCreate
({
vendorMemberId
:
selectedMember
.
memberId
,
vendorRoleId
:
selectedMember
.
roleId
,
vendorMemberName
:
selectedMember
.
name
,
digest
:
values
.
planSummaryText
,
planStartTime
:
values
.
dates
[
0
].
format
(
'YYYY-MM-DD'
),
planEndTime
:
values
.
dates
[
1
].
format
(
'YYYY-MM-DD'
),
remark
:
values
.
remark
,
productList
}).
then
((
res
:
any
)
=>
{
console
.
log
(
'保存 :>> '
,
res
)
})
})
}
// 对应日期填入的送货数量
const
inputChange
=
(
val
:
any
,
text
:
any
,
record
:
any
)
=>
{
let
{
day
}
=
text
let
dataArr
=
JSON
.
parse
(
JSON
.
stringify
(
goodsTableDataRef
.
current
))
let
index
=
dataArr
.
findIndex
(
f
=>
f
.
skuId
===
record
.
skuId
)
let
childIndex
=
dataArr
[
index
].
orders
.
findIndex
(
f
=>
f
.
orderProductId
===
record
.
orderProductId
)
dataArr
[
index
].
orders
[
childIndex
][
`$
${
day
}
`
].
planCount
=
val
// console.log('goodsTableDataRef.current 2222:>> ', goodsTableDataRef.current)
goodsTableDataRef
.
current
=
dataArr
setGoodsTableData
(
dataArr
)
}
// 计划周期 选择日期
const
handleDateAssembleColumn
=
(
dateGroup
)
=>
{
if
(
_
.
isArray
(
dateGroup
))
{
const
startDate
=
dateGroup
[
0
].
format
(
'YYYY-MM-DD'
)
const
endDate
=
dateGroup
[
1
].
format
(
'YYYY-MM-DD'
)
const
dates
=
getDayAll
(
startDate
,
endDate
)
datesRef
.
current
=
dates
setSelectedDate
([
startDate
,
endDate
])
const
datesColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
120
,
align
:
'center'
,
}))
const
datesExpandIconColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
80
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
InputNumber
style=
{
{
width
:
'100%'
}
}
bordered
value=
{
text
?.
planCount
}
onChange=
{
(
val
)
=>
inputChange
(
val
,
text
,
record
)
}
/>)
}))
setGoodsTableColumn
([...
goodsTableColumn
,
...
datesColumn
])
setExpandIconColumn
([...
expandIconColumn
,
...
datesExpandIconColumn
])
}
else
{
// 清空
datesRef
.
current
=
null
goodsTableDataRef
.
current
=
null
setSelectedDate
([])
setGoodsTableData
([])
}
}
// 选中的会员信息
const
handleMemberInfo
=
(
info
)
=>
{
console
.
log
(
'info :>> '
,
info
)
setSelectedMember
(
info
)
// 外部流转单据记录
const
[
externalRoamRecordData
,
setExternalRoamRecordData
]
=
useState
<
any
>
(
null
)
// 计划周期 渲染日期
const
handleDateAssembleColumn
=
(
startDate
:
string
,
endDate
:
string
)
=>
{
const
dates
=
getDayAll
(
moment
(
startDate
).
format
(
'YYYY-MM-DD'
),
moment
(
endDate
).
format
(
'YYYY-MM-DD'
))
const
datesColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
120
,
align
:
'center'
,
}))
const
datesExpandIconColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
80
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
span
>
{
text
?.
planCount
}
</
span
>)
}))
setGoodsTableColumn
([...
goodsTableColumn
,
...
datesColumn
])
setExpandIconColumn
([...
expandIconColumn
,
...
datesExpandIconColumn
])
}
// 获取计划送货
// 获取计划送货
商品
const
getPlannedDelivery
=
()
=>
{
getOrderDeliveryPlanOrderProductPage
({
startDate
:
selectedDate
[
0
],
endDate
:
selectedDate
[
1
],
memberId
:
selectedMember
.
memberId
,
roleId
:
selectedMember
.
roleId
,
roleType
:
ROLE_TYPE
,
orderType
:
OEDER_TYPE
,
getOrderDeliveryPlanDetailProductPage
({
id
,
current
:
'1'
,
pageSize
:
'10'
}).
then
((
res
)
=>
{
if
(
res
.
code
===
1000
)
{
const
assemble
=
res
.
data
.
data
.
map
(
(
item
=>
{
const
assemble
=
res
.
data
.
data
.
map
(
item
=>
{
return
{
...
item
,
...
convertArrtoObj
(
datesRef
.
current
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
convertArrtoObj
(
datesRef
.
current
),
}))
...
integrationOjb
(
item
.
dayNumbers
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArrToObj
(
o
.
planDays
)
}))
}
}))
console
.
log
(
'assemble ------------- :>> '
,
assemble
)
})
goodsTableDataRef
.
current
=
assemble
setGoodsTableData
(
assemble
)
}
})
}
// 监听 选择日期 and 选择会员
// 获取详情
const
getDetails
=
()
=>
{
getOrderDeliveryPlanDetail
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
setDetails
(
res
.
data
)
getPlannedDelivery
()
handleDateAssembleColumn
(
res
.
data
.
planStartTime
,
res
.
data
.
planEndTime
)
}
})
}
// 获取流转记录
const
getExternalRoamRecordData
=
()
=>
{
getOrderDeliveryPlanDeliveryHistory
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
&&
!
_
.
isEmpty
(
res
.
data
))
{
setExternalRoamRecordData
(
res
.
data
)
}
})
}
useEffect
(()
=>
{
// 双条件满足 请求
if
(
!
_
.
isEmpty
(
selectedDate
)
&&
!
_
.
isEmpty
(
selectedMember
))
{
console
.
log
(
'订单能力 - 送货计划管理 - 待提交送货计划 B2B -----------:>> '
,
'双条件满足 请求 获取计划送货'
)
getPlannedDelivery
()
const
planSummaryText
=
`
${
selectedDate
[
0
]}
~
${
selectedDate
[
1
]}
${
selectedMember
.
name
}
${
DeliveryPlanText
}
`
form
.
setFieldsValue
({
planSummaryText
})
}
else
{
console
.
log
(
'订单能力 - 送货计划管理 - 待提交送货计划 B2B -----------:>> '
,
'条件暂未满足不调取接口获取'
)
}
},
[
selectedDate
,
selectedMember
])
getDetails
()
getExternalRoamRecordData
()
},
[])
return
(<>
<
AnchorPage
title=
{
details
?.
name
||
'没有title'
}
title=
{
details
?.
planNo
}
onBack=
{
()
=>
history
.
goBack
()
}
anchors=
{
iAnchors
}
extra=
{
<
Space
>
<
Button
>
保存并提交
</
Button
>
<
Button
type=
'primary'
icon=
{
<
SaveOutlined
/>
}
onClick=
{
save
}
>
保存
</
Button
>
</
Space
>
}
>
<
Form
labelAlign=
'left'
form=
{
form
}
>
<
BaseInfo
className=
'mt-0'
title=
{
Circulation
.
name
}
id=
{
Circulation
.
key
}
cols=
{
1
}
>
<
Steps
progressDot
current=
{
0
}
>
<
Steps
.
Step
title=
{
Purchaser
}
description=
{
SubmitDeliveryPlan
}
/>
<
Steps
.
Step
title=
{
Supplier
}
description=
{
ConfirmDeliveryPlan
}
/>
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanningCycle
}
name=
'dates'
>
<
DatePicker
.
RangePicker
style=
{
{
width
:
'100%'
}
}
onChange=
{
(
dates
)
=>
handleDateAssembleColumn
(
dates
)
}
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
SupplyMembersLabel
}
name=
'memberId'
>
{
/* 临时调用SRM会员列表 */
}
<
RoleSelect
request=
{
getMemberManageLowerMerchantProviderPage
}
onChange=
{
handleMemberInfo
}
params=
{
{
current
:
'1'
,
pageSize
:
'100'
}
}
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanSummary
}
name=
'planSummaryText'
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
ExternalState
}
>
待提交
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
<
Table
// defaultExpandAllRows
rowKey=
{
'skuId'
}
columns=
{
goodsTableColumn
}
expandedRowRender=
{
expandedRowRender
}
dataSource=
{
goodsTableData
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
Remarks
.
name
}
id=
{
Remarks
.
key
}
cols=
{
1
}
>
<
Form
.
Item
name=
'remark'
>
<
Input
.
TextArea
rows=
{
4
}
maxLength=
{
300
}
placeholder=
{
DeliveryPlanRemark
}
/>
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
ExternalRoamRecord
.
name
}
id=
{
ExternalRoamRecord
.
key
}
cols=
{
1
}
>
<
Table
rowKey=
{
'id'
}
dataSource=
{
[{
id
:
'1'
,
'name1'
:
'1'
,
'name2'
:
'操作角色'
,
'name3'
:
'状态'
,
'name4'
:
'操作'
,
'name5'
:
'操作时间'
,
'name6'
:
'备注'
,
},]
}
columns=
{
ExternalRoamRecordTableColumn
}
/>
</
BaseInfo
>
</
Form
>
<
BaseInfo
className=
'mt-0'
title=
{
Circulation
.
name
}
id=
{
Circulation
.
key
}
cols=
{
1
}
>
<
Steps
progressDot
current=
{
0
}
>
<
Steps
.
Step
title=
{
Purchaser
}
description=
{
SubmitDeliveryPlan
}
/>
<
Steps
.
Step
title=
{
Supplier
}
description=
{
ConfirmDeliveryPlan
}
/>
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanNumber
}
>
{
details
?.
planNo
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
SupplyMembersLabel
}
>
{
details
?.
vendorMemberName
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanningCycle
}
>
{
moment
(
details
?.
planStartTime
).
format
(
'YYYY-MM-DD'
)
}
~
{
moment
(
details
?.
planEndTime
).
format
(
'YYYY-MM-DD'
)
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanSummary
}
>
{
details
?.
digest
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
ExternalState
}
>
<
Tag
color=
{
tagStatus
.
getTagStyle
(
details
?.
status
).
bgColor
}
>
<
span
style=
{
{
color
:
tagStatus
.
getTagStyle
(
details
?.
status
).
fontColor
}
}
>
{
statusTxt
.
get
(
details
?.
status
)
}
</
span
>
</
Tag
>
</
BaseInfo
.
BaseInfoItem
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
<
Table
// defaultExpandAllRows
rowKey=
{
'skuId'
}
columns=
{
goodsTableColumn
}
expandedRowRender=
{
expandedRowRender
}
dataSource=
{
goodsTableData
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
ExternalRoamRecord
.
name
}
id=
{
ExternalRoamRecord
.
key
}
cols=
{
1
}
>
<
Table
rowKey=
{
'id'
}
dataSource=
{
externalRoamRecordData
}
columns=
{
ExternalRoamRecordTableColumn
}
/>
</
BaseInfo
>
</
AnchorPage
>
</>)
}
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitB2B/index.tsx
View file @
ef4eb1e3
...
...
@@ -6,8 +6,8 @@
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Button
,
Card
,
Space
,
Tag
}
from
'antd'
import
{
PlusOutlined
}
from
'@ant-design/icons'
import
{
Button
,
Card
,
Modal
,
Space
,
Tag
}
from
'antd'
import
{
ExclamationCircleOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
import
StandardTable
from
'@/components/StandardTable'
import
{
ColumnType
}
from
'antd/lib/table'
import
TableOperation
from
'@/components/TableOperation'
...
...
@@ -20,7 +20,7 @@ import { deliveryPlanManagementAwaitB2BSchema } from './schema'
import
{
godBtoa
,
TagStatus
}
from
'../../utils'
import
{
ExternalStateColumn
,
OperationColumn
,
PlannedEndDateColumn
,
PlannedStartDateColumn
,
PlanNumberColumn
,
PlanSummaryColumn
,
SupplyMemberColumn
}
from
'../../constants/table-column'
import
moment
from
'moment'
import
{
getOrderDeliveryPlanBuyerPage
}
from
'@/services/OrderNewV2Api'
import
{
getOrderDeliveryPlanBuyerPage
,
postOrderDeliveryPlanDelete
,
postOrderDeliveryPlanSubmit
}
from
'@/services/OrderNewV2Api'
// 外部状态1-待提交 2-已确认
const
STATUS
=
2
...
...
@@ -32,6 +32,36 @@ const DeliveryPlanManagementAwaitB2B: React.FC = () => {
const
ref
=
useRef
<
any
>
({})
const
formActions
=
createFormActions
()
const
handleDelete
=
(
id
:
number
)
=>
{
Modal
.
confirm
({
icon
:
<
ExclamationCircleOutlined
/>,
content
:
<
span
>
确认删除?
</
span
>,
okText
:
'确认'
,
cancelText
:
'取消'
,
onOk
()
{
postOrderDeliveryPlanDelete
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
ref
.
current
.
reload
()
})
},
onCancel
()
{
},
})
}
const
handleSubmit
=
(
id
:
number
)
=>
{
Modal
.
confirm
({
icon
:
<
ExclamationCircleOutlined
/>,
content
:
<
span
>
确认提交?
</
span
>,
okText
:
'确认'
,
cancelText
:
'取消'
,
onOk
()
{
postOrderDeliveryPlanSubmit
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
ref
.
current
.
reload
()
})
},
onCancel
()
{
},
})
}
const
controllerBtns
=
(
<
Space
>
<
Button
type=
'primary'
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitB2B/create`
)
}
>
新增
</
Button
>
...
...
@@ -51,9 +81,9 @@ const DeliveryPlanManagementAwaitB2B: React.FC = () => {
'查看'
:
true
,
}
const
operationHandler
=
{
'提交'
:
()
=>
{
console
.
log
(
'提交 :>> '
,)
}
,
'提交'
:
()
=>
handleSubmit
(
record
.
id
)
,
'修改'
:
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitB2B/update?i=
${
godBtoa
(
record
.
id
)}
`
),
'删除'
:
()
=>
{
console
.
log
(
'删除 :>> '
,)
}
,
'删除'
:
()
=>
handleDelete
(
record
.
id
)
,
'查看'
:
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitB2B/details?i=
${
godBtoa
(
record
.
id
)}
`
),
}
return
(
...
...
@@ -70,7 +100,7 @@ const DeliveryPlanManagementAwaitB2B: React.FC = () => {
dataIndex
:
'planNo'
,
key
:
'planNo'
,
// width: 160,
render
:
(
text
:
unknown
,
record
:
unknown
)
=>
<
EyePreview
url=
'/memberCenter/order/deliveryPlanManagement/awaitB2B/details'
>
{
text
}
</
EyePreview
>
render
:
(
text
:
unknown
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/order/deliveryPlanManagement/awaitB2B/details?i=${godBtoa(record.id)}`
}
>
{
text
}
</
EyePreview
>
},
{
...
PlanSummaryColumn
,
dataIndex
:
'digest'
,
key
:
'digest'
},
{
...
PlannedStartDateColumn
,
dataIndex
:
'planStartTime'
,
key
:
'planStartTime'
,
render
:
(
text
:
string
,
record
:
any
)
=>
(
moment
(
text
).
format
(
'YYYY-MM-DD'
))
},
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitB2B/update.tsx
View file @
ef4eb1e3
...
...
@@ -6,16 +6,14 @@
import
React
,
{
useEffect
,
useRef
,
useState
}
from
'react'
import
AnchorPage
,
{
AnchorsItem
}
from
'@/components/AnchorPage'
import
{
history
,
useHistory
}
from
'umi'
import
{
Circulation
,
ConfirmDeliveryPlan
,
Purchaser
,
SubmitDeliveryPlan
,
BaseInfo
as
base_Info
,
Supplier
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
Remarks
,
PlannedDelivery
,
DeliveryPlanText
,
DeliveryPlanRemark
,
CreateDeliveryPlanTitleB2B
,
ExternalRoamRecord
}
from
'../../constants'
import
{
Button
,
DatePicker
,
Form
,
Input
,
InputNumber
,
message
,
Space
,
Steps
,
Table
}
from
'antd'
import
{
Circulation
,
ConfirmDeliveryPlan
,
Purchaser
,
SubmitDeliveryPlan
,
BaseInfo
as
base_Info
,
Supplier
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
Remarks
,
PlannedDelivery
,
DeliveryPlanText
,
DeliveryPlanRemark
,
CreateDeliveryPlanTitleB2B
,
ExternalRoamRecord
,
ExternalState
}
from
'../../constants'
import
{
Button
,
Form
,
Input
,
InputNumber
,
message
,
Space
,
Spin
,
Steps
,
Table
,
Tag
}
from
'antd'
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
_
from
'lodash'
import
{
convertArrtoObj
,
getDayAll
,
godAtob
,
integrationArrtoObj
,
integrationOjb
}
from
'../../utils'
import
{
getDayAll
,
godAtob
,
integrationArrToObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
CommodityNoColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TradeNameColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
RoleSelect
}
from
'@/components/RoleSelect'
import
{
getMemberManageSupplyMember
}
from
'@/services/MemberV2Api'
import
{
getOrderDeliveryPlanDeliveryHistory
,
getOrderDeliveryPlanDetail
,
getOrderDeliveryPlanDetailProductPage
,
getOrderDeliveryPlanOrderProductPage
,
postOrderDeliveryPlanB2bCreate
,
postOrderDeliveryPlanUpdate
}
from
'@/services/OrderNewV2Api'
import
{
getOrderDeliveryPlanDeliveryHistory
,
getOrderDeliveryPlanDetail
,
getOrderDeliveryPlanDetailProductPage
,
postOrderDeliveryPlanUpdate
}
from
'@/services/OrderNewV2Api'
import
moment
from
'moment'
import
{
ExternalRoamRecordTableColumn
}
from
'../../constants/page-table-column'
...
...
@@ -24,11 +22,8 @@ const formItemLayout = {
wrapperCol
:
{
span
:
16
}
}
// 1:查询供应商角色,2:查询采购商角色
const
ROLE_TYPE
=
'1'
// 1:b2b,2:srm
const
OEDER_TYPE
=
'1'
const
tagStatus
=
new
TagStatus
()
const
statusTxt
=
new
Map
([[
1
,
'待提交'
],
[
2
,
'待确认'
],
[
3
,
'待修订'
],
[
4
,
'已确认'
],
[
5
,
'已删除'
]])
const
DeliveryPlanAwaitB2BUpdate
:
React
.
FC
=
()
=>
{
const
{
location
:
{
query
:
{
i
}
}
}
=
useHistory
()
const
id
=
godAtob
(
i
)
...
...
@@ -37,12 +32,15 @@ const DeliveryPlanAwaitB2BUpdate: React.FC = () => {
const
datesRef
=
useRef
<
any
>
(
null
)
const
goodsTableDataRef
=
useRef
(
null
)
const
[
spinning
,
setSpinning
]
=
useState
<
boolean
>
(
false
)
// 锚点标题
const
[
iAnchors
,
set
i
Anchors
]
=
useState
<
AnchorsItem
[]
>
([
const
[
iAnchors
,
set
I
Anchors
]
=
useState
<
AnchorsItem
[]
>
([
Circulation
,
base_Info
,
PlannedDelivery
,
Remarks
,
ExternalRoamRecord
,
])
// 动态 TableColumn
...
...
@@ -84,11 +82,12 @@ const DeliveryPlanAwaitB2BUpdate: React.FC = () => {
// 保存
const
save
=
()
=>
{
form
.
validateFields
().
then
(
values
=>
{
//
console.log('values :>> ', values)
console
.
log
(
'values :>> '
,
values
)
if
(
_
.
isEmpty
(
goodsTableDataRef
.
current
))
{
message
.
warning
(
'没有找到可执行计划送货'
)
return
}
setSpinning
(
true
)
const
orders
=
goodsTableDataRef
.
current
.
flatMap
((
item
:
any
)
=>
item
.
orders
).
flatMap
((
o
:
any
)
=>
({
...
o
,
planDays
:
Object
.
keys
(
o
).
filter
((
f
:
any
)
=>
f
.
startsWith
(
'$'
)).
map
((
p
:
any
)
=>
o
[
p
])
...
...
@@ -99,7 +98,12 @@ const DeliveryPlanAwaitB2BUpdate: React.FC = () => {
remark
:
values
.
remark
,
orders
}).
then
((
res
:
any
)
=>
{
console
.
log
(
'保存 :>> '
,
res
)
setSpinning
(
false
)
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
}).
catch
(
err
=>
{
setSpinning
(
false
)
})
})
}
...
...
@@ -144,7 +148,7 @@ const DeliveryPlanAwaitB2BUpdate: React.FC = () => {
return
{
...
item
,
...
integrationOjb
(
item
.
dayNumbers
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArr
t
oObj
(
o
.
planDays
)
}))
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArr
T
oObj
(
o
.
planDays
)
}))
}
})
goodsTableDataRef
.
current
=
assemble
...
...
@@ -162,7 +166,6 @@ const DeliveryPlanAwaitB2BUpdate: React.FC = () => {
setDetails
(
res
.
data
)
form
.
setFieldsValue
({
planSummaryText
:
res
.
data
.
digest
,
remark
:
''
,
})
getPlannedDelivery
()
handleDateAssembleColumn
(
res
.
data
.
planStartTime
,
res
.
data
.
planEndTime
)
...
...
@@ -186,71 +189,82 @@ const DeliveryPlanAwaitB2BUpdate: React.FC = () => {
},
[])
return
(<>
<
AnchorPage
title=
{
CreateDeliveryPlanTitleB2B
}
onBack=
{
()
=>
history
.
goBack
()
}
anchors=
{
iAnchors
}
extra=
{
<
Space
>
{
/* <Button>保存并提交</Button> */
}
<
Button
type=
'primary'
icon=
{
<
SaveOutlined
/>
}
onClick=
{
save
}
>
保存
</
Button
>
</
Space
>
}
>
<
Form
labelAlign=
'left'
form=
{
form
}
<
Spin
spinning=
{
spinning
}
>
<
AnchorPage
title=
{
details
?.
planNo
}
onBack=
{
()
=>
history
.
goBack
()
}
anchors=
{
iAnchors
}
extra=
{
<
Space
>
{
/* <Button>保存并提交</Button> */
}
<
Button
type=
'primary'
icon=
{
<
SaveOutlined
/>
}
onClick=
{
save
}
>
保存
</
Button
>
</
Space
>
}
>
<
BaseInfo
className=
'mt-0'
title=
{
Circulation
.
name
}
id=
{
Circulation
.
key
}
cols=
{
1
}
>
<
Steps
progressDot
current=
{
0
}
>
<
Steps
.
Step
title=
{
Purchaser
}
description=
{
SubmitDeliveryPlan
}
/>
<
Steps
.
Step
title=
{
Supplier
}
description=
{
ConfirmDeliveryPlan
}
/>
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanningCycle
}
>
{
moment
(
details
?.
planStartTime
).
format
(
'YYYY-MM-DD'
)
}
~
{
moment
(
details
?.
planEndTime
).
format
(
'YYYY-MM-DD'
)
}
</
BaseInfo
.
BaseInfoItem
>
<
Form
labelAlign=
'left'
form=
{
form
}
>
<
BaseInfo
className=
'mt-0'
title=
{
Circulation
.
name
}
id=
{
Circulation
.
key
}
cols=
{
1
}
>
<
Steps
progressDot
current=
{
0
}
>
<
Steps
.
Step
title=
{
Purchaser
}
description=
{
SubmitDeliveryPlan
}
/>
<
Steps
.
Step
title=
{
Supplier
}
description=
{
ConfirmDeliveryPlan
}
/>
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanningCycle
}
>
{
moment
(
details
?.
planStartTime
).
format
(
'YYYY-MM-DD'
)
}
~
{
moment
(
details
?.
planEndTime
).
format
(
'YYYY-MM-DD'
)
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
SupplyMembersLabel
}
>
{
details
?.
vendorMemberName
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
SupplyMembersLabel
}
>
{
details
?.
vendorMemberName
}
</
BaseInfo
.
BaseInfoItem
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanSummary
}
name=
'planSummaryText'
rules=
{
[
{
required
:
true
,
message
:
'请输入'
}
]
}
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
{
...
formItemLayout
}
label=
{
PlanSummary
}
name=
'planSummaryText'
rules=
{
[
{
required
:
true
,
message
:
'请输入'
}
]
}
>
<
Input
/>
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
<
Table
// defaultExpandAllRows
rowKey=
{
'skuId'
}
columns=
{
goodsTableColumn
}
expandedRowRender=
{
expandedRowRender
}
dataSource=
{
goodsTableData
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
Remarks
.
name
}
id=
{
Remarks
.
key
}
cols=
{
1
}
>
<
Form
.
Item
name=
'remark'
>
<
Input
.
TextArea
rows=
{
4
}
maxLength=
{
300
}
placeholder=
{
DeliveryPlanRemark
}
/>
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
ExternalRoamRecord
.
name
}
id=
{
ExternalRoamRecord
.
key
}
cols=
{
1
}
>
<
Table
rowKey=
{
'id'
}
dataSource=
{
externalRoamRecordData
}
columns=
{
ExternalRoamRecordTableColumn
}
pagination=
{
false
}
/>
</
BaseInfo
>
</
Form
>
</
AnchorPage
>
<
BaseInfo
.
BaseInfoItem
label=
{
ExternalState
}
>
<
Tag
color=
{
tagStatus
.
getTagStyle
(
details
?.
status
).
bgColor
}
>
<
span
style=
{
{
color
:
tagStatus
.
getTagStyle
(
details
?.
status
).
fontColor
}
}
>
{
statusTxt
.
get
(
details
?.
status
)
}
</
span
>
</
Tag
>
</
BaseInfo
.
BaseInfoItem
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
<
Table
// defaultExpandAllRows
rowKey=
{
'skuId'
}
columns=
{
goodsTableColumn
}
expandedRowRender=
{
expandedRowRender
}
dataSource=
{
goodsTableData
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
Remarks
.
name
}
id=
{
Remarks
.
key
}
cols=
{
1
}
>
<
Form
.
Item
name=
'remark'
rules=
{
[
{
required
:
true
,
message
:
'请输入'
}
]
}
>
<
Input
.
TextArea
rows=
{
4
}
maxLength=
{
300
}
placeholder=
{
DeliveryPlanRemark
}
/>
</
Form
.
Item
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
ExternalRoamRecord
.
name
}
id=
{
ExternalRoamRecord
.
key
}
cols=
{
1
}
>
<
Table
rowKey=
{
'id'
}
dataSource=
{
externalRoamRecordData
}
columns=
{
ExternalRoamRecordTableColumn
}
pagination=
{
false
}
/>
</
BaseInfo
>
</
Form
>
</
AnchorPage
>
</
Spin
>
</>)
}
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitSRM/create.tsx
View file @
ef4eb1e3
...
...
@@ -11,7 +11,7 @@
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
_
from
'lodash'
import
{
convertArr
t
oObj
,
getDayAll
}
from
'../../utils'
import
{
convertArr
T
oObj
,
getDayAll
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
MaterialModelColumn
,
MaterialNameColumn
,
MaterialNoColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
RoleSelect
}
from
'@/components/RoleSelect'
import
{
getOrderDeliveryPlanOrderProductPage
,
postOrderDeliveryPlanSrmCreate
}
from
'@/services/OrderNewV2Api'
...
...
@@ -151,8 +151,8 @@ const initExpandIconColumn = [
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
InputNumber
style=
{
{
width
:
'100%'
}
}
bordered
value=
{
text
?.
planCount
}
onChange=
{
(
val
)
=>
inputChange
(
val
,
text
,
record
)
}
/>)
}))
setMaterialTableColumn
([...
m
aterialTableColumn
,
...
datesColumn
])
setExpandIconColumn
([...
e
xpandIconColumn
,
...
datesExpandIconColumn
])
setMaterialTableColumn
([...
initM
aterialTableColumn
,
...
datesColumn
])
setExpandIconColumn
([...
initE
xpandIconColumn
,
...
datesExpandIconColumn
])
}
else
{
// 清空
datesRef
.
current
=
null
...
...
@@ -185,8 +185,8 @@ const initExpandIconColumn = [
const
assemble
=
res
.
data
.
data
.
map
((
item
=>
{
return
{
...
item
,
...
convertArr
t
oObj
(
datesRef
.
current
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
convertArr
t
oObj
(
datesRef
.
current
),
}))
...
convertArr
T
oObj
(
datesRef
.
current
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
convertArr
T
oObj
(
datesRef
.
current
),
}))
}
}))
materialTableDataRef
.
current
=
assemble
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitSRM/details.tsx
View file @
ef4eb1e3
...
...
@@ -6,12 +6,12 @@
import
React
,
{
useEffect
,
useRef
,
useState
}
from
'react'
import
{
history
,
useHistory
}
from
'umi'
import
AnchorPage
,
{
AnchorsItem
}
from
'@/components/AnchorPage'
import
{
BaseInfo
as
base_Info
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
ExternalRoamRecord
,
Circulation
,
Purchaser
,
SubmitDeliveryPlan
,
Supplier
,
ConfirmDeliveryPlan
,
PlannedDelivery
,
ExternalState
}
from
'../../constants'
import
{
BaseInfo
as
base_Info
,
PlanningCycle
,
SupplyMembersLabel
,
PlanSummary
,
ExternalRoamRecord
,
Circulation
,
Purchaser
,
SubmitDeliveryPlan
,
Supplier
,
ConfirmDeliveryPlan
,
PlannedDelivery
,
ExternalState
,
PlanNumber
}
from
'../../constants'
import
{
Steps
,
Table
,
Tag
}
from
'antd'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
{
ExternalRoamRecordTableColumn
}
from
'../../constants/page-table-column'
import
_
from
'lodash'
import
{
getDayAll
,
godAtob
,
integrationArr
t
oObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
getDayAll
,
godAtob
,
integrationArr
T
oObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
MaterialModelColumn
,
MaterialNameColumn
,
MaterialNoColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
getOrderDeliveryPlanDeliveryHistory
,
getOrderDeliveryPlanDetail
,
getOrderDeliveryPlanDetailProductPage
,
getOrderDeliveryPlanOrderProductPage
}
from
'@/services/OrderNewV2Api'
import
moment
from
'moment'
...
...
@@ -22,10 +22,7 @@ const DeliveryPlanAwaitSRMDetails: React.FC = () => {
const
{
location
:
{
query
:
{
i
}
}
}
=
useHistory
()
const
id
=
godAtob
(
i
)
const
datesRef
=
useRef
(
null
)
const
materialTableDataRef
=
useRef
(
null
)
const
[
iAnchors
,
setiAnchors
]
=
useState
<
AnchorsItem
[]
>
([
const
[
iAnchors
,
setIAnchors
]
=
useState
<
AnchorsItem
[]
>
([
Circulation
,
base_Info
,
PlannedDelivery
,
...
...
@@ -70,10 +67,9 @@ const DeliveryPlanAwaitSRMDetails: React.FC = () => {
// 外部流转单据记录
const
[
externalRoamRecordData
,
setExternalRoamRecordData
]
=
useState
<
any
>
(
null
)
// 计划周期
选择
日期
// 计划周期
渲染
日期
const
handleDateAssembleColumn
=
(
startDate
:
string
,
endDate
:
string
)
=>
{
const
dates
=
getDayAll
(
moment
(
startDate
).
format
(
'YYYY-MM-DD'
),
moment
(
endDate
).
format
(
'YYYY-MM-DD'
))
datesRef
.
current
=
dates
const
datesColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
120
,
align
:
'center'
,
}))
const
datesExpandIconColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
...
...
@@ -99,10 +95,9 @@ const DeliveryPlanAwaitSRMDetails: React.FC = () => {
return
{
...
item
,
...
integrationOjb
(
item
.
dayNumbers
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArr
t
oObj
(
o
.
planDays
)
}))
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArr
T
oObj
(
o
.
planDays
)
}))
}
})
materialTableDataRef
.
current
=
assemble
setMaterialTableData
(
assemble
)
}
})
...
...
@@ -148,15 +143,17 @@ const DeliveryPlanAwaitSRMDetails: React.FC = () => {
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
BaseInfo
.
BaseInfoItem
label=
{
Plan
ningCycle
}
>
{
moment
(
details
?.
planStartTime
).
format
(
'YYYY-MM-DD'
)
}
~
{
moment
(
details
?.
planEndTime
).
format
(
'YYYY-MM-DD'
)
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
Plan
Number
}
>
{
details
?.
planNo
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
SupplyMembersLabel
}
>
{
details
?.
vendorMemberName
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanningCycle
}
>
{
moment
(
details
?.
planStartTime
).
format
(
'YYYY-MM-DD'
)
}
~
{
moment
(
details
?.
planEndTime
).
format
(
'YYYY-MM-DD'
)
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanSummary
}
>
{
details
?.
digest
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
ExternalState
}
>
<
Tag
color=
{
tagStatus
.
getTagStyle
(
details
?.
status
).
bgColor
}
>
<
span
style=
{
{
color
:
tagStatus
.
getTagStyle
(
details
?.
status
).
fontColor
}
}
>
{
statusTxt
.
get
(
details
?.
status
)
}
</
span
>
<
span
style=
{
{
color
:
tagStatus
.
getTagStyle
(
details
?.
status
).
fontColor
}
}
>
{
statusTxt
.
get
(
details
?.
status
)
}
</
span
>
</
Tag
>
</
BaseInfo
.
BaseInfoItem
>
</
BaseInfo
>
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitSRM/index.tsx
View file @
ef4eb1e3
...
...
@@ -6,8 +6,8 @@
import
React
,
{
useRef
}
from
'react'
import
{
history
}
from
'umi'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
Button
,
Card
,
Space
,
Tag
}
from
'antd'
import
{
PlusOutlined
}
from
'@ant-design/icons'
import
{
Button
,
Card
,
Modal
,
Space
,
Tag
}
from
'antd'
import
{
ExclamationCircleOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
import
StandardTable
from
'@/components/StandardTable'
import
{
ColumnType
}
from
'antd/lib/table'
import
TableOperation
from
'@/components/TableOperation'
...
...
@@ -19,22 +19,52 @@ import { FORM_FILTER_PATH } from '@/formSchema/const'
import
{
deliveryPlanManagementAwaitSRMSchema
}
from
'./schema'
import
{
godBtoa
,
TagStatus
}
from
'../../utils'
import
{
ExternalStateColumn
,
OperationColumn
,
PlannedEndDateColumn
,
PlannedStartDateColumn
,
PlanNumberColumn
,
PlanSummaryColumn
,
SupplyMemberColumn
}
from
'../../constants/table-column'
import
{
getOrderDeliveryPlanBuyerPage
}
from
'@/services/OrderNewV2Api'
import
{
getOrderDeliveryPlanBuyerPage
,
postOrderDeliveryPlanDelete
,
postOrderDeliveryPlanSubmit
}
from
'@/services/OrderNewV2Api'
import
moment
from
'moment'
// 外部状态1-待提交 2-已确认
const
STATUS
=
2
// 订单类型1-B2B 2-SRM
const
O
E
DER_TYPE
=
2
const
O
R
DER_TYPE
=
2
const
tagStatus
=
new
TagStatus
()
const
statusTxt
=
new
Map
([[
1
,
'待提交'
],
[
2
,
'待确认'
],
[
3
,
'待修订'
],
[
4
,
'已确认'
],[
5
,
'已删除'
]])
const
DeliveryPlanManagementAwaitSRM
:
React
.
FC
=
()
=>
{
const
statusTxt
=
new
Map
([[
1
,
'待提交'
],
[
2
,
'待确认'
],
[
3
,
'待修订'
],
[
4
,
'已确认'
],
[
5
,
'已删除'
]])
const
DeliveryPlanManagementAwaitSRM
:
React
.
FC
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
formActions
=
createFormActions
()
const
handleDelete
=
(
id
:
number
)
=>
{
Modal
.
confirm
({
icon
:
<
ExclamationCircleOutlined
/>,
content
:
<
span
>
确认删除?
</
span
>,
okText
:
'确认'
,
cancelText
:
'取消'
,
onOk
()
{
postOrderDeliveryPlanDelete
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
ref
.
current
.
reload
()
})
},
onCancel
()
{
},
})
}
const
handleSubmit
=
(
id
:
number
)
=>
{
Modal
.
confirm
({
icon
:
<
ExclamationCircleOutlined
/>,
content
:
<
span
>
确认提交?
</
span
>,
okText
:
'确认'
,
cancelText
:
'取消'
,
onOk
()
{
postOrderDeliveryPlanSubmit
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
ref
.
current
.
reload
()
})
},
onCancel
()
{
},
})
}
const
controllerBtns
=
(
<
Space
>
<
Button
type=
'primary'
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitSRM/create`
)
}
>
新增
</
Button
>
<
Button
type=
'primary'
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitSRM/create`
)
}
>
新增
</
Button
>
</
Space
>
)
const
renderOptionButton
=
(
record
:
any
)
=>
{
...
...
@@ -46,17 +76,17 @@ const statusTxt = new Map([[1, '待提交'], [2, '待确认'], [3, '待修订'],
}
const
buttonGroup
=
{
'提交'
:
record
.
status
<=
1
,
'修改'
:
record
.
status
>=
1
,
'删除'
:
record
.
status
<=
1
,
'修改'
:
record
.
status
>=
1
,
'删除'
:
record
.
status
<=
1
,
'查看'
:
true
,
}
const
operationHandler
=
{
'提交'
:
()
=>
{
console
.
log
(
'提交 :>> '
,)
}
,
'提交'
:
()
=>
handleSubmit
(
record
.
id
)
,
'修改'
:
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitSRM/update?i=
${
godBtoa
(
record
.
id
)}
`
),
'删除'
:
()
=>
{
console
.
log
(
'删除 :>> '
,)
}
,
'删除'
:
()
=>
handleDelete
(
record
.
id
)
,
'查看'
:
()
=>
history
.
push
(
`/memberCenter/order/deliveryPlanManagement/awaitSRM/details?i=
${
godBtoa
(
record
.
id
)}
`
),
}
return
(
<
TableOperation
buttonTextFieldMap=
{
buttonGroup
}
...
...
@@ -74,7 +104,7 @@ const statusTxt = new Map([[1, '待提交'], [2, '待确认'], [3, '待修订'],
render
:
(
text
:
unknown
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/order/deliveryPlanManagement/awaitSRM/details?i=${godBtoa(record.id)}`
}
>
{
text
}
</
EyePreview
>
},
{
...
PlanSummaryColumn
,
dataIndex
:
'digest'
,
key
:
'digest'
},
{
...
PlannedStartDateColumn
,
dataIndex
:
'planStartTime'
,
key
:
'planStartTime'
,
render
:
(
text
:
string
,
record
:
any
)
=>
(
moment
(
text
).
format
(
'YYYY-MM-DD'
))
},
{
...
PlannedStartDateColumn
,
dataIndex
:
'planStartTime'
,
key
:
'planStartTime'
,
render
:
(
text
:
string
,
record
:
any
)
=>
(
moment
(
text
).
format
(
'YYYY-MM-DD'
))
},
{
...
PlannedEndDateColumn
,
dataIndex
:
'planEndTime'
,
key
:
'planEndTime'
,
render
:
(
text
:
string
,
record
:
any
)
=>
(
moment
(
text
).
format
(
'YYYY-MM-DD'
))
},
{
...
SupplyMemberColumn
,
dataIndex
:
'memberName'
,
key
:
'memberName'
},
{
...
...
@@ -103,16 +133,16 @@ const statusTxt = new Map([[1, '待提交'], [2, '待确认'], [3, '待修订'],
getOrderDeliveryPlanBuyerPage
({
...
params
,
status
:
STATUS
,
orderType
:
O
E
DER_TYPE
,
orderType
:
O
R
DER_TYPE
,
}).
then
((
res
)
=>
{
resolve
(
res
.
data
);
})
})
})
}
return
(
<
PageHeaderWrapper
>
<
Card
>
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
// keepAlive={false}
currentRef=
{
ref
}
...
...
@@ -139,8 +169,8 @@ const statusTxt = new Map([[1, '待提交'], [2, '待确认'], [3, '待修订'],
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
</
PageHeaderWrapper
>
)
}
export
default
DeliveryPlanManagementAwaitSRM
\ No newline at end of file
export
default
DeliveryPlanManagementAwaitSRM
\ No newline at end of file
src/pages/order/deliveryPlanManagement/deliveryPlanAwaitSRM/update.tsx
View file @
ef4eb1e3
...
...
@@ -12,7 +12,7 @@ import { SaveOutlined } from '@ant-design/icons'
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
{
ExternalRoamRecordTableColumn
}
from
'../../constants/page-table-column'
import
_
from
'lodash'
import
{
getDayAll
,
godAtob
,
integrationArr
t
oObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
getDayAll
,
godAtob
,
integrationArr
T
oObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
BrandColumn
,
ClassColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
MaterialModelColumn
,
MaterialNameColumn
,
MaterialNoColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderSummaryColumn
,
OrderNumColumn
,
PlannedDeliveryNumColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
getOrderDeliveryPlanDeliveryHistory
,
getOrderDeliveryPlanDetail
,
getOrderDeliveryPlanDetailProductPage
,
postOrderDeliveryPlanUpdate
}
from
'@/services/OrderNewV2Api'
import
moment
from
'moment'
...
...
@@ -148,7 +148,7 @@ const DeliveryPlanAwaitSRMUpdate: React.FC = () => {
return
{
...
item
,
...
integrationOjb
(
item
.
dayNumbers
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArr
t
oObj
(
o
.
planDays
)
}))
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArr
T
oObj
(
o
.
planDays
)
}))
}
})
materialTableDataRef
.
current
=
assemble
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanQuery/details.tsx
View file @
ef4eb1e3
...
...
@@ -4,126 +4,152 @@
*/
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
history
}
from
'umi'
import
_
from
'lodash'
import
moment
from
'moment'
import
{
Steps
,
Table
,
Tag
}
from
'antd'
import
AnchorPage
from
'@/components/AnchorPage'
import
{
AnchorsItem
}
from
"@/components/AnchorPage"
import
AnchorPage
,
{
AnchorsItem
}
from
"@/components/AnchorPage"
import
BaseInfo
from
'@/components/BaseInfo/BaseInfo'
import
{
BaseInfo
as
base_Info
,
Circulation
,
ConfirmDeliveryPlan
,
DeliveryPlanDetails
,
ExternalRoamRecord
,
ExternalState
,
PlannedDelivery
,
PlanningCycle
,
PlanNumber
,
PlanSummary
,
Purchaser
,
SubmitDeliveryPlan
,
Supplier
,
SupplyMember
,
}
from
'../../constants'
import
{
ExternalRoamRecordTableColumn
,
PlannedDeliveryMaterialExpandableTableColumn
,
PlannedDeliveryMaterialTableColumn
}
from
'../../constants/page-table-column'
import
{
BaseInfo
as
base_Info
,
Circulation
,
ConfirmDeliveryPlan
,
ExternalRoamRecord
,
ExternalState
,
PlannedDelivery
,
PlanningCycle
,
PlanNumber
,
PlanSummary
,
Purchaser
,
SubmitDeliveryPlan
,
Supplier
,
SupplyMember
,
SupplyMembersLabel
,
}
from
'../../constants'
import
{
ExternalRoamRecordTableColumn
}
from
'../../constants/page-table-column'
import
{
BrandColumn
,
ClassColumn
,
CommodityNoColumn
,
ConsigneeNumColumn
,
DeliveredNumColumn
,
MaterialModelColumn
,
MaterialNameColumn
,
MaterialNoColumn
,
OrderCreatedAtColumn
,
OrderNoColumn
,
OrderNumColumn
,
OrderSummaryColumn
,
PlannedDeliveryNumColumn
,
TradeNameColumn
,
TransitNumColumn
,
UntilColumn
}
from
'../../constants/table-column'
import
{
getDayAll
,
godAtob
,
integrationArrToObj
,
integrationOjb
,
TagStatus
}
from
'../../utils'
import
{
getOrderDeliveryPlanDeliveryHistory
,
getOrderDeliveryPlanDetail
,
getOrderDeliveryPlanDetailProductPage
}
from
'@/services/OrderNewV2Api'
const
columnB2B
=
[
{
...
CommodityNoColumn
,
dataIndex
:
'skuId'
,
width
:
80
,
},
{
...
TradeNameColumn
,
dataIndex
:
'productName'
,
width
:
192
,
},
{
...
ClassColumn
,
dataIndex
:
'category'
,
width
:
96
,
},
{
...
BrandColumn
,
dataIndex
:
'brand'
,
width
:
96
,
},
{
...
UntilColumn
,
dataIndex
:
'unit'
,
width
:
64
,
},
{
...
OrderNumColumn
,
dataIndex
:
'purchaseCountSum'
,
width
:
96
,
},
{
...
ConsigneeNumColumn
,
dataIndex
:
'receiveCountSum'
,
width
:
96
,
},
{
...
TransitNumColumn
,
dataIndex
:
'transitCountSum'
,
width
:
96
,
},
{
...
DeliveredNumColumn
,
dataIndex
:
'leftCountSum'
,
width
:
96
,
},
{
...
PlannedDeliveryNumColumn
,
dataIndex
:
'planCountSum'
,
width
:
128
,
},
]
const
columnSRM
=
[
{
...
MaterialNoColumn
,
dataIndex
:
'skuId'
,
width
:
80
,
},
{
...
MaterialNameColumn
,
dataIndex
:
'productName'
,
width
:
192
,
},
{
...
MaterialModelColumn
,
dataIndex
:
'productName'
,
width
:
128
,
},
{
...
ClassColumn
,
dataIndex
:
'category'
,
width
:
96
,
},
{
...
BrandColumn
,
dataIndex
:
'brand'
,
width
:
96
,
},
{
...
UntilColumn
,
dataIndex
:
'unit'
,
width
:
64
,
},
{
...
OrderNumColumn
,
dataIndex
:
'purchaseCountSum'
,
width
:
96
,
},
{
...
ConsigneeNumColumn
,
dataIndex
:
'receiveCountSum'
,
width
:
96
,
},
{
...
TransitNumColumn
,
dataIndex
:
'transitCountSum'
,
width
:
96
,
},
{
...
DeliveredNumColumn
,
dataIndex
:
'leftCountSum'
,
width
:
96
,
},
{
...
PlannedDeliveryNumColumn
,
dataIndex
:
'planCountSum'
,
width
:
128
,
},
]
const
tagStatus
=
new
TagStatus
()
const
statusTxt
=
new
Map
([[
1
,
'待提交'
],
[
2
,
'待确认'
],
[
3
,
'待修订'
],
[
4
,
'已确认'
],
[
5
,
'已删除'
]])
const
DeliveryPlanManagementDetails
:
React
.
FC
=
()
=>
{
const
[
iAnchors
,
setiAnchors
]
=
useState
<
AnchorsItem
[]
>
(
DeliveryPlanDetails
)
const
[
details
,
setDetails
]
=
useState
<
any
>
({})
const
[
test
,
setTest
]
=
useState
<
any
>
([])
const
data
=
[
{
id
:
'1'
,
'name1'
:
'Q89YTE1'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'红色/XXL/厚1.5mm'
,
'name4'
:
'牛皮'
,
'name5'
:
'PELLE'
,
'name6'
:
'尺'
,
'name7'
:
'10,000'
,
'name8'
:
'10,000'
,
'name9'
:
'10,000'
,
'name10'
:
'10,000'
,
'name11'
:
'10,000'
,
},
{
id
:
'2'
,
'name1'
:
'Q89YTE1'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'红色/XXL/厚1.5mm'
,
'name4'
:
'牛皮'
,
'name5'
:
'PELLE'
,
'name6'
:
'尺'
,
'name7'
:
'10,000'
,
'name8'
:
'10,000'
,
'name9'
:
'10,000'
,
'name10'
:
'10,000'
,
'name11'
:
'10,000'
,
},
{
id
:
'3'
,
'name1'
:
'Q89YTE1'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'红色/XXL/厚1.5mm'
,
'name4'
:
'牛皮'
,
'name5'
:
'PELLE'
,
'name6'
:
'尺'
,
'name7'
:
'10,000'
,
'name8'
:
'10,000'
,
'name9'
:
'10,000'
,
'name10'
:
'10,000'
,
'name11'
:
'10,000'
,
},
{
id
:
'4'
,
'name1'
:
'Q89YTE1'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'红色/XXL/厚1.5mm'
,
'name4'
:
'牛皮'
,
'name5'
:
'PELLE'
,
'name6'
:
'尺'
,
'name7'
:
'10,000'
,
'name8'
:
'10,000'
,
'name9'
:
'10,000'
,
'name10'
:
'10,000'
,
'name11'
:
'10,000'
,
},
]
const
expandedRowRender
=
()
=>
{
const
data
=
[
{
id
:
'1'
,
'name1'
:
'DPTY12'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'规格型号'
,
'name4'
:
'2020-08-25 09:50'
,
'name5'
:
'20,000'
,
'name6'
:
'4,000'
,
'name7'
:
'2,000'
,
'name8'
:
'14,000'
,
},
{
id
:
'2'
,
'name1'
:
'DPTY12'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'规格型号'
,
'name4'
:
'2020-08-25 09:50'
,
'name5'
:
'20,000'
,
'name6'
:
'4,000'
,
'name7'
:
'2,000'
,
'name8'
:
'14,000'
,
},
{
id
:
'3'
,
'name1'
:
'DPTY12'
,
'name2'
:
'进口头层黄牛皮荔枝纹'
,
'name3'
:
'规格型号'
,
'name4'
:
'2020-08-25 09:50'
,
'name5'
:
'20,000'
,
'name6'
:
'4,000'
,
'name7'
:
'2,000'
,
'name8'
:
'14,000'
,
const
{
location
:
{
query
:
{
ty
,
i
}
}
}
=
history
// 1-B2B 2-SRM
const
deliveryPlanType
=
godAtob
(
ty
as
string
)
const
id
=
godAtob
(
i
as
string
)
console
.
log
(
'object :>> '
,
ty
,
deliveryPlanType
)
console
.
log
(
'object :>> '
,
i
,
id
)
const
[
iAnchors
,
setIAnchors
]
=
useState
<
AnchorsItem
[]
>
([
Circulation
,
base_Info
,
PlannedDelivery
,
ExternalRoamRecord
])
// 动态 TableColumn
const
[
tableColumn
,
setTableColumn
]
=
useState
<
any
>
([])
// 动态 expandIconColumn
const
[
expandIconColumn
,
setExpandIconColumn
]
=
useState
<
any
>
([
{
...
OrderNoColumn
,
dataIndex
:
'orderNo'
,
width
:
80
,
},
{
...
OrderSummaryColumn
,
dataIndex
:
'orderDigest'
,
width
:
200
,
},
{
...
OrderCreatedAtColumn
,
dataIndex
:
'createTime'
,
width
:
160
,
},
{
...
OrderNumColumn
,
dataIndex
:
'purchaseCount'
,
width
:
96
,
},
{
...
ConsigneeNumColumn
,
dataIndex
:
'receiveCount'
,
width
:
96
,
},
{
...
TransitNumColumn
,
dataIndex
:
'transitCount'
,
width
:
96
,
},
{
...
DeliveredNumColumn
,
dataIndex
:
'leftCount'
,
width
:
96
,
},
{
...
PlannedDeliveryNumColumn
,
dataIndex
:
'planCount'
,
width
:
128
,
},
])
const
expandedRowRender
=
(
record
)
=>
{
return
<
Table
rowKey=
{
'id'
}
columns=
{
expandIconColumn
}
dataSource=
{
record
.
orders
}
pagination=
{
false
}
tableLayout=
"fixed"
/>
}
// 详情
const
[
details
,
setDetails
]
=
useState
<
any
>
(
null
)
// 计划送货物 列表
const
[
tableData
,
setTableData
]
=
useState
<
any
>
(
null
)
// 外部流转单据记录
const
[
externalRoamRecordData
,
setExternalRoamRecordData
]
=
useState
<
any
>
(
null
)
// 计划周期 渲染日期
const
handleDateAssembleColumn
=
(
startDate
:
string
,
endDate
:
string
)
=>
{
const
dates
=
getDayAll
(
moment
(
startDate
).
format
(
'YYYY-MM-DD'
),
moment
(
endDate
).
format
(
'YYYY-MM-DD'
))
const
datesColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
120
,
align
:
'center'
,
}))
const
datesExpandIconColumn
=
dates
.
map
((
item
,
i
)
=>
({
title
:
item
.
substr
(
1
),
dataIndex
:
item
,
key
:
item
,
width
:
80
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
span
>
{
text
?.
planCount
}
</
span
>)
}))
const
table_column
=
deliveryPlanType
===
'1'
?
columnB2B
:
deliveryPlanType
===
'2'
?
columnSRM
:
[]
setTableColumn
([...
table_column
,
...
datesColumn
])
setExpandIconColumn
([...
expandIconColumn
,
...
datesExpandIconColumn
])
}
// 获取计划送货 物料
const
getPlannedDelivery
=
()
=>
{
getOrderDeliveryPlanDetailProductPage
({
id
,
current
:
'1'
,
pageSize
:
'10'
}).
then
((
res
)
=>
{
if
(
res
.
code
===
1000
)
{
const
assemble
=
res
.
data
.
data
.
map
(
item
=>
{
return
{
...
item
,
...
integrationOjb
(
item
.
dayNumbers
),
orders
:
item
.
orders
.
map
(
o
=>
({
...
o
,
...
integrationArrToObj
(
o
.
planDays
)
}))
}
})
setTableData
(
assemble
)
}
})
}
// 获取详情
const
getDetails
=
()
=>
{
getOrderDeliveryPlanDetail
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
setDetails
(
res
.
data
)
getPlannedDelivery
()
handleDateAssembleColumn
(
res
.
data
.
planStartTime
,
res
.
data
.
planEndTime
)
}
]
return
<
Table
rowKey=
{
'id'
}
columns=
{
[...
PlannedDeliveryMaterialExpandableTableColumn
,
...
test
]
}
dataSource=
{
data
}
pagination=
{
false
}
/>
})
}
// 获取流转记录
const
getExternalRoamRecordData
=
()
=>
{
getOrderDeliveryPlanDeliveryHistory
({
id
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
&&
!
_
.
isEmpty
(
res
.
data
))
{
setExternalRoamRecordData
(
res
.
data
)
}
})
}
useEffect
(()
=>
{
setTimeout
(()
=>
{
let
arr
=
Array
.
from
(
Array
(
90
)).
map
((
item
,
i
)
=>
({
title
:
'日期'
+
i
,
dataIndex
:
'date'
+
i
,
width
:
'64px'
,
align
:
'center'
}))
console
.
log
(
'执行渲染 :>> '
,
arr
);
setTest
(
arr
)
},
0
)
getDetails
()
getExternalRoamRecordData
()
},
[])
return
(
<
AnchorPage
title=
{
details
?.
name
||
'没有title'
}
title=
{
details
?.
planNo
}
onBack=
{
()
=>
history
.
goBack
()
}
anchors=
{
iAnchors
}
>
...
...
@@ -134,30 +160,28 @@ const DeliveryPlanManagementDetails: React.FC = () => {
</
Steps
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
base_Info
.
name
}
id=
{
base_Info
.
key
}
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanNumber
}
>
DL2014070100001
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
SupplyMember
}
>
温州龙昌手袋有限公司
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanSummary
}
>
2014-07-01~2014-07-31 广州白马皮具交易中心送货计划
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanningCycle
}
>
2020-08-25 至 2020-10-25
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanNumber
}
>
{
details
?.
planNo
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
SupplyMembersLabel
}
>
{
details
?.
vendorMemberName
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanningCycle
}
>
{
moment
(
details
?.
planStartTime
).
format
(
'YYYY-MM-DD'
)
}
~
{
moment
(
details
?.
planEndTime
).
format
(
'YYYY-MM-DD'
)
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
PlanSummary
}
>
{
details
?.
digest
}
</
BaseInfo
.
BaseInfoItem
>
<
BaseInfo
.
BaseInfoItem
label=
{
ExternalState
}
>
<
Tag
color=
'green'
>
已提交
</
Tag
>
<
Tag
color=
{
tagStatus
.
getTagStyle
(
details
?.
status
).
bgColor
}
>
<
span
style=
{
{
color
:
tagStatus
.
getTagStyle
(
details
?.
status
).
fontColor
}
}
>
{
statusTxt
.
get
(
details
?.
status
)
}
</
span
>
</
Tag
>
</
BaseInfo
.
BaseInfoItem
>
</
BaseInfo
>
<
BaseInfo
className=
'mt-16'
title=
{
PlannedDelivery
.
name
}
id=
{
PlannedDelivery
.
key
}
cols=
{
1
}
>
{
/* B2B 显示计划送货物料,SRM显示计划送货商品 */
}
<
Table
// defaultExpandAllRows
rowKey=
{
'
i
d'
}
columns=
{
[...
PlannedDeliveryMaterialTableColumn
,
...
test
]
}
rowKey=
{
'
skuI
d'
}
columns=
{
tableColumn
}
expandable=
{
{
expandedRowRender
}
}
dataSource=
{
d
ata
}
dataSource=
{
tableD
ata
}
tableLayout=
"fixed"
scroll=
{
{
x
:
2022
}
}
/>
...
...
@@ -165,7 +189,7 @@ const DeliveryPlanManagementDetails: React.FC = () => {
<
BaseInfo
className=
'mt-16'
title=
{
ExternalRoamRecord
.
name
}
id=
{
ExternalRoamRecord
.
key
}
cols=
{
1
}
>
<
Table
rowKey=
{
'id'
}
dataSource=
{
d
ata
}
dataSource=
{
externalRoamRecordD
ata
}
columns=
{
ExternalRoamRecordTableColumn
}
/>
</
BaseInfo
>
...
...
src/pages/order/deliveryPlanManagement/deliveryPlanQuery/index.tsx
View file @
ef4eb1e3
...
...
@@ -14,7 +14,7 @@ import { createFormActions } from '@formily/antd'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
deliveryPlanManagementQuerySchema
}
from
'./schema'
import
{
TagStatus
}
from
'../../utils'
import
{
godBtoa
,
TagStatus
}
from
'../../utils'
import
dayjs
from
'dayjs'
import
{
ExternalStateColumn
,
OperationColumn
,
PlannedEndDateColumn
,
PlannedStartDateColumn
,
PlanNumberColumn
,
PlanSummaryColumn
,
SupplyMemberColumn
}
from
'../../constants/table-column'
import
{
getOrderDeliveryPlanBuyerPage
}
from
'@/services/OrderNewV2Api'
;
...
...
@@ -38,7 +38,7 @@ const DeliveryPlanManagementQuery: React.FC = () => {
}
const
buttonGroup
=
{
'查看'
:
true
,
'变更'
:
record
.
id
===
1
'变更'
:
record
.
status
===
4
}
const
operationHandler
=
{
'查看'
:
()
=>
{
console
.
log
(
'查看 :>> '
,)
},
...
...
@@ -57,8 +57,8 @@ const DeliveryPlanManagementQuery: React.FC = () => {
...
PlanNumberColumn
,
dataIndex
:
'planNo'
,
key
:
'planNo'
,
width
:
160
,
render
:
(
text
:
string
,
record
:
any
)
=>
<
EyePreview
url=
'/memberCenter/order/deliveryPlanManagement/query/details'
>
{
text
}
</
EyePreview
>
//
width: 160,
render
:
(
text
:
string
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/order/deliveryPlanManagement/query/details?ty=${godBtoa(record.orderType)}&i=${godBtoa(record.id)}`
}
>
{
text
}
</
EyePreview
>
},
{
...
PlanSummaryColumn
,
dataIndex
:
'digest'
,
key
:
'digest'
},
{
...
PlannedStartDateColumn
,
dataIndex
:
'planStartTime'
,
key
:
'planStartTime'
,
render
:
(
text
:
string
,
record
:
any
)
=>
(
dayjs
(
text
).
format
(
'YYYY-MM-DD'
))
},
...
...
src/pages/order/utils/assemblyTools.ts
View file @
ef4eb1e3
...
...
@@ -7,7 +7,7 @@
* @param arr
* @returns
*/
const
convertArr
t
oObj
=
(
arr
)
=>
{
const
convertArr
T
oObj
=
(
arr
)
=>
{
return
arr
.
reduce
((
obj
,
currVal
)
=>
{
return
{
...
obj
,
...
...
@@ -39,7 +39,7 @@ const integrationOjb = (obj) => {
* @param arr
* @returns
*/
const
integrationArr
t
oObj
=
(
arr
)
=>
{
const
integrationArr
T
oObj
=
(
arr
)
=>
{
return
arr
.
reduce
((
obj
,
currVal
,
idx
)
=>
{
return
{
...
obj
,
...
...
@@ -68,9 +68,9 @@ const godAtob = (str: string) => {
}
export
{
convertArr
t
oObj
,
convertArr
T
oObj
,
integrationOjb
,
integrationArr
t
oObj
,
integrationArr
T
oObj
,
godBtoa
,
godAtob
,
}
\ No newline at end of file
src/pages/order/utils/status.ts
View file @
ef4eb1e3
...
...
@@ -10,7 +10,7 @@ interface StatusStyleItem {
/**
* 状态描述
* - default: 默认
* - toS
bu
mit: 待提交
* - toS
ub
mit: 待提交
* - toBeConfirmed: 待确认
* - toBeModified: 待修改
* - confirmed: 已确认
...
...
@@ -18,23 +18,23 @@ interface StatusStyleItem {
* - voided: 已确认
*/
enum
StatusEnum
{
Default
=
1
,
ToS
bumit
=
2
,
ToBeConfirmed
=
3
,
ToBeModified
=
4
,
Confirmed
=
5
,
Generated
=
6
,
Voided
=
7
,
Default
=
undefined
,
ToS
ubmit
=
1
,
ToBeConfirmed
=
2
,
ToBeModified
=
3
,
Confirmed
=
4
,
Generated
=
5
,
Voided
=
6
,
}
class
TagStatus
{
/**
* 默认的S
yt
le集合 具体情况,看StatusEnum
* 默认的S
ty
le集合 具体情况,看StatusEnum
*/
#
tagStatusColor
:
StatusStyleItem
=
{
[
StatusEnum
.
Default
]:
this
.
defaultStatusStyle
(),
[
StatusEnum
.
ToS
bumit
]:
this
.
toSbu
mitStatusStyle
(),
[
StatusEnum
.
ToS
ubmit
]:
this
.
toSub
mitStatusStyle
(),
[
StatusEnum
.
ToBeConfirmed
]:
this
.
toBeConfirmedStyle
(),
[
StatusEnum
.
ToBeModified
]:
this
.
toBeConfirmedStyle
(),
[
StatusEnum
.
Confirmed
]:
this
.
confirmedStyle
(),
...
...
@@ -46,7 +46,7 @@ class TagStatus {
return
{
bgColor
:
'#f2f4f5'
,
fontColor
:
'#000'
,
txt
:
'默认'
}
}
toS
bu
mitStatusStyle
()
{
toS
ub
mitStatusStyle
()
{
return
{
bgColor
:
'#f4f5f7'
,
fontColor
:
'#5c626a'
,
txt
:
'待提交'
};
}
...
...
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