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
陈智峰
jinfa-platform
Commits
60eb2869
Commit
60eb2869
authored
Jul 28, 2021
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 对接订单新接口简单流程订单查询和收发货
parent
aee665ed
Hide whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
876 additions
and
491 deletions
+876
-491
useSelfTable.tsx
...ment/callForBids/callForBidsSearch/model/useSelfTable.tsx
+1
-1
index.tsx
...yCheckedConfirmFirst/components/participateInfo/index.tsx
+1
-1
index.tsx
...t/callForBids/readyCheckedConfirmFirst/constant/index.tsx
+1
-1
useSelfTable.tsx
...llForBids/readyCheckedConfirmFirst/model/useSelfTable.tsx
+1
-1
index.tsx
...CheckedConfirmSecond/components/participateInfo/index.tsx
+1
-1
index.tsx
.../callForBids/readyCheckedConfirmSecond/constant/index.tsx
+1
-1
useSelfTable.tsx
...lForBids/readyCheckedConfirmSecond/model/useSelfTable.tsx
+1
-1
useSelfTable.tsx
...t/callForBids/readyCheckedRegister/model/useSelfTable.tsx
+1
-1
index.tsx
...Bids/readyConfirmBid/components/participateInfo/index.tsx
+1
-1
index.tsx
...rocurement/callForBids/readyConfirmBid/constant/index.tsx
+1
-1
index.tsx
...curement/callForBids/readyExpertRemark/constant/index.tsx
+1
-1
useSelfTable.tsx
...ment/callForBids/readyExpertRemark/model/useSelfTable.tsx
+1
-1
index.tsx
...ForBids/readyPassBid/components/participateInfo/index.tsx
+1
-1
index.tsx
...s/procurement/callForBids/readyPassBid/constant/index.tsx
+1
-1
useSelfTable.tsx
.../callForBids/readyQualifityChecked/model/useSelfTable.tsx
+1
-1
index.tsx
...urement/callForBids/readySendBidNotice/constant/index.tsx
+1
-1
useSelfTable.tsx
...ent/callForBids/readySendBidNotice/model/useSelfTable.tsx
+1
-1
index.tsx
...curement/callForBids/readySubmitReport/constant/index.tsx
+1
-1
useSelfTable.tsx
...ment/callForBids/readySubmitReport/model/useSelfTable.tsx
+1
-1
useSelfTable.tsx
...ocurement/callForBids/tenderSearch/model/useSelfTable.tsx
+1
-1
index.tsx
src/pages/procurement/components/participateInfo/index.tsx
+1
-1
index.tsx
src/pages/procurement/components/transferRecord/index.tsx
+1
-1
index.tsx
src/pages/procurement/constants/index.tsx
+1
-1
useSelfTable.tsx
...ocurement/tender/callForBidsSearch/model/useSelfTable.tsx
+1
-1
index.tsx
...pages/procurement/tender/readyBidRegister/model/index.tsx
+1
-1
useSelfTable.tsx
...ement/tender/readyQualifityChecked/model/useSelfTable.tsx
+1
-1
useSelfTable.tsx
...es/procurement/tender/tenderSearch/model/useSelfTable.tsx
+1
-1
index.tsx
src/pages/repositories/index.tsx
+1
-1
useOrderDetail.tsx
...ages/transaction/_public/order/effects/useOrderDetail.tsx
+23
-7
index.tsx
src/pages/transaction/components/orderDeleveRecord/index.tsx
+56
-60
index.less
...s/orderHandDeleved/components/productTableCell/index.less
+11
-0
index.tsx
...ts/orderHandDeleved/components/productTableCell/index.tsx
+107
-0
index.tsx
src/pages/transaction/components/orderHandDeleved/index.tsx
+214
-153
useProductTable.tsx
...ion/components/orderHandDeleved/model/useProductTable.tsx
+147
-0
index.tsx
src/pages/transaction/components/orderSaleRecord/index.tsx
+24
-24
index.tsx
...es/transaction/components/saleOrderProductTable/index.tsx
+58
-59
index.tsx
src/pages/transaction/effect/index.tsx
+17
-0
index.tsx
...nsaction/purchaseOrder/readyReceiveOrder/detail/index.tsx
+14
-6
index.tsx
...ges/transaction/purchaseOrder/readyReceiveOrder/index.tsx
+5
-6
useSelfTable.tsx
...on/purchaseOrder/readyReceiveOrder/model/useSelfTable.tsx
+29
-29
index.ts
...ansaction/purchaseOrder/readyReceiveOrder/schema/index.ts
+57
-53
index.tsx
src/pages/transaction/saleOrder/constant/index.tsx
+1
-1
index.tsx
...ction/saleOrder/readyConfirmDelevedOrder/detail/index.tsx
+13
-6
useSelfTable.tsx
...saleOrder/readyConfirmDelevedOrder/model/useSelfTable.tsx
+11
-4
index.ts
...action/saleOrder/readyConfirmDelevedOrder/schema/index.ts
+58
-55
api.ts
src/services/api.ts
+2
-0
ytt.config.ts
ytt.config.ts
+1
-0
No files found.
src/pages/procurement/callForBids/callForBidsSearch/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -2,7 +2,7 @@ import React, { useRef } from 'react'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
...
...
src/pages/procurement/callForBids/readyCheckedConfirmFirst/components/participateInfo/index.tsx
View file @
60eb2869
...
...
@@ -3,7 +3,7 @@ import { Row, Col } from 'antd'
import
MellowCard
from
'@/components/MellowCard'
import
{
ReadyConfirmBidContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
style
from
'./index.less'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
;
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
;
import
{
formatTimeString
}
from
'@/utils'
;
/**
...
...
src/pages/procurement/callForBids/readyCheckedConfirmFirst/constant/index.tsx
View file @
60eb2869
import
React
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
BidInOpeartTexts
,
BidOutOpeartTexts
}
from
"@/constants/procurement"
import
{
formatTimeString
}
from
"@/utils"
...
...
src/pages/procurement/callForBids/readyCheckedConfirmFirst/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { history } from 'umi'
import
EyePreview
from
'@/components/EyePreview'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
...
...
src/pages/procurement/callForBids/readyCheckedConfirmSecond/components/participateInfo/index.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import MellowCard from '@/components/MellowCard'
import
{
ReadyConfirmBidContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
QuestionCircleOutlined
,
UserOutlined
}
from
'@ant-design/icons'
;
import
style
from
'./index.less'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
;
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
;
import
{
formatTimeString
}
from
'@/utils'
;
/**
...
...
src/pages/procurement/callForBids/readyCheckedConfirmSecond/constant/index.tsx
View file @
60eb2869
import
React
,
{
useEffect
}
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
BidInOpeartTexts
,
BidOutOpeartTexts
}
from
"@/constants/procurement"
import
{
formatTimeString
}
from
"@/utils"
...
...
src/pages/procurement/callForBids/readyCheckedConfirmSecond/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { history } from 'umi'
import
EyePreview
from
'@/components/EyePreview'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
...
...
src/pages/procurement/callForBids/readyCheckedRegister/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { history } from 'umi'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
...
...
src/pages/procurement/callForBids/readyConfirmBid/components/participateInfo/index.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import MellowCard from '@/components/MellowCard'
import
{
ReadyConfirmBidContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
QuestionCircleOutlined
,
UserOutlined
}
from
'@ant-design/icons'
;
import
style
from
'./index.less'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
;
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
;
import
{
formatTimeString
}
from
'@/utils'
;
/**
...
...
src/pages/procurement/callForBids/readyConfirmBid/constant/index.tsx
View file @
60eb2869
import
React
,
{
useEffect
}
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
BidInOpeartTexts
,
BidOutOpeartTexts
}
from
"@/constants/procurement"
import
{
formatTimeString
}
from
"@/utils"
...
...
src/pages/procurement/callForBids/readyExpertRemark/constant/index.tsx
View file @
60eb2869
import
React
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
formatTimeString
}
from
'@/utils'
import
{
FileFilled
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
import
{
Tooltip
}
from
'antd'
;
...
...
src/pages/procurement/callForBids/readyExpertRemark/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -5,7 +5,7 @@ import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import
EyePreview
from
'@/components/EyePreview'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
ExpertRectractStatus
}
from
'@/constants/procurement'
const
baseBidListColumns
:
any
[]
=
[
...
...
src/pages/procurement/callForBids/readyPassBid/components/participateInfo/index.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import MellowCard from '@/components/MellowCard'
import
{
ReadyConfirmBidContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
QuestionCircleOutlined
,
UserOutlined
}
from
'@ant-design/icons'
;
import
style
from
'./index.less'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
;
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
;
import
{
formatTimeString
}
from
'@/utils'
;
/**
...
...
src/pages/procurement/callForBids/readyPassBid/constant/index.tsx
View file @
60eb2869
import
React
,
{
useEffect
}
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
BidInOpeartTexts
,
BidOutOpeartTexts
}
from
"@/constants/procurement"
import
{
formatTimeString
}
from
"@/utils"
...
...
src/pages/procurement/callForBids/readyQualifityChecked/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { history } from 'umi'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
...
...
src/pages/procurement/callForBids/readySendBidNotice/constant/index.tsx
View file @
60eb2869
import
React
,
{
useEffect
}
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
BidInOpeartTexts
,
BidInStateTexts
,
BidOutOpeartTexts
,
BidOutStateTexts
}
from
"@/constants/procurement"
import
{
formatTimeString
}
from
"@/utils"
import
{
ISchema
}
from
'@formily/antd'
...
...
src/pages/procurement/callForBids/readySendBidNotice/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -2,7 +2,7 @@ import React, { useRef } from 'react'
import
{
Button
}
from
'antd'
import
{
history
}
from
'umi'
import
EyePreview
from
'@/components/EyePreview'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
...
...
src/pages/procurement/callForBids/readySubmitReport/constant/index.tsx
View file @
60eb2869
import
React
from
'react'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
{
formatTimeString
}
from
'@/utils'
import
{
FileFilled
}
from
'@ant-design/icons'
import
{
ISchema
}
from
'@formily/antd'
...
...
src/pages/procurement/callForBids/readySubmitReport/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -5,7 +5,7 @@ import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import
EyePreview
from
'@/components/EyePreview'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
{
formatTimeString
}
from
'@/utils'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
...
...
src/pages/procurement/callForBids/tenderSearch/model/useSelfTable.tsx
View file @
60eb2869
import
React
,
{
useRef
}
from
'react'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
// 投标查询
export
const
useSelfTable
=
()
=>
{
...
...
src/pages/procurement/components/participateInfo/index.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import MellowCard from '@/components/MellowCard'
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
{
QuestionCircleOutlined
,
UserOutlined
}
from
'@ant-design/icons'
;
import
style
from
'./index.less'
import
CustomTag
from
'../
C
ustomTag'
;
import
CustomTag
from
'../
c
ustomTag'
;
/**
* 会员参标信息
...
...
src/pages/procurement/components/transferRecord/index.tsx
View file @
60eb2869
...
...
@@ -3,7 +3,7 @@ import { Table, Radio } from 'antd'
import
{
formatTimeString
}
from
'@/utils'
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
;
import
MellowCard
from
'@/components/MellowCard'
import
CustomTag
from
'../
C
ustomTag'
;
import
CustomTag
from
'../
c
ustomTag'
;
import
{
TransferEnum
}
from
'../transferProcess'
;
import
style
from
'./index.less'
import
{
BidInOpeartTexts
,
BidOutOpeartTexts
}
from
'@/constants/procurement'
;
...
...
src/pages/procurement/constants/index.tsx
View file @
60eb2869
...
...
@@ -3,7 +3,7 @@ import {history} from 'umi'
import
{
formatTimeString
}
from
'@/utils'
import
EyePreview
from
'@/components/EyePreview'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
CALLFORBID_TYPE
,
PURCHASE_TYPE
}
from
'@/constants/procurement'
import
{
PublicApi
}
from
'@/services/api'
...
...
src/pages/procurement/tender/callForBidsSearch/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -2,7 +2,7 @@ import React, { useRef } from 'react'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
// 招标查询
...
...
src/pages/procurement/tender/readyBidRegister/model/index.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { history } from 'umi'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
TenderOutWorkState
}
from
'@/constants/procurement'
...
...
src/pages/procurement/tender/readyQualifityChecked/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { history } from 'umi'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
TenderOutWorkState
}
from
'@/constants/procurement'
...
...
src/pages/procurement/tender/tenderSearch/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -4,7 +4,7 @@ import { Button } from 'antd'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
{
PlayCircleOutlined
,
PoweroffOutlined
}
from
'@ant-design/icons'
import
CustomTag
from
'@/pages/procurement/components/
C
ustomTag'
import
CustomTag
from
'@/pages/procurement/components/
c
ustomTag'
import
CustomBadge
from
'@/pages/procurement/components/customBadge'
import
{
TenderInsideWorkState
,
TenderOutWorkState
}
from
'@/constants/procurement'
...
...
src/pages/repositories/index.tsx
View file @
60eb2869
...
...
@@ -191,7 +191,7 @@ const Repositories: React.FC<{}> = () => {
},
{
pattern
:
/^
\d
+
(\.\d{1,3})?
$/
,
message
:
'
税率
仅限三位小数'
,
message
:
'仅限三位小数'
,
}
],
},
...
...
src/pages/transaction/_public/order/effects/useOrderDetail.tsx
View file @
60eb2869
...
...
@@ -3,16 +3,14 @@ import { useCallback, useState, useEffect } from 'react'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
PublicApi
}
from
'@/services/api'
import
{
Link
}
from
'umi'
import
{
GlobalConfig
}
from
'@/global/config'
import
{
orderTypeLabel
}
from
'../constant'
import
{
formatTimeString
}
from
'@/utils'
import
StatusColors
from
'../../../components/StatusColors'
import
{
message
}
from
'antd'
import
{
history
}
from
'umi'
interface
OrderDetailHookProps
{
// 采购、销售
type
:
'purchaseOrder'
|
'saleOrder'
// 采购、销售
、待收货、待确认发货
type
:
'purchaseOrder'
|
'saleOrder'
|
'readyReceiveOrder'
|
'readyConfirmDelevedOrder'
}
// 订单详情, 支持两种订单模式
...
...
@@ -52,15 +50,34 @@ export const useOrderDetail = (options: OrderDetailHookProps) => {
reloadFormData
()
},
[])
// 根据type类型 调用不同的详情接口
const
getDetailsApi
=
(
type
)
=>
{
let
api
=
null
;
switch
(
type
)
{
case
'purchaseOrder'
:
api
=
PublicApi
.
getOrderBuyerDetail
;
break
;
case
'saleOrder'
:
api
=
PublicApi
.
getOrderVendorDetail
;
break
;
case
'readyReceiveOrder'
:
api
=
PublicApi
.
getOrderBuyerValidateReceiveDetail
;
break
;
case
'readyConfirmDelevedOrder'
:
api
=
PublicApi
.
getOrderVendorValidateDeliveryDetail
;
break
;
default
:
api
=
PublicApi
.
getOrderBuyerDetail
;
}
return
api
;
}
const
reloadFormData
=
useCallback
(()
=>
{
if
(
id
||
orderNo
)
{
const
fn
=
type
===
'purchaseOrder'
?
PublicApi
.
getOrderBuyerDetail
:
PublicApi
.
getOrderVendorDetail
// const fn = type === 'purchaseOrder' ? PublicApi.getOrderBuyerDetail : PublicApi.getOrderVendorDetail
const
fn
=
getDetailsApi
(
type
)
// @ts-ignore
fn
(
id
?
{
orderId
:
id
}
:
{
orderNo
},
{
ctlType
:
"none"
}).
then
(
res
=>
{
const
{
code
,
data
,
message
:
msg
}
=
res
if
(
code
===
1000
)
{
setFormData
(
data
)
reloadPayList
(
data
.
vendorMemberId
,
data
.
vendorRoleId
)
//
reloadPayList(data.vendorMemberId, data.vendorRoleId)
}
else
{
message
.
error
(
msg
)
}
...
...
@@ -77,7 +94,6 @@ export const useOrderDetail = (options: OrderDetailHookProps) => {
})
}
// 需共享的状态
const
formContext
=
{
data
:
formData
,
...
...
src/pages/transaction/components/orderDeleveRecord/index.tsx
View file @
60eb2869
...
...
@@ -25,7 +25,7 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
const
[
disabled
,
setDisabled
]
=
useState
<
boolean
>
(
false
)
const
{
data
,
reloadFormData
}
=
useContext
(
OrderDetailContext
)
const
{
orderReceivingStatisticsResponses
,
orderDeliveryDetailsResponse
s
,
orderModel
}
=
data
const
{
deliveries
,
deliveryDetail
s
,
orderModel
}
=
data
const
creditsCommodity
=
(
orderModel
===
24
||
orderModel
===
25
)
// 积分或渠道积分下单模式
const
outOrderCols
:
any
[]
=
[
...
...
@@ -37,9 +37,9 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
},
{
title
:
'商品名称'
,
dataIndex
:
'
productN
ame'
,
dataIndex
:
'
n
ame'
,
align
:
'center'
,
key
:
'
productN
ame'
,
key
:
'
n
ame'
,
},
{
title
:
'品类'
,
...
...
@@ -61,28 +61,28 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
},
{
title
:
creditsCommodity
?
'所需积分'
:
'单价'
,
dataIndex
:
'
unitP
rice'
,
dataIndex
:
'
p
rice'
,
align
:
'center'
,
key
:
'
unitP
rice'
,
key
:
'
p
rice'
,
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'
purchaseCount
'
,
dataIndex
:
'
quantity
'
,
align
:
'center'
,
key
:
'
purchaseCount
'
,
key
:
'
quantity
'
,
},
{
title
:
'含税'
,
dataIndex
:
'
no
'
,
dataIndex
:
'
tax
'
,
align
:
'center'
,
key
:
'
no
'
,
render
:
(
)
=>
'是
'
key
:
'
tax
'
,
render
:
(
text
)
=>
text
?
'是'
:
'否
'
},
{
title
:
creditsCommodity
?
'所需积分小计'
:
'金额'
,
dataIndex
:
'
price
'
,
dataIndex
:
'
amount
'
,
align
:
'center'
,
key
:
'
price
'
,
key
:
'
amount
'
,
},
{
title
:
'已发货'
,
...
...
@@ -92,21 +92,21 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
},
{
title
:
'未发货'
,
dataIndex
:
'
notDelivered
'
,
dataIndex
:
'
leftCount
'
,
align
:
'center'
,
key
:
'
notDelivered
'
,
key
:
'
leftCount
'
,
},
{
title
:
'已收货'
,
dataIndex
:
'
goodsR
eceived'
,
dataIndex
:
'
r
eceived'
,
align
:
'center'
,
key
:
'
goodsR
eceived'
,
key
:
'
r
eceived'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differ
ence
Count'
,
dataIndex
:
'differCount'
,
align
:
'center'
,
key
:
'differ
ence
Count'
,
key
:
'differCount'
,
},
]
...
...
@@ -120,9 +120,9 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
},
{
title
:
'商品名称'
,
dataIndex
:
'
productN
ame'
,
dataIndex
:
'
n
ame'
,
align
:
'center'
,
key
:
'
productN
ame'
,
key
:
'
n
ame'
,
},
{
title
:
'品类'
,
...
...
@@ -144,36 +144,36 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'
purchaseCount
'
,
dataIndex
:
'
quantity
'
,
align
:
'center'
,
key
:
'
purchaseCount
'
,
key
:
'
quantity
'
,
},
{
title
:
'发货数量'
,
dataIndex
:
'deliver
GoodsCount
'
,
dataIndex
:
'deliver
ed
'
,
align
:
'center'
,
key
:
'deliver
GoodsCount
'
,
key
:
'deliver
ed
'
,
},
{
title
:
'
入库
数量'
,
dataIndex
:
'
storageCount
'
,
title
:
'
已收货
数量'
,
dataIndex
:
'
received
'
,
align
:
'center'
,
key
:
'
storageCount
'
,
key
:
'
received
'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differ
ence
Count'
,
dataIndex
:
'differCount'
,
align
:
'center'
,
key
:
'differ
ence
Count'
,
key
:
'differCount'
,
},
]
const
sideOrderCols
:
any
[]
=
[
{
title
:
'发货批次'
,
dataIndex
:
'
deliveryBatch
'
,
dataIndex
:
'
batchNo
'
,
align
:
'center'
,
key
:
'
deliveryBatch
'
key
:
'
batchNo
'
},
{
title
:
'发货单号'
,
...
...
@@ -183,44 +183,40 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
},
{
title
:
'发货时间'
,
dataIndex
:
'
delivery
Time'
,
dataIndex
:
'
create
Time'
,
align
:
'center'
,
key
:
'deliveryTime'
,
render
:
text
=>
formatTimeString
(
text
)
key
:
'createTime'
,
},
{
title
:
'物流单号'
,
dataIndex
:
'logisticsNo'
,
align
:
'center'
,
key
:
'logisticsNo'
,
// render: text => <a target="blank" href={`/memberCenter/logisticsAbility/logisticsBillSubmit/logisticsBillQuery/preview?code=${text}`}>{tex
t}</a>
render
:
t
=>
<
a
href=
{
`https://www.kuaidi100.com/chaxun?nu=${t}`
}
target=
"blank"
>
{
t
}
</
a
>
},
{
title
:
'物流公司'
,
dataIndex
:
'
logisticsCompanyName
'
,
dataIndex
:
'
company
'
,
align
:
'center'
,
key
:
'
logisticsCompanyName
'
key
:
'
company
'
},
{
title
:
'
入库
单号'
,
dataIndex
:
'
storage
No'
,
title
:
'
收货
单号'
,
dataIndex
:
'
receipt
No'
,
align
:
'center'
,
key
:
'storageNo'
,
render
:
text
=>
<
a
target=
"blank"
href=
{
`/memberCenter/tranactionAbility/stockSellStorage/bills/detail?invoicesNo=${text}`
}
>
{
text
}
</
a
>
key
:
'receiptNo'
,
},
{
title
:
'
入库
时间'
,
dataIndex
:
'
storage
Time'
,
title
:
'
收货
时间'
,
dataIndex
:
'
receipt
Time'
,
align
:
'center'
,
key
:
'storageTime'
,
render
:
text
=>
formatTimeString
(
text
)
key
:
'receiptTime'
,
},
{
title
:
'内部状态'
,
dataIndex
:
'in
teriorStat
e'
,
dataIndex
:
'in
nerStatusNam
e'
,
align
:
'center'
,
key
:
'interiorState'
,
render
:
text
=>
<
StatusColors
type=
'deliveInside'
status=
{
text
}
/>
key
:
'innerStatusName'
,
},
{
title
:
'操作'
,
...
...
@@ -228,9 +224,9 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
align
:
'center'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
/* todo 需根据内部状态判断显示哪个按钮 */
}
{
!
isPreview
&&
isReturn
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
CONFIRM_RECEIPT_ORDER
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleReturn
(
record
)
}
>
确认回单
</
Button
>
}
{
!
isPreview
&&
isReceived
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
record
.
interiorState
===
DeliverySideState
.
WAREHOUSE_ORDER
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认收货
</
Button
>
}
{
!
isPreview
&&
isReturn
&&
!
dataRef
.
current
.
includes
(
record
.
id
)
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleReturn
(
record
)
}
>
确认回单
</
Button
>
}
{
/* { !isPreview && isReceived && !dataRef.current.includes(record.id) && <Button type='link' disabled={disabled} onClick={() => handleConfirm(record)}>确认收货</Button> } */
}
{
!
isPreview
&&
isReceived
&&
record
.
showReceive
&&
<
Button
type=
'link'
disabled=
{
disabled
}
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认收货
</
Button
>
}
</>
},
]
...
...
@@ -238,11 +234,11 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
// 确认收货
const
handleConfirm
=
async
(
record
)
=>
{
const
params
=
{
orderId
:
record
.
orderId
,
id
:
record
.
id
orderId
:
data
.
orderId
,
batchNo
:
record
.
batchNo
}
setDisabled
(
true
)
const
{
code
}
=
await
PublicApi
.
postOrder
ConfirmReceipt
(
params
)
const
{
code
}
=
await
PublicApi
.
postOrder
BuyerValidateReceiveConfirm
(
params
)
if
(
code
===
1000
)
{
dataRef
.
current
.
push
(
record
.
id
)
reloadFormData
&&
reloadFormData
()
...
...
@@ -272,26 +268,26 @@ const OrderDeleveRecord:React.FC<OrderDeleveRecordProps> = (props) => {
return
(
<>
{
(
orderReceivingStatisticsResponses
?.
length
>
0
||
orderDeliveryDetailsResponse
s
?.
length
>
0
)
&&
(
deliveries
?.
length
>
0
||
deliveryDetail
s
?.
length
>
0
)
&&
<
MellowCard
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
id=
'deleveBox'
>
<
Tabs
defaultActiveKey=
"2"
>
{
orderReceivingStatisticsRespons
es
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货统计'
key=
"1"
>
deliveri
es
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货统计'
key=
"1"
>
<
Table
columns=
{
outOrderCols
}
dataSource=
{
orderReceivingStatisticsRespons
es
}
dataSource=
{
deliveri
es
}
pagination=
{
false
}
rowKey=
"productId"
/>
</
Tabs
.
TabPane
>
}
{
orderDeliveryDetailsResponse
s
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货明细'
key=
"2"
>
deliveryDetail
s
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货明细'
key=
"2"
>
<
NestTable
NestColumns=
{
[
sideOrderCols
,
sideChildrenCols
]
}
rowKey=
'id'
childrenDataKey=
'
orderDeliveryP
roducts'
dataSource=
{
orderDeliveryDetailsResponse
s
}
childrenDataKey=
'
p
roducts'
dataSource=
{
deliveryDetail
s
}
/>
</
Tabs
.
TabPane
>
}
...
...
src/pages/transaction/components/orderHandDeleved/components/productTableCell/index.less
0 → 100644
View file @
60eb2869
.customeFormItem {
margin: 0;
position: 'relative';
.ant-form-item-control {
.ant-form-item-explain-error {
position: absolute;
left: 0;
bottom: 0;
}
}
}
src/pages/transaction/components/orderHandDeleved/components/productTableCell/index.tsx
0 → 100644
View file @
60eb2869
import
React
,
{
useRef
,
useContext
}
from
'react'
import
{
Form
,
Input
}
from
'antd'
;
import
'./index.less'
export
interface
ProductTableCellProps
{
title
:
React
.
ReactNode
;
editable
:
boolean
;
children
:
React
.
ReactNode
;
dataIndex
:
string
;
record
:
any
;
handleSave
:
(
record
:
any
)
=>
Promise
<
any
>
;
forceEdit
:
boolean
,
formItem
:
string
,
formItemProps
:
any
,
}
const
EditableContext
=
React
.
createContext
<
any
>
({});
export
const
ProductEditableRow
:
React
.
FC
<
any
>
=
({...
props
})
=>
{
const
[
form
]
=
Form
.
useForm
();
const
ctx
=
{
form
}
return
(
<
Form
form=
{
form
}
component=
{
false
}
>
<
EditableContext
.
Provider
value=
{
ctx
}
>
<
tr
{
...
props
}
/>
</
EditableContext
.
Provider
>
</
Form
>
);
};
export
const
ProductTableCell
:
React
.
FC
<
ProductTableCellProps
>
=
({
title
,
editable
,
children
,
dataIndex
,
record
,
handleSave
,
forceEdit
,
formItem
,
formItemProps
=
{},
...
restProps
})
=>
{
const
formItemRef
=
useRef
<
any
>
();
const
{
form
}
=
useContext
(
EditableContext
);
const
save
=
async
e
=>
{
try
{
const
values
=
await
form
.
validateFields
();
handleSave
({
...
record
,
...
values
});
}
catch
(
errInfo
)
{
console
.
log
(
'Save failed:'
,
errInfo
);
}
};
const
chooseFormItem
=
(
type
)
=>
{
switch
(
type
)
{
case
'input'
:
{
return
<
Input
style=
{
{
width
:
140
}
}
type=
'number'
ref=
{
formItemRef
}
onChange=
{
save
}
{
...
formItemProps
}
id=
{
dataIndex
+
record
.
id
}
className=
"delivery_amount_input"
/>
}
}
}
let
childNode
=
children
;
if
(
editable
)
{
childNode
=
<
Form
.
Item
className=
"customFormItem"
name=
{
dataIndex
}
initialValue=
{
record
[
dataIndex
]
||
''
}
rules=
{
[
{
required
:
true
,
message
:
`${title}必须填写`
,
},
{
pattern
:
/^
\d
+
(\.\d
{1,3}
)?
$/
,
message
:
`数量仅限三位小数`
,
},
{
min
:
0
,
message
:
`数量大于等于0`
,
},
]
}
>
{
chooseFormItem
(
formItem
)
}
</
Form
.
Item
>
}
return
<
td
{
...
restProps
}
>
{
childNode
}
</
td
>;
}
ProductTableCell
.
defaultProps
=
{}
export
default
ProductTableCell
src/pages/transaction/components/orderHandDeleved/index.tsx
View file @
60eb2869
import
React
,
{
useContext
,
useRef
,
useEffect
}
from
'react'
import
{
Modal
,
Button
}
from
'antd'
import
NiceForm
from
'@/components/NiceForm'
import
{
createFormActions
,
ISchema
}
from
'@formily/antd'
import
ModalForm
from
'@/components/ModalForm'
import
{
history
}
from
'umi'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
import
{
PublicApi
}
from
'@/services/api'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
OrderDetailContext
}
from
'../../_public/order/context'
import
moment
from
'moment'
export
interface
OrderHandDeleveModalProps
{
currentRef
:
any
}
const
schemaActions
=
createFormActions
()
const
schema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_SUBMIT
:
{
type
:
'object'
,
"x-component"
:
"mega-layout"
,
"x-component-props"
:
{
labelAlign
:
'left'
,
labelCol
:
6
},
properties
:
{
addresId
:
{
type
:
'string'
,
enum
:
[],
title
:
'发货地址'
,
"x-rules"
:
[
{
message
:
'请选择发货地址'
,
required
:
true
}
]
},
deliverTime
:
{
type
:
'string'
,
"x-component"
:
'date'
,
title
:
'发货日期'
,
"x-rules"
:
[
{
message
:
'请选择发货日期'
,
required
:
true
}
],
"x-mega-props"
:
{
full
:
true
}
},
deliverNo
:
{
type
:
'string'
,
title
:
'发货单号'
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入发货单号'
},
{
limitByte
:
true
,
maxByte
:
20
},
]
},
logisticsCompanyId
:
{
type
:
'string'
,
enum
:
[],
title
:
'物流公司'
,
"x-rules"
:
[
{
message
:
'请选择物流公司'
,
required
:
true
}
]
},
name
:
{
type
:
'string'
,
display
:
false
},
logisticsCompany
:
{
type
:
'string'
,
display
:
false
}
}
}
}
}
const
OrderHandDeleveModal
:
React
.
FC
<
OrderHandDeleveModalProps
>
=
(
props
)
=>
{
const
{
data
}
=
useContext
(
OrderDetailContext
)
const
dataRef
=
useRef
<
any
>
({})
const
handleSubmit
=
async
(
value
)
=>
{
const
params
=
{
...
value
,
orderId
:
data
.
id
,
deliverTime
:
moment
(
value
.
deliverTime
).
valueOf
()
}
const
{
code
}
=
await
PublicApi
.
postOrderManualDelivery
(
params
)
if
(
code
===
1000
)
{
history
.
goBack
()
}
}
const
handleConfirm
=
()
=>
{
schemaActions
.
submit
()
}
return
(
<
ModalForm
modalTitle=
'手工发货'
previewPlaceholder=
' '
currentRef=
{
props
.
currentRef
}
schema=
{
schema
}
actions=
{
schemaActions
}
onSubmit=
{
handleSubmit
}
confirm=
{
handleConfirm
}
initialValues=
{
{
deliverTime
:
moment
().
format
(
'YYYY-MM-DD'
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useAsyncSelect
(
'addresId'
,
async
()
=>
(
await
PublicApi
.
getLogisticsSelectListShipperAddress
()).
data
,
[
'fullAddress'
,
'id'
])
useAsyncSelect
(
'logisticsCompanyId'
,
async
()
=>
(
await
PublicApi
.
getLogisticsSelectListCompany
({
cooperateType
:
'2'
})).
data
,
[
'name'
,
'id'
])
// 获取联动的select后续事件, 为了设置对应的name值
$
(
'requestAsyncSelect'
).
subscribe
(({
name
,
payload
})
=>
{
if
(
name
===
'addresId'
)
{
dataRef
.
current
.
addresId
=
payload
}
if
(
name
===
'logisticsCompanyId'
)
{
dataRef
.
current
.
logisticsCompanyId
=
payload
}
})
$
(
'onFieldInputChange'
,
'addresId'
).
subscribe
(({
value
})
=>
{
actions
.
setFieldValue
(
'name'
,
dataRef
.
current
.
addresId
.
find
(
v
=>
v
.
id
===
value
)?.
fullAddress
||
''
)
})
$
(
'onFieldInputChange'
,
'logisticsCompanyId'
).
subscribe
(({
value
})
=>
{
actions
.
setFieldValue
(
'logisticsCompany'
,
dataRef
.
current
.
logisticsCompanyId
.
find
(
v
=>
v
.
id
===
value
)?.
name
||
''
)
})
}
}
/>
)
}
OrderHandDeleveModal
.
defaultProps
=
{}
export
default
OrderHandDeleveModal
\ No newline at end of file
import
React
,
{
useContext
,
useRef
,
useEffect
,
useState
}
from
'react'
import
{
Button
,
Drawer
}
from
'antd'
import
NiceForm
from
'@/components/NiceForm'
import
{
createFormActions
,
ISchema
}
from
'@formily/antd'
import
{
history
}
from
'umi'
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
import
{
PublicApi
}
from
'@/services/api'
import
{
OrderDetailContext
}
from
'../../_public/order/context'
import
moment
from
'moment'
import
{
useProductTable
}
from
'./model/useProductTable'
export
interface
OrderHandDeleveModalProps
{
currentRef
:
any
}
const
schemaActions
=
createFormActions
()
const
schema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_SUBMIT
:
{
type
:
'object'
,
"x-component"
:
"mega-layout"
,
"x-component-props"
:
{
labelAlign
:
'left'
,
labelCol
:
6
,
},
properties
:
{
addresId
:
{
type
:
'string'
,
enum
:
[],
title
:
'发货地址'
,
"x-rules"
:
[
{
message
:
'请选择发货地址'
,
required
:
true
}
]
},
deliveryTime
:
{
type
:
'string'
,
"x-component"
:
'date'
,
title
:
'发货日期'
,
"x-rules"
:
[
{
message
:
'请选择发货日期'
,
required
:
true
}
],
"x-mega-props"
:
{
full
:
true
}
},
logisticsNo
:
{
type
:
'string'
,
title
:
'物流单号'
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入物流单号'
},
{
limitByte
:
true
,
maxByte
:
20
},
]
},
logisticsCompanyId
:
{
type
:
'string'
,
enum
:
[],
title
:
'物流公司'
,
"x-rules"
:
[
{
message
:
'请选择物流公司'
,
required
:
true
}
]
},
products
:
{
type
:
'array'
,
"x-component"
:
'MultTable'
,
"x-component-props"
:
{
rowKey
:
'productId'
,
columns
:
"{{productColumns}}"
,
components
:
"{{productComponents}}"
,
// expandable: "{{productChildren}}",
// pagination: { size: 'small' }
},
},
address
:
{
type
:
'string'
,
display
:
false
},
company
:
{
type
:
'string'
,
display
:
false
}
}
}
}
}
const
OrderHandDeleveModal
:
React
.
FC
<
OrderHandDeleveModalProps
>
=
(
props
)
=>
{
const
{
data
}
=
useContext
(
OrderDetailContext
)
const
dataRef
=
useRef
<
any
>
({})
const
{
currentRef
}
=
props
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
)
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
)
const
{
productColumns
,
productComponents
,
...
sectionProps
}
=
useProductTable
(
schemaActions
)
useEffect
(()
=>
{
if
(
currentRef
)
{
currentRef
.
current
=
{
visible
,
setVisible
}
}
},
[])
useEffect
(()
=>
{
if
(
visible
)
{
const
{
deliveries
}
=
data
schemaActions
.
setFieldValue
(
'products'
,
deliveries
.
map
(
item
=>
({
...
item
,
deliveryCount
:
item
[
'leftCount'
]
})))
}
},
[
visible
])
const
handleSubmit
=
async
(
value
)
=>
{
setLoading
(
true
)
const
params
=
{
...
value
,
orderId
:
data
.
orderId
,
deliveryTime
:
moment
(
value
.
deliveryTime
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
}
const
{
code
}
=
await
PublicApi
.
postOrderVendorValidateDeliveryConfirm
(
params
)
if
(
code
===
1000
)
{
history
.
goBack
()
}
else
{
setLoading
(
false
)
}
}
const
handleConfirm
=
()
=>
{
schemaActions
.
submit
()
}
const
onClose
=
()
=>
{
setVisible
(
false
)
schemaActions
.
reset
()
}
const
footer
=
(<
div
style=
{
{
textAlign
:
'right'
,
}
}
>
<
Button
onClick=
{
handleConfirm
}
type=
"primary"
loading=
{
loading
}
style=
{
{
marginRight
:
8
}
}
>
确定
</
Button
>
<
Button
onClick=
{
()
=>
setVisible
(
false
)
}
>
取消
</
Button
>
</
div
>)
return
(
<
Drawer
title=
'手工发货'
width=
{
1400
}
bodyStyle=
{
{
paddingLeft
:
0
,
paddingTop
:
0
}
}
onClose=
{
onClose
}
visible=
{
visible
}
footer=
{
footer
}
>
<
div
style=
{
{
margin
:
'8px 16px'
}
}
>
<
NiceForm
actions=
{
schemaActions
}
schema=
{
schema
}
onSubmit=
{
handleSubmit
}
initialValues=
{
{
deliveryTime
:
moment
().
format
(
'YYYY-MM-DD'
)
}
}
effects=
{
(
$
,
actions
)
=>
{
useAsyncSelect
(
'addresId'
,
async
()
=>
(
await
PublicApi
.
getLogisticsSelectListShipperAddress
()).
data
,
[
'fullAddress'
,
'id'
])
useAsyncSelect
(
'logisticsCompanyId'
,
async
()
=>
(
await
PublicApi
.
getLogisticsSelectListCompany
({
cooperateType
:
'2'
})).
data
,
[
'name'
,
'id'
])
// 获取联动的select后续事件, 为了设置对应的name值
$
(
'requestAsyncSelect'
).
subscribe
(({
name
,
payload
})
=>
{
if
(
name
===
'addresId'
)
{
dataRef
.
current
.
addresId
=
payload
}
if
(
name
===
'logisticsCompanyId'
)
{
dataRef
.
current
.
logisticsCompanyId
=
payload
}
})
$
(
'onFieldInputChange'
,
'addresId'
).
subscribe
(({
value
})
=>
{
actions
.
setFieldValue
(
'address'
,
dataRef
.
current
.
addresId
.
find
(
v
=>
v
.
id
===
value
)?.
fullAddress
||
''
)
})
$
(
'onFieldInputChange'
,
'logisticsCompanyId'
).
subscribe
(({
value
})
=>
{
actions
.
setFieldValue
(
'company'
,
dataRef
.
current
.
logisticsCompanyId
.
find
(
v
=>
v
.
id
===
value
)?.
name
||
''
)
})
}
}
expressionScope=
{
{
productColumns
,
productComponents
}
}
/>
</
div
>
</
Drawer
>
)
}
OrderHandDeleveModal
.
defaultProps
=
{}
export
default
OrderHandDeleveModal
src/pages/transaction/components/orderHandDeleved/model/useProductTable.tsx
0 → 100644
View file @
60eb2869
import
React
,
{
useState
}
from
'react'
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
;
import
ProductTableCell
,
{
ProductEditableRow
}
from
'../components/productTableCell'
;
// @todo 补充积分类型文案
const
productColumns
:
any
=
[
{
title
:
'商品ID'
,
dataIndex
:
'productId'
,
align
:
'center'
,
key
:
'productId'
},
{
title
:
'商品名称'
,
dataIndex
:
'name'
,
align
:
'center'
,
key
:
'name'
,
},
{
title
:
'品类'
,
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
},
{
title
:
'品牌'
,
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
'单位'
,
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
},
{
title
:
'单价'
,
dataIndex
:
'price'
,
align
:
'center'
,
key
:
'price'
,
},
// {
// title: '采购数量',
// dataIndex: 'quantity',
// align: 'center',
// key: 'quantity',
// },
// {
// title: '含税',
// dataIndex: 'tax',
// align: 'center',
// key: 'tax',
// render: (text) => text ? '是' : '否'
// },
// {
// title: '金额',
// dataIndex: 'amount',
// align: 'center',
// key: 'amount',
// },
{
title
:
'已发货'
,
dataIndex
:
'delivered'
,
align
:
'center'
,
key
:
'delivered'
,
},
{
title
:
'未发货'
,
dataIndex
:
'leftCount'
,
align
:
'center'
,
key
:
'leftCount'
,
},
{
title
:
'已收货'
,
dataIndex
:
'received'
,
align
:
'center'
,
key
:
'received'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differCount'
,
align
:
'center'
,
key
:
'differCount'
,
},
{
title
:
'发货数量'
,
dataIndex
:
'deliveryCount'
,
align
:
'left'
,
key
:
'deliveryCount'
,
formItem
:
'input'
,
editable
:
true
,
width
:
140
,
},
]
/**
* @param ctx schemaAction
*/
export
const
useProductTable
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
const
productComponents
=
{
body
:
{
row
:
ProductEditableRow
,
cell
:
ProductTableCell
}
}
const
handleSave
=
row
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
newData
=
[...
ctx
.
getFieldValue
(
'products'
)];
const
index
=
newData
.
findIndex
(
item
=>
row
.
productId
===
item
.
productId
);
const
item
=
newData
[
index
];
newData
.
splice
(
index
,
1
,
{
...
item
,
...
row
,
});
ctx
.
setFieldValue
(
'products'
,
newData
)
resolve
({
item
,
newData
})
})
};
const
productMergeColumns
=
productColumns
.
map
(
col
=>
{
if
(
!
col
.
editable
)
{
return
col
;
}
return
{
...
col
,
onCell
:
record
=>
({
record
,
editable
:
ctx
.
getFormState
().
editable
===
false
?
false
:
col
.
editable
,
dataIndex
:
col
.
dataIndex
,
title
:
col
.
title
,
formItem
:
col
.
formItem
,
formItemProps
:
col
.
formItemProps
,
handleSave
}),
};
})
return
{
productColumns
:
productMergeColumns
,
productComponents
,
}
}
src/pages/transaction/components/orderSaleRecord/index.tsx
View file @
60eb2869
...
...
@@ -29,7 +29,7 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
// 用于储存已经修改过的订单id
const
dataRef
=
useRef
<
any
>
([])
const
{
data
,
reloadFormData
}
=
useContext
(
OrderDetailContext
)
const
{
orderReceivingStatisticsResponses
,
orderDeliveryDetailsResponse
s
,
orderModel
,
externalState
}
=
data
const
{
deliveries
,
deliveryDetail
s
,
orderModel
,
externalState
}
=
data
const
creditsCommodity
=
(
orderModel
===
24
||
orderModel
===
25
)
// 积分或渠道积分下单模式
const
outOrderCols
:
any
[]
=
[
...
...
@@ -41,9 +41,9 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
},
{
title
:
'商品名称'
,
dataIndex
:
'
productN
ame'
,
dataIndex
:
'
n
ame'
,
align
:
'center'
,
key
:
'
productN
ame'
,
key
:
'
n
ame'
,
},
{
title
:
'品类'
,
...
...
@@ -65,28 +65,28 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
},
{
title
:
creditsCommodity
?
'所需积分'
:
'单价'
,
dataIndex
:
'
unitP
rice'
,
dataIndex
:
'
p
rice'
,
align
:
'center'
,
key
:
'
unitP
rice'
,
key
:
'
p
rice'
,
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'
purchaseCount
'
,
dataIndex
:
'
quantity
'
,
align
:
'center'
,
key
:
'
purchaseCount
'
,
key
:
'
quantity
'
,
},
{
title
:
'含税'
,
dataIndex
:
'
no
'
,
dataIndex
:
'
tax
'
,
align
:
'center'
,
key
:
'
no
'
,
render
:
(
)
=>
'是
'
key
:
'
tax
'
,
render
:
(
text
)
=>
text
?
'是'
:
'否
'
},
{
title
:
creditsCommodity
?
'所需积分小计'
:
'金额'
,
dataIndex
:
'
price
'
,
dataIndex
:
'
amount
'
,
align
:
'center'
,
key
:
'
price
'
,
key
:
'
amount
'
,
},
{
title
:
'已发货'
,
...
...
@@ -96,21 +96,21 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
},
{
title
:
'未发货'
,
dataIndex
:
'
notDelivered
'
,
dataIndex
:
'
leftCount
'
,
align
:
'center'
,
key
:
'
notDelivered
'
,
key
:
'
leftCount
'
,
},
{
title
:
'已收货'
,
dataIndex
:
'
goodsR
eceived'
,
dataIndex
:
'
r
eceived'
,
align
:
'center'
,
key
:
'
goodsR
eceived'
,
key
:
'
r
eceived'
,
},
{
title
:
'差异数量'
,
dataIndex
:
'differ
ence
Count'
,
dataIndex
:
'differCount'
,
align
:
'center'
,
key
:
'differ
ence
Count'
,
key
:
'differCount'
,
},
]
...
...
@@ -334,26 +334,26 @@ const OrderSaleRecord:React.FC<OrderSaleRecordProps> = (props) => {
return
(
<>
{
(
orderReceivingStatisticsResponses
?.
length
>
0
||
orderDeliveryDetailsResponse
s
?.
length
>
0
)
&&
(
deliveries
?.
length
>
0
||
deliveryDetail
s
?.
length
>
0
)
&&
<
MellowCard
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
id=
'deleveBox'
>
<
Tabs
defaultActiveKey=
"2"
animated=
{
false
}
>
{
orderReceivingStatisticsRespons
es
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货统计'
key=
"1"
>
deliveri
es
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货统计'
key=
"1"
>
<
Table
columns=
{
outOrderCols
}
dataSource=
{
orderReceivingStatisticsRespons
es
}
dataSource=
{
deliveri
es
}
pagination=
{
false
}
rowKey=
"id"
/>
</
Tabs
.
TabPane
>
}
{
orderDeliveryDetailsResponse
s
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货明细'
key=
"2"
>
deliveryDetail
s
?.
length
>
0
&&
<
Tabs
.
TabPane
tab=
'订单收发货明细'
key=
"2"
>
<
NestTable
NestColumns=
{
[
sideOrderCols
,
sideChildrenCols
]
}
rowKey=
'id'
childrenDataKey=
'
orderDeliveryP
roducts'
dataSource=
{
orderDeliveryDetailsResponse
s
}
childrenDataKey=
'
p
roducts'
dataSource=
{
deliveryDetail
s
}
/>
{
externalState
===
11
&&
!
isPreview
&&
isReturn
&&
...
...
src/pages/transaction/components/saleOrderProductTable/index.tsx
View file @
60eb2869
...
...
@@ -92,13 +92,12 @@ const modalPriceActions = createFormActions()
// 总计金额联动框
export
const
MoneyTotalBox
=
({
dataSource
,
isEditData
})
=>
{
const
{
reloadFormData
}
=
useContext
(
OrderDetailContext
)
const
{
orderProductRequests
=
[],
receiverAddressId
,
freight
,
amount
,
orderModel
,
sumPrice
,
type
}
=
dataSource
||
{}
const
{
product
,
orderProductRequests
=
[],
receiverAddressId
,
amount
,
orderModel
,
sumPrice
,
type
}
=
dataSource
||
{}
const
creditsCommodity
=
(
orderModel
===
24
||
orderModel
===
25
)
// 积分或渠道积分下单模式
const
{
productAmount
,
freight
,
totalAmount
}
=
product
const
modelRef
=
useRef
<
any
>
({})
const
[
freePrice
,
setFreePrice
]
=
useState
<
number
>
(
freight
||
0
)
const
[
sum
,
setSum
]
=
useState
<
number
>
(
0
)
// const sum = orderProductRequests.reduce((prev, next) => prev + Number((next.money || 0)), 0)
const
handleSetting
=
()
=>
{
modelRef
.
current
.
setVisible
(
true
)
}
...
...
@@ -152,7 +151,7 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => {
return
<
RowStyle
>
<
Col
span=
{
2
}
>
<
div
>
{
creditsCommodity
?
'合计所需积分'
:
'合计金额'
}
</
div
>
<
div
>
{
sum
}
</
div
>
<
div
>
{
productAmount
}
</
div
>
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
运费
{
isEditData
&&
!
creditsCommodity
&&
!
notShowSet
&&
<
SettingOutlined
style=
{
{
marginLeft
:
8
}
}
onClick=
{
handleSetting
}
/>
}
</
div
>
...
...
@@ -160,7 +159,7 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => {
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
{
creditsCommodity
?
'总计所需积分'
:
'总计金额'
}
</
div
>
<
div
>
{
amountMoney
}
</
div
>
<
div
>
{
totalAmount
}
</
div
>
</
Col
>
<
ModalForm
modalTitle=
'设置运费'
...
...
@@ -301,11 +300,10 @@ const EditableCell: React.FC<EditableCellProps> = ({
const
SaleOrderProductTable
:
React
.
FC
<
OrderProductTableProps
>
=
(
props
)
=>
{
const
{
ctl
,
data
,
reloadFormData
}
=
useContext
(
OrderDetailContext
)
const
{
page_type
}
=
usePageStatus
()
const
{
orderProductRequests
=
[]
,
orderModel
}
=
data
||
{}
const
{
product
,
orderModel
}
=
data
||
{}
const
creditsCommodity
=
(
orderModel
===
24
||
orderModel
===
25
)
// 积分或渠道积分下单模式
// 合同下单模式
const
contractOrder
=
(
orderModel
===
OrderModalType
.
PURCHASE_ENQUIRY_CONTRACT_ORDER
||
orderModel
===
OrderModalType
.
PURCHASE_TENDER_CONTRACT_ORDER
||
orderModel
===
OrderModalType
.
PURCHASE_BIDDING_CONTRACT_ORDER
)
console
.
log
(
contractOrder
,
'fff'
)
const
[
warehouseVisible
,
setWarehouseVisible
]
=
useState
(
false
)
const
[
checkProductId
,
setCheckProductId
]
=
useState
(
0
)
// 选中的商品id
const
warehouseRef
=
useRef
<
any
>
({})
...
...
@@ -319,41 +317,41 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
}
}
const
asyncGetMemberPrice
=
async
(
asyncData
:
any
[])
=>
{
return
await
Promise
.
all
(
asyncData
.
filter
(
v
=>
v
.
memberPrice
===
undefined
).
map
(
async
v
=>
{
const
{
code
,
data
}
=
await
PublicApi
.
getMemberManageUpperCreditParamGet
({
parentMemberId
:
v
.
memberId
,
parentMemberRoleId
:
v
.
memberRoleId
},
{
ttl
:
60
*
1000
,
useCache
:
true
})
return
code
===
1000
?
{
value
:
(
data
.
parameter
*
100
)
+
'%'
,
id
:
v
.
id
}
:
{
value
:
''
,
id
:
0
}
}
))
}
useEffect
(()
=>
{
// 过滤 会员折扣不存在的列表
const
hasPriceList
=
orderProductRequests
.
filter
(
v
=>
!
v
.
memberPrice
)
if
(
hasPriceList
.
length
>
0
)
{
asyncGetMemberPrice
(
hasPriceList
).
then
((
asyncData
)
=>
{
if
(
asyncData
.
length
>
0
)
{
const
newData
=
orderProductRequests
.
map
((
v
,
i
)
=>
{
if
(
!
v
.
memberPrice
)
{
v
.
memberPrice
=
asyncData
.
find
(
j
=>
j
.
id
===
v
.
id
)?.
value
||
0
}
return
v
})
ctl
.
setData
({
...
data
,
orderProductRequests
:
newData
})
}
})
}
},
[
orderProductRequests
])
//
const asyncGetMemberPrice = async (asyncData: any[]) => {
//
return await Promise.all(asyncData.filter(v => v.memberPrice === undefined).map(async v => {
//
const {code, data} = await PublicApi.getMemberManageUpperCreditParamGet({
//
parentMemberId: v.memberId,
//
parentMemberRoleId: v.memberRoleId
//
}, {ttl: 60 * 1000, useCache: true})
//
return code === 1000 ? { value: (data.parameter * 100) + '%', id: v.id } : { value: '', id: 0 }
//
}
//
))
//
}
//
useEffect(() => {
//
// 过滤 会员折扣不存在的列表
//
const hasPriceList = orderProductRequests.filter(v => !v.memberPrice)
//
if (hasPriceList.length > 0) {
//
asyncGetMemberPrice(hasPriceList).then((asyncData) => {
//
if (asyncData.length > 0) {
//
const newData = orderProductRequests.map((v, i) => {
//
if (!v.memberPrice) {
//
v.memberPrice = asyncData.find(j => j.id === v.id)?.value || 0
//
}
//
return v
//
})
//
ctl.setData({
//
...data,
//
orderProductRequests: newData
//
})
//
}
//
})
//
}
//
}, [orderProductRequests])
const
handleSave
=
row
=>
{
const
newData
=
[...
orderProductReques
ts
];
const
newData
=
[...
product
.
produc
ts
];
const
index
=
newData
.
findIndex
(
item
=>
row
.
id
===
item
.
id
);
const
item
=
newData
[
index
];
newData
.
splice
(
index
,
1
,
{
...
...
@@ -381,15 +379,15 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
const
productInfoColumns
:
any
[]
=
[
{
title
:
'ID'
,
dataIndex
:
'
i
d'
,
dataIndex
:
'
productI
d'
,
align
:
'center'
,
key
:
'
i
d'
,
key
:
'
productI
d'
,
},
{
title
:
'商品名称'
,
dataIndex
:
'
productN
ame'
,
dataIndex
:
'
n
ame'
,
align
:
'center'
,
key
:
'
productN
ame'
,
key
:
'
n
ame'
,
},
{
title
:
'品类'
,
...
...
@@ -418,38 +416,39 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
},
{
title
:
'会员折扣'
,
dataIndex
:
'
memberPrice
'
,
dataIndex
:
'
discount
'
,
align
:
'center'
,
key
:
'memberPrice'
,
render
:
(
text
,
record
)
=>
record
.
isMemberPrice
?
(
text
*
10000
/
100
+
'%'
)
:
null
key
:
'discount'
,
// render: (text, record) => record.isMemberPrice ? (text * 10000 / 100 + '%') : null
render
:
(
text
,
record
)
=>
(
text
+
'%'
)
},
{
title
:
creditsCommodity
?
'兑换数量'
:
'采购数量'
,
dataIndex
:
'
purchaseCount
'
,
dataIndex
:
'
quantity
'
,
align
:
'center'
,
key
:
'
purchaseCount
'
key
:
'
quantity
'
},
{
title
:
'含税'
,
dataIndex
:
'
none
'
,
dataIndex
:
'
tax
'
,
align
:
'center'
,
key
:
'
none
'
,
render
:
(
)
=>
'是
'
key
:
'
tax
'
,
render
:
(
text
,
record
)
=>
text
?
'是'
:
'否
'
},
{
title
:
creditsCommodity
?
'所需积分小计'
:
'金额'
,
dataIndex
:
'
money
'
,
dataIndex
:
'
amount
'
,
align
:
'center'
,
key
:
'
money
'
,
key
:
'
amount
'
,
},
// 接口调用
{
title
:
'配送方式'
,
dataIndex
:
'
logistics
'
,
dataIndex
:
'
deliverType
'
,
align
:
'center'
,
key
:
'
logistics
'
,
render
:
(
text
)
=>
(
text
&&
text
.
deliveryType
&&
text
.
deliveryType
===
2
)
?
<
AddressPop
pickInfo=
{
text
}
>
{
DELIVERY_TYPE
[
text
.
deliveryType
]
}
</
AddressPop
>
:
DELIVERY_TYPE
[
text
?.
deliveryType
]
key
:
'
deliverType
'
,
render
:
(
text
,
record
)
=>
(
text
&&
text
===
2
)
?
<
AddressPop
pickInfo=
{
record
}
>
{
record
.
deliverTypeName
}
</
AddressPop
>
:
record
.
deliverTypeName
},
{
title
:
'仓位库存扣减记录'
,
...
...
@@ -587,7 +586,7 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
<
MellowCard
title=
{
contractOrder
?
'订单物料'
:
'订单商品'
}
style=
{
{
marginTop
:
24
}
}
bordered=
{
false
}
>
<
Table
columns=
{
contractOrder
?
materialInfo
:
columns
}
dataSource=
{
orderProductRequests
.
sort
((
a
,
b
)
=>
a
.
id
-
b
.
id
)
}
dataSource=
{
product
.
products
}
components=
{
productComponents
}
rowKey=
'id'
pagination=
{
false
}
...
...
src/pages/transaction/effect/index.tsx
View file @
60eb2869
...
...
@@ -54,6 +54,23 @@ export const getSaleOrderSelectOption = () => {
return
state
}
/** (采购订单审核各个页面)获取前端页面下拉框列表 */
export
const
getPurchaseOrderAuditPageSelectOption
=
()
=>
{
const
[
state
,
setstate
]
=
useState
<
any
>
()
useEffect
(()
=>
{
PublicApi
.
getOrderBuyerValidatePageItems
({}).
then
(
res
=>
{
const
{
code
,
data
}
=
res
if
(
code
===
1000
)
{
setstate
(
data
)
}
})
},
[])
return
state
}
/** (销售订单审核各个页面)获取前端页面下拉框列表 */
export
const
getSaleOrderAuditPageSelectOption
=
()
=>
{
const
[
state
,
setstate
]
=
useState
<
any
>
()
...
...
src/pages/transaction/purchaseOrder/readyReceiveOrder/detail/index.tsx
View file @
60eb2869
...
...
@@ -8,16 +8,24 @@ import { useOrderDetail } from '../../../_public/order/effects/useOrderDetail';
import
OrderDetailSection
from
'../../../components/orderDetailSection'
;
import
{
PurchaseOrderInsideWorkState
,
DeliverySideState
}
from
'@/constants/order'
;
import
OrderHandReceivedModal
from
'@/pages/transaction/components/orderHandReceivedModal'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
const
ReadyReceiveOrderDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useOrderDetail
({
type
:
'
purchas
eOrder'
})
const
{
formContext
,
id
,
detailList
}
=
useOrderDetail
({
type
:
'
readyReceiv
eOrder'
})
const
approvedRef
=
useRef
<
any
>
({})
const
{
batchNo
}
=
usePageStatus
()
// 是否是手工收货
const
isHeadReceipt
=
formContext
.
data
&&
formContext
.
data
.
interiorState
===
PurchaseOrderInsideWorkState
.
HAND_RECEIPT_ORDER
// // 是否是手工收货
// const isHeadReceipt = formContext.data && formContext.data.interiorState === PurchaseOrderInsideWorkState.HAND_RECEIPT_ORDER
// // 所有收货订单都是否已经收货了
// const isShowBtn = isHeadReceipt || formContext.data?.orderDeliveryDetailsResponses?.some(v => v.interiorState === DeliverySideState.WAREHOUSE_ORDER)
// 是否发过货
// const isHeadReceipt = Number(batchNo) <= 0
const
isHeadReceipt
=
false
// 所有收货订单都是否已经收货了
const
isShowBtn
=
isHeadReceipt
||
formContext
.
data
?.
orderDeliveryDetailsResponses
?.
some
(
v
=>
v
.
interiorState
===
DeliverySideState
.
WAREHOUSE_ORDER
)
const
handleClick
=
useCallback
(()
=>
{
if
(
isHeadReceipt
)
{
// 手工收货
...
...
@@ -34,7 +42,7 @@ const ReadyReceiveOrderDetail: React.FC = () => {
<
div
>
<
OrderDetailContext
.
Provider
value=
{
formContext
}
>
<
OrderDetailHeader
detailList=
{
detailList
}
detailData=
{
formContext
.
data
}
extraRight=
{
isShowBtn
&&
<
Button
type=
'primary'
onClick=
{
handleClick
}
>
<
Button
type=
'primary'
onClick=
{
handleClick
}
>
{
isHeadReceipt
?
'手工收货'
:
'去确认收货'
}
</
Button
>
}
/>
...
...
src/pages/transaction/purchaseOrder/readyReceiveOrder/index.tsx
View file @
60eb2869
...
...
@@ -13,15 +13,14 @@ import '../index.less'
// 待确认收货单
export
interface
FirstApproved
OrderProps
{}
export
interface
ReadyReceive
OrderProps
{}
const
fetchTableData
=
async
(
params
)
=>
{
const
{
data
}
=
await
PublicApi
.
getOrder
ReceivingGoodsPendingOrderList
(
params
)
const
{
data
}
=
await
PublicApi
.
getOrder
BuyerValidateReceivePage
(
params
)
return
data
}
// TODO
const
FirstApprovedOrder
:
React
.
FC
<
FirstApprovedOrderProps
>
=
(
props
)
=>
{
const
ReadyReceiveOrder
:
React
.
FC
<
ReadyReceiveOrderProps
>
=
(
props
)
=>
{
const
{
columns
}
=
useSelfTable
()
...
...
@@ -58,6 +57,6 @@ const FirstApprovedOrder:React.FC<FirstApprovedOrderProps> = (props) => {
</
PageHeaderWrapper
>
}
FirstApproved
Order
.
defaultProps
=
{}
ReadyReceive
Order
.
defaultProps
=
{}
export
default
FirstApproved
Order
export
default
ReadyReceive
Order
src/pages/transaction/purchaseOrder/readyReceiveOrder/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -18,9 +18,8 @@ export const useSelfTable = () => {
dataIndex
:
'orderNo'
,
key
:
'orderNo'
,
render
:
(
text
,
record
)
=>
{
// 查看订单, 需根据状态显示不同schema
return
(
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/purchaseOrder/readyReceiveOrder/preview?id=${record.
i
d}`
}
>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/purchaseOrder/readyReceiveOrder/preview?id=${record.
orderI
d}`
}
>
{
text
}
</
EyePreview
>
)
...
...
@@ -29,8 +28,8 @@ export const useSelfTable = () => {
{
title
:
'订单摘要/下单时间'
,
align
:
'center'
,
dataIndex
:
'
orderThe
'
,
key
:
'
orderThe
'
,
dataIndex
:
'
digest
'
,
key
:
'
digest
'
,
render
:
(
text
,
record
)
=>
<>
<
div
>
{
text
}
</
div
>
<
div
><
FieldTimeOutlined
/>
{
formatTimeString
(
record
.
createTime
)
}
</
div
>
...
...
@@ -40,61 +39,62 @@ export const useSelfTable = () => {
{
title
:
'采购会员'
,
align
:
'left'
,
dataIndex
:
'
supplyMembers
Name'
,
key
:
'
supplyMembers
Name'
,
dataIndex
:
'
member
Name'
,
key
:
'
member
Name'
,
},
{
title
:
'总金额'
,
align
:
'center'
,
dataIndex
:
'
sumPrice
'
,
key
:
'
sumPrice
'
,
render
:
(
t
,
r
)
=>
r
.
type
===
7
||
r
.
t
ype
===
8
?
t
:
'¥'
+
t
dataIndex
:
'
amount
'
,
key
:
'
amount
'
,
render
:
(
t
,
r
)
=>
r
.
orderType
===
7
||
r
.
orderT
ype
===
8
?
t
:
'¥'
+
t
},
{
title
:
'已发货批次'
,
align
:
'center'
,
dataIndex
:
'shipmentBatch'
,
key
:
'shipmentBatch'
,
render
:
text
=>
text
?
`第
${
text
}
次`
:
''
},
// @todo 收货单号跳转
{
title
:
'
入库单号
'
,
title
:
'
已发货批次
'
,
align
:
'center'
,
dataIndex
:
'invoiceNumber'
,
key
:
'invoiceNumber'
,
dataIndex
:
'batchNo'
,
key
:
'batchNo'
,
render
:
text
=>
text
?
`第
${
text
}
次`
:
''
},
{
title
:
'收货单号'
,
align
:
'center'
,
dataIndex
:
'receiptNo'
,
key
:
'receiptNo'
,
render
:
(
t
,
r
)
=>
r
.
orderDeliveryDetailsId
?
<
Link
to=
{
`/memberCenter/tranactionAbility/stockSellStorage/bills/detail?id=${r.orderDeliveryDetailsId}&preview=1`
}
>
{
t
}
</
Link
>
:
<
a
href=
{
`https://www.kuaidi100.com/chaxun?nu=${t}`
}
target=
"blank"
>
{
t
}
</
a
>
},
{
title
:
'订单类型'
,
align
:
'center'
,
dataIndex
:
'
t
ypeName'
,
key
:
'
t
ypeName'
,
dataIndex
:
'
orderT
ypeName'
,
key
:
'
orderT
ypeName'
,
},
{
title
:
'外部状态'
,
align
:
'center'
,
dataIndex
:
'
externalState
'
,
key
:
'
externalState
'
,
render
:
(
text
,
record
)
=>
<
StatusColors
status=
{
text
}
type=
'out'
text=
{
record
[
'
externalState
Name'
]
}
/>,
dataIndex
:
'
outerStatus
'
,
key
:
'
outerStatus
'
,
render
:
(
text
,
record
)
=>
<
StatusColors
status=
{
text
}
type=
'out'
text=
{
record
[
'
outerStatus
Name'
]
}
/>,
},
{
title
:
'内部状态'
,
align
:
'center'
,
dataIndex
:
'in
teriorState
'
,
key
:
'in
teriorState
'
,
render
:
(
text
,
record
)
=>
<
StatusColors
status=
{
text
}
type=
'inside'
text=
{
record
[
'in
teriorState
Name'
]
}
/>,
dataIndex
:
'in
nerStatus
'
,
key
:
'in
nerStatus
'
,
render
:
(
text
,
record
)
=>
<
StatusColors
status=
{
text
}
type=
'inside'
text=
{
record
[
'in
nerStatus
Name'
]
}
/>,
},
{
title
:
'操作'
,
align
:
'center'
,
dataIndex
:
'ctl'
,
key
:
'ctl'
,
render
:
(
text
,
record
)
=>
<>
{
/* 支付结果确认到账= 待审核状态
{ (record.interiorState === PurchaseOrderInsideWorkState.CONFIRM_RECEIPT || record.interiorState === PurchaseOrderInsideWorkState.HAND_RECEIPT_ORDER) && */
}
<
Button
type=
'link'
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认收货
</
Button
>
{
/* } */
}
</>
render
:
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleConfirm
(
record
)
}
>
确认收货
</
Button
>
}
]
const
handleConfirm
=
async
(
record
)
=>
{
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/readyReceiveOrder/detail?id=
${
record
.
id
}
&orderDeliveryDetailsId=
${
record
.
orderDeliveryDetailsId
}
`
);
// history.push(`/memberCenter/tranactionAbility/purchaseOrder/readyReceiveOrder/detail?id=${record.orderId}&orderDeliveryDetailsId=${record.orderDeliveryDetailsId}`);
history
.
push
(
`/memberCenter/tranactionAbility/purchaseOrder/readyReceiveOrder/detail?id=
${
record
.
orderId
}
&batchNo=
${
record
.
batchNo
}
`
);
}
return
{
...
...
src/pages/transaction/purchaseOrder/readyReceiveOrder/schema/index.ts
View file @
60eb2869
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
OrderTypeMap
}
from
'@/constants/order'
;
import
{
getOrderType
}
from
'@/pages/transaction/effect'
;
import
{
getPurchaseOrderAuditPageSelectOption
}
from
'@/pages/transaction/effect'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
any
=
()
=>
{
const
OrderType
=
getOrderType
()
const
res
=
getPurchaseOrderAuditPageSelectOption
()
if
(
res
)
{
const
{
orderTypes
:
OrderType
,
}
=
res
return
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-start'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginRight
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
return
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-start'
,
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginRight
:
20
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
properties
:
{
digest
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
enum
:
OrderType
.
map
(
item
=>
({
label
:
item
[
'name'
],
value
:
item
[
'status'
],
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
"memberName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
"orderType"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
OrderType
.
map
(
item
=>
({
label
:
item
[
'text'
],
value
:
item
[
'id'
],
}))
},
"[startDate,endDate]"
:
{
type
:
'daterange'
,
// "x-component": 'DateRangePickerUnix',
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
,
}
}
}
}
src/pages/transaction/saleOrder/constant/index.tsx
View file @
60eb2869
...
...
@@ -17,7 +17,7 @@ interface LayoutState {
/** 订单审核各个页面 只有订单类型查询的Schema */
export
const
tableListSchema
:
any
=
(
align
?:
String
,
colStyle
?:
Object
)
=>
{
console
.
log
(
align
,
colStyle
)
const
res
=
getSaleOrderAuditPageSelectOption
()
if
(
res
)
{
const
{
...
...
src/pages/transaction/saleOrder/readyConfirmDelevedOrder/detail/index.tsx
View file @
60eb2869
...
...
@@ -8,15 +8,22 @@ import { useOrderDetail } from '../../../_public/order/effects/useOrderDetail';
import
OrderHandDeleved
from
'../../../components/orderHandDeleved'
;
import
OrderDetailSection
from
'../../../components/orderDetailSection'
;
import
{
SaleOrderInsideWorkState
,
DeliverySideState
}
from
'@/constants/order'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
const
ReadyConfirmDelevedOrderDetail
:
React
.
FC
=
()
=>
{
const
{
formContext
,
id
,
detailList
}
=
useOrderDetail
({
type
:
'saleOrder'
})
const
{
formContext
,
id
,
detailList
}
=
useOrderDetail
({
type
:
'readyConfirmDelevedOrder'
})
const
{
batchNo
}
=
usePageStatus
()
// // 是否是手工发货
// const isHandDeleved = formContext.data && formContext.data.purchaseOrderInteriorState === SaleOrderInsideWorkState.HAND_DELEVED_ORDER
// 是否是手工发货
const
isHandDeleved
=
formContext
.
data
&&
formContext
.
data
.
purchaseOrderInteriorState
===
SaleOrderInsideWorkState
.
HAND_DELEVED_ORDER
// // 所有发货单都是否已经发货了
// const isShowBtn = isHandDeleved || formContext.data?.orderDeliveryDetailsResponses?.some(v => v.interiorState === DeliverySideState.ADD_LOGISTICS_ORDER)
// 是否发过货
const
isHandDeleved
=
Number
(
batchNo
)
<=
0
// 是否发货完成
// 所有发货单都是否已经发货了
const
isShowBtn
=
isHandDeleved
||
formContext
.
data
?.
orderDeliveryDetailsResponses
?.
some
(
v
=>
v
.
interiorState
===
DeliverySideState
.
ADD_LOGISTICS_ORDER
)
const
approvedRef
=
useRef
<
any
>
({})
const
handleClick
=
useCallback
(()
=>
{
...
...
@@ -32,7 +39,7 @@ const ReadyConfirmDelevedOrderDetail: React.FC = () => {
<
div
>
<
OrderDetailContext
.
Provider
value=
{
formContext
}
>
<
OrderDetailHeader
detailList=
{
detailList
}
detailData=
{
formContext
.
data
}
extraRight=
{
isShowBtn
&&
<
Button
type=
'primary'
onClick=
{
handleClick
}
>
<
Button
type=
'primary'
onClick=
{
handleClick
}
>
{
isHandDeleved
?
'确认手工发货'
:
'去发货'
}
</
Button
>
}
/>
...
...
src/pages/transaction/saleOrder/readyConfirmDelevedOrder/model/useSelfTable.tsx
View file @
60eb2869
...
...
@@ -39,8 +39,8 @@ export const useSelfTable = () => {
{
title
:
'采购会员'
,
align
:
'left'
,
dataIndex
:
'
buyerM
emberName'
,
key
:
'
buyerM
emberName'
,
dataIndex
:
'
m
emberName'
,
key
:
'
m
emberName'
,
},
{
title
:
'总金额'
,
...
...
@@ -49,7 +49,13 @@ export const useSelfTable = () => {
key
:
'amount'
,
render
:
(
t
,
r
)
=>
(
r
.
orderType
===
7
||
r
.
orderType
===
8
)
?
t
:
'¥'
+
t
},
{
title
:
'已发货批次'
,
align
:
'center'
,
dataIndex
:
'batchNo'
,
key
:
'batchNo'
,
render
:
text
=>
text
?
`
${
text
}
次`
:
''
},
{
title
:
'已发货批次'
,
align
:
'center'
,
dataIndex
:
'batchNo'
,
key
:
'batchNo'
,
render
:
text
=>
text
?
`
${
text
}
次`
:
''
},
// @todo 发货单号跳转
{
title
:
'发货单号'
,
...
...
@@ -88,7 +94,8 @@ export const useSelfTable = () => {
]
const
handleConfirm
=
async
(
record
)
=>
{
history
.
push
(
`/memberCenter/tranactionAbility/saleOrder/readyConfirmDelevedOrder/detail?id=
${
record
.
id
}
&orderDeliveryDetailsId=
${
record
.
orderDeliveryDetailsId
}
`
)
// history.push(`/memberCenter/tranactionAbility/saleOrder/readyConfirmDelevedOrder/detail?id=${record.orderId}&orderDeliveryDetailsId=${record.orderDeliveryDetailsId}`)
history
.
push
(
`/memberCenter/tranactionAbility/saleOrder/readyConfirmDelevedOrder/detail?id=
${
record
.
orderId
}
&batchNo=
${
record
.
batchNo
}
`
)
}
return
{
...
...
src/pages/transaction/saleOrder/readyConfirmDelevedOrder/schema/index.ts
View file @
60eb2869
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
getOrderType
}
from
'@/pages/transaction/effect'
;
import
{
getSaleOrderAuditPageSelectOption
}
from
'@/pages/transaction/effect'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
any
=
()
=>
{
const
OrderType
=
getOrderType
()
const
res
=
getSaleOrderAuditPageSelectOption
()
if
(
res
)
{
const
{
orderTypes
:
OrderType
,
}
=
res
return
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-start'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginRight
:
20
}
},
properties
:
{
orderThe
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
return
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入订单编号'
,
align
:
'flex-start'
,
},
"memberName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入采购会员名称'
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
inline
:
true
,
colStyle
:
{
marginRight
:
20
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
properties
:
{
digest
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入订单摘要'
,
}
},
enum
:
OrderType
.
map
(
item
=>
({
label
:
item
[
'name'
],
value
:
item
[
'status'
],
}))
},
"[startCreateTime,endCreateTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
"memberName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入采购会员名称'
}
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
"orderType"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
enum
:
OrderType
.
map
(
item
=>
({
label
:
item
[
'text'
],
value
:
item
[
'id'
],
}))
},
"[startDate,endDate]"
:
{
type
:
'daterange'
,
// "x-component": 'DateRangePickerUnix',
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
}
,
}
}
}
}
src/services/api.ts
View file @
60eb2869
...
...
@@ -18,6 +18,7 @@ import * as SettleV2Api from './SettleV2Api';
import
*
as
TransactionV2Api
from
'./TransactionV2Api'
;
import
*
as
ContractV2Api
from
'./ContractV2Api'
;
import
*
as
OrderV2Api
from
'./OrderV2Api'
;
import
*
as
OrderV2NewApi
from
'./OrderV2NewApi'
;
import
*
as
PlatformApi
from
'./PlatformApi'
;
import
*
as
ProductV2Api
from
'./ProductV2Api'
;
import
*
as
TemplateV2Api
from
'./TemplateV2Api'
;
...
...
@@ -58,6 +59,7 @@ export const PublicApi = {
...
TransactionV2Api
,
...
ContractV2Api
,
...
OrderV2Api
,
...
OrderV2NewApi
,
...
PlatformApi
,
...
ProductV2Api
,
...
TemplateV2Api
,
...
...
ytt.config.ts
View file @
60eb2869
...
...
@@ -20,6 +20,7 @@ const tokenList = [
{
name
:
'TransactionV2'
,
token
:
'3ad04435494d01c359b9f07948338e019133a3e6c0fccdbe1bc3adc19cf1e0b1'
,
categoryIds
:
[
0
]
},
// 交易服务V2
{
name
:
'ContractV2'
,
token
:
'bbf1f327cfe7c59d1e7fd9c5d25119829dd79d238b1f1c79ed97331e220721a4'
,
categoryIds
:
[
0
]
},
// 合同能力V2
{
name
:
'OrderV2'
,
token
:
'033f83bd5f519506f65f46d1513b1f8028a1dc1b5238d22edd0a2feb53cd3a19'
,
categoryIds
:
[
0
],
},
//订单服务V2
{
name
:
'OrderV2New'
,
token
:
'c11d6e07d958caff4fc5e26feaeb2637e38f1619e850cd2b6e7d5e7072d4989a'
,
categoryIds
:
[
0
],
},
//订单服务V2 New
{
name
:
'Platform'
,
token
:
'db3b086157528c865a1a1a9fafffa574e9c3f098c0518a7c374a72988ba1edbb'
,
categoryIds
:
[
0
]
},
// 平台后台v2
{
name
:
'ProductV2'
,
token
:
'b915026587fa1f6edf056f3335817fe2d4b350b0aa84da456786e15e83d45827'
,
categoryIds
:
[
0
],
},
// 商品服务V2
{
name
:
'TemplateV2'
,
token
:
'f0187aed046ac19accbed5c780cade01cf11b50a37099dab9d456195a4abd0d3'
,
categoryIds
:
[
0
],
},
// 页面模板服务V2
...
...
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