feat:【mall 商城】交易订单(90% ele 部分)

This commit is contained in:
YunaiV
2025-10-15 13:25:46 +08:00
parent 7fd071a79b
commit ce5fc8cf3d
5 changed files with 61 additions and 49 deletions

View File

@@ -1,6 +1,8 @@
<script lang="ts" setup>
import type { MallOrderApi } from '#/api/mall/trade/order';
import { ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { ElMessage } from 'element-plus';
@@ -8,10 +10,18 @@ import { ElMessage } from 'element-plus';
import { useVbenForm } from '#/adapter/form';
import { deliveryOrder } from '#/api/mall/trade/order';
import { $t } from '#/locales';
import { useDeliveryFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref({
id: 0,
expressType: 'express',
logisticsId: undefined,
logisticsNo: '',
});
const [Form, formApi] = useVbenForm({
commonConfig: {
componentProps: {
@@ -33,14 +43,14 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as MallOrderApi.DeliveryRequest;
const data = await formApi.getValues();
if (data.expressType === 'none') {
// 无需发货的情况
data.logisticsId = 0;
data.logisticsNo = '';
}
try {
await deliveryOrder(data);
await deliveryOrder(data as MallOrderApi.DeliveryRequest);
// 关闭并提示
await modalApi.close();
emit('success');
@@ -55,15 +65,15 @@ const [Modal, modalApi] = useVbenModal({
}
// 加载数据
const data = modalApi.getData<MallOrderApi.Order>();
if (!data) {
if (!data || !data.id) {
return;
}
modalApi.lock();
try {
await formApi.setValues({ id: data.id });
if (data.logisticsId === 0) {
await formApi.setValues({ expressType: 'none' });
}
formData.value = data as any;
formData.value.expressType = data.logisticsId === 0 ? 'none' : 'express';
// 设置到 values
await formApi.setValues(formData.value);
} finally {
modalApi.unlock();
}
@@ -72,7 +82,7 @@ const [Modal, modalApi] = useVbenModal({
</script>
<template>
<Modal class="w-1/3" title="发货">
<Modal title="发货" class="w-1/3">
<Form class="mx-4" />
</Modal>
</template>

View File

@@ -1,17 +1,28 @@
<script lang="ts" setup>
import type { MallOrderApi } from '#/api/mall/trade/order';
import { ref } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import { fenToYuan } from '@vben/utils';
import { ElMessage } from 'element-plus';
import { useVbenForm } from '#/adapter/form';
import { updateOrderPrice } from '#/api/mall/trade/order';
import { $t } from '#/locales';
import { usePriceFormSchema } from '../data';
const emit = defineEmits(['success']);
const formData = ref({
id: 0,
payPrice: '0',
adjustPrice: '0',
newPayPrice: '0',
});
const [Form, formApi] = useVbenForm({
commonConfig: {
componentProps: {
@@ -33,9 +44,12 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as MallOrderApi.PriceRequest;
const data = await formApi.getValues();
try {
await updateOrderPrice(data);
await updateOrderPrice({
id: data.id,
adjustPrice: data.adjustPrice * 100, // 转换为分
});
// 关闭并提示
await modalApi.close();
emit('success');
@@ -50,16 +64,17 @@ const [Modal, modalApi] = useVbenModal({
}
// 加载数据
const data = modalApi.getData<MallOrderApi.Order>();
if (!data) {
if (!data || !data.id) {
return;
}
modalApi.lock();
try {
await formApi.setValues({
id: data.id,
payPrice: data.payPrice,
adjustPrice: data.adjustPrice ? data.adjustPrice / 100 : 0,
});
formData.value.id = data.id;
formData.value.payPrice = fenToYuan(data.payPrice || 0);
formData.value.adjustPrice = fenToYuan(data.adjustPrice || 0);
formData.value.newPayPrice = formData.value.payPrice;
// 设置到 values
await formApi.setValues(formData.value);
} finally {
modalApi.unlock();
}
@@ -68,7 +83,7 @@ const [Modal, modalApi] = useVbenModal({
</script>
<template>
<Modal class="w-1/3" title="调整价格">
<Modal class="w-1/3" :title="$t('ui.actionTitle.edit', ['订单价格'])">
<Form class="mx-4" />
</Modal>
</template>