Files
shanxia2.0/miniprogram/api/pl.js
T
wuzilongandCursor 811e6a129f feat(pl): allocate copy_seq_no on first driver plan share-to-group
Add ensure-copy-seq API and miniprogram clipboard prefix so each plan
gets a tenant-scoped fixed serial on first copy; cover allocation with
unit tests and refresh the backend graph.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-09 12:36:58 +08:00

162 lines
4.8 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/vehicle-fuel-register)
*/
import db from '@/utils/dbRequest'
import { fetchVehicleOptions } from '@/api/dbOptions'
function unwrapList(data) {
if (!data || typeof data !== 'object') {
return { items: [], total: 0 }
}
// 兼容门户信封 { code, data: { items, total } }
const payload =
data.data && typeof data.data === 'object' && data.items == null
? data.data
: data
const items = payload.items || payload.rows || payload.list || []
const total = Number(payload.total || 0)
return { items: Array.isArray(items) ? items : [], total }
}
function unwrapEntity(data) {
if (!data || typeof data !== 'object') return data
if (
data.data &&
typeof data.data === 'object' &&
data.id == null &&
data.registerNo == null &&
data.applyNo == null
) {
return data.data
}
return data
}
export const fuelRegisterApi = {
list: async (params = {}) => {
const data = await db.get('/transport/vehicle-fuel-register/', {
mineOnly: true,
...params
})
return unwrapList(data)
},
get: async (id) => unwrapEntity(await db.get(`/transport/vehicle-fuel-register/${id}`)),
create: async (payload) =>
unwrapEntity(
await db.post('/transport/vehicle-fuel-register/', payload, {
params: { mineOnly: true }
})
),
update: async (id, payload) =>
unwrapEntity(
await db.put(`/transport/vehicle-fuel-register/${id}`, payload, {
params: { mineOnly: true }
})
),
cancel: (id, data = {}) =>
db.post(`/transport/vehicle-fuel-register/${id}/cancel`, data, {
params: { mineOnly: true }
}),
restore: (id) =>
db.post(`/transport/vehicle-fuel-register/${id}/restore`, {}, {
params: { mineOnly: true }
})
}
function unwrapData(data) {
if (!data || typeof data !== 'object') return data
if (data.code != null && data.data !== undefined) return data.data
return data
}
export const sitePlanApi = {
history: async (params = {}) => {
const data = unwrapData(await db.get('/transport/site-plan/history', params))
return {
date: data?.date || params.date,
keyword: data?.keyword || '',
records: Array.isArray(data?.records) ? data.records : []
}
},
calendarCounts: async (month) => {
const data = unwrapData(
await db.get('/transport/site-plan/calendar-counts', { month })
)
return data?.counts && typeof data.counts === 'object' ? data.counts : {}
},
get: async (planId) => unwrapData(await db.get(`/transport/site-plan/${planId}`)),
saveFeedback: (planId, payload) =>
db.post(`/transport/site-plan/${planId}/feedback`, payload)
}
export const vehicleRechargeApplyApi = {
list: async (params = {}) => {
const data = await db.get('/transport/vehicle-recharge-apply/', {
mineVehicles: true,
...params
})
return unwrapList(data)
},
get: async (id) =>
unwrapEntity(
await db.get(`/transport/vehicle-recharge-apply/${id}`, {
mineVehicles: true
})
),
create: async (payload) =>
unwrapEntity(
await db.post('/transport/vehicle-recharge-apply/', payload, {
params: { mineVehicles: true }
})
),
update: async (id, payload) =>
unwrapEntity(
await db.put(`/transport/vehicle-recharge-apply/${id}`, payload, {
params: { mineVehicles: true }
})
),
submit: (id) =>
db.post(
`/transport/vehicle-recharge-apply/${id}/submit`,
{},
{ params: { mineVehicles: true } }
),
cancel: (id, data = {}) =>
db.post(`/transport/vehicle-recharge-apply/${id}/cancel`, data, {
params: { mineVehicles: true }
}),
withdraw: (id) =>
db.post(
`/transport/vehicle-recharge-apply/${id}/withdraw`,
{},
{ params: { mineVehicles: true } }
)
}
export const driverPlanApi = {
history: async (params = {}) => {
const data = unwrapData(await db.get('/transport/driver-plan/history', params))
return {
date: data?.date || params.date,
records: Array.isArray(data?.records) ? data.records : []
}
},
calendarCounts: async (month) => {
const data = unwrapData(
await db.get('/transport/driver-plan/calendar-counts', { month })
)
return data?.counts && typeof data.counts === 'object' ? data.counts : {}
},
get: async (planId) => unwrapData(await db.get(`/transport/driver-plan/${planId}`)),
ensureCopySeq: async (planId) =>
unwrapData(await db.post(`/transport/driver-plan/${planId}/ensure-copy-seq`, {})),
saveFeedback: (planId, payload) =>
db.post(`/transport/driver-plan/${planId}/feedback`, payload),
saveDriverFeedback: (planId, payload) =>
db.post(`/transport/driver-plan/${planId}/driver-feedback`, payload)
}
export { fetchVehicleOptions }
export default fuelRegisterApi