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
294bf78b
Commit
294bf78b
authored
Sep 16, 2025
by
wuqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pod-cn订单跟踪
parent
c9893ce8
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1188 additions
and
4 deletions
+1188
-4
src/api/podCnOrder.ts
+6
-1
src/router/index.ts
+7
-0
src/router/menu.ts
+6
-2
src/views/order/orderTracking/indexcn.vue
+1169
-0
src/views/order/podCN/index.vue
+0
-1
No files found.
src/api/podCnOrder.ts
View file @
294bf78b
...
...
@@ -10,7 +10,7 @@ import {
ExportParams
,
IconfirmSubmit
,
}
from
'@/types/api/podCnOrder'
import
{
InterceptStateGroupData
}
from
'@/types/api/podUsOrder'
import
{
InterceptStateGroupData
,
ProductionClient
}
from
'@/types/api/podUsOrder'
import
axios
from
'./axios'
import
{
PodMakeOrderData
}
from
'@/types/api/podMakeOrder'
export
function
exportPodCnInfo
(
data
:
ExportParams
)
{
...
...
@@ -134,6 +134,11 @@ export function confirmOrderApi(
},
)
}
export
function
getProductionClientApi
()
{
return
axios
.
get
<
never
,
BaseRespData
<
ProductionClient
[]
>>
(
'factory/podJomallOrderCn/getProductionClientList'
,
)
}
export
function
updateExceptionOrderApi
(
data
:
number
[])
{
return
axios
.
post
<
never
,
BaseRespData
<
never
>>
(
'factory/podJomallOrderCn/updateExceptionOrders'
,
...
...
src/router/index.ts
View file @
294bf78b
...
...
@@ -88,6 +88,13 @@ const router = createRouter({
},
component
:
()
=>
import
(
'@/views/order/orderTracking/index.vue'
),
},
{
path
:
'/pod-cn-order/orderTracking'
,
meta
:
{
title
:
'POD(CN)订单跟踪'
,
},
component
:
()
=>
import
(
'@/views/order/orderTracking/indexcn.vue'
),
},
{
path
:
'/pod-delivery-note/list'
,
meta
:
{
...
...
src/router/menu.ts
View file @
294bf78b
...
...
@@ -127,10 +127,14 @@ const menu: MenuItem[] = [
id
:
8
,
label
:
'POD订单(US)'
,
},
{
index
:
'/pod-
us
-order/orderTracking'
,
index
:
'/pod-
cn
-order/orderTracking'
,
id
:
9
,
label
:
'POD(CN)订单跟踪'
,
},
{
index
:
'/pod-us-order/orderTracking'
,
id
:
10
,
label
:
'POD(US)订单跟踪'
,
},
],
...
...
src/views/order/orderTracking/indexcn.vue
0 → 100644
View file @
294bf78b
<
script
setup
lang=
"ts"
>
defineOptions
({
name
:
'OrderTracking'
,
})
import
{
factoryWarehouseInfo
,
warehouseInfo
,
warehouseInfoGetAll
,
}
from
'@/api/warehouse.ts'
import
{
getListCraftApi
,
getOrderList
,
getOperationLogApi
,
getOrderTabData
,
getfaceSimplexFileApi
,
exportPodCnInfo
,
}
from
'@/api/podCnOrder'
import
{
SearchForm
,
CraftListData
,
ProductList
,
PodCnOrderListData
,
LogListData
,
Tab
,
ExportParams
,
}
from
'@/types/api/podCnOrder'
import
platformJson
from
'../../../json/platform.json'
import
dayjs
from
'dayjs'
import
{
getUserMarkList
}
from
'@/api/common'
import
{
CaretBottom
,
CaretTop
}
from
'@element-plus/icons-vue'
import
SplitDiv
from
'@/components/splitDiv/splitDiv.vue'
import
{
BaseRespData
}
from
'@/types/api'
import
{
showConfirm
}
from
'@/utils/ui'
import
{
isArray
,
isString
}
from
'@/utils/validate'
import
ResultInfo
from
'../podUs/components/ResultInfo.vue'
import
{
filePath
}
from
'@/api/axios'
import
{
convertToChinaTime
}
from
'@/utils/index'
import
{
useValue
}
from
'@/utils/hooks/useValue'
const
[
searchForm
,
resetSearchForm
]
=
useValue
<
SearchForm
>
({
timeType
:
1
,
shopNumber
:
''
,
shipmentType
:
''
,
userMark
:
''
,
processNumber
:
''
,
baseSku
:
''
,
factoryOrderNumber
:
''
,
sku
:
''
,
factorySubOrderNumber
:
''
,
status
:
''
,
// customizedQuantity: '',
multi
:
null
,
startTime
:
null
,
endTime
:
null
,
exceptionHandling
:
undefined
,
platform
:
''
,
// productionClient: '',
warehouseId
:
''
,
thirdSkuCode
:
''
,
supplierProductNo
:
''
,
batchArrangeNumber
:
''
,
craftCode
:
''
,
thirdStockSku
:
''
,
})
const
tableColumns
=
computed
(()
=>
{
return
[
{
label
:
'订单号'
,
prop
:
'factoryOrderNumber'
,
width
:
160
,
align
:
'center'
,
},
{
label
:
'第三方订单号'
,
prop
:
'thirdOrderNumber'
,
width
:
240
,
align
:
'center'
,
},
{
label
:
'店铺单号'
,
prop
:
'shopNumber'
,
width
:
160
,
align
:
'center'
,
},
{
label
:
'订单状态'
,
prop
:
'status'
,
slot
:
'status'
,
width
:
160
,
align
:
'center'
,
},
{
label
:
'物流类型'
,
slot
:
'shipmentType'
,
prop
:
'shipmentType'
,
width
:
120
,
align
:
'center'
,
},
{
label
:
'物流跟踪号'
,
prop
:
'trackingNumber'
,
width
:
160
,
align
:
'center'
,
},
{
label
:
'总克重(g)'
,
prop
:
'weight'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'生产端'
,
prop
:
'productionClient'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'发货仓库'
,
prop
:
'warehouseName'
,
width
:
120
,
align
:
'center'
,
},
{
label
:
'物流方式'
,
prop
:
'logisticsWayName'
,
width
:
120
,
align
:
'center'
,
},
{
label
:
'收货人'
,
prop
:
'receiverName'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'收货人电话'
,
prop
:
'receiverPhone'
,
width
:
140
,
align
:
'center'
,
},
{
label
:
'收货人邮编'
,
prop
:
'receiverPostCode'
,
width
:
140
,
align
:
'center'
,
},
{
label
:
'收货地址'
,
prop
:
'lanshouAddress'
,
width
:
500
,
align
:
'center'
,
},
]
})
const
goodsColumns
=
computed
(()
=>
{
return
[
{
label
:
'商品图片'
,
prop
:
'productImg'
,
slot
:
'productImg'
,
width
:
90
,
},
{
label
:
'商品名称'
,
prop
:
'productName'
,
width
:
170
,
align
:
'center'
,
showOverflowTooltip
:
true
,
},
{
label
:
'数量'
,
prop
:
'num'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'状态'
,
prop
:
'subStatus'
,
width
:
130
,
align
:
'center'
,
showOverflowTooltip
:
true
,
},
{
label
:
'生产单号'
,
prop
:
'factorySubOrderNumber'
,
width
:
170
,
align
:
'center'
,
showOverflowTooltip
:
true
,
},
{
label
:
'变体sku'
,
prop
:
'variantSku'
,
width
:
170
,
align
:
'center'
,
showOverflowTooltip
:
true
,
},
{
label
:
'第三方生产单号'
,
prop
:
'thirdSubOrderNumber'
,
width
:
170
,
align
:
'center'
,
showOverflowTooltip
:
true
,
},
{
label
:
'库存SKU'
,
prop
:
'thirdSkuCode'
,
width
:
170
,
align
:
'center'
,
showOverflowTooltip
:
true
,
},
{
label
:
'工厂'
,
prop
:
'factoryCode'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'货号'
,
prop
:
'thirdStockSku'
,
width
:
130
,
align
:
'center'
,
},
{
label
:
'款号'
,
prop
:
'supplierProductNo'
,
width
:
162
,
align
:
'center'
,
},
{
label
:
'工艺'
,
prop
:
'craftName'
,
width
:
140
,
align
:
'center'
,
},
{
label
:
'价格($)'
,
prop
:
'productPrice'
,
align
:
'center'
,
},
{
label
:
'模板金额($)'
,
prop
:
'templatePrice'
,
width
:
120
,
align
:
'center'
,
},
{
label
:
'工艺金额($)'
,
prop
:
'craftPrice'
,
width
:
120
,
align
:
'center'
,
},
{
label
:
'付款金额($)'
,
prop
:
'payAmount'
,
width
:
120
,
align
:
'center'
,
},
{
label
:
'未生产数量'
,
prop
:
'notPassNum'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'补胚数量'
,
prop
:
'replenishmentSumNum'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'克重(g)'
,
prop
:
'weight'
,
width
:
100
,
align
:
'center'
,
},
{
label
:
'备注'
,
prop
:
'remark'
,
width
:
100
,
align
:
'center'
,
},
]
})
const
tableData
=
ref
<
PodCnOrderListData
[]
>
([])
const
goodsData
=
ref
<
ProductList
[]
>
([])
const
searchVisible
=
ref
(
false
)
const
goodsLoading
=
ref
(
false
)
const
logList
=
ref
<
LogListData
[]
>
([])
const
selection
=
ref
<
PodCnOrderListData
[]
>
([])
const
warehouseList
=
ref
<
warehouseInfo
[]
>
([])
const
timeRange
=
ref
<
string
[]
>
([])
const
pickerOptions
=
{
shortcuts
:
[
{
text
:
'今日'
,
value
:
()
=>
getDateRange
(
0
),
},
{
text
:
'昨天'
,
value
:
()
=>
getDateRange
(
1
),
},
{
text
:
'最近7天'
,
value
:
()
=>
getDateRange
(
6
),
},
{
text
:
'最近14天'
,
value
:
()
=>
getDateRange
(
13
),
},
{
text
:
'最近30天'
,
value
:
()
=>
getDateRange
(
29
),
},
{
text
:
'本周'
,
value
:
()
=>
getWeekRange
(
0
),
},
{
text
:
'上周'
,
value
:
()
=>
getWeekRange
(
1
),
},
{
text
:
'本月'
,
value
:
()
=>
getMonthRange
(
0
),
},
{
text
:
'上月'
,
value
:
()
=>
getMonthRange
(
1
),
},
{
text
:
'历史'
,
value
:
()
=>
{
const
end
=
dayjs
().
endOf
(
'day'
).
toDate
()
const
start
=
dayjs
(
'2000-01-01'
).
startOf
(
'day'
).
toDate
()
return
[
start
,
end
]
},
},
{
text
:
'转换中国时间'
,
value
:
()
=>
{
console
.
log
(
3469
,
timeRange
.
value
)
if
(
timeRange
.
value
?.
length
)
{
const
end
=
timeRange
.
value
[
1
]
??
''
const
start
=
timeRange
.
value
[
0
]
??
''
return
[
convertToChinaTime
(
start
),
convertToChinaTime
(
end
)]
}
else
{
return
getDateRange
(
0
)
}
},
},
],
}
const
pagination
=
ref
<
factoryWarehouseInfo
>
({
pageSize
:
50
,
currentPage
:
1
,
total
:
0
,
})
const
search
=
()
=>
{
goodsData
.
value
=
[]
logList
.
value
=
[]
getOrderListFn
()
}
const
getDateRange
=
(
days
=
0
,
type
:
'past'
|
'future'
=
'past'
)
=>
{
const
end
=
dayjs
()
const
start
=
type
===
'past'
?
end
.
subtract
(
days
,
'day'
)
:
end
.
add
(
days
,
'day'
)
return
[
start
.
startOf
(
'day'
).
toDate
(),
end
.
endOf
(
'day'
).
toDate
()]
}
const
getMonthRange
=
(
months
=
0
,
type
:
'past'
|
'future'
=
'past'
)
=>
{
const
now
=
dayjs
()
const
start
=
type
===
'past'
?
now
.
subtract
(
months
,
'month'
)
:
now
.
add
(
months
,
'month'
)
return
[
start
.
startOf
(
'month'
).
toDate
(),
start
.
endOf
(
'month'
).
toDate
()]
}
const
getWeekRange
=
(
weeks
=
0
,
type
:
'past'
|
'future'
=
'past'
)
=>
{
const
now
=
dayjs
()
const
start
=
type
===
'past'
?
now
.
subtract
(
weeks
,
'week'
)
:
now
.
add
(
weeks
,
'week'
)
return
[
start
.
startOf
(
'week'
).
toDate
(),
start
.
endOf
(
'week'
).
toDate
()]
}
const
exportLoading
=
ref
(
false
)
const
exportVisible
=
ref
(
false
)
const
exportForm
=
ref
({
resource
:
''
,
})
const
exportData
=
()
=>
{
exportVisible
.
value
=
true
}
const
submitExportForm
=
async
()
=>
{
if
(
exportForm
.
value
.
resource
===
''
)
{
return
ElMessage
.
error
(
'请选择导出类型'
)
}
exportLoading
.
value
=
true
const
resourceType
=
Number
(
exportForm
.
value
.
resource
)
const
params
:
ExportParams
=
{
exportAll
:
false
,
idList
:
[],
}
// 使用函数封装映射逻辑
const
mapIds
=
(
items
:
PodCnOrderListData
[])
=>
items
.
map
((
el
)
=>
Number
(
el
.
id
))
switch
(
resourceType
)
{
case
0
:
params
.
idList
=
mapIds
(
tableData
.
value
as
PodCnOrderListData
[])
break
case
1
:
params
.
idList
=
mapIds
(
selection
.
value
)
break
case
2
:
params
.
exportAll
=
true
params
.
idList
=
undefined
break
default
:
console
.
error
(
'未知的资源类型:'
,
resourceType
)
}
try
{
await
exportPodCnInfo
({
...
params
,
...(
resourceType
===
2
?
searchForm
.
value
:
{}),
})
ElMessage
.
success
(
'请求成功,请稍后到右上角[我的下载]中查看'
)
exportVisible
.
value
=
false
exportLoading
.
value
=
false
}
catch
(
e
)
{
exportVisible
.
value
=
false
exportLoading
.
value
=
false
}
}
const
handleSizeChange
=
(
pageSize
:
number
)
=>
{
pagination
.
value
.
pageSize
=
pageSize
getOrderListFn
()
}
const
handleCurrentChange
=
(
currentPage
:
number
)
=>
{
pagination
.
value
.
currentPage
=
currentPage
getOrderListFn
()
}
const
getWarehouse
=
async
()
=>
{
const
{
data
}
=
await
warehouseInfoGetAll
()
warehouseList
.
value
=
data
}
const
userMarkList
=
ref
<
string
[]
>
([])
const
getUserMark
=
async
()
=>
{
try
{
const
res
=
await
getUserMarkList
()
userMarkList
.
value
=
res
.
data
}
catch
(
error
)
{
//showError(error)
}
}
const
craftList
=
ref
<
CraftListData
[]
>
([])
const
loadCraftList
=
async
()
=>
{
try
{
const
res
=
await
getListCraftApi
()
if
(
res
.
code
!==
200
)
return
craftList
.
value
=
res
.
data
}
catch
(
e
)
{
console
.
error
(
e
)
}
}
const
tableRef
=
ref
()
const
getOrderListFn
=
async
()
=>
{
const
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
})
const
{
currentPage
,
pageSize
}
=
pagination
.
value
try
{
const
{
data
}
=
await
getOrderList
(
{
...
searchForm
.
value
,
startTime
:
timeRange
.
value
&&
timeRange
.
value
.
length
>
0
?
timeRange
.
value
[
0
]
:
null
,
endTime
:
timeRange
.
value
&&
timeRange
.
value
.
length
>
0
?
timeRange
.
value
[
1
]
:
null
,
},
currentPage
,
pageSize
,
)
tableData
.
value
=
data
.
records
.
flat
()
pagination
.
value
.
total
=
data
.
total
if
(
tableData
.
value
?.
length
)
{
nextTick
(
async
()
=>
{
await
tableRef
.
value
?.
setCurrentRow
(
tableData
.
value
[
0
])
rowClick
(
tableData
.
value
[
0
]
as
unknown
as
PodCnOrderListData
)
})
}
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
loading
.
close
()
}
}
const
currentRowId
=
ref
<
number
>
()
function
rowClick
(
row
:
PodCnOrderListData
)
{
currentRowId
.
value
=
row
.
id
goodsLoading
.
value
=
true
goodsData
.
value
=
row
.
productList
as
ProductList
[]
const
timer
=
setTimeout
(()
=>
{
goodsLoading
.
value
=
false
clearTimeout
(
timer
)
},
500
)
}
const
logLoading
=
ref
(
false
)
const
operationLog
=
async
()
=>
{
logLoading
.
value
=
true
try
{
if
(
currentRowId
.
value
)
{
const
res
=
await
getOperationLogApi
(
currentRowId
.
value
as
number
)
if
(
res
.
code
!==
200
)
return
logList
.
value
=
res
.
data
.
map
((
el
)
=>
{
return
{
...
el
,
local
:
'BeiJing'
,
}
})
tempChinaLogs
.
value
=
[...
logList
.
value
]
}
}
catch
(
e
)
{
console
.
error
(
e
)
}
finally
{
const
timer
=
setTimeout
(()
=>
{
logLoading
.
value
=
false
clearTimeout
(
timer
)
},
500
)
}
}
const
tabsNav
=
ref
<
Tab
[]
>
([])
const
loadTabData
=
async
()
=>
{
try
{
const
res
=
await
getOrderTabData
()
tabsNav
.
value
=
res
.
data
.
filter
((
el
)
=>
el
.
status
!==
'BATCH_DOWNLOAD'
)
}
catch
(
error
)
{
// showError(error)
}
}
function
getStatus
(
status
:
string
)
{
const
item
=
tabsNav
.
value
.
find
((
el
)
=>
el
.
status
===
status
)
if
(
item
)
{
return
item
.
statusName
}
return
''
}
const
resultInfo
=
ref
<
{
id
:
string
|
number
status
:
boolean
factoryOrderNumber
?:
string
message
:
string
}[]
>
([])
const
resultRefs
=
ref
<
InstanceType
<
typeof
ResultInfo
>
|
null
>
(
null
)
/**
* @description: 获取打印面单
*/
const
getOrderByIdApi
=
async
(
type
:
string
)
=>
{
if
(
selection
.
value
.
length
===
0
)
{
return
ElMessage
.
warning
(
'请选择数据'
)
}
const
operationMap
:
{
[
key
:
string
]:
{
message
:
string
Fn
:
(
orderIds
:
(
string
|
number
)[])
=>
Promise
<
BaseRespData
<
never
>>
}
}
=
{
getPrintOrder
:
{
message
:
'获取打印面单'
,
Fn
:
getfaceSimplexFileApi
},
}
let
loading
const
operation
=
operationMap
[
type
]
if
(
operation
)
{
try
{
await
showConfirm
(
`确定对该订单
${
operation
.
message
}
?`
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
})
const
ids
=
selection
.
value
.
map
((
el
)
=>
el
.
id
)
loading
=
ElLoading
.
service
({
fullscreen
:
true
,
text
:
'操作中...'
,
background
:
'rgba(0, 0, 0, 0.3)'
,
})
const
res
=
await
operation
.
Fn
(
ids
)
if
(
res
.
code
===
200
)
{
if
(
isArray
(
res
.
data
))
{
resultInfo
.
value
=
(
res
.
data
as
{
id
:
string
|
number
status
:
boolean
factoryOrderNumber
?:
string
message
:
string
}[])
||
[]
resultRefs
.
value
?.
showDialog
()
console
.
log
(
33
)
}
else
if
(
isString
(
res
.
data
))
{
window
.
open
(
filePath
+
res
.
data
)
}
}
else
{
ElMessage
.
error
(
res
.
message
)
}
}
catch
(
e
)
{
resultInfo
.
value
=
[]
console
.
error
(
e
)
}
finally
{
loading
&&
loading
.
close
()
}
}
else
{
ElMessage
.
warning
(
'未知操作类型'
)
}
}
const
tempChinaLogs
=
ref
<
LogListData
[]
>
([])
const
zoneType
=
ref
<
string
>
(
'Asia/Shanghai'
)
function
changeChinaTime
(
zone
:
string
)
{
zoneType
.
value
=
zone
logList
.
value
=
tempChinaLogs
.
value
.
map
((
el
)
=>
{
return
{
...
el
,
createTime
:
convertToChinaTime
(
el
.
createTime
,
'Asia/Shanghai'
,
zone
),
local
:
zone
.
split
(
'/'
)[
1
]
===
'Shanghai'
?
'BeiJing'
:
zone
.
split
(
'/'
)[
1
],
}
})
}
const
resultConfirm
=
()
=>
{
search
()
loadTabData
()
}
const
handleSelectionChange
=
(
val
:
PodCnOrderListData
[])
=>
{
selection
.
value
=
val
}
watch
(
()
=>
currentRowId
.
value
,
(
newValue
,
oldValue
)
=>
{
if
(
newValue
!==
oldValue
)
{
operationLog
()
}
},
)
loadTabData
()
getUserMark
()
loadCraftList
()
getWarehouse
()
onMounted
(()
=>
{
getOrderListFn
()
})
</
script
>
<
template
>
<split-div
otherSize=
"35"
>
<template
#
top
>
<el-card>
<ElForm
:model=
"searchForm"
size=
"default"
inline
class=
"search-form"
>
<ElFormItem
label=
"仓库"
>
<ElSelect
v-model=
"searchForm.warehouseId"
clearable
filterable
placeholder=
"请输入"
style=
"width: 150px"
>
<el-option
v-for=
"item in warehouseList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"平台"
>
<ElSelect
v-model=
"searchForm.platform"
value-key=
""
placeholder=
"请选择"
clearable
filterable
popper-class=
"customize-select-style"
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in platformJson"
:key=
"index"
:label=
"item.type"
:value=
"item.type"
style=
"width: 160px"
>
<img
:src=
"`/images/icon/$
{item.icon.split('/').pop()}`"
style="height: 20px; margin: 5px 10px 0 0"
/>
<span
:title=
"item.type"
>
{{
item
.
type
}}
</span>
</ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"订单号"
>
<ElInput
v-model=
"searchForm.factoryOrderNumber"
placeholder=
"订单号"
clearable
style=
"width: 150px"
/>
</ElFormItem>
<ElFormItem
label=
"物流类型"
>
<ElSelect
v-model=
"searchForm.shipmentType"
placeholder=
"物流类型"
clearable
style=
"width: 150px"
>
<ElOption
v-for=
"(item, index) in ['自有物流', '工厂物流']"
:key=
"index"
:value=
"index"
:label=
"item"
></ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"物流跟踪号"
>
<ElInput
v-model
.
trim=
"searchForm.trackingNumber"
placeholder=
"物流跟踪号"
clearable
style=
"width: 150px"
></ElInput>
</ElFormItem>
<ElFormItem
label=
"店铺单号"
>
<ElInput
v-model=
"searchForm.shopNumber"
placeholder=
"店铺单号"
clearable
style=
"width: 150px"
/>
</ElFormItem>
<ElFormItem
label=
"生产单号"
>
<ElInput
v-model=
"searchForm.factorySubOrderNumber"
placeholder=
"生产单号"
clearable
style=
"width: 150px"
/>
</ElFormItem>
<ElFormItem
label=
"状态"
>
<ElSelect
v-model=
"searchForm.status"
clearable
filterable
placeholder=
"请输入"
style=
"width: 150px"
>
<el-option
v-for=
"item in tabsNav"
:key=
"item.status"
:label=
"item.statusName"
:value=
"item.status"
></el-option>
</ElSelect>
</ElFormItem>
<!--
<ElFormItem
label=
"类型"
>
<el-radio-group
v-model=
"searchForm.customizedQuantity"
>
<el-radio-button
value=
"single"
>
单面
</el-radio-button>
<el-radio-button
value=
"multiple"
>
多面
</el-radio-button>
</el-radio-group>
</ElFormItem>
-->
<ElFormItem
label=
"数量"
>
<el-radio-group
v-model=
"searchForm.multi"
>
<el-radio-button
:value=
"false"
>
单件
</el-radio-button>
<el-radio-button
:value=
"true"
>
多件
</el-radio-button>
</el-radio-group>
</ElFormItem>
<ElFormItem>
<ElPopover
placement=
"bottom"
width=
"600"
trigger=
"click"
>
<ElForm
:model=
"searchForm"
size=
"default"
inline
label-width=
"100px"
>
<ElFormItem
style=
"width: 100%; padding-right: 40px"
>
<div
style=
"width: 100%; display: flex; flex-wrap: nowrap"
>
<el-select
v-model=
"searchForm.timeType"
clearable
:teleported=
"false"
placeholder=
"时间类型"
style=
"flex: 1; margin-right: 10px"
>
<el-option
:value=
"1"
label=
"创建时间"
></el-option>
<el-option
:value=
"2"
label=
"确认时间"
></el-option>
<el-option
:value=
"3"
label=
"完成时间"
></el-option>
</el-select>
<el-date-picker
v-model=
"timeRange"
:teleported=
"false"
:default-time=
"[
new Date(0, 0, 0, 0, 0, 0),
new Date(0, 0, 0, 23, 59, 59),
]"
placeholder=
"收货人"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"datetimerange"
style=
"width: 280px"
:shortcuts=
"pickerOptions.shortcuts"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
clearable
>
</el-date-picker>
</div>
</ElFormItem>
<ElFormItem
label=
"工艺"
>
<ElSelect
v-model=
"searchForm.craftCode"
clearable
filterable
placeholder=
"请输入工艺"
style=
"width: 150px"
>
<el-option
v-for=
"item in craftList"
:key=
"item.craftCode"
:label=
"item.craftName"
:value=
"item.craftCode"
></el-option>
</ElSelect>
</ElFormItem>
<ElFormItem
label=
"款号"
>
<ElInput
v-model=
"searchForm.supplierProductNo"
placeholder=
"款号"
clearable
style=
"width: 150px"
/>
</ElFormItem>
<ElFormItem
label=
"客户"
>
<el-select
v-model=
"searchForm.userMark"
clearable
filterable
:teleported=
"false"
style=
"width: 150px"
placeholder=
"客户"
>
<el-option
v-for=
"item in userMarkList"
:key=
"item"
:value=
"item"
:label=
"item"
></el-option>
</el-select>
</ElFormItem>
<ElFormItem
label=
"批次号"
>
<ElInput
v-model=
"searchForm.batchArrangeNumber"
placeholder=
"批次号"
clearable
style=
"width: 150px"
/>
</ElFormItem>
<ElFormItem
label=
"库存SKU"
>
<ElInput
v-model
.
trim=
"searchForm.thirdSkuCode"
placeholder=
"库存SKU"
clearable
style=
"width: 150px"
></ElInput>
</ElFormItem>
<ElFormItem
label=
"Variant SKU"
>
<ElInput
v-model
.
trim=
"searchForm.sku"
placeholder=
"Variant SKU"
clearable
style=
"width: 150px"
></ElInput>
</ElFormItem>
<!--
<ElFormItem
label=
"Base SKU"
>
<ElInput
v-model
.
trim=
"searchForm.baseSku"
placeholder=
" Base SKU"
clearable
style=
"width: 150px"
></ElInput>
</ElFormItem>
-->
</ElForm>
<template
#
reference
>
<el-button
type=
"warning"
@
click=
"searchVisible = !searchVisible"
>
<el-icon
v-if=
"searchVisible"
>
<CaretTop
/>
</el-icon>
<el-icon
v-else
>
<CaretBottom
/>
</el-icon>
</el-button>
</
template
>
</ElPopover>
</ElFormItem>
<ElFormItem>
<span>
<ElButton
link
@
click=
"resetSearchForm"
style=
"font-size: 12px"
><span
title=
"重置查询条件"
>
重置
</span></ElButton
>
</span>
</ElFormItem>
<ElFormItem>
<span>
<ElButton
type=
"primary"
@
click=
"search"
>
查询
</ElButton>
</span>
</ElFormItem>
<ElFormItem>
<span>
<ElButton
type=
"primary"
@
click=
"getOrderByIdApi('getPrintOrder')"
>
获取打印面单
</ElButton
>
</span>
</ElFormItem>
<ElFormItem>
<ElButton
type=
"success"
@
click=
"exportData"
>
导出
</ElButton>
</ElFormItem>
</ElForm>
</el-card>
</template>
<
template
#
bottom
>
<el-card
style=
"height: 100%"
>
<div
class=
"manage"
>
<div
class=
"table-flex"
>
<div
class=
"top-table"
>
<div
class=
"table-container"
>
<TableView
ref=
"tableRef"
:columns=
"tableColumns"
:serial-numberable=
"true"
:selectionable=
"true"
:paginated-data=
"tableData"
highlight-current-row
@
row-click=
"rowClick"
@
selection-change=
"handleSelectionChange"
>
<template
#
status=
"
{ row }">
<div>
{{
getStatus
(
row
.
status
)
}}
</div>
</
template
>
<
template
#
shipmentType=
"{ row }"
>
{{
[
'自有物流'
,
'工厂物流'
][
row
.
shipmentType
]
}}
</
template
>
</TableView>
</div>
<div
class=
"pagination"
>
<el-pagination
size=
"small"
v-model:current-page=
"pagination.currentPage"
v-model:page-size=
"pagination.pageSize"
:page-sizes=
"[50, 100, 150, 200]"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"pagination.total"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
/>
</div>
</div>
</div>
</div>
</el-card>
</template>
<
template
#
other
>
<div
class=
"bottom-table"
>
<el-tabs>
<el-tab-pane
label=
"商品明细"
>
<TableView
ref=
"goodsRef"
v-loading=
"goodsLoading"
:columns=
"goodsColumns"
:serial-numberable=
"true"
:paginated-data=
"goodsData"
>
<template
#
productImg=
"
{ row }">
<ImageView
:src=
"row.variantImage"
width=
"30px"
height=
"30px"
/>
</
template
>
</TableView>
</el-tab-pane>
<el-tab-pane
label=
"操作日志"
@
tab-click=
"operationLog"
>
<div>
<el-button
:type=
"zoneType === 'Asia/Shanghai' ? 'primary' : ''"
size=
"small"
link
style=
"margin-left: 10px"
@
click=
"changeChinaTime('Asia/Shanghai')"
>
北京时间
</el-button
>
<el-button
:type=
"zoneType === 'America/New_York' ? 'primary' : ''"
size=
"small"
link
style=
"margin-left: 10px"
@
click=
"changeChinaTime('America/New_York')"
>
新泽西时间
</el-button
>
<el-button
:type=
"zoneType === 'America/Los_Angeles' ? 'primary' : ''"
size=
"small"
link
style=
"margin-left: 10px"
@
click=
"changeChinaTime('America/Los_Angeles')"
>
洛杉矶时间
</el-button
>
</div>
<LogList
v-loading=
"logLoading"
:log-list=
"logList"
style=
"font-size: 14px; height: 100%"
/>
</el-tab-pane>
</el-tabs>
</div>
</template>
</split-div>
<ElDialog
v-model=
"exportVisible"
title=
"导出选项"
width=
"500px"
:close-on-click-modal=
"false"
>
<el-form
:model=
"exportForm"
label-width=
"80px"
>
<el-form-item
label=
""
prop=
"resource"
>
<el-radio-group
v-model=
"exportForm.resource"
>
<el-radio
:label=
"0"
>
导出本页
</el-radio>
<el-radio
:label=
"1"
>
导出选中
</el-radio>
<el-radio
:label=
"2"
>
全部
</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"exportVisible = false"
>
取消
</el-button>
<el-button
:loading=
"exportLoading"
type=
"primary"
@
click=
"submitExportForm"
>
确认
</el-button
>
</span>
</
template
>
</ElDialog>
<ResultInfo
ref=
"resultRefs"
:list=
"resultInfo"
@
confirm=
"resultConfirm"
></ResultInfo>
</template>
<
style
scoped
lang=
"scss"
>
::v-deep
(
.search-form
)
{
.el-form-item
{
margin-bottom
:
10px
;
margin-right
:
14px
;
}
}
.el-card
{
::v-deep(.el-card__body)
{
padding
:
10px
;
padding-bottom
:
0
;
height
:
100%
;
}
}
.manage
{
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
.header
{
margin-bottom
:
10px
;
}
.table-flex
{
flex
:
1
;
flex-shrink
:
0
;
overflow
:
hidden
;
display
:
flex
;
flex-direction
:
column
;
}
.right-table
{
flex
:
1
;
margin-left
:
10px
;
flex-shrink
:
0
;
}
.top-table
{
height
:
100%
;
display
:
flex
;
width
:
100%
;
flex-direction
:
column
;
.pagination
{
display
:
flex
;
margin
:
10px
0
;
justify-content
:
center
;
}
.table-container
{
flex
:
1
;
flex-shrink
:
0
;
overflow
:
hidden
;
}
}
}
.bottom-table
{
height
:
100%
;
background
:
white
;
box-sizing
:
border-box
;
padding
:
10px
;
::v-deep(.el-tabs)
{
height
:
100%
;
display
:
flex
;
.el-tabs__content
{
flex
:
1
;
flex-shrink
:
0
;
.el-tab-pane
{
height
:
100%
;
ul
{
height
:
100%
;
}
}
}
}
}
</
style
>
src/views/order/podCN/index.vue
View file @
294bf78b
...
...
@@ -4754,7 +4754,6 @@ watch(
}
}
)
}
)
console
.
log
(
tableData
.
value
,
'@@@@'
,
newData
)
}
,
{
deep
:
true
,
immediate
:
true
}
,
// 添加immediate确保初始化时执行
)
...
...
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