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
d840ce93
Commit
d840ce93
authored
Jan 20, 2026
by
wusiyi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev_pod_us_process' into release
parents
49f9fd79
d75893ba
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
342 additions
and
37 deletions
+342
-37
src/api/logistics.ts
+18
-0
src/api/podCnOrder.ts
+12
-3
src/api/podUsOrder.ts
+4
-3
src/views/order/index.vue
+1
-1
src/views/order/pod/index.vue
+1
-1
src/views/order/podCN/PodDistributionOrder.vue
+4
-8
src/views/order/podCN/PodMakeOrder.vue
+31
-1
src/views/order/podCN/SuperPodMakeOrder.vue
+29
-1
src/views/order/podCN/components/CreateLogisticDialog.vue
+187
-0
src/views/order/podCN/index.vue
+0
-0
src/views/order/podUs/PodMakeOrder.vue
+55
-19
src/views/order/podUs/index.vue
+0
-0
No files found.
src/api/logistics.ts
View file @
d840ce93
...
@@ -70,6 +70,15 @@ export interface ILogisticsCompany {
...
@@ -70,6 +70,15 @@ export interface ILogisticsCompany {
basicType
:
number
// int(11)
basicType
:
number
// int(11)
}
}
export
interface
LogisticsWayData
{
id
:
number
name
:
string
code
:
string
status
:
boolean
createTime
:
string
updateTime
:
string
}
interface
ILogisticsParams
{
interface
ILogisticsParams
{
logType
:
string
logType
:
string
relaId
:
number
|
string
relaId
:
number
|
string
...
@@ -148,6 +157,15 @@ export function getUniuniList() {
...
@@ -148,6 +157,15 @@ export function getUniuniList() {
},
},
)
)
}
}
// 根据物流公司筛选物流方式
export
function
getLogisticsWayListByCompanyId
(
companyId
:
number
)
{
return
axios
.
get
<
never
,
BaseRespData
<
LogisticsWayData
[]
>>
(
'logisticsWay/getUsableWaysByCompanyId'
,
{
params
:
{
companyId
},
},
)
}
// 获取tictok物流承运商
// 获取tictok物流承运商
export
function
getTiktokCarrier
()
{
export
function
getTiktokCarrier
()
{
return
axios
.
get
<
never
,
BaseRespData
<
{
name
:
string
;
id
:
string
,
typeCode
:
string
,
label
:
string
}[]
>>
(
return
axios
.
get
<
never
,
BaseRespData
<
{
name
:
string
;
id
:
string
,
typeCode
:
string
,
label
:
string
}[]
>>
(
...
...
src/api/podCnOrder.ts
View file @
d840ce93
...
@@ -483,12 +483,13 @@ export function refreshProductInformationApi(data: {
...
@@ -483,12 +483,13 @@ export function refreshProductInformationApi(data: {
}
}
// 设计图排版
// 设计图排版
export
function
composingDesignImages
(
export
function
composingDesignImages
(
url
:
string
,
data
:
number
[],
data
:
number
[],
type
?:
string
,
type
?:
string
,
templateWidth
?:
number
,
templateWidth
?:
number
,
)
{
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`
factory/podJomallOrderCn/composingDesignImages
?type=
${
type
}
&templateWidth=
${
templateWidth
}
`
,
`
${
url
}
?type=
${
type
}
&templateWidth=
${
templateWidth
}
`
,
data
,
data
,
)
)
}
}
...
@@ -638,10 +639,10 @@ export function updateToWaitShipmentApi(params: {
...
@@ -638,10 +639,10 @@ export function updateToWaitShipmentApi(params: {
}
}
//创建物流订单
//创建物流订单
export
function
createLogisticsOrdersApi
(
orderId
s
:
(
string
|
number
)[]
)
{
export
function
createLogisticsOrdersApi
(
orderId
List
:
(
string
|
number
)[],
logisticsWayId
:
number
|
null
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderCn/createLogisticsOrders`
,
`factory/podJomallOrderCn/createLogisticsOrders`
,
orderIds
,
{
orderIdList
,
logisticsWayId
}
,
)
)
}
}
...
@@ -790,3 +791,11 @@ export function updateProductOutOfStockApi(params: {
...
@@ -790,3 +791,11 @@ export function updateProductOutOfStockApi(params: {
params
,
params
,
)
)
}
}
// 打印普胚生产单
export
function
printNormalProducePdf
(
orderIds
:
number
[])
{
return
axios
.
post
<
never
,
BaseRespData
<
string
>>
(
'factory/podJomallOrderProductCn/printNormalProducePdf'
,
orderIds
,
)
}
src/api/podUsOrder.ts
View file @
d840ce93
...
@@ -263,14 +263,14 @@ export function getPodBoxListApi(
...
@@ -263,14 +263,14 @@ export function getPodBoxListApi(
}
}
export
function
submitInspectionApi
(
export
function
submitInspectionApi
(
data
:
{
id
:
number
;
version
?:
number
}[]
,
orderId
:
number
|
undefined
,
boxIndex
:
number
|
null
,
boxIndex
:
number
|
null
,
warehouseId
:
number
|
string
,
warehouseId
:
number
|
string
,
)
{
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`factory/podJomallOrderUs/podPrintOrderComplete?box=
${
boxIndex
}
&warehouseId=
${
warehouseId
}
`
,
`factory/podJomallOrderUs/podPrintOrderComplete?box=
${
boxIndex
}
&warehouseId=
${
warehouseId
}
`
,
{
{
order
ParamList
:
data
,
order
Id
,
},
},
)
)
}
}
...
@@ -397,12 +397,13 @@ export function updateSelfLogistics(params: {
...
@@ -397,12 +397,13 @@ export function updateSelfLogistics(params: {
// 更改物流
// 更改物流
export
function
composingDesignImages
(
export
function
composingDesignImages
(
url
:
string
,
data
:
number
[],
data
:
number
[],
type
?:
string
,
type
?:
string
,
templateWidth
?:
number
,
templateWidth
?:
number
,
)
{
)
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
`
factory/podJomallOrderUs/composingDesignImages
?type=
${
type
}
&templateWidth=
${
templateWidth
}
`
,
`
${
url
}
?type=
${
type
}
&templateWidth=
${
templateWidth
}
`
,
data
,
data
,
)
)
}
}
...
...
src/views/order/index.vue
View file @
d840ce93
...
@@ -142,7 +142,7 @@
...
@@ -142,7 +142,7 @@
style=
"width: 125px"
style=
"width: 125px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"排序"
>
<ElFormItem
label=
"排序
方式
"
>
<el-select
<el-select
v-model=
"searchForm.order"
v-model=
"searchForm.order"
clearable
clearable
...
...
src/views/order/pod/index.vue
View file @
d840ce93
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
style=
"width: 150px"
style=
"width: 150px"
></ElInput>
></ElInput>
</ElFormItem>
</ElFormItem>
<ElFormItem
label=
"排序"
>
<ElFormItem
label=
"排序
方式
"
>
<el-select
<el-select
v-model=
"searchForm.order"
v-model=
"searchForm.order"
clearable
clearable
...
...
src/views/order/podCN/PodDistributionOrder.vue
View file @
d840ce93
...
@@ -269,7 +269,7 @@
...
@@ -269,7 +269,7 @@
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
computed
,
nextTick
,
ref
,
watch
,
defineProps
,
defineEmits
}
from
'vue'
import
{
computed
,
nextTick
,
ref
,
watch
}
from
'vue'
import
useLodop
from
'@/utils/hooks/useLodop'
import
useLodop
from
'@/utils/hooks/useLodop'
import
TableView
from
'@/components/TableView.vue'
import
TableView
from
'@/components/TableView.vue'
import
{
OrderData
,
ProductList
,
IorderItem
}
from
'@/types/api/podMakeOrder'
import
{
OrderData
,
ProductList
,
IorderItem
}
from
'@/types/api/podMakeOrder'
...
@@ -499,14 +499,12 @@ async function barcodeInput() {
...
@@ -499,14 +499,12 @@ async function barcodeInput() {
console
.
log
(
'pending'
,
pending
)
console
.
log
(
'pending'
,
pending
)
await
submitInspection
(
pending
,
async
()
=>
{
await
submitInspection
(
pending
,
async
()
=>
{
await
inputActive
()
await
getPackingData
(
code
)
noObj
.
value
=
{}
noObj
.
value
=
{}
})
})
}
else
{
}
await
inputActive
()
await
inputActive
()
await
getPackingData
(
code
)
await
getPackingData
(
code
)
}
isLock
.
value
=
false
isLock
.
value
=
false
}
}
async
function
submitInspection
(
objs
?:
OrderData
,
callback
?:
()
=>
void
)
{
async
function
submitInspection
(
objs
?:
OrderData
,
callback
?:
()
=>
void
)
{
...
@@ -525,12 +523,10 @@ async function submitInspection(objs?: OrderData, callback?: () => void) {
...
@@ -525,12 +523,10 @@ async function submitInspection(objs?: OrderData, callback?: () => void) {
ElMessage
.
success
(
res
.
message
)
ElMessage
.
success
(
res
.
message
)
coverImage
.
value
=
''
coverImage
.
value
=
''
testingData
.
value
=
{}
testingData
.
value
=
{}
await
inputActive
()
isLock
.
value
=
false
isLock
.
value
=
false
callback
?.()
callback
?.()
}
catch
(
e
)
{
}
catch
(
e
)
{
console
.
error
(
e
)
console
.
error
(
e
)
await
inputActive
()
isLock
.
value
=
false
isLock
.
value
=
false
}
}
}
}
...
@@ -591,7 +587,7 @@ async function getPackingData(code: string) {
...
@@ -591,7 +587,7 @@ async function getPackingData(code: string) {
async
function
printFile
(
data
:
OrderData
)
{
async
function
printFile
(
data
:
OrderData
)
{
// await props.printOrderOne(data)
// await props.printOrderOne(data)
await
printOrderOne
(
data
)
await
printOrderOne
(
data
)
noObj
.
value
[
data
.
id
!
]
=
data
noObj
.
value
[
data
.
id
as
number
]
=
data
await
inputActive
()
await
inputActive
()
}
}
function
printOrderOne
(
item
:
OrderData
):
Promise
<
void
>
{
function
printOrderOne
(
item
:
OrderData
):
Promise
<
void
>
{
...
...
src/views/order/podCN/PodMakeOrder.vue
View file @
d840ce93
...
@@ -16,6 +16,15 @@
...
@@ -16,6 +16,15 @@
<span>
播种墙配货
</span>
<span>
播种墙配货
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-else
class=
"offline"
>
[离线]
</span>
<span
v-else
class=
"offline"
>
[离线]
</span>
<ElButton
v-if=
"socketConnect === 'offline'"
type=
"success"
size=
"small"
:icon=
"Refresh"
@
click=
"reconnectWebSocket"
>
刷新
</ElButton>
</div>
</div>
</
template
>
</
template
>
<div
class=
"pod-make-order-content"
>
<div
class=
"pod-make-order-content"
>
...
@@ -268,7 +277,7 @@ import {
...
@@ -268,7 +277,7 @@ import {
printNormalPdf
,
printNormalPdf
,
}
from
'@/api/podCnOrder'
}
from
'@/api/podCnOrder'
import
useUserStore
from
'@/store/user'
import
useUserStore
from
'@/store/user'
import
{
Check
}
from
'@element-plus/icons-vue'
import
{
Check
,
Refresh
}
from
'@element-plus/icons-vue'
import
socket
from
'@/utils/cnWebsocket'
import
socket
from
'@/utils/cnWebsocket'
import
{
WarehouseListData
}
from
'@/types/api/podUsOrder'
import
{
WarehouseListData
}
from
'@/types/api/podUsOrder'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
...
@@ -1086,6 +1095,27 @@ const handleWarehouseChange = (value: string | number) => {
...
@@ -1086,6 +1095,27 @@ const handleWarehouseChange = (value: string | number) => {
_warehouseId.value = value
_warehouseId.value = value
initOrderDetailBox()
initOrderDetailBox()
}
}
const reconnectWebSocket = async () => {
if (!userStore.user?.factory.id) return
try {
await socket.init(
{
account: userStore.user?.account.toString(),
factoryNo: userStore.user?.factory.id.toString(),
},
messageChange,
)
socket.send({
code: 'STARTORDERCN',
factoryNo: userStore.user?.factory.id,
warehouseId: warehouseId.value,
})
} catch (error) {
console.error('WebSocket 重连失败:', error)
ElMessage.error('WebSocket 重连失败,请稍后重试')
}
}
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
...
...
src/views/order/podCN/SuperPodMakeOrder.vue
View file @
d840ce93
...
@@ -16,6 +16,15 @@
...
@@ -16,6 +16,15 @@
<span>
超级播种墙配货
</span>
<span>
超级播种墙配货
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-else
class=
"offline"
>
[离线]
</span>
<span
v-else
class=
"offline"
>
[离线]
</span>
<ElButton
v-if=
"socketConnect === 'offline'"
type=
"success"
size=
"small"
:icon=
"Refresh"
@
click=
"reconnectWebSocket"
>
刷新
</ElButton>
</div>
</div>
</
template
>
</
template
>
<div
class=
"pod-make-order-content"
>
<div
class=
"pod-make-order-content"
>
...
@@ -241,7 +250,7 @@ import {
...
@@ -241,7 +250,7 @@ import {
printNormalPdf
,
printNormalPdf
,
}
from
'@/api/podCnOrder'
}
from
'@/api/podCnOrder'
import
useUserStore
from
'@/store/user'
import
useUserStore
from
'@/store/user'
import
{
Check
}
from
'@element-plus/icons-vue'
import
{
Check
,
Refresh
}
from
'@element-plus/icons-vue'
import
socket
from
'@/utils/cnSuperWebsocket'
import
socket
from
'@/utils/cnSuperWebsocket'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
{
filePath
}
from
'@/api/axios.ts'
import
{
filePath
}
from
'@/api/axios.ts'
...
@@ -969,6 +978,25 @@ const handleCurrentChange = (url: string) => {
...
@@ -969,6 +978,25 @@ const handleCurrentChange = (url: string) => {
coverImage.value = url || ''
coverImage.value = url || ''
}
}
}
}
const reconnectWebSocket = async () => {
if (userStore.user?.factory.id) {
try {
await socket.init(
{
account: userStore.user?.account.toString(),
factoryNo: userStore.user?.factory.id.toString(),
},
messageChange,
)
socket.send({
code: 'SUPERFACTORYSTARTORDER',
factoryNo: userStore.user?.factory.id,
})
} catch (error) {
console.error(error)
}
}
}
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
...
...
src/views/order/podCN/components/CreateLogisticDialog.vue
0 → 100644
View file @
d840ce93
<
template
>
<el-dialog
v-model=
"createLogisticDialogVisible"
:close-on-click-modal=
"false"
title=
"创建物流订单"
>
<div
style=
"display: flex; align-items: center; gap: 20px"
>
<span
style=
"font-weight: 500"
>
是否自动匹配物流方式
</span>
<el-radio-group
v-model=
"isAutoMatch"
>
<el-radio
:value=
"false"
>
否
</el-radio>
<el-radio
:value=
"true"
>
是
</el-radio>
</el-radio-group>
</div>
<div
v-if=
"!isAutoMatch && logisticCompanyList.length > 0"
style=
"margin: 10px; border: 1px solid #e0e0e0; display: flex"
>
<div
style=
"
display: flex;
flex-direction: column;
width: 200px;
font-weight: 500;
"
>
<div
v-for=
"item in logisticCompanyList"
:key=
"item.id"
class=
"logistic-company-item"
:class=
"
{
'selected-logistic-company':
selectedLogisticCompany?.id === item.id,
}"
@click="selectLogisticCompany(item)"
>
{{
item
.
name
}}
</div>
</div>
<div
style=
"
width: 100%;
min-height: 220px;
display: flex;
justify-content: center;
align-items: flex-start;
"
>
<div
v-if=
"logisticsWayList.length > 0"
style=
"
padding: 0 10px;
width: 100%;
display: flex;
align-items: center;
"
>
<el-radio-group
v-model=
"logisticsWayId"
>
<el-radio
v-for=
"item in logisticsWayList"
:key=
"item.id"
:value=
"item.id"
style=
"width: 200px; height: 40px"
>
{{
item
.
name
}}
</el-radio>
</el-radio-group>
</div>
<el-empty
v-else
description=
"暂无数据"
:image-size=
"80"
/>
</div>
</div>
<template
#
footer
>
<el-button
@
click=
"cancelDialog"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"confirmDialog"
>
确定
</el-button>
</
template
>
</el-dialog>
</template>
<
script
lang=
"ts"
setup
>
import
{
getLogisticsCompanyList
,
ILogisticsCompany
,
getLogisticsWayListByCompanyId
,
LogisticsWayData
,
}
from
'@/api/logistics'
import
{
createLogisticsOrdersApi
}
from
'@/api/podCnOrder'
const
createLogisticDialogVisible
=
ref
(
false
)
const
isAutoMatch
=
ref
(
false
)
const
logisticCompanyList
=
ref
<
ILogisticsCompany
[]
>
([])
const
selectedLogisticCompany
=
ref
<
ILogisticsCompany
|
null
>
(
null
)
const
logisticsWayList
=
ref
<
LogisticsWayData
[]
>
([])
const
logisticsWayId
=
ref
<
number
|
null
>
(
null
)
const
orderIdList
=
ref
<
(
string
|
number
)[]
>
([])
const
cancelDialog
=
()
=>
{
logisticsWayList
.
value
=
[]
logisticCompanyList
.
value
=
[]
selectedLogisticCompany
.
value
=
null
logisticsWayId
.
value
=
null
orderIdList
.
value
=
[]
isAutoMatch
.
value
=
false
createLogisticDialogVisible
.
value
=
false
}
// 获取物流公司列表
const
getLogisticsCompanyListFn
=
async
()
=>
{
const
{
data
}
=
await
getLogisticsCompanyList
()
logisticCompanyList
.
value
=
data
as
unknown
as
ILogisticsCompany
[]
if
(
logisticCompanyList
.
value
.
length
>
0
)
{
selectedLogisticCompany
.
value
=
logisticCompanyList
.
value
[
0
]
await
getLogisticsWayListFn
(
selectedLogisticCompany
.
value
.
id
)
}
}
// 获取物流方式列表
const
getLogisticsWayListFn
=
async
(
id
:
number
)
=>
{
const
{
data
}
=
await
getLogisticsWayListByCompanyId
(
id
)
logisticsWayList
.
value
=
data
}
// 选择物流公司
const
selectLogisticCompany
=
async
(
item
:
ILogisticsCompany
)
=>
{
selectedLogisticCompany
.
value
=
item
await
getLogisticsWayListFn
(
item
.
id
)
}
const
confirmDialog
=
async
()
=>
{
await
createLogisticsOrdersApi
(
orderIdList
.
value
,
logisticsWayId
.
value
)
.
then
((
res
)
=>
{
emits
(
'show-result'
,
res
.
data
)
})
.
finally
(()
=>
{
logisticsWayList
.
value
=
[]
logisticCompanyList
.
value
=
[]
selectedLogisticCompany
.
value
=
null
logisticsWayId
.
value
=
null
orderIdList
.
value
=
[]
isAutoMatch
.
value
=
false
createLogisticDialogVisible
.
value
=
false
})
}
const
showDialog
=
async
(
ids
:
(
string
|
number
)[])
=>
{
await
getLogisticsCompanyListFn
()
orderIdList
.
value
=
ids
createLogisticDialogVisible
.
value
=
true
}
const
emits
=
defineEmits
<
{
(
e
:
'show-result'
,
data
:
Array
<
{
id
:
string
|
number
status
:
boolean
factoryOrderNumber
?:
string
message
:
string
}
>
,
):
void
}
>
()
defineExpose
({
showDialog
,
})
watch
(
isAutoMatch
,
(
newVal
)
=>
{
if
(
newVal
)
{
getLogisticsCompanyListFn
()
}
})
</
script
>
<
style
lang=
"scss"
scoped
>
.logistic-company-item
{
padding
:
10px
10px
;
cursor
:
pointer
;
&:hover
{
background-color
:
#f0f0f0
;
}
}
.selected-logistic-company
{
background-color
:
#f0f0f0
;
}
</
style
>
src/views/order/podCN/index.vue
View file @
d840ce93
This diff is collapsed.
Click to expand it.
src/views/order/podUs/PodMakeOrder.vue
View file @
d840ce93
...
@@ -16,6 +16,15 @@
...
@@ -16,6 +16,15 @@
<span>
播种墙配货
</span>
<span>
播种墙配货
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-if=
"socketConnect === 'online'"
class=
"online"
>
[在线]
</span>
<span
v-else
class=
"offline"
>
[离线]
</span>
<span
v-else
class=
"offline"
>
[离线]
</span>
<ElButton
v-if=
"socketConnect === 'offline'"
type=
"success"
size=
"small"
:icon=
"Refresh"
@
click=
"reconnectWebSocket"
>
刷新
</ElButton>
</div>
</div>
</
template
>
</
template
>
<div
class=
"pod-make-order-content"
>
<div
class=
"pod-make-order-content"
>
...
@@ -146,13 +155,14 @@
...
@@ -146,13 +155,14 @@
<span
class=
"box-top-item-box-index-text"
>
号箱
</span>
<span
class=
"box-top-item-box-index-text"
>
号箱
</span>
<span
style=
"font-size: 30px"
>
放入第
</span>
<span
style=
"font-size: 30px"
>
放入第
</span>
<div
class=
"box-top-item-box-index-number"
>
<div
class=
"box-top-item-box-index-number"
:style=
"{color:podOrderDetailsData?.pickingNumber ===
podOrderDetailsData?.purchaseNumber ? 'rgb(0, 255, 0)' : ''}"
>
{{ podOrderDetailsData?.pickingNumber }}
{{ podOrderDetailsData?.pickingNumber }}
</div>
</div>
<span
style=
"font-size: 30px"
>
件商品
</span>
<span
style=
"font-size: 30px"
>
件商品
</span>
</div>
</div>
<div
v-else
class=
"box-top-item-box-index-text"
>
<div
v-else
class=
"box-top-item-box-index-text"
>
单件商品
订单
,不占用播种墙
单件商品
<span
style=
"color: rgb(0, 255, 0)"
>
(配齐)
</span>
,不占用播种墙
</div>
</div>
<div
class=
"box-top-item-status"
>
<div
class=
"box-top-item-status"
>
<span
<span
...
@@ -180,7 +190,7 @@
...
@@ -180,7 +190,7 @@
<ElButton
type=
"success"
@
click=
"handlePrintFinish"
<ElButton
type=
"success"
@
click=
"handlePrintFinish"
>
打单完成
</ElButton
>
打单完成
</ElButton
>
>
<ElButton
type=
"danger"
@
click=
"handleClearBox"
>
清空箱子
</ElButton>
<ElButton
:disabled=
"boxIndex === 0"
type=
"danger"
@
click=
"handleClearBox"
>
清空箱子
</ElButton>
</div>
</div>
<div
<div
v-if=
"
v-if=
"
...
@@ -255,10 +265,11 @@ import {
...
@@ -255,10 +265,11 @@ import {
printNormalPickPdfApi
,
printNormalPickPdfApi
,
}
from
'@/api/podUsOrder'
}
from
'@/api/podUsOrder'
import
useUserStore
from
'@/store/user'
import
useUserStore
from
'@/store/user'
import
{
Check
}
from
'@element-plus/icons-vue'
import
{
Check
,
Refresh
}
from
'@element-plus/icons-vue'
import
socket
from
'@/utils/websocket'
import
socket
from
'@/utils/websocket'
import
{
WarehouseListData
}
from
'@/types/api/podUsOrder'
import
{
WarehouseListData
}
from
'@/types/api/podUsOrder'
import
{
filePath
}
from
'@/api/axios.ts'
import
{
filePath
}
from
'@/api/axios.ts'
import
{
ElButton
,
ElIcon
}
from
'element-plus'
const
{
getCLodop
}
=
useLodop
()
const
{
getCLodop
}
=
useLodop
()
...
@@ -467,7 +478,7 @@ const renderItemBox = (bool: boolean) => {
...
@@ -467,7 +478,7 @@ const renderItemBox = (bool: boolean) => {
renderLock
=
true
renderLock
=
true
let
boxItem
=
podBoxList
.
value
?.
find
((
item
)
=>
item
.
box
===
boxIndex
.
value
)
let
boxItem
=
podBoxList
.
value
?.
find
((
item
)
=>
item
.
box
===
boxIndex
.
value
)
console
.
log
(
boxItem
,
'boxItem'
)
console
.
log
(
boxItem
,
'boxItem'
)
if
(
!
boxItem
)
boxItem
=
{
data
:
{
productList
:
[]
}
}
if
(
!
boxItem
)
boxItem
=
{
data
:
{
productList
:
[]
}
}
const
{
data
}
=
boxItem
const
{
data
}
=
boxItem
data
?.
productList
?.
forEach
((
el
)
=>
{
data
?.
productList
?.
forEach
((
el
)
=>
{
...
@@ -529,7 +540,7 @@ const renderItemBox = (bool: boolean) => {
...
@@ -529,7 +540,7 @@ const renderItemBox = (bool: boolean) => {
console
.
log
(
408
,
data
)
console
.
log
(
408
,
data
)
if
(
productList
.
every
((
item
)
=>
item
.
power
))
{
if
(
productList
.
every
((
item
)
=>
item
.
power
))
{
if
(
userStore
.
user
?.
id
!==
boxItem
.
fromUser
)
return
if
(
userStore
.
user
?.
id
!==
boxItem
.
fromUser
)
return
print
(
data
,
false
,
()
=>
{
print
(
data
,
false
,
()
=>
{
renderLock
=
false
renderLock
=
false
})
})
...
@@ -561,7 +572,7 @@ const messageChange = (data: WebSocketMessage) => {
...
@@ -561,7 +572,7 @@ const messageChange = (data: WebSocketMessage) => {
}
}
}
}
const
setPodBoxList
=
(
data
:
WebSocketMessage
)
=>
{
const
setPodBoxList
=
(
data
:
WebSocketMessage
)
=>
{
console
.
log
(
data
,
'datatatata'
)
console
.
log
(
data
,
'datatatata'
)
const
obj
=
data
.
txt
const
obj
=
data
.
txt
if
(
obj
&&
typeof
obj
===
'string'
)
{
if
(
obj
&&
typeof
obj
===
'string'
)
{
const
parsedData
=
JSON
.
parse
(
obj
)
const
parsedData
=
JSON
.
parse
(
obj
)
...
@@ -646,6 +657,9 @@ const getPackingData = async (code: string) => {
...
@@ -646,6 +657,9 @@ const getPackingData = async (code: string) => {
productionOrder
.
value
=
''
productionOrder
.
value
=
''
return
return
}
}
if
(
!
warehouseId
.
value
){
return
ElMessage
.
warning
(
'请选择仓库'
)
}
const
res
=
await
getPackingDataApi
(
const
res
=
await
getPackingDataApi
(
code
,
code
,
factoryNo
,
factoryNo
,
...
@@ -702,17 +716,9 @@ const submitInspection = async (callback: () => void) => {
...
@@ -702,17 +716,9 @@ const submitInspection = async (callback: () => void) => {
if
(
!
factoryNo
)
{
if
(
!
factoryNo
)
{
return
return
}
}
const
data
=
podOrderDetailsData
.
value
?.
id
?
[
{
id
:
podOrderDetailsData
.
value
.
id
,
version
:
podOrderDetailsData
.
value
?.
version
,
},
]
:
[]
try
{
try
{
const
res
=
await
submitInspectionApi
(
const
res
=
await
submitInspectionApi
(
data
,
podOrderDetailsData
.
value
?.
id
,
boxIndex
.
value
,
boxIndex
.
value
,
warehouseId
.
value
,
warehouseId
.
value
,
)
)
...
@@ -749,7 +755,7 @@ const initOrderDetailBox = async () => {
...
@@ -749,7 +755,7 @@ const initOrderDetailBox = async () => {
}
}
orderStore
.
setPodBoxList
({
orderStore
.
setPodBoxList
({
boxList
:
res
.
data
,
boxList
:
res
.
data
,
fromUser
:
userStore
.
user
?
userStore
.
user
.
id
:
0
,
fromUser
:
userStore
.
user
?
userStore
.
user
.
id
:
0
,
factoryNo
,
factoryNo
,
warehouseId
:
warehouseId
.
value
,
warehouseId
:
warehouseId
.
value
,
})
})
...
@@ -903,6 +909,10 @@ const handleBoxClick = (item: PodMakeOrderData) => {
...
@@ -903,6 +909,10 @@ const handleBoxClick = (item: PodMakeOrderData) => {
}
}
const
handleClearBox
=
async
()
=>
{
const
handleClearBox
=
async
()
=>
{
try
{
try
{
if
(
!
boxIndex
.
value
){
ElMessage
.
warning
(
'请选择箱子'
)
return
}
await
ElMessageBox
.
alert
(
'确定清空当前箱子吗?'
,
'提示'
,
{
await
ElMessageBox
.
alert
(
'确定清空当前箱子吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
...
@@ -914,6 +924,7 @@ const handleClearBox = async () => {
...
@@ -914,6 +924,7 @@ const handleClearBox = async () => {
if
(
!
factoryNo
)
{
if
(
!
factoryNo
)
{
return
return
}
}
try
{
try
{
const
res
=
await
clearBoxApi
(
const
res
=
await
clearBoxApi
(
factoryNo
,
factoryNo
,
...
@@ -1012,7 +1023,7 @@ const print = (data: OrderData, forcePrint = false, callback?: () => void) => {
...
@@ -1012,7 +1023,7 @@ const print = (data: OrderData, forcePrint = false, callback?: () => void) => {
const
factoryNo
=
userStore
.
user
?.
factory
.
id
const
factoryNo
=
userStore
.
user
?.
factory
.
id
if
(
!
factoryNo
)
return
if
(
!
factoryNo
)
return
orderStore
.
setPodBoxList
({
orderStore
.
setPodBoxList
({
fromUser
:
userStore
.
user
?
userStore
.
user
.
id
:
0
,
fromUser
:
userStore
.
user
?
userStore
.
user
.
id
:
0
,
boxList
:
item
?
(
item
.
data
as
PodMakeOrderData
[])
:
null
,
boxList
:
item
?
(
item
.
data
as
PodMakeOrderData
[])
:
null
,
factoryNo
,
factoryNo
,
box
:
_boxIndex
||
undefined
,
box
:
_boxIndex
||
undefined
,
...
@@ -1031,7 +1042,10 @@ const clearAllBox = async () => {
...
@@ -1031,7 +1042,10 @@ const clearAllBox = async () => {
return
return
}
}
try
{
try
{
const
res
=
await
clearAllBoxApi
(
warehouseId
.
value
,
userStore
.
user
?.
factory
.
id
)
const
res
=
await
clearAllBoxApi
(
warehouseId
.
value
,
userStore
.
user
?.
factory
.
id
,
)
if
(
res
.
code
!==
200
)
return
if
(
res
.
code
!==
200
)
return
// orderStore.setPodBoxList({
// orderStore.setPodBoxList({
// boxList: res.data,
// boxList: res.data,
...
@@ -1103,6 +1117,28 @@ const printNormal = async () => {
...
@@ -1103,6 +1117,28 @@ const printNormal = async () => {
ElMessage
.
success
(
'操作成功'
)
ElMessage
.
success
(
'操作成功'
)
window
.
open
(
filePath
+
res
.
message
)
window
.
open
(
filePath
+
res
.
message
)
}
}
const
reconnectWebSocket
=
async
()
=>
{
if
(
!
userStore
.
user
?.
factory
.
id
)
return
try
{
await
socket
.
init
(
{
account
:
userStore
.
user
?.
account
.
toString
(),
factoryNo
:
userStore
.
user
?.
factory
.
id
.
toString
(),
},
messageChange
,
)
socket
.
send
({
code
:
'STARTORDER'
,
factoryNo
:
userStore
.
user
?.
factory
.
id
,
warehouseId
:
warehouseId
.
value
,
})
}
catch
(
error
)
{
console
.
error
(
'WebSocket 重连失败:'
,
error
)
ElMessage
.
error
(
'WebSocket 重连失败,请稍后重试'
)
}
}
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
...
...
src/views/order/podUs/index.vue
View file @
d840ce93
This diff is collapsed.
Click to expand it.
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