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
ad05ba1e
Commit
ad05ba1e
authored
Jun 10, 2025
by
wuqian
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of 47.122.114.111:qinjianhui/factory_front into wqtwo
parents
dcca9a6e
d3ba6445
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
432 additions
and
77 deletions
+432
-77
auto-imports.d.ts
+1
-0
src/api/podUsOrder.ts
+33
-8
src/types/api/podUsOrder.ts
+1
-0
src/views/logistics/logisticsCompany.vue
+1
-1
src/views/logistics/shippingAddress.vue
+2
-0
src/views/order/podUs/PodMakeOrder.vue
+1
-1
src/views/order/podUs/components/ResultInfo.vue
+1
-1
src/views/order/podUs/index.vue
+392
-66
No files found.
auto-imports.d.ts
View file @
ad05ba1e
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
export
{}
export
{}
declare
global
{
declare
global
{
const
EffectScope
:
typeof
import
(
'vue'
)[
'EffectScope'
]
const
EffectScope
:
typeof
import
(
'vue'
)[
'EffectScope'
]
const
ElInput
:
typeof
import
(
'element-plus/es'
)[
'ElInput'
]
const
ElLoading
:
typeof
import
(
'element-plus/es'
)[
'ElLoading'
]
const
ElLoading
:
typeof
import
(
'element-plus/es'
)[
'ElLoading'
]
const
ElMessage
:
typeof
import
(
'element-plus/es'
)[
'ElMessage'
]
const
ElMessage
:
typeof
import
(
'element-plus/es'
)[
'ElMessage'
]
const
ElMessageBox
:
typeof
import
(
'element-plus/es'
)[
'ElMessageBox'
]
const
ElMessageBox
:
typeof
import
(
'element-plus/es'
)[
'ElMessageBox'
]
...
...
src/api/podUsOrder.ts
View file @
ad05ba1e
...
@@ -37,6 +37,12 @@ export function getOrderList(
...
@@ -37,6 +37,12 @@ export function getOrderList(
},
},
)
)
}
}
export
function
handleExceptionOrderApi
(
orderIds
:
number
[])
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
'factory/podJomallOrderUs/processExceptionOrders'
,
orderIds
,
)
}
export
function
getCardOrderList
(
export
function
getCardOrderList
(
params
:
SearchForm
,
params
:
SearchForm
,
currentPage
:
number
,
currentPage
:
number
,
...
@@ -80,14 +86,17 @@ export function updateExceptionOrderApi(data: number[]) {
...
@@ -80,14 +86,17 @@ export function updateExceptionOrderApi(data: number[]) {
},
},
)
)
}
}
export
function
changeExceptionOrderApi
(
ids
:
number
[],
value
:
string
)
{
export
function
changeExceptionOrderApi
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
url
:
string
,
'factory/podJomallOrderUs/exceptionOrders'
,
ids
:
number
[],
{
type
:
string
,
orderIds
:
ids
,
value
:
string
,
exceptionReason
:
value
,
)
{
},
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
url
,
{
)
orderIds
:
ids
,
exceptionType
:
type
,
exceptionReason
:
value
,
})
}
}
export
function
cancelOrderApi
(
ids
:
number
[],
value
:
string
)
{
export
function
cancelOrderApi
(
ids
:
number
[],
value
:
string
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
...
@@ -297,3 +306,19 @@ export function createLogisticsOrderApi(params: {
...
@@ -297,3 +306,19 @@ export function createLogisticsOrderApi(params: {
params
,
params
,
)
)
}
}
// 转至待拣胚
export
function
updateLogisticsToPickingApi
(
params
:
{
ids
:
string
})
{
return
axios
.
get
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderUs/updateLogisticsToPicking`
,
{
params
,
},
)
}
//创建物流订单
export
function
createLogisticsOrdersApi
(
orderIds
:
(
string
|
number
)[])
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderUs/createLogisticsOrders`
,
orderIds
,
)
}
src/types/api/podUsOrder.ts
View file @
ad05ba1e
...
@@ -16,6 +16,7 @@ export interface SearchForm {
...
@@ -16,6 +16,7 @@ export interface SearchForm {
customizedQuantity
:
string
customizedQuantity
:
string
startTime
:
string
|
null
startTime
:
string
|
null
endTime
:
string
|
null
endTime
:
string
|
null
exceptionHandling
:
number
|
undefined
}
}
export
interface
PodUsOrderListData
{
export
interface
PodUsOrderListData
{
id
:
number
id
:
number
...
...
src/views/logistics/logisticsCompany.vue
View file @
ad05ba1e
...
@@ -297,7 +297,7 @@ getLogisticsList()
...
@@ -297,7 +297,7 @@ getLogisticsList()
<el-form-item
class=
"el-col-12"
label=
"物流公司编码"
prop=
"code"
>
<el-form-item
class=
"el-col-12"
label=
"物流公司编码"
prop=
"code"
>
<el-select
v-model=
"form.code"
clearable
filterable
@
change=
"codeChange"
>
<el-select
v-model=
"form.code"
clearable
filterable
@
change=
"codeChange"
>
<el-option
<el-option
v-for=
"it in logisticsList"
:key=
"it.code"
:label=
"it.
basicsNam
e"
v-for=
"it in logisticsList"
:key=
"it.code"
:label=
"it.
cod
e"
:value=
"it.code"
>
:value=
"it.code"
>
{{ it.code }}
{{ it.code }}
<span
style=
"font-size: 14px; color: #999; line-height: 24px"
>
<span
style=
"font-size: 14px; color: #999; line-height: 24px"
>
...
...
src/views/logistics/shippingAddress.vue
View file @
ad05ba1e
...
@@ -250,6 +250,7 @@ const formConfig = computed<IFormConfig[]>(() => [
...
@@ -250,6 +250,7 @@ const formConfig = computed<IFormConfig[]>(() => [
options
:
countryList
.
value
,
options
:
countryList
.
value
,
label
:
'countryCode'
,
label
:
'countryCode'
,
value
:
'countryCode'
,
value
:
'countryCode'
,
filterable
:
true
,
placeholder
:
'请选择国家代码'
,
placeholder
:
'请选择国家代码'
,
onChange
:
(
val
:
ICountryObj
)
=>
{
onChange
:
(
val
:
ICountryObj
)
=>
{
editForm
.
value
.
countryName
=
val
.
nameCn
editForm
.
value
.
countryName
=
val
.
nameCn
...
@@ -265,6 +266,7 @@ const formConfig = computed<IFormConfig[]>(() => [
...
@@ -265,6 +266,7 @@ const formConfig = computed<IFormConfig[]>(() => [
options
:
countryList
.
value
,
options
:
countryList
.
value
,
label
:
'nameCn'
,
label
:
'nameCn'
,
value
:
'nameCn'
,
value
:
'nameCn'
,
filterable
:
true
,
placeholder
:
'请选择国家名称'
,
placeholder
:
'请选择国家名称'
,
onChange
:
(
val
:
ICountryObj
)
=>
{
onChange
:
(
val
:
ICountryObj
)
=>
{
editForm
.
value
.
countryCode
=
val
.
countryCode
editForm
.
value
.
countryCode
=
val
.
countryCode
...
...
src/views/order/podUs/PodMakeOrder.vue
View file @
ad05ba1e
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
@
opened=
"handleOpened"
@
opened=
"handleOpened"
@
close=
"onClose"
@
close=
"onClose"
>
>
<template
#
title
>
<template
#
header
>
<div
class=
"title"
>
<div
class=
"title"
>
<span>
POD打单
</span>
<span>
POD打单
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
...
...
src/views/order/podUs/components/ResultInfo.vue
View file @
ad05ba1e
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
<div
style=
"margin: 15px 0"
></div>
<div
style=
"margin: 15px 0"
></div>
<el-checkbox-group
v-model=
"selectedList"
@
change=
"checkChange"
>
<el-checkbox-group
v-model=
"selectedList"
@
change=
"checkChange"
>
<div
style=
"display: block"
v-for=
"(item, index) in list"
:key=
"index"
>
<div
style=
"display: block"
v-for=
"(item, index) in list"
:key=
"index"
>
<el-checkbox
:
label
=
"item.id"
>
<el-checkbox
:
value
=
"item.id"
>
{{
'店铺编号:'
+
item
.
shopNumber
+
' '
+
item
.
message
}}
{{
'店铺编号:'
+
item
.
shopNumber
+
' '
+
item
.
message
}}
</el-checkbox>
</el-checkbox>
</div>
</div>
...
...
src/views/order/podUs/index.vue
View file @
ad05ba1e
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
v-model=
"searchForm.userMark"
v-model=
"searchForm.userMark"
clearable
clearable
filterable
filterable
style=
"width: 1
8
0px"
style=
"width: 1
0
0px"
placeholder=
"客户"
placeholder=
"客户"
>
>
<el-option
<el-option
...
@@ -46,12 +46,23 @@
...
@@ -46,12 +46,23 @@
></el-option>
></el-option>
</el-select>
</el-select>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"定制类型"
>
<ElSelect
v-model=
"searchForm.customizedQuantity"
placeholder=
"定制类型"
clearable
style=
"width: 100px"
>
<ElOption
label=
"单面"
value=
"single"
/>
<ElOption
label=
"多面"
value=
"multiple"
/>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"SKU"
>
<ElFormItem
label=
"SKU"
>
<ElInput
<ElInput
v-model
.
trim=
"searchForm.sku"
v-model
.
trim=
"searchForm.sku"
placeholder=
" SKU"
placeholder=
" SKU"
clearable
clearable
style=
"width: 1
8
0px"
style=
"width: 1
5
0px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"Base SKU"
>
<ElFormItem
label=
"Base SKU"
>
...
@@ -59,7 +70,7 @@
...
@@ -59,7 +70,7 @@
v-model
.
trim=
"searchForm.baseSku"
v-model
.
trim=
"searchForm.baseSku"
placeholder=
" Base SKU"
placeholder=
" Base SKU"
clearable
clearable
style=
"width: 1
8
0px"
style=
"width: 1
5
0px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"物流跟踪号"
>
<ElFormItem
label=
"物流跟踪号"
>
...
@@ -67,7 +78,7 @@
...
@@ -67,7 +78,7 @@
v-model
.
trim=
"searchForm.logisticsTracking"
v-model
.
trim=
"searchForm.logisticsTracking"
placeholder=
"物流跟踪号"
placeholder=
"物流跟踪号"
clearable
clearable
style=
"width: 1
8
0px"
style=
"width: 1
5
0px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"生产单号"
>
<ElFormItem
label=
"生产单号"
>
...
@@ -75,7 +86,7 @@
...
@@ -75,7 +86,7 @@
v-model=
"searchForm.factorySubOrderNumber"
v-model=
"searchForm.factorySubOrderNumber"
placeholder=
"生产单号"
placeholder=
"生产单号"
clearable
clearable
style=
"width: 1
8
0px"
style=
"width: 1
5
0px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"订单号"
>
<ElFormItem
label=
"订单号"
>
...
@@ -83,7 +94,7 @@
...
@@ -83,7 +94,7 @@
v-model=
"searchForm.factoryOrderNumber"
v-model=
"searchForm.factoryOrderNumber"
placeholder=
"订单号"
placeholder=
"订单号"
clearable
clearable
style=
"width: 1
8
0px"
style=
"width: 1
5
0px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"店铺单号"
>
<ElFormItem
label=
"店铺单号"
>
...
@@ -91,20 +102,10 @@
...
@@ -91,20 +102,10 @@
v-model=
"searchForm.shopNumber"
v-model=
"searchForm.shopNumber"
placeholder=
"店铺单号"
placeholder=
"店铺单号"
clearable
clearable
style=
"width: 1
8
0px"
style=
"width: 1
5
0px"
/>
/>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"定制类型"
>
<ElSelect
v-model=
"searchForm.customizedQuantity"
placeholder=
"定制类型"
clearable
style=
"width: 180px"
>
<ElOption
label=
"单面"
value=
"single"
/>
<ElOption
label=
"多面"
value=
"multiple"
/>
</ElSelect>
</ElFormItem>
<ElFormItem>
<ElFormItem>
<ElButton
type=
"primary"
@
click=
"search"
>
查询
</ElButton>
<ElButton
type=
"primary"
@
click=
"search"
>
查询
</ElButton>
</ElFormItem>
</ElFormItem>
...
@@ -120,11 +121,74 @@
...
@@ -120,11 +121,74 @@
@
click=
"changeTab(item)"
@
click=
"changeTab(item)"
>
>
<span
class=
"tabs-node_label"
>
{{
item
.
statusName
}}
</span>
<span
class=
"tabs-node_label"
>
{{
item
.
statusName
}}
</span>
<span
class=
"tabs-node_count"
>
{{
`(${item.quantity
}
)`
}}
<
/span
>
<span
class=
"tabs-node_count"
:class=
"
{
blue: item.quantity
&&
item.quantity > 0,
red: item.status === 'EXCEPTION_ORDER',
}"
>
{{
item
.
quantity
}}
</span
>
</div>
</div>
<!--
<div
v-if=
"item.status === 'EXCEPTION_ORDER'"
:key=
"item.status"
class=
"tabs-node"
>
<el-dropdown
@
command=
"handleExceptionCommand"
>
<div>
<span
class=
"tabs-node_label"
style=
"color: #000; font-weight: 500"
>
异常单
</span>
<span
class=
"tabs-node_count"
:class=
"
{
blue: item.quantity
&&
item.quantity > 0,
red: item.status === 'EXCEPTION_ORDER',
}"
>
{{
item
.
quantity
}}
</span
>
<el-icon
class=
"el-icon--right"
><arrow-down
/></el-icon>
</div>
<template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
command=
"1"
>
待分派
</el-dropdown-item>
<el-dropdown-item
command=
"2"
>
待处理
</el-dropdown-item>
<el-dropdown-item
command=
"3"
>
已处理
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</div>
-->
</div>
</div>
</div>
</div>
<div
class=
"order-content flex-1 flex-column overflow-hidden mt-10"
>
<div
class=
"order-content flex-1 flex-column overflow-hidden mt-10"
>
<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
class=
"operation-box mb-10"
>
<div
class=
"operation-box mb-10"
>
<span
v-if=
"status === 'TO_BE_CONFIRMED'"
class=
"item"
>
<span
v-if=
"status === 'TO_BE_CONFIRMED'"
class=
"item"
>
<ElButton
type=
"success"
@
click=
"confirmOrder"
>
确认
</ElButton>
<ElButton
type=
"success"
@
click=
"confirmOrder"
>
确认
</ElButton>
...
@@ -132,6 +196,20 @@
...
@@ -132,6 +196,20 @@
<span
v-if=
"status === 'EXCEPTION_ORDER'"
class=
"item"
>
<span
v-if=
"status === 'EXCEPTION_ORDER'"
class=
"item"
>
<ElButton
type=
"success"
@
click=
"updateOrder"
>
转至待确认
</ElButton>
<ElButton
type=
"success"
@
click=
"updateOrder"
>
转至待确认
</ElButton>
</span>
</span>
<span
v-if=
"status === 'EXCEPTION_ORDER' && exceptionStatus === 1"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"assignOrder"
>
分派
</ElButton>
</span>
<span
v-if=
"status === 'EXCEPTION_ORDER' && exceptionStatus === 2"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"handleExceptionOrder"
>
处理异常
</ElButton>
</span>
<span
v-if=
"status === 'PICKING'"
class=
"item"
>
<span
v-if=
"status === 'PICKING'"
class=
"item"
>
<ElButton
type=
"primary"
@
click=
"printProductionOrder"
>
<ElButton
type=
"primary"
@
click=
"printProductionOrder"
>
打印生产单
打印生产单
...
@@ -171,7 +249,15 @@
...
@@ -171,7 +249,15 @@
<span
v-if=
"status === 'WAIT_SHIPMENT'"
class=
"item"
>
<span
v-if=
"status === 'WAIT_SHIPMENT'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"printPodOrder"
>
POD打单
</ElButton>
<ElButton
type=
"warning"
@
click=
"printPodOrder"
>
POD打单
</ElButton>
</span>
</span>
<
span
v
-
if
=
"status === 'WAIT_SHIPMENT'"
class
=
"item"
>
<span
v-if=
"status === 'CREATE_LOGISTICS'"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"logisticsToPicking"
>
转至待拣胚
</ElButton>
</span>
<span
v-if=
"status === 'WAIT_SHIPMENT' || status === 'CREATE_LOGISTICS'"
class=
"item"
>
<ElDropdown>
<ElDropdown>
<el-button
type=
"success"
>
<el-button
type=
"success"
>
物流接口
<el-icon
class=
"el-icon--right"
><ArrowDown
/></el-icon>
物流接口
<el-icon
class=
"el-icon--right"
><ArrowDown
/></el-icon>
...
@@ -179,7 +265,7 @@
...
@@ -179,7 +265,7 @@
<
template
#
dropdown
>
<
template
#
dropdown
>
<ElDropdownMenu>
<ElDropdownMenu>
<ElDropdownItem
@
click=
"getOrderByIdApi('createLogisticsOrder')"
<ElDropdownItem
@
click=
"getOrderByIdApi('createLogisticsOrder')"
>
创建物流
<
/ElDropdownIte
m
>
创建物流
订单
</ElDropdownItem
>
>
<ElDropdownItem
@
click=
"getOrderByIdApi('getTrackingNumber')"
<ElDropdownItem
@
click=
"getOrderByIdApi('getTrackingNumber')"
>
获取跟踪号
</ElDropdownItem
>
获取跟踪号
</ElDropdownItem
...
@@ -201,7 +287,9 @@
...
@@ -201,7 +287,9 @@
<ElButton
type=
"warning"
@
click=
"stockOutCheck"
>
补货校验
</ElButton>
<ElButton
type=
"warning"
@
click=
"stockOutCheck"
>
补货校验
</ElButton>
</span>
</span>
<span
v-if=
"status === 'STOCK_OUT'"
class=
"item"
>
<span
v-if=
"status === 'STOCK_OUT'"
class=
"item"
>
<
ElButton
type
=
"success"
@
click
=
"toBePicking"
>
转至待拣胚
<
/ElButton
>
<ElButton
type=
"success"
@
click=
"toBePicking"
>
转至待创建物流
</ElButton>
</span>
</span>
<span
class=
"item"
>
<span
class=
"item"
>
...
@@ -445,6 +533,27 @@
...
@@ -445,6 +533,27 @@
</el-icon>
</el-icon>
</div>
</div>
<div
class=
"order-detail-item"
>
<div
class=
"order-detail-item"
>
<span
class=
"order-detail-item-label"
>
物流跟踪号:
</span>
<!--
<span
class=
"order-detail-item-value"
:title=
"row.trackingNumber"
>
{{
row
.
trackingNumber
}}
</span>
-->
<el-button
type=
"primary"
:title=
"row.trackingNumber"
link
:disabled=
"!row.expressSheet"
@
click=
"downloadFacebook(row.expressSheet)"
>
{{
row
.
trackingNumber
}}
</el-button
>
<el-icon
class=
"icon"
@
click=
"copy(row.trackingNumber || '')"
>
<DocumentCopy
/>
</el-icon>
</div>
<div
class=
"order-detail-item"
>
<span
class=
"order-detail-item-label"
>
总克重:
</span>
<span
class=
"order-detail-item-label"
>
总克重:
</span>
<span
v-if=
"row.weight"
class=
"order-detail-item-value"
>
<span
v-if=
"row.weight"
class=
"order-detail-item-value"
>
{{
row
.
weight
}}
g
{{
row
.
weight
}}
g
...
@@ -882,7 +991,7 @@
...
@@ -882,7 +991,7 @@
<
ElOption
<
ElOption
v
-
for
=
"(item, index) in productionClient"
v
-
for
=
"(item, index) in productionClient"
:
key
=
"index"
:
key
=
"index"
:
value
=
"item.code"
:
value
=
"item.code
|| ''
"
:
label
=
"`${item.remark
}
(${item.code
}
)`"
:
label
=
"`${item.remark
}
(${item.code
}
)`"
><
/ElOption
>
><
/ElOption
>
<
/ElSelect
>
<
/ElSelect
>
...
@@ -964,6 +1073,53 @@
...
@@ -964,6 +1073,53 @@
<
/el-button
>
<
/el-button
>
<
/template
>
<
/template
>
<
/el-dialog
>
<
/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
=
"{ 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"
>
<
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
>
<
/template
>
<
script
setup
lang
=
"ts"
>
<
script
setup
lang
=
"ts"
>
import
{
getUserMarkList
}
from
'@/api/common'
import
{
getUserMarkList
}
from
'@/api/common'
...
@@ -996,6 +1152,9 @@ import {
...
@@ -996,6 +1152,9 @@ import {
cancelLogisticsOrderApi
,
cancelLogisticsOrderApi
,
changeLogisticsApi
,
changeLogisticsApi
,
createLogisticsOrderApi
,
createLogisticsOrderApi
,
updateLogisticsToPickingApi
,
createLogisticsOrdersApi
,
handleExceptionOrderApi
,
}
from
'@/api/podUsOrder'
}
from
'@/api/podUsOrder'
import
{
BaseRespData
}
from
'@/types/api'
import
{
BaseRespData
}
from
'@/types/api'
...
@@ -1062,7 +1221,9 @@ const [searchForm] = useValue<SearchForm>({
...
@@ -1062,7 +1221,9 @@ const [searchForm] = useValue<SearchForm>({
customizedQuantity
:
''
,
customizedQuantity
:
''
,
startTime
:
null
,
startTime
:
null
,
endTime
:
null
,
endTime
:
null
,
exceptionHandling
:
undefined
,
}
)
}
)
const
exceptionStatus
=
ref
(
1
)
const
userMarkList
=
ref
<
string
[]
>
([])
const
userMarkList
=
ref
<
string
[]
>
([])
const
selection
=
ref
<
PodUsOrderListData
[]
>
([])
const
selection
=
ref
<
PodUsOrderListData
[]
>
([])
const
pickerOptions
=
{
const
pickerOptions
=
{
...
@@ -1252,6 +1413,10 @@ const {
...
@@ -1252,6 +1413,10 @@ const {
?
timeRange
.
value
[
1
]
?
timeRange
.
value
[
1
]
:
null
,
:
null
,
status
:
status
.
value
,
status
:
status
.
value
,
exceptionHandling
:
status
.
value
===
'EXCEPTION_ORDER'
?
exceptionStatus
.
value
||
undefined
:
undefined
,
}
,
}
,
page
,
page
,
pageSize
,
pageSize
,
...
@@ -1290,6 +1455,9 @@ const handleProductionClientChange = async (v: string) => {
...
@@ -1290,6 +1455,9 @@ const handleProductionClientChange = async (v: string) => {
}
}
}
}
}
}
const
downloadFacebook
=
async
(
row
:
string
)
=>
{
window
.
open
(
filePath
+
row
,
'_blank'
)
}
const
confirm
=
async
(
row
:
ProductList
)
=>
{
const
confirm
=
async
(
row
:
ProductList
)
=>
{
confirmDialogShow
.
value
=
true
confirmDialogShow
.
value
=
true
productionClientValue
.
value
=
''
productionClientValue
.
value
=
''
...
@@ -1425,6 +1593,44 @@ const updateOrder = async () => {
...
@@ -1425,6 +1593,44 @@ const updateOrder = async () => {
loading
.
close
()
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
handleExceptionOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
try
{
await
showConfirm
(
'确定处理异常吗?'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
)
}
catch
{
return
}
const
orderIds
=
selection
.
value
.
map
((
item
)
=>
item
.
id
)
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
try
{
const
res
=
await
handleExceptionOrderApi
(
orderIds
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
printProductionOrder
=
async
()
=>
{
const
printProductionOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
return
ElMessage
.
warning
(
'请选择数据'
)
...
@@ -1498,35 +1704,61 @@ const pickingComplete = async () => {
...
@@ -1498,35 +1704,61 @@ const pickingComplete = async () => {
loading
.
close
()
loading
.
close
()
}
}
}
}
const
exceptionTypes
=
[
{
value
:
'1'
,
label
:
'客户'
}
,
{
value
:
'2'
,
label
:
'工厂'
}
,
]
const
exceptionDialogVisible
=
ref
(
false
)
const
currentOrderIds
=
ref
<
number
[]
>
([])
const
exceptionForm
=
ref
({
exceptionType
:
''
,
exceptionReason
:
''
,
}
)
const
exceptionFormRef
=
ref
()
const
changeExceptionOrder
=
async
()
=>
{
const
changeExceptionOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
return
ElMessage
.
warning
(
'请选择数据'
)
}
}
const
orderIds
=
selection
.
value
.
map
((
item
)
=>
item
.
id
)
currentOrderIds
.
value
=
selection
.
value
.
map
((
item
)
=>
item
.
id
)
ElMessageBox
.
prompt
(
'请填写异常原因'
,
'提示'
,
{
exceptionDialogVisible
.
value
=
true
confirmButtonText
:
'确认'
,
}
cancelButtonText
:
'取消'
,
inputPattern
:
/^.{1,2000
}
$/
,
const
handleExceptionConfirm
=
async
()
=>
{
inputErrorMessage
:
'请输入异常原因'
,
try
{
}
).
then
(
async
({
value
}
)
=>
{
await
exceptionFormRef
.
value
.
validate
()
const
loading
=
ElLoading
.
service
({
}
catch
{
fullscreen
:
true
,
return
text
:
'操作中...'
,
}
background
:
'rgba(0, 0, 0, 0.3)'
,
}
)
const
loading
=
ElLoading
.
service
({
try
{
fullscreen
:
true
,
const
res
=
await
changeExceptionOrderApi
(
orderIds
,
value
)
text
:
'操作中...'
,
if
(
res
.
code
!==
200
)
return
background
:
'rgba(0, 0, 0, 0.3)'
,
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
)
}
)
const
url
=
status
.
value
===
'EXCEPTION_ORDER'
?
'factory/podJomallOrderUs/distributionExceptionOrders'
:
'factory/podJomallOrderUs/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
handleExceptionDialogOpen
=
()
=>
{
exceptionFormRef
.
value
.
resetFields
()
}
}
const
cancelOrder
=
async
()
=>
{
const
cancelOrder
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
if
(
selection
.
value
.
length
===
0
)
{
...
@@ -1683,6 +1915,10 @@ const getOrderByIdApi = async (type: string) => {
...
@@ -1683,6 +1915,10 @@ const getOrderByIdApi = async (type: string) => {
Fn
:
(
orderIds
:
(
string
|
number
)[])
=>
Promise
<
BaseRespData
<
never
>>
Fn
:
(
orderIds
:
(
string
|
number
)[])
=>
Promise
<
BaseRespData
<
never
>>
}
}
}
=
{
}
=
{
createLogisticsOrder
:
{
message
:
'创建物流订单'
,
Fn
:
createLogisticsOrdersApi
,
}
,
getTrackingNumber
:
{
message
:
'获取跟踪号'
,
Fn
:
getTrackingNumberApi
}
,
getTrackingNumber
:
{
message
:
'获取跟踪号'
,
Fn
:
getTrackingNumberApi
}
,
getPrintOrder
:
{
message
:
'获取打印面单'
,
Fn
:
getfaceSimplexFileApi
}
,
getPrintOrder
:
{
message
:
'获取打印面单'
,
Fn
:
getfaceSimplexFileApi
}
,
cancelLogisticsOrder
:
{
cancelLogisticsOrder
:
{
...
@@ -1691,14 +1927,12 @@ const getOrderByIdApi = async (type: string) => {
...
@@ -1691,14 +1927,12 @@ const getOrderByIdApi = async (type: string) => {
}
,
}
,
}
}
if
([
'batchChangeLogistics'
,
'createLogisticsOrder'
].
includes
(
type
))
{
if
([
'batchChangeLogistics'
].
includes
(
type
))
{
if
(
selection
.
value
.
length
!==
1
)
{
if
(
selection
.
value
.
length
!==
1
)
{
return
ElMessage
.
warning
(
'请选择单条数据'
)
return
ElMessage
.
warning
(
'请选择单条数据'
)
}
}
wayDialogTitle
.
value
=
wayDialogTitle
.
value
=
`切换物流(当前物流方式:${selection.value[0]?.logisticsWayName
}
)`
type
===
'batchChangeLogistics'
?
`切换物流(当前物流方式:${selection.value[0]?.logisticsWayName
}
)`
:
'创建物流'
isChangeWay
.
value
=
true
isChangeWay
.
value
=
true
const
{
data
}
=
await
getLogisticsCalculation
(
selection
.
value
[
0
]?.
id
)
const
{
data
}
=
await
getLogisticsCalculation
(
selection
.
value
[
0
]?.
id
)
...
@@ -1757,20 +1991,22 @@ const isChangeWayLoading = ref(false)
...
@@ -1757,20 +1991,22 @@ const isChangeWayLoading = ref(false)
const
changeWayRef
=
ref
()
const
changeWayRef
=
ref
()
const
wayDialogTitle
=
ref
(
''
)
const
wayDialogTitle
=
ref
(
''
)
const
rowClick
=
(
row
:
LogisticsData
,
title
:
string
)
=>
{
const
rowClick
=
(
row
:
LogisticsData
,
title
?:
string
)
=>
{
console
.
log
(
title
,
'title'
)
try
{
try
{
if
(
title
==
'创建物流'
)
{
// if (title == '创建物流订单')
{
changeWayRow
.
value
=
row
// changeWayRow.value = row
}
else
{
//
}
else
{
if
(
row
.
logisticsWayId
===
selection
.
value
[
0
]?.
logisticsWayId
)
{
if
(
row
.
logisticsWayId
===
selection
.
value
[
0
]?.
logisticsWayId
)
{
changeWayRow
.
value
=
{
}
as
LogisticsData
ElMessage
.
warning
(
'不能选择相同的物流方式'
)
// nextTick(() =>
{
changeWayRow
.
value
=
{
}
as
LogisticsData
changeWayRef
.
value
?.
setCurrentRow
()
//
}
)
changeWayRef
.
value
?.
setCurrentRow
()
return
}
return
changeWayRow
.
value
=
row
}
}
changeWayRow
.
value
=
row
//
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
error
)
console
.
log
(
error
)
}
}
...
@@ -1790,7 +2026,7 @@ const changeWaySubmit = async (title: string) => {
...
@@ -1790,7 +2026,7 @@ const changeWaySubmit = async (title: string) => {
return
ElMessage
.
warning
(
'请选择状态为成功的物流方式'
)
return
ElMessage
.
warning
(
'请选择状态为成功的物流方式'
)
}
}
let
Fn
let
Fn
if
(
title
!==
'创建物流'
)
{
if
(
title
!==
'创建物流
订单
'
)
{
if
(
if
(
changeWayRow
.
value
.
logisticsWayId
===
selection
.
value
[
0
]?.
logisticsWayId
changeWayRow
.
value
.
logisticsWayId
===
selection
.
value
[
0
]?.
logisticsWayId
)
{
)
{
...
@@ -1882,12 +2118,13 @@ const stockOutCheck = async () => {
...
@@ -1882,12 +2118,13 @@ const stockOutCheck = async () => {
loading
.
close
()
loading
.
close
()
}
}
}
}
//转至待创建物流
const
toBePicking
=
async
()
=>
{
const
toBePicking
=
async
()
=>
{
if
(
selection
.
value
.
length
===
0
)
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
return
ElMessage
.
warning
(
'请选择数据'
)
}
}
try
{
try
{
await
ElMessageBox
.
confirm
(
'确定转至待
拣胚
吗?'
,
'提示'
,
{
await
ElMessageBox
.
confirm
(
'确定转至待
创建物流
吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
type
:
'warning'
,
...
@@ -1912,6 +2149,39 @@ const toBePicking = async () => {
...
@@ -1912,6 +2149,39 @@ const toBePicking = async () => {
loading
.
close
()
loading
.
close
()
}
}
}
}
//转至待拣胚
const
logisticsToPicking
=
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
updateLogisticsToPickingApi
({
ids
:
selection
.
value
.
map
((
item
)
=>
item
.
id
).
join
(
','
),
}
)
if
(
res
.
code
!==
200
)
return
ElMessage
.
success
(
'操作成功'
)
search
()
loadTabData
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
sheetPrinter
=
ref
(
''
)
const
sheetPrinter
=
ref
(
''
)
const
handlePrinterChange
=
(
value
:
string
)
=>
{
const
handlePrinterChange
=
(
value
:
string
)
=>
{
sheetPrinter
.
value
=
value
sheetPrinter
.
value
=
value
...
@@ -2153,6 +2423,11 @@ onMounted(() => {
...
@@ -2153,6 +2423,11 @@ onMounted(() => {
loadProductionClient
()
loadProductionClient
()
loadWarehouseList
()
loadWarehouseList
()
}
)
}
)
const
handleExceptionCommand
=
(
command
:
number
)
=>
{
exceptionStatus
.
value
=
command
search
()
}
<
/script
>
<
/script
>
<
style
lang
=
"scss"
scoped
>
<
style
lang
=
"scss"
scoped
>
.
header
-
filter
-
form
{
.
header
-
filter
-
form
{
...
@@ -2175,6 +2450,7 @@ onMounted(() => {
...
@@ -2175,6 +2450,7 @@ onMounted(() => {
color
:
#
000
;
color
:
#
000
;
cursor
:
pointer
;
cursor
:
pointer
;
height
:
40
px
;
height
:
40
px
;
font
-
weight
:
500
;
}
}
.
tabs
-
node
:
hover
{
.
tabs
-
node
:
hover
{
...
@@ -2243,6 +2519,29 @@ onMounted(() => {
...
@@ -2243,6 +2519,29 @@ onMounted(() => {
height
:
100
%
;
height
:
100
%
;
overflow
-
y
:
auto
;
overflow
-
y
:
auto
;
}
}
.
tabs
-
node_count
{
display
:
inline
-
block
;
min
-
width
:
20
px
;
height
:
20
px
;
line
-
height
:
20
px
;
border
-
radius
:
50
%
;
font
-
size
:
14
px
;
text
-
align
:
center
;
margin
-
left
:
4
px
;
background
:
#
f2f3f5
;
// 默认灰色
color
:
#
666
;
font
-
weight
:
500
;
}
.
tabs
-
node_count
.
blue
{
background
:
rgb
(
219
,
234
,
254
);
color
:
rgb
(
30
,
64
,
175
);
}
.
tabs
-
node_count
.
red
{
background
:
rgb
(
254
226
226
);
color
:
rgb
(
153
27
27
);
}
.
empty
{
.
empty
{
height
:
100
%
;
height
:
100
%
;
...
@@ -2311,4 +2610,31 @@ onMounted(() => {
...
@@ -2311,4 +2610,31 @@ onMounted(() => {
}
}
}
}
}
}
.
sub
-
status
{
display
:
flex
;
align
-
items
:
center
;
border
-
bottom
:
1
px
solid
#
e5e6eb
;
background
:
#
fff
;
.
sub
-
status
-
item
{
position
:
relative
;
font
-
size
:
16
px
;
cursor
:
pointer
;
padding
:
6
px
24
px
6
px
24
px
;
border
:
1
px
solid
#
e5e6eb
;
background
:
#
f7f8fa
;
color
:
#
606266
;
margin
-
bottom
:
-
1
px
;
transition
:
background
0.2
s
,
color
0.2
s
;
&
:
not
(:
last
-
child
)
{
border
-
right
:
none
;
}
&
.
sub
-
active
{
background
:
#
fff
;
color
:
#
1
d2129
;
font
-
weight
:
600
;
border
-
bottom
:
1
px
solid
transparent
;
z
-
index
:
2
;
}
}
}
<
/style
>
<
/style
>
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