32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import type { Personnel, PersonnelDetail, VehiclePersonnelRow } from '@/api/pl'
|
|
|
|
/** 车辆关联人员:人员表单保存后同步下拉选项并选中当前行 */
|
|
export function usePlVehiclePersonnelQuickCreate(options: {
|
|
personnelOptions: Ref<Personnel[]>
|
|
onSelect: (row: VehiclePersonnelRow, personnelId: string | undefined) => void
|
|
}) {
|
|
function upsertPersonnelOption(personnel: PersonnelDetail) {
|
|
const next = personnel as Personnel
|
|
const index = options.personnelOptions.value.findIndex((item) => item.id === next.id)
|
|
if (index >= 0) {
|
|
const list = [...options.personnelOptions.value]
|
|
list[index] = next
|
|
options.personnelOptions.value = list
|
|
return
|
|
}
|
|
options.personnelOptions.value = [next, ...options.personnelOptions.value]
|
|
}
|
|
|
|
function handlePersonnelFormSaved(
|
|
row: VehiclePersonnelRow,
|
|
payload: { mode: 'create' | 'edit'; personnel: PersonnelDetail }
|
|
) {
|
|
upsertPersonnelOption(payload.personnel)
|
|
options.onSelect(row, payload.personnel.id)
|
|
}
|
|
|
|
return {
|
|
handlePersonnelFormSaved
|
|
}
|
|
}
|