Files
shanxia2.0/miniprogram/api/pl.js
T
2026-07-17 21:59:47 +08:00

125 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 运输模块 API(/transport/*)
* 协议与报销侧 bx HTTP 一致:有信封时 code===0;直出 { list, total } 亦可。
*/
import { request, parseResponseJson } from '@/utils/request'
function unwrap(res) {
const body = parseResponseJson(res)
if (!body || typeof body !== 'object') {
throw new Error('接口响应异常')
}
if (body.code != null && body.code !== 0) {
throw new Error(body.msg || body.message || '请求失败')
}
return body.data != null ? body.data : 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 pageParams(query = {}) {
const { pageNum, page, pageSize, ...rest } = query
const params = {
page: pageNum ?? page ?? 1,
pageSize: pageSize ?? 20
}
Object.keys(rest).forEach((k) => {
if (rest[k] != null && rest[k] !== '') params[k] = rest[k]
})
return params
}
function normalizeList(data) {
if (Array.isArray(data)) return { rows: data, total: data.length }
const d = data || {}
return {
rows: d.rows || d.list || [],
total: d.total ?? 0
}
}
// ── 运输计划 ──
export async function listPlans(query = {}) {
return normalizeList(await get('/transport/plan/', pageParams(query)))
}
export async function getPlan(id) {
return get(`/transport/plan/${String(id)}`)
}
export async function getPlanArrangeInfo(id) {
return get(`/transport/plan/${String(id)}/arrange-info`)
}
export async function updateProductCerts(id, products) {
return patch(`/transport/plan/${String(id)}/product-certs`, { products })
}
export async function setHazardCertReady(id, ready) {
return patch(`/transport/plan/${String(id)}/hazard-cert-ready`, { ready: !!ready })
}
export async function archivePlan(id, body) {
return post(`/transport/plan/${String(id)}/archive`, body || {})
}
export async function arrangeTransport(planId, data) {
return post(`/transport/order/arrange/${String(planId)}`, data)
}
// ── 车辆 / 驾押(安排运输选人)──
export async function listVehicles(query = {}) {
return normalizeList(await get('/transport/vehicle', pageParams(query)))
}
export async function listPersonnel(query = {}) {
return normalizeList(await get('/transport/personnel', pageParams(query)))
}
// ── 运费结算 ──
export async function listFreight(query = {}) {
return normalizeList(await get('/transport/freight/', pageParams(query)))
}
export async function getFreight(id) {
return get(`/transport/freight/${String(id)}`)
}
export async function listUnsettledPlans(query = {}) {
return normalizeList(await get('/transport/freight/unsettled-plans', pageParams(query)))
}
export async function createFreight(data) {
return post('/transport/freight/', data)
}
/** 提交审批(需审批人 ID,复杂选人建议 Web;小程序可传已选 ID) */
export async function submitFreightApproval(id, data) {
return post(`/transport/freight/${String(id)}/submit-approval`, data)
}
export async function processFreightApproval(approvalId, data) {
return post(`/transport/freight/approval/${String(approvalId)}`, data)
}
export async function getFreightApprovalFlow(id) {
const data = await get(`/transport/freight/${String(id)}/approval-flow`)
return Array.isArray(data) ? data : []
}