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
aa5acf7a
Commit
aa5acf7a
authored
Aug 02, 2021
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 采购订单添加操作,确认发货取消物流必填
parent
34468f62
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
108 additions
and
69 deletions
+108
-69
directChannel.tsx
src/pages/commodity/products/directChannel.tsx
+11
-7
index.tsx
src/pages/commodity/products/index.tsx
+8
-5
index.tsx
src/pages/transaction/components/orderHandDeleved/index.tsx
+10
-10
index.tsx
src/pages/transaction/purchaseOrder/index.tsx
+38
-22
index.tsx
...nsaction/purchaseOrder/readyReceiveOrder/detail/index.tsx
+1
-1
index.tsx
src/pages/transaction/saleOrder/index.tsx
+40
-24
No files found.
src/pages/commodity/products/directChannel.tsx
View file @
aa5acf7a
...
...
@@ -58,6 +58,8 @@ const DirectChannel: React.FC<{}> = () => {
const
[
currentOptionId
,
setCurrentOptionId
]
=
useState
<
number
>
()
const
[
isDisabledOKbtn
,
setIsDisabledOKbtn
]
=
useState
<
boolean
>
(
false
)
const
[
isBatchOption
,
setIsBatchOption
]
=
useState
<
boolean
>
(
false
)
// 是否是批量上下架操作
const
currentRef
=
useRef
<
any
>
([])
const
currentRowRef
=
useRef
<
any
>
([])
const
columns
:
ColumnType
<
any
>
[]
=
[
{
...
...
@@ -187,7 +189,7 @@ const DirectChannel: React.FC<{}> = () => {
// paramId ? 单个删除 : 批量删除
const
clickDelete
=
(
paramId
?:
number
)
=>
{
if
(
selectedRowKeys
.
length
||
paramId
)
if
(
currentRef
.
current
.
length
||
paramId
)
confirm
({
title
:
'确定要执行删除操作?'
,
icon
:
<
ExclamationCircleOutlined
/>,
...
...
@@ -195,8 +197,8 @@ const DirectChannel: React.FC<{}> = () => {
okType
:
'danger'
,
cancelText
:
'取消'
,
onOk
()
{
console
.
log
(
selectedRowKeys
)
PublicApi
.
postProductChannelCommodityDeleteBatchChannelCommodity
({
idList
:
paramId
?
[
paramId
]
:
selectedRowKeys
}).
then
(
res
=>
{
console
.
log
(
currentRef
.
current
)
PublicApi
.
postProductChannelCommodityDeleteBatchChannelCommodity
({
idList
:
paramId
?
[
paramId
]
:
currentRef
.
current
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
ref
.
current
.
reload
()
})
...
...
@@ -223,14 +225,16 @@ const DirectChannel: React.FC<{}> = () => {
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectRow
(
selectedRows
);
setSelectedRowKeys
(
selectedRowKeys
);
currentRef
.
current
=
selectedRowKeys
currentRowRef
.
current
=
selectedRows
}
}
// 判断所选商品 priceType, ?source, status一致
const
judgeType
=
()
=>
{
// let sourceArr = Array.from(new Set(selectRow.map((item:any) => item.channelCommodity.source)))
let
priceTypeArr
=
Array
.
from
(
new
Set
(
selectRow
.
map
((
item
:
any
)
=>
item
.
channelCommodity
.
commodity
.
priceType
)))
let
statusArr
=
Array
.
from
(
new
Set
(
selectRow
.
map
((
item
:
any
)
=>
item
.
status
)))
let
priceTypeArr
=
Array
.
from
(
new
Set
(
currentRowRef
.
current
.
map
((
item
:
any
)
=>
item
.
channelCommodity
.
commodity
.
priceType
)))
let
statusArr
=
Array
.
from
(
new
Set
(
currentRowRef
.
current
.
map
((
item
:
any
)
=>
item
.
status
)))
return
{
isPassJudge
:
priceTypeArr
.
length
===
1
&&
statusArr
.
length
===
1
,
// source: sourceArr,
...
...
@@ -241,7 +245,7 @@ const DirectChannel: React.FC<{}> = () => {
const
handleBatchClick
=
(
param
:
string
)
=>
{
setIsBatchOption
(
true
)
setShopsOption
([])
if
(
selectedRowKeys
.
length
){
if
(
currentRef
.
current
.
length
){
let
_judge
=
judgeType
()
if
(
_judge
.
isPassJudge
){
setUpDownModal
(
true
)
...
...
@@ -294,7 +298,7 @@ const DirectChannel: React.FC<{}> = () => {
let
params
:
any
=
{}
if
(
isBatchOption
){
params
=
{
idList
:
selectRow
.
map
(
item
=>
item
.
id
),
idList
:
currentRowRef
.
current
.
map
(
item
=>
item
.
id
),
shopList
:
checkedValues
}
}
else
{
...
...
src/pages/commodity/products/index.tsx
View file @
aa5acf7a
...
...
@@ -64,6 +64,7 @@ const Products: React.FC<{}> = () => {
const
[
checkedValues
,
setCheckedValues
]
=
useState
<
any
>
([])
const
[
currentOptionId
,
setCurrentOptionId
]
=
useState
()
const
[
isDisabledOKbtn
,
setIsDisabledOKbtn
]
=
useState
<
boolean
>
(
false
)
const
currentRef
=
useRef
<
any
>
()
const
[
shopId
,
setShopId
]
=
useState
<
any
>
()
/** 带参数查询,给表单带默认值 */
...
...
@@ -223,6 +224,7 @@ const Products: React.FC<{}> = () => {
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
setSelectRow
(
selectedRows
);
setSelectedRowKeys
(
selectedRowKeys
);
currentRef
.
current
=
selectedRowKeys
}
}
...
...
@@ -441,10 +443,10 @@ const Products: React.FC<{}> = () => {
}
const
handleMenuClick
=
(
e
:
any
)
=>
{
console
.
log
(
'menu'
,
e
,
selectedRowKeys
);
// 1 批量删除;2 删除导入批次
// 1 批量删除;2 删除导入批次
if
(
e
.
key
===
'1'
){
console
.
log
(
'批量删除'
)
handleBatchDelete
(
selectedRowKeys
,
true
)
handleBatchDelete
(
currentRef
.
current
,
true
)
}
else
if
(
e
.
key
===
'2'
){
console
.
log
(
'删除导入批次'
)
setDeleteBatchModal
(
true
)
...
...
@@ -452,7 +454,7 @@ const Products: React.FC<{}> = () => {
}
const
handleBatchDelete
=
(
ids
:
string
[],
param
?:
boolean
)
=>
{
if
(
ids
.
length
)
if
(
ids
.
length
)
{
if
(
param
){
confirm
({
title
:
'确定要执行批量删除操作?'
,
...
...
@@ -478,8 +480,9 @@ const Products: React.FC<{}> = () => {
ref
.
current
.
reload
()
})
}
else
message
.
error
(
'请选择需要操作的商品!'
)
}
else
{
message
.
error
(
'请选择需要操作的商品'
)
}
}
const
confirmDelete
=
(
paramId
:
any
)
=>
{
...
...
src/pages/transaction/components/orderHandDeleved/index.tsx
View file @
aa5acf7a
...
...
@@ -64,10 +64,10 @@ const schema: ISchema = {
type
:
'string'
,
title
:
'物流单号'
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入物流单号'
},
//
{
//
required: true,
//
message: '请输入物流单号'
//
},
{
limitByte
:
true
,
maxByte
:
20
...
...
@@ -81,12 +81,12 @@ const schema: ISchema = {
type
:
'string'
,
enum
:
[],
title
:
'物流公司'
,
"x-rules"
:
[
{
message
:
'请选择物流公司'
,
required
:
true
}
],
//
"x-rules": [
//
{
//
message: '请选择物流公司',
//
required: true
//
}
//
],
"x-mega-props"
:
{
span
:
1
}
...
...
src/pages/transaction/purchaseOrder/index.tsx
View file @
aa5acf7a
import
React
,
{
useState
,
useRef
,
useCallback
}
from
'react'
import
{
Card
,
Button
,
Modal
,
Row
,
Col
,
message
}
from
'antd'
import
{
Card
,
Button
,
Modal
,
Row
,
Col
,
message
,
Dropdown
,
Menu
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
...
...
@@ -18,6 +18,7 @@ import cx from 'classnames'
import
TableOperation
from
'@/components/TableOperation'
import
ModalForm
from
'@/components/ModalForm'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
CaretDownOutlined
}
from
'@ant-design/icons'
const
SelectStyles
=
styled
((
props
)
=>
<
div
className=
'select-list'
{
...
props
}
></
div
>)
`
.select_style_border {
...
...
@@ -121,29 +122,44 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
destroyActions
.
setFieldValue
(
'id'
,
id
)
}
/** 参照后台数据生成 */
const
renderOptionButton
=
(
record
:
any
)
=>
{
if
(
record
.
button
===
1
)
{
record
.
button
=
null
}
const
statusAndOperationList
=
{
'2'
:
[
'取消订单'
],
'3'
:
[
'售后'
],
'4'
:
[
'售后'
,
'评价'
],
}
/** 参照后台数据生成 */
const
renderOptionButton
=
(
record
:
any
)
=>
{
const
buttonGroup
=
{
'取消订单'
:
record
.
showCancel
,
'售后'
:
record
.
showAfterSales
,
'评价'
:
record
.
showComment
}
const
operationHandler
=
{
'取消订单'
:
()
=>
handleCancel
(
record
.
i
d
),
'售后'
:
()
=>
handleSaleAfter
(
record
.
i
d
),
'评价'
:
()
=>
handleEvaluate
(
record
.
i
d
),
'取消订单'
:
()
=>
handleCancel
(
record
.
orderI
d
),
'售后'
:
()
=>
handleSaleAfter
(
record
.
orderI
d
),
'评价'
:
()
=>
handleEvaluate
(
record
.
orderI
d
),
}
return
(
<
TableOperation
record=
{
record
}
customField=
'button'
statusOperationMap=
{
statusAndOperationList
}
operationHandler=
{
operationHandler
}
/>
)
const
keyNames
=
Object
.
keys
(
buttonGroup
)
return
(<>
{
Object
.
values
(
buttonGroup
).
filter
(
Boolean
).
length
>
2
?
<>
<
Button
type=
'link'
onClick=
{
operationHandler
[
keyNames
[
0
]]
}
>
{
keyNames
[
0
]
}
</
Button
>
<
Dropdown
overlay=
{
<
Menu
>
{
keyNames
.
slice
(
1
,
keyNames
.
length
).
map
((
e
,
i
)
=>
(
<
Menu
.
Item
key=
{
`menuItem${i}`
}
>
<
Button
type=
'link'
onClick=
{
operationHandler
[
e
]
}
>
{
e
}
</
Button
>
</
Menu
.
Item
>
))
}
</
Menu
>
}
>
<
a
className=
"ant-dropdown-link"
onClick=
{
e
=>
e
.
preventDefault
()
}
>
更多
<
CaretDownOutlined
/>
</
a
>
</
Dropdown
>
</>
:
keyNames
.
map
((
e
,
i
)
=>
(
buttonGroup
[
e
]
?
<
Button
key=
{
`btnItem${i}`
}
type=
'link'
onClick=
{
operationHandler
[
e
]
}
>
{
e
}
</
Button
>
:
null
))
}
</>)
}
const
secondColumns
=
()
=>
{
...
...
src/pages/transaction/purchaseOrder/readyReceiveOrder/detail/index.tsx
View file @
aa5acf7a
...
...
@@ -42,7 +42,7 @@ const ReadyReceiveOrderDetail: React.FC = () => {
<
div
>
<
OrderDetailContext
.
Provider
value=
{
formContext
}
>
<
OrderDetailHeader
detailList=
{
detailList
}
detailData=
{
formContext
.
data
}
extraRight=
{
<
Button
type=
'primary'
onClick=
{
handleClick
}
>
formContext
.
data
?.
receiveDone
&&
<
Button
type=
'primary'
onClick=
{
handleClick
}
>
{
isHeadReceipt
?
'手工收货'
:
'去确认收货'
}
</
Button
>
}
/>
...
...
src/pages/transaction/saleOrder/index.tsx
View file @
aa5acf7a
import
React
,
{
useCallback
,
useRef
}
from
'react'
import
{
Card
,
Button
}
from
'antd'
import
{
Card
,
Button
,
Dropdown
,
Menu
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
...
...
@@ -16,6 +16,7 @@ import { createFormActions } from '@formily/antd'
import
TableOperation
from
'@/components/TableOperation'
import
ModalForm
from
'@/components/ModalForm'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
CaretDownOutlined
}
from
'@ant-design/icons'
// 销售订单查询
...
...
@@ -34,13 +35,13 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
const
ref
=
useRef
<
any
>
({})
const
destoryRef
=
useRef
<
any
>
({})
const
pauseRef
=
useRef
<
any
>
({})
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrder
PurchaseOrde
rCancel
)
const
{
run
:
runPause
,
loading
:
loadingEnd
}
=
useHttpRequest
(
PublicApi
.
postOrder
Suspension
)
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrder
Vendo
rCancel
)
const
{
run
:
runPause
,
loading
:
loadingEnd
}
=
useHttpRequest
(
PublicApi
.
postOrder
VendorTerminate
)
// 提交取消
const
handleSubmit
=
useCallback
(()
=>
{
destroyActions
.
submit
().
then
(
async
({
values
}:
any
)
=>
{
const
result
=
await
run
(
values
)
const
result
=
await
run
(
{
orderId
:
values
.
id
,
reason
:
values
.
cancelReason
}
)
if
(
result
.
code
===
1000
)
{
destoryRef
.
current
.
setVisible
(
false
)
setTimeout
(()
=>
{
...
...
@@ -53,7 +54,7 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
// 提交中止
const
handleSubmitPause
=
useCallback
(()
=>
{
pauseActions
.
submit
().
then
(
async
({
values
}:
any
)
=>
{
const
result
=
await
runPause
(
values
)
const
result
=
await
runPause
(
{
orderId
:
values
.
id
,
reason
:
values
.
auditOpinion
}
)
if
(
result
.
code
===
1000
)
{
pauseRef
.
current
.
setVisible
(
false
)
setTimeout
(()
=>
{
...
...
@@ -69,38 +70,53 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
const
handleCancel
=
(
r
)
=>
{
destoryRef
.
current
.
setVisible
(
true
)
destroyActions
.
setFieldValue
(
'id'
,
r
.
i
d
)
destroyActions
.
setFieldValue
(
'id'
,
r
.
orderI
d
)
}
const
handleSuspend
=
(
r
)
=>
{
pauseRef
.
current
.
setVisible
(
true
)
pauseActions
.
setFieldValue
(
'id'
,
r
.
i
d
)
pauseActions
.
setFieldValue
(
'id'
,
r
.
orderI
d
)
pauseActions
.
setFieldValue
(
'state'
,
1
)
}
// 1.(查看)2.(查看、取消订单)3.(查看售后),4.(评价查看售后)5.(提交审核修改删除查看)6.(修改查看),7.(查看中止)8.查看评价9.待新增采购入库单
// 10.审核采购入库单,11.待新增销售发货单12.审核销售发货单13.待新增物流单,14.查看物流单15.修改物流单
/** 参照后台数据生成 */
const
renderOptionButton
=
(
record
:
any
)
=>
{
const
statusAndOperationList
=
{
'2'
:
[
'取消订单'
],
'7'
:
[
'中止'
],
'8'
:
[
'评价'
],
}
const
buttonGroup
=
{
'取消订单'
:
record
.
showCancel
,
'中止'
:
record
.
showTerminate
,
'评价'
:
record
.
showComment
}
const
operationHandler
=
{
'取消订单'
:
()
=>
handleCancel
(
record
),
'中止'
:
()
=>
handleSuspend
(
record
),
'评价'
:
()
=>
handleEvaluate
(
record
.
i
d
),
'评价'
:
()
=>
handleEvaluate
(
record
.
orderI
d
),
}
return
(
<
TableOperation
record=
{
record
}
customField=
'button'
statusOperationMap=
{
statusAndOperationList
}
operationHandler=
{
operationHandler
}
priorityOperationName=
'审核'
/>
)
const
keyNames
=
Object
.
keys
(
buttonGroup
)
return
(<>
{
Object
.
values
(
buttonGroup
).
filter
(
Boolean
).
length
>
2
?
<>
<
Button
type=
'link'
onClick=
{
operationHandler
[
keyNames
[
0
]]
}
>
{
keyNames
[
0
]
}
</
Button
>
<
Dropdown
overlay=
{
<
Menu
>
{
keyNames
.
slice
(
1
,
keyNames
.
length
).
map
((
e
,
i
)
=>
(
<
Menu
.
Item
key=
{
`menuItem${i}`
}
>
<
Button
type=
'link'
onClick=
{
operationHandler
[
e
]
}
>
{
e
}
</
Button
>
</
Menu
.
Item
>
))
}
</
Menu
>
}
>
<
a
className=
"ant-dropdown-link"
onClick=
{
e
=>
e
.
preventDefault
()
}
>
更多
<
CaretDownOutlined
/>
</
a
>
</
Dropdown
>
</>
:
keyNames
.
map
((
e
,
i
)
=>
(
buttonGroup
[
e
]
?
<
Button
key=
{
`btnItem${i}`
}
type=
'link'
onClick=
{
operationHandler
[
e
]
}
>
{
e
}
</
Button
>
:
null
))
}
</>)
}
const
secondColumns
=
()
=>
{
...
...
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