diff --git a/client/src/components/trans-routes/RouteEdit.js b/client/src/components/trans-routes/RouteEdit.js index afbe697..bf51ecc 100644 --- a/client/src/components/trans-routes/RouteEdit.js +++ b/client/src/components/trans-routes/RouteEdit.js @@ -46,6 +46,22 @@ const RouteEdit = () => { const permissions = Array.isArray(employee.permissions) ? employee.permissions : []; return roles.includes('driver') || permissions.includes('isDriver'); }; + const buildExternalDriverOptions = (records = []) => { + return (records || []) + .filter((record) => Array.isArray(record?.permissions) && record.permissions.includes('isDriver')) + .map((record) => ({ + id: record?.external_user_id, + name: record?.name || record?.username || '', + name_cn: '', + title: record?.title || '', + employment_status: 'external', + license_type: '', + phone: '', + email: record?.email || '', + status: 'active' + })) + .filter((record) => record.id && record.name); + }; const scheduleDate = paramsQuery.get('dateSchedule'); const editSection = paramsQuery.get('editSection') @@ -309,9 +325,21 @@ const RouteEdit = () => { CustomerService.getAllCustomers().then(data => { setAllCustomers(data?.data || []); }); - EmployeeService.getAllEmployees().then((data) => { - const employees = data?.data || []; - setDriverOptions(employees.filter(isDriverEligibleEmployee)); + Promise.all([ + EmployeeService.getAllEmployees(), + EmployeeService.getExternalUserPermissionsList(EventsService.site) + ]).then(([employeeResponse, externalPermissionResponse]) => { + const employees = employeeResponse?.data || []; + const internalDrivers = employees.filter(isDriverEligibleEmployee); + const externalDrivers = buildExternalDriverOptions(externalPermissionResponse?.data || []); + const mergedById = new Map(); + [...internalDrivers, ...externalDrivers].forEach((driverItem) => { + if (!driverItem?.id) return; + if (!mergedById.has(driverItem.id)) { + mergedById.set(driverItem.id, driverItem); + } + }); + setDriverOptions(Array.from(mergedById.values())); }); }, []);