feat(web): add visible batch vehicle search

This commit is contained in:
lingniu
2026-07-16 02:02:56 +08:00
parent c493df37f1
commit 1e80278fee
3 changed files with 67 additions and 2 deletions

View File

@@ -179,6 +179,26 @@ test('pastes, deduplicates, and submits multiple plates as one batch search', as
});
});
test('opens an explicit batch editor and applies copied plate rows', async () => {
const vehicleRealtime = vi.spyOn(api, 'vehicleRealtime').mockResolvedValue({ items: vehicles, total: 2, limit: 50, offset: 0 });
const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } });
render(<QueryClientProvider client={queryClient}><MemoryRouter future={ROUTER_FUTURE}><MonitorPage /></MemoryRouter></QueryClientProvider>);
fireEvent.click(screen.getByRole('button', { name: '批量' }));
const editor = screen.getByRole('textbox', { name: /每行一个车牌/ });
fireEvent.change(editor, { target: { value: '粤a12345\n粤B67890\n粤A12345' } });
expect(screen.getByText('2', { selector: '.v2-batch-search-summary strong' })).toBeInTheDocument();
fireEvent.click(screen.getByRole('button', { name: '应用搜索2' }));
expect(screen.queryByRole('dialog', { name: '批量搜索车辆' })).not.toBeInTheDocument();
expect(screen.getByRole('textbox', { name: '搜索车辆' })).toHaveValue('粤A12345粤B67890');
fireEvent.click(screen.getByRole('button', { name: /列表/ }));
await waitFor(() => {
const params = vehicleRealtime.mock.calls[vehicleRealtime.mock.calls.length - 1]?.[0];
expect(params?.get('keywords')).toBe('粤A12345,粤B67890');
});
});
test('hides stale fleet rows while a pasted batch is still loading', () => {
monitorQueryFlags.isPlaceholderData = true;
const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } });