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
a5e986f4
Commit
a5e986f4
authored
Aug 27, 2025
by
wuqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pod-cn完成
parent
9c8ec360
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
160 additions
and
125 deletions
+160
-125
src/types/api/podCnOrder.ts
+4
-0
src/views/order/podCN/index.vue
+156
-124
src/views/order/podUs/index.vue
+0
-1
No files found.
src/types/api/podCnOrder.ts
View file @
a5e986f4
...
...
@@ -77,6 +77,9 @@ export interface PodCnOrderListData {
updateTime
?:
string
remark
?:
string
|
null
userMark
?:
string
serviceAmount
?:
number
|
null
prepaidAmount
?:
number
|
null
actualAmount
?:
number
|
null
version
?:
number
productList
?:
ProductList
[]
orderNumber
?:
string
...
...
@@ -100,6 +103,7 @@ export interface ProductList {
variantImage
?:
string
craftPrice
?:
number
craftCode
?:
string
previewImgs
?:
[]
platform
?:
string
imageAry
?:
string
designImages
?:
string
...
...
src/views/order/podCN/index.vue
View file @
a5e986f4
...
...
@@ -181,7 +181,7 @@
</el-select>
</ElFormItem>
<ElFormItem
label=
"生产端"
>
<
!--
<
ElFormItem
label=
"生产端"
>
<ElSelect
v-model=
"searchForm.productionClient"
placeholder=
"生产端"
...
...
@@ -196,7 +196,7 @@
:label=
"`$
{item.remark}(${item.code})`"
>
</ElOption>
</ElSelect>
</ElFormItem>
</ElFormItem>
-->
<ElFormItem
label=
"Variant SKU"
>
<ElInput
v-model
.
trim=
"searchForm.sku"
...
...
@@ -306,7 +306,10 @@
转至待确认
</ElButton>
</span>
<span
v-if=
"status === 'EXCEPTION_ORDER'&&exceptionStatus === 3"
class=
"item"
>
<span
v-if=
"status === 'EXCEPTION_ORDER' && exceptionStatus === 3"
class=
"item"
>
<ElButton
type=
"warning"
@
click=
"asyncOrderAddress"
>
同步收货地址
</ElButton>
...
...
@@ -787,17 +790,31 @@
:key=
"item"
class=
"goods-item"
>
<div
class=
"goods-item-img"
>
<img
:src=
"item.variantImage"
alt=
"商品图片"
/>
<div
class=
"goods-item-img"
style=
"display: flex; flex-direction: column"
>
<div
v-if=
"item.customizedQuantity"
class=
"triangle-box"
:title=
"`类型:$
{getQuantityText(
item.customizedQuantity,
)}面`"
v-for=
"img in item.previewImgs"
:key=
"img"
style=
"text-align: center"
>
<div
class=
"multi-text"
>
{{
getQuantityText
(
item
.
customizedQuantity
)
}}
<img
:src=
"img.url"
alt=
"商品图片"
style=
"cursor: pointer"
@
click=
"handlePictureCardPreview(img.url)"
/>
<div
v-if=
"item.customizedQuantity"
class=
"triangle-box"
:title=
"`类型:$
{getQuantityText(
item.customizedQuantity,
)}面`"
>
<div
class=
"multi-text"
>
{{
getQuantityText
(
item
.
customizedQuantity
)
}}
</div>
</div>
</div>
</div>
...
...
@@ -934,15 +951,15 @@
</div>
</div>
<div
class=
"goods-item-info"
>
<div
class=
"goods-item-info-item"
>
<
!--
<
div
class=
"goods-item-info-item"
>
<span
class=
"goods-item-info-item-label"
>
价格¥:
</span>
<span
class=
"goods-item-info-item-value"
>
{{
item
.
productPrice
}}
</span>
</div>
</div>
-->
<div
class=
"goods-item-info-item"
>
<span
class=
"goods-item-info-item-label"
>
模板
金额
¥:
</span
>
模板
单价
¥:
</span
>
<span
class=
"goods-item-info-item-value"
>
{{
item
.
templatePrice
}}
...
...
@@ -950,7 +967,7 @@
</div>
<div
class=
"goods-item-info-item"
>
<span
class=
"goods-item-info-item-label"
>
工艺
金额
¥:
</span
>
工艺
单价
¥:
</span
>
<span
class=
"goods-item-info-item-value"
>
{{
item
.
craftPrice
}}
...
...
@@ -958,10 +975,10 @@
</div>
<div
class=
"goods-item-info-item"
>
<span
class=
"goods-item-info-item-label"
>
付款金额
¥:
</span
>
单件价格
¥:
</span
>
<span
class=
"goods-item-info-item-value"
>
{{
item
.
payAmount
}}
{{
calculatedPrice
(
item
)
}}
</span>
</div>
...
...
@@ -1112,9 +1129,7 @@
</span>
</div>
<div
v-if=
"
row.status !== 'TO_BE_CONFIRMED'
"
v-if=
"row.status !== 'TO_BE_CONFIRMED'"
class=
"order-detail-item"
>
<span
class=
"order-detail-item-label"
>
发货仓库:
</span>
...
...
@@ -1171,17 +1186,56 @@
<div
class=
"order-price-item"
>
<span
class=
"order-price-item-label"
>
商品总价¥:
</span>
<span
class=
"order-price-item-value"
>
{{
row
.
total
Amount
}}
{{
row
.
product
Amount
}}
</span>
</div>
<div
v-if=
"row.status !== 'TO_BE_CONFIRMED'"
<div
v-if=
"row.serviceAmount"
class=
"order-price-item"
>
<span
class=
"order-price-item-label"
>
操作费¥:
</span>
<span
class=
"order-price-item-value"
>
{{
row
.
serviceAmount
}}
<el-tooltip
class=
"box-item"
effect=
"dark"
content=
"根据商品的数量计算首件2元,每多一件加价0.5元,上限5元"
placement=
"top"
>
<el-icon
color=
"#E6A23C"
><QuestionFilled
/></el-icon>
</el-tooltip>
</span>
</div>
<!-- v-if="
[
'TO_BE_CONFIRMED',
'EXCEPTION_ORDER',
'STOCK_OUT',
'CREATE_LOGISTICS',
'WAIT_SHIPMENT',
'INTERCEPTED',
].includes(status)
" -->
<div
class=
"order-price-item"
>
<span
class=
"order-price-item-label"
>
预收运费¥:
</span>
<span
class=
"order-price-item-value"
>
{{
row
.
prepaidAmount
||
0
}}
</span>
</div>
<!--
<div
v-if=
"
['WAIT_TRACK', 'IN_TRANSIT', 'COMPLETE', 'CANCEL'].includes(
status,
)
"
class=
"order-price-item"
>
<span
class=
"order-price-item-label"
>
物流运费¥:
</span>
<span
class=
"order-price-item-value"
>
{{
row
.
payFreight
||
0
}}
{{
row
.
actualAmount
||
0
}}
</span>
</div>
-->
<div
class=
"order-price-item"
>
<span
class=
"order-price-item-label"
>
合计¥:
</span>
<span
class=
"order-price-item-value"
>
{{
totalAmountPrice
(
row
)
}}
</span>
</div>
</div>
...
...
@@ -1435,26 +1489,9 @@
>
{{
cardItem
?.
factorySubOrderNumber
}}
<
/span
>
<
el
-
icon
class
=
"icon"
style
=
"margin-left: 3px"
size
=
"14"
@
click
=
"copy(cardItem?.factorySubOrderNumber || '')"
>
<
DocumentCopy
/>
<
/el-icon
>
<
/template
>
<
template
#
operations
>
<
div
style
=
"position: absolute; top: -35px; right: 2px"
v
-
if
=
"cardItem.platform"
>
<
img
:
src
=
"`/images/icon/${getPlatformImg(cardItem.platform)
}
`"
style
=
"height: 30px"
/>
<
/div
>
<
div
v
-
if
=
"cardItem?.customizedQuantity"
class
=
"customizedQuantity"
:
title
=
"`类型:${getQuantityText(
...
...
@@ -1517,21 +1554,11 @@
{{
cardItem
?.
userMark
}}
<
/span
>
<
/el-tooltip
>
<
b
v
-
if
=
"cardItem"
:
style
=
"{
color:
(Number(cardItem.customizedQuantity) || 0) > 1
? 'red'
: '#67C23A',
}
"
>
{{
(
Number
(
cardItem
.
customizedQuantity
)
||
0
)
>
1
?
'多'
:
'单'
}}
<
/b
>
<
img
v
-
if
=
"cardItem.platform"
:
src
=
"`/images/icon/${getPlatformImg(cardItem.platform)
}
`"
style
=
"width: 30px; height: 30px"
/>
<
/div
>
<
/div
>
<
/template
>
...
...
@@ -1570,16 +1597,9 @@
<
div
:
title
=
"`variant SKU: ${cardItem?.variantSku || ''
}
`"
class
=
"grid-item-value orderNumber"
@
click
.
stop
=
"copy(cardItem?.variantSku || '')"
>
{{
cardItem
?.
variantSku
}}
<
el
-
icon
class
=
"icon"
style
=
"margin-left: 3px"
size
=
"14"
@
click
=
"copy(cardItem?.variantSku || '')"
>
<
DocumentCopy
/>
<
/el-icon
>
<
/div
>
<
/div
>
<
div
v
-
if
=
"status !== 'TO_BE_ARRANGE'"
class
=
"grid-item"
>
...
...
@@ -1607,16 +1627,9 @@
<
div
:
title
=
"`库存SKU:${cardItem?.thirdSkuCode || ''
}
`"
class
=
"grid-item-value orderNumber"
@
click
.
stop
=
"copy(cardItem?.thirdSkuCode || '')"
>
{{
cardItem
?.
thirdSkuCode
}}
<
el
-
icon
class
=
"icon"
style
=
"margin-left: 3px"
size
=
"14"
@
click
=
"copy(cardItem?.thirdSkuCode || '')"
>
<
DocumentCopy
/>
<
/el-icon
>
<
/div
>
<
/div
>
<
div
class
=
"grid-item"
>
...
...
@@ -1642,43 +1655,22 @@
class
=
"grid-item"
:
title
=
"`店铺单号:${cardItem?.shopNumber || ''
}
`"
>
<
div
class
=
"grid-item-value orderNumber"
>
<
div
class
=
"grid-item-value orderNumber"
@
click
.
stop
=
"copy(cardItem?.shopNumber || '')"
>
{{
cardItem
?.
shopNumber
}}
<
el
-
icon
class
=
"icon"
style
=
"margin-left: 3px"
size
=
"14"
@
click
=
"copy(cardItem?.shopNumber || '')"
>
<
DocumentCopy
/>
<
/el-icon
>
<
/div
>
<
/div
>
<!--
<
div
class
=
"grid-item"
title
=
"订单号"
>
<
span
class
=
"grid-item-value"
@
click
=
"copy(cardItem?.factoryOrderNumber || '')"
>
{{
cardItem
?.
factoryOrderNumber
}}
<
/span
>
<
/div> --
>
<
div
class
=
"grid-item"
>
<
div
:
title
=
"`第三方生产单号:${cardItem?.thirdSubOrderNumber
}
`"
class
=
"grid-item-value orderNumber"
@
click
.
stop
=
"
copy(String(cardItem?.thirdSubOrderNumber || ''))
"
>
{{
cardItem
?.
thirdSubOrderNumber
}}
<
el
-
icon
class
=
"icon"
style
=
"margin-left: 3px"
size
=
"14"
@
click
.
stop
=
"
copy(String(cardItem?.thirdSubOrderNumber || ''))
"
>
<
DocumentCopy
/>
<
/el-icon
>
<
/div
>
<
/div
>
<
div
...
...
@@ -1686,16 +1678,11 @@
class
=
"grid-item"
:
title
=
"`批次号:${cardItem?.batchArrangeNumber || ''
}
`"
>
<
div
class
=
"grid-item-value orderNumber"
>
<
div
class
=
"grid-item-value orderNumber"
@
click
.
stop
=
"copy(cardItem?.batchArrangeNumber || '')"
>
{{
cardItem
?.
batchArrangeNumber
}}
<
el
-
icon
class
=
"icon"
style
=
"margin-left: 3px"
size
=
"14"
@
click
=
"copy(cardItem?.batchArrangeNumber || '')"
>
<
DocumentCopy
/>
<
/el-icon
>
<
/div
>
<
/div
>
<
div
v
-
if
=
"cardItem.isReplenishment"
class
=
"grid-item"
>
...
...
@@ -2094,6 +2081,7 @@ import {
CaretTop
,
ArrowDown
,
WarningFilled
,
QuestionFilled
,
}
from
'@element-plus/icons-vue'
import
{
getCardOrderList
,
...
...
@@ -2182,6 +2170,7 @@ import RightClickMenu from '@/components/RightClickMenu.vue'
import
ResultInfo
from
'./components/ResultInfo.vue'
import
{
isArray
,
isString
}
from
'@/utils/validate'
import
platformJson
from
'../../../json/platform.json'
import
BigNumber
from
'bignumber.js'
import
{
useRouter
,
type
NavigationGuardNext
,
...
...
@@ -2202,7 +2191,28 @@ declare global {
}
}
const
tabsNav
=
ref
<
Tab
[]
>
()
const
calculatedPrice
=
(
item
:
ProductList
)
=>
{
const
templatePrice
=
new
BigNumber
(
item
.
templatePrice
||
0
)
const
craftPrice
=
new
BigNumber
(
item
.
craftPrice
||
0
)
return
templatePrice
.
plus
(
craftPrice
).
toString
()
}
// const PREPAID_STATUSES = [
// 'TO_BE_CONFIRMED',
// 'EXCEPTION_ORDER',
// 'STOCK_OUT',
// 'CREATE_LOGISTICS',
// 'WAIT_SHIPMENT',
// 'INTERCEPTED',
// ] as const
const
totalAmountPrice
=
(
item
:
PodCnOrderListData
):
string
=>
{
// const usePrepaid = PREPAID_STATUSES.includes(status.value as typeof PREPAID_STATUSES[number])
const
productAmount
=
new
BigNumber
(
item
?.
productAmount
??
0
)
const
serviceAmount
=
new
BigNumber
(
item
?.
serviceAmount
??
0
)
// const freightAmount = usePrepaid ? item?.prepaidAmount : item?.actualAmount
const
payFreight
=
new
BigNumber
(
item
?.
prepaidAmount
??
0
)
return
productAmount
.
plus
(
serviceAmount
).
plus
(
payFreight
).
toString
()
}
const
countryList
=
ref
([])
const
currentRow
=
ref
<
AddressInfo
>
({
receiverName
:
''
,
...
...
@@ -3607,7 +3617,8 @@ const downloadMaterial = async () => {
if
(
status
.
value
===
'IN_PRODUCTION'
||
status
.
value
===
'PICKING'
||
status
.
value
===
'TO_BE_REPLENISHMENT'
status
.
value
===
'TO_BE_REPLENISHMENT'
||
status
.
value
===
'TO_BE_ARRANGE'
)
{
selectedIds
=
cardSelection
.
value
.
map
((
item
:
ProductList
)
=>
item
.
id
)
...
...
@@ -4222,14 +4233,36 @@ const logisticsSubmit = () => {
}
)
}
watch
(
()
=>
status
.
value
,
(
val
)
=>
{
const
currentUrl
=
new
URL
(
window
.
location
.
href
)
currentUrl
.
searchParams
.
set
(
'tab'
,
val
)
//
() => status.value,
//
(val) =>
{
//
const currentUrl = new URL(window.location.href)
//
currentUrl.searchParams.set('tab', val)
window
.
history
.
pushState
({
}
,
''
,
currentUrl
)
// window.history.pushState(
{
}
,
''
,
currentUrl
)
//
}
,
//
{
immediate
:
true
}
,
()
=>
[...(
tableData
.
value
as
PodCnOrderListData
[])],
// 创建新数组避免直接修改原始数据
(
newData
)
=>
{
if
(
!
newData
?.
length
)
return
newData
.
forEach
((
order
)
=>
{
// 使用可选链和空值合并简化判断
order
.
productList
?.
forEach
((
product
)
=>
{
if
(
!
product
.
previewImgs
&&
product
.
imageAry
)
{
try
{
product
.
previewImgs
=
JSON
.
parse
(
product
.
imageAry
)?.
filter
(
(
el
:
{
title
:
string
}
)
=>
el
.
title
,
)
||
[]
}
catch
(
error
)
{
console
.
error
(
'JSON解析失败:'
,
error
)
product
.
previewImgs
=
[]
}
}
}
)
}
)
console
.
log
(
tableData
.
value
,
'@@@@'
,
newData
)
}
,
{
immediate
:
true
}
,
{
deep
:
true
,
immediate
:
true
}
,
// 添加immediate确保初始化时执行
)
onMounted
(()
=>
{
...
...
@@ -4470,15 +4503,15 @@ useRouter().beforeEach((to, from, next) => {
.
goods
-
item
{
display
:
grid
;
grid
-
template
-
columns
:
100
px
1
fr
minmax
(
1
80
px
,
1
fr
)
18
0
px
;
gap
:
20
px
;
grid
-
template
-
columns
:
100
px
1
fr
minmax
(
1
50
px
,
1
fr
)
15
0
px
;
gap
:
15
px
;
.
goods
-
item
-
img
{
width
:
100
px
;
height
:
100
px
;
//
width: 100px;
//
height: 100px;
position
:
relative
;
img
{
width
:
100
%
;
width
:
65
%
;
}
}
...
...
@@ -4565,7 +4598,6 @@ useRouter().beforeEach((to, from, next) => {
display
:
flex
;
height
:
30
px
;
gap
:
10
px
;
padding
:
10
px
6
px
0
;
.
item
-
image
{
width
:
30
px
;
height
:
30
px
;
...
...
src/views/order/podUs/index.vue
View file @
a5e986f4
...
...
@@ -547,7 +547,6 @@
<ElButton
type=
"warning"
@
click=
"arrangeFinish"
>
排单完成
</ElButton>
</span>
</ElFormItem>
<ElFormItem
v-if=
"status !== 'BATCH_DOWNLOAD' && status !== 'WAIT_SHIPMENT'"
>
...
...
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