Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
factory_front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qinjianhui
factory_front
Commits
fc7768a6
Commit
fc7768a6
authored
Apr 07, 2026
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 缺货标记
parent
f922e81d
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
91 additions
and
25 deletions
+91
-25
src/api/factoryOrderNew.ts
+11
-0
src/types/api/factoryOrderNew.ts
+1
-1
src/views/order/factoryOrderNew/component/CardLayout.vue
+24
-1
src/views/order/factoryOrderNew/component/PickCompleteDialog.vue
+30
-0
src/views/order/factoryOrderNew/component/PickFailDialog.vue
+9
-7
src/views/order/factoryOrderNew/index.vue
+16
-16
No files found.
src/api/factoryOrderNew.ts
View file @
fc7768a6
...
...
@@ -196,6 +196,17 @@ export function restockCheckApi(
)
}
/** 按仓库标记缺货:同一仓库一次请求,多个 SKU 传 warehouseSkuList */
export
function
markStockOutOfApi
(
data
:
{
warehouseId
:
number
|
string
warehouseSkuList
:
string
[]
})
{
return
axios
.
post
<
never
,
BaseRespData
<
void
>>
(
'factory/podOrder/outOfStock/batchAutoMark'
,
data
,
)
}
export
function
pickCompleteByIdsDataApi
(
ids
:
(
number
|
string
)[])
{
return
axios
.
post
<
never
,
...
...
src/types/api/factoryOrderNew.ts
View file @
fc7768a6
...
...
@@ -226,7 +226,7 @@ export interface RestockData {
export
interface
PickCompleteData
{
id
:
number
warehouseId
?
:
number
warehouseId
:
number
warehouseName
?:
string
skuImage
?:
string
productName
?:
string
...
...
src/views/order/factoryOrderNew/component/CardLayout.vue
View file @
fc7768a6
...
...
@@ -26,6 +26,26 @@
{{
item
.
operationNo
}}
</span>
</
template
>
<
template
#
top_left
>
<el-tooltip
v-if=
"item.outOfStock"
effect=
"light"
content=
"缺货"
placement=
"bottom"
>
<div
style=
"
background-color: #F56C6C;
color: #fff;
padding: 2px 4px;
border-radius: 4px;
font-size: 12px;
"
>
缺
</div>
</el-tooltip>
</
template
>
<
template
#
top_right
>
<img
v-if=
"item.craftCode && ['ZPZY', 'CXZY', 'THZY'].includes(item.craftCode as string)"
...
...
@@ -249,7 +269,10 @@
<
script
setup
lang=
"ts"
>
import
{
ref
}
from
'vue'
import
{
ElMessage
}
from
'element-plus'
import
{
getCardLayoutListApi
,
getFactoryOrderNewLogApi
}
from
'@/api/factoryOrderNew'
import
{
getCardLayoutListApi
,
getFactoryOrderNewLogApi
,
}
from
'@/api/factoryOrderNew'
import
type
{
PaginationData
}
from
'@/types/api'
import
usePageList
from
'@/utils/hooks/usePageList'
import
{
operateOrderListData
}
from
'@/types/api/factoryOrderNew'
...
...
src/views/order/factoryOrderNew/component/PickCompleteDialog.vue
View file @
fc7768a6
...
...
@@ -121,6 +121,7 @@ import {
pickCompleteByIdsDataApi
,
pickCompleteApi
,
replenishmentCompleteApi
,
markStockOutOfApi
,
}
from
'@/api/factoryOrderNew'
import
type
{
PickCompleteData
}
from
'@/types/api/factoryOrderNew'
import
type
{
BaseRespData
}
from
'@/types/api'
...
...
@@ -536,6 +537,35 @@ const handleSubmit = async () => {
try
{
const
res
=
await
submitApi
.
value
(
orderIds
as
(
number
|
string
)[])
if
(
res
.
code
!==
200
)
return
const
pickFailedOrderList
=
pickData
.
value
?.
pickingSituationList
?.
filter
(
(
item
)
=>
item
.
pickingStatus
!==
'success'
,
)
if
(
pickFailedOrderList
&&
pickFailedOrderList
.
length
>
0
)
{
const
warehouseMap
:
Record
<
number
,
PickCompleteData
[]
>
=
{}
for
(
const
item
of
pickFailedOrderList
)
{
const
wid
=
item
.
warehouseId
if
(
!
warehouseMap
[
wid
])
warehouseMap
[
wid
]
=
[]
warehouseMap
[
wid
].
push
(
item
)
}
try
{
for
(
const
[
widStr
,
rows
]
of
Object
.
entries
(
warehouseMap
))
{
const
warehouseSkuList
=
[
...
new
Set
(
rows
.
map
((
r
)
=>
r
.
thirdSkuCode
)
.
filter
((
s
):
s
is
string
=>
typeof
s
===
'string'
&&
s
!==
''
),
),
]
const
markRes
=
await
markStockOutOfApi
({
warehouseId
:
widStr
,
warehouseSkuList
,
})
if
(
markRes
.
code
!==
200
)
return
}
}
catch
(
e
)
{
console
.
error
(
e
)
}
}
ElMessage
.
success
(
dialogTitle
.
value
)
visible
.
value
=
false
emit
(
'success'
)
...
...
src/views/order/factoryOrderNew/component/PickFailDialog.vue
View file @
fc7768a6
...
...
@@ -65,19 +65,19 @@
<CreateOutboundDialog
ref=
"createOutboundDialogRef"
@
success=
"() => {
@
success=
"
() => {
visible = false
emit('success')
}"
}
"
/>
</template>
<
script
setup
lang=
"tsx"
>
import
{
ref
}
from
'vue'
import
{
ElMessage
}
from
'element-plus'
import
{
applyForReplenishByIdApi
,
}
from
'@/api/factoryOrderNew'
import
{
applyForReplenishByIdApi
}
from
'@/api/factoryOrderNew'
import
type
{
operateOrderListData
}
from
'@/types/api/factoryOrderNew'
import
TableView
from
'@/components/TableView.vue'
import
_
from
'lodash'
...
...
@@ -117,7 +117,7 @@ const columns = [
key
:
'batchArrangeNumber'
,
prop
:
'batchArrangeNumber'
,
label
:
'款号'
,
width
:
1
0
0
,
width
:
1
4
0
,
align
:
'center'
,
},
{
...
...
@@ -280,7 +280,9 @@ const handleCreateOutbound = () => {
.
filter
((
item
)
=>
item
.
suggestOutQuantity
!==
0
)
if
(
items
.
length
===
0
)
{
ElMessage
.
warning
(
'建议出库数量=0,无法快速创建出库单!'
)
ElMessageBox
.
alert
(
'建议出库数量=0,无法快速创建出库单!'
,
'提示'
,
{
type
:
'warning'
,
})
return
}
...
...
src/views/order/factoryOrderNew/index.vue
View file @
fc7768a6
...
...
@@ -478,11 +478,11 @@
>
更新报关信息
<
/ElButto
n
>
<
/span
>
<
span
v
-
if
=
"status === 'PENDING_RECEIVE'"
class
=
"item"
>
<
!--
<
span
v
-
if
=
"status === 'PENDING_RECEIVE'"
class
=
"item"
>
<
ElButton
type
=
"warning"
@
click
=
"handleTransferOldFlow"
>
转旧流程
<
/ElButto
n
>
<
/span
>
<
/span>
--
>
<
span
v
-
if
=
"status === 'PENDING_SCHEDULE'"
class
=
"item"
>
<
ElButton
type
=
"primary"
@
click
=
"handleArrange"
>
排单
<
/ElButton
>
<
/span
>
...
...
@@ -903,7 +903,7 @@ import type {
import
platformJson
from
'../../../json/platform.json'
import
{
refreshProductInfoApi
,
transferOldFlowApi
,
//
transferOldFlowApi,
cancelSuspendApi
,
archiveOrderApi
,
printPickOrderApi
,
...
...
@@ -1490,19 +1490,19 @@ const handleRefreshProductInfo = async () => {
loading
.
close
()
}
}
const
handleTransferOldFlow
=
async
()
=>
{
try
{
await
executeBatchAction
({
getIds
:
getSelectedIds
,
api
:
transferOldFlowApi
,
confirmText
:
'确定转旧流程吗?'
,
successText
:
'转旧流程成功'
,
refreshTree
:
true
,
}
)
}
catch
(
e
:
unknown
)
{
ElMessage
.
error
((
e
as
Error
)?.
message
||
'转旧流程失败'
)
}
}
//
const handleTransferOldFlow = async () =>
{
//
try
{
//
await executeBatchAction(
{
//
getIds: getSelectedIds,
//
api: transferOldFlowApi,
//
confirmText: '确定转旧流程吗?',
//
successText: '转旧流程成功',
//
refreshTree: true,
//
}
)
//
}
catch
(
e
:
unknown
)
{
//
ElMessage.error((e as Error)?.message || '转旧流程失败')
//
}
//
}
const
handleLogisticsCommand
=
async
(
command
:
string
)
=>
{
if
(
!
ensureSelection
())
return
const
ids
=
getSelectedIds
()
...
...
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