This commit is contained in:
zlwu committed 2026-07-17 21:59:47 +08:00
1 parent 8be55c08e9
commit a903fcf6d4
75 files changed
+9547 -124

No files matched your search

+124
View File
@@ -0,0 +1,124 @@
/**
* 运输模块 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 : []
}