feat(consignment): 新增和平精英寄卖库存管理、定向收集审核与工单智能匹配履约

This commit is contained in:
yml2213
2026-09-14 11:39:15 +08:00
parent 38c0cf1223
commit 1aa6dba931
30 changed files with 6350 additions and 44 deletions
@@ -0,0 +1,146 @@
import { apiGet, apiPatch, apiPost, apiPut } from '@/lib/http'
import type {
ConsignmentCollectLink,
ConsignmentInventory,
ConsignmentStatsSummary,
ConsignmentSubmission,
WorkOrderInventoryMatchCheck,
} from '@/types/consignment'
// --- 库存管理 ---
export function fetchAdminConsignmentInventories(params?: Record<string, unknown>) {
return apiGet<{ items: ConsignmentInventory[]; total: number }>(
'/api/v1/admin/worker-platform/consignment/inventories',
params,
)
}
export function fetchAdminConsignmentStats() {
return apiGet<ConsignmentStatsSummary>('/api/v1/admin/worker-platform/consignment/stats')
}
export function getAdminConsignmentInventory(id: number | string) {
return apiGet<ConsignmentInventory>(`/api/v1/admin/worker-platform/consignment/inventories/${id}`)
}
export function createAdminConsignmentInventory(payload: Record<string, unknown>) {
return apiPost<ConsignmentInventory>(
'/api/v1/admin/worker-platform/consignment/inventories',
payload,
)
}
export function updateAdminConsignmentInventory(
id: number | string,
payload: Record<string, unknown>,
) {
return apiPut<ConsignmentInventory>(
`/api/v1/admin/worker-platform/consignment/inventories/${id}`,
payload,
)
}
export function toggleAdminConsignmentMatching(id: number | string, allowMatching: boolean) {
return apiPatch<ConsignmentInventory>(
`/api/v1/admin/worker-platform/consignment/inventories/${id}/matching`,
{ allowMatching },
)
}
export function archiveAdminConsignmentInventory(id: number | string) {
return apiPost<ConsignmentInventory>(
`/api/v1/admin/worker-platform/consignment/inventories/${id}/archive`,
{},
)
}
export function returnAdminConsignmentInventory(id: number | string, payload: { reason?: string }) {
return apiPost<ConsignmentInventory>(
`/api/v1/admin/worker-platform/consignment/inventories/${id}/return`,
payload,
)
}
// --- 收集链接 ---
export function fetchAdminConsignmentLinks() {
return apiGet<{ items: ConsignmentCollectLink[] }>(
'/api/v1/admin/worker-platform/consignment/links',
)
}
export function createAdminConsignmentLink(payload: Record<string, unknown>) {
return apiPost<ConsignmentCollectLink>('/api/v1/admin/worker-platform/consignment/links', payload)
}
export function updateAdminConsignmentLink(id: number | string, payload: Record<string, unknown>) {
return apiPut<ConsignmentCollectLink>(
`/api/v1/admin/worker-platform/consignment/links/${id}`,
payload,
)
}
// --- 提报审核 ---
export function fetchAdminConsignmentSubmissions(params?: Record<string, unknown>) {
return apiGet<{ items: ConsignmentSubmission[]; total: number }>(
'/api/v1/admin/worker-platform/consignment/submissions',
params,
)
}
export function getAdminConsignmentSubmission(id: number | string) {
return apiGet<ConsignmentSubmission>(
`/api/v1/admin/worker-platform/consignment/submissions/${id}`,
)
}
export function approveAdminConsignmentSubmission(
id: number | string,
payload: Record<string, unknown>,
) {
return apiPost<{ submission: ConsignmentSubmission; inventory: ConsignmentInventory }>(
`/api/v1/admin/worker-platform/consignment/submissions/${id}/approve`,
payload,
)
}
export function rejectAdminConsignmentSubmission(
id: number | string,
payload: { reviewNote?: string },
) {
return apiPost<ConsignmentSubmission>(
`/api/v1/admin/worker-platform/consignment/submissions/${id}/reject`,
payload,
)
}
// --- 匹配与履约 ---
export function checkWorkOrderConsignmentMatches(workOrderId: number | string) {
return apiGet<WorkOrderInventoryMatchCheck>(
`/api/v1/admin/worker-platform/consignment/matches/${workOrderId}`,
)
}
export function fulfillWorkOrderWithConsignment(payload: {
workOrderId: number | string
inventoryId: number | string
}) {
return apiPost<{ workOrder: unknown; inventory: ConsignmentInventory }>(
'/api/v1/admin/worker-platform/consignment/fulfill',
payload,
)
}
export function revokeWorkOrderConsignmentFulfillment(payload: {
workOrderId: number | string
action?: 'reopen' | 'cancel_order' | 'archive_inventory'
reason?: string
}) {
return apiPost<{ workOrder: unknown; inventory?: ConsignmentInventory | null }>(
'/api/v1/admin/worker-platform/consignment/revoke',
payload,
)
}