diff --git a/src/views/shop/shopOrder/components/orderInfo.vue b/src/views/shop/shopOrder/components/orderInfo.vue index 378d682..73cfbae 100644 --- a/src/views/shop/shopOrder/components/orderInfo.vue +++ b/src/views/shop/shopOrder/components/orderInfo.vue @@ -13,13 +13,40 @@ > + 发货 + > + 发货 + + + + + 取消订单 + + + + + 删除订单 + + + + + 关闭 - 取消订单 @@ -27,7 +54,7 @@ {{ form.orderNo }} @@ -233,22 +260,103 @@ + + + + + + > + + + + + + + + + {{ record.goodsName || '未知商品' }} + + + + - + + + {{ form.realName || '未填写' }} + + + {{ form.phone || form.mobile || '未填写' }} + + + {{ form.address || '未填写' }} + + + 快递配送 + 自提 + 未设置 + + + + {{ form.sendStartTime }} - {{ form.sendEndTime }} + + 未设置 + + + {{ form.selfTakeMerchantName || '未设置' }} + + + {{ form.expressMerchantName || '未设置' }} + + + + {{ form.selfTakeCode }} + + + @@ -258,11 +366,8 @@ import {ref, reactive, watch} from 'vue'; import {Form} from 'ant-design-vue'; import {assignObject} from 'ele-admin-pro'; -import {ColumnItem} from 'ele-admin-pro/es/ele-pro-table/types'; + import { - CheckOutlined, - CloseOutlined, - CoffeeOutlined, WechatOutlined, AlipayCircleOutlined, IdcardOutlined @@ -272,6 +377,8 @@ import {BszxPay} from '@/api/bszx/bszxPay/model'; import {toDateString} from 'ele-admin-pro'; import {copyText} from "@/utils/common"; import {listShopOrderGoods} from "@/api/shop/shopOrderGoods"; +import {updateShopOrder, removeShopOrder} from '@/api/shop/shopOrder'; +import {message, Modal} from 'ant-design-vue'; const useForm = Form.useForm; @@ -282,10 +389,10 @@ const props = defineProps<{ data?: ShopOrder | null; }>(); -export interface step { - title?: String | undefined; - subTitle?: String | undefined; - description?: String | undefined; +interface Step { + title?: string | undefined; + subTitle?: string | undefined; + description?: string | undefined; } // 是否是修改 @@ -296,7 +403,7 @@ const maxAble = ref(true); const orderGoods = ref([]); // 步骤条 -const steps = ref([ +const steps = ref([ { title: '报餐', description: undefined @@ -473,27 +580,26 @@ const updateVisible = (value: boolean) => { emit('update:visible', value); }; -const columns = ref([ +const columns = ref([ { title: '商品名称', dataIndex: 'goodsName', key: 'goodsName', - align: 'center', width: 280 }, { title: '金额', dataIndex: 'price', - align: 'center', - customRender: ({record}) => { + align: 'center' as const, + customRender: ({record}: {record: any}) => { return `¥${record.price || 0}`; } }, { title: '数量', dataIndex: 'quantity', - align: 'center', - customRender: ({record}) => { + align: 'center' as const, + customRender: ({record}: {record: any}) => { return record.quantity || 1; } }, @@ -501,74 +607,77 @@ const columns = ref([ title: '备注', dataIndex: 'comments', key: 'comments', - align: 'center' + align: 'center' as const }, { title: '是否免费', dataIndex: 'isFree', - align: 'center', - customRender: ({record}) => { + align: 'center' as const, + customRender: ({record}: {record: any}) => { return record.isFree ? '是' : '否'; } } ]); /* 制作步骤条 */ -const loadSteps = (order) => { - steps.value = []; - steps.value.push({ - title: '下单' - }); - steps.value.push({ - title: '付款' - }); - steps.value.push({ - title: '发货' - }); - steps.value.push({ - title: '收货' - }); - steps.value.push({ - title: '完成' - }); +const loadSteps = (order: ShopOrder) => { + steps.value = [ + { + title: '下单', + description: order.createTime ? toDateString(order.createTime, 'MM-dd HH:mm') : undefined + }, + { + title: '付款', + description: undefined + }, + { + title: '发货', + description: undefined + }, + { + title: '收货', + description: undefined + }, + { + title: '完成', + description: undefined + } + ]; - // 下单 - if (order.payStatus == 10) { + // 根据订单状态设置当前步骤 + if (order.orderStatus === 2) { + // 已取消 + active.value = -1; + steps.value = [ + { + title: '下单', + description: order.createTime ? toDateString(order.createTime, 'MM-dd HH:mm') : undefined + }, + { + title: '已取消', + description: '订单已取消' + } + ]; + } else if (order.payStatus === 0) { + // 未付款 active.value = 0; - steps.value[0].description = order.createTime; - } - // 付款 - if (order.payStatus == 20) { + } else if (order.payStatus === 1) { + // 已付款 active.value = 1; - steps.value[0].description = order.createTime; - steps.value[1].description = order.payTime; - } - // 发货 - if (order.payStatus == 20 && order.deliveryStatus == 20) { - active.value = 2; - steps.value[0].description = order.createTime; - steps.value[1].description = order.payTime; - steps.value[2].description = order.deliveryTime; - } - // 收货 - if (order.payStatus == 20 && order.receiptStatus == 20) { - active.value = 3; - steps.value[0].description = order.createTime; - steps.value[1].description = order.payTime; - steps.value[2].description = order.deliveryTime; - steps.value[3].description = order.receiptTime; - } - // 完成 - if (order.payStatus == 20 && order.orderStatus == 30) { - active.value = 4; - steps.value[0].description = order.createTime; - steps.value[1].description = order.payTime; - steps.value[2].description = order.deliveryTime; - steps.value[3].description = order.receiptTime; - } - // 已取消 - if (order.orderStatus == 20) { - active.value = 4; + steps.value[1].description = order.payTime ? toDateString(order.payTime, 'MM-dd HH:mm') : '已付款'; + + if (order.deliveryStatus === 20) { + // 已发货 + active.value = 2; + steps.value[2].description = order.deliveryTime ? toDateString(order.deliveryTime, 'MM-dd HH:mm') : '已发货'; + + if (order.orderStatus === 1) { + // 已完成 + active.value = 4; + steps.value[3].description = '已收货'; + steps.value[4].description = '订单完成'; + } + } } }; @@ -579,8 +688,81 @@ const loadSteps = (order) => { // }); // }; +/* 发货处理 */ +const handleDelivery = () => { + Modal.confirm({ + title: '确认发货', + content: '确定要将此订单标记为已发货吗?', + onOk: async () => { + try { + loading.value = true; + await updateShopOrder({ + ...form, + deliveryStatus: 20, // 已发货 + deliveryTime: new Date().toISOString() + }); + message.success('发货成功'); + emit('done'); + updateVisible(false); + } catch (error: any) { + message.error(error.message || '发货失败'); + } finally { + loading.value = false; + } + } + }); +}; + +/* 取消订单 */ +const handleCancelOrder = () => { + Modal.confirm({ + title: '确认取消订单', + content: '确定要取消此订单吗?取消后无法恢复。', + onOk: async () => { + try { + loading.value = true; + await updateShopOrder({ + ...form, + orderStatus: 2 // 已取消 + }); + message.success('订单已取消'); + emit('done'); + updateVisible(false); + } catch (error: any) { + message.error(error.message || '取消订单失败'); + } finally { + loading.value = false; + } + } + }); +}; + +/* 删除订单 */ +const handleDeleteOrder = () => { + Modal.confirm({ + title: '确认删除订单', + content: '确定要删除此订单吗?删除后无法恢复。', + onOk: async () => { + try { + loading.value = true; + if (form.orderId) { + await removeShopOrder(form.orderId); + message.success('订单已删除'); + emit('done'); + updateVisible(false); + } + } catch (error: any) { + message.error(error.message || '删除订单失败'); + } finally { + loading.value = false; + } + } + }); +}; + /* 保存编辑 */ const save = () => { + // 保留原有的保存功能 }; watch( diff --git a/src/views/shop/shopOrder/components/search.vue b/src/views/shop/shopOrder/components/search.vue index 35899ee..3746c67 100644 --- a/src/views/shop/shopOrder/components/search.vue +++ b/src/views/shop/shopOrder/components/search.vue @@ -67,6 +67,18 @@ /> 重置 导出 + + + + + 批量删除 + @@ -74,6 +86,7 @@ import { ref, watch } from 'vue'; import { utils, writeFile } from 'xlsx'; import { message } from 'ant-design-vue'; + import {DeleteOutlined} from '@ant-design/icons-vue'; import useSearch from "@/utils/use-search"; import {ShopOrder, ShopOrderParam} from "@/api/shop/shopOrder/model"; import {listShopOrder} from "@/api/shop/shopOrder"; @@ -81,8 +94,8 @@ const props = withDefaults( defineProps<{ - // 选中的角色 - selection?: []; + // 选中的订单 + selection?: ShopOrder[]; }>(), {} ); @@ -113,6 +126,11 @@ emit('search', where); }; + // 批量删除 + const removeBatch = () => { + emit('remove'); + }; + /* 搜索 */ const search = () => { const [d1, d2] = dateRange.value ?? []; diff --git a/src/views/shop/shopOrder/index.vue b/src/views/shop/shopOrder/index.vue index ab4b09b..644773c 100644 --- a/src/views/shop/shopOrder/index.vue +++ b/src/views/shop/shopOrder/index.vue @@ -124,20 +124,24 @@