完善预约确认与排车表单并统一计费和筛选展示

This commit is contained in:
2026-10-28 12:01:43 +08:00
parent 0c3f4ece2a
commit 39b9a6a1a0
27 changed files with 277 additions and 77 deletions
@@ -38,13 +38,16 @@ describe('delivery document drafts', () => {
it('loads once and stages replacement and deletion until a full versioned save', async () => {
const wrapper = mountDialog(); await flushPromises()
expect(getDeliveryDocuments).toHaveBeenCalledTimes(1)
expect(wrapper.text()).toContain('1/3 已上传')
expect(wrapper.find('[aria-label="派送资料摘要"]').exists()).toBe(false)
expect(wrapper.findAll('.document-file')).toHaveLength(1)
expect(wrapper.findAll('.document-files th').map(cell => cell.text())).toEqual(['操作', '文件名称'])
await choose(wrapper.find('[data-category="BOL"] .document-file input[type="file"]'), new File(['next'], 'new.pdf'))
expect(saveDeliveryDocuments).not.toHaveBeenCalled()
expect(wrapper.text()).not.toContain('original.pdf')
expect(wrapper.text()).toContain('new.pdf')
expect(wrapper.get('.document-file-pending').text()).toBe('待保存')
await wrapper.find('[data-category="BOL"] .document-file').findAll('button').find(button => button.text() === '删除')!.trigger('click')
expect(wrapper.text()).toContain('0/3 已上传')
expect(wrapper.findAll('.document-file')).toHaveLength(0)
await wrapper.find('.save').trigger('click'); await flushPromises()
expect(saveDeliveryDocuments).toHaveBeenCalledWith('DL/1', '100', { expectedVersion: 9, idempotencyKey: expect.any(String), bolNo: 'BOL-1', documents: deliveryDocumentCategories.map(item => ({ category: item.category, fileIds: [] })) })
expect(wrapper.emitted('saved')).toHaveLength(1)
@@ -64,7 +67,7 @@ describe('delivery document drafts', () => {
expect(dialog.findAll('[data-category]')).toHaveLength(3)
await choose(dialog.find('[data-category="RECEIPT"] header input[type="file"]'), new File(['pod'], 'pod.pdf'))
await choose(dialog.find('[data-category="RECEIPT"] header input[type="file"]'), new File(['courier'], 'courier.pdf'))
expect(dialog.text()).toContain('2/3 已上传')
expect(dialog.findAll('[data-category="RECEIPT"] .document-file')).toHaveLength(2)
await choose(dialog.find('[data-category="BOL"] .document-file input[type="file"]'), new File(['signed'], 'signed-bol.pdf'))
await dialog.find('[data-category="RECEIPT"] .document-file').findAll('button').find(button => button.text() === '删除')!.trigger('click')
expect(dialog.text()).not.toContain('pod.pdf')
@@ -80,7 +83,8 @@ describe('delivery document drafts', () => {
vi.mocked(getDeliveryDocuments).mockResolvedValue(persisted)
await wrapper.setProps({ modelValue: false }); await wrapper.setProps({ modelValue: true }); await flushPromises()
const reopened = body.find('[role="dialog"]')
expect(reopened.text()).toContain('2/3 已上传')
expect(reopened.findAll('.document-file')).toHaveLength(2)
expect(reopened.find('.document-file-pending').exists()).toBe(false)
expect(reopened.text()).toContain('signed-bol.pdf')
expect(reopened.text()).toContain('courier.pdf')
expect(reopened.text()).not.toContain('original.pdf')
@@ -90,12 +94,13 @@ describe('delivery document drafts', () => {
it('discards unsaved uploads on cancel and reloads persisted categories on reopening', async () => {
const wrapper = mountDialog(); await flushPromises()
await choose(wrapper.find('[data-category="RECEIPT"] input[type="file"]'), new File(['proof'], 'new.pdf'))
expect(wrapper.text()).toContain('2/3 已上传')
expect(wrapper.findAll('.document-file')).toHaveLength(2)
await wrapper.find('.close').trigger('click')
await wrapper.setProps({ modelValue: false }); await wrapper.setProps({ modelValue: true }); await flushPromises()
expect(saveDeliveryDocuments).not.toHaveBeenCalled()
expect(wrapper.emitted('saved')).toBeUndefined()
expect(wrapper.text()).toContain('1/3 已上传')
expect(wrapper.findAll('.document-file')).toHaveLength(1)
expect(wrapper.find('.document-file-pending').exists()).toBe(false)
expect(wrapper.text()).not.toContain('new.pdf')
wrapper.unmount()
})
@@ -184,7 +189,7 @@ describe('delivery document drafts', () => {
await wrapper.setProps({ modelValue: true, deliveryNo: 'DL/2', customerId: '200' }); await flushPromises()
fail(new Error('old upload failed')); await flushPromises()
expect(wrapper.text()).not.toContain('old upload failed')
expect(wrapper.text()).toContain('1/3 已上传')
expect(wrapper.findAll('.document-file')).toHaveLength(1)
expect(wrapper.find('[data-category="RECEIPT"] input[type="file"]').attributes('disabled')).toBeUndefined()
wrapper.unmount()
})