import { submitExportTask } from "/@/api/asyncTask" import request from "/@/utils/request" /** 订单详情中的单张识别证据,字段来自 HardOrderEvidenceImageVo。 */ export interface HardOrderEvidenceImage { /** 服务端证据主键。 */ id: string | number /** 证据类型稳定编码。 */ evidenceType: "FACE_RECOGNITION" | "MENU_RECOGNITION" | string /** 图片角色稳定编码。 */ evidenceRole: "FACE_REFERENCE" | "FACE_LIVE" | "MENU_LIVE" | string /** 图片角色中文名称。 */ evidenceRoleName?: string /** 同一角色下从零开始的图片序号。 */ sequenceNo: number /** 终端采集时间。 */ capturedAt?: string /** 人脸识别相似度快照。 */ similarity?: number | string /** 产生证据的设备主键。 */ hardId?: string | number /** 证据文件访问地址。 */ imageUrl?: string /** 证据状态稳定编码。 */ status: "PENDING" | "AVAILABLE" | "UNAVAILABLE" | string /** 永久缺失或复制失败原因。 */ failureReason?: string } /** 外卖订单的期望送达配置;非外卖或历史订单未记录时为空。 */ export interface HardTakeOutAppointment { /** 送达方式稳定编码:IMMEDIATE 表示立即送,SCHEDULED 表示预约时段。 */ expectDeliveryType?: "IMMEDIATE" | "SCHEDULED" | string /** 预约送达日期,仅预约时段模式使用。 */ expectDeliveryDate?: string /** 预约时段开始时间。 */ expectDeliveryStart?: string /** 预约时段结束时间。 */ expectDeliveryEnd?: string /** 立即送模式下计算出的预计送达时间点。 */ expectArriveTime?: string } /** 当前页面使用的订单详情扩展字段。 */ export interface HardOrderDetail { /** 订单主键。 */ id: string | number /** 设备名称。 */ hardName?: string /** 订单详情才返回的长期识别证据。 */ evidenceImages?: HardOrderEvidenceImage[] /** 外卖订单详情关联的期望送达配置。 */ takeOutAppt?: HardTakeOutAppointment /** 兼容订单详情其余历史字段。 */ [key: string]: unknown } /** 与订单列表一致的筛选条件,不含分页、排序和勾选记录。 */ export type HardOrderStatisticsQuery = Record /** 金额为整数分字符串;计数为字符串,避免累计精度丢失。 */ export interface HardOrderStatisticsSummary { orderCount: string totalPrice: string extraPrice: string couponPrice: string payPrice: string refundPrice: string netPrice: string } export interface HardOrderDailyStatistics extends HardOrderStatisticsSummary { date: string } export interface HardOrderPayTypeStatistics extends HardOrderStatisticsSummary { payType: string | null } export interface HardOrderMerchantStatistics extends HardOrderStatisticsSummary { merchantId: string | null merchantName: string } export interface HardOrderStatisticsData { summary: HardOrderStatisticsSummary daily: HardOrderDailyStatistics[] payTypes: HardOrderPayTypeStatistics[] withoutPayTime: HardOrderStatisticsSummary generatedAt: string } export interface HardOrderStatisticsResponse { data: HardOrderStatisticsData msg?: string } export interface HardOrderMerchantStatisticsPage { records: HardOrderMerchantStatistics[] current: number size: number hasMore: boolean generatedAt: string } export function statistics(query: HardOrderStatisticsQuery) { return request({ url: "/hard/hard-order/statistics", method: "post", data: query, timeout: 25000, }) } export function merchantStatistics(query: HardOrderStatisticsQuery, current = 1, size = 20) { return request({ url: "/hard/hard-order/statistics/merchants", method: "post", params: { current, size }, data: query, timeout: 25000, }) } /** * 离线订单手动支付 */ export function offlinePay(data: any) { return request({ url: "/hard/hard-order/offline-pay", method: "post", data, }) } /** 智能柜手动结算提交的商品项;productId 为 hard_spu 主键。 */ export interface HardDoorManualSettleItem { productId: string | number productCount: number } /** * 智能柜订单手动结算(第三方识别不可用时,人工核对视频后结算) */ export function manualSettle(data: { orderId: string | number; items: HardDoorManualSettleItem[]; reason?: string }) { return request({ url: "/hard/hard-order/manual-settle", method: "post", data, }) } /** * 智能柜订单手动取消(用户未拿商品) */ export function manualCancel(data: { orderId: string | number; reason?: string }) { return request({ url: "/hard/hard-order/manual-cancel", method: "post", data, }) } export function pageJoin(query: any) { return request({ url: "/hard/hard-order/page-join", method: "post", params: { current: query.current, size: query.size, }, data: query, }) } export function noRecogPageJoin(query: any) { return request({ url: "/hard/hard-order/no-recog/page-join", method: "post", params: { current: query.current, size: query.size, }, data: query, }) } export function fetchList(query?: Object) { return request({ url: "/hard/hard-order/page", method: "get", params: query, }) } export function addObj(obj?: Object) { return request({ url: "/hard/hard-order", method: "post", data: obj, }) } export function getObj(id?: string) { return request({ url: "/hard/hard-order/" + id, method: "get", }) } export function delObjs(ids?: Object) { return request({ url: "/hard/hard-order", method: "delete", data: ids, }) } export function putObj(obj?: Object) { return request({ url: "/hard/hard-order", method: "put", data: obj, }) } /** 按原筛选条件提交后台分批导出。 */ export const submitExport = (query: Record) => submitExportTask("/hard/hard-order/export-async", query)