pl.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * 运输模块 API(/transport/*)
  3. * 协议与报销侧 bx HTTP 一致:有信封时 code===0;直出 { list, total } 亦可。
  4. */
  5. import { request, parseResponseJson } from '@/utils/request'
  6. function unwrap(res) {
  7. const body = parseResponseJson(res)
  8. if (!body || typeof body !== 'object') {
  9. throw new Error('接口响应异常')
  10. }
  11. if (body.code != null && body.code !== 0) {
  12. throw new Error(body.msg || body.message || '请求失败')
  13. }
  14. return body.data != null ? body.data : body
  15. }
  16. async function get(url, params = {}) {
  17. const res = await request({ url, method: 'GET', data: params, params })
  18. return unwrap(res)
  19. }
  20. async function post(url, data = {}) {
  21. const res = await request({ url, method: 'POST', data })
  22. return unwrap(res)
  23. }
  24. async function patch(url, data = {}) {
  25. const res = await request({ url, method: 'PATCH', data })
  26. return unwrap(res)
  27. }
  28. function pageParams(query = {}) {
  29. const { pageNum, page, pageSize, ...rest } = query
  30. const params = {
  31. page: pageNum ?? page ?? 1,
  32. pageSize: pageSize ?? 20
  33. }
  34. Object.keys(rest).forEach((k) => {
  35. if (rest[k] != null && rest[k] !== '') params[k] = rest[k]
  36. })
  37. return params
  38. }
  39. function normalizeList(data) {
  40. if (Array.isArray(data)) return { rows: data, total: data.length }
  41. const d = data || {}
  42. return {
  43. rows: d.rows || d.list || [],
  44. total: d.total ?? 0
  45. }
  46. }
  47. // ── 运输计划 ──
  48. export async function listPlans(query = {}) {
  49. return normalizeList(await get('/transport/plan/', pageParams(query)))
  50. }
  51. export async function getPlan(id) {
  52. return get(`/transport/plan/${String(id)}`)
  53. }
  54. export async function getPlanArrangeInfo(id) {
  55. return get(`/transport/plan/${String(id)}/arrange-info`)
  56. }
  57. export async function updateProductCerts(id, products) {
  58. return patch(`/transport/plan/${String(id)}/product-certs`, { products })
  59. }
  60. export async function setHazardCertReady(id, ready) {
  61. return patch(`/transport/plan/${String(id)}/hazard-cert-ready`, { ready: !!ready })
  62. }
  63. export async function archivePlan(id, body) {
  64. return post(`/transport/plan/${String(id)}/archive`, body || {})
  65. }
  66. export async function arrangeTransport(planId, data) {
  67. return post(`/transport/order/arrange/${String(planId)}`, data)
  68. }
  69. // ── 车辆 / 驾押(安排运输选人)──
  70. export async function listVehicles(query = {}) {
  71. return normalizeList(await get('/transport/vehicle', pageParams(query)))
  72. }
  73. export async function listPersonnel(query = {}) {
  74. return normalizeList(await get('/transport/personnel', pageParams(query)))
  75. }
  76. // ── 运费结算 ──
  77. export async function listFreight(query = {}) {
  78. return normalizeList(await get('/transport/freight/', pageParams(query)))
  79. }
  80. export async function getFreight(id) {
  81. return get(`/transport/freight/${String(id)}`)
  82. }
  83. export async function listUnsettledPlans(query = {}) {
  84. return normalizeList(await get('/transport/freight/unsettled-plans', pageParams(query)))
  85. }
  86. export async function createFreight(data) {
  87. return post('/transport/freight/', data)
  88. }
  89. /** 提交审批(需审批人 ID,复杂选人建议 Web;小程序可传已选 ID) */
  90. export async function submitFreightApproval(id, data) {
  91. return post(`/transport/freight/${String(id)}/submit-approval`, data)
  92. }
  93. export async function processFreightApproval(approvalId, data) {
  94. return post(`/transport/freight/approval/${String(approvalId)}`, data)
  95. }
  96. export async function getFreightApprovalFlow(id) {
  97. const data = await get(`/transport/freight/${String(id)}/approval-flow`)
  98. return Array.isArray(data) ? data : []
  99. }