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
73628d39
authored
Sep 06, 2023
by
puhui999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善订单详情和售后退款 TODO 提到的问题
parent
46fd154e
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
55 additions
and
38 deletions
+55
-38
src/api/mall/trade/order/index.ts
+2
-2
src/config/axios/service.ts
+4
-0
src/utils/dict.ts
+0
-1
src/views/mall/promotion/components/SpuAndSkuList.vue
+1
-1
src/views/mall/trade/afterSale/detail/index.vue
+19
-7
src/views/mall/trade/order/detail/index.vue
+27
-25
src/views/mall/trade/order/index.vue
+2
-2
No files found.
src/api/mall/trade/order/index.ts
View file @
73628d39
...
...
@@ -51,10 +51,10 @@ export interface OrderVO {
avatar
?:
string
}
// 订单操作日志
orderLog
?:
orderLog
[]
logs
?:
logs
[]
}
export
interface
orderLog
{
export
interface
logs
{
content
?:
string
createTime
?:
Date
userType
?:
number
...
...
src/config/axios/service.ts
View file @
73628d39
...
...
@@ -191,6 +191,10 @@ service.interceptors.response.use(
}
return
Promise
.
reject
(
'error'
)
}
else
{
// 前端处理 data 为 null 的情况,进行提示
if
(
data
.
msg
!==
''
)
{
ElNotification
.
error
({
title
:
msg
})
}
return
data
}
},
...
...
src/utils/dict.ts
View file @
73628d39
...
...
@@ -68,7 +68,6 @@ export const getBoolDictOptions = (dictType: string) => {
*/
export
const
getDictObj
=
(
dictType
:
string
,
value
:
any
):
DictDataType
|
undefined
=>
{
const
dictOptions
:
DictDataType
[]
=
getDictOptions
(
dictType
)
console
.
log
(
dictOptions
)
for
(
const
dict
of
dictOptions
)
{
if
(
dict
.
value
===
value
+
''
)
{
return
dict
...
...
src/views/mall/promotion/components/SpuAndSkuList.vue
View file @
73628d39
...
...
@@ -41,7 +41,7 @@ import { SpuProperty } from '@/views/mall/promotion/components/index'
defineOptions
({
name
:
'PromotionSpuAndSkuList'
})
const
props
=
defineProps
<
{
spuList
:
T
[]
// TODO 为了方便兼容后续可能有需要展示多个 spu 的情况暂时保持,如果后续都是只操作一个 spu 的话则可更改为接受一个 spu 或保持
spuList
:
T
[]
ruleConfig
:
RuleConfig
[]
spuPropertyListP
:
SpuProperty
<
T
>
[]
}
>
()
...
...
src/views/mall/trade/afterSale/detail/index.vue
View file @
73628d39
...
...
@@ -126,7 +126,7 @@
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-timeline>
<el-timeline-item
v-for=
"saleLog in formData.
afterSaleLog
"
v-for=
"saleLog in formData.
logs
"
:key=
"saleLog.id"
:timestamp=
"formatDate(saleLog.createTime)"
placement=
"top"
...
...
@@ -151,7 +151,7 @@
:style=
"
{ backgroundColor: updateStyles(saleLog.userType) }"
class="dot-node-style"
>
{{
getDictLabel
(
DICT_TYPE
.
USER_TYPE
,
saleLog
.
userType
)[
0
]
}}
{{
getDictLabel
(
DICT_TYPE
.
USER_TYPE
,
saleLog
.
userType
)[
0
]
||
'系'
}}
</span>
</
template
>
</el-timeline-item>
...
...
@@ -171,15 +171,17 @@ import { formatDate } from '@/utils/formatTime'
import
UpdateAuditReasonForm
from
'@/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue'
import
{
createImageViewer
}
from
'@/components/ImageViewer'
import
{
isArray
}
from
'@/utils/is'
import
{
useTagsViewStore
}
from
'@/store/modules/tagsView'
defineOptions
({
name
:
'TradeAfterSaleDetail'
})
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
{
params
}
=
useRoute
()
// 查询参数
const
{
push
,
currentRoute
}
=
useRouter
()
// 路由
const
formData
=
ref
({
order
:
{},
afterSaleLog
:
[]
logs
:
[]
})
const
updateAuditReasonFormRef
=
ref
()
// 拒绝售后表单 Ref
...
...
@@ -202,7 +204,12 @@ const updateStyles = (type: number) => {
const
getDetail
=
async
()
=>
{
const
id
=
params
.
orderId
as
unknown
as
number
if
(
id
)
{
formData
.
value
=
await
AfterSaleApi
.
getAfterSale
(
id
)
const
res
=
await
AfterSaleApi
.
getAfterSale
(
id
)
// 没有表单信息则关闭页面返回
if
(
res
===
null
)
{
close
()
}
formData
.
value
=
res
}
}
...
...
@@ -261,7 +268,12 @@ const imagePreview = (args) => {
urlList
})
}
const
{
delView
}
=
useTagsViewStore
()
// 视图操作
/** 关闭 tag */
const
close
=
()
=>
{
delView
(
unref
(
currentRoute
))
push
({
name
:
'TradeAfterSale'
})
}
onMounted
(
async
()
=>
{
await
getDetail
()
})
...
...
@@ -322,10 +334,10 @@ onMounted(async () => {
background-color
:
#f7f8fa
;
&::before
{
content
:
''
;
/* 必须设置 content 属性 */
content
:
''
;
position
:
absolute
;
top
:
10px
;
left
:
13px
;
/* 将伪元素水平居中 */
left
:
13px
;
border-width
:
8px
;
/* 调整尖角大小 */
border-style
:
solid
;
border-color
:
transparent
#f7f8fa
transparent
transparent
;
/* 尖角颜色,左侧朝向 */
...
...
src/views/mall/trade/order/detail/index.vue
View file @
73628d39
...
...
@@ -40,12 +40,17 @@
<el-descriptions-item
label=
"订单状态: "
>
<dict-tag
:type=
"DICT_TYPE.TRADE_ORDER_STATUS"
:value=
"formData.status!"
/>
</el-descriptions-item>
<!-- TODO @puhui999:根据状态,进行展示按钮 -->
<el-descriptions-item
label-class-name=
"no-colon"
>
<el-button
type=
"primary"
@
click=
"openForm('updatePrice')"
>
调整价格
</el-button>
<el-button
type=
"primary"
@
click=
"openForm('remark')"
>
备注
</el-button>
<el-button
type=
"primary"
@
click=
"openForm('delivery')"
>
发货
</el-button>
<el-button
type=
"primary"
@
click=
"openForm('updateAddress')"
>
修改地址
</el-button>
<el-button
v-if=
"formData.status! === 0"
type=
"primary"
@
click=
"updatePrice"
>
调整价格
</el-button>
<el-button
type=
"primary"
@
click=
"remark"
>
备注
</el-button>
<el-button
v-if=
"formData.status! === 10"
type=
"primary"
@
click=
"delivery"
>
发货
</el-button>
<el-button
v-if=
"formData.status! === 10"
type=
"primary"
@
click=
"updateAddress"
>
修改地址
</el-button>
</el-descriptions-item>
<el-descriptions-item>
<template
#
label
><span
style=
"color: red"
>
提醒:
</span></
template
>
...
...
@@ -152,7 +157,7 @@
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-timeline>
<el-timeline-item
v-for=
"(log, index) in formData.
orderLog
"
v-for=
"(log, index) in formData.
logs
"
:key=
"index"
:timestamp=
"formatDate(log.createTime!)"
placement=
"top"
...
...
@@ -161,7 +166,10 @@
{{ log.content }}
</div>
<
template
#
dot
>
<span
:style=
"
{ backgroundColor: updateStyles(log.userType) }" class="dot-node-style">
<span
:style=
"
{ backgroundColor: updateStyles(log.userType!) }"
class="dot-node-style"
>
{{
getDictLabel
(
DICT_TYPE
.
USER_TYPE
,
log
.
userType
)[
0
]
}}
</span>
</
template
>
...
...
@@ -209,31 +217,25 @@ const updateStyles = (type: number) => {
// 订单详情
const
formData
=
ref
<
TradeOrderApi
.
OrderVO
>
({
orderLog
:
[]
// TODO @puhui999:orderLogs
logs
:
[]
})
// TODO @puhui999:这个最好也拆掉哈
const
deliveryFormRef
=
ref
()
// 发货表单 Ref
const
updateRemarkForm
=
ref
()
// 订单备注表单 Ref
const
updateAddressFormRef
=
ref
()
// 收货地址表单 Ref
const
updatePriceFormRef
=
ref
()
// 订单调价表单 Ref
const
openForm
=
(
type
:
string
)
=>
{
switch
(
type
)
{
case
'remark'
:
updateRemarkForm
.
value
?.
open
(
formData
.
value
)
break
case
'delivery'
:
deliveryFormRef
.
value
?.
open
(
formData
.
value
)
break
case
'updateAddress'
:
updateAddressFormRef
.
value
?.
open
(
formData
.
value
)
break
case
'updatePrice'
:
updatePriceFormRef
.
value
?.
open
(
formData
.
value
)
break
}
const
remark
=
()
=>
{
updateRemarkForm
.
value
?.
open
(
formData
.
value
)
}
const
delivery
=
()
=>
{
deliveryFormRef
.
value
?.
open
(
formData
.
value
)
}
const
updateAddress
=
()
=>
{
updateAddressFormRef
.
value
?.
open
(
formData
.
value
)
}
const
updatePrice
=
()
=>
{
updatePriceFormRef
.
value
?.
open
(
formData
.
value
)
}
/** 获得详情 */
const
{
params
}
=
useRoute
()
// 查询参数
const
getDetail
=
async
()
=>
{
...
...
src/views/mall/trade/order/index.vue
View file @
73628d39
...
...
@@ -100,7 +100,7 @@
/>
</el-select>
</el-form-item>
<!-- TODO 聚合搜索等售后结束后实现-->
<!-- TODO
puhui
聚合搜索等售后结束后实现-->
<el-form-item
label=
"聚合搜索"
>
<el-input
v-show=
"true"
...
...
@@ -139,7 +139,7 @@
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
class-name=
"order-table-col"
>
<
template
#
header
>
<!-- TODO @phui999:小屏幕下,会有偏移,后续看看 -->
<!-- TODO @p
u
hui999:小屏幕下,会有偏移,后续看看 -->
<div
class=
"flex items-center"
style=
"width: 100%"
>
<div
class=
"ml-100px mr-200px"
>
商品信息
</div>
<div
class=
"mr-60px"
>
单价(元)/数量
</div>
...
...
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