diff --git a/src/api/shop/order.ts b/src/api/shop/order.ts index 93f1e57..f596854 100644 --- a/src/api/shop/order.ts +++ b/src/api/shop/order.ts @@ -1,27 +1,78 @@ import { http } from "@/utils/http"; export interface OrderQuery extends BasePageQuery { + /** 订单编号 */ orderNumber?: string; + /** + * 订单状态 + * @remarks + * 1-待付款 | 2-已付款 | 3-已发货 | 4-已完成 | 5-已取消 + */ status?: number; + /** + * 支付状态 + * @remarks + * 1-未支付 | 2-已支付 | 3-退款中 | 4-已退款 + */ payStatus?: number; + /** 订单开始时间(查询范围) */ startTime?: string; + /** 订单结束时间(查询范围) */ endTime?: string; + /** 支付时间(精确查询) */ + payTime?: string; + /** + * 支付方式 + * @remarks + * wechat-微信支付 | balance-余额支付 + */ + paymentMethod?: string; } export interface OrderDTO { + /** 订单唯一ID */ orderId: number; + /** ucid */ ucid?: string; + /** openid */ openid?: string; + /** 支付网关交易id */ tradeId?: string; + /** 手机号码 */ mobile?: string; + /** 企业微信用户ID或汇邦云用户ID */ userid?: string; + /** 用户姓名 */ name?: string; + /** + * 是否内部用户 + * @remarks + * 0-否 | 1-汇邦云用户 | 2-企业微信用户 + */ isInternal?: number; + /** 业务系统订单ID(对接外部系统) */ bizOrderId?: string; + /** 订单总金额 */ totalAmount: number; + /** + * 订单状态 + * @remarks + * 1-待付款 | 2-已付款 | 3-已发货 | 4-已完成 | 5-已取消 + */ status: number; + /** + * 支付状态 + * @remarks + * 1-未支付 | 2-已支付 | 3-退款中 | 4-已退款 + */ payStatus: number; + /** + * 支付方式 + * @remarks + * wechat-微信支付 | balance-余额支付 + */ paymentMethod?: string; + /** 支付时间 */ payTime?: string; } @@ -30,8 +81,22 @@ export const getOrderListApi = (params?: OrderQuery) => { params: { ...params, // 处理时间范围参数格式 - startTime: params?.startTime ? new Date(params.startTime).toISOString() : undefined, - endTime: params?.endTime ? new Date(params.endTime).toISOString() : undefined + startTime: params?.startTime ? params.startTime : undefined, + endTime: params?.endTime ? params.endTime : undefined, + payTime: params?.payTime ? params.payTime : undefined + } + }); +}; + +/** 批量导出订单 */ +export const exportOrderExcelApi = (params: OrderQuery, fileName: string) => { + return http.download("/shop/order/excel", fileName, { + params: { + ...params, + // 处理时间范围参数格式 + startTime: params?.startTime ? params.startTime : undefined, + endTime: params?.endTime ? params.endTime : undefined, + payTime: params?.payTime ? params.payTime : undefined } }); }; \ No newline at end of file diff --git a/src/views/shop/order/index.vue b/src/views/shop/order/index.vue index e1a7af9..71d00f1 100644 --- a/src/views/shop/order/index.vue +++ b/src/views/shop/order/index.vue @@ -2,7 +2,7 @@ import { ref } from "vue"; import { PureTableBar } from "@/components/RePureTableBar"; import { useRenderIcon } from "@/components/ReIcon/src/hooks"; -import { getOrderListApi, type OrderDTO } from "@/api/shop/order"; +import { getOrderListApi, exportOrderExcelApi, type OrderDTO } from "@/api/shop/order"; import Search from "@iconify-icons/ep/search"; import Refresh from "@iconify-icons/ep/refresh"; import { ElMessage } from "element-plus"; @@ -18,8 +18,10 @@ const searchFormParams = ref({ orderNumber: "", status: null, payStatus: null, + paymentMethod: null, startTime: "", - endTime: "" + endTime: "", + payTime: "", }); const pagination = ref({ @@ -66,6 +68,28 @@ const onCurrentChange = (val: number) => { getList(); }; +const exportLoading = ref(false); + +const handleExport = async () => { + try { + exportLoading.value = true; + const dateSuffix = searchFormParams.value.payTime + ? `_${searchFormParams.value.payTime.split(' ')[0].replace(/-/g, '')}` + : ''; + const fileName = `订单列表${dateSuffix}.xlsx`; + await exportOrderExcelApi({ + ...searchFormParams.value, + pageSize: pagination.value.pageSize, + pageNum: pagination.value.currentPage + }, fileName); + ElMessage.success('导出任务已开始,请稍后查看下载文件'); + } catch (e) { + ElMessage.error('导出失败'); + } finally { + exportLoading.value = false; + } +}; + getList(); @@ -73,11 +97,15 @@ getList();