提交
This commit is contained in:
1 parent
8be55c08e9
commit
a903fcf6d4
75 files changed
+9547
-124
No files matched your search
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* 地磅模块 API(直出 JSON,对齐原 dibang;路径 /plans /weighing /inventory /dashboard)
|
||||
*/
|
||||
import { request, parseResponseJson } from '@/utils/request'
|
||||
|
||||
function extractError(body) {
|
||||
if (!body || typeof body !== 'object') return '请求失败'
|
||||
const detail = body.detail
|
||||
if (typeof detail === 'string') return detail
|
||||
if (Array.isArray(detail)) {
|
||||
return detail.map((x) => x?.msg || x?.message || '').filter(Boolean).join(';') || '请求失败'
|
||||
}
|
||||
return body.msg || body.message || '请求失败'
|
||||
}
|
||||
|
||||
function unwrap(res) {
|
||||
if (res.statusCode === 204) return null
|
||||
if (res.statusCode >= 400) {
|
||||
throw new Error(extractError(parseResponseJson(res)))
|
||||
}
|
||||
const body = parseResponseJson(res)
|
||||
if (body == null) return body
|
||||
if (Array.isArray(body)) return body
|
||||
if (typeof body === 'object' && body.code != null) {
|
||||
if (body.code !== 200 && body.code !== 0) {
|
||||
throw new Error(body.message || body.msg || '请求失败')
|
||||
}
|
||||
return body.data != null ? body.data : body
|
||||
}
|
||||
return body
|
||||
}
|
||||
|
||||
async function get(url, params = {}) {
|
||||
const res = await request({ url, method: 'GET', data: params, params })
|
||||
return unwrap(res)
|
||||
}
|
||||
|
||||
async function post(url, data = {}) {
|
||||
const res = await request({ url, method: 'POST', data })
|
||||
return unwrap(res)
|
||||
}
|
||||
|
||||
async function patch(url, data = {}) {
|
||||
const res = await request({ url, method: 'PATCH', data })
|
||||
return unwrap(res)
|
||||
}
|
||||
|
||||
function asList(data) {
|
||||
return Array.isArray(data) ? data : []
|
||||
}
|
||||
|
||||
/** 集合根须带尾斜杠,避免 307 丢 Authorization */
|
||||
function root(path) {
|
||||
return path.endsWith('/') ? path : `${path}/`
|
||||
}
|
||||
|
||||
// ── 仪表盘 ──
|
||||
|
||||
export async function getDashboardStats() {
|
||||
return (await get('/dashboard/stats')) || {}
|
||||
}
|
||||
|
||||
export async function getInboundByCargo() {
|
||||
return asList(await get('/dashboard/inbound/by-cargo'))
|
||||
}
|
||||
|
||||
export async function getOutboundByCargo() {
|
||||
return asList(await get('/dashboard/outbound/by-cargo'))
|
||||
}
|
||||
|
||||
// ── 计划 ──
|
||||
|
||||
export async function listPlans(params = {}) {
|
||||
return asList(await get(root('/plans'), params))
|
||||
}
|
||||
|
||||
export async function getPlan(id) {
|
||||
return get(`/plans/${String(id)}`)
|
||||
}
|
||||
|
||||
export async function getPlanRelated(id) {
|
||||
return (await get(`/plans/${String(id)}/related`)) || { inventories: [], weighings: [] }
|
||||
}
|
||||
|
||||
// ── 地磅单 ──
|
||||
|
||||
export async function listWeighing(params = {}) {
|
||||
return asList(await get(root('/weighing'), params))
|
||||
}
|
||||
|
||||
export async function getWeighing(id) {
|
||||
return get(`/weighing/${String(id)}`)
|
||||
}
|
||||
|
||||
export async function getWeighingRelated(id) {
|
||||
return (await get(`/weighing/${String(id)}/related`)) || { plan: null, inventory: null }
|
||||
}
|
||||
|
||||
export function updateWeighing(id, data) {
|
||||
return patch(`/weighing/${String(id)}`, data)
|
||||
}
|
||||
|
||||
export function voidWeighing(id) {
|
||||
return post(`/weighing/${String(id)}/void`, {})
|
||||
}
|
||||
|
||||
// ── 出入库 ──
|
||||
|
||||
export async function listInventory(params = {}) {
|
||||
return asList(await get(root('/inventory'), params))
|
||||
}
|
||||
|
||||
export async function getInventory(id) {
|
||||
return get(`/inventory/${String(id)}`)
|
||||
}
|
||||
|
||||
export async function getInventoryRelated(id) {
|
||||
return (await get(`/inventory/${String(id)}/related`)) || { plan: null, weighing: null }
|
||||
}
|
||||
|
||||
export function createInventoryLinkForPlan(purchasePlanId, remarks) {
|
||||
return post('/inventory/create-link-for-plan', {
|
||||
purchasePlanId: String(purchasePlanId),
|
||||
remarks
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user