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
6515e218
authored
Oct 02, 2023
by
owen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into dev_local
parents
4c077711
a06a63c1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
118 additions
and
108 deletions
+118
-108
src/api/mall/trade/order/index.ts
+12
-5
src/api/system/area/index.ts
+0
-8
src/router/modules/remaining.ts
+1
-1
src/utils/constants.ts
+14
-0
src/views/mall/trade/afterSale/detail/index.vue
+42
-38
src/views/mall/trade/afterSale/index.vue
+4
-5
src/views/mall/trade/config/index.vue
+4
-1
src/views/mall/trade/delivery/express/ExpressForm.vue
+4
-4
src/views/mall/trade/delivery/express/index.vue
+4
-4
src/views/mall/trade/delivery/expressTemplate/ExpressTemplateForm.vue
+0
-0
src/views/mall/trade/delivery/expressTemplate/index.vue
+4
-4
src/views/mall/trade/delivery/pickUpStore/PickUpStoreForm.vue
+12
-26
src/views/mall/trade/delivery/pickUpStore/index.vue
+12
-7
src/views/mall/trade/order/detail/index.vue
+0
-0
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 @
6515e218
...
@@ -41,15 +41,22 @@ export interface OrderVO {
...
@@ -41,15 +41,22 @@ export interface OrderVO {
refundPrice
?:
number
|
null
// 退款金额
refundPrice
?:
number
|
null
// 退款金额
couponId
?:
number
|
null
// 优惠劵编号
couponId
?:
number
|
null
// 优惠劵编号
couponPrice
?:
number
|
null
// 优惠劵减免金额
couponPrice
?:
number
|
null
// 优惠劵减免金额
vipPrice
?:
number
|
null
// VIP 减免金额
pointPrice
?:
number
|
null
// 积分抵扣的金额
pointPrice
?:
number
|
null
// 积分抵扣的金额
receiverAreaName
?:
string
//收件人地区名字
receiverAreaName
?:
string
//收件人地区名字
items
?:
OrderItemRespVO
[]
// 订单项列表
items
?:
OrderItemRespVO
[]
// 订单项列表
// 用户信息
//
下单
用户信息
user
?:
{
user
?:
{
id
?:
number
|
null
id
?:
number
|
null
nickname
?:
string
nickname
?:
string
avatar
?:
string
avatar
?:
string
}
}
// 推广用户信息
brokerageUser
?:
{
id
?:
number
|
null
nickname
?:
string
avatar
?:
string
}
// 订单操作日志
// 订单操作日志
logs
?:
OrderLogRespVO
[]
logs
?:
OrderLogRespVO
[]
}
}
...
@@ -114,21 +121,21 @@ export interface DeliveryVO {
...
@@ -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
})
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
})
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
})
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
})
return
await
request
.
put
({
url
:
`/trade/order/update-address`
,
data
})
}
}
src/api/system/area/index.ts
View file @
6515e218
...
@@ -5,14 +5,6 @@ export const getAreaTree = async () => {
...
@@ -5,14 +5,6 @@ export const getAreaTree = async () => {
return
await
request
.
get
({
url
:
'/system/area/tree'
})
return
await
request
.
get
({
url
:
'/system/area/tree'
})
}
}
export
const
getChildrenArea
=
async
(
id
:
number
)
=>
{
return
await
request
.
get
({
url
:
'/system/area/get-children?id='
+
id
})
}
export
const
getAreaListByIds
=
async
(
ids
)
=>
{
return
await
request
.
get
({
url
:
'/system/area/get-by-ids?ids='
+
ids
})
}
// 获得 IP 对应的地区名
// 获得 IP 对应的地区名
export
const
getAreaByIp
=
async
(
ip
:
string
)
=>
{
export
const
getAreaByIp
=
async
(
ip
:
string
)
=>
{
return
await
request
.
get
({
url
:
'/system/area/get-by-ip?ip='
+
ip
})
return
await
request
.
get
({
url
:
'/system/area/get-by-ip?ip='
+
ip
})
...
...
src/router/modules/remaining.ts
View file @
6515e218
...
@@ -405,7 +405,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
...
@@ -405,7 +405,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
meta
:
{
title
:
'订单详情'
,
icon
:
'ep:view'
,
activeMenu
:
'/mall/trade/order'
}
meta
:
{
title
:
'订单详情'
,
icon
:
'ep:view'
,
activeMenu
:
'/mall/trade/order'
}
},
},
{
{
path
:
'after-sale/detail/:
orderI
d(\\d+)'
,
path
:
'after-sale/detail/:
i
d(\\d+)'
,
component
:
()
=>
import
(
'@/views/mall/trade/afterSale/detail/index.vue'
),
component
:
()
=>
import
(
'@/views/mall/trade/afterSale/detail/index.vue'
),
name
:
'TradeAfterSaleDetail'
,
name
:
'TradeAfterSaleDetail'
,
meta
:
{
title
:
'退款详情'
,
icon
:
'ep:view'
,
activeMenu
:
'/mall/trade/after-sale'
}
meta
:
{
title
:
'退款详情'
,
icon
:
'ep:view'
,
activeMenu
:
'/mall/trade/after-sale'
}
...
...
src/utils/constants.ts
View file @
6515e218
...
@@ -375,3 +375,17 @@ export const BrokerageWithdrawTypeEnum = {
...
@@ -375,3 +375,17 @@ export const BrokerageWithdrawTypeEnum = {
name
:
'支付宝'
name
:
'支付宝'
}
}
}
}
/**
* 配送方式枚举
*/
export
const
DeliveryTypeEnum
=
{
EXPRESS
:
{
type
:
1
,
name
:
'快递发货'
},
PICK_UP
:
{
type
:
2
,
name
:
'到店自提'
}
}
src/views/mall/trade/afterSale/detail/index.vue
View file @
6515e218
...
@@ -6,7 +6,6 @@
...
@@ -6,7 +6,6 @@
<el-descriptions-item
label=
"配送方式: "
>
<el-descriptions-item
label=
"配送方式: "
>
<dict-tag
:type=
"DICT_TYPE.TRADE_DELIVERY_TYPE"
:value=
"formData.order.deliveryType"
/>
<dict-tag
:type=
"DICT_TYPE.TRADE_DELIVERY_TYPE"
:value=
"formData.order.deliveryType"
/>
</el-descriptions-item>
</el-descriptions-item>
<!-- TODO 营销活动待实现 -->
<el-descriptions-item
label=
"订单类型: "
>
<el-descriptions-item
label=
"订单类型: "
>
<dict-tag
:type=
"DICT_TYPE.TRADE_ORDER_TYPE"
:value=
"formData.order.type"
/>
<dict-tag
:type=
"DICT_TYPE.TRADE_ORDER_TYPE"
:value=
"formData.order.type"
/>
</el-descriptions-item>
</el-descriptions-item>
...
@@ -29,8 +28,7 @@
...
@@ -29,8 +28,7 @@
<el-descriptions-item
label=
"付款方式: "
>
<el-descriptions-item
label=
"付款方式: "
>
<dict-tag
:type=
"DICT_TYPE.PAY_CHANNEL_CODE"
:value=
"formData.order.payChannelCode"
/>
<dict-tag
:type=
"DICT_TYPE.PAY_CHANNEL_CODE"
:value=
"formData.order.payChannelCode"
/>
</el-descriptions-item>
</el-descriptions-item>
<!-- TODO 芋艿:待实现:跳转会员 -->
<el-descriptions-item
label=
"买家: "
>
{{
formData
?.
user
?.
nickname
}}
</el-descriptions-item>
<!--
<el-descriptions-item
label=
"买家: "
>
{{
formData
.
user
.
nickname
}}
</el-descriptions-item>
-->
</el-descriptions>
</el-descriptions>
<!-- 售后信息 -->
<!-- 售后信息 -->
...
@@ -46,7 +44,7 @@
...
@@ -46,7 +44,7 @@
<dict-tag
:type=
"DICT_TYPE.TRADE_AFTER_SALE_WAY"
:value=
"formData.way"
/>
<dict-tag
:type=
"DICT_TYPE.TRADE_AFTER_SALE_WAY"
:value=
"formData.way"
/>
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"退款金额: "
>
<el-descriptions-item
label=
"退款金额: "
>
{{
f
loatToFixed2
(
formData
.
refundPrice
)
}}
{{
f
enToYuan
(
formData
.
refundPrice
)
}}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"退款原因: "
>
{{
formData
.
applyReason
}}
</el-descriptions-item>
<el-descriptions-item
label=
"退款原因: "
>
{{
formData
.
applyReason
}}
</el-descriptions-item>
<el-descriptions-item
label=
"补充描述: "
>
<el-descriptions-item
label=
"补充描述: "
>
...
@@ -92,7 +90,7 @@
...
@@ -92,7 +90,7 @@
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"15"
>
<el-col
:span=
"15"
>
<el-table
:data=
"
formData.items
"
border
>
<el-table
:data=
"
[formData.orderItem]
"
border
>
<el-table-column
label=
"商品"
prop=
"spuName"
width=
"auto"
>
<el-table-column
label=
"商品"
prop=
"spuName"
width=
"auto"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
{{
row
.
spuName
}}
{{
row
.
spuName
}}
...
@@ -102,19 +100,11 @@
...
@@ -102,19 +100,11 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"商品原价"
prop=
"price"
width=
"150"
>
<el-table-column
label=
"商品原价"
prop=
"price"
width=
"150"
>
<
template
#
default=
"{ row }"
>
{{
f
loatToFixed2
(
row
.
price
)
}}
元
</
template
>
<
template
#
default=
"{ row }"
>
{{
f
enToYuan
(
row
.
price
)
}}
元
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"数量"
prop=
"count"
width=
"100"
/>
<el-table-column
label=
"数量"
prop=
"count"
width=
"100"
/>
<el-table-column
label=
"合计"
prop=
"payPrice"
width=
"150"
>
<el-table-column
label=
"合计"
prop=
"payPrice"
width=
"150"
>
<
template
#
default=
"{ row }"
>
{{
floatToFixed2
(
row
.
payPrice
)
}}
元
</
template
>
<
template
#
default=
"{ row }"
>
{{
fenToYuan
(
row
.
payPrice
)
}}
元
</
template
>
</el-table-column>
<el-table-column
label=
"售后状态"
prop=
"afterSaleStatus"
width=
"120"
>
<
template
#
default=
"{ row }"
>
<dict-tag
:type=
"DICT_TYPE.TRADE_ORDER_ITEM_AFTER_SALE_STATUS"
:value=
"row.afterSaleStatus"
/>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-col>
</el-col>
...
@@ -122,6 +112,8 @@
...
@@ -122,6 +112,8 @@
</el-row>
</el-row>
</el-descriptions-item>
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
<!-- 操作日志 -->
<el-descriptions
title=
"售后日志"
>
<el-descriptions
title=
"售后日志"
>
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-descriptions-item
labelClassName=
"no-colon"
>
<el-timeline>
<el-timeline>
...
@@ -153,7 +145,7 @@
...
@@ -153,7 +145,7 @@
</template>
</template>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
*
as
AfterSaleApi
from
'@/api/mall/trade/afterSale/index'
import
*
as
AfterSaleApi
from
'@/api/mall/trade/afterSale/index'
import
{
f
loatToFixed2
}
from
'@/utils'
import
{
f
enToYuan
}
from
'@/utils'
import
{
DICT_TYPE
,
getDictLabel
,
getDictObj
}
from
'@/utils/dict'
import
{
DICT_TYPE
,
getDictLabel
,
getDictObj
}
from
'@/utils/dict'
import
{
formatDate
}
from
'@/utils/formatTime'
import
{
formatDate
}
from
'@/utils/formatTime'
import
UpdateAuditReasonForm
from
'@/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue'
import
UpdateAuditReasonForm
from
'@/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue'
...
@@ -191,7 +183,7 @@ const getUserTypeColor = (type: number) => {
...
@@ -191,7 +183,7 @@ const getUserTypeColor = (type: number) => {
/** 获得详情 */
/** 获得详情 */
const
getDetail
=
async
()
=>
{
const
getDetail
=
async
()
=>
{
const
id
=
params
.
orderI
d
as
unknown
as
number
const
id
=
params
.
i
d
as
unknown
as
number
if
(
id
)
{
if
(
id
)
{
const
res
=
await
AfterSaleApi
.
getAfterSale
(
id
)
const
res
=
await
AfterSaleApi
.
getAfterSale
(
id
)
// 没有表单信息则关闭页面返回
// 没有表单信息则关闭页面返回
...
@@ -204,44 +196,56 @@ const getDetail = async () => {
...
@@ -204,44 +196,56 @@ const getDetail = async () => {
}
}
/** 同意售后 */
/** 同意售后 */
const
agree
=
()
=>
{
const
agree
=
async
()
=>
{
message
.
confirm
(
'是否同意售后?'
).
then
(()
=>
{
try
{
AfterSaleApi
.
agree
(
formData
.
value
.
id
)
// 二次确认
await
message
.
confirm
(
'是否同意售后?'
)
await
AfterSaleApi
.
agree
(
formData
.
value
.
id
)
// 提示成功
message
.
success
(
t
(
'common.success'
))
message
.
success
(
t
(
'common.success'
))
getDetail
()
await
getDetail
()
}
)
}
catch
{}
}
}
/** 拒绝售后 */
/** 拒绝售后 */
const
disagree
=
()
=>
{
const
disagree
=
async
()
=>
{
updateAuditReasonFormRef
.
value
?.
open
(
formData
.
value
)
updateAuditReasonFormRef
.
value
?.
open
(
formData
.
value
)
}
}
/** 确认收货 */
/** 确认收货 */
const
receive
=
()
=>
{
const
receive
=
async
()
=>
{
message
.
confirm
(
'是否确认收货?'
).
then
(()
=>
{
try
{
AfterSaleApi
.
receive
(
formData
.
value
.
id
)
// 二次确认
await
message
.
confirm
(
'是否确认收货?'
)
await
AfterSaleApi
.
receive
(
formData
.
value
.
id
)
// 提示成功
message
.
success
(
t
(
'common.success'
))
message
.
success
(
t
(
'common.success'
))
getDetail
()
await
getDetail
()
}
)
}
catch
{}
}
}
/** 拒绝收货 */
/** 拒绝收货 */
const
refuse
=
()
=>
{
const
refuse
=
async
()
=>
{
message
.
confirm
(
'是否拒绝收货?'
).
then
(()
=>
{
try
{
AfterSaleApi
.
refuse
(
formData
.
value
.
id
)
// 二次确认
await
message
.
confirm
(
'是否拒绝收货?'
)
await
AfterSaleApi
.
refuse
(
formData
.
value
.
id
)
// 提示成功
message
.
success
(
t
(
'common.success'
))
message
.
success
(
t
(
'common.success'
))
getDetail
()
await
getDetail
()
}
)
}
catch
{}
}
}
/** 确认退款 */
/** 确认退款 */
const
refund
=
()
=>
{
const
refund
=
async
()
=>
{
message
.
confirm
(
'是否确认退款?'
).
then
(()
=>
{
try
{
AfterSaleApi
.
refund
(
formData
.
value
.
id
)
// 二次确认
await
message
.
confirm
(
'是否确认退款?'
)
await
AfterSaleApi
.
refund
(
formData
.
value
.
id
)
// 提示成功
message
.
success
(
t
(
'common.success'
))
message
.
success
(
t
(
'common.success'
))
getDetail
()
await
getDetail
()
}
)
}
catch
{}
}
}
/** 图片预览 */
/** 图片预览 */
...
...
src/views/mall/trade/afterSale/index.vue
View file @
6515e218
...
@@ -135,17 +135,16 @@
...
@@ -135,17 +135,16 @@
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
label=
"订单金额"
prop=
"refundPrice"
>
<el-table-column
align=
"center"
label=
"订单金额"
prop=
"refundPrice"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<span>
{{
f
loatToFixed2
(
scope
.
row
.
refundPrice
)
}}
元
</span>
<span>
{{
f
enToYuan
(
scope
.
row
.
refundPrice
)
}}
元
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<!-- TODO 芋艿:未来要加个会员链接 -->
<el-table-column
align=
"center"
label=
"买家"
prop=
"user.nickname"
/>
<el-table-column
align=
"center"
label=
"买家"
prop=
"user.nickname"
/>
<el-table-column
align=
"center"
label=
"申请时间"
prop=
"createTime"
width=
"180"
>
<el-table-column
align=
"center"
label=
"申请时间"
prop=
"createTime"
width=
"180"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<span>
{{
formatDate
(
scope
.
row
.
createTime
)
}}
</span>
<span>
{{
formatDate
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
label=
"售后状态"
>
<el-table-column
align=
"center"
label=
"售后状态"
width=
"100"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.TRADE_AFTER_SALE_STATUS"
:value=
"scope.row.status"
/>
<dict-tag
:type=
"DICT_TYPE.TRADE_AFTER_SALE_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</
template
>
...
@@ -177,7 +176,7 @@ import { formatDate } from '@/utils/formatTime'
...
@@ -177,7 +176,7 @@ import { formatDate } from '@/utils/formatTime'
import
{
createImageViewer
}
from
'@/components/ImageViewer'
import
{
createImageViewer
}
from
'@/components/ImageViewer'
import
{
TabsPaneContext
}
from
'element-plus'
import
{
TabsPaneContext
}
from
'element-plus'
import
{
cloneDeep
}
from
'lodash-es'
import
{
cloneDeep
}
from
'lodash-es'
import
{
f
loatToFixed2
}
from
'@/utils'
import
{
f
enToYuan
}
from
'@/utils'
defineOptions
({
name
:
'TradeAfterSale'
})
defineOptions
({
name
:
'TradeAfterSale'
})
...
@@ -240,7 +239,7 @@ const tabClick = async (tab: TabsPaneContext) => {
...
@@ -240,7 +239,7 @@ const tabClick = async (tab: TabsPaneContext) => {
/** 处理退款 */
/** 处理退款 */
const
openAfterSaleDetail
=
(
id
:
number
)
=>
{
const
openAfterSaleDetail
=
(
id
:
number
)
=>
{
push
({
name
:
'TradeAfterSaleDetail'
,
params
:
{
orderId
:
id
}
})
push
({
name
:
'TradeAfterSaleDetail'
,
params
:
{
id
}
})
}
}
/** 查看订单详情 */
/** 查看订单详情 */
...
...
src/views/mall/trade/config/index.vue
View file @
6515e218
...
@@ -64,6 +64,9 @@
...
@@ -64,6 +64,9 @@
商城商品满多少金额即可包邮,单位:元
商城商品满多少金额即可包邮,单位:元
</el-text>
</el-text>
</el-form-item>
</el-form-item>
<el-form-item
label=
"启用门店自提"
prop=
"deliveryPickUpEnabled"
>
<el-switch
v-model=
"formData.deliveryPickUpEnabled"
style=
"user-select: none"
/>
</el-form-item>
</el-tab-pane>
</el-tab-pane>
<!-- 分销 -->
<!-- 分销 -->
<el-tab-pane
label=
"分销"
>
<el-tab-pane
label=
"分销"
>
...
@@ -206,7 +209,6 @@
...
@@ -206,7 +209,6 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
*
as
ConfigApi
from
'@/api/mall/trade/config'
import
*
as
ConfigApi
from
'@/api/mall/trade/config'
import
{
BrokerageBindModeEnum
,
BrokerageEnabledConditionEnum
}
from
'@/utils/constants'
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
defineOptions
({
name
:
'TradeConfig'
})
defineOptions
({
name
:
'TradeConfig'
})
...
@@ -221,6 +223,7 @@ const formData = ref({
...
@@ -221,6 +223,7 @@ const formData = ref({
afterSaleReturnReasons
:
[],
afterSaleReturnReasons
:
[],
deliveryExpressFreeEnabled
:
false
,
deliveryExpressFreeEnabled
:
false
,
deliveryExpressFreePrice
:
0
,
deliveryExpressFreePrice
:
0
,
deliveryPickUpEnabled
:
false
,
brokerageEnabled
:
false
,
brokerageEnabled
:
false
,
brokerageEnabledCondition
:
undefined
,
brokerageEnabledCondition
:
undefined
,
brokerageBindMode
:
undefined
,
brokerageBindMode
:
undefined
,
...
...
src/views/mall/trade/delivery/express/ExpressForm.vue
View file @
6515e218
...
@@ -7,17 +7,17 @@
...
@@ -7,17 +7,17 @@
label-width=
"120px"
label-width=
"120px"
v-loading=
"formLoading"
v-loading=
"formLoading"
>
>
<el-form-item
label=
"
快递
公司编码"
prop=
"code"
>
<el-form-item
label=
"公司编码"
prop=
"code"
>
<el-input
v-model=
"formData.code"
placeholder=
"请输入快递编码"
/>
<el-input
v-model=
"formData.code"
placeholder=
"请输入快递编码"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
快递
公司名称"
prop=
"name"
>
<el-form-item
label=
"公司名称"
prop=
"name"
>
<el-input
v-model=
"formData.name"
placeholder=
"请输入快递名称"
/>
<el-input
v-model=
"formData.name"
placeholder=
"请输入快递名称"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
快递
公司 logo"
prop=
"logo"
>
<el-form-item
label=
"公司 logo"
prop=
"logo"
>
<UploadImg
v-model=
"formData.logo"
:limit=
"1"
:is-show-tip=
"false"
/>
<UploadImg
v-model=
"formData.logo"
:limit=
"1"
:is-show-tip=
"false"
/>
<div
style=
"font-size: 10px"
class=
"pl-10px"
>
推荐 180x180 图片分辨率
</div>
<div
style=
"font-size: 10px"
class=
"pl-10px"
>
推荐 180x180 图片分辨率
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
分类
排序"
prop=
"sort"
>
<el-form-item
label=
"排序"
prop=
"sort"
>
<el-input-number
v-model=
"formData.sort"
controls-position=
"right"
:min=
"0"
/>
<el-input-number
v-model=
"formData.sort"
controls-position=
"right"
:min=
"0"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"开启状态"
prop=
"status"
>
<el-form-item
label=
"开启状态"
prop=
"status"
>
...
...
src/views/mall/trade/delivery/express/index.vue
View file @
6515e218
...
@@ -53,11 +53,11 @@
...
@@ -53,11 +53,11 @@
<!-- 列表 -->
<!-- 列表 -->
<ContentWrap>
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"
快递公司编号
"
prop=
"code"
/>
<el-table-column
label=
"
公司编码
"
prop=
"code"
/>
<el-table-column
label=
"
快递
公司名称"
prop=
"name"
/>
<el-table-column
label=
"公司名称"
prop=
"name"
/>
<el-table-column
label=
"
快递
公司 logo "
prop=
"logo"
>
<el-table-column
label=
"公司 logo "
prop=
"logo"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<img
v-if=
"scope.row.logo"
:src=
"scope.row.logo"
alt=
"
快递公司logo"
class=
"h-10
0px"
/>
<img
v-if=
"scope.row.logo"
:src=
"scope.row.logo"
alt=
"
公司logo"
class=
"h-4
0px"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"排序"
align=
"center"
prop=
"sort"
/>
<el-table-column
label=
"排序"
align=
"center"
prop=
"sort"
/>
...
...
src/views/mall/trade/delivery/expressTemplate/ExpressTemplateForm.vue
View file @
6515e218
This diff is collapsed.
Click to expand it.
src/views/mall/trade/delivery/expressTemplate/index.vue
View file @
6515e218
...
@@ -51,14 +51,14 @@
...
@@ -51,14 +51,14 @@
<!-- 列表 -->
<!-- 列表 -->
<ContentWrap>
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"编号"
prop=
"id"
/>
<el-table-column
label=
"编号"
min-width=
"60"
prop=
"id"
/>
<el-table-column
label=
"模板名称"
prop=
"name"
/>
<el-table-column
label=
"模板名称"
min-width=
"100"
prop=
"name"
/>
<el-table-column
label=
"计费方式"
prop=
"chargeMode"
align=
"center"
>
<el-table-column
label=
"计费方式"
prop=
"chargeMode"
min-width=
"100"
align=
"center"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.EXPRESS_CHARGE_MODE"
:value=
"scope.row.chargeMode"
/>
<dict-tag
:type=
"DICT_TYPE.EXPRESS_CHARGE_MODE"
:value=
"scope.row.chargeMode"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"排序"
prop=
"sort"
/>
<el-table-column
label=
"排序"
min-width=
"100"
prop=
"sort"
/>
<el-table-column
<el-table-column
label=
"创建时间"
label=
"创建时间"
align=
"center"
align=
"center"
...
...
src/views/mall/trade/delivery/pickUpStore/PickUpStoreForm.vue
View file @
6515e218
...
@@ -51,7 +51,7 @@
...
@@ -51,7 +51,7 @@
<el-row>
<el-row>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"门店所在地区"
prop=
"areaId"
>
<el-form-item
label=
"门店所在地区"
prop=
"areaId"
>
<el-cascader
v-model=
"formData.areaId"
:options=
"areaList"
:props=
"
areaTree
Props"
/>
<el-cascader
v-model=
"formData.areaId"
:options=
"areaList"
:props=
"
default
Props"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
...
@@ -99,7 +99,7 @@
...
@@ -99,7 +99,7 @@
</el-col>
</el-col>
</el-row>
</el-row>
<el-form-item
label=
"获取经纬度"
>
<el-form-item
label=
"获取经纬度"
>
<el-button
type=
"primary"
@
click=
"mapDialogVisible
.value
= true"
>
获取
</el-button>
<el-button
type=
"primary"
@
click=
"mapDialogVisible = true"
>
获取
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<template
#
footer
>
<template
#
footer
>
...
@@ -121,8 +121,9 @@
...
@@ -121,8 +121,9 @@
import
*
as
DeliveryPickUpStoreApi
from
'@/api/mall/trade/delivery/pickUpStore'
import
*
as
DeliveryPickUpStoreApi
from
'@/api/mall/trade/delivery/pickUpStore'
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
{
defaultProps
}
from
'@/utils/tree'
import
{
getAreaTree
}
from
'@/api/system/area'
import
{
getAreaTree
}
from
'@/api/system/area'
import
*
as
ConfigApi
from
'@/api/
infra
/config'
import
*
as
ConfigApi
from
'@/api/
mall/trade
/config'
const
{
t
}
=
useI18n
()
// 国际化
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
message
=
useMessage
()
// 消息弹窗
...
@@ -161,12 +162,6 @@ const formRules = reactive({
...
@@ -161,12 +162,6 @@ const formRules = reactive({
status
:
[{
required
:
true
,
message
:
'开启状态不能为空'
,
trigger
:
'blur'
}]
status
:
[{
required
:
true
,
message
:
'开启状态不能为空'
,
trigger
:
'blur'
}]
})
})
const
formRef
=
ref
()
// 表单 Ref
const
formRef
=
ref
()
// 表单 Ref
const
areaTreeProps
=
{
children
:
'children'
,
label
:
'name'
,
value
:
'id'
,
emitPath
:
false
}
const
areaList
=
ref
()
// 区域树
const
areaList
=
ref
()
// 区域树
const
tencentLbsUrl
=
ref
(
''
)
// 腾讯位置服务 url
const
tencentLbsUrl
=
ref
(
''
)
// 腾讯位置服务 url
...
@@ -244,16 +239,8 @@ const selectAddress = function (loc: any): void {
...
@@ -244,16 +239,8 @@ const selectAddress = function (loc: any): void {
mapDialogVisible
.
value
=
false
mapDialogVisible
.
value
=
false
}
}
/** 初始化数据 */
/** 初始化腾讯地图 */
const
initData
=
async
()
=>
{
const
initTencentLbsMap
=
async
()
=>
{
formLoading
.
value
=
true
try
{
const
data
=
await
getAreaTree
()
areaList
.
value
=
data
}
finally
{
formLoading
.
value
=
false
}
// TODO @jason:要不创建一个 initTencentLbsMap
window
.
selectAddress
=
selectAddress
window
.
selectAddress
=
selectAddress
window
.
addEventListener
(
window
.
addEventListener
(
'message'
,
'message'
,
...
@@ -267,17 +254,16 @@ const initData = async () => {
...
@@ -267,17 +254,16 @@ const initData = async () => {
},
},
false
false
)
)
const
data
=
await
ConfigApi
.
getConfigKey
(
'tencent.lbs.key'
)
const
data
=
await
ConfigApi
.
getTradeConfig
()
let
key
=
''
const
key
=
data
.
tencentLbsKey
if
(
data
&&
data
.
length
>
0
)
{
key
=
data
}
tencentLbsUrl
.
value
=
`https://apis.map.qq.com/tools/locpicker?type=1&key=
${
key
}
&referer=myapp`
tencentLbsUrl
.
value
=
`https://apis.map.qq.com/tools/locpicker?type=1&key=
${
key
}
&referer=myapp`
}
}
/** 初始化 **/
/** 初始化 **/
onMounted
(()
=>
{
onMounted
(
async
()
=>
{
initData
()
areaList
.
value
=
await
getAreaTree
()
// 加载地图
await
initTencentLbsMap
()
})
})
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
...
...
src/views/mall/trade/delivery/pickUpStore/index.vue
View file @
6515e218
...
@@ -65,16 +65,21 @@
...
@@ -65,16 +65,21 @@
<!-- 列表 -->
<!-- 列表 -->
<ContentWrap>
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"编号"
prop=
"id"
/>
<el-table-column
label=
"编号"
min-width=
"80"
prop=
"id"
/>
<el-table-column
label=
"门店 logo"
prop=
"logo"
>
<el-table-column
label=
"门店 logo"
min-width=
"100"
prop=
"logo"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<img
v-if=
"scope.row.logo"
:src=
"scope.row.logo"
alt=
"门店 logo"
class=
"h-
10
0px"
/>
<img
v-if=
"scope.row.logo"
:src=
"scope.row.logo"
alt=
"门店 logo"
class=
"h-
5
0px"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"门店名称"
prop=
"name"
/>
<el-table-column
label=
"门店名称"
min-width=
"150"
prop=
"name"
/>
<el-table-column
label=
"门店手机"
prop=
"phone"
/>
<el-table-column
label=
"门店手机"
min-width=
"100"
prop=
"phone"
/>
<el-table-column
align=
"center"
label=
"门店详细地址"
prop=
"detailAddress"
/>
<el-table-column
label=
"地址"
min-width=
"100"
prop=
"detailAddress"
/>
<el-table-column
align=
"center"
label=
"开启状态"
prop=
"status"
>
<el-table-column
label=
"营业时间"
min-width=
"180"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
openingTime
}}
~
{{
scope
.
row
.
closingTime
}}
</
template
>
</el-table-column>
<el-table-column
align=
"center"
label=
"开启状态"
min-width=
"100"
prop=
"status"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.COMMON_STATUS"
:value=
"scope.row.status"
/>
<dict-tag
:type=
"DICT_TYPE.COMMON_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</
template
>
...
...
src/views/mall/trade/order/detail/index.vue
View file @
6515e218
This diff is collapsed.
Click to expand it.
src/views/mall/trade/order/form/OrderDeliveryForm.vue
View file @
6515e218
...
@@ -54,7 +54,7 @@ const open = async (row: TradeOrderApi.OrderVO) => {
...
@@ -54,7 +54,7 @@ const open = async (row: TradeOrderApi.OrderVO) => {
resetForm
()
resetForm
()
// 设置数据
// 设置数据
copyValueToTarget
(
formData
.
value
,
row
)
copyValueToTarget
(
formData
.
value
,
row
)
if
(
row
.
logisticsId
===
null
||
row
.
logisticsId
===
0
)
{
if
(
row
.
logisticsId
===
0
)
{
expressType
.
value
=
'none'
expressType
.
value
=
'none'
}
}
dialogVisible
.
value
=
true
dialogVisible
.
value
=
true
...
@@ -73,7 +73,7 @@ const submitForm = async () => {
...
@@ -73,7 +73,7 @@ const submitForm = async () => {
data
.
logisticsId
=
0
data
.
logisticsId
=
0
data
.
logisticsNo
=
''
data
.
logisticsNo
=
''
}
}
await
TradeOrderApi
.
delivery
(
data
)
await
TradeOrderApi
.
delivery
Order
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
dialogVisible
.
value
=
false
// 发送操作成功的事件
// 发送操作成功的事件
...
...
src/views/mall/trade/order/form/OrderUpdateAddressForm.vue
View file @
6515e218
...
@@ -69,7 +69,7 @@ const submitForm = async () => {
...
@@ -69,7 +69,7 @@ const submitForm = async () => {
formLoading
.
value
=
true
formLoading
.
value
=
true
try
{
try
{
const
data
=
unref
(
formData
)
const
data
=
unref
(
formData
)
await
TradeOrderApi
.
updateAddress
(
data
)
await
TradeOrderApi
.
update
Order
Address
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
dialogVisible
.
value
=
false
// 发送操作成功的事件
// 发送操作成功的事件
...
...
src/views/mall/trade/order/form/OrderUpdatePriceForm.vue
View file @
6515e218
...
@@ -69,7 +69,7 @@ const submitForm = async () => {
...
@@ -69,7 +69,7 @@ const submitForm = async () => {
data
.
adjustPrice
=
convertToInteger
(
data
.
adjustPrice
)
data
.
adjustPrice
=
convertToInteger
(
data
.
adjustPrice
)
delete
data
.
payPrice
delete
data
.
payPrice
delete
data
.
newPayPrice
delete
data
.
newPayPrice
await
TradeOrderApi
.
updatePrice
(
data
)
await
TradeOrderApi
.
update
Order
Price
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
dialogVisible
.
value
=
false
// 发送操作成功的事件
// 发送操作成功的事件
...
...
src/views/mall/trade/order/form/OrderUpdateRemarkForm.vue
View file @
6515e218
...
@@ -49,7 +49,7 @@ const submitForm = async () => {
...
@@ -49,7 +49,7 @@ const submitForm = async () => {
formLoading
.
value
=
true
formLoading
.
value
=
true
try
{
try
{
const
data
=
unref
(
formData
)
const
data
=
unref
(
formData
)
await
TradeOrderApi
.
updateRemark
(
data
)
await
TradeOrderApi
.
update
Order
Remark
(
data
)
message
.
success
(
t
(
'common.updateSuccess'
))
message
.
success
(
t
(
'common.updateSuccess'
))
dialogVisible
.
value
=
false
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