Skip to content

Commit be143ea

Browse files
author
puhui999
committed
订单列表:列表重构: 完善订单发货、修改地址、订单调价、订单备注
1 parent ebcbe63 commit be143ea

File tree

9 files changed

+263
-77
lines changed

9 files changed

+263
-77
lines changed

src/api/mall/trade/order/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,13 @@ export const delivery = async (data: DeliveryVO) => {
109109
export const remark = async (data) => {
110110
return await request.post({ url: `/trade/order/remark`, data })
111111
}
112+
113+
// 订单调价
114+
export const adjustPrice = async (data) => {
115+
return await request.post({ url: `/trade/order/adjust-price`, data })
116+
}
117+
118+
// 修改订单地址
119+
export const adjustAddress = async (data) => {
120+
return await request.post({ url: `/trade/order/adjust-address`, data })
121+
}

src/router/modules/remaining.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
421421
children: [
422422
{
423423
path: 'detail/:orderId(\\d+)',
424-
component: () => import('@/views/mall/trade/order/detail/index.vue'),
424+
component: () => import('@/views/mall/trade/order/components/OrderDetailForm.vue'),
425425
name: 'TradeOrderDetailForm',
426426
meta: { title: '订单详情', icon: '', activeMenu: '/trade/trade/order' }
427427
}

src/utils/dict.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,5 +164,8 @@ export enum DICT_TYPE {
164164
PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态
165165
PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式
166166
PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态
167-
PROMOTION_CONDITION_TYPE = 'promotion_condition_type' // 营销的条件类型枚举
167+
PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举
168+
169+
// ========== MALL - 物流模块 ==========
170+
DELIVERY_TYPE = 'delivery_type' // 配送方式
168171
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<template>
2+
<Dialog v-model="dialogVisible" title="修改订单收货地址" width="35%">
3+
<el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="120px">
4+
<el-form-item label="收件人名称">
5+
<el-input v-model="formData.receiverName" />
6+
</el-form-item>
7+
<el-form-item label="收件人手机">
8+
<el-input v-model="formData.receiverMobile" />
9+
</el-form-item>
10+
<el-form-item label="收件人地区编号">
11+
<el-input v-model="formData.receiverAreaId" />
12+
</el-form-item>
13+
<el-form-item label="收件人详细地址">
14+
<el-input v-model="formData.receiverDetailAddress" />
15+
</el-form-item>
16+
</el-form>
17+
<template #footer>
18+
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
19+
<el-button @click="dialogVisible = false">取 消</el-button>
20+
</template>
21+
</Dialog>
22+
</template>
23+
<script lang="ts" setup>
24+
import * as TradeOrderApi from '@/api/mall/trade/order'
25+
import { copyValueToTarget } from '@/utils'
26+
27+
defineOptions({ name: 'OrderAdjustAddressForm' })
28+
29+
const { t } = useI18n() // 国际化
30+
const message = useMessage() // 消息弹窗
31+
32+
const dialogVisible = ref(false) // 弹窗的是否展示
33+
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
34+
const formData = ref({
35+
id: 0, // 订单编号
36+
receiverName: '', // 收件人名称
37+
receiverMobile: '', // 收件人手机
38+
receiverAreaId: null, //收件人地区编号
39+
receiverDetailAddress: '' //收件人详细地址
40+
})
41+
const formRef = ref() // 表单 Ref
42+
43+
/** 打开弹窗 */
44+
const open = async (row: TradeOrderApi.OrderVO) => {
45+
resetForm()
46+
// 设置数据
47+
copyValueToTarget(formData.value, row)
48+
dialogVisible.value = true
49+
}
50+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
51+
52+
/** 提交表单 */
53+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
54+
const submitForm = async () => {
55+
// 提交请求
56+
formLoading.value = true
57+
try {
58+
const data = unref(formData)
59+
await TradeOrderApi.adjustAddress(data)
60+
message.success(t('common.updateSuccess'))
61+
dialogVisible.value = false
62+
// 发送操作成功的事件
63+
emit('success', true)
64+
} finally {
65+
formLoading.value = false
66+
}
67+
}
68+
69+
/** 重置表单 */
70+
const resetForm = () => {
71+
formData.value = {
72+
id: 0, // 订单编号
73+
receiverName: '', // 收件人名称
74+
receiverMobile: '', // 收件人手机
75+
receiverAreaId: null, //收件人地区编号
76+
receiverDetailAddress: '' //收件人详细地址
77+
}
78+
formRef.value?.resetFields()
79+
}
80+
</script>
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<template>
2+
<Dialog v-model="dialogVisible" title="订单调价" width="25%">
3+
<el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="100px">
4+
<el-form-item label="应付金额(总)">
5+
<el-input v-model="formData.payPrice" disabled />
6+
</el-form-item>
7+
<el-form-item label="订单调价">
8+
<el-input-number v-model="formData.adjustPrice" :precision="2" :step="0.1" class="w-100%" />
9+
<el-tag class="mt-10px" type="warning">订单调价。 正数,加价;负数,减价</el-tag>
10+
</el-form-item>
11+
<el-form-item label="调价后">
12+
<el-input v-model="formData.newPayPrice" disabled />
13+
</el-form-item>
14+
</el-form>
15+
<template #footer>
16+
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
17+
<el-button @click="dialogVisible = false">取 消</el-button>
18+
</template>
19+
</Dialog>
20+
</template>
21+
<script lang="ts" setup>
22+
import * as TradeOrderApi from '@/api/mall/trade/order'
23+
import { convertToInteger, formatToFraction } from '@/utils'
24+
import { cloneDeep } from 'lodash-es'
25+
26+
defineOptions({ name: 'OrderAdjustPriceForm' })
27+
28+
const { t } = useI18n() // 国际化
29+
const message = useMessage() // 消息弹窗
30+
31+
const dialogVisible = ref(false) // 弹窗的是否展示
32+
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
33+
const formData = ref({
34+
id: 0, // 订单编号
35+
adjustPrice: 0, // 订单调价
36+
payPrice: '', // 应付金额(总)
37+
newPayPrice: '' // 调价后应付金额(总)
38+
})
39+
watch(
40+
() => formData.value.adjustPrice,
41+
(data: number) => {
42+
formData.value.newPayPrice = formData.value.payPrice.replace('', '') * 1 + data + ''
43+
}
44+
)
45+
46+
const formRef = ref() // 表单 Ref
47+
48+
/** 打开弹窗 */
49+
const open = async (row: TradeOrderApi.OrderVO) => {
50+
resetForm()
51+
formData.value.id = row.id
52+
// 设置数据
53+
formData.value.adjustPrice = formatToFraction(row.adjustPrice)
54+
formData.value.payPrice = formatToFraction(row.payPrice) + ''
55+
dialogVisible.value = true
56+
}
57+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
58+
59+
/** 提交表单 */
60+
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
61+
const submitForm = async () => {
62+
// 提交请求
63+
formLoading.value = true
64+
try {
65+
const data = cloneDeep(unref(formData))
66+
data.adjustPrice = convertToInteger(data.adjustPrice)
67+
delete data.payPrice
68+
delete data.newPayPrice
69+
await TradeOrderApi.adjustPrice(data)
70+
message.success(t('common.updateSuccess'))
71+
dialogVisible.value = false
72+
// 发送操作成功的事件
73+
emit('success', true)
74+
} finally {
75+
formLoading.value = false
76+
}
77+
}
78+
79+
/** 重置表单 */
80+
const resetForm = () => {
81+
formData.value = {
82+
id: 0, // 订单编号
83+
adjustPrice: 0, // 订单调价
84+
payPrice: '', // 应付金额(总)
85+
newPayPrice: '' // 调价后应付金额(总)
86+
}
87+
formRef.value?.resetFields()
88+
}
89+
</script>

0 commit comments

Comments
 (0)