import request from '@/utils/http' // ========================================= // 订单管理 API // ========================================= /** * 获取订单列表 */ export function fetchOrderList(params: { page?: number pageSize?: number keyword?: string status?: string orderStatus?: string deliveryStatus?: string payStatus?: string paymentMethod?: string regionId?: string clientId?: string startDate?: string endDate?: string }) { return request.get<{ list: Api.Order.OrderItem[] total: number page: number pageSize: number totalPages: number }>({ url: '/web/admin/orders', params }) } /** * 获取订单详情 */ export function fetchOrderDetail(id: string) { return request.get({ url: `/web/admin/orders/${id}` }) } /** * 分配配送员 */ export function fetchAssignDelivery(data: { orderId: string deliverId: string deliveryDeadlineAt: string dispatchRemark?: string }) { return request.post({ url: `/web/admin/orders/${data.orderId}/assign-deliverer`, params: { deliverId: data.deliverId, deliveryDeadlineAt: data.deliveryDeadlineAt, dispatchRemark: data.dispatchRemark || '' } }) } /** * 审核取消订单 */ export function fetchReviewCancel(data: { orderId: string; approved: boolean; note?: string }) { return request.post({ url: `/web/admin/orders/${data.orderId}/review-cancel`, params: { approved: data.approved, note: data.note } }) } /** * 完结订单 */ export function fetchCompleteOrder(orderId: string) { return request.post({ url: `/web/admin/orders/${orderId}/complete` }) } /** * 取消订单 */ export function fetchCancelOrder(data: { orderId: string reason: string note?: string evidenceImageUrls?: string[] }) { return request.post({ url: `/web/admin/orders/${data.orderId}/cancel`, params: { reason: data.reason, note: data.note, evidenceImageUrls: data.evidenceImageUrls || [] } }) } export function fetchOrderAdjusts(orderId: string) { return request.get({ url: `/web/admin/orders/${orderId}/adjusts` }) } /** * 运营调整订单(商品/地址) */ export function fetchAdjustOrder(data: { orderId: string adjustments?: Array<{ orderItemId: string adjustType: 'reduce' | 'delete' | 'substitute' newQuantity?: number newProductId?: string reason: string }> addressUpdate?: { deliveryAddress?: string contactPerson?: string contactPhone?: string reason?: string } }) { return request.post({ url: `/web/admin/orders/${data.orderId}/adjust`, params: { adjustments: data.adjustments || [], addressUpdate: data.addressUpdate || undefined } }) } /** * 获取可调整的订单列表 */ export function fetchAdjustableOrders(params?: { keyword?: string }) { return request.get({ url: '/web/admin/orders/adjustable', params }) } /** * 获取订单商品列表 */ export function fetchOrderItems(orderId: string) { return request.get({ url: `/web/admin/orders/${orderId}/items` }) } // ========================================= // 配送任务管理 API // ========================================= /** * 获取配送任务列表 */ export function fetchDeliveryList(params: { page?: number pageSize?: number keyword?: string status?: string regionId?: string deliverId?: string }) { return request.get<{ list: Api.Delivery.DeliveryTask[] total: number page: number pageSize: number totalPages: number }>({ url: '/web/delivery-tasks', params }) } /** * 获取配送任务详情 */ export function fetchDeliveryDetail(id: string) { return request.get({ url: `/web/delivery-tasks/${id}` }) } // ========================================= // 配送时效预警 API // ========================================= /** * 获取配送时效预警列表 */ export function fetchDeliveryWarningList(params: { page?: number pageSize?: number warningType?: string isResolved?: boolean }) { return request.get({ url: '/web/admin/delivery-warning/list', params }) } /** * 解决预警 */ export function fetchResolveWarning(id: string, note: string) { return request.post({ url: `/web/admin/delivery-warning/handle/${id}`, params: { note } }) } /** * 获取配送预警详情 */ export function fetchDeliveryWarningDetail(id: string) { return request.get({ url: `/web/admin/delivery-warning/detail/${id}` }) } // ========================================= // 询价单管理 API // ========================================= /** * 获取询价单列表 */ export function fetchInquiryList(params: { page?: number pageSize?: number keyword?: string status?: string regionId?: string }) { return request.get({ url: '/web/admin/inquiries', params }) } /** * 获取询价单详情 */ export function fetchInquiryDetail(id: string) { return request.get({ url: `/web/admin/inquiries/${id}` }) } /** * 更新询价单 */ export function fetchUpdateInquiry( id: string, data: Partial<{ title: string; remark: string; productIds: string[] }> ) { return request.put({ url: `/web/admin/inquiries/${id}`, params: data }) } /** * 创建询价单 */ export function fetchCreateInquiry(data: { title: string regionId: string productIds: string[] remark?: string }) { return request.post({ url: '/web/admin/inquiries', params: data }) } /** * 发布询价单 */ export function fetchPublishInquiry(id: string) { return request.post({ url: `/web/admin/inquiries/${id}/publish` }) } /** * 取消发布询价单 */ export function fetchUnpublishInquiry(id: string) { return request.post({ url: `/web/admin/inquiries/${id}/unpublish` }) } /** * 关闭询价单 */ export function fetchCloseInquiry(id: string) { return request.post({ url: `/web/admin/inquiries/${id}/close` }) } /** * 获取询价单列表(简单版) */ export function fetchInquiryListSimple(params?: { status?: string }) { return request.get({ url: '/web/admin/inquiries/simple', params }) } // ========================================= // 报价管理 API // ========================================= /** * 获取报价列表 */ export function fetchQuotationList(params: { page?: number pageSize?: number inquiryId?: string status?: string regionId?: string }) { return request.get({ url: '/web/admin/quotations', params }) } /** * 获取报价详情 */ export function fetchQuotationDetail(id: string) { return request.get({ url: `/web/admin/quotations/${id}` }) } /** * 获取报价对比数据 */ export function fetchQuotationCompareData(inquiryId: string) { return request.get({ url: '/web/admin/quotation-compare', params: { inquiryId } }) } /** * 确认选择供应商报价 */ export function fetchConfirmQuotationSupplier(data: { inquiryId: string quotationId: string finalPriceItems?: Array<{ productId: string price: number /** 本次发布时使用的临时调价系数(%),用于回显与二次调整 */ pricingCoefficient?: number }> }) { return request.post({ url: '/web/admin/quotations/confirm-supplier', params: data }) } /** * 获取某询价单:各供应商最新一次报价(含未报价) */ export function fetchLatestQuotationsBySupplier(inquiryId: string) { return request.get<{ inquiryId: string regionId: string list: Array<{ supplierId: string supplierName: string supplierPhone?: string quotation: null | { id: string status: string totalAmount: number submitTime?: string createAt?: string items: Array<{ id: string productId: string productName?: string categoryName?: string unitId?: string unitName?: string measureValue?: number | null price: number }> } }> total: number }>({ url: `/web/admin/inquiries/${inquiryId}/quotations/latest-by-supplier` }) } /** * 获取某询价单:全部报价单历史(第三tab) */ export function fetchQuotationHistoryByInquiry(params: { inquiryId: string page?: number pageSize?: number supplierId?: string status?: string startDate?: string endDate?: string }) { return request.get<{ list: any[] total: number page: number pageSize: number totalPages: number }>({ url: `/web/admin/inquiries/${params.inquiryId}/quotations/history`, params: { page: params.page, pageSize: params.pageSize, supplierId: params.supplierId, status: params.status, startDate: params.startDate, endDate: params.endDate } }) } /** * 获取某询价单当前被选中的报价/价格明细 */ export function fetchSelectedQuotationByInquiry(inquiryId: string) { return request.get({ url: `/web/admin/inquiries/${inquiryId}/quotations/selected` }) } // ========================================= // 价格清单管理 API // ========================================= /** * 获取价格清单列表 */ export function fetchPriceListList(params: { page?: number pageSize?: number regionId?: string status?: string }) { return request.get({ url: '/web/admin/price-lists', params }) } /** * 获取价格清单详情 */ export function fetchPriceListDetail(id: string) { return request.get({ url: `/web/admin/price-lists/${id}` }) } /** * 创建价格清单 */ export function fetchCreatePriceList(data: { regionId: string supplierId: string remark?: string }) { return request.post({ url: '/web/admin/price-lists', params: data }) } /** * 发布价格清单 */ export function fetchPublishPriceList(id: string) { return request.post({ url: `/web/admin/price-lists/${id}/publish` }) } // ========================================= // 价格版本管理 API // ========================================= /** * 获取价格版本列表 */ export function fetchPriceVersionList(params: { page?: number pageSize?: number regionId?: string supplierId?: string status?: string }) { return request.get({ url: '/web/admin/price-versions', params }) } /** * 获取价格版本详情 */ export function fetchPriceVersionDetail(id: string) { return request.get({ url: `/web/admin/price-versions/${id}` }) } /** * 创建价格版本 */ export function fetchCreatePriceVersion(data: { regionId: string supplierId: string effectiveTime?: string remark?: string }) { return request.post({ url: '/web/admin/price-versions', params: data }) } /** * 发布价格版本 */ export function fetchPublishPriceVersion(id: string) { return request.post({ url: `/web/admin/price-versions/${id}/publish` }) } /** * 禁用价格版本 */ export function fetchDisablePriceVersion(id: string) { return request.post({ url: `/web/admin/price-versions/${id}/disable` }) } /** * 版本对比 */ export function fetchComparePriceVersions(params: { versionIds: string[] }) { return request.get({ url: '/web/admin/price-versions/compare', params: { versionIds: params.versionIds.join(',') } }) } // ========================================= // 结算管理 API // ========================================= export function fetchClientSettlementOrderList(params: { page?: number pageSize?: number regionId?: string clientId?: string keyword?: string startDate?: string endDate?: string }) { return request.get<{ list: any[] total: number page: number pageSize: number totalPages: number summary: { pendingAmount: number currentPageAmount: number } }>({ url: '/web/admin/client-settlements/orders', params }) } export function fetchSupplierSettlementOrderList(params: { page?: number pageSize?: number regionId?: string supplierId?: string keyword?: string startDate?: string endDate?: string }) { return request.get<{ list: any[] total: number page: number pageSize: number totalPages: number summary: { pendingAmount: number currentPageAmount: number } }>({ url: '/web/admin/supplier-settlements/orders', params }) } export function fetchCreateClientSettlement(data: { selectionMode: 'ids' | 'allFiltered' orderIds?: string[] filters?: Record excludedOrderIds?: string[] voucherUrls: string[] remark?: string }) { return request.post({ url: '/web/admin/client-settlements', params: data }) } export function fetchCreateSupplierSettlement(data: { selectionMode: 'ids' | 'allFiltered' orderIds?: string[] filters?: Record excludedOrderIds?: string[] voucherUrls: string[] remark?: string }) { return request.post({ url: '/web/admin/supplier-settlements', params: data }) } /** 客户结算单(批次)列表 */ export function fetchClientSettlementSheetList(params: { page?: number pageSize?: number regionId?: string clientId?: string settlementNo?: string startDate?: string endDate?: string }) { return request.get<{ list: any[] total: number page: number pageSize: number totalPages: number }>({ url: '/web/admin/client-settlements/sheets', params }) } /** 客户结算单详情 */ export function fetchClientSettlementSheetDetail(id: string) { return request.get({ url: `/web/admin/client-settlements/sheets/${id}` }) } /** 更新客户结算单(备注/凭证,服务端写历史表) */ export function fetchUpdateClientSettlementSheet( id: string, data: { remark?: string; voucherUrls?: string[] } ) { return request.put({ url: `/web/admin/client-settlements/sheets/${id}`, params: data }) } /** 供应商结算单(批次)列表 */ export function fetchSupplierSettlementSheetList(params: { page?: number pageSize?: number regionId?: string supplierId?: string settlementNo?: string startDate?: string endDate?: string }) { return request.get<{ list: any[] total: number page: number pageSize: number totalPages: number }>({ url: '/web/admin/supplier-settlements/sheets', params }) } /** 供应商结算单详情 */ export function fetchSupplierSettlementSheetDetail(id: string) { return request.get({ url: `/web/admin/supplier-settlements/sheets/${id}` }) } /** 更新供应商结算单(备注/凭证,服务端写历史表) */ export function fetchUpdateSupplierSettlementSheet( id: string, data: { remark?: string; voucherUrls?: string[] } ) { return request.put({ url: `/web/admin/supplier-settlements/sheets/${id}`, params: data }) } /** * 获取结算列表 */ export function fetchSettlementList(params: { page?: number pageSize?: number status?: string regionId?: string clientId?: string }) { return request.get({ url: '/web/admin/settlements', params }) } /** * 确认结算 */ export function fetchConfirmSettlement(data: { settlementId: string; note?: string }) { return request.post({ url: `/web/admin/settlements/${data.settlementId}/confirm`, params: { note: data.note } }) } // ========================================= // 退款管理 API // ========================================= /** * 获取退款列表 */ export function fetchRefundList(params: { page?: number pageSize?: number status?: string orderId?: string }) { return request.get({ url: '/web/admin/refunds', params }) } /** * 获取退款详情 */ export function fetchRefundDetail(id: string) { return request.get({ url: `/web/admin/refunds/${id}` }) } /** * 处理退款 */ export function fetchProcessRefund(data: { refundId: string; approved: boolean; note?: string }) { return request.post({ url: `/web/admin/refunds/${data.refundId}/process`, params: { approved: data.approved, note: data.note } }) } // ========================================= // 统计管理 API // ========================================= /** 运营工作台 / 仪表盘接口返回(与后端 success data 一致,驼峰) */ export interface WorkbenchDashboardData { todayOrderCount: number todayOrderAmount: number monthOrderCount: number monthOrderAmount: number pendingDeliveryCount: number completedOrderCount: number activePriceListCount: number customerCount: number supplierCount: number todayOrderCountHint?: string todayOrderAmountHint?: string deliveryWarningCount?: number recentOrders?: Array<{ id: string orderNo: string clientName: string regionName: string totalAmount: number orderStatus: string cancelStatus?: string deliveryStatus?: string createAt?: string | null }> todoSnapshots?: Array<{ type: string title: string count: number items: string[] }> } /** * 获取统计数据 */ export function fetchStatistics(params: { type?: string startDate?: string endDate?: string regionId?: string }) { return request.get({ url: '/web/admin/statistics/dashboard', params }) } /** 运营工作台专用:同 statistics/dashboard,带类型 */ export function fetchWorkbenchDashboard(params?: { regionId?: string }) { return request.get({ url: '/web/admin/statistics/dashboard', params }) } /** 按日订单趋势(与后端 `get_order_trend` 一致;金额单位:元) */ export interface OrderTrendDayItem { date: string orderCount: number orderAmount: number } export function fetchOrderTrend(params?: { regionId?: string; days?: number }) { return request.get({ url: '/web/admin/statistics/orders/trend', params: { regionId: params?.regionId, days: params?.days ?? 30 } }) } /** 今日各区域订单汇总(金额单位:元) */ export interface TodayRegionOrderStatItem { regionId: string regionName: string orderCount: number orderAmount: number } export function fetchTodayOrdersByRegion(params?: { regionId?: string }) { return request.get({ url: '/web/admin/statistics/orders/today-by-region', params: { regionId: params?.regionId } }) } /** 今日下单客户:金额(元) + 商品数量合计 */ export interface TodayClientOrderStatItem { clientId: string clientName: string orderAmount: number productQuantity: number } export function fetchTodayOrdersByClient(params?: { regionId?: string; limit?: number }) { return request.get({ url: '/web/admin/statistics/orders/today-by-client', params: { regionId: params?.regionId, limit: params?.limit ?? 30 } }) } /** * 获取 API 请求日志(中间件记录全量出入参) */ export function fetchApiRequestLogList(params: { page?: number pageSize?: number httpMethod?: string statusCode?: number pathPrefix?: string keyword?: string startDate?: string endDate?: string }) { return request.get({ url: '/web/admin/api-request-logs', params }) } // ========================================= // 发票管理 API // ========================================= /** * 获取发票列表 */ export function fetchInvoiceList(params: { page?: number pageSize?: number invoiceNo?: string clientName?: string invoiceType?: string status?: string startDate?: string endDate?: string }) { return request.get({ url: '/web/admin/invoice/list', params }) } /** * 获取发票详情 */ export function fetchInvoiceDetail(id: string) { return request.get({ url: `/web/admin/invoice/detail/${id}` }) } /** * 创建发票 */ export function fetchCreateInvoice(data: { orderId: string invoiceType: string title: string taxRate?: number taxNo?: string bank?: string bankAccount?: string address?: string phone?: string remark?: string }) { return request.post({ url: '/web/admin/invoice/create', params: data }) } /** * 开具发票 */ export function fetchIssueInvoice(id: string, invoiceUrl?: string) { return request.post({ url: `/web/admin/invoice/issue/${id}`, params: { invoiceUrl } }) } /** * 作废发票 */ export function fetchVoidInvoice(id: string) { return request.post({ url: `/web/admin/invoice/void/${id}` }) } /** * 下载发票 */ export function fetchDownloadInvoice(id: string) { return request.get({ url: `/api/invoice/download/${id}` }) } // ========================================= // 订单调整 API // ========================================= /** * 获取订单调整列表 */ export function fetchOrderAdjustList(params: { page?: number pageSize?: number keyword?: string adjustType?: string startDate?: string endDate?: string }) { return request.post({ url: '/web/admin/order-adjust/list', params }) } /** * 获取订单调整详情 */ export function fetchOrderAdjustDetail(id: string) { return request.get({ url: `/web/admin/order-adjust/detail/${id}` }) } /** * 发起订单调整 */ export function fetchCreateOrderAdjust(data: { orderId: string adjustType: string productId: string afterQuantity?: number substituteProductId?: string newProductId?: string newQuantity?: number reason: string }) { return request.post({ url: '/web/admin/order-adjust/create', params: data }) } // ========================================= // 商品 API // ========================================= /** * 获取商品列表(用于替代/补录) */ export function fetchProductListSimple(params?: { keyword?: string; categoryId?: string }) { return request.get({ url: '/web/admin/products/simple', params }) } /** * 上传商品图片 */ export function fetchUploadProductImage(data: FormData) { return request.post({ url: '/web/admin/products/upload-image', data }) } /** * 通用附件上传(multipart:business_type、business_id、file) */ export function fetchUploadAttachment(data: FormData) { return request.post<{ id: string fileName: string fileUrl: string fileSize: number fileSizeDisplay?: string fileType?: string }>({ url: '/web/admin/attachment/upload', data }) } // ========================================= // 系统配置 API // ========================================= /** * 获取运营端系统设置(配送 / 订单,存于 biz_system_config) */ export function fetchSystemConfig() { return request.get({ url: '/web/admin/system-config/settings' }) } /** * 更新运营端系统设置 */ export function fetchUpdateSystemConfig(data: Record) { return request.put({ url: '/web/admin/system-config/settings', params: data }) }