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
d4c9ae54
Commit
d4c9ae54
authored
Jun 01, 2021
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-srm' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev-srm
parents
f4f70aa6
00634db6
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
922 additions
and
85 deletions
+922
-85
handlingRoute.ts
config/routes/handlingRoute.ts
+8
-4
handling.ts
src/constants/handling.ts
+111
-2
index.tsx
src/pages/handling/assign/detail/index.tsx
+1
-0
detail.tsx
src/pages/handling/assign/tobeAddStock/detail.tsx
+123
-0
index.tsx
src/pages/handling/assign/tobeAddStock/index.tsx
+32
-6
index.less
...g/assign/tobeReceive/components/ConfirmReceive/index.less
+15
-0
index.tsx
...ng/assign/tobeReceive/components/ConfirmReceive/index.tsx
+69
-0
detail.tsx
src/pages/handling/assign/tobeReceive/detail.tsx
+171
-0
comfrimOtherQuery.tsx
src/pages/handling/common/columns/comfrimOtherQuery.tsx
+4
-1
query.tsx
src/pages/handling/common/columns/query.tsx
+2
-1
stockQuery.tsx
src/pages/handling/common/columns/stockQuery.tsx
+19
-8
useCommonsInDetail.tsx
src/pages/handling/common/hooks/useCommonsInDetail.tsx
+2
-2
useInitialValue.tsx
src/pages/handling/common/hooks/useInitialValue.tsx
+18
-12
columns.tsx
src/pages/handling/components/DeliveryInfo/columns.tsx
+10
-10
index.tsx
src/pages/handling/components/DeliveryInfo/index.tsx
+52
-13
index.tsx
src/pages/handling/confirm/Query/index.tsx
+4
-0
detail.tsx
src/pages/handling/confirm/allQuery/detail.tsx
+10
-5
index.tsx
src/pages/handling/confirm/allQuery/index.tsx
+10
-4
index.tsx
src/pages/handling/confirm/pendingAddLogistics/index.tsx
+5
-2
detail.tsx
src/pages/handling/confirm/pendingDelivered/detail.tsx
+42
-9
detail.tsx
src/pages/handling/confirm/pendingLevelI/detail.tsx
+2
-1
detail.tsx
src/pages/handling/confirm/pendingLevelII/detail.tsx
+2
-1
detail.tsx
src/pages/handling/confirm/pendingReceipt/detail.tsx
+206
-0
detail.tsx
src/pages/handling/confirm/pendingSubmit/detail.tsx
+1
-1
index.less
...s/detail/components/bidCommonLayout/resultItem/index.less
+2
-2
index.tsx
...es/transaction/purchaseAbility/onlineBid/search/index.tsx
+1
-1
No files found.
config/routes/handlingRoute.ts
View file @
d4c9ae54
...
...
@@ -129,8 +129,9 @@ const HandlingRoute = {
path
:
'/memberCenter/handling/assign/pendingAddProcessing/detail'
,
name
:
'待新增加工入库单'
,
icon
:
'smile'
,
component
:
'@/pages/handling/assign/detail'
,
hideInMenu
:
true
component
:
'@/pages/handling/assign/tobeAddStock/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
// 指派生产通知单 -> 待收货生产通知单
{
...
...
@@ -144,8 +145,9 @@ const HandlingRoute = {
path
:
'/memberCenter/handling/assign/pendingReceive/detail'
,
name
:
'待收货生产通知单'
,
icon
:
'smile'
,
component
:
'@/pages/handling/assign/detail'
,
component
:
'@/pages/handling/assign/
tobeReceive/
detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
]
...
...
@@ -290,8 +292,10 @@ const HandlingRoute = {
path
:
'/memberCenter/handling/confirm/pendingReceipt/detail'
,
name
:
'待确认回单生产通知单'
,
icon
:
'smile'
,
component
:
'@/pages/handling/
assign
/detail'
,
component
:
'@/pages/handling/
confirm/pendingReceipt
/detail'
,
hideInMenu
:
true
,
noMargin
:
true
,
},
]
}
...
...
src/constants/handling.ts
View file @
d4c9ae54
...
...
@@ -30,8 +30,117 @@ export const ADD_LOGISTICS = 24
*/
export
const
EDIT_LOGISTICS
=
-
8
/**
* @特殊
* datail 当 outerTaskType 为 29的时候是手工发胡
*/
export
const
isManualDelivery
=
29
;
/**
* supplier
* 待新增加工入库单
*/
export
const
TO_BE_ADD_STORAGE
=
22
;
/**
* supplier
* 待审核加工入库单
*/
export
const
TO_BE_EXAM_STORAGE
=
23
/**
* supplierInnerStatus
*/
export
const
SUPPLIER_INNER_STATUS
=
{
1
:
'待提交审核'
,
2
:
'待审核(一级)'
,
3
:
'待审核(二级)'
,
4
:
'待提交'
,
5
:
'已提交'
,
11
:
'审核不通过(一级)'
,
12
:
'审核不通过(二级)'
,
21
:
'已完成'
,
[
TO_BE_ADD_STORAGE
]:
'待新增加工入库单'
,
[
TO_BE_EXAM_STORAGE
]:
'待审核加工入库单'
,
24
:
'待确认收货'
,
25
:
'已确认收货'
,
26
:
'已终止'
}
const
PROCESS_INNER_STATUS
=
{
/**
* 加工企业内部状态 processINnerstatus
*/
export
const
PROCESS_INNER_STATUS
=
{
1
:
'待提交审核'
,
2
:
'待审核(一级)'
,
3
:
'待审核(二级)'
,
4
:
'待确认'
,
5
:
'已确认(接受)'
,
11
:
'提交审核不通过'
,
12
:
'审核不通过(一级)'
,
13
:
'审核不同通过(二级)'
,
21
:
'已完成'
,
[
PENDING_ADD_PROCESS_DELIVERY
]:
"待新增加工发货单"
,
[
PENDING_VERIFY_PROCESS_DELIVERY
]:
"待审核加工发货单"
[
PENDING_VERIFY_PROCESS_DELIVERY
]:
"待审核加工发货单"
,
24
:
'待新增物流单'
,
25
:
'待确认物流单'
,
26
:
'待确认发货'
,
27
:
'已确认发货'
,
28
:
'待确认回单'
,
29
:
'已确认(不接受)'
,
30
:
'不接受物流单'
,
31
:
'已中止'
}
/**
* 总的内部状态
* status
*/
export
const
STATUS
=
{
1
:
'待提交审核'
,
2
:
'待审核(一级)'
,
3
:
'待审核(二级)'
,
4
:
'待提交'
,
5
:
'待提交审核'
,
6
:
'待审核(一级)'
,
7
:
'待审核(二级)'
,
8
:
'待确认'
,
9
:
'接受申请通知单'
,
10
:
'待新增加工发货单'
,
11
:
'待审核加工发货单'
,
12
:
'待新增物流单'
,
13
:
'待确认物流单'
,
14
:
'待确认发货'
,
15
:
'待新增加工入库单'
,
16
:
'待审核加工入库单'
,
17
:
'待确认发货'
,
18
:
'待确认回单'
,
19
:
'完成'
,
21
:
'审核不通过(一级)'
,
22
:
'审核不通过(二级)'
,
23
:
'提交审核不通过'
,
24
:
'审核不通过(一级)'
,
25
:
'审核不通过(二级)'
,
26
:
'不接受申请通知单'
,
27
:
'不接受物流单'
,
28
:
'中止'
,
}
/**
* outerStatus
*/
export
const
COMPLETE
=
9
export
const
OUTER_STATUS
=
{
1
:
'待提交'
,
2
:
'待确认'
,
3
:
'待新增加工发货单'
,
4
:
'待新增物流单'
,
5
:
'代发货'
,
6
:
'待新增加工入库单'
,
7
:
'待收货'
,
8
:
'待确认回单'
,
[
COMPLETE
]:
'已完成'
,
21
:
'不接受'
,
22
:
'已中止'
}
src/pages/handling/assign/detail/index.tsx
View file @
d4c9ae54
...
...
@@ -38,6 +38,7 @@ import {
}
from
'../../common'
;
import
DeliverGood
from
'../../components/DeliverGood'
;
/**
* @v2废弃
* 进入详情页,根据不同的pathname 获取他们的service,
* Assign 指的是指派通知单, comfirm 是确认通知单
*/
...
...
src/pages/handling/assign/tobeAddStock/detail.tsx
0 → 100644
View file @
d4c9ae54
import
React
,
{
useEffect
,
useMemo
,
useState
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
,
Drawer
}
from
'antd'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
import
CustomizeColumn
from
'@/components/CustomizeColumn'
;
import
AuditProcess
from
'@/components/AuditProcess'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
useGetAnchorHeader
from
'../../common/hooks/useGetAnchorHeader'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
useBasicInfoColumnInDetail
}
from
'../../common/hooks/useCommonsInDetail'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetEnhanceSupplierToBeAddDetailsResponse
}
from
'@/services/EnhanceApi'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
useColumnWithFilter
from
'../../common/hooks/useColumnWithFilter'
;
import
{
columns
as
orderColumns
,
productColumn
}
from
'../../common/columns/detailNoticeInfoColumns'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
DeliveryInfo
from
'../../components/DeliveryInfo'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
{
innerFlowColumns
,
outerWorkflowRecordsColumn
}
from
'../../common/columns/recordFlowColumns'
import
MachiningDetail
,
{
DataPropsType
}
from
'../../components/MachiningDetail'
;
import
useViewProcessInfo
from
'../../common/hooks/useViewProcessInfo'
;
const
Info
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
{
visible
,
toggle
,
handleViewDetail
,
processDataProps
}
=
useViewProcessInfo
();
const
anchorColumn
=
useGetAnchorHeader
({
blackList
:
[]})
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetEnhanceSupplierToBeAddDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhanceSupplierToBeAddStorageDetails
,
{
id
:
id
.
toString
()
})
const
{
basicInfoColumn
,
payInfoColumns
,
cacheOtherInfo
,
annexInfo
}
=
useBasicInfoColumnInDetail
({
initialValue
})
const
defaultColumns
=
initialValue
?.
source
===
1
?
orderColumns
:
productColumn
;
const
outerWorkflowRecordsList
=
initialValue
?.
outerWorkflowRecordsList
||
[];
const
innerWorkflowRecordsList
=
initialValue
?.
innerWorkflowRecordsList
||
[];
const
{
columns
}
=
useColumnWithFilter
(
defaultColumns
,
[
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
<
a
onClick=
{
()
=>
handleViewDetail
(
record
)
}
>
查看加工明细
</
a
>
}
}
]);
const
handleSubmit
=
async
()
=>
{
const
{
data
,
code
}
=
await
PublicApi
.
postEnhanceSupplierToBeAddStorageExam
({
id
:
id
,
});
if
(
code
===
1000
)
{
history
.
back
();
}
}
const
cacheStyle
=
useMemo
(()
=>
({
margin
:
`
${
theme
[
"@margin-md"
]}
0`
}),
[])
return
(
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
<
Button
onClick=
{
handleSubmit
}
type=
"primary"
>
提交
</
Button
>
}
>
<
AuditProcess
outerVerifySteps=
{
initialValue
&&
initialValue
.
outerTaskList
?
initialValue
.
outerTaskList
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
taskName
,
roleName
:
item
.
roleName
,
status
:
item
.
isExecute
?
'finish'
:
'wait'
,
}))
:
[]
}
outerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
outerTaskList
)
}
innerVerifySteps=
{
initialValue
&&
initialValue
.
innerTaskList
?
initialValue
.
innerTaskList
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
taskName
,
roleName
:
item
.
roleName
,
status
:
item
.
isExecute
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
innerTaskList
)
}
id=
"progress"
/>
<
div
style=
{
cacheStyle
}
id=
"basicInfo"
>
<
CustomizeColumn
data=
{
basicInfoColumn
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
{
/* 通知单明细 */
}
<
div
style=
{
cacheStyle
}
id=
"noticeDetails"
>
<
MellowCard
title=
"通知单明细"
>
<
Table
rowKey=
{
"id"
}
dataSource=
{
initialValue
?.
details
}
columns=
{
columns
}
/>
</
MellowCard
>
</
div
>
<
div
style=
{
cacheStyle
}
id=
"deliveryDetail"
>
<
DeliveryInfo
source=
{
initialValue
?.
source
as
1
|
2
}
statisticsDataSource=
{
initialValue
?.
details
}
infoDataSource=
{
initialValue
?.
pnoReceiveDeliverDetailDOList
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"payInfo"
data=
{
payInfoColumns
}
title=
"交付信息"
column=
{
3
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"otherRequire"
data=
{
cacheOtherInfo
}
title=
"其他要求"
column=
{
3
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"annex"
data=
{
annexInfo
}
title=
"附件"
column=
{
3
}
/>
</
div
>
<
div
id=
"record"
>
<
FlowRecords
outerRowkey=
"id"
innerRowkey=
"id"
outerColumns=
{
outerWorkflowRecordsColumn
}
innerColumns=
{
innerFlowColumns
}
outerDataSource=
{
outerWorkflowRecordsList
}
innerDataSource=
{
innerWorkflowRecordsList
}
/>
</
div
>
</
AnchorPage
>
<
MachiningDetail
visible=
{
visible
}
dataProps=
{
processDataProps
}
onClose=
{
()
=>
toggle
(
false
)
}
/>
</
Spin
>
)
}
export
default
Info
src/pages/handling/assign/tobeAddStock/index.tsx
View file @
d4c9ae54
import
React
,
{
useCallback
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Space
,
Card
,
Button
}
from
'antd'
;
import
{
Space
,
Card
,
Button
,
Popconfirm
}
from
'antd'
;
import
{
querySchema
}
from
'../../common/schemas/query'
;
import
{
StandardTable
}
from
'god'
;
import
NiceForm
from
'@/components/NiceForm'
;
...
...
@@ -16,6 +16,7 @@ import useFetchFilterData, { FilterResType } from '../../common/hooks/useFetchFi
import
useColumnWithFilter
from
'../../common/hooks/useColumnWithFilter'
;
import
{
Link
,
useRouteMatch
}
from
'umi'
import
{
DEPENDENT_DOC_PRODUCTION
,
DOC_TYPE_PROCESS_INVOICE
,
DOC_TYPE_PROCESS_RECEIPT
}
from
'@/constants'
;
import
{
TO_BE_ADD_STORAGE
,
TO_BE_EXAM_STORAGE
}
from
'@/constants/handling'
;
const
formActions
=
createFormActions
();
const
queryColumns
=
setColumnsByLinks
({
...
...
@@ -35,17 +36,42 @@ const AllQuery = () => {
render
:
(
text
,
record
)
=>
{
return
(
<
Space
>
<
Link
to=
{
`${ADD_PROCESS_PATH}?relevanceInvoicesId=${record.id}&invoicesTypeId=${DOC_TYPE_PROCESS_RECEIPT}&relevanceInvoices=${DEPENDENT_DOC_PRODUCTION}`
}
>
新增加工入库单
</
Link
>
{
record
.
supplierInnerStatus
===
TO_BE_EXAM_STORAGE
&&
(
<
Popconfirm
title=
{
`是否确认审核入库单号为${record.deliveryNo}的加工入库单?`
}
placement=
"left"
okText=
"确定"
cancelText=
"取消"
onConfirm=
{
()
=>
handleExam
({
id
:
record
.
id
})
}
>
<
a
>
审核
</
a
>
</
Popconfirm
>
)
}
{
record
.
supplierInnerStatus
===
TO_BE_ADD_STORAGE
&&
(
<
Link
to=
{
`${ADD_PROCESS_PATH}?relevanceInvoicesId=${record.id}&invoicesTypeId=${DOC_TYPE_PROCESS_RECEIPT}&relevanceInvoices=${DEPENDENT_DOC_PRODUCTION}`
}
>
新增加工入库单
</
Link
>
)
}
</
Space
>
)
}
}
],
filterRes
);
const
handleExam
=
async
(
params
:
{
id
:
number
})
=>
{
const
{
code
,
}
=
await
PublicApi
.
postEnhanceSupplierToBeAddStorageExam
(
params
);
if
(
code
===
1000
)
{
formActions
.
submit
()
}
}
const
handleSearch
=
useCallback
((
values
:
any
)
=>
{
const
searchData
=
onFormatSearchData
(
values
)
...
...
src/pages/handling/assign/tobeReceive/components/ConfirmReceive/index.less
0 → 100644
View file @
d4c9ae54
.container {
display: flex;
flex-direction: column;
.row {
margin-bottom: 24px;
.label {
color: "#909399";
width: 120px;
font-size: 12px;
}
}
}
src/pages/handling/assign/tobeReceive/components/ConfirmReceive/index.tsx
0 → 100644
View file @
d4c9ae54
import
React
from
'react'
;
import
{
Modal
}
from
'antd'
;
import
styles
from
'./index.less'
;
interface
Iprops
{
dataSource
:
{
address
:
string
,
deliveryTime
:
string
,
logisticsNo
:
string
,
company
:
string
},
visible
:
boolean
,
onClose
?:
()
=>
void
,
onConfirm
?:
()
=>
void
,
}
const
ConfirmReceive
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
dataSource
,
visible
,
onClose
,
onConfirm
}
=
props
;
const
rowList
=
[
{
title
:
'发货地址'
,
dataIndex
:
'address'
},
{
title
:
'发货地址'
,
dataIndex
:
'deliveryTime'
},
{
title
:
'发货单号'
,
dataIndex
:
'logisticsNo'
,
render
:
(
text
,
record
)
=>
{
return
(
<
a
>
{
record
.
logisticsNo
}
</
a
>
)
}
},
{
title
:
'发货地址'
,
dataIndex
:
'company'
}
]
return
(
<
Modal
title=
"确认收货"
visible=
{
visible
}
onCancel=
{
onClose
}
onOk=
{
onConfirm
}
>
<
div
className=
{
styles
.
container
}
>
{
rowList
.
map
((
_item
)
=>
{
return
(
<
div
className=
{
styles
.
row
}
>
<
span
className=
{
styles
.
label
}
>
{
_item
.
title
}
</
span
>
<
span
style=
{
styles
.
value
}
>
{
_item
.
render
&&
_item
.
render
(
dataSource
[
_item
.
dataIndex
],
dataSource
)
||
dataSource
[
_item
.
dataIndex
]
}
</
span
>
</
div
>
)
})
}
</
div
>
</
Modal
>
)
}
export
default
ConfirmReceive
src/pages/handling/assign/tobeReceive/detail.tsx
0 → 100644
View file @
d4c9ae54
import
React
,
{
useEffect
,
useMemo
,
useState
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
,
Drawer
}
from
'antd'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
import
CustomizeColumn
from
'@/components/CustomizeColumn'
;
import
AuditProcess
from
'@/components/AuditProcess'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
useGetAnchorHeader
from
'../../common/hooks/useGetAnchorHeader'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
useBasicInfoColumnInDetail
}
from
'../../common/hooks/useCommonsInDetail'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetEnhanceProcessToBeDeliveryDetailsResponse
}
from
'@/services/EnhanceApi'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
useColumnWithFilter
from
'../../common/hooks/useColumnWithFilter'
;
import
{
columns
as
orderColumns
,
productColumn
}
from
'../../common/columns/detailNoticeInfoColumns'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
DeliveryInfo
from
'../../components/DeliveryInfo'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
{
innerFlowColumns
,
outerWorkflowRecordsColumn
}
from
'../../common/columns/recordFlowColumns'
import
MachiningDetail
,
{
DataPropsType
}
from
'../../components/MachiningDetail'
;
import
useModal
from
'@/pages/member/memberEvaluate/hooks/useModal'
;
// import ExamVerify, { SubmitDataTypes } from '@/components/ExamVerify';
// import StopModal, { SubmitDataTypes } from './components/StopModal';
// import DeliveryHandle, { SubmitDataTypes } from './components/DeliveryHandle';
import
useViewProcessInfo
from
'../../common/hooks/useViewProcessInfo'
;
import
{
isManualDelivery
}
from
'@/constants/handling'
;
import
moment
from
'moment'
;
import
ConfirmReceive
from
'./components/ConfirmReceive'
;
const
Info
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
{
visible
,
toggle
,
handleViewDetail
,
processDataProps
}
=
useViewProcessInfo
();
const
{
visible
:
examVisible
,
toggle
:
examToggle
}
=
useModal
();
const
anchorColumn
=
useGetAnchorHeader
({
blackList
:
[]})
const
{
loading
,
initialValue
,
refresh
}
=
useInitialValue
<
GetEnhanceProcessToBeDeliveryDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhanceProcessToBeDeliveryDetails
,
{
id
:
id
.
toString
()
})
const
{
basicInfoColumn
,
payInfoColumns
,
cacheOtherInfo
,
annexInfo
}
=
useBasicInfoColumnInDetail
({
initialValue
})
const
defaultColumns
=
initialValue
?.
source
===
1
?
orderColumns
:
productColumn
;
const
outerWorkflowRecordsList
=
initialValue
?.
outerWorkflowRecordsList
||
[];
const
innerWorkflowRecordsList
=
initialValue
?.
innerWorkflowRecordsList
||
[];
const
[
manualLoading
,
setManualLoading
]
=
useState
<
boolean
>
(
false
);
const
manualDataProps
=
useMemo
(()
=>
{
return
{
address
:
initialValue
?.
manualDeliver
?.
deliveryAddress
,
deliveryTime
:
moment
(
initialValue
?.
manualDeliver
?.
deliveryTime
).
format
(
'YYYY-MM-DD'
),
logisticsNo
:
initialValue
?.
manualDeliver
?.
deliveryNo
,
company
:
initialValue
?.
manualDeliver
?.
logisticsName
}
},
[
initialValue
])
const
{
columns
}
=
useColumnWithFilter
(
defaultColumns
,
[
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
<
a
onClick=
{
()
=>
handleViewDetail
(
record
)
}
>
查看加工明细
</
a
>
}
}
]);
const
handleOnConfirm
=
async
(
currentInnerStatus
:
"2_1_1"
,
params
:
{
produceNoticeOrderId
:
number
,
pnoReceiveDeliverDetailId
:
number
})
=>
{
const
SERVICE_MAP
=
{
'2_1_1'
:
PublicApi
.
postEnhanceSupplierToBeReceiveConfirmReceive
,
}
if
(
!
SERVICE_MAP
[
currentInnerStatus
])
{
return
;
}
// setLoading(true)
const
{
code
,
data
}
=
await
SERVICE_MAP
[
currentInnerStatus
](
params
);
// setLoading(false)
if
(
code
===
1000
)
{
refresh
({
id
:
id
});
}
}
const
handleOnReceive
=
async
()
=>
{
setManualLoading
(
true
)
const
{
data
,
code
}
=
await
PublicApi
.
postEnhanceSupplierToBeReceiveManualReceive
({
id
:
id
});
setManualLoading
(
false
)
if
(
code
===
1000
)
{
refresh
({
id
:
id
});
}
}
const
cacheStyle
=
useMemo
(()
=>
({
margin
:
`
${
theme
[
"@margin-md"
]}
0`
}),
[])
return
(
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
initialValue
?.
outerTaskType
===
isManualDelivery
&&
(
<
Button
loading=
{
manualLoading
}
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
确认手工发货
</
Button
>
)
||
null
}
>
<
AuditProcess
outerVerifySteps=
{
initialValue
&&
initialValue
.
outerTaskList
?
initialValue
.
outerTaskList
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
taskName
,
roleName
:
item
.
roleName
,
status
:
item
.
isExecute
?
'finish'
:
'wait'
,
}))
:
[]
}
outerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
outerTaskList
)
}
innerVerifySteps=
{
initialValue
&&
initialValue
.
innerTaskList
?
initialValue
.
innerTaskList
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
taskName
,
roleName
:
item
.
roleName
,
status
:
item
.
isExecute
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
innerTaskList
)
}
id=
"progress"
/>
<
div
style=
{
cacheStyle
}
id=
"basicInfo"
>
<
CustomizeColumn
data=
{
basicInfoColumn
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
{
/* 通知单明细 */
}
<
div
style=
{
cacheStyle
}
id=
"noticeDetails"
>
<
MellowCard
title=
"通知单明细"
>
<
Table
rowKey=
{
"id"
}
dataSource=
{
initialValue
?.
details
}
columns=
{
columns
}
/>
</
MellowCard
>
</
div
>
<
div
style=
{
cacheStyle
}
id=
"deliveryDetail"
>
<
DeliveryInfo
source=
{
initialValue
?.
source
as
1
|
2
}
statisticsDataSource=
{
initialValue
?.
details
}
infoDataSource=
{
initialValue
?.
pnoReceiveDeliverDetailDOList
}
onConfirm=
{
handleOnConfirm
}
mode=
"receive"
panelKey=
"info"
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"payInfo"
data=
{
payInfoColumns
}
title=
"交付信息"
column=
{
3
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"otherRequire"
data=
{
cacheOtherInfo
}
title=
"其他要求"
column=
{
3
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"annex"
data=
{
annexInfo
}
title=
"附件"
column=
{
3
}
/>
</
div
>
<
div
id=
"record"
>
<
FlowRecords
outerRowkey=
"id"
innerRowkey=
"id"
outerColumns=
{
outerWorkflowRecordsColumn
}
innerColumns=
{
innerFlowColumns
}
outerDataSource=
{
outerWorkflowRecordsList
}
innerDataSource=
{
innerWorkflowRecordsList
}
/>
</
div
>
</
AnchorPage
>
<
MachiningDetail
visible=
{
visible
}
dataProps=
{
processDataProps
}
onClose=
{
()
=>
toggle
(
false
)
}
/>
<
ConfirmReceive
dataSource=
{
manualDataProps
}
visible=
{
examVisible
}
onClose=
{
()
=>
examToggle
(
false
)
}
onConfirm=
{
handleOnReceive
}
/>
</
Spin
>
)
}
export
default
Info
src/pages/handling/common/columns/comfrimOtherQuery.tsx
View file @
d4c9ae54
...
...
@@ -71,9 +71,12 @@ const commonColumns: ColumnsType<any> = [
dataIndex
:
'batch'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
const
id
:
number
=
record
.
deliveryId
;
if
(
record
.
deliveryBatch
===
0
)
{
return
}
return
(
// <EyePreview url={`${url}?id=${id}`} >{record[`${type}No`]}</EyePreview>
<
div
>
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
'column'
}
}
>
<
span
>
第
{
record
.
deliveryBatch
}
批次
</
span
>
<
EyePreview
url=
{
`${links['delivery']}?id=${id}`
}
>
{
record
[
`deliveryNo`
]
}
</
EyePreview
>
</
div
>
...
...
src/pages/handling/common/columns/query.tsx
View file @
d4c9ae54
...
...
@@ -31,8 +31,9 @@ const commonColumns: ColumnsType<any> = [
title
:
'内部状态'
,
dataIndex
:
'innerStatus'
,
render
:
(
text
,
record
:
any
)
=>
{
const
offset
=
record
.
supplierInnerStatus
%
12
return
(
<
Badge
color=
{
innerStatusColor
[
record
.
supplierInnerStatus
]
}
text=
{
record
.
innerStatusName
}
></
Badge
>
<
Badge
color=
{
innerStatusColor
[
offset
]
}
text=
{
record
.
innerStatusName
}
></
Badge
>
)
}
}
...
...
src/pages/handling/common/columns/stockQuery.tsx
View file @
d4c9ae54
...
...
@@ -3,6 +3,9 @@ import { ColumnsType } from 'antd/es/table';
import
moment
from
'moment'
;
import
{
Badge
}
from
'antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
innerStatusColor
,
outerStatusType
}
from
'../colors'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
{
Link
}
from
'umi'
;
const
commonColumns
:
ColumnsType
<
any
>
=
[
{
...
...
@@ -19,17 +22,20 @@ const commonColumns: ColumnsType<any> = [
{
title
:
'外部状态'
,
dataIndex
:
'outerStatus'
,
// render: (text, record: any) => {
// return <StatusTag title={text} type={SUPPLIER_OUTER_STATUS_COLOR[record.outerStatus]}></StatusTag>
// }
render
:
(
text
,
record
:
any
)
=>
{
const
offset
=
record
.
outerStatus
%
5
;
return
<
StatusTag
title=
{
record
.
outerStatusName
}
type=
{
outerStatusType
[
offset
]
as
'success'
}
></
StatusTag
>
}
},
{
title
:
'内部状态'
,
dataIndex
:
'innerStatus'
,
render
:
(
text
,
record
:
any
)
=>
{
const
offset
=
record
.
supplierInnerStatus
%
12
return
(
<
Badge
status=
{
"success"
}
text=
{
text
}
></
Badge
>
)
<
Badge
text=
{
record
.
innerStatusName
}
color=
{
innerStatusColor
[
offset
]
}
></
Badge
>
// record.innerStatusName
)
}
}
]
...
...
@@ -50,7 +56,7 @@ const setColumnsByLinks = (links: { [key: string]: string }) => {
render
:
(
text
,
record
)
=>
{
return
(
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
'column'
,
}
}
>
<
EyePreview
url=
{
`${links['detail']}?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
<
EyePreview
url=
{
`${links['detail']}?id=${record.id}`
}
>
{
record
.
noticeNo
}
</
EyePreview
>
<
span
style=
{
{
marginTop
:
'8px'
}
}
>
{
record
.
summary
}
</
span
>
</
div
>
)
...
...
@@ -64,9 +70,14 @@ const setColumnsByLinks = (links: { [key: string]: string }) => {
const
id
:
number
=
isStorage
?
record
.
storageId
:
record
.
deliveryId
;
return
(
// <EyePreview url={`${url}?id=${id}`} >{record[`${type}No`]}</EyePreview>
<
div
>
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
'column'
}
}
>
<
span
>
第
{
record
.
deliveryBatch
}
批次
</
span
>
<
EyePreview
url=
{
`${links[type]}?id=${id}`
}
>
{
record
[
`${type}No`
]
}
</
EyePreview
>
{
id
&&
(
<
Link
to=
{
`${links[type]}?id=${id}`
}
>
{
record
[
`${type}No`
]
}
</
Link
>
)
}
{
/* <EyePreview url={`${links[type]}?id=${id}`} >{record[`${type}No`]}</EyePreview> */
}
</
div
>
)
}
...
...
src/pages/handling/common/hooks/useCommonsInDetail.tsx
View file @
d4c9ae54
...
...
@@ -105,11 +105,11 @@ export const useBasicInfoColumnInDetail = <T extends object>(options: { initialV
return
[{
title
:
"附件"
,
value
:
(
<
div
>
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
"column"
}
}
>
{
annex
.
map
((
_item
,
key
)
=>
{
return
(
<
a
key=
{
key
}
>
{
_item
.
name
}
</
a
>
<
a
href=
{
_item
.
value
}
style=
{
{
marginTop
:
'4px'
}
}
key=
{
key
}
>
{
_item
.
name
}
</
a
>
)
})
}
...
...
src/pages/handling/common/hooks/useInitialValue.tsx
View file @
d4c9ae54
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
React
,
{
use
Callback
,
use
Effect
,
useState
}
from
'react'
;
/**
* 获取详情
...
...
@@ -18,22 +18,28 @@ type Ires = {
message
:
string
}
function
useInitialValue
<
T
,
P
>
(
api
:
(
params
:
P
,
headers
?:
HeadersType
)
=>
Promise
<
T
&
Ires
>
,
params
:
P
,
headers
?:
HeadersType
):
{
loading
:
boolean
,
initialValue
:
T
}
{
function
useInitialValue
<
T
,
P
>
(
api
:
(
params
:
P
,
headers
?:
HeadersType
)
=>
Promise
<
T
&
Ires
>
,
params
:
P
,
headers
?:
HeadersType
):
{
loading
:
boolean
,
initialValue
:
T
,
refresh
:
(
params
:
P
)
=>
void
}
{
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
const
[
initialValue
,
setInitialValue
]
=
useState
<
null
|
Ires
[
"data"
]
>
(
null
);
useEffect
(()
=>
{
async
function
init
()
{
setLoading
(
true
)
const
{
data
,
code
}
=
await
api
(
params
,
headers
);
setLoading
(
false
)
if
(
code
===
1000
)
{
setInitialValue
(
data
)
}
const
fetchData
=
useCallback
(
async
(
params
)
=>
{
setLoading
(
true
)
const
{
data
,
code
}
=
await
api
(
params
);
setLoading
(
false
)
if
(
code
===
1000
)
{
setInitialValue
(
data
)
}
init
()
},
[
headers
])
useEffect
(()
=>
{
fetchData
(
params
);
},
[])
return
{
loading
,
initialValue
}
const
refresh
=
useCallback
((
params
)
=>
{
fetchData
(
params
)
},
[])
return
{
loading
,
initialValue
,
refresh
}
}
export
default
useInitialValue
src/pages/handling/components/DeliveryInfo/columns.tsx
View file @
d4c9ae54
...
...
@@ -68,17 +68,13 @@ const statisticsColumns: ColumnsType<GetEnhanceSupplierAllDetailsResponse["detai
dataIndex
:
'processTotalPrice'
,
},
{
title
:
'已发货'
,
dataIndex
:
'deliverNum'
},
{
title
:
'已收货/未发货'
,
title
:
'已发货/未发货'
,
dataIndex
:
'receiveNum'
,
render
:
(
text
,
record
)
=>
{
const
descOptions
=
[
{
title
:
"已发货"
,
value
:
record
.
receive
Num
value
:
record
.
deliver
Num
},
{
title
:
'未发货'
,
...
...
@@ -91,13 +87,17 @@ const statisticsColumns: ColumnsType<GetEnhanceSupplierAllDetailsResponse["detai
}
},
{
title
:
'已收货'
,
dataIndex
:
'receiveNum'
},
{
title
:
'差异数量'
,
dataIndex
:
'differenceNum'
},
{
title
:
'未发货'
,
dataIndex
:
"notDeliverNum"
}
//
{
//
title: '未发货',
//
dataIndex: "notDeliverNum"
//
}
];
const
productColumns
=
statisticsColumns
.
slice
(
1
);
...
...
src/pages/handling/components/DeliveryInfo/index.tsx
View file @
d4c9ae54
...
...
@@ -7,12 +7,18 @@ import { Table, Button, Tabs } from 'antd';
import
CustomizeColumn
from
'@/components/CustomizeColumn'
;
import
{
Link
}
from
'umi'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
TabPane
=
Tabs
.
TabPane
;
type
infoDataSourceType
=
GetEnhanceSupplierAllDetailsResponse
[
"pnoReceiveDeliverDetailDOList"
]
interface
Iprops
{
/**
* 是否是确认生产通知单。
* 用于判断是确认发货,确认收货还是确认回单
*/
mode
?:
"deliver"
|
"receive"
|
"receipt"
,
/**
* 通知单来源: 1-订单加工 2-商品加工
*/
source
:
1
|
2
,
...
...
@@ -29,12 +35,32 @@ interface Iprops {
* infoDataSource
*/
infoDataSource
:
infoDataSourceType
,
/**
* 确认回单,确认发货,确认收货
*/
onConfirm
?:
(
currentInnerStatus
:
keyof
typeof
ACTION_TEXT
,
params
:
{
produceNoticeOrderId
:
number
,
pnoReceiveDeliverDetailId
:
number
})
=>
void
,
}
const
format
=
'YYYY-MM-DD HH:mm:ss'
;
/**
* isConfirm_deliverStatus_receiveStatus_receiptStatus
*/
const
INNER_STATUS_TEXT
=
{
"1_1_1"
:
'待确认发货'
,
'2_1_1'
:
'已确认发货'
,
'2_2_1'
:
'待确认回单'
,
'2_2_2'
:
'已确认回单'
}
const
ACTION_TEXT
=
{
'1_1_1'
:
'确认发货'
,
'2_1_1'
:
'确认收货'
,
'2_2_1'
:
'确认回单'
}
const
DeliveryInfo
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
statisticsDataSource
,
infoDataSource
,
source
,
panelKey
}
=
props
;
const
{
statisticsDataSource
,
infoDataSource
,
source
,
panelKey
,
mode
,
onConfirm
}
=
props
;
const
[
radioValue
,
setRadioValue
]
=
useState
<
"statistics"
|
"info"
>
(
panelKey
);
const
statisticsColumns
=
useMemo
(()
=>
source
===
1
?
orderColumns
:
productColumns
,
[
source
]);
const
infoColumns
=
useMemo
(()
=>
source
===
1
?
infoOrderColumns
:
infoProductColumns
,
[
source
]);
...
...
@@ -71,12 +97,16 @@ const DeliveryInfo: React.FC<Iprops> = (props: Iprops) => {
return
options
;
},
[
infoDataSource
])
const
handleRadioChange
=
(
value
:
"statistics"
|
"info"
)
=>
{
console
.
log
(
value
);
setRadioValue
(
value
);
}
const
handleOnSubmit
=
async
(
currentInnerStatus
:
keyof
typeof
ACTION_TEXT
,
params
:
{
produceNoticeOrderId
:
number
,
pnoReceiveDeliverDetailId
:
number
})
=>
{
onConfirm
?.(
currentInnerStatus
,
params
)
}
const
batchColumns
=
useMemo
(()
=>
{
const
activeData
:
infoDataSourceType
[
0
]
|
null
=
infoDataSource
&&
infoDataSource
.
length
>
1
&&
infoDataSource
[
activeBatch
-
1
]
||
null
;
const
activeData
:
infoDataSourceType
[
0
]
|
null
=
infoDataSource
&&
infoDataSource
.
length
>
0
&&
infoDataSource
[
activeBatch
-
1
]
||
null
;
const
currentInnerStatus
=
`
${
activeData
?.
deliverStatus
}
_$
{
activeData
?.
receiveStatus
}
_$
{
activeData
?.
receiptStatus
}
`;
return [
{
title: '发货单号',
...
...
@@ -104,12 +134,19 @@ const DeliveryInfo: React.FC<Iprops> = (props: Iprops) => {
},
{
title: "内部状态",
value
:
'已确认回单'
},
{
title
:
""
,
value: (
<
Button
>
确认回单
</
Button
>
<div style={{display: 'flex', flexDirection: 'row', justifyContent: 'space-between', width: '100%'}}>
<span>{INNER_STATUS_TEXT[currentInnerStatus] || ''}</span>
{
mode && ACTION_TEXT[currentInnerStatus] && activeData?.[`
$
{
mode
}
Status
`] === 1 && (
<a
onClick={() => handleOnSubmit(currentInnerStatus as "1_1_1", {produceNoticeOrderId: activeData.produceNoticeOrderId, pnoReceiveDeliverDetailId: activeData.id })}
>
{ACTION_TEXT[currentInnerStatus]}
</a>
) || null
}
</div>
)
},
{
...
...
@@ -133,7 +170,7 @@ const DeliveryInfo: React.FC<Iprops> = (props: Iprops) => {
),
}
]
}
,[
infoDataSource
,
activeBatch
])
} ,[infoDataSource, activeBatch
, mode
])
const handleTabOnChange = (value: string) => {
setActiveBatch(+value);
...
...
@@ -152,15 +189,15 @@ const DeliveryInfo: React.FC<Iprops> = (props: Iprops) => {
)
}
{
radioValue
===
'info'
&&
infoDataSource
.
length
>
0
&&
(
radioValue === 'info' && infoDataSource
?
.length > 0 && (
<div>
<Tabs defaultActiveKey="1" activeKey={activeBatch.toString()} onChange={handleTabOnChange}>
{
tabOptions.map((_item) => {
return (
<TabPane tab={`
第
$
{
_item
}
批次
`} key={_item}>
<
CustomizeColumn
data=
{
batchColumns
}
column=
{
5
}
/>
<
Table
columns=
{
infoColumns
}
rowKey=
"id"
dataSource=
{
infoDataSource
[
activeBatch
]
.
pnoReceiveDeliverDetailProductBOList
}
></
Table
>
<CustomizeColumn data={batchColumns} column={
4
} />
<Table columns={infoColumns} rowKey=
{(record) => `
$
{
record
.
produceNoticeOrderDetailId
}
-
$
{
record
.
productId
}
`} dataSource={infoDataSource[activeBatch - 1]?
.pnoReceiveDeliverDetailProductBOList}></Table>
</TabPane>
)
})
...
...
@@ -174,7 +211,9 @@ const DeliveryInfo: React.FC<Iprops> = (props: Iprops) => {
}
DeliveryInfo.defaultProps = {
panelKey
:
'statistics'
panelKey: 'statistics',
mode: null,
onConfirm: null
}
export default DeliveryInfo;
src/pages/handling/confirm/Query/index.tsx
View file @
d4c9ae54
...
...
@@ -29,6 +29,10 @@ import moment from 'moment';
import
{
Link
}
from
'umi'
import
StatusTag
from
'@/components/StatusTag'
;
/**
* @废弃
* v2 废弃
*/
const
formActions
=
createFormActions
();
/**
* 该页面是 确认生产通知单5个页面公用的
...
...
src/pages/handling/confirm/allQuery/detail.tsx
View file @
d4c9ae54
...
...
@@ -22,6 +22,9 @@ import useModal from '@/pages/member/memberEvaluate/hooks/useModal';
// import ExamVerify, { SubmitDataTypes } from '@/components/ExamVerify';
import
StopModal
,
{
SubmitDataTypes
}
from
'./components/StopModal'
;
import
useViewProcessInfo
from
'../../common/hooks/useViewProcessInfo'
;
import
moment
from
'moment'
;
const
inRangeStatus
=
[
3
,
4
,
5
,
6
,
7
,
8
];
const
Info
=
()
=>
{
const
{
id
}
=
usePageStatus
();
...
...
@@ -29,7 +32,7 @@ const Info = () => {
const
{
visible
:
examVisible
,
toggle
:
examToggle
}
=
useModal
();
const
anchorColumn
=
useGetAnchorHeader
({
blackList
:
[]})
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetEnhanceSupplierToBeAddDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhance
SupplierToBeAdd
Details
,
{
id
:
id
.
toString
()
})
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetEnhanceSupplierToBeAddDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhance
PlatformAll
Details
,
{
id
:
id
.
toString
()
})
const
{
basicInfoColumn
,
payInfoColumns
,
cacheOtherInfo
,
annexInfo
}
=
useBasicInfoColumnInDetail
({
initialValue
})
const
defaultColumns
=
initialValue
?.
source
===
1
?
orderColumns
:
productColumn
;
const
outerWorkflowRecordsList
=
initialValue
?.
outerWorkflowRecordsList
||
[];
...
...
@@ -45,11 +48,9 @@ const Info = () => {
const
onExamVerifySubmit
=
async
(
value
:
SubmitDataTypes
)
=>
{
console
.
log
(
value
);
return
;
const
{
code
,
data
}
=
await
PublicApi
.
postEnhanceProcessAllDiscontinue
({
id
:
id
,
discontinueTime
:
123
,
discontinueTime
:
moment
().
valueOf
()
,
cause
:
value
.
reason
})
if
(
code
===
1000
)
{
...
...
@@ -64,7 +65,11 @@ const Info = () => {
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
中止生产通知单
</
Button
>
(
inRangeStatus
.
includes
(
initialValue
?.
outerStatus
)
&&
(
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
中止生产通知单
</
Button
>
)
)
}
>
<
AuditProcess
...
...
src/pages/handling/confirm/allQuery/index.tsx
View file @
d4c9ae54
...
...
@@ -15,9 +15,14 @@ import useFetchFilterData, { FilterResType } from '../../common/hooks/useFetchFi
import
useColumnWithFilter
from
'../../common/hooks/useColumnWithFilter'
;
import
StopModal
,
{
SubmitDataTypes
}
from
'./components/StopModal'
;
import
useModal
from
'@/pages/member/memberEvaluate/hooks/useModal'
;
import
moment
from
'moment'
;
const
formActions
=
createFormActions
();
const
queryColumns
=
setColumnsByLinks
(
"/memberCenter/handling/confirm/query/detail"
)
/**
* 内部状态为 【已确认】 到 【已完成】 且不是 【不接受生产通知单那】
*/
const
inRangeStatus
=
[
3
,
4
,
5
,
6
,
7
,
8
];
const
AllQuery
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
...
...
@@ -30,6 +35,9 @@ const AllQuery = () => {
title
:
'操作'
,
dataIndex
:
'action'
,
render
:
(
text
,
record
)
=>
{
if
(
!
inRangeStatus
.
includes
(
record
.
outerStatus
))
{
return
;
}
return
(
<
a
onClick=
{
()
=>
handleShow
({
id
:
record
.
id
})
}
>
中止生产通知单
</
a
>
)
...
...
@@ -48,15 +56,13 @@ const AllQuery = () => {
}
const
onExamVerifySubmit
=
async
(
value
:
SubmitDataTypes
)
=>
{
console
.
log
(
value
);
return
;
const
{
code
,
data
}
=
await
PublicApi
.
postEnhanceProcessAllDiscontinue
({
id
:
activeData
,
discontinueTime
:
123
,
discontinueTime
:
moment
().
valueOf
()
,
cause
:
value
.
reason
})
if
(
code
===
1000
)
{
// history.back(
);
toggle
(
false
);
formActions
.
submit
();
setActiveData
(
null
)
}
...
...
src/pages/handling/confirm/pendingAddLogistics/index.tsx
View file @
d4c9ae54
...
...
@@ -40,8 +40,11 @@ const AllQuery = () => {
<
Link
to=
{
`${ADD_LOGISTICS_PATH}?createType=3&id=${record.id}`
}
>
新增物流单
</
Link
>
)
}
{
/* @fix */
}
<
Link
to=
{
`/memberCenter/logisticsAbility/logisticsSubmit/toOrderSumitList/edit?id=${record.logisticsOrderId}`
}
>
编辑
</
Link
>
{
record
.
processInnerStatus
===
EDIT_LOGISTICS
&&
(
<
Link
to=
{
`/memberCenter/logisticsAbility/logisticsSubmit/toOrderSumitList/edit?id=${record.logisticsOrderId}`
}
>
编辑
</
Link
>
)
}
</
Space
>
)
}
...
...
src/pages/handling/confirm/pendingDelivered/detail.tsx
View file @
d4c9ae54
...
...
@@ -8,7 +8,7 @@ import useGetAnchorHeader from '../../common/hooks/useGetAnchorHeader';
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
useBasicInfoColumnInDetail
}
from
'../../common/hooks/useCommonsInDetail'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetEnhance
SupplierToBeAdd
DetailsResponse
}
from
'@/services/EnhanceApi'
;
import
{
GetEnhance
ProcessToBeDelivery
DetailsResponse
}
from
'@/services/EnhanceApi'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
useColumnWithFilter
from
'../../common/hooks/useColumnWithFilter'
;
...
...
@@ -23,6 +23,8 @@ import useModal from '@/pages/member/memberEvaluate/hooks/useModal';
// import StopModal, { SubmitDataTypes } from './components/StopModal';
import
DeliveryHandle
,
{
SubmitDataTypes
}
from
'./components/DeliveryHandle'
;
import
useViewProcessInfo
from
'../../common/hooks/useViewProcessInfo'
;
import
{
isManualDelivery
}
from
'@/constants/handling'
;
import
moment
from
'moment'
;
const
Info
=
()
=>
{
const
{
id
}
=
usePageStatus
();
...
...
@@ -30,7 +32,7 @@ const Info = () => {
const
{
visible
:
examVisible
,
toggle
:
examToggle
}
=
useModal
();
const
anchorColumn
=
useGetAnchorHeader
({
blackList
:
[]})
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetEnhanceSupplierToBeAddDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhanceProcessToBeConfirm
Details
,
{
id
:
id
.
toString
()
})
const
{
loading
,
initialValue
,
refresh
}
=
useInitialValue
<
GetEnhanceProcessToBeDeliveryDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhanceProcessToBeDelivery
Details
,
{
id
:
id
.
toString
()
})
const
{
basicInfoColumn
,
payInfoColumns
,
cacheOtherInfo
,
annexInfo
}
=
useBasicInfoColumnInDetail
({
initialValue
})
const
defaultColumns
=
initialValue
?.
source
===
1
?
orderColumns
:
productColumn
;
const
outerWorkflowRecordsList
=
initialValue
?.
outerWorkflowRecordsList
||
[];
...
...
@@ -48,11 +50,12 @@ const Info = () => {
]);
const
handleSubmit
=
async
(
value
:
SubmitDataTypes
)
=>
{
const
addressTarget
=
addressList
.
filter
((
_row
)
=>
_row
.
value
===
value
.
address
)[
0
];
const
{
data
,
code
}
=
await
PublicApi
.
postEnhanceProcessToBeDeliveryManualDeliver
({
produceNoticeOrderId
:
id
,
manualDeliver
:
{
deliveryAddress
:
value
.
address
+
""
,
deliveryTime
:
+
value
.
deliveryTime
,
deliveryAddress
:
addressTarget
.
address
,
deliveryTime
:
moment
(
value
.
deliveryTime
,
'YYYY-MM-DD'
).
valueOf
()
,
deliveryNo
:
value
.
deliveryNo
,
logisticsName
:
value
.
company
+
""
}
...
...
@@ -63,6 +66,9 @@ const Info = () => {
}
useEffect
(()
=>
{
if
(
initialValue
?.
outerTaskType
!==
isManualDelivery
)
{
return
;
}
/**
* 物流时,填写发货地址
* 自提时, 填写发货地址 -> 自提地址
...
...
@@ -80,9 +86,12 @@ const Info = () => {
setAddressList
(
addressData
)
}
getAddress
()
},
[])
},
[
initialValue
])
useEffect
(()
=>
{
if
(
initialValue
?.
outerTaskType
!==
isManualDelivery
)
{
return
;
}
async
function
getCompany
()
{
const
{
data
,
code
}
=
await
PublicApi
.
getLogisticsSelectListCompany
({
cooperateType
:
'2'
});
if
(
code
!==
1000
)
{
...
...
@@ -95,9 +104,24 @@ const Info = () => {
setCompanyList
(
companyData
)
}
getCompany
()
},
[])
},
[
initialValue
])
const
handleOnConfirm
=
async
(
currentInnerStatus
:
any
,
params
:
{
produceNoticeOrderId
:
number
,
pnoReceiveDeliverDetailId
:
number
})
=>
{
const
SERVICE_MAP
=
{
'1_1_1'
:
PublicApi
.
postEnhanceProcessToBeDeliveryConfirmDelivery
,
'2_1_1'
:
PublicApi
.
postEnhanceSupplierToBeReceiveConfirmReceive
,
'2_2_1'
:
PublicApi
.
postEnhanceProcessToBeConfirmReceiptConfirmReceipt
}
if
(
!
SERVICE_MAP
[
currentInnerStatus
])
{
return
;
}
// setLoading(true)
const
{
code
,
data
}
=
await
SERVICE_MAP
[
currentInnerStatus
](
params
);
// setLoading(false)
if
(
code
===
1000
)
{
refresh
({
id
:
id
});
}
}
const
cacheStyle
=
useMemo
(()
=>
({
margin
:
`
${
theme
[
"@margin-md"
]}
0`
}),
[])
return
(
...
...
@@ -106,7 +130,9 @@ const Info = () => {
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
手工发货
</
Button
>
initialValue
?.
outerTaskType
===
isManualDelivery
&&
(
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
手工发货
</
Button
>
)
||
null
}
>
<
AuditProcess
...
...
@@ -144,7 +170,14 @@ const Info = () => {
</
MellowCard
>
</
div
>
<
div
style=
{
cacheStyle
}
id=
"deliveryDetail"
>
<
DeliveryInfo
source=
{
initialValue
?.
source
as
1
|
2
}
statisticsDataSource=
{
initialValue
?.
details
}
infoDataSource=
{
initialValue
?.
pnoReceiveDeliverDetailDOList
}
/>
<
DeliveryInfo
source=
{
initialValue
?.
source
as
1
|
2
}
statisticsDataSource=
{
initialValue
?.
details
}
infoDataSource=
{
initialValue
?.
pnoReceiveDeliverDetailDOList
}
onConfirm=
{
handleOnConfirm
}
mode=
"deliver"
panelKey=
"info"
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"payInfo"
data=
{
payInfoColumns
}
title=
"交付信息"
column=
{
3
}
/>
...
...
src/pages/handling/confirm/pendingLevelI/detail.tsx
View file @
d4c9ae54
...
...
@@ -61,7 +61,7 @@ const Info = () => {
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
提交
</
Button
>
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
审核
</
Button
>
}
>
<
AuditProcess
...
...
@@ -127,6 +127,7 @@ const Info = () => {
title=
"审核单据"
onSubmit=
{
handleSubmit
}
onCancel=
{
()
=>
examToggle
(
false
)
}
showLabel=
{
false
}
/>
</
Spin
>
...
...
src/pages/handling/confirm/pendingLevelII/detail.tsx
View file @
d4c9ae54
...
...
@@ -61,7 +61,7 @@ const Info = () => {
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
提交
</
Button
>
<
Button
onClick=
{
()
=>
examToggle
(
true
)
}
type=
"primary"
>
审核
</
Button
>
}
>
<
AuditProcess
...
...
@@ -127,6 +127,7 @@ const Info = () => {
title=
"审核单据"
onSubmit=
{
handleSubmit
}
onCancel=
{
()
=>
examToggle
(
false
)
}
showLabel=
{
false
}
/>
</
Spin
>
...
...
src/pages/handling/confirm/pendingReceipt/detail.tsx
0 → 100644
View file @
d4c9ae54
import
React
,
{
useEffect
,
useMemo
,
useState
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
,
Drawer
,
Space
,
Popconfirm
}
from
'antd'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
import
CustomizeColumn
from
'@/components/CustomizeColumn'
;
import
AuditProcess
from
'@/components/AuditProcess'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
useGetAnchorHeader
from
'../../common/hooks/useGetAnchorHeader'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
useBasicInfoColumnInDetail
}
from
'../../common/hooks/useCommonsInDetail'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetEnhanceProcessToBeDeliveryDetailsResponse
}
from
'@/services/EnhanceApi'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
useColumnWithFilter
from
'../../common/hooks/useColumnWithFilter'
;
import
{
columns
as
orderColumns
,
productColumn
}
from
'../../common/columns/detailNoticeInfoColumns'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
DeliveryInfo
from
'../../components/DeliveryInfo'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
{
innerFlowColumns
,
outerWorkflowRecordsColumn
}
from
'../../common/columns/recordFlowColumns'
import
MachiningDetail
,
{
DataPropsType
}
from
'../../components/MachiningDetail'
;
import
useModal
from
'@/pages/member/memberEvaluate/hooks/useModal'
;
import
useViewProcessInfo
from
'../../common/hooks/useViewProcessInfo'
;
import
{
COMPLETE
}
from
'@/constants/handling'
;
const
Info
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
{
visible
,
toggle
,
handleViewDetail
,
processDataProps
}
=
useViewProcessInfo
();
const
anchorColumn
=
useGetAnchorHeader
({
blackList
:
[]})
const
{
loading
,
initialValue
,
refresh
}
=
useInitialValue
<
GetEnhanceProcessToBeDeliveryDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhanceProcessToBeConfirmReceiptDetails
,
{
id
:
id
.
toString
()
})
const
{
basicInfoColumn
,
payInfoColumns
,
cacheOtherInfo
,
annexInfo
}
=
useBasicInfoColumnInDetail
({
initialValue
})
const
defaultColumns
=
initialValue
?.
source
===
1
?
orderColumns
:
productColumn
;
const
outerWorkflowRecordsList
=
initialValue
?.
outerWorkflowRecordsList
||
[];
const
innerWorkflowRecordsList
=
initialValue
?.
innerWorkflowRecordsList
||
[];
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
confirmOrContinue
=
useMemo
(()
=>
{
const
pnoReceiveDeliverDetailDOList
=
initialValue
?.
pnoReceiveDeliverDetailDOList
||
[];
const
isAllCompleted
=
pnoReceiveDeliverDetailDOList
.
every
((
_row
)
=>
_row
.
receiptStatus
===
2
);
let
flag
=
false
;
if
(
isAllCompleted
)
{
// 未发货大于0
flag
=
pnoReceiveDeliverDetailDOList
?.
some
(
(
_item
)
=>
_item
.
pnoReceiveDeliverDetailProductBOList
?.
some
((
_v
)
=>
{
return
_v
.
processNum
-
_v
.
deliverNum
>
0
})
)
}
return
{
complete
:
isAllCompleted
,
hasSomeNoDelivery
:
flag
}
},
[
initialValue
])
console
.
log
(
confirmOrContinue
);
const
{
columns
}
=
useColumnWithFilter
(
defaultColumns
,
[
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
return
<
a
onClick=
{
()
=>
handleViewDetail
(
record
)
}
>
查看加工明细
</
a
>
}
}
]);
const
handleAllConfirmReceipt
=
async
(
flag
:
boolean
)
=>
{
const
postData
=
{
produceNoticeOrderId
:
id
,
status
:
flag
}
setSubmitLoading
(
true
);
const
{
data
,
code
}
=
await
PublicApi
.
postEnhanceProcessToBeConfirmReceiptConfirmAllReceipt
(
postData
);
setSubmitLoading
(
false
);
if
(
code
===
1000
)
{
refresh
({
id
:
id
});
}
}
const
handleOnConfirm
=
async
(
currentInnerStatus
:
"2_2_1"
,
params
:
{
produceNoticeOrderId
:
number
,
pnoReceiveDeliverDetailId
:
number
})
=>
{
const
SERVICE_MAP
=
{
'2_2_1'
:
PublicApi
.
postEnhanceProcessToBeConfirmReceiptConfirmReceipt
}
if
(
!
SERVICE_MAP
[
currentInnerStatus
])
{
return
;
}
const
{
code
,
data
}
=
await
SERVICE_MAP
[
currentInnerStatus
](
params
);
if
(
code
===
1000
)
{
refresh
({
id
:
id
});
}
}
const
renderExtra
=
()
=>
{
// 如果通知单收发货明细表内部状态不全部为已确认回单,那么两个按钮隐藏
if
(
!
confirmOrContinue
.
complete
||
initialValue
?.
outerStatus
===
9
)
{
return
;
}
return
(
<
Space
>
{
confirmOrContinue
.
hasSomeNoDelivery
&&
(
<
Popconfirm
title=
"您还有未发货的商品,是否确认全部发货都已完成?"
onConfirm=
{
()
=>
handleAllConfirmReceipt
(
true
)
}
>
<
Button
type=
"primary"
>
确认本单全部发货已收到回单
</
Button
>
</
Popconfirm
>
)
||
<
Button
type=
"primary"
onClick=
{
()
=>
handleAllConfirmReceipt
(
true
)
}
>
确认本单全部发货已收到回单
</
Button
>
}
{
!
confirmOrContinue
.
hasSomeNoDelivery
&&
(
<
Popconfirm
title=
"您商品都已发货,是否确认还需要继续发货?"
onConfirm=
{
()
=>
handleAllConfirmReceipt
(
false
)
}
>
<
Button
type=
"primary"
>
继续发货
</
Button
>
</
Popconfirm
>
)
&&
<
Button
type=
"primary"
onClick=
{
()
=>
handleAllConfirmReceipt
(
false
)
}
>
继续发货
</
Button
>
}
</
Space
>
)
}
const
cacheStyle
=
useMemo
(()
=>
({
margin
:
`
${
theme
[
"@margin-md"
]}
0`
}),
[])
return
(
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
initialValue
?.
processName
}
anchors=
{
anchorColumn
}
extra=
{
<
Space
>
{
renderExtra
()
}
</
Space
>
}
>
<
AuditProcess
outerVerifySteps=
{
initialValue
&&
initialValue
.
outerTaskList
?
initialValue
.
outerTaskList
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
taskName
,
roleName
:
item
.
roleName
,
status
:
item
.
isExecute
?
'finish'
:
'wait'
,
}))
:
[]
}
outerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
outerTaskList
)
}
innerVerifySteps=
{
initialValue
&&
initialValue
.
innerTaskList
?
initialValue
.
innerTaskList
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
taskName
,
roleName
:
item
.
roleName
,
status
:
item
.
isExecute
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
innerTaskList
)
}
id=
"progress"
/>
<
div
style=
{
cacheStyle
}
id=
"basicInfo"
>
<
CustomizeColumn
data=
{
basicInfoColumn
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
{
/* 通知单明细 */
}
<
div
style=
{
cacheStyle
}
id=
"noticeDetails"
>
<
MellowCard
title=
"通知单明细"
>
<
Table
rowKey=
{
"id"
}
dataSource=
{
initialValue
?.
details
}
columns=
{
columns
}
/>
</
MellowCard
>
</
div
>
<
div
style=
{
cacheStyle
}
id=
"deliveryDetail"
>
<
DeliveryInfo
source=
{
initialValue
?.
source
as
1
|
2
}
statisticsDataSource=
{
initialValue
?.
details
}
infoDataSource=
{
initialValue
?.
pnoReceiveDeliverDetailDOList
}
onConfirm=
{
handleOnConfirm
}
mode=
"receipt"
panelKey=
"info"
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"payInfo"
data=
{
payInfoColumns
}
title=
"交付信息"
column=
{
3
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"otherRequire"
data=
{
cacheOtherInfo
}
title=
"其他要求"
column=
{
3
}
/>
</
div
>
<
div
style=
{
cacheStyle
}
>
<
CustomizeColumn
id=
"annex"
data=
{
annexInfo
}
title=
"附件"
column=
{
3
}
/>
</
div
>
<
div
id=
"record"
>
<
FlowRecords
outerRowkey=
"id"
innerRowkey=
"id"
outerColumns=
{
outerWorkflowRecordsColumn
}
innerColumns=
{
innerFlowColumns
}
outerDataSource=
{
outerWorkflowRecordsList
}
innerDataSource=
{
innerWorkflowRecordsList
}
/>
</
div
>
</
AnchorPage
>
<
MachiningDetail
visible=
{
visible
}
dataProps=
{
processDataProps
}
onClose=
{
()
=>
toggle
(
false
)
}
/>
{
/* <DeliveryHandle
visible={examVisible}
title="手工发货"
onSubmit={handleSubmit}
onCancel={() => examToggle(false)}
addressOptions={addressList}
companyOptions={companyList}
/> */
}
</
Spin
>
)
}
export
default
Info
src/pages/handling/confirm/pendingSubmit/detail.tsx
View file @
d4c9ae54
...
...
@@ -30,7 +30,7 @@ const Info = () => {
const
{
visible
:
examVisible
,
toggle
:
examToggle
}
=
useModal
();
const
anchorColumn
=
useGetAnchorHeader
({
blackList
:
[]})
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetEnhanceSupplierToBeAddDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhance
SupplierToBeAdd
Details
,
{
id
:
id
.
toString
()
})
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetEnhanceSupplierToBeAddDetailsResponse
,
{
id
:
string
}
>
(
PublicApi
.
getEnhance
ProcessToBeSubmitExam
Details
,
{
id
:
id
.
toString
()
})
const
{
basicInfoColumn
,
payInfoColumns
,
cacheOtherInfo
,
annexInfo
}
=
useBasicInfoColumnInDetail
({
initialValue
})
const
defaultColumns
=
initialValue
?.
source
===
1
?
orderColumns
:
productColumn
;
const
outerWorkflowRecordsList
=
initialValue
?.
outerWorkflowRecordsList
||
[];
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidCommonLayout/resultItem/index.less
View file @
d4c9ae54
.resultItem {
height: 131px;
min-
height: 131px;
background: #FAFBFC;
padding: 12px 14px;
...
...
@@ -15,7 +15,7 @@
margin-bottom: 6px;
font-size: 12px;
color: #909399;
word-break: break-all;
.money {
color: #303133;
font-size: 16px;
...
...
src/pages/transaction/purchaseAbility/onlineBid/search/index.tsx
View file @
d4c9ae54
...
...
@@ -50,7 +50,7 @@ const Search = () => {
</>,
width
:
180
},
{
title
:
'
竞价
开始/结束时间'
,
title
:
'
报名
开始/结束时间'
,
key
:
'startSignUp'
,
dataIndex
:
'startSignUp'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<>
...
...
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