优化
This commit is contained in:
@@ -7,6 +7,12 @@ const source = readFileSync(resolve(process.cwd(), 'src/modules/unified-orders/p
|
||||
const routeSource = readFileSync(resolve(process.cwd(), 'src/modules/unified-orders/routes.ts'), 'utf8')
|
||||
|
||||
describe('UnifiedOrdersView contract', () => {
|
||||
it('blocks confirm-send when the customer has already confirmed the fee', () => {
|
||||
expect(source).toContain("snapshot.customerConfirmationStatus === 'CONFIRMED'")
|
||||
expect(source).toContain('客户已确认该费用,费用已锁定,不允许再修改或重新发送')
|
||||
expect(source).toContain('async function openFeeConfirmDialog()')
|
||||
})
|
||||
|
||||
it('only exposes the six product main statuses', () => {
|
||||
expect(unifiedOrderStatusOptions.map((item) => item.label)).toEqual([
|
||||
'待审核', '待测量数据', '待分柜', '装柜中', '装柜完成', '派送完成',
|
||||
@@ -337,35 +343,61 @@ describe('UnifiedOrdersView contract', () => {
|
||||
expect(source).toContain('getCustomerDimensionConfig')
|
||||
expect(source).toContain('matchingDimensionRule')
|
||||
expect(source).toContain('|| rules[rules.length - 1]')
|
||||
expect(source).toContain('`原尺寸 + ${values[0]}cm`')
|
||||
expect(source).toContain('`原尺寸 + ${Number(values[0]) * 2}cm(单边 +${values[0]}cm)`')
|
||||
expect(source).toContain('`原尺寸 × ${rule.lengthFactor}`')
|
||||
expect(source).toContain('label="箱规尺寸" value="ADD"')
|
||||
expect(source).toContain('label="箱规系数" value="MULTIPLY"')
|
||||
})
|
||||
|
||||
it('keeps the three section calculation modes independent and recalculates their display rows', () => {
|
||||
it('keeps preview modes independent and persists both outer-carton selectors immediately', () => {
|
||||
expect(source).toContain("measurementSectionModes = reactive<Record<MeasurementSection, MeasurementCalculationMode>>")
|
||||
expect(source).toContain(':model-value="measurementSectionModes.customer"')
|
||||
expect(source).toContain(':model-value="measurementSectionModes.outer"')
|
||||
expect(source).toContain(':model-value="measurementSectionModes.actual"')
|
||||
expect(source).toContain("updateMeasurementSectionMode('customer', $event)")
|
||||
expect(source).toContain("updateMeasurementSectionMode('outer', $event)")
|
||||
expect(source).toContain("updateMeasurementSectionMode('actual', $event)")
|
||||
expect(source).not.toContain("updateMeasurementSectionMode('outer', $event)")
|
||||
expect(source.match(/@change="selectAndSaveOuterMeasurementMode\(\$event\)"/g)).toHaveLength(2)
|
||||
expect(source.match(/:disabled="Boolean\(measurementStrategySavingId\) \|\| !can\('platform:firstleg:inbound:measure:edit'\)"/g)).toHaveLength(2)
|
||||
expect(source).toContain('const previousMode = measurementSectionModes.outer')
|
||||
expect(source).toContain('if (!saved) measurementSectionModes.outer = previousMode')
|
||||
expect(source).toContain('const saved = await updateMeasurementCalculationMode(null, mode)')
|
||||
expect(source).toContain('calculatedMeasurementRow(row, measurementSectionModes.customer, true)')
|
||||
expect(source).toContain('calculatedMeasurementRow(source, measurementSectionModes.outer)')
|
||||
expect(source).toContain('calculatedMeasurementRow(row as unknown as Record<string, unknown>, measurementSectionModes.actual)')
|
||||
expect(source).toContain("return Number(hasOuterOverride && override != null && override !== '' ? override : value)")
|
||||
expect(source).toContain('rawDimensions.map((value) => value + rule.edgeAdditionCm)')
|
||||
expect(source).toContain('rawDimensions.map((value) => value + rule.edgeAdditionCm * 2)')
|
||||
expect(source).toContain('matchedSpecificationCoefficient(chargeRule, calculationSource)')
|
||||
expect(source).toContain('listCustomerChargeRules(customerId, tenantId)')
|
||||
expect(source).toContain('matchedDimensions.map((value) => roundedUp(value * specificationCoefficient, 3))')
|
||||
expect(source).toContain("const selectedMode: 'ADD' | 'MULTIPLY' = measurementSectionModes.outer === 'MULTIPLY'")
|
||||
expect(source).toContain('? selectedMode')
|
||||
expect(source).toContain('const selectedMode: MeasurementCalculationMode = measurementSectionModes.outer')
|
||||
expect(source).not.toContain('[chargeRule.lengthFactor, chargeRule.widthFactor, chargeRule.heightFactor]')
|
||||
expect(source).not.toContain('column.key === \'coefficientMode\'')
|
||||
expect(source).not.toContain('@change="updateMeasurementCalculationMode(null, $event)"')
|
||||
})
|
||||
|
||||
it('confirms customer billing from the saved outer-carton totals', () => {
|
||||
expect(source).toContain('const outerTotals = measurementTotals(outerMeasurementRows.value)')
|
||||
expect(source).toContain("ElMessage.warning('外箱规数据不完整,请先保存外箱规尺寸和计算规则')")
|
||||
expect(source).toContain("weightSource: 'OUTER'")
|
||||
expect(source).toContain("volumeSource: 'OUTER'")
|
||||
expect(source).toContain('selectAndSaveOuterMeasurementMode($event)')
|
||||
expect(source).toContain('const saved = await updateMeasurementCalculationMode(null, mode)')
|
||||
expect(source).toContain('coefficientMode: targetIds.has(String(item.id)) ? mode')
|
||||
expect(source).not.toContain('feeConfirmVolume.value = Number(summary.measurement?.actualVolumeCbm)')
|
||||
const sendFeeSource = source.slice(source.indexOf('async function executeConfirmAndSendFee()'), source.indexOf('function handleOrderSelectionChange'))
|
||||
expect(sendFeeSource).not.toContain('saveInboundMeasurementDraft')
|
||||
expect(sendFeeSource).not.toContain('updateMeasurementCalculationMode')
|
||||
})
|
||||
|
||||
it('restores the saved outer-carton rule and server-calculated dimensions on re-entry', () => {
|
||||
expect(source).toContain("mode is MeasurementCalculationMode => mode === 'ACTUAL' || mode === 'ADD' || mode === 'MULTIPLY'")
|
||||
expect(source).toContain('measurementSectionModes.outer = savedModes.length === 1 ? savedModes[0]!')
|
||||
expect(source).toContain('row.calculatedOuterLengthCm')
|
||||
expect(source).toContain('measurementCalculationModeForRow(source) === measurementSectionModes.outer')
|
||||
expect(source).toContain('lengthCm: Number(savedDimensions[0])')
|
||||
})
|
||||
|
||||
it('binds dimension and weight evidence to their formal server records without mixing galleries', () => {
|
||||
expect(source).toContain('<el-table :data="actualMeasurementRows" row-key="id"')
|
||||
expect(source).toContain('<el-table-column label="箱号" prop="boxCode"')
|
||||
|
||||
Reference in New Issue
Block a user