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
2e2b72b4
Commit
2e2b72b4
authored
Mar 21, 2025
by
zhuzhequan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
订单
parent
2d577754
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
439 additions
and
3 deletions
+439
-3
src/api/podOrder.ts
+11
-0
src/types/api/order.ts
+2
-0
src/views/order/pod/OrderDetail.vue
+130
-0
src/views/order/pod/ProductInfo.vue
+265
-0
src/views/order/pod/deliveryOrderList.vue
+29
-1
src/views/order/pod/index.vue
+2
-2
No files found.
src/api/podOrder.ts
View file @
2e2b72b4
...
@@ -185,6 +185,17 @@ export function printDeliveryNote(data: string[], userMark?: string) {
...
@@ -185,6 +185,17 @@ export function printDeliveryNote(data: string[], userMark?: string) {
},
},
)
)
}
}
export
function
getPodJomallOrderByFactoryNumber
(
factoryOrderNumber
:
string
)
{
return
axios
.
get
<
never
,
BaseRespData
<
OrderData
>>
(
'factory/podJomallOrder/getPodJomallOrderByFactoryNumber'
,
{
params
:{
factoryOrderNumber
}
},
)
}
export
function
updateRemarkApi
(
id
:
number
,
remark
:
string
)
{
export
function
updateRemarkApi
(
id
:
number
,
remark
:
string
)
{
return
axios
.
get
<
never
,
BaseRespData
<
never
>>
(
return
axios
.
get
<
never
,
BaseRespData
<
never
>>
(
'factory/podJomallOrder/setRemark'
,
'factory/podJomallOrder/setRemark'
,
...
...
src/types/api/order.ts
View file @
2e2b72b4
...
@@ -27,7 +27,9 @@ export interface Tab {
...
@@ -27,7 +27,9 @@ export interface Tab {
export
interface
OrderData
{
export
interface
OrderData
{
id
:
number
id
:
number
namespace
?:
string
namespace
?:
string
factoryNo
?:
string
erpId
?:
number
erpId
?:
number
thirdProductAmount
?:
number
count
?:
number
count
?:
number
orderNumber
?:
string
orderNumber
?:
string
erpOrderNumber
?:
string
erpOrderNumber
?:
string
...
...
src/views/order/pod/OrderDetail.vue
0 → 100644
View file @
2e2b72b4
<
template
>
<div
class=
"order-detail-order"
>
<div
class=
"order-detail_order-info"
>
<div
class=
"order-detail_order-info--title title"
>
订单详情
</div>
<div
class=
"order-detail_order-info--content"
>
<div
class=
"order-detail_order-info--content-item flex"
>
<span
class=
"order-detail_order-info__label label"
>
主单号:
</span>
<span
class=
"order-detail_order-info__value value flex-1"
>
{{
orderDetailData
.
factoryOrderNumber
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_order-info--content-item flex"
>
<span
class=
"order-detail_order-info__label label"
>
工厂:
</span>
<span
class=
"order-detail_order-info__value value flex-1"
>
{{
orderDetailData
.
factoryNo
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_order-info--content-item flex"
>
<span
class=
"order-detail_order-info__label label"
>
收货人:
</span>
<span
class=
"order-detail_order-info__value value flex-1"
>
{{
orderDetailData
.
lanshouName
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_order-info--content-item flex"
>
<span
class=
"order-detail_order-info__label label"
>
收货人电话:
</span>
<span
class=
"order-detail_order-info__value value flex-1"
>
{{
orderDetailData
.
lanshouPhone
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_order-info--content-item flex"
>
<span
class=
"order-detail_order-info__label label"
>
邮编:
</span>
<span
class=
"order-detail_order-info__value value flex-1"
>
{{
orderDetailData
.
lanshouPost
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_order-info--content-item flex"
>
<span
style=
"white-space: nowrap;"
class=
"order-detail_order-info__label label"
>
收货地址:
</span>
<span
style=
"white-space: nowrap;"
:title=
"orderDetailData.lanshouAddress"
>
{{
orderDetailData
.
lanshouAddress
||
'--'
}}
</span
>
</div>
</div>
</div>
<div
class=
"order-detail_price-info"
>
<div
class=
"order-detail_price-info--title title"
>
实付款
</div>
<div
class=
"order-detail_price-info--content"
>
<div
class=
"order-detail_price-info--content-item flex"
>
<span
class=
"order-detail_price-info__label label"
>
商品价:
</span>
<span
class=
"order-detail_price-info__value label flex-1"
>
{{
orderDetailData
.
thirdProductAmount
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_price-info--content-item flex"
>
<span
class=
"order-detail_price-info__label label"
>
运费¥:
</span>
<span
class=
"order-detail_price-info__value value flex-1"
>
{{
orderDetailData
.
carriageAmount
||
'--'
}}
</span>
</div>
<div
class=
"order-detail_price-info--content-item flex"
>
<span
class=
"order-detail_price-info__label label"
>
小计¥:
</span>
<span
class=
"order-detail_price-info__value value flex-1"
>
{{
orderDetailData
.
totalAmount
||
'--'
}}
</span>
</div>
</div>
</div>
<div
class=
"order-detail_goods-info"
>
<div
class=
"order-detail_goods-info--title title"
>
商品详情
</div>
<div
class=
"order-detail_goods-info--content"
>
<ProductInfo
:is-detail=
"true"
:row=
"orderDetailData"
/>
</div>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
OrderData
}
from
'@/types/api/order'
import
{
PropType
}
from
'vue'
import
ProductInfo
from
'./ProductInfo.vue'
defineProps
({
orderDetailData
:
{
type
:
Object
as
PropType
<
OrderData
>
,
default
:
()
=>
{},
},
})
</
script
>
<
style
lang=
"scss"
scoped
>
.order-detail-order
{
.title
{
font-size
:
18px
;
font-weight
:
500
;
}
}
.order-detail_order-info--content
,
.order-detail_price-info--content
{
padding
:
10px
0
;
display
:
grid
;
grid-template-columns
:
repeat
(
3
,
1
fr
);
gap
:
10px
;
font-size
:
14px
;
.label
{
color
:
#606266
;
margin-right
:
6px
;
}
.value
{
color
:
#333
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
}
.order-detail_goods-info--content
{
padding
:
10px
0
;
font-size
:
14px
;
:deep(.order-list-expand_item)
{
padding
:
10px
0
;
}
}
</
style
>
src/views/order/pod/ProductInfo.vue
0 → 100644
View file @
2e2b72b4
<
template
>
<div
v-for=
"item in row.productList?.slice(
0,
row.moreable || isDetail ? row.productList.length : 2,
)"
:key=
"item.id"
class=
"order-list-expand_item"
>
<div
class=
"order-list-expand_item_content"
>
<div
class=
"order-list-expand_item_img"
>
<!--
<img
:src=
"item.variantImage"
style=
"width: 100%; height: 100%"
/>
-->
<ImageView
:src=
"item.variantImage"
width=
"98px"
height=
"98px"
/>
</div>
<div
class=
"order-list-expand_item_info"
>
<div
:title=
"item?.productName || '--'"
class=
"order-list-expand_item_info_title"
style=
"font-weight: bold"
>
<span
class=
"order-list-expand_item_label"
>
商品名:
</span>
<div
class=
"order-list-expand_item_value"
>
{{
item
?.
productName
||
'--'
}}
 
<img
v-show=
"
status == 4 &&
item?.num !== undefined &&
item?.shipmentNum !== undefined &&
item?.notPassNum !== undefined &&
(item.num || 0) -
((item.shipmentNum || 0) - (item.notPassNum || 0)) >
0 &&
item.notPassNum > 0
"
src=
"@/assets/images/jiaji.svg"
alt=
""
width=
"24"
/>
</div>
</div>
<div
:title=
"item.baseSku || ''"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
Base SKU:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
baseSku
||
'--'
}}
<el-icon
class=
"icon"
@
click=
"copy(item.baseSku || '')"
><DocumentCopy
/></el-icon
></span>
</div>
<div
:title=
"item.variantSku || ''"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
Variant SKU:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
variantSku
||
'--'
}}
<el-icon
class=
"icon"
@
click=
"copy(item.variantSku || '')"
><DocumentCopy
/></el-icon>
</span>
</div>
<div
:title=
"item.shopNumber || ''"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
店铺单号:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
shopNumber
||
'--'
}}
<el-icon
class=
"icon"
@
click=
"copy(item.shopNumber || '')"
><DocumentCopy
/></el-icon>
</span>
</div>
<div
:title=
"
isPod ? item.factorySubOrderNumber || '' : item.subOrderNumber || ''
"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
生产单号:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
factorySubOrderNumber
}}
<el-icon
class=
"icon"
@
click=
"
copy(
isPod
? item.factorySubOrderNumber || ''
: item.subOrderNumber || '',
)
"
><DocumentCopy
/></el-icon>
</span>
</div>
<div
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
发货状态:
</span>
<span
v-if=
"(item.shipmentNum || 0) - (item.notPassNum || 0) === item.num"
class=
"order-list-expand_item_value"
>
<el-tag
effect=
"dark"
type=
"success"
>
已发货
</el-tag>
</span>
<span
v-if=
"
item.num !== (item.shipmentNum || 0) - (item.notPassNum || 0) &&
(item.shipmentNum || 0) > 0
"
class=
"order-list-expand_item_value"
>
<el-tag
effect=
"dark"
>
部分发货
</el-tag>
</span>
<span
v-if=
"item.shipmentNum === 0"
class=
"order-list-expand_item_value"
>
<el-tag
effect=
"dark"
type=
"danger"
>
未发货
</el-tag>
</span>
</div>
<div
v-if=
"!isPod"
:title=
"item.material || ''"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
工艺:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
processName
||
'--'
}}
</span>
</div>
<div
:title=
"item.remark || ''"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
备注:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
remark
||
'--'
}}
</span>
</div>
</div>
<div
class=
"order-list-expand_item_price"
>
<div
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
单价:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
price
||
'--'
}}
</span>
</div>
<div
class=
"order-list-expand_item_info_title font-bold"
>
<span
class=
"order-list-expand_item_label"
>
购买数:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
num
||
0
}}
</span>
</div>
<div
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
已发数:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
.
shipmentNum
||
0
}}
</span>
</div>
<div
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
未发数:
</span>
<span
v-if=
"!isPod"
class=
"order-list-expand_item_value"
>
{{
(
item
.
num
||
0
)
-
((
item
.
shipmentNum
||
0
)
-
(
item
.
notPassNum
||
0
))
}}
</span>
<span
v-else
class=
"order-list-expand_item_value"
>
{{
(
item
.
num
||
0
)
-
(
item
.
shipmentNum
||
0
)
}}
</span>
</div>
<div
v-if=
"isPod"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
工艺:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
?.
processName
||
'--'
}}
</span>
</div>
<div
v-if=
"isPod"
class=
"order-list-expand_item_info_title"
>
<span
class=
"order-list-expand_item_label"
>
工艺简称:
</span>
<span
class=
"order-list-expand_item_value"
>
{{
item
?.
process
||
'--'
}}
</span>
</div>
</div>
</div>
<div
class=
"operation"
>
<slot
name=
"operation"
:product-item=
"item"
></slot>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
import
ImageView
from
'@/components/ImageView.vue'
import
{
DocumentCopy
}
from
'@element-plus/icons-vue'
import
{
OrderData
}
from
'@/types/api/order'
import
{
PropType
}
from
'vue'
defineProps
({
row
:
{
type
:
Object
as
PropType
<
OrderData
>
,
default
:
()
=>
{},
},
isDetail
:
{
type
:
Boolean
,
default
:
false
,
},
status
:
{
type
:
[
Number
,
String
],
},
isPod
:
{
type
:
Boolean
,
default
:
false
,
},
})
const
copy
=
(
text
:
string
)
=>
{
navigator
.
clipboard
.
writeText
(
text
)
ElMessage
.
success
(
'复制成功'
)
}
</
script
>
<
style
lang=
"scss"
scoped
>
.order-list-expand_item
{
border-bottom
:
1px
solid
#eee
;
padding
:
20px
;
&
.operation
{
display
:
flex
;
justify-content
:
flex-end
;
gap
:
10px
;
}
}
.order-list-expand_item_content
{
display
:
flex
;
}
.order-list-expand_item
:last-child
{
border-bottom
:
0
;
}
.order-list-expand_item_img
{
width
:
100px
;
height
:
100px
;
margin-right
:
20px
;
border
:
1px
solid
#eee
;
}
.order-list-expand_item_info
{
flex
:
1
;
margin-right
:
20px
;
}
.order-list-expand_item_price
{
width
:
180px
;
}
.order-list-expand_item_info_title
{
line-height
:
26px
;
display
:
flex
;
align-items
:
center
;
}
.order-list-expand_item_label
{
margin-right
:
6px
;
}
.order-list-expand_item_value
{
flex
:
1
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
display
:
flex
;
align-items
:
center
;
}
</
style
>
src/views/order/pod/deliveryOrderList.vue
View file @
2e2b72b4
...
@@ -153,6 +153,9 @@
...
@@ -153,6 +153,9 @@
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
template
#
operate=
"{row}"
>
<el-button
type=
"text"
@
click=
"showDetail(row)"
>
查看详情
</el-button>
</
template
>
</TableView>
</TableView>
</div>
</div>
<ElPagination
<ElPagination
...
@@ -167,12 +170,21 @@
...
@@ -167,12 +170,21 @@
@
current-change=
"handleCurrentChange"
@
current-change=
"handleCurrentChange"
></ElPagination>
></ElPagination>
</div>
</div>
<ElDrawer
v-model=
"detailVisible"
title=
"查看详情"
direction=
"rtl"
size=
"40%"
:close-on-click-modal=
"false"
>
<OrderDetail
:order-detail-data=
"orderDetailData"
/>
</ElDrawer>
</div>
</div>
</template>
</template>
<
script
lang=
"tsx"
setup
>
<
script
lang=
"tsx"
setup
>
import
{
getUserMarkList
}
from
'@/api/auth'
import
{
getUserMarkList
}
from
'@/api/auth'
import
{
getDeliveryNoteList
,
printDeliveryNote
}
from
'@/api/podOrder'
import
{
getDeliveryNoteList
,
printDeliveryNote
,
getPodJomallOrderByFactoryNumber
}
from
'@/api/podOrder'
import
TableView
from
'@/components/TableView.vue'
import
TableView
from
'@/components/TableView.vue'
import
{
import
{
DeliveryNoteData
,
DeliveryNoteData
,
...
@@ -184,8 +196,12 @@ import { val } from '@/utils'
...
@@ -184,8 +196,12 @@ import { val } from '@/utils'
import
{
CellCls
}
from
'element-plus'
import
{
CellCls
}
from
'element-plus'
import
{
useValue
}
from
'@/utils/hooks/useValue'
import
{
useValue
}
from
'@/utils/hooks/useValue'
import
{
filePath
}
from
'@/api/axios'
import
{
filePath
}
from
'@/api/axios'
import
OrderDetail
from
'./OrderDetail.vue'
import
{
OrderData
}
from
'@/types/api/order.ts'
const
[
searchForm
,
resetSearchForm
]
=
useValue
<
PodDeliveryNoteSearchForm
>
({})
const
[
searchForm
,
resetSearchForm
]
=
useValue
<
PodDeliveryNoteSearchForm
>
({})
const
dateRange
=
ref
<
string
[]
>
([])
const
dateRange
=
ref
<
string
[]
>
([])
const
orderDetailData
=
ref
<
OrderData
|
undefined
>
()
const
detailVisible
=
ref
(
false
)
const
{
const
{
currentPage
,
currentPage
,
pageSize
,
pageSize
,
...
@@ -210,6 +226,13 @@ const nameSpaceList = ref<string[]>([])
...
@@ -210,6 +226,13 @@ const nameSpaceList = ref<string[]>([])
onMounted
(()
=>
{
onMounted
(()
=>
{
getNameSpaceList
()
getNameSpaceList
()
})
})
const
showDetail
=
async
(
row
:
DeliveryNoteData
)
=>
{
const
{
data
}
=
await
getPodJomallOrderByFactoryNumber
(
row
.
factoryOrderNumber
as
string
)
detailVisible
.
value
=
true
orderDetailData
.
value
=
data
}
const
getNameSpaceList
=
async
()
=>
{
const
getNameSpaceList
=
async
()
=>
{
try
{
try
{
const
res
=
await
getUserMarkList
()
const
res
=
await
getUserMarkList
()
...
@@ -250,6 +273,11 @@ const tableColumns = computed(() => {
...
@@ -250,6 +273,11 @@ const tableColumns = computed(() => {
prop
:
'logisticsInfo'
,
prop
:
'logisticsInfo'
,
width
:
280
,
width
:
280
,
slot
:
'logisticsInfo'
,
slot
:
'logisticsInfo'
,
},{
label
:
'操作'
,
prop
:
'action'
,
width
:
100
,
slot
:
'operate'
,
},
},
]
]
})
})
...
...
src/views/order/pod/index.vue
View file @
2e2b72b4
...
@@ -202,7 +202,7 @@
...
@@ -202,7 +202,7 @@
<
span
v
-
if
=
"['TO_BE_CONFIRMED','IN_PRODUCTION'].includes(status)"
class
=
"item"
>
<
span
v
-
if
=
"['TO_BE_CONFIRMED','IN_PRODUCTION'].includes(status)"
class
=
"item"
>
<
ElButton
type
=
"danger"
@
click
=
"voidedBtn"
>
作废
<
/ElButton
>
<
ElButton
type
=
"danger"
@
click
=
"voidedBtn"
>
作废
<
/ElButton
>
<
/span
>
<
/span
>
<
span
v
-
if
=
"
status === 'IN_PRODUCTION'
"
class
=
"item"
>
<
span
v
-
if
=
"
['WAIT_SHIPMENT','IN_PRODUCTION'].includes(status)
"
class
=
"item"
>
<
ElButton
type
=
"warning"
is
-
dark
@
click
=
"applyForReplacement"
>
<
ElButton
type
=
"warning"
is
-
dark
@
click
=
"applyForReplacement"
>
申请补胚
<
/ElButto
n
申请补胚
<
/ElButto
n
>
>
...
@@ -564,7 +564,7 @@
...
@@ -564,7 +564,7 @@
/><
/el-icon
>
/><
/el-icon
>
<
/div
>
<
/div
>
<
div
<
div
v
-
if
=
"
status === 'TO_BE_RECEIPT'
"
v
-
if
=
"
['PART_SHIPPING','TO_BE_RECEIPT' ].includes(status)
"
class
=
"operation-item"
class
=
"operation-item"
>
>
<
el
-
button
<
el
-
button
...
...
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