优化
This commit is contained in:
@@ -352,6 +352,64 @@ describe('WeightOcrPanel confirmation behavior', () => {
|
||||
expect(getWeightPalletOptions).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('keeps historical pallet snapshots visible without requesting candidates for a read-only operator', async () => {
|
||||
const wrapper = mountPanel(['platform:firstleg:inbound:measure:view'])
|
||||
await flushPromises()
|
||||
|
||||
expect(getWeightWorkspace).toHaveBeenCalledOnce()
|
||||
expect(getWeightPalletOptions).not.toHaveBeenCalled()
|
||||
expect(wrapper.find('.pallet-picker .el-select').exists()).toBe(false)
|
||||
expect(wrapper.text()).toContain('木托盘')
|
||||
expect(wrapper.text()).toContain('12.000 KG')
|
||||
})
|
||||
|
||||
it('does not request pallet candidates when the inbound status is not editable', async () => {
|
||||
vi.mocked(getWeightWorkspace).mockResolvedValue({ ...workspace, processStatus: 'MEASURE_PENDING' })
|
||||
|
||||
mountPanel()
|
||||
await flushPromises()
|
||||
|
||||
expect(getWeightPalletOptions).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('virtualizes one thousand pallet candidates instead of rendering one thousand option nodes', async () => {
|
||||
vi.mocked(getWeightPalletOptions).mockResolvedValue(Array.from({ length: 1_000 }, (_, index) => ({
|
||||
palletId: String(60_000 + index),
|
||||
palletCode: `TP-${index}`,
|
||||
palletType: `托盘类型 ${index}`,
|
||||
capacityCbm: 1.2,
|
||||
tareWeightKg: 12,
|
||||
})))
|
||||
const wrapper = mountPanel()
|
||||
await flushPromises()
|
||||
|
||||
await wrapper.find('.pallet-picker .el-select').trigger('click')
|
||||
await flushPromises()
|
||||
|
||||
const renderedOptions = document.body.querySelectorAll('.el-select-dropdown__item')
|
||||
expect(renderedOptions.length).toBeGreaterThan(0)
|
||||
expect(renderedOptions.length).toBeLessThan(100)
|
||||
})
|
||||
|
||||
it('aborts an in-flight pallet request and ignores its late result when the panel closes', async () => {
|
||||
let resolveOptions: ((value: Awaited<ReturnType<typeof getWeightPalletOptions>>) => void) | undefined
|
||||
vi.mocked(getWeightPalletOptions).mockImplementationOnce(() => new Promise((resolve) => {
|
||||
resolveOptions = resolve
|
||||
}))
|
||||
const wrapper = mountPanel()
|
||||
await flushPromises()
|
||||
const signal = vi.mocked(getWeightPalletOptions).mock.calls[0]?.[2]
|
||||
|
||||
wrapper.unmount()
|
||||
resolveOptions?.([{
|
||||
palletId: 'late', palletCode: 'TP-LATE', palletType: '过期托盘', capacityCbm: 1, tareWeightKg: 10,
|
||||
}])
|
||||
await flushPromises()
|
||||
|
||||
expect(signal?.aborted).toBe(true)
|
||||
expect(document.body.textContent).not.toContain('过期托盘')
|
||||
})
|
||||
|
||||
it('keeps a low-confidence OCR result focused on the editable weight', async () => {
|
||||
vi.mocked(getWeightWorkspace).mockResolvedValue({
|
||||
...workspace,
|
||||
|
||||
Reference in New Issue
Block a user