Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
4fddbcce
authored
Oct 02, 2023
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trade:完善订单详情
parent
588ce1c9
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
126 additions
and
72 deletions
+126
-72
src/api/mall/trade/order/index.ts
+12
-5
src/utils/constants.ts
+14
-0
src/views/mall/trade/order/detail/index.vue
+95
-62
src/views/mall/trade/order/form/OrderDeliveryForm.vue
+2
-2
src/views/mall/trade/order/form/OrderUpdateAddressForm.vue
+1
-1
src/views/mall/trade/order/form/OrderUpdatePriceForm.vue
+1
-1
src/views/mall/trade/order/form/OrderUpdateRemarkForm.vue
+1
-1
No files found.
src/api/mall/trade/order/index.ts
View file @
4fddbcce
...
...
@@ -41,15 +41,22 @@ export interface OrderVO {
refundPrice
?:
number
|
null
// 退款金额
couponId
?:
number
|
null
// 优惠劵编号
couponPrice
?:
number
|
null
// 优惠劵减免金额
vipPrice
?:
number
|
null
// VIP 减免金额
pointPrice
?:
number
|
null
// 积分抵扣的金额
receiverAreaName
?:
string
//收件人地区名字
items
?:
OrderItemRespVO
[]
// 订单项列表
// 用户信息
//
下单
用户信息
user
?:
{
id
?:
number
|
null
nickname
?:
string
avatar
?:
string
}
// 推广用户信息
brokerageUser
?:
{
id
?:
number
|
null
nickname
?:
string
avatar
?:
string
}
// 订单操作日志
logs
?:
OrderLogRespVO
[]
}
...
...
@@ -114,21 +121,21 @@ export interface DeliveryVO {
}
// 订单发货
export
const
delivery
=
async
(
data
:
DeliveryVO
)
=>
{
export
const
delivery
Order
=
async
(
data
:
DeliveryVO
)
=>
{
return
await
request
.
put
({
url
:
`/trade/order/delivery`
,
data
})
}
// 订单备注
export
const
updateRemark
=
async
(
data
:
any
)
=>
{
export
const
update
Order
Remark
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/trade/order/update-remark`
,
data
})
}
// 订单调价
export
const
updatePrice
=
async
(
data
:
any
)
=>
{
export
const
update
Order
Price
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/trade/order/update-price`
,
data
})
}
// 修改订单地址
export
const
updateAddress
=
async
(
data
:
any
)
=>
{
export
const
update
Order
Address
=
async
(
data
:
any
)
=>
{
return
await
request
.
put
({
url
:
`/trade/order/update-address`
,
data
})
}
src/utils/constants.ts
View file @
4fddbcce
...
...
@@ -375,3 +375,17 @@ export const BrokerageWithdrawTypeEnum = {
name
:
'支付宝'
}
}
/**
* 配送方式枚举
*/
export
const
DeliveryTypeEnum
=
{
EXPRESS
:
{
type
:
1
,
name
:
'快递发货'
},
PICK_UP
:
{
type
:
2
,
name
:
'到店自提'
}
}
src/views/mall/trade/order/detail/index.vue
View file @
4fddbcce
...
...
@@ -3,35 +3,21 @@
<!-- 订单信息 -->
<el-descriptions
title=
"订单信息"
>
<el-descriptions-item
label=
"订单号: "
>
{{
formData
.
no
}}
</el-descriptions-item>
<el-descriptions-item
label=
"配送方式: "
>
<dict-tag
:type=
"DICT_TYPE.TRADE_DELIVERY_TYPE"
:value=
"formData.deliveryType!"
/>
</el-descriptions-item>
<!-- TODO 营销活动待实现 -->
<el-descriptions-item
label=
"营销活动: "
>
秒杀活动
</el-descriptions-item>
<el-descriptions-item
label=
"买家: "
>
{{
formData
?.
user
?.
nickname
}}
</el-descriptions-item>
<el-descriptions-item
label=
"订单类型: "
>
<dict-tag
:type=
"DICT_TYPE.TRADE_ORDER_TYPE"
:value=
"formData.type!"
/>
</el-descriptions-item>
<el-descriptions-item
label=
"收货人: "
>
{{
formData
.
receiverName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"买家留言: "
>
{{
formData
.
userRemark
}}
</el-descriptions-item>
<el-descriptions-item
label=
"订单来源: "
>
<dict-tag
:type=
"DICT_TYPE.TERMINAL"
:value=
"formData.terminal!"
/>
</el-descriptions-item>
<el-descriptions-item
label=
"
联系电话: "
>
{{
formData
.
receiverMobile
}}
</el-descriptions-item>
<el-descriptions-item
label=
"
买家留言: "
>
{{
formData
.
userRemark
}}
</el-descriptions-item>
<el-descriptions-item
label=
"商家备注: "
>
{{
formData
.
remark
}}
</el-descriptions-item>
<el-descriptions-item
label=
"支付单号: "
>
{{
formData
.
payOrderId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"付款方式: "
>
<dict-tag
:type=
"DICT_TYPE.PAY_CHANNEL_CODE"
:value=
"formData.payChannelCode!"
/>
</el-descriptions-item>
<!--
<el-descriptions-item
label=
"买家: "
>
{{
formData
.
user
.
nickname
}}
</el-descriptions-item>
-->
<!-- TODO @puhui999:待实现:跳转会员 -->
<el-descriptions-item
label=
"收货地址: "
>
{{
formData
.
receiverAreaName
}}
{{
formData
.
receiverDetailAddress
}}
<el-link
v-clipboard:copy=
"formData.receiverAreaName + ' ' + formData.receiverDetailAddress"
v-clipboard:success=
"clipboardSuccess"
icon=
"ep:document-copy"
type=
"primary"
/>
<el-descriptions-item
label=
"推广用户: "
v-if=
"formData.brokerageUser"
>
{{
formData
.
brokerageUser
?.
nickname
}}
</el-descriptions-item>
</el-descriptions>
...
...
@@ -45,10 +31,18 @@
调整价格
</el-button>
<el-button
type=
"primary"
@
click=
"remark"
>
备注
</el-button>
<el-button
v-if=
"formData.status! === 10"
type=
"primary"
@
click=
"delivery"
>
<el-button
v-if=
"formData.status! === 10 && formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
type=
"primary"
@
click=
"delivery"
>
发货
</el-button>
<el-button
v-if=
"formData.status! === 10"
type=
"primary"
@
click=
"updateAddress"
>
<el-button
v-if=
"formData.status! === 10 && formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
type=
"primary"
@
click=
"updateAddress"
>
修改地址
</el-button>
</el-descriptions-item>
...
...
@@ -95,64 +89,91 @@
</el-row>
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"6"
>
<el-descriptions
:column=
"4"
>
<!-- 第一层 -->
<el-descriptions-item
label=
"商品总额: "
>
{{ fenToYuan(formData.totalPrice!) }}元
{{ fenToYuan(formData.totalPrice!) }}
元
</el-descriptions-item>
<el-descriptions-item
label=
"运费金额: "
>
{{ fenToYuan(formData.deliveryPrice!) }}元
{{ fenToYuan(formData.deliveryPrice!) }}
元
</el-descriptions-item>
<el-descriptions-item
label=
"订单调价: "
>
{{ fenToYuan(formData.adjustPrice!) }}元
{{ fenToYuan(formData.adjustPrice!) }}
元
</el-descriptions-item>
<el-descriptions-item
v-for=
"item in 1"
:key=
"item"
label-class-name=
"no-colon"
/>
<!-- 第二层 -->
<el-descriptions-item>
<
template
#
label
><span
style=
"color: red"
>
商品
优惠:
</span></
template
>
{{ fenToYuan(formData.couponPrice!) }}元
<
template
#
label
><span
style=
"color: red"
>
优惠劵
优惠:
</span></
template
>
{{ fenToYuan(formData.couponPrice!) }}
元
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
><span
style=
"color: red"
>
订单优惠:
</span></
template
>
{{ fenToYuan(formData.discountPrice!) }}元
<
template
#
label
><span
style=
"color: red"
>
VIP 优惠:
</span></
template
>
{{ fenToYuan(formData.vipPrice!) }} 元
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
><span
style=
"color: red"
>
活动优惠:
</span></
template
>
{{ fenToYuan(formData.discountPrice!) }} 元
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
><span
style=
"color: red"
>
积分抵扣:
</span></
template
>
{{ fenToYuan(formData.pointPrice!) }}元
{{ fenToYuan(formData.pointPrice!) }}
元
</el-descriptions-item>
<el-descriptions-item
v-for=
"item in 5"
:key=
"item"
label-class-name=
"no-colon"
/>
<!-- 占位 -->
<!-- 第三层 -->
<el-descriptions-item
v-for=
"item in 3"
:key=
"item"
label-class-name=
"no-colon"
/>
<el-descriptions-item
label=
"应付金额: "
>
{{ fenToYuan(formData.payPrice!) }}元
{{ fenToYuan(formData.payPrice!) }}
元
</el-descriptions-item>
</el-descriptions>
<!-- TODO 芋艿:需要改改 -->
<el-descriptions
:column=
"4"
title=
"物流信息"
>
<el-descriptions-item
label=
"物流公司: "
>
{{ deliveryExpressList.find((item) => item.id === formData.logisticsId)?.name }}
</el-descriptions-item>
<el-descriptions-item
label=
"运单号: "
>
{{ formData.logisticsNo }}
</el-descriptions-item>
<el-descriptions-item
label=
"发货时间: "
>
{{ formatDate(formData.deliveryTime!) }}
</el-descriptions-item>
<el-descriptions-item
label=
"物流状态: "
>
<!-- TODO 物流状态怎么获取? -->
<dict-tag
:type=
"DICT_TYPE.TRADE_ORDER_STATUS"
:value=
"formData.deliveryStatus!"
/>
</el-descriptions-item>
<!-- 占位 4 -->
<el-descriptions-item
v-for=
"item in 4"
:key=
"item"
label-class-name=
"no-colon"
/>
<el-descriptions-item
label=
"物流详情: "
>
<el-timeline>
<el-timeline-item
v-for=
"(express, index) in expressTrackList"
:key=
"index"
:timestamp=
"formatDate(express.time)"
>
{{ express.content }}
</el-timeline-item>
</el-timeline>
<!-- 物流信息 -->
<el-descriptions
:column=
"4"
title=
"收货信息"
>
<el-descriptions-item
label=
"配送方式: "
>
<dict-tag
:type=
"DICT_TYPE.TRADE_DELIVERY_TYPE"
:value=
"formData.deliveryType!"
/>
</el-descriptions-item>
<el-descriptions-item
label=
"收货人: "
>
{{ formData.receiverName }}
</el-descriptions-item>
<el-descriptions-item
label=
"联系电话: "
>
{{ formData.receiverMobile }}
</el-descriptions-item>
<!-- 快递配送 -->
<div
v-if=
"formData.deliveryType === DeliveryTypeEnum.EXPRESS.type"
>
<el-descriptions-item
label=
"收货地址: "
v-if=
"formData.receiverDetailAddress"
>
{{ formData.receiverAreaName }} {{ formData.receiverDetailAddress }}
<el-link
v-clipboard:copy=
"formData.receiverAreaName + ' ' + formData.receiverDetailAddress"
v-clipboard:success=
"clipboardSuccess"
icon=
"ep:document-copy"
type=
"primary"
/>
</el-descriptions-item>
<el-descriptions-item
label=
"物流公司: "
v-if=
"formData.logisticsId"
>
{{ deliveryExpressList.find((item) => item.id === formData.logisticsId)?.name }}
</el-descriptions-item>
<el-descriptions-item
label=
"运单号: "
v-if=
"formData.logisticsId"
>
{{ formData.logisticsNo }}
</el-descriptions-item>
<el-descriptions-item
label=
"发货时间: "
v-if=
"formatDate.deliveryTime"
>
{{ formatDate(formData.deliveryTime) }}
</el-descriptions-item>
<el-descriptions-item
v-for=
"item in 2"
:key=
"item"
label-class-name=
"no-colon"
/>
<el-descriptions-item
label=
"物流详情: "
v-if=
"expressTrackList.length > 0"
>
<el-timeline>
<el-timeline-item
v-for=
"(express, index) in expressTrackList"
:key=
"index"
:timestamp=
"formatDate(express.time)"
>
{{ express.content }}
</el-timeline-item>
</el-timeline>
</el-descriptions-item>
</div>
<!-- 自提门店 -->
<div
v-if=
"formData.deliveryType === DeliveryTypeEnum.PICK_UP.type"
>
<el-descriptions-item
label=
"自提门店: "
v-if=
"formData.pickUpStoreId"
>
{{ pickUpStore.name }}
</el-descriptions-item>
</div>
</el-descriptions>
<!-- 订单日志 -->
<el-descriptions
title=
"订单操作日志"
>
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-timeline>
...
...
@@ -196,6 +217,8 @@ import OrderUpdateAddressForm from '@/views/mall/trade/order/form/OrderUpdateAdd
import
OrderUpdatePriceForm
from
'@/views/mall/trade/order/form/OrderUpdatePriceForm.vue'
import
*
as
DeliveryExpressApi
from
'@/api/mall/trade/delivery/express'
import
{
useTagsViewStore
}
from
'@/store/modules/tagsView'
import
{
DeliveryTypeEnum
}
from
'@/utils/constants'
import
*
as
DeliveryPickUpStoreApi
from
'@/api/mall/trade/delivery/pickUpStore'
defineOptions
({
name
:
'TradeOrderDetail'
})
...
...
@@ -271,10 +294,20 @@ const clipboardSuccess = () => {
/** 初始化 **/
const
deliveryExpressList
=
ref
([])
// 物流公司
const
expressTrackList
=
ref
([])
// 物流详情
const
pickUpStore
=
ref
({})
// 自提门店
onMounted
(
async
()
=>
{
await
getDetail
()
deliveryExpressList
.
value
=
await
DeliveryExpressApi
.
getSimpleDeliveryExpressList
()
expressTrackList
.
value
=
await
TradeOrderApi
.
getExpressTrackList
(
formData
.
value
.
id
!
)
// 如果配送方式为快递,则查询物流公司
if
(
formData
.
value
.
deliveryType
===
DeliveryTypeEnum
.
EXPRESS
.
type
)
{
deliveryExpressList
.
value
=
await
DeliveryExpressApi
.
getSimpleDeliveryExpressList
()
if
(
form
.
value
.
logisticsId
)
{
expressTrackList
.
value
=
await
TradeOrderApi
.
getExpressTrackList
(
formData
.
value
.
id
!
)
}
}
else
if
(
formData
.
value
.
deliveryType
===
DeliveryTypeEnum
.
PICK_UP
.
type
)
{
pickUpStore
.
value
=
await
DeliveryPickUpStoreApi
.
getDeliveryPickUpStore
(
formData
.
value
.
pickUpStoreId
)
}
})
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -312,7 +345,7 @@ onMounted(async () => {
//
时间线样式调整
:deep
(
.el-timeline
)
{
margin
:
10px
0
px
0px
160px
;
margin
:
10px
0
0
160px
;
.el-timeline-item__wrapper
{
position
:
relative
;
...
...
src/views/mall/trade/order/form/OrderDeliveryForm.vue
View file @
4fddbcce
...
...
@@ -54,7 +54,7 @@ const open = async (row: TradeOrderApi.OrderVO) => {
resetForm
()
// 设置数据
copyValueToTarget
(
formData
.
value
,
row
)
if
(
row
.
logisticsId
===
null
||
row
.
logisticsId
===
0
)
{
if
(
row
.
logisticsId
===
0
)
{
expressType
.
value
=
'none'
}
dialogVisible
.
value
=
true
...
...
@@ -73,7 +73,7 @@ const submitForm = async () => {
data
.
logisticsId
=
0
data
.
logisticsNo
=
''
}
await
TradeOrderApi
.
delivery
(
data
)
await
TradeOrderApi
.
delivery
Order
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
...
...
src/views/mall/trade/order/form/OrderUpdateAddressForm.vue
View file @
4fddbcce
...
...
@@ -69,7 +69,7 @@ const submitForm = async () => {
formLoading
.
value
=
true
try
{
const
data
=
unref
(
formData
)
await
TradeOrderApi
.
updateAddress
(
data
)
await
TradeOrderApi
.
update
Order
Address
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
...
...
src/views/mall/trade/order/form/OrderUpdatePriceForm.vue
View file @
4fddbcce
...
...
@@ -69,7 +69,7 @@ const submitForm = async () => {
data
.
adjustPrice
=
convertToInteger
(
data
.
adjustPrice
)
delete
data
.
payPrice
delete
data
.
newPayPrice
await
TradeOrderApi
.
updatePrice
(
data
)
await
TradeOrderApi
.
update
Order
Price
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
...
...
src/views/mall/trade/order/form/OrderUpdateRemarkForm.vue
View file @
4fddbcce
...
...
@@ -49,7 +49,7 @@ const submitForm = async () => {
formLoading
.
value
=
true
try
{
const
data
=
unref
(
formData
)
await
TradeOrderApi
.
updateRemark
(
data
)
await
TradeOrderApi
.
update
Order
Remark
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
// 发送操作成功的事件
...
...
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