72 lines
2.3 KiB
TypeScript
72 lines
2.3 KiB
TypeScript
import createAxios from '@/utils/request';
|
|
import type IStoreOrder from '@/domain/iStoreOrder.ts';
|
|
import type { IOrderSummaryRow, IStoreOrderItem, IStoreOrderItemUpdate } from '@/domain/iStoreOrder.ts';
|
|
|
|
/** 订单详情(头 + 明细) */
|
|
export async function getStoreOrder(id: number) {
|
|
return createAxios<IStoreOrder>({
|
|
url: `/order/store/${id}`,
|
|
method: 'get',
|
|
});
|
|
}
|
|
|
|
/** 订单状态流转(1已接单 3配送中 4已完成 9取消;已接单→采购中由生成采购单完成) */
|
|
export async function updateOrderStatus(id: number, status: number) {
|
|
return createAxios({
|
|
url: `/order/store/${id}/status`,
|
|
method: 'put',
|
|
data: { status },
|
|
});
|
|
}
|
|
|
|
/** 批量订单状态流转(全量校验,任一订单不允许流转则整批中止) */
|
|
export async function batchUpdateOrderStatus(ids: number[], status: number) {
|
|
return createAxios<{ success: number }>({
|
|
url: '/order/store/batchStatus',
|
|
method: 'put',
|
|
data: { ids, status },
|
|
});
|
|
}
|
|
|
|
/** 修改周转框/周转托盘数量(自动重算附加金额与订单总金额,仅已接单/采购中/配送中可改) */
|
|
export async function updateOrderContainer(id: number, data: { box_num: number; tray_num: number }) {
|
|
return createAxios({
|
|
url: `/order/store/${id}/container`,
|
|
method: 'put',
|
|
data,
|
|
});
|
|
}
|
|
|
|
/** 已接单预览(按商品聚合,生成采购单前确认) */
|
|
export async function getOrderSummary() {
|
|
return createAxios<IOrderSummaryRow[]>({
|
|
url: '/order/store/summary',
|
|
method: 'get',
|
|
});
|
|
}
|
|
|
|
/** 修改订单明细(供应商/品名/规格/单位/单价/成本价/订货量/重量,后端重算订单总价) */
|
|
export async function updateOrderItem(itemId: number, data: IStoreOrderItemUpdate) {
|
|
return createAxios<IStoreOrderItem>({
|
|
url: `/order/store/item/${itemId}`,
|
|
method: 'put',
|
|
data,
|
|
});
|
|
}
|
|
|
|
/** 一键同步明细商品快照为最新商品档案信息(供应商/品名/规格/单位/单价/成本价) */
|
|
export async function syncOrderItem(itemId: number) {
|
|
return createAxios<IStoreOrderItem>({
|
|
url: `/order/store/item/${itemId}/sync`,
|
|
method: 'put',
|
|
});
|
|
}
|
|
|
|
/** 删除订单(软删除,仅已取消订单允许) */
|
|
export async function deleteStoreOrder(id: number) {
|
|
return createAxios({
|
|
url: `/order/store/${id}`,
|
|
method: 'delete',
|
|
});
|
|
}
|