| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { personnelApi, vehicleApi, type VehicleDetail, type VehiclePersonnelRow } from '@/api/pl'
- import type { VehiclePersonnelViewRow } from '@/components/business/pl-vehicle-personnel-view-list/index.vue'
- export interface VehicleViewBundle {
- detail: VehicleDetail
- personnelList: VehiclePersonnelViewRow[]
- }
- export async function loadPersonnelWithCerts(
- personnelList: VehiclePersonnelRow[]
- ): Promise<VehiclePersonnelViewRow[]> {
- return Promise.all(
- personnelList.map(async person => {
- if (!person.personnelId) {
- return { ...person, certList: [] } as VehiclePersonnelViewRow
- }
- try {
- const res = await personnelApi.get(person.personnelId)
- const detail = ((res.data ?? res) || {}) as { certList?: VehiclePersonnelViewRow['certList'] }
- return {
- ...person,
- certList: detail.certList || []
- } as VehiclePersonnelViewRow
- } catch {
- return { ...person, certList: [] } as VehiclePersonnelViewRow
- }
- })
- )
- }
- export async function loadVehicleViewBundle(vehicleId: string): Promise<VehicleViewBundle> {
- const res = await vehicleApi.get(vehicleId)
- const detail = ((res.data ?? res) || {}) as VehicleDetail
- const personnelList = await loadPersonnelWithCerts(detail.personnelList || [])
- return { detail, personnelList }
- }
- export async function loadVehicleViewBundles(vehicleIds: string[]): Promise<VehicleViewBundle[]> {
- if (!vehicleIds.length) return []
- return Promise.all(vehicleIds.map(id => loadVehicleViewBundle(id)))
- }
|