This commit is contained in:
wujinliang
2026-09-18 11:41:27 +08:00
parent f2d5b2d8e4
commit 451663b6ff
24 changed files with 156 additions and 30 deletions
@@ -28,6 +28,11 @@ describe('UnifiedOrdersView contract', () => {
expect(sendFeeSource).toContain("ElMessage.error(getApiErrorDetails(error, '确认费用发送失败').message)")
})
it('locks measurement changes as soon as the customer confirms the fee', () => {
expect(source).toContain('&& !measurementDetail.value.customerFeeConfirmed')
expect(source).toContain('费用已由客户确认,测量数据已锁定')
})
it('prevents duplicate confirm-and-send chains and reuses one attempt idempotency key set', () => {
const sendFeeSource = source.slice(source.indexOf('async function executeConfirmAndSendFee()'), source.indexOf('function handleOrderSelectionChange'))
@@ -440,7 +445,7 @@ describe('UnifiedOrdersView contract', () => {
expect(source).not.toContain('@visible-change="handleOuterModeDropdownVisibleChange($event)"')
expect(source.match(/:disabled="Boolean\(measurementStrategySavingId\) \|\| !measurementStrategyEditable"/g)).toHaveLength(1)
expect(source).toContain('const measurementStrategyEditable = computed')
expect(source).toContain('客户已确认且该票已装柜完成后,箱规计算规则将冻结')
expect(source).toContain('费用已由客户确认,测量数据已锁定')
expect(source).toContain('if (!measurementStrategyEditable.value)')
expect(source).toContain('const previousMode = measurementSectionModes.outer')
expect(source).toContain('if (!saved) measurementSectionModes.outer = previousMode')
@@ -231,11 +231,13 @@ const measurementStrategyEditable = computed(() => (
can('platform:firstleg:inbound:measure:edit')
&& Boolean(measurementDetail.value?.measurementId)
&& measurementDetail.value?.version != null
&& !measurementDetail.value.customerFeeConfirmed
))
const measurementStrategyLockedHint = computed(() => {
if (!can('platform:firstleg:inbound:measure:edit')) return '当前账号缺少测量编辑权限'
if (!measurementDetail.value?.measurementId) return '当前没有可修改的测量批次'
return '客户已确认且该票已装柜完成后,箱规计算规则将冻结'
if (measurementDetail.value.customerFeeConfirmed) return '费用已由客户确认,测量数据已锁定'
return '当前测量数据不可修改'
})
const cargoImagePreviewUrls = new Set<string>()
const measurementDialogOpen = ref(false)