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
852ad049
Commit
852ad049
authored
Aug 11, 2025
by
wuqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善pod-cn
parent
da364b1e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
744 additions
and
14 deletions
+744
-14
src/api/podCnOrder.ts
+59
-5
src/api/podUsOrder.ts
+1
-1
src/views/order/podCN/index.vue
+684
-8
No files found.
src/api/podCnOrder.ts
View file @
852ad049
...
...
@@ -7,8 +7,9 @@ import {
LogListData
,
WarehouseListData
,
LogisticsData
,
ExportParams
ExportParams
,
}
from
'@/types/api/podCnOrder'
import
{
InterceptStateGroupData
}
from
'@/types/api/podUsOrder'
import
axios
from
'./axios'
import
{
PodMakeOrderData
}
from
'@/types/api/podMakeOrder'
export
function
exportPodCnInfo
(
data
:
ExportParams
)
{
...
...
@@ -17,6 +18,13 @@ export function exportPodCnInfo(data: ExportParams) {
data
,
)
}
// 拦截状态数量
export
function
getgetInterceptStateGroupList
()
{
return
axios
.
get
<
never
,
BaseRespData
<
InterceptStateGroupData
>>
(
'factory/podJomallOrderCn/findInterceptStateGroupList'
,
)
}
// 同步收货地址
export
function
syncReceiverAddress
(
data
:
number
[])
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
...
...
@@ -278,7 +286,54 @@ export function refreshMaterialApi(data: {
data
,
)
}
// 拦截状态改变
export
function
interceptUpdateApi
(
params
:
{
orderIds
:
(
string
|
number
)[]
interceptStatus
:
number
})
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderCn/updateInterceptStatus`
,
params
,
)
}
// 驳回
export
function
rejectToApi
(
params
:
{
orderStatus
:
string
productList
:
ProductList
[]
reasonStr
:
string
})
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderCn/rejectTo`
,
params
,
)
}
// 状态推送
export
function
statusPushApi
(
params
:
(
string
|
number
)[])
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderCn/statusPush`
,
params
,
)
}
// 完成发货
export
function
completeDeliveryApi
(
params
:
{
orderIdList
:
(
string
|
number
)[]
})
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderCn/completeDelivery`
,
params
,
)
}
export
function
refreshProductInformationApi
(
data
:
{
orderIds
?:
string
productIds
?:
string
})
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
'factory/podJomallOrderProductCn/refreshProductInfo'
,
data
,
)
}
// 设计图排版
export
function
composingDesignImages
(
data
:
number
[],
type
:
string
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
...
...
@@ -377,7 +432,7 @@ export function batchDownloadDownloadApi(params: { id: number; type: string }) {
}
// 批量下载 删除
export
function
batchDownloadDeleteApi
(
params
:
{
id
:
number
})
{
export
function
batchDownloadDeleteApi
(
params
:
{
id
s
:
string
})
{
return
axios
.
get
<
never
,
BaseRespData
<
never
>>
(
`factory/podBatchDownload/delete`
,
{
...
...
@@ -452,7 +507,7 @@ export function changeLogisticsApi(params: {
params
,
)
}
// 修改自有物流信息
// 修改自有物流信息
export
function
updateSelfLogistics
(
params
:
{
trackingNumber
:
string
expressSheet
:
string
...
...
@@ -473,4 +528,4 @@ export function uploadExpressSheet(params: {
'factory/podJomallOrderCn/uploadExpressSheet'
,
params
,
)
}
\ No newline at end of file
}
src/api/podUsOrder.ts
View file @
852ad049
...
...
@@ -294,7 +294,7 @@ export function refreshMaterialApi(data: {
productIds
?:
string
})
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
'factory/podJomallOrderProductUs/refreshDesignImages
'
,
'factory/podJomallOrderProductUs/refreshDesignImages'
,
data
,
)
}
...
...
src/views/order/podCN/index.vue
View file @
852ad049
...
...
@@ -301,13 +301,28 @@
确认生产
</ElButton>
</span>
<span
v-if=
"status === 'EXCEPTION_ORDER'"
class=
"item"
>
<ElButton
type=
"success"
@
click=
"updateOrder"
>
转至待确认
</ElButton>
</span>
<span
v-if=
"status === 'CREATE_LOGISTICS'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"asyncOrderAddress"
>
同步收货地址
</ElButton>
</span>
<span
v-if=
"status === 'PICKING' || status === 'TO_BE_REPLENISHMENT'"
v-if=
"status === 'EXCEPTION_ORDER' && exceptionStatus === 1"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"assignOrder"
>
分派
</ElButton>
</span>
<span
v-if=
"
status === 'PICKING' ||
status === 'TO_BE_REPLENISHMENT' ||
status === 'IN_PRODUCTION'
"
class=
"item"
>
<ElButton
type=
"primary"
@
click=
"printProductionOrder"
>
...
...
@@ -332,8 +347,15 @@
<span
v-if=
"status === 'PICKING'"
class=
"item"
>
<ElButton
type=
"success"
@
click=
"toOutOfStock"
>
转至缺货
</ElButton>
</span>
<span
v-if=
"status === 'TO_BE_CONFIRMED'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"changeExceptionOrder"
>
转为异常单
</ElButton>
</span>
<span
v-if=
"status === 'TO_BE_CONFIRMED' || status === 'EXCEPTION_ORDER'"
class=
"item"
>
<ElButton
type=
"danger"
@
click=
"cancelOrder"
>
取消
</ElButton>
</span>
<span
v-if=
"status === 'IN_PRODUCTION'"
class=
"item"
>
...
...
@@ -361,6 +383,11 @@
转至待排单
</ElButton>
</span>
<span
v-if=
"status === 'WAIT_SHIPMENT'"
class=
"item"
>
<ElButton
type=
"primary"
@
click=
"completeDelivery()"
>
完成发货
</ElButton
>
</span>
<span
v-if=
"status === 'WAIT_SHIPMENT' || status === 'CREATE_LOGISTICS'"
class=
"item"
...
...
@@ -431,13 +458,38 @@
<span
v-if=
"status === 'TO_BE_ARRANGE'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"arrangeFinish"
>
排单完成
</ElButton>
</span>
<span
v-if=
"status !== 'BATCH_DOWNLOAD'"
class=
"item"
>
<span
v-if=
"status !== 'BATCH_DOWNLOAD' && status !== 'WAIT_SHIPMENT'"
class=
"item"
>
<ElButton
type=
"primary"
@
click=
"downloadMaterial"
>
下载素材
</ElButton
>
</span>
<span
v-if=
"
status === 'INTERCEPTED' &&
(interceptCurrent === 1 || interceptCurrent === 4)
"
class=
"item"
>
<ElButton
type=
"success"
@
click=
"interceptChange(true)"
>
拦截成功
</ElButton>
</span>
<span
v-if=
"
status === 'INTERCEPTED' &&
(interceptCurrent === 1 || interceptCurrent === 4)
"
class=
"item"
>
<ElButton
type=
"danger"
@
click=
"interceptChange(false)"
>
拦截失败
</ElButton>
</span>
<span
v-if=
"
status === 'TO_BE_CONFIRMED' ||
status === 'PICKING' ||
status === 'STOCK_OUT' ||
...
...
@@ -450,6 +502,82 @@
刷新素材
</ElButton>
</span>
<span
v-if=
"
[
'TO_BE_CONFIRMED',
'PICKING',
'STOCK_OUT',
'EXCEPTION_ORDER',
'TO_BE_REPLENISHMENT',
'IN_PRODUCTION',
'TO_BE_ARRANGE',
].includes(status)
"
class=
"item"
>
<ElButton
type=
"success"
@
click=
"refreshProductInformation"
>
刷新商品信息
</ElButton>
</span>
<span
v-if=
"
status === 'STOCK_OUT' ||
status === 'CREATE_LOGISTICS' ||
status === 'TO_BE_ARRANGE' ||
status === 'PICKING' ||
status === 'IN_PRODUCTION'
"
class=
"item"
>
<ElDropdown>
<el-button
type=
"warning"
>
驳回至
<el-icon
class=
"el-icon--right"
><ArrowDown
/></el-icon>
</el-button>
<
template
#
dropdown
>
<ElDropdownMenu>
<ElDropdownItem
:disabled=
"
selection.length === 0 && cardSelection.length === 0
"
@
click=
"rejectOrder('TO_BE_CONFIRMED')"
>
待确认
</ElDropdownItem
>
<ElDropdownItem
v-if=
"
status === 'IN_PRODUCTION' ||
status === 'TO_BE_ARRANGE' ||
status === 'PICKING'
"
:disabled=
"
selection.length === 0 && cardSelection.length === 0
"
@
click=
"rejectOrder('CREATE_LOGISTICS')"
>
待创建物流
</ElDropdownItem
>
<ElDropdownItem
v-if=
"status === 'PICKING' || status === 'IN_PRODUCTION'"
:disabled=
"
selection.length === 0 && cardSelection.length === 0
"
@
click=
"rejectOrder('TO_BE_ARRANGE')"
>
待排单
</ElDropdownItem
>
<ElDropdownItem
v-if=
"status === 'IN_PRODUCTION'"
:disabled=
"
selection.length === 0 && cardSelection.length === 0
"
@
click=
"rejectOrder('PICKING')"
>
待拣胚
</ElDropdownItem
>
</ElDropdownMenu>
</
template
>
</ElDropdown>
</span>
<span
v-if=
"status === 'COMPLETE'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"statusPush"
>
状态推送
</ElButton>
</span>
<span
v-if=
"status === 'COMPLETE'"
class=
"item"
>
<ElButton
:loading=
"exportLoading"
...
...
@@ -458,6 +586,11 @@
>
导出
</ElButton
>
</span>
<span
v-if=
"status === 'BATCH_DOWNLOAD'"
class=
"item"
>
<ElButton
type=
"danger"
@
click=
"handleBatchDelete('batch')"
>
批量删除
</ElButton
>
</span>
</ElFormItem>
</ElForm>
</div>
...
...
@@ -498,6 +631,103 @@
<span
class=
"sub-status-item-label"
>
国外
</span>
</div>
</div>
<div
v-if=
"status === 'EXCEPTION_ORDER'"
class=
"sub-status mb-10"
>
<div
class=
"sub-status-item"
:class=
"exceptionStatus === 1 ? 'sub-active' : ''"
@
click=
"handleExceptionCommand(1)"
>
<span
class=
"sub-status-item-label"
>
待分派
</span>
</div>
<div
class=
"sub-status-item"
:class=
"exceptionStatus === 2 ? 'sub-active' : ''"
@
click=
"handleExceptionCommand(2)"
>
<span
class=
"sub-status-item-label"
>
待处理
</span>
</div>
<div
class=
"sub-status-item"
:class=
"exceptionStatus === 3 ? 'sub-active' : ''"
@
click=
"handleExceptionCommand(3)"
>
<span
class=
"sub-status-item-label"
>
待同步
</span>
</div>
</div>
<div
v-if=
"status === 'INTERCEPTED'"
class=
"sub-status mb-10"
>
<div
class=
"sub-status-item"
:class=
"interceptCurrent === 1 ? 'sub-active' : ''"
@
click=
"handleInterceptionCommand(1, 0)"
>
<span
class=
"sub-status-item-label"
>
生产拦截申请
</span>
<span
v-if=
"interceptionStatus.production['0']"
class=
"tabs-node_count blue"
>
{{ interceptionStatus.production['0'] }}
</span
>
</div>
<div
class=
"sub-status-item"
:class=
"interceptCurrent === 2 ? 'sub-active' : ''"
@
click=
"handleInterceptionCommand(2, 1)"
>
<span
class=
"sub-status-item-label"
>
生产拦截成功
</span>
<span
v-if=
"interceptionStatus.production['1']"
class=
"tabs-node_count blue"
>
{{ interceptionStatus.production['1'] }}
</span
>
</div>
<div
class=
"sub-status-item"
:class=
"interceptCurrent === 3 ? 'sub-active' : ''"
@
click=
"handleInterceptionCommand(3, 2)"
>
<span
class=
"sub-status-item-label"
>
生产拦截失败
</span>
<span
v-if=
"interceptionStatus.production['2']"
class=
"tabs-node_count red"
>
{{ interceptionStatus.production['2'] }}
</span
>
</div>
<div
class=
"sub-status-item"
:class=
"interceptCurrent === 4 ? 'sub-active' : ''"
@
click=
"handleInterceptionCommand(4, 2)"
>
<span
class=
"sub-status-item-label"
>
发货拦截申请
</span>
<span
v-if=
"interceptionStatus.shipment['0']"
class=
"tabs-node_count blue"
>
{{ interceptionStatus.shipment['0'] }}
</span
>
</div>
<div
class=
"sub-status-item"
:class=
"interceptCurrent === 5 ? 'sub-active' : ''"
@
click=
"handleInterceptionCommand(5, 3)"
>
<span
class=
"sub-status-item-label"
>
发货拦截成功
</span>
<span
v-if=
"interceptionStatus.shipment['1']"
class=
"tabs-node_count blue"
>
{{ interceptionStatus.shipment['1'] }}
</span
>
</div>
<div
class=
"sub-status-item"
:class=
"interceptCurrent === 6 ? 'sub-active' : ''"
@
click=
"handleInterceptionCommand(6, 4)"
>
<span
class=
"sub-status-item-label"
>
发货拦截失败
</span>
<span
v-if=
"interceptionStatus.shipment['2']"
class=
"tabs-node_count red"
>
{{ interceptionStatus.shipment['2'] }}
</span
>
</div>
</div>
<div
v-if=
"
status !== 'IN_PRODUCTION' &&
...
...
@@ -794,6 +1024,15 @@
</el-icon>
</div>
<div
class=
"order-detail-item"
>
<span
class=
"order-detail-item-label"
>
是否代发:
</span>
<span
style=
"color: red; font-weight: 500"
class=
"order-detail-item-value"
>
{{
[
'否'
,
'是'
][
row
.
replaceShipment
]
}}
</span>
</div>
<div
class=
"order-detail-item"
>
<span
class=
"order-detail-item-label"
>
物流类型:
</span>
<span
style=
"color: red; font-weight: 500"
...
...
@@ -1037,7 +1276,11 @@
<
/ElButton
>
<
/span
>
<
span
class
=
"operate-item"
>
<
ElButton
link
type
=
"danger"
@
click
=
"handleBatchDelete(row)"
>
<
ElButton
link
type
=
"danger"
@
click
=
"handleBatchDelete('single', row.id)"
>
删除
<
/ElButton
>
<
/span
>
...
...
@@ -1616,6 +1859,64 @@
<
el
-
dialog
v
-
model
=
"dialogVisible"
width
=
"35%"
>
<
img
:
src
=
"dialogImageUrl"
alt
=
"商品预览图片"
/>
<
/el-dialog
>
<
ElDialog
v
-
model
=
"exceptionDialogVisible"
title
=
"转为异常单"
width
=
"500px"
:
close
-
on
-
click
-
modal
=
"false"
@
open
=
"handleExceptionDialogOpen"
>
<
ElForm
ref
=
"exceptionFormRef"
:
model
=
"exceptionForm"
label
-
width
=
"100px"
>
<
ElFormItem
label
=
"异常类型"
prop
=
"exceptionType"
:
rules
=
"
status === 'EXCEPTION_ORDER'
? { required: true, message: '请选择异常类型'
}
: {
}
"
>
<
ElSelect
v
-
model
=
"exceptionForm.exceptionType"
style
=
"width: 100%"
placeholder
=
"请选择异常类型"
clearable
>
<
ElOption
v
-
for
=
"type in exceptionTypes"
:
key
=
"type.value"
:
label
=
"type.label"
:
value
=
"type.value"
/>
<
/ElSelect
>
<
/ElFormItem
>
<
ElFormItem
label
=
"异常原因"
prop
=
"exceptionReason"
:
rules
=
"
status !== 'EXCEPTION_ORDER'
? { required: true, message: '请输入异常原因'
}
: {
}
"
>
<
ElInput
v
-
model
=
"exceptionForm.exceptionReason"
style
=
"width: 100%"
type
=
"textarea"
:
rows
=
"3"
placeholder
=
"请输入异常原因"
/>
<
/ElFormItem
>
<
/ElForm
>
<
template
#
footer
>
<
span
class
=
"dialog-footer"
>
<
ElButton
@
click
=
"exceptionDialogVisible = false"
>
取消
<
/ElButton
>
<
ElButton
type
=
"primary"
@
click
=
"handleExceptionConfirm"
>
确定
<
/ElButton
>
<
/span
>
<
/template
>
<
/ElDialog
>
<
/template
>
<
script
setup
lang
=
"ts"
>
import
{
getUserMarkList
}
from
'@/api/common'
...
...
@@ -1644,6 +1945,7 @@ import {
loadWarehouseListApi
,
getLogisticsCalculation
,
refreshMaterialApi
,
refreshProductInformationApi
,
composingDesignImages
,
updateLogisticsToArrangeApi
,
syncReceiverAddress
,
...
...
@@ -1664,7 +1966,13 @@ import {
getTrackingNumberApi
,
getfaceSimplexFileApi
,
cancelLogisticsOrderApi
,
changeLogisticsApi
,
getgetInterceptStateGroupList
,
interceptUpdateApi
,
changeExceptionOrderApi
,
updateExceptionOrderApi
,
rejectToApi
,
statusPushApi
,
completeDeliveryApi
,
}
from
'@/api/podCnOrder'
import
{
BaseRespData
}
from
'@/types/api'
...
...
@@ -1672,7 +1980,7 @@ import { BaseRespData } from '@/types/api'
import
UpdateAddress
from
'./components/updateAddress.vue'
import
{
getAllCountryApi
}
from
'@/api/logistics.ts'
import
{
InterceptStateGroupData
}
from
'@/types/api/podUsOrder'
import
TableView
from
'@/components/TableView.vue'
import
{
LogListData
,
...
...
@@ -1927,12 +2235,291 @@ const handleRefreshAddress = async (row: PodCnOrderListData) => {
}
,
)
}
const
exceptionTypes
=
[
{
value
:
'1'
,
label
:
'客户'
}
,
{
value
:
'2'
,
label
:
'工厂'
}
,
]
const
currentOrderIds
=
ref
<
number
[]
>
([])
const
exceptionDialogVisible
=
ref
(
false
)
const
exceptionFormRef
=
ref
()
const
exceptionForm
=
ref
({
exceptionType
:
''
,
exceptionReason
:
''
,
}
)
const
changeExceptionOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
currentOrderIds
.
value
=
selection
.
value
.
map
((
item
)
=>
item
.
id
)
exceptionDialogVisible
.
value
=
true
}
const
handleExceptionConfirm
=
async
()
=>
{
try
{
await
exceptionFormRef
.
value
.
validate
()
}
catch
{
return
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
const
url
=
status
.
value
===
'EXCEPTION_ORDER'
?
'factory/podJomallOrderCn/distributionExceptionOrders'
:
'factory/podJomallOrderCn/exceptionOrders'
try
{
const
res
=
await
changeExceptionOrderApi
(
url
,
currentOrderIds
.
value
,
exceptionForm
.
value
.
exceptionType
,
exceptionForm
.
value
.
exceptionReason
,
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
exceptionDialogVisible
.
value
=
false
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
completeDelivery
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择订单'
)
}
try
{
await
ElMessageBox
.
confirm
(
'确定完成发货吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
)
}
catch
(
e
)
{
return
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
res
=
await
completeDeliveryApi
({
orderIdList
:
selection
.
value
.
map
((
item
)
=>
item
.
id
),
}
)
if
(
res
.
code
!==
200
)
return
resultInfo
.
value
=
(
res
.
data
as
{
id
:
string
|
number
status
:
boolean
factoryOrderNumber
?:
string
message
:
string
}
[])
||
[]
if
(
Array
.
isArray
(
res
.
data
)
&&
(
res
.
data
as
{
status
:
boolean
}
[]).
some
((
item
)
=>
!
item
.
status
)
)
{
resultRefs
.
value
?.
showDialog
()
}
else
{
search
()
loadTabData
()
}
ElMessage
.
success
(
'操作成功'
)
// search()
// loadTabData()
}
catch
(
e
)
{
resultInfo
.
value
=
[]
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
statusPush
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
try
{
await
ElMessageBox
.
confirm
(
'是否确认状态推送?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
)
}
catch
{
return
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
res
=
await
statusPushApi
(
selection
.
value
.
map
((
item
)
=>
item
.
id
))
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
catch
(
e
)
{
resultInfo
.
value
=
[]
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
updateOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
try
{
await
showConfirm
(
'确定转至待确认吗?'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
)
}
catch
{
return
}
const
ids
=
selection
.
value
.
map
((
item
)
=>
item
.
id
)
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
res
=
await
updateExceptionOrderApi
(
ids
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
assignOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
currentOrderIds
.
value
=
selection
.
value
.
map
((
item
)
=>
item
.
id
)
exceptionDialogVisible
.
value
=
true
}
const
handleUpdateAddress
=
async
(
row
:
PodCnOrderListData
)
=>
{
const
{
data
}
=
await
getAllCountryApi
()
countryList
.
value
=
data
currentRow
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
row
))
updateAddVisible
.
value
=
true
}
const
exceptionStatus
=
ref
(
1
)
const
handleExceptionCommand
=
(
command
:
number
)
=>
{
exceptionStatus
.
value
=
command
search
()
}
const
interceptCurrent
=
ref
(
1
)
const
interceptStatus
=
ref
(
0
)
// 拦截状态改变
const
interceptChange
=
async
(
status
:
boolean
)
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
try
{
await
ElMessageBox
.
confirm
(
`确定${status ? '拦截成功' : '拦截失败'
}
吗?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
,
)
}
catch
(
e
)
{
return
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
const
interceptStatus
=
status
?
interceptCurrent
.
value
===
1
?
1
:
3
:
interceptCurrent
.
value
===
1
?
2
:
4
try
{
const
res
=
await
interceptUpdateApi
({
orderIds
:
selection
.
value
.
map
((
item
)
=>
item
.
id
),
interceptStatus
,
}
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
catch
(
e
)
{
resultInfo
.
value
=
[]
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
rejectOrder
=
async
(
type
:
string
)
=>
{
if
(
selection
.
value
.
length
===
0
&&
cardSelection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
{
value
}
=
await
ElMessageBox
.
prompt
(
'驳回确认'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
inputType
:
'textarea'
,
inputPlaceholder
:
'驳回原因'
,
inputPattern
:
/
\S
+/
,
// 非空验证,至少一个非空白字符
inputErrorMessage
:
'内容不能为空'
,
}
)
const
res
=
await
rejectToApi
({
orderStatus
:
type
,
productList
:
selection
.
value
.
length
?
selection
.
value
.
flatMap
(
(
item
:
PodCnOrderListData
)
=>
item
.
productList
||
[],
)
:
cardSelection
.
value
,
reasonStr
:
value
,
}
)
if
(
res
.
code
!==
200
)
return
resultInfo
.
value
=
res
.
data
resultInfo
.
value
=
resultInfo
.
value
.
filter
((
item
)
=>
!
item
.
status
)
if
(
!
resultInfo
.
value
.
length
)
{
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
else
{
resultRefs
.
value
?.
showDialog
()
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
finally
{
loading
.
close
()
}
}
// 拦截分页
const
handleInterceptionCommand
=
(
current
:
number
,
command
:
number
)
=>
{
interceptCurrent
.
value
=
current
interceptStatus
.
value
=
command
search
()
loadTabData
()
}
// 批量下载 下载
const
handleDownload
=
async
(
row
:
PodCnOrderListData
,
type
:
string
)
=>
{
try
{
...
...
@@ -1982,7 +2569,11 @@ const handleDownload = async (row: PodCnOrderListData, type: string) => {
}
}
// 批量下载 删除
const
handleBatchDelete
=
async
(
row
:
PodCnOrderListData
)
=>
{
const
handleBatchDelete
=
async
(
type
:
string
,
id
?:
string
)
=>
{
if
(
type
===
'batch'
&&
selection
.
value
.
length
===
0
)
{
ElMessage
.
error
(
'请选择要删除的数据'
)
return
}
try
{
await
showConfirm
(
'确定删除吗?'
,
{
confirmButtonText
:
'确认'
,
...
...
@@ -1998,7 +2589,12 @@ const handleBatchDelete = async (row: PodCnOrderListData) => {
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
res
=
await
batchDownloadDeleteApi
({
id
:
row
.
id
}
)
const
res
=
await
batchDownloadDeleteApi
({
ids
:
type
===
'batch'
?
selection
.
value
.
map
((
item
)
=>
item
.
id
).
join
(
','
)
:
id
!
,
}
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
res
.
message
)
search
()
...
...
@@ -2008,6 +2604,54 @@ const handleBatchDelete = async (row: PodCnOrderListData) => {
loading
.
close
()
}
}
const
refreshProductInformation
=
async
()
=>
{
if
(
[
'PICKING'
,
'TO_BE_REPLENISHMENT'
,
'IN_PRODUCTION'
,
'TO_BE_ARRANGE'
,
].
includes
(
status
.
value
)
)
{
if
(
cardSelection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
}
else
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
}
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'刷新中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
res
=
await
refreshProductInformationApi
({
orderIds
:
!
[
'PICKING'
,
'TO_BE_REPLENISHMENT'
,
'IN_PRODUCTION'
].
includes
(
status
.
value
,
)
?
selection
.
value
.
map
((
item
)
=>
item
.
id
).
join
(
','
)
:
undefined
,
productIds
:
[
'PICKING'
,
'TO_BE_REPLENISHMENT'
,
'IN_PRODUCTION'
,
'TO_BE_ARRANGE'
,
].
includes
(
status
.
value
)
?
cardSelection
.
value
.
map
((
item
)
=>
item
.
id
).
join
(
','
)
:
undefined
,
}
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'刷新成功'
)
search
()
cardSelection
.
value
=
[]
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
// 批量下载 重新排版
const
handleReComposingDesign
=
async
(
row
:
PodCnOrderListData
)
=>
{
try
{
...
...
@@ -2227,10 +2871,39 @@ const onCellStyle = ({ column }: { column: Column }) => {
return
{
verticalAlign
:
'top'
}
}
}
const
interceptionStatus
=
ref
<
InterceptStateGroupData
>
({
shipment
:
{
}
,
production
:
{
}
,
}
)
const
loadTabData
=
async
()
=>
{
try
{
const
res
=
await
getOrderTabData
()
tabsNav
.
value
=
res
.
data
// 获取拦截数量
const
statusRes
=
await
getgetInterceptStateGroupList
()
interceptionStatus
.
value
=
statusRes
.
data
as
InterceptStateGroupData
// 在 已完成 后面添加 拦截 标签页
const
completeIndex
=
tabsNav
.
value
.
findIndex
(
(
item
:
Tab
)
=>
item
.
status
===
'COMPLETE'
,
)
// 计算拦截总数)
const
calculateTotal
=
(
data
:
Record
<
string
,
number
>
):
number
=>
{
return
Object
.
values
(
data
).
reduce
(
(
sum
,
value
)
=>
sum
+
(
Number
(
value
)
||
0
),
0
,
)
}
const
totalIntercepted
=
calculateTotal
(
statusRes
.
data
.
shipment
)
+
calculateTotal
(
statusRes
.
data
.
production
)
tabsNav
.
value
.
splice
(
completeIndex
+
1
,
0
,
{
status
:
'INTERCEPTED'
,
statusName
:
'拦截'
,
quantity
:
totalIntercepted
,
}
)
}
catch
(
error
)
{
// showError(error)
}
...
...
@@ -2629,6 +3302,9 @@ const inputBlur = () => {
}
search
()
}
const
handleExceptionDialogOpen
=
()
=>
{
exceptionFormRef
.
value
.
resetFields
()
}
const
cancelOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
...
...
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