| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /**
- * 地磅模块 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
- })
- }
|