import http from './http' import type { WarehouseArea, Storage, Container, Material, ContainerLocation, ContainerMaterial, ContainerLocationHistory, ContainerMaterialHistory, MasterDataPayload, StoragePayload, MaterialPayload, ContainerLocationPayload, ContainerMaterialPayload } from '@/types/wms' function q(params?: Record) { return { params } } export async function listAreas(keyword?: string) { const { data } = await http.get('/wms/areas', q({ q: keyword })) return data } export async function saveArea(payload: MasterDataPayload) { const { data } = payload.id ? await http.put(`/wms/areas/${payload.id}`, payload) : await http.post('/wms/areas', payload) return data } export async function deleteArea(id: string, version?: number) { await http.delete(`/wms/areas/${id}`, q({ version })) } export async function listStorages(keyword?: string) { const { data } = await http.get('/wms/storages', q({ q: keyword })) return data } export async function saveStorage(payload: StoragePayload) { const { data } = payload.id ? await http.put(`/wms/storages/${payload.id}`, payload) : await http.post('/wms/storages', payload) return data } export async function deleteStorage(id: string, version?: number) { await http.delete(`/wms/storages/${id}`, q({ version })) } export async function listContainers(keyword?: string) { const { data } = await http.get('/wms/containers', q({ q: keyword })) return data } export async function saveContainer(payload: MasterDataPayload) { const { data } = payload.id ? await http.put(`/wms/containers/${payload.id}`, payload) : await http.post('/wms/containers', payload) return data } export async function deleteContainer(id: string, version?: number) { await http.delete(`/wms/containers/${id}`, q({ version })) } export async function listMaterials(keyword?: string) { const { data } = await http.get('/wms/materials', q({ q: keyword })) return data } export async function saveMaterial(payload: MaterialPayload) { const { data } = payload.id ? await http.put(`/wms/materials/${payload.id}`, payload) : await http.post('/wms/materials', payload) return data } export async function deleteMaterial(id: string, version?: number) { await http.delete(`/wms/materials/${id}`, q({ version })) } export async function listContainerLocations(params?: { locationType?: string; q?: string }) { const { data } = await http.get('/wms/container-locations', q(params)) return data } export async function saveContainerLocation(payload: ContainerLocationPayload) { const { data } = await http.post('/wms/container-locations', payload) return data } export async function deleteContainerLocation(containerId: string, reason?: string) { await http.delete(`/wms/container-locations/${containerId}`, q({ reason })) } export async function listContainerMaterials(keyword?: string) { const { data } = await http.get('/wms/container-materials', q({ q: keyword })) return data } export async function saveContainerMaterial(payload: ContainerMaterialPayload) { const { data } = payload.id ? await http.put(`/wms/container-materials/${payload.id}`, payload) : await http.post('/wms/container-materials', payload) return data } export async function deleteContainerMaterial(id: string, reason?: string) { await http.delete(`/wms/container-materials/${id}`, q({ reason })) } export async function listContainerLocationHistory(containerId?: string) { const { data } = await http.get('/wms/container-location-history', q({ containerId })) return data } export async function listContainerMaterialHistory(containerId?: string, materialId?: string) { const { data } = await http.get('/wms/container-material-history', q({ containerId, materialId })) return data }