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 { 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 { 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 { if (!vehicleIds.length) return [] return Promise.all(vehicleIds.map(id => loadVehicleViewBundle(id))) }