This commit is contained in:
2026-09-10 11:38:38 +08:00
parent 9b5b324fe8
commit 8c9f4468af
6 changed files with 78 additions and 45 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
export { getInboundMeasurement, saveInboundMeasurementDraft, updateMeasurementCalculationStrategy } from './measurement/api'
export { getInboundMeasurement, saveInboundMeasurementDraft, updateMeasurementCalculationStrategy, updateMeasurementOuterDimensions } from './measurement/api'
export { createInboundHoldIdempotencyKey, downloadInboundCartonLabelsBatch, downloadPlatformInboundHoldEvidence, getPlatformInboundHold, holdPlatformInbound, releasePlatformInbound, uploadPlatformInboundHoldEvidence } from './core/api'
export { default as InboundMeasurementPanel } from './measurement/InboundMeasurementPanel.vue'
export { default as InboundMeasurementDialog } from './measurement/InboundMeasurementDialog.vue'
+17 -1
View File
@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { http } from '@/shared/api/http'
import { createManualCartonScan, downloadInboundMeasurementImage, getInboundMeasurement, saveInboundMeasurementDraft, submitInboundMeasurement, updateConfirmedPackageCount, updateMeasurementCalculationStrategy } from './api'
import { createManualCartonScan, downloadInboundMeasurementImage, getInboundMeasurement, saveInboundMeasurementDraft, submitInboundMeasurement, updateConfirmedPackageCount, updateMeasurementCalculationStrategy, updateMeasurementOuterDimensions } from './api'
import type { SaveInboundMeasurementDraftRequest } from './types'
vi.mock('@/shared/api/http', () => ({
@@ -89,6 +89,22 @@ describe('inbound measurement API', () => {
)
})
it('updates one warehouse outer dimension row without resaving the frozen measurement batch', async () => {
const payload = {
measurementId: '9001', version: 4,
outerLengthCm: 30, outerWidthCm: 20, outerHeightCm: 20,
}
const saved = { measurementId: '9001', version: 5, status: 'SUBMITTED', itemId: '81' }
vi.mocked(http.put).mockResolvedValue({ code: '200', message: 'success', data: saved })
await expect(updateMeasurementOuterDimensions('10001', '7001', '81', payload)).resolves.toEqual(saved)
expect(http.put).toHaveBeenCalledWith(
'/platform/v1/first-leg/inbounds/7001/measurement/items/81/outer-dimensions',
payload,
{ params: { tenantId: '10001' } },
)
})
it('downloads the current measurement image using the scoped file route', async () => {
const image = new Blob(['image-data'], { type: 'image/jpeg' })
vi.mocked(http.get).mockResolvedValue(image)
+16
View File
@@ -9,6 +9,8 @@ import type {
SubmitInboundMeasurementRequest,
UpdateMeasurementCalculationStrategyRequest,
MeasurementCalculationStrategyUpdated,
UpdateMeasurementOuterDimensionsRequest,
MeasurementOuterDimensionsUpdated,
ManualCartonScanRequest,
} from './types'
@@ -72,6 +74,20 @@ export async function updateMeasurementCalculationStrategy(
return unwrapApiResponse(response)
}
export async function updateMeasurementOuterDimensions(
customerId: string,
inboundId: string,
itemId: string,
payload: UpdateMeasurementOuterDimensionsRequest,
) {
const response = await http.put<ApiEnvelope<MeasurementOuterDimensionsUpdated>, ApiEnvelope<MeasurementOuterDimensionsUpdated>>(
`${measurementPath(inboundId)}/items/${segment(itemId)}/outer-dimensions`,
payload,
{ params: { tenantId: customerId } },
)
return unwrapApiResponse(response)
}
export async function submitInboundMeasurement(
customerId: string,
inboundId: string,
+12
View File
@@ -175,6 +175,18 @@ export interface MeasurementCalculationStrategyUpdated extends InboundMeasuremen
chargeRuleId: MeasurementIdentifier | null
}
export interface UpdateMeasurementOuterDimensionsRequest {
measurementId: MeasurementIdentifier
version: number
outerLengthCm: number | null
outerWidthCm: number | null
outerHeightCm: number | null
}
export interface MeasurementOuterDimensionsUpdated extends InboundMeasurementDraftSaved {
itemId: MeasurementIdentifier
}
export interface ConfirmedPackageCountRequest {
measurementVersion: number
confirmedPackageCount: number